GitHub地址:https://github.com/zhouheqh

1、需求分析

(1)由计算机从题库文件中随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计5分,错误不计分,20道题测试结束后给出测试总分;

(2)题库自动生成或手动输入;

(3)程序为用户提供三种进阶四则运算练习功能选择:百以内整数算式(必做)、带括号算式、真分数算式练习;

(4)程序允许用户进行多轮测试,提供用户多轮测试分数柱状图,示例如下:

(5)程序记录用户答题结果,当程序退出再启动的时候,可为用户显示最后一次测试的结果,并询问用户可否进行新一轮的测试;

(6)测试有计时功能,测试时动态显示用户开始答题后的消耗时间。

(7)程序人机交互界面是GUI界面(WEB页面、APP页面都可),界面支持中文简体(必做)/中文繁体/英语,用户可以进行语种选择。

2、软件设计

3、核心代码

绘制图表import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.util.Random;import javax.swing.JFrame;public class ChartPrint extends JFrame{//绘制柱形统计图private Random ran;public ChartPrint(){super();ran = new Random();setTitle("绘制得分柱形图");setBounds(100, 100, 400, 271);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}@Overridepublic void paint(Graphics g){int Width = getWidth();int Height = getHeight();int leftMargin = 20;//柱形图左边界int topMargin = 50;//柱形图上边界Graphics2D g2 = (Graphics2D) g;int ruler = Height-topMargin-5;int rulerStep = ruler/10;//将当前的高度评分为10个单位g2.setColor(Color.WHITE);//绘制白色背景g2.fillRect(0, 0, Width, Height);//绘制矩形图g2.setColor(Color.LIGHT_GRAY);for(int i=0;i<=10;i++){//绘制灰色横线和百分比g2.drawString((100-10*i)+"%", 5, topMargin+rulerStep*i);//写下百分比g2.drawLine(5, topMargin+rulerStep*i, Width, topMargin+rulerStep*i);//绘制灰色横线}g2.setColor(Color.cyan);for(int i=0;i<4;i++){//绘制柱形图int value = ran.nextInt(Height-topMargin-10)+10;//随机产生柱形的百分比int step = (i+1)*40;//设置每隔柱形图的水平间隔为40//绘制矩形
//            g2.drawRoundRect(leftMargin+step*2, Height-value, 40, value, 40, 10);g2.fillRoundRect(leftMargin+step*2, Height-value, 40, value, 40, 10);//列出产品的编号g2.drawString("练习次数"+(i+1), leftMargin+step*2, Height-value-5);}}public static void main(String[] args) {ChartPrint demo = new ChartPrint();demo.setVisible(true);}
}登录界面
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class Login {    private JFrame frame = new JFrame("四则运算");    private Container c = frame.getContentPane();    private JTextField username = new JTextField();    private JPasswordField password = new JPasswordField();    private JButton ok = new JButton("确定");private JButton cancel = new JButton("取消");    public Login(){       frame.setSize(300,200);        c.setLayout(new BorderLayout());    initFrame();    frame.setVisible(true);}    private void initFrame() {                //顶部ok.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0) {new chuti();}});JPanel titlePanel = new JPanel();    titlePanel.setLayout(new FlowLayout());    titlePanel.add(new JLabel("学生登录"));    c.add(titlePanel,"North");            //中部表单        JPanel fieldPanel = new JPanel();        fieldPanel.setLayout(null);        JLabel l1 = new JLabel("学   号:");        l1.setBounds(50, 20, 50, 20);    JLabel l2 = new JLabel("密    码:");        l2.setBounds(50, 60, 50, 20);    fieldPanel.add(l1);        fieldPanel.add(l2);        username.setBounds(110,20,120,20);    password.setBounds(110,60,120,20);    fieldPanel.add(username);    fieldPanel.add(password);    c.add(fieldPanel,"Center");                //底部按钮        JPanel buttonPanel = new JPanel();    buttonPanel.setLayout(new FlowLayout());    buttonPanel.add(ok);    buttonPanel.add(cancel);        c.add(buttonPanel,"South");}    public static void main(String[] args){       new Login(); }    }随机出题
import java.util.Random;public class chuti {int a,b,c,d;int an[]=new int [5];String bn[]=new String [5];Random cn =new Random();chuti(){int i=0;do{    a=cn.nextInt(100);b=cn.nextInt(100);d=cn.nextInt(100)%4+1;switch(d){case 1:an[i]=a+b;bn[i]=String.valueOf(a)+"+"+String.valueOf(b)+"=";i++;break;case 2: an[i]=a-b;bn[i]=String.valueOf(a)+"-"+String.valueOf(b)+"=";i++;break;case 3:an[i]=a*b;bn[i]=String.valueOf(a)+"*"+String.valueOf(b)+"=";i++;break;case 4:an[i]=a/b;bn[i]=String.valueOf(a)+"/"+String.valueOf(b)+"=";i++;break;}}while(i<5);for(int j=0;j<bn.length;j++){System.out.println(bn[j]);System.out.println(an[j]);}new yunsuan(an,bn);}}运算
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;public class yunsuan extends JFrame{JLabel l1 = new JLabel("答对题数:");private JFrame frame = new JFrame("四则运算");    private Container c = frame.getContentPane();    private JButton KO = new JButton("确定");private JTextField A = new JTextField(6);private JTextField AA = new JTextField(4);private JTextField AAA = new JTextField(4);private JTextField B = new JTextField(6);private JTextField BB = new JTextField(4);private JTextField BBB = new JTextField(4);private JTextField C = new JTextField(6);private JTextField CC = new JTextField(4);private JTextField CCC = new JTextField(4);private JTextField D = new JTextField(6);private JTextField DD = new JTextField(4);private JTextField DDD = new JTextField(4);private JTextField E = new JTextField(6);private JTextField EE = new JTextField(4);private JTextField EEE = new JTextField(4);private JPasswordField password = new JPasswordField();    private JButton ok = new JButton("确定");private JTextField QQ = new JTextField(6);int num=0;int an[]=new int [5];String bn[]=new String [5];String cn[]=new String [5];yunsuan(int a[],String b[]) {    an=a;bn=b;JPanel fieldPanel = new JPanel();fieldPanel.add(A);A.setBounds(30, 10, 100, 20);A.setVisible(true);fieldPanel.add(AA);AA.setBounds(40, 10, 100, 20);fieldPanel.add(AAA);AAA.setBounds(50, 10, 100, 20);fieldPanel.add(B);B.setBounds(30, 15, 50, 20);fieldPanel.add(BB);BB.setBounds(40, 15, 100, 20);fieldPanel.add(BBB);BBB.setBounds(50, 10, 100, 20);fieldPanel.add(C);C.setBounds(30, 20, 50, 20);fieldPanel.add(CC);CC.setBounds(40, 20, 100, 20);fieldPanel.add(CCC);CCC.setBounds(50, 10, 100, 20);fieldPanel.add(D);D.setBounds(30, 25, 50, 20);fieldPanel.add(DD);DD.setBounds(40, 25, 100, 20);fieldPanel.add(DDD);DDD.setBounds(50, 10, 100, 20);fieldPanel.add(E);E.setBounds(30, 30, 50, 20);fieldPanel.add(EE);EE.setBounds(40, 30, 100, 20);fieldPanel.add(EEE);EEE.setBounds(50, 10, 100, 20);fieldPanel.add(KO);KO.setBounds(30, 50, 20, 20);fieldPanel.add(l1);l1.setBounds(20, 60, 100, 20);fieldPanel.add(QQ);QQ.setBounds(40, 70, 100, 20);KO.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0) {cn[0]=AA.getText();cn[1]=BB.getText();cn[2]=CC.getText();cn[3]=DD.getText();cn[4]=EE.getText();AAA.setText(String.valueOf(an[0]));BBB.setText(String.valueOf(an[1]));        CCC.setText(String.valueOf(an[2]));                DDD.setText(String.valueOf(an[3]));EEE.setText(String.valueOf(an[4]));for(int i=0;i<an.length;i++)if(String.valueOf(an[i]).equals(cn[i]))num++;QQ.setText(String.valueOf(num));}});fieldPanel.setVerifyInputWhenFocusTarget(true);A.setText(bn[0]);B.setText(bn[1]);C.setText(bn[2]);D.setText(bn[3]);E.setText(bn[4]);this.add(fieldPanel);
this.setBounds(400, 400, 250, 270);
this.setVisible(true);}}  

