结对编程1 - 四则运算生成器的改进

题目描述:

我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:

  1. 记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
  2. 有计时功能,能显示用户开始答题后的消耗时间。
  3. 界面支持中文简体/中文繁体/英语,用户可以选择一种。

分工说明:

  由于我们班人数为奇数,我们成立了三人小组,成员分别是谷天鹏(60),常昊(61),孙佳萱(40)。

谷天鹏:

  完成具体网页界面的编写,php与前台js交互部分的编写,实现利用数据库记录对错总数。

  语言切换的设计与编写。

  各种方法的封装。

常昊:

  建立数据库。

  编写计时器算法并完成计时器功能。

孙佳萱:

  中英文切换语言词典等js配置文件的编写

  web界面的样式整改。

程序设计与实现:

1.存储正确及错误题目数量

流程图

具体代码

 1             $.post("ajaxTest.php", {
 2                     wrongNum: wrongNum,
 3                     rightNum: rightNum,
 4                     lang: langShift
 5                 },
 6                 function(data) {
 7                     $(‘#record‘).text(data);
 8                 }
 9             );
10             wrongNum = 0;
11             rightNum = 0;
12         }
 1 require ‘./MySQLDB.class.php‘;//引入数据库操作类
 2 //数据库配置信息
 3 $config = array(
 4     ‘host‘=>‘localhost‘,
 5     ‘port‘=>‘3306‘,
 6     ‘user‘=>‘root‘,
 7     ‘pass‘=>‘123456‘,
 8     ‘charset‘=>‘utf8‘,
 9     ‘dbname‘=>‘sqltest‘,
10 );
11 $msq = MySQLDB::GetInstance($config);
12
13 $sqlReadWrongNum="select wrong_num from hm2 where userid = 1";
14 $wrong = $msq -> getOneRow($sqlReadWrongNum);
15 $wrongNumSum = $wrong[‘wrong_num‘] + $_POST[‘wrongNum‘];
16
17 $sqlReadRightNum="select right_num from hm2 where userid = 1";
18 $right = $msq -> getOneRow($sqlReadRightNum);
19 $rightNumSum = $right[‘right_num‘] + $_POST[‘rightNum‘];
20
21 $sqlWrong = "update hm2 set wrong_num=$wrongNumSum where userid = 1";
22 $sqlRight = "update hm2 set right_num=$rightNumSum where userid = 1";
23 $msq -> exec($sqlRight);
24 $msq -> exec($sqlWrong);
25 if($_POST[‘lang‘]==0){
26 echo "当前错误答案总数:$wrongNumSum";
27 echo "当前正确答案总数:$rightNumSum";
28 }else{
29 echo "Wrong number:$wrongNumSum";
30 echo "Right number:$rightNumSum";
31 }

传入该次做题正确及错误数目,并在record div标签打印返回信息。

2.计时器功能

流程图

具体代码

 1         //@setTime计时函数 并在点击事件中调用函数
 2         function setTime() {
 3             var hour = parseInt(timeIndex / 3600);
 4             var minutes = parseInt((timeIndex % 3600) / 60);
 5             var seconds = parseInt(timeIndex % 60);
 6             hour = hour < 10 ? "0" + hour : hour;
 7             minutes = minutes < 10 ? "0" + minutes : minutes;
 8             seconds = seconds < 10 ? "0" + seconds : seconds;
 9             $("#timekeeping").val(hour + ":" + minutes + ":" + seconds);
10             timeIndex++;
11         }
12
13         //@stopTimekeeping() 停止计时,更改答题input框为只读
14         function stopTimekeeping() {
15             clearInterval(times);
16             $(".test_in").attr("readonly", "readonly");
17         }

3.语言切换功能

根据不同性质的文本内容利用不同的方法实现中英文动态无刷新切换功能。

