首页 > 技术文章 > 结对项目——四则运算 “软件”之升级版

068zhengda 2018-10-29 12:59 原文

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

 

这个作业的要求来自于: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

推荐阅读