4、程序运

5、同学习过程:

6、展示PSP

PSP2.1

任务内容

计划完成需要的时间(min)

实际完成需要的时间(min)

Planning

计划

30

30

Estimate

估计这个任务需要多少时间,并规划大致工作步骤

50

50

Development

开发

300

360

Analysis

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

30

30

Design Spec

生成设计文档

40

60

Design Review

设计复审 (和同事审核设计文档)

20

10

Coding Standard

代码规范 (为目前的开发制定合适的规范)

10

10

Design

具体设计

60

40

Coding

具体编码

180

150

Code Review

代码复审

10

20

est

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

40

60

Reporting

报告

30

45

Test Report

测试报告

25

30

Size Measurement

计算工作量

10

6

Postmortem & Process

Improvement Plan

事后总结 ,并提出过程改进计划

10

20

7、对小伙伴的评价

        首先,我要谢谢我的小伙伴,因为她带给我学习过程中科院相互讨论相互学习的感觉,使我们都能投入到学习当中去,用我们共同的力量去寻求更好的解决问题的方法。这是一个难能可贵的优点,值得我们好好学习。总之,通过结对学习,使我们之间受益匪浅。

8、 结对编程真的能够带来1+1>2的效果吗?通过这次结对编程,请谈谈你的感受和体会。

通过这次编程,我觉得能够带来1+1>2的效果,之前一个人做的时候,遇到不懂得问题时,就会陷入迷茫。当两个人一起编程时,有不懂的还可以一起讨论,说出自己的意见,也为整个编程过程节约了时间,除此之外,两个人一起合作时就会产生更多更好的想法,可以更好的优化整个项目的设计,遇到问题时可以相互帮助解决问题,效率也比较高。两个人合作还可以发现多方身上的优点,找出自己身上的不足,并能相互监督让彼此变得更好,还可以彼此分享好的学习经验,所以我们认为两个人合作的效率远远大于一个人。