具体代码

        //切换语言
        function changeLang(lang) {

            switch (lang) {
                case ‘auto‘:
                    if (langShift == 1) {
                        langShift = 0;
                        $(‘.en‘).css("display", "none");
                        $(‘.zh‘).css("display", "");
                        $(‘#btn_create‘).val(‘点击开始生成题目‘);
                        $(‘#btn_judge‘).val(‘判断并生成答案‘);
                        $(‘#stopTimekeeping‘).val(‘停止答题(计时)‘);

                    } else {
                        langShift = 1;
                        $(‘.en‘).css("display", "inline");
                        $(‘.zh‘).css("display", "none");
                        $(‘#btn_create‘).val(‘Create Question‘);
                        $(‘#btn_judge‘).val(‘Judge‘);
                        $(‘#stopTimekeeping‘).val(‘Stop Timekeeping‘);
                    };
                    url = ""
                    break;
                case ‘en‘:
                    langShift = 1;
                    $(‘.en‘).css("display", "inline");
                    $(‘.zh‘).css("display", "none");
                    $(‘#btn_create‘).val(‘Create Question‘);
                    $(‘#btn_judge‘).val(‘Judge‘);
                    $(‘#stopTimekeeping‘).val(‘Stop Timekeeping‘);
                    break;
                case ‘zh‘:
                    langShift = 0;
                    $(‘.en‘).css("display", "none");
                    $(‘.zh‘).css("display", "");
                    $(‘#btn_create‘).val(‘点击开始生成题目‘);
                    $(‘#btn_judge‘).val(‘判断并生成答案‘);
                    $(‘#stopTimekeeping‘).val(‘停止答题(计时)‘);
                    break;
            }
        }

程序展示

1.计时功能

2.记录对错

3.中英文切换(无刷新切换语言)

psp

自评

选择使用数据库保存数据是为了能更好的扩展功能,比如登录,注册和信息管理。第一周做时js占比重太大,所以并不好修改,只是利用ajax返回了对错数量和语言配置变量。做语言切换时想要使用cookie保存语言设置以便下次登录可以保存之前的语言配置,但没能完成,应该是cookie设置没有足够掌握,语言切换仍然不能灵活切换,只可以做到生成的文本部分利用中英文对照词典的方法做到切换语言,而别的部分仍然需要不小的工作量,程序如果复杂得话这就不是一个很好的方法。总体来说实现了题目要求的功能,但仍需努力,可以改进的地方还有很多。

项目地址:https://coding.net/u/augur_g/p/homework-2/git

时间: 2024-08-25 03:01:01

结对编程1 - 四则运算生成器的改进的相关文章

20165206 结对编程项目-四则运算 阶段一总结

20165206 结对编程项目-四则运算 阶段一总结 一.需求分析 通过命令行输入生成题目的数量,随机生成题目. 生成的题目不重复. 生成的四则运算题目支持整数.支持多运算符. 能够根据作答情况统计正确的个数. 二.设计思路 设计一个类来实现整数的四则运算. 用一个循环结构来生成随机数,生成题目. 设计一个类来比较输入的答案与正确答案是否一致. 判断做的题是否正确,并返回正确的个数. 设计单元测试,对代码进行测试及修改 UML图: 三.核心代码 生成随机数: while(true){ a=new

20165227 结对编程项目-四则运算 第一周

20165227 结对编程项目-四则运算 第一周 需求分析 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计题目完成数并计算正确率 设计思路 设计一个计算器能够实现简单的+.-.*./运算 通过编程实现多运算符计算.整数运算.真分数运算.判断结果等 进行junit检测 设计一个程序主类,达到生成随机数.题目.并判断正误 测试 UML类图 功能截图 结对感受 因为同为室友,所以结对起来更轻松方便,讨论的时间也更加地充足,对于队

20165318 结对编程项目-四则运算 阶段总结

20165318 结对编程项目-四则运算 阶段总结 一.需求分析 能随机生成n道四则运算题目,n由使用者输入 支持整数和分数 支持多运算符 能够判断正误,错误时能提醒并输出正确答案 能计算出正确率 能多次生成题目,直到使用者选择退出 后续拓展的可能 题目去重 文件: 处理生成题目并输出到文件 完成题目后从文件读入并判题 多语言支持:简体中文, 繁體中文, English 二.设计思路(同时输出UML类图) 首先考虑生成题目. 随机生成题目,用到Random函数,生成题目应该是同时随机生成数字和四

20165230 结对编程项目-四则运算 整体总结

20165230 结对编程项目-四则运算 整体总结 一.需求分析 随机生成题目 生成的题目个数从命令行输入 用户可选择生成不同难度的题目,比如通过参数指定: (1) 运算符个数范围 (2) 运算符限定(小学一年级题目只生成 + - 题目) 能多次生成题目 题目运算(判题) 支持多运算符 支持整数 支持真分数 题目合法性判断 可独立使用 可用于测试生成题目的正确性 扩展需求 题目去重 支持多语言 处理生成题目并输出到文件 完成题目后从文件读入并判题 二.设计思路 设计一个IntNumber类,用来

20165202 结对编程项目-四则运算 第二周

一.码云链接 二.需求分析 实现一个命令行程序,要求: 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计正确率 三.设计思路(同时输出UML类图) 这周的总体设计要在上周的基础上深化,上周我们的代码没有用到中缀表达式转后缀表达式,没有用到栈,所以这周不仅要对上一周的代码进行修改,而且还要在此基础上完成更深层的对真分数的要求. 实现四则运算中后缀转换类 实现四则运算后缀表达式计算类 实现四则运算真分数计算类 实现四则运算生成题

20165235 结对编程项目-四则运算 整体总结

20165235 结对编程项目-四则运算 整体总结 一.需求分析 本次实验需要产生随机数然后对其进行相应的计算.产生随机数可以直接在主类中进行,四则运算可以通过堆栈实现,可能会出现分母为零的bug,也要对其进行相应的修复.可以将字符序列装换成字符数组,在对字符数组中"/"符号之后的数字进行判断,如果是0就返回-1. 二.设计思路 本次实验总共分为两个思路:(1)是通过类Operate中的calculate方法进行计算,计算的数值由主类Main给出.并对其修复了分母为零的bug(在Mai

20172327 结对编程项目-四则运算 第二周 阶段总结

20172327 结对编程项目-四则运算 第二周 阶段总结 结对编程项目-四则运算 第二周 输出阶段总结博客 结对对象: 学号:20172317 姓名:蒋子行 伙伴第二周博客地址: 学号:20172320 姓名:李闻洲 伙伴第二周博客地址: 担任角色: 驾驶员:蒋子行 副驾驶:李闻洲 马瑞蕃 小组结对编程的photo: 项目中自己负责的部分: 我在项目中真的没啥贡献,项目主要由祥哥主刀,我和李闻洲就是打杂的. 个人贡献度划分: 我在项目中真的没啥贡献,项目主要由祥哥主刀,我就是打杂的,提点建议和

20175209王梓鸿 结对编程项目—四则运算 第一周 阶段总结

20175209王梓鸿 结对编程项目-四则运算 第一周 阶段总结 一.需求分析 1.题目要求: 实现一个命令行程序,要求: 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计正确率 扩展需求 文件 处理生成题目并输出到文件 完成题目后从文件读入并判题 多语言支持简体中文,繁體中文,English 生成题目去重 二.设计思路 1.编写背景及完成情况 在开始写设计思路之前,我觉得应该说一下我们编写的情况(可能有些跑题).这次结对的

20175325 第一周结对编程项目 四则运算

20175325 第一周结对编程项目 四则运算 一.需求分析: 能根据用户输入的数字生成四则运算的题目数量 能自动生成规定范围内的四则运算题目(加.减.乘.除) 能够判断四则运算的结果是否正确并进行数量统计 能多次生成四则运算题目 支持多运算符 用户能够选择是否开始答题 统计题目正确率 题目去重 多语言支持:简体中文, 繁體中文, English 文件: 处理生成题目并输出到文件 完成题目后从文件读入并判题 二.设计思路: 和之前所学的C语言中的四则运算方法作类比,在JAVA中运用了C语言里的一