201421123022 王若凡        201421123026  欧阳勇

https://git.coding.net/ttoyy/sizeyunsuan-GUI.git

a.需求分析:

这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:

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

b.功能设计

1.生成自定义数目算术题。

2.支持整数和分数的加减乘除。

3.输入答案判断对错,错误后写出正确答案。

4.集中收集错题。

5.简繁中英文切换。

6.计时功能。


思维导图


c.设计实现与代码展示(Viewcode

计时功能:

B0.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {

                tishu=Integer.parseInt(T1.getText());//获取总题数

                timer = new Timer();

                finishtime=System.currentTimeMillis();

                starttime=finishtime;

                timer.schedule(new TimerTask()

                {

                    public void run() {    

                     finishtime=System.currentTimeMillis();

                     duration=finishtime-starttime;

                     String str=df.format(new Date(duration));

                     L12.setText(str);

                     if(summary==tishu){

                     try {

                     Thread.sleep(2000000);

                } catch (InterruptedException e) {             

                e.printStackTrace();

                }

                }

               }  

              }, 1000, 1000);

            }

        });

出题功能:

B1.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {

                noanswer=tishu-dadui-dacuo;//算出未答题数

                L9.setText("");

                L8.setText(null);

                T3.setText(null);           

               if(summary==tishu)

                {   

                   JOptionPane.showMessageDialog(null, "答题已完成,答题总题数:"+tishu+",答对题数:"+dadui+",答错题数:"+dacuo+",未答数:"+noanswer);

                   frame.setVisible(false);

                }

                //生成一个随机算术.该处代码由上次作业改成。

     if(t==1){summary++;} } });

结果判断与输出

T3.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent d) {

                if(sum1.equals(T3.getText()))

                {

                    L9.setText("Right!");

                    dadui++;

                    L10.setText(String.valueOf(dadui));   

                }

                else

                {

                    L9.setText("Error!answer is:"+sum1);

                    dacuo++;  

                    FileWriter fw = null;

                    try {

                    //如果文件存在,则追加内容;如果文件不存在,则创建文件

                    File f=new File("D:/cuoti.txt");

                    fw = new FileWriter(f, true);

                    }

                    catch (IOException e) {

                    e.printStackTrace();

                    }

                    PrintWriter pw = new PrintWriter(fw);

                    pw.println(L8.getText()+"="+T3.getText()+"    "+"正确答案:"+sum1 +'\n');

                    pw.flush();

                    try {

                    fw.flush();

                    pw.close();

                    fw.close();

                    } catch (IOException e) {

                    e.printStackTrace();

                    }

                    L11.setText(String.valueOf(dacuo));

                }

            }

        });

错题统计收集

FileWriter fw = null;

                    try {

                    //如果文件存在,则追加内容;如果文件不存在,则创建文件

                    File f=new File("D:/cuoti.txt");

                    fw = new FileWriter(f, true);

                    }

                    catch (IOException e) {

                    e.printStackTrace();

                    }

                    PrintWriter pw = new PrintWriter(fw);

                    pw.println(L8.getText()+"="+T3.getText()+"    "+"正确答案:"+sum1 +'\n');

                    pw.flush();

                    try {

                    fw.flush();

                    pw.close();

                    fw.close();

                    } catch (IOException e) {

                    e.printStackTrace();

                    }