转载于:https://www.cnblogs.com/1988zx/p/8716805.html

201571030337/201571030327——《小学生四则运算》结对项目报告相关推荐

  1. 小学四则运算结对项目报告(GUI)

    小学四则运算结对项目报告(GUI) 一.Coding.Net项目地址: https://git.coding.net/wsshr/Calculation.git 二.PSP表格(完成前): PSP 任 ...

  2. 四则运算——结对项目报告

    写在前面:这次的作业我们是用Web做的,搭服务器的部分已经完成,老师们可以通过这个链接查看我们的页面http://47.93.197.5:8080/chenf/.附加功能1我们加了英语这个语种,其他的 ...

  3. 201571030121《小学四则运算练习软件软件需求说明》结对项目报告

    201571030107/201571030121<小学四则运算练习软件软件需求说明>结对项目报告 结对小伙伴:冯晓(201571030107) 任务一 首先,我们进行了实例体验,把我们已 ...

  4. 201571030301/201571030302《小学生四则运算练习软件》结对项目报告

    Github地址 :https://github.com/Ahmatjan-IT/sizeyunsuanGUI 队友博客地址:http://www.cnblogs.com/dyh666/p/87191 ...

  5. 201571030139/201571030134《小学生四则运算练习软件需求说明》结对项目报告

    任务一 首先,我们进行了用户体验,把我们已经完成的小学生四则运算软件发给我们要调研的人,他们体验了我们的程序后再填写需求分析调查问卷,这样可以更好的得到一个反馈,让我们的需求分析更加清楚. 其次,我们 ...

  6. 201571030135/201571030137《小学四则运算练习软件》结对项目报告

    任务1源码在Github的仓库主页链接地址:https://github.com/zhanghh2018/201571030135-201571030137 一.需求分析. 1)由计算机从题库文件中随 ...

  7. 201571030310/201571030329《小学四则运算训练软件》结对项目报告

    一.项目源码. Github地址:https://github.com/loadrove/SoftWareTest 二.项目报告. 1.需求分析: (1)由计算机从题库文件中随机选择20道加减乘除混合 ...

  8. 201571030322/201571030319《小学生四则运算软件需求说明结对项目报告》

    1.任务一: (1).调研对象:小学生,小学数学代课老师,家长: (2).以实验二(小学四则混合运算项目),实验三(小学四则软件运算结对项目)开发的程序为软件原型: (3).采用问卷调查,访谈两种方式 ...

  9. 201571030316/201571030314 《小学四则运算练习软件需求说明》结对项目报告

    小伙伴儿的博客地址链接:http://www.cnblogs.com/mjuan/p/8877738.html 我的学号:201571030316                  小伴儿的学号:20 ...

  10. 201571030128/201571030118《小学四则运算练习软件软件需求说明》结对项目报告

    一.以实验二个人项目.实验三结对项目所开发的小学生四则运算练习软件作为原型,实施小学生四则运算练习软件用户调研活动具体过程. 1.真实的调研对象 对象 性别 年龄 身份 刘老师 女 23 小学数学实习 ...

最新文章

  1. IDEA中PlantUML的使用
  2. 面向过程与面向对象引入三大特性事务
  3. python中常用的推导(字典推导和列表推导)
  4. vue中使用keepAlive组件缓存遇到的坑
  5. 查看和修改Oracle数据库服务器端的字符集
  6. Beetlex之redis驱动
  7. 【HDU - 4217 】Data Structure? (线段树求第k小数)
  8. python中selenium中使用ajax_Selenium测试Ajax程序(转)
  9. 1.7 的concurrentHashMap内部结构
  10. 《Clean Code》 代码简洁之道
  11. iapp进度条倒计时_倒计时进度条app
  12. Unable to launch WebDriverAgent because of xcodebuild failure: “iproxy exited with code ‘234‘“
  13. 赵鑫:简单技术指标的高明运用
  14. 信号隔离器的功能原理是什么?
  15. 网络小知识笔记——交换机、路由器、网关和路由
  16. Rouge的安装与使用
  17. 毕设 JAVA JSP工资管理系统的设计与实现论文
  18. Symmetrix GK盘介绍
  19. 关于CCS中的一些C语法学习
  20. Mybatis写SQL语句update返回值为null

热门文章

  1. 鸿蒙系统3.0多大内存,鸿蒙2.0终于上机实测 多大内存能跑?
  2. 这可能是东半球最详细的Linux下搭建Jenkins服务器实现自动打包的教程(下)
  3. xcode连接新的iPhone进行app调试教程
  4. Linux关闭io,文件的打开与关闭-IO
  5. TypeScript 泛型T使用整理
  6. HTML粒子漩涡特效,使用HTML5 Canvas绘制经典漩涡粒子特效
  7. ipref网络性能评估工具
  8. 对象引用、可变性和垃圾回收
  9. 什么是归一化,它与标准化的区别是什么?
  10. twitter如何以图搜图_中学智慧校园如何设计?可以看看这整套的校园CAD设计方案...