结对项目-四则运算 “软件”之升级版

随笔缘由:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213

githup缘由:https://github.com/tianshizhao/tianshizhao

一、基本要求

从个人项目出发,将程序改造成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:

  • 自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。
  • 用户可以输入答案
  • 若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少

二、我们做的扩展方向

  1. 用户答题结束以后,程序可以显示用户答题所用的时间
  2. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
  3. 程序可以出单个整数阶乘的题目:如:4!=24
  4. 程序可以设置皮肤功能,可以改变界面的颜色即可(按钮点击实现八种颜色随机切换)
  5. 程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。

三、开发环境下调试:Intelij IDEA

       

四、估计实现所需时间,记录结对编程时间。

PSP2.1 Personal Software Process Stages Time Senior Student Time
Development 开发 50 60
· Analysis 需求分析 (包括学习新技术) 30 35
· Design Spec 生成设计文档 0 0
· Design Review 设计复审 0 0
· Coding Standard 代码规范 5 8
· Design 具体设计 30 35
· Coding 具体编码 45 60
· Code Review 代码复审 3 5
· Test 测试(自我测试,修改代码,提交修改) 5 8
Reporting 报告 0 0

五、代码实现

  窗体代码

 1 JSJ()
 2     {
 3         super("简易计算器升级版");
 4         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 5         this.setSize(1000,500);
 6         A =new JLabel("输入题目数目:");
 7         B=new JLabel("时间:");
 8         C =new JLabel("设置时间(小于120秒):");
 9         D =new JLabel("题目:");
10         E =new JLabel("答案:");
11         F =new JLabel("判断:");
12         number =new JTextField(10);
13         button1 =new JButton("产生题目");
14         button4 =new JButton("改背景");
15         button4.addActionListener(this);
16         n =new JTextField(10);
17         useranswer =new JTextField(10);
18         useranswer.addActionListener(this);
19         flase =new JTextField(15);
20         ShowTime =new JTextField(10);
21         ShowTime.addActionListener(this);
22         settingtime =new JTextField(10);
23         settingtime.addActionListener(this);
24         Timer timertask = new Timer(1000, this);
25         this.timer = timertask;
26         button3 =new JButton("提交");
27         button3.addActionListener(this);
28         button2 =new JButton("下一题");
29         button2.addActionListener(this);
30         number.addActionListener(this);
31         button1.addActionListener(this);
32         G1 =new JPanel();
33         G2 =new JPanel();
34         G3 =new JPanel();
35         getContentPane().add(G1,"North");
36         getContentPane().add(G2,"Center");
37         getContentPane().add(G3,"South");
38         G3.add(button4);
39         G3.add(menubar);
40         G1.add(C);
41         G1.add(settingtime);
42         G1.add(A);
43         G1.add(number);
44         G2.add(button1);
45         G2.add(D);
46         G2.add(n);
47         G2.add(E);
48         G2.add(useranswer);
49         G2.add(F);
50         G2.add(flase);
51         G3.add(B);
52         G3.add(ShowTime);
53         G3.add(button3);
54         G3.add(button2);
55         this.setResizable(false);
56         this.setVisible(true);
57     }

     提交答案后检测正确或错误

 1            if(e.getSource()==menubar.getMenu(1))
 2             {
 3             }
 4             else if(e.getSource()== button3)
 5             {
 6                 s =decimal.format(sum);
 7                 if(Float.parseFloat(s)==Float.parseFloat(useranswer.getText()))
 8                 {
 9                     right++;
10                     flase.setText("输入的答案正确!");
11                     flase.setForeground(Color.red);
12                 }
13                 else
14                 {
15                     wrong++;
16                     flase.setText("错误!正确答案为"+Float.parseFloat(s));
17                     flase.setForeground(Color.BLUE);
18                 }
19             }

    题目数量不能超过5道题 时间不能超过120秒

 1 try
 2             {
 3                 ShowTime.setText(String.valueOf(settingtime.getText()));
 4
 5                 int n1=120,n2=5;
 6                 if(n1<(Integer.parseInt(ShowTime.getText())))
 7                 {
 8                     JOptionPane.showMessageDialog(null, "时间不能超过120秒!");
 9                     this.setVisible(false);
10                 }
11                 if(n2<(Integer.parseInt(number.getText())))
12                 {
13                     JOptionPane.showMessageDialog(null, "选择题数不能超过5个!");
14                     this.setVisible(false);
15
16                 }
17                 timer.start();
18
19             }
20             catch(NullPointerException o)
21             {
22                 System.out.print("输入有误");
23             }
24             yunsuan();
25             ShowTime.setText(String.valueOf(settingtime.getText()));
26         }

六、运行结果截图

七、分工与合作

1、结对成员

  2、扩展方向

  1. 用户答题结束以后,程序可以显示用户答题所用的时间(张志涛)
  2. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数(张志涛)
  3. 程序可以出单个整数阶乘的题目:如:4!=24(田仕钊)
  4. 程序可以设置皮肤功能,可以改变界面的颜色即可(按钮点击实现八种颜色随机切换)(田仕钊)
  5. 程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。(田仕钊)

、总结心得

  负责的两个扩展方向比较简单,很快就可以解决了,主要是窗体方面,以前学JAVA的时候老师有讲过,那时懵懵懂懂过去