B6.addActionListener(new ActionListener(){//错题本打开 public void actionPerformed(ActionEvent d) { try { Runtime.getRuntime().exec("notepad.exe D:/cuoti.txt"); } catch(Exception e) { System.out.println(e.getMessage()); } } });

语言切换

B3.addActionListener(new ActionListener(){//简体中文

            public void actionPerformed(ActionEvent e) {

                 L1.setText("题数:");

                 L2.setText("题目:");

                 L3.setText("输入答案:");

                 L4.setText("结果:");

                 L5.setText("答对题数:");

                 L6.setText("答错题数:");

                 L7.setText("答题时间:");

                 B0.setText("开始");

                 B1.setText("下一题");

                 B6.setText("错题集");

                //B2.setText("计时");

            }

        });

        B4.addActionListener(new ActionListener(){//繁体中文

            public void actionPerformed(ActionEvent e) {

                L1.setText("題數");

                L2.setText("題目:");

                 L3.setText("輸入答案:");

                 L4.setText("結果:");

                 L5.setText("答對題數:");

                 L6.setText("答錯題數:");

                 L7.setText("答題時間:");

                 B0.setText("開始");

                 B1.setText("下一題");

                 B6.setText("錯題集");

            }

        });

        B5.addActionListener(new ActionListener(){//英文

            public void actionPerformed(ActionEvent e) {

                 L1.setText("Question number");

                 L2.setText("Test:");

                 L3.setText("Enter the answer:");

                 L4.setText("Result:");

                 L5.setText("Right number:");

                 L6.setText("Wrong number:");

                 L7.setText("Answer times:");

                 B0.setText("Run");

                 B1.setText("Next");

                 B6.setText("WrongTest");

            }

        });

d.测试运行

点击错题集:


PSP表格

PSP2.1

Personal Software Process Stages

Estimated time(h)

actual time(h)

Planning

计划

16

17

· Estimate

估计这个任务需要多少时间

16

17

Development

开发

8

9

· Analysis

需求分析 (包括学习新技术)

1

0.5

· Design Spec

生成设计文档

0.5

0.5

· Design Review

设计复审

1

1

· Coding Standard

代码规范

0.5

0.2

· Design

具体设计

2

1.5

· Coding

具体编码

8

8

· Code Review

代码复审

0.5

0.5

· Test

测试(自我测试,修改代码,提交修改)

1

1.5

Reporting

报告

1.5

1.5

·

测试报告

·

计算工作量

0.5

1

·

并提出过程改进计划

1

1


 

  

总结:

此次结对编程任务与王若凡合作,开始我们先对需求进行了分析,对于功能实现先定了大致方向。基础四则运算算法取用王若凡的程序,在此基础上实现各种功能。在错题集功能上耗费时间较多,想对错题集里的错题进行编号的功能还是无法完成实现。

结对编程无疑提高了我们编程的高效性,互相监督,取长补短,如我的思路较快,而他实际操作网上查找资料能力较强。两个人的思路想法在同一时间产生碰撞,让程序更好更快地完成。一个人编写另一个人旁边护航有效地发现一些错误特别是低级错误,

如此才不会产生当局者迷而陷入死循环。


汉堡包点评: 

先来一片面包: 我们有着一个共同任务,对任务有着相同思路,并且我们可以互相信赖,主要是他看上了我的壁纸~;

 铺上肉与佐料:队友在编程中充分地展示了他强大的动手能力与资料知识搜索能力,而且他是一个很耐心的人,是能带着我认真打代码的引航者。

不足之处在于对问题解决思路不够清晰,思路的表达条理性不够。若有一个清晰的思路加上他强大的编程动手能力,那肯定会成为无敌的编程大神。

然后再来一片面包:方向盘与gps导航,才能走的更远才能探索未知道路;互相配合,终能完成任务,更上一层楼。

结对编程-四则运算-GUI的更多相关文章

  1. 结对编程四则运算gui

    码市地址:https://git.coding.net/linzhao/sizeyunsuangui.git 林 钊 -- 201421123105 吴世荣 -- 201421123119 王坤彬 - ...

  2. 结对编程-四则运算GUI的实现

    一.项目成员以及coding地址: 洪灏捷(本人)201321122020  coding地址:https://git.coding.net/hoje/The-GUI-operation.git 白至 ...

  3. 20175226 2018-2019-2《java程序设计》结对编程-四则运算(第一周-阶段总结)

    结对编程-四则运算(第一周-阶段总结) 需求分析 实现一个四则运算程序,要求: 自动随机生成小学四则运算题目(加,减,乘,除) 支持整数.真分数且支持多项式 能够利用栈的思想,将中缀转换为后缀表达式 ...

  4. 20175305张天钰Java结对编程四则运算(二)

    Java结对编程四则运算(二) 一.题目描述及要求 Git提交粒度不要太粗,建议一个文件/一个类/一个函数/一个功能/一个bug修复都进行提交,不能一天提交一次,更不能一周一次,参考Commit Me ...

  5. 20175305张天钰Java结对编程四则运算

    Java结对编程四则运算 一.题目描述:如何对表达式进行求值运算呢 1.中缀表达式与后缀表达式(娄老师讲解) 中缀表达式就是运算符号在运算数中间的表达式,比如1+2,顾名思义,后缀表达式就是运算符在运 ...

  6. 结对编程--四则运算(Java)萧英杰 夏浚杰

    结对编程--四则运算(Java)萧英杰 夏浚杰 Github项目地址 功能要求 题目:实现一个自动生成小学四则运算题目的命令行程序 使用 -n 参数控制生成题目的个数(实现) 使用 -r 参数控制题目 ...

  7. 结对编程--四则运算(Java)梅进鹏 欧思良

    结对编程--四则运算(Java)梅进鹏 欧思良 Github项目地址:https://github.com/MeiJinpen/Arithmetic 功能要求 题目:实现一个自动生成小学四则运算题目的 ...

  8. 王译潇20162314 实验报告三plus结对编程四则运算第一阶段

    北京电子科技学院BESTI实验报告 课程:程序设计与数据结构 班级: 1623 姓名: 王译潇 学号:20162314 指导教师:娄佳鹏老师.王志强老师 实验日期:2017年5月12号 实验密级: 非 ...

  9. Java结对编程四则运算一周小结

    Java结对编程四则运算一周小结 需求分析 对于四则运算来说最主要的就是要计算出产生的式子(字符串的形式). 设计思路 总体可将这个项目分解为几个部分:产生式子,计算式子,判断对错并记录: 具体的思路 ...

随机推荐

  1. Unity3D常用代码集合

    1.基本碰撞检测代码 function OnCollisionEnter(theCollision : Collision){         if(theCollision.gameObject.n ...

  2. Unity 使用xLua遇到的坑

    在我们使用xLua作为Unity中lua集成的解决方案时,遇到了一个问题,就是当我们使用在lua中把UI中的某个控件绑定相应的事件(如按钮的onClick事件),xLua绑定这个事件是用委托实现的,具 ...

  3. 运用经典方法进行横截面数据分类 笔记 (基于R)

    参考资料: [1]吴喜之. 复杂数据统计方法[M]. 中国人民大学出版社, 2015. 一.logistic回归与probit回归 logistic回归和probit回归都属于广义线性模型. 广义线性 ...

  4. Orleans稍微复杂的例子—互动

    这是Orleans系列文章中的一篇.首篇文章在此 我费力费心的翻译过官方的教程,但是本人英语词汇量不高,可是架不住电子词典啊-只要肯花时间,我这些内容谁都可以做出来.所以这个事例告诉我们一个道理,那就 ...

  5. FFT 专题讲解

    FFT是什么? FFT是快速傅里叶变换(fast Fourier transform)的简称.在ACM领域主要是用来快速求解多项式乘法的算法, 在信号领域也有很大用途 基础知识 卷积 举个例子,给你两 ...

  6. 错误 0xc0202049: 数据流任务 1: 无法在只读列“ID”中插入数据

    数据库导入导出时总失败,错误信息如下: 正在验证 (错误) 消息错误 0xc0202049: 数据流任务 1: 无法在只读列“ID”中插入数据. (SQL Server 导入和导出向导) 错误 0xc ...

  7. 远景面试算法题——FolderSize

    描述 文件被存储在磁盘上的时候,通常为cluster方式.每个cluster具有固定的大小,一个文件所消耗的空间量始终是cluster大小的整数倍.因此,如果cluster的大小为100字节,165字 ...

  8. ASP.NET Core 运行原理解剖[2]:Hosting补充之配置介绍

    在上一章中,我们介绍了 ASP.NET Core 的启动过程,主要是对 WebHost 源码的探索.而本文则是对上文的一个补充,更加偏向于实战,详细的介绍一下我们在实际开发中需要对 Hosting 做 ...

  9. 人生苦短 我用Python 第二周的第一天 (数据类型)

    数字:  整形  int  长整形(Python3里面把整形.长整形和到一起啦) 浮点型( float) 1.3 5.2 等等  科学技术发表示 1.3e-3=0.0013 e的代表10. bin是二 ...

  10. 《HelloGitHub》第 17 期

    公告 本月 hellogitub.com 动态 服务器迁移到了国内,国内浏览速度有了质的飞跃. 代码重构 项目 运行更加简单,直接 clone.执行安装依赖命令.运行 上线了"我的收藏&qu ...