结对项目——四则运算 “软件”之升级版
这个作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2232
我的github远程仓库的地址为:https://github.com/201606120068/068-Git
结对同伴的学号:201606120068
结对同伴的姓名:郑达
结对同伴的github远程仓库的地址为:https://github.com/201606120068/068-Git
一、开发环境
IntelliJ IDEA 2018.2.2
系统:Window 10 x64.
二、需求分析
1.原始需求:
生成题目,单个题目最多不能超过4个运算符,操作数小于100。
用户可以输入答案
若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。
三、扩展要求
程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3
可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
用户答题结束以后,程序可以显示用户答题所用的时间
用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名
程序可以出单个整数阶乘的题目:如:4!=24
程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。
程序可以设置皮肤功能,可以改变界面的颜色即可。
四、方向选择
程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。
用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名
用户可以选择出题的个数(最多不能超过5个题目且不少于1个),
用户答题结束以后,程序可以显示用户答题所用的时间
答题结束可以显示用户答错的题目个数和答对的题目个数
1 if(n>5||n<1)
2 {
3 //如果题目个数大于5或小于1,会弹出提示框
4 JOptionPane.showMessageDialog(null,"输入的题目个数不能大于5或者小于1","注意",JOptionPane.INFORMATION_MESSAGE);
5 }
五、项目核心代码:
class fouroperation extends JFrame implements ActionListener{
JMenuBar menubar = new JMenuBar();
JMenu LoginMenu = new JMenu("系统登录");
JMenu UserMangeMenu = new JMenu("用户管理");
JMenu backColorMenu = new JMenu("背景功能");
JMenu HelpMenu = new JMenu("关于");
JTextField titlenumber;//提示输入的个数
JTextField t;//随机题目
JTextField useranswer;//用于输入答案
JTextField rightOflase;//判断对错
JTextField ShowTime;//显示时间
JTextField settingtime;//设置时间
private Timer tmr;
JLabel L1;//标签1-6
JLabel L2;
JLabel L3;
JLabel L4;
JLabel L5;
JLabel L6;
JButton Btn1, btn2,btn3,colorchangebtn;
public static JPanel p1;
public JPanel p2;
public JPanel p3;//面板容器
String parten="0.00";//设置格式为“0.00”
DecimalFormat decimal=new DecimalFormat(parten);//数字进行快速格式化,取2位小数
String str;
double seconds;//时间“秒”
long startTime,endTime;
char[]ch={'+','-','*','÷'};//存放加减乘除的符号数组
float answer =0;//程序判断的答案
int usertitlenumber;//用户输入的题目
int count=0;//已经 出的题目
int right=0;//计算答对的题目数
int wrong=0;//计算答错的题目数
fouroperation()
{
super("郑达、谢斌揆简单四则运算");
//添加菜单项至菜单上
JMenuItem userLoginMenu= new JMenuItem("用户登录");
userLoginMenu.addActionListener(new LoginActionListener());
JMenuItem exitLoginMenu= new JMenuItem("退出");
// JMenuItem myBackgroudColor=new JMenuItem("背景颜色改变");
exitLoginMenu.addActionListener(new exitmyitem());
LoginMenu.add(userLoginMenu);
LoginMenu.add(exitLoginMenu);
// backColorMenu.add(myBackgroudColor);
menubar.add(LoginMenu);
menubar.add(UserMangeMenu);
menubar.add(backColorMenu);
menubar.add(HelpMenu);
//将菜单加入至菜单栏
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//建立窗口,不能放大
this.setSize(400,350);//窗口大小
L1=new JLabel("输入选择题(不能超过5个):");
L2=new JLabel("时间:");
L3=new JLabel("设置时间(时间不超过120秒):");//设置时间提示
L4=new JLabel("随机题目:");//显示题目
L5=new JLabel("输入答案:");
L6=new JLabel("判断对错:");
titlenumber =new JTextField(15);
Btn1 =new JButton("开始");
colorchangebtn=new JButton("背景颜色改变");
colorchangebtn.addActionListener(this);
t=new JTextField(20);
useranswer =new JTextField(25);
useranswer.addActionListener(this);
rightOflase =new JTextField(25);
ShowTime =new JTextField(15);
ShowTime.addActionListener(this);
settingtime =new JTextField(5);
settingtime.addActionListener(this);
Timer timertask = new Timer(1000, this);//间隔1秒
this.tmr = timertask;//添加时间
btn3 =new JButton("提交答案");
btn3.addActionListener(this);
btn2 =new JButton("下一题");
btn2.addActionListener(this);
titlenumber.addActionListener(this);
Btn1.addActionListener(this);
p1=new JPanel();
p2=new JPanel();
p3=new JPanel();
getContentPane().add(p1,"North");
getContentPane().add(p2,"Center");
getContentPane().add(p3,"South");
p1.add(colorchangebtn);
p1.add(menubar);
p2.add(L3);
p2.add(settingtime);p2.add(L1);p2.add(titlenumber);p2.add(Btn1);
p2.add(L4);p2.add(t);p2.add(L5);p2.add(useranswer);p2.add(L6);p2.add(rightOflase);
p3.add(L2);p3.add(ShowTime);p3.add(btn3);p3.add(btn2);
this.setResizable(false);//设置不可以改变大小
this.setVisible(true);//设置窗口可见
}
六、结对同伴
姓名:郑达
他的博客地址:https://github.com/201606120068/068-Git
结对学习照片:
七、程序运行结果演示
八、总结
这次的结对项目比上次的个人项目要难很多。但是在和队友的合作中,不断解决项目中的问题,也让我们的能力得到不断的提升。结对子不但让我们能相互学习,看到自己的不足和长处,这样我们就能各施其职,共同完成这个项目!!!
九、结对软件过程耗时估计与统计表
PSP2.1 |
Personal Software Process Stages |
Time Senior Student(h) |
Time(h) |
Planning |
计划 |
3 |
6 |
· Estimate |
估计这个任务需要多少时间 |
10 |
15 |
Development |
开发 |
8 |
10 |
· Analysis |
需求分析 (包括学习新技术) |
2 |
6 |
· Design Spec |
生成设计文档 |
2 |
4 |
· Design Review |
设计复审 |
1 |
3 |
· Coding Standard |
代码规范 |
0.5 |
1.5 |
· Design |
具体设计 |
6 |
8 |
· Coding |
具体编码 |
10 |
13 |
· Code Review |
代码复审 |
2 |
3 |
· Test |
测试(自我测试,修改代码,提交修改) |
2 |
3 |
Reporting |
报告 |
1 |
5 |
· |
测试报告 |
0 |
0 |
· |
计算工作量 |
3 |
6 |
· |
并提出过程改进计划 |
0 |
0 |