结对项目——四则运算 “软件”之升级版
结对项目——四则运算 “软件”之升级版
这个作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2232
我的github远程仓库的地址为:https://github.com/201606120068/068-Git
结对同伴的学号:201606120068
结对同伴的姓名:谢斌揆201606120093
结对同伴的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 }
五、项目核心代码:
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);//设置窗口可见
}
static boolean colorchange=true;
public void actionPerformed(ActionEvent e)//这是一个事件监听器,处理单击鼠标时触发的事件
{
if(e.getSource()==colorchangebtn)
{
if (colorchange==true) {
p1.setBackground(Color.red);
p2.setBackground(Color.red);
colorchange=false;
}
else
{
p1.setBackground(Color.white);
p2.setBackground(Color.white);
colorchange=true;
}
}
六、结对同伴
姓名:谢斌揆201606120093
他的博客地址: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 |