合作伙伴 201421123102 王艳秋 201421123106 陈 雄

代码地址

题目描述

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

记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。

有计时功能,能显示用户开始答题后的消耗时间。

界面支持中文简体/中文繁体/英语,用户可以选择一种。

实现功能:

1、题目数量选择;

2、难度等级选择;

3、记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算;

4、有计时功能,能显示用户开始答题后的消耗时间;

5、多语言选择;

6、限定用户输入(不允许非数字)

结对分工

王艳秋(在下): 1、语言切换功能 2、代码规范

陈 雄(伙伴): 1、答题计时功能 2、对错总数功能

思维导图



关键代码

public void panelRepaint(JPanel a,JPanel b,JPanel c){
a.remove(b);
a.add(c);
a.revalidate();
a.repaint();
}

以testJFrame为顶级容器,panel为二级容器,panel下面七个面板作为三级容器放置各种组件。该函数实现了panel面板的重绘以便在各个三级面板之间切换。

if(e.getActionCommand().equals("sure")){
this.questNum=quesNumJTA.getText();
if(!questNum.matches("[0-9]*[1-9][0-9]*")){
panelRepaint(panel,quseNumJP,warningJP);
}
else{
panelRepaint(panel,quseNumJP,difficultyChooseJP);
}
}

程序中当用户输入题目数量时可能会出现输入的数为0,输入字符,输入小数,输入分数及输入负数的情况。在用户输入之后点击确定,这段代码会使用正则表达式对用户的输入进行匹配,若匹配不到大于0的整数界面将切换到warningJP提示用户重新输入。