没有学好怎么运用窗体,就这样卡在窗体的代码里,好在回想起老师对窗体的讲解,这样一来容易看懂了网上的参考代码,

看多几次代码后自己也跟着写就容易成功了。看来基础还是不够扎实。要多多看书多加练习。

九、照片

原文地址:https://www.cnblogs.com/pang0722/p/9846498.html

时间: 2024-08-28 13:03:00

结对项目-四则运算 “软件”之升级版的相关文章

结对项目--四则运算生成器(Java) 刘彦享+龙俊健

结对项目--四则运算生成器(Java) GitHub地址 合作者 刘彦享(3118005010) 龙俊健(3118005011) https://github.com/LYX708194/calculate 一.项目简介 说明 自然数:0, 1, 2, -. 真分数:1/2, 1/3, 2/3, 1/4, 1'1/2, -. 运算符:+, ?, ×, ÷. 括号:(, ). 等号:=. 分隔符:空格(用于四则运算符和等号前后). 算术表达式: e = n | e1 + e2 | e1 ? e2

结对项目——四则运算(GUI)

目录 1.仓库地址 2.开始前PSP展示 3.接口的设计 4.计算模块接口的设计与实现过程 5.计算模块接口部分的性能改进 6.计算模块部分单元测试展示 7.计算模块部分异常处理说明 8.界面模块的详细设计过程 9.界面模块与计算模块的对接 10.结对过程 11.结对编程优缺点 12.实际的PSP 1. 仓库地址:https://git.coding.net/jiapwy/newfouroperation.git 队友:胡雅馨 队友的博客地址:http://www.cnblogs.com/huy

结对项目-四则运算出题程序(GUI版)

目录: 一.致搭档(含项目地址) 二.PSP(planning) 三.结对编程中对接口的设计 四.计算模块接口的设计与实现过程 五.计算模块接口部分的性能改进 六.计算模块部分单元测试展示 七.计算模块部分异常处理说明 八.界面模块的详细设计过程 九.界面模块与计算模块的对接 十.结对过程的描述 十一.结对编程的优缺点 十二.PSP(actual) 一.致搭档:     队友:李庭娟(我很喜欢把这位队友叫娟子,感觉很亲切) 首先非常非常感谢这位结对搭档--娟子,从最初组队到如今合作,始终非常信任

结对项目——四则运算题目生成器

一.GitHub项目地址 : https://github.com/OurPrograming/Exercises 结对项目成员:软三 陈纪禧(3118005043).软三 程伟杰(3118005045) 二.PSP预计时间: PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划  60 · Estimate · 估计这个任务需要多少时间 60 Development 开发 1680 · Analysis ·

结对项目-四则运算

项目:四则运算 结对伙伴:杜桥 功能:四则运算随机出题,并判断答案是否正确(只实现了正整数运算): 实现:用c#实现,用random.Next()完成随机部分,然后通过判断来检查答案是否正确: Https:https://git.coding.net/li_yuhuan/CalculateTest.git SSH:[email protected]:li_yuhuan/CalculateTest.git 代码: int v1; int v2; int a; char op; char[] ops

结对项目--四则运算图形化最终版

四则运算器图形化最终版 (然而被我做成了奇怪的东西 组员:13070030张博文 13070033刘云峰 一.概念阶段 最初是想试试用android做个计算器app,无奈从零学起着实太赶,而且这个计划在试用了无比卡顿占内存的android studio后就彻底搁浅了. 然后就被路人谣传说MFC好用,无奈从零学起着实太赶,而且这个计划在无人指导的摸黑下也顺手搁浅了. 最终便沦为了EasyX旧传统,好歹有点基础,但果然还是不太甘心. 以及因为当初想做app,所以抠了iphone计算器的图想当UI,结

结对项目 四则运算 更新版

功能:由随机数决定出题为10个以内的数字,并确定是否出现括号(仅限一对),顺序输出表达式,并用栈的方式进行计算,判断正误.其他功能有待进一步实现. 头文件 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <math.h> 栈的结构体 typedef struct stack { double * e; int zd; }bd

结对项目第一周总结

结对项目——四则运算 阶段性总结 一.需求分析(第一周达成): 能够生成n道四则运算题,n可由使用者输入来控制 支持整数 支持分数 生成题目中含有括号 可以判断正误,如果错误会输出正确答案 统计正确率 扩展需求: 生成题目后存入文件 完成题目后从文件读入并进行判断 支持题目去重 支持繁體中文,简体中文,English 二.设计思路(同时输出UML类图): 以下是程序主体设计思路,各步骤具体操作详情请见注释: 由于本周可用的准备时间较长,我们选择直接进行真分数的操作.在java语言中并没有一个专门

2015710301120/201571030119《小学四则运算练习软件》结对项目报告

一.项目源码 Github地址:https://github.com/myGitHub1018/Student_Comput3.git 二.项目报告 1.需求分析 (1)由计算机从题库文件中随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计5分,错误不计分,20道题测试结束后给出测试总分: (2)题库文件可采用实验二的方式自动生成,也可以手工编辑生成,文本格式如下: (3)程序为用户提供三种进阶四则运算练习功能选择:百以内整数算式(必做).带括号算式.真分数算式