if(e.getActionCommand().equals("easy")){
startTime=System.currentTimeMillis();
this.easyOrDifficult=1;
pMaker.creatExecercise(easyOrDifficult);
showQuestionJL.setText(pMaker.quesStr);
panelRepaint(panel,difficultyChooseJP,answerJP);
}
if(e.getActionCommand().equals("difficult")){
startTime=System.currentTimeMillis();
this.easyOrDifficult=2;
pMaker.creatExecercise(easyOrDifficult);
showQuestionJL.setText(pMaker.quesStr);
panelRepaint(panel,difficultyChooseJP,answerJP);
}
if(e.getActionCommand().equals("next")){
if(i<Integer.parseInt(questNum)){
panelRepaint(panel,nextJP,answerJP);
i++;
}
else{
endTime=System.currentTimeMillis();
File file=new File("D:/count.txt");
BufferedReader reader=null;
try {
reader=new BufferedReader(new FileReader(file));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
String i=null;
String i1=null;
try {
i=reader.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
i1=reader.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
PrintWriter writer=null;
try {
writer =new PrintWriter(new FileOutputStream(file));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
writer.println((Integer.parseInt(i)+trueCount));
writer.println((Integer.parseInt(i1)+(Integer.parseInt(questNum)-trueCount)));
writer.flush();
try {
reader=new BufferedReader(new FileReader(file));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
try {
i=reader.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
i1=reader.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
if(chineseOrEnglish==0){
showCountJL.setText("正确题数:"+trueCount+" 错误题数:"+(Integer.parseInt(questNum)-trueCount)+" 用时: "+((endTime-startTime)/1000)+" s"+" 历史总正确题数: "+i+" 历史总错误题数: "+i1);
}
else{
showCountJL.setText("true:"+trueCount+" false:"+(Integer.parseInt(questNum)-trueCount)+" time: "+((endTime-startTime)/1000)+" s"+" totaltrue: "+i+" totalfalse: "+i1);
}
panelRepaint(panel,nextJP,countJP);
}
}

这段代码实现了计时功能,用户选择完难度后计录系统时间作为开始时间,做完最后一题后用户按next记录系统时间作为结束时间。结束时间减去开始时间为做题时间。同时实现了对历史记录的写入读出功能。在D盘创建里count.txt文件第一行作为总的做对的题数,第二行作为总错题数。执行时先读入文件记录在将本次记录加上并写入。

最后读出并显示。

if(e.getActionCommand().equals("chinese")){
chineseOrEnglish=0;
numQuizJL.setText("你想测试多少题?");
difficultyQuizJL.setText("你想测试的难易程度?");
warningJL.setText("请输入一个大于0的整数!!");
sureJB.setText("确定");
easyJB.setText("容易");
difficultJB.setText("难");
nextJB.setText("下一题");
submitJB.setText("提交");
reenterJB.setText("重新输入");
panelRepaint(panel,languageChoJP,quseNumJP);
}
if(e.getActionCommand().equals("english")){
chineseOrEnglish=1;
numQuizJL.setText("how many questions u want test?");
difficultyQuizJL.setText("easy or difficult?");
warningJL.setText("please enter a number greater than 0!!");
sureJB.setText("sure");
easyJB.setText("easy");
difficultJB.setText("difficult");
nextJB.setText("next");
submitJB.setText("subnit");
reenterJB.setText("reenter");
panelRepaint(panel,languageChoJP,quseNumJP);
}

该代码实现了用户界面的中英文切换。一些特殊组件在显示时用if条件判断须显示中文还是英文。

实现功能截图



语言选择

中文版



选择题目数量



当输入0或非数字时的警告



难度选择



题目生成



回答正确



题目生成



回答错误,并给出正确答案



答题结束,显示结果

英文版



选择题目数量



当输入0或非数字时的警告



难度选择



题目生成



回答正确



回答错误,并给出正确答案



答题结束,显示结果

实验总结

1、结对编程中,伙伴总是能不厌其烦地为我解除疑惑,互帮互助,一起进步;

2、在结对编程中就算自己不想继续下去时,也会因为伙伴而坚持下去;

3、在上一次的作业中我没能好好的规范代码,在这一次的试验中我也深深的体会到了代码规范的重要性。

结对展示



PSP展示

PSP2.1 Personal Software Process Stages Time (%) Senior Student(/hour) Time (%)(/hour)
· Planning 计划 2 1.5
· Estimate 估计这个任务需要多少时间 41 52
· Analysis 需求分析 (包括学习新技术) 3 5
· Coding Standard 代码规范 0.5 1.5
· Design 具体设计 1.5 3
· Coding 具体编码 30 35
· Test 测试(自我测试,修改代码,提交修改) 2 3
Reporting 报告 2 3

结对编程1 —— 基于GUI和Swing的四则运算题目生成器的更多相关文章

  1. 结对编程——paperOne基于java web的简易四则运算出题网站

    项目成员:张金生     张政 需求分析: 1.要进行四则运算: 2.运算题目随机: 3.进行对错判断: 4.整数运算. 程序概要: 1.用JSP实现: 2.用户可选择题目数量: 3.答题页用表格列出 ...

  2. 结对作业:基于GUI实现四则运算

    1)Coding.Net项目地址:https://git.coding.net/day_light/GUIszysLL.git 2)在开始实现程序之前,在下述PSP表格记录下你估计将在程序的各个模块的 ...

  3. 结对编程——paperOne基于java的四则运算 功能改进

    项目成员:张金生     张政 由于新的需求,原本使用JSP的实现方式目前改为Java实现,即去除了B/S端. 需求分析: 1.四则运算要满足整数运算.分数运算两种: 2.运算题目随机,并且可以打印题 ...

  4. 结对编程(四则运算题目生成器core第七组)对接心得

    在这篇博客博主想记录一下此次结队编程作业中与ui组对接的心得.在这里我也想表达一下对涂涵越同学的敬佩,他遇到困难时孜孜不倦求解的毅力着实让我佩服,我们在dll的生成上遇到了很大的困难,要不是他的坚持我 ...

  5. 结对项目:四则运算题目生成器(C)

    一.Github项目地址:https://github.com/Spartaright/myapp(合作人:梁天龙.赖佑铭) 二.PSP表格(如下图) 1.项目地址 PSP表格 PSP2.1 Pers ...

  6. 结对编程1-基于GUI的四则运算生成器

    201421123016郑怀勇     201421123017康建灿 程序代码 / 康建灿 一.需求分析 记录用户的对错总数. 程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算. 有 ...

  7. 结对编程1--基于GUI的四则运算题目生成器

    最终项目详细代码(coding地址)/李志强的博客/我的详细代码/方言的博客 一.需求分析 1.实现之前项目的功能,如:除了整数之外,还要支持真分数的四则运算,真分数的运算,并且要求能处理用户的输入, ...

  8. 结对编程1---基于Flask的四则运算题目生成器

    项目代码地址 / WEB应用地址 / 合作伙伴iFurySt博文链接 需求分析 本次程序是基于原有的控制台四则运算器的基础上,改成WEB的形式,同时还增加了一些新的功能.同时因为交互方式的改变,代码也 ...

  9. 结对项目:四则运算题目生成器(Java)

    目录 一.需求分析 二.开发计划 三.实现方案 3.1 项目结构 3.2 代码说明 3.2.1 出题功能代码 3.2.3 批卷功能代码 3.2.3 四则运算功能代码 四.效能分析 4.1 程序效能 4 ...

随机推荐

  1. NYOJ_23_取石子(一)

    取石子(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 一天,TT在寝室闲着无聊,和同寝的人玩起了取石子游戏,而由于条件有限,他/她们是用旺仔小馒头当作石子.游戏的 ...

  2. 推荐两款Windows管理工具

    1.babun(cgywin) 一款包含cgywin的类似linux shell的软件,熟练linux脚本的小伙伴们,一定会在她身上找到快感. 2.pslist 微软官方的一款很强大的bat脚本,很实 ...

  3. NYOJ 67 三角形面积(线代,数学)

    三角形面积 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 给你三个点,表示一个三角形的三个顶点,现你的任务是求出该三角形的面积   输入 每行是一组测试数据,有6个 ...

  4. Luogu P3371 【模板】单源最短路径

    题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包含三个整数N.M.S,分别表示点的个数.有向边的个数.出发点的编号. 接下来M行每行包含三 ...

  5. zabbix java api

    zabbix java api zabbix官方的api文档地址:https://www.zabbix.com/documentation/3.0/manual/api Zabbix功能 概观 Zab ...

  6. opencv 访问图像像素的三种方式

    访问图像中的像素 访问图像像素有三种可行的方法方法一:指针访问指针访问访问的速度最快,Mat类可以通过ptr函数得到图像任意一行的首地址,同时,Mat类的一些属性也可以用到公有属性 rows和cols ...

  7. python--------------常用模块之正则

    一.认识模块  什么是模块:一个模块就是一个包含了python定义和声明的文件,文件名就是加上.py的后缀,但其实import加载的模块分为四个通用类别 : 1.使用python编写的代码(.py文件 ...

  8. 360春秋杯CTF比赛WRIteUP

    题目:where is my cat? 地址:http://106.75.34.78 访问网页出现证书错误的问题,查看证书如下: 抓包发现: Accept-Encoding: gzip, deflat ...

  9. thymeleaf文本处理

    文本处理 显示文本是网页开发的最基本需求,另外,国际化的程序当今也是相当必要的.这些问题,thymeleaf都可以轻松解决. th:text标签属性 这个属性的基本作用就是显示文本,它的值可以既可以从 ...

  10. 2017多校第9场 HDU 6170 Two strings DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6170 题意:给了2个字符串,其中第2个字符串包含.和*两种特别字符,问第二个字符串能否和第一个匹配. ...