201571030337/201571030327——《小学生四则运算》结对项目报告
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——《小学生四则运算》结对项目报告相关推荐
- 小学四则运算结对项目报告(GUI)
小学四则运算结对项目报告(GUI) 一.Coding.Net项目地址: https://git.coding.net/wsshr/Calculation.git 二.PSP表格(完成前): PSP 任 ...
- 四则运算——结对项目报告
写在前面:这次的作业我们是用Web做的,搭服务器的部分已经完成,老师们可以通过这个链接查看我们的页面http://47.93.197.5:8080/chenf/.附加功能1我们加了英语这个语种,其他的 ...
- 201571030121《小学四则运算练习软件软件需求说明》结对项目报告
201571030107/201571030121<小学四则运算练习软件软件需求说明>结对项目报告 结对小伙伴:冯晓(201571030107) 任务一 首先,我们进行了实例体验,把我们已 ...
- 201571030301/201571030302《小学生四则运算练习软件》结对项目报告
Github地址 :https://github.com/Ahmatjan-IT/sizeyunsuanGUI 队友博客地址:http://www.cnblogs.com/dyh666/p/87191 ...
- 201571030139/201571030134《小学生四则运算练习软件需求说明》结对项目报告
任务一 首先,我们进行了用户体验,把我们已经完成的小学生四则运算软件发给我们要调研的人,他们体验了我们的程序后再填写需求分析调查问卷,这样可以更好的得到一个反馈,让我们的需求分析更加清楚. 其次,我们 ...
- 201571030135/201571030137《小学四则运算练习软件》结对项目报告
任务1源码在Github的仓库主页链接地址:https://github.com/zhanghh2018/201571030135-201571030137 一.需求分析. 1)由计算机从题库文件中随 ...
- 201571030310/201571030329《小学四则运算训练软件》结对项目报告
一.项目源码. Github地址:https://github.com/loadrove/SoftWareTest 二.项目报告. 1.需求分析: (1)由计算机从题库文件中随机选择20道加减乘除混合 ...
- 201571030322/201571030319《小学生四则运算软件需求说明结对项目报告》
1.任务一: (1).调研对象:小学生,小学数学代课老师,家长: (2).以实验二(小学四则混合运算项目),实验三(小学四则软件运算结对项目)开发的程序为软件原型: (3).采用问卷调查,访谈两种方式 ...
- 201571030316/201571030314 《小学四则运算练习软件需求说明》结对项目报告
小伙伴儿的博客地址链接:http://www.cnblogs.com/mjuan/p/8877738.html 我的学号:201571030316 小伴儿的学号:20 ...
- 201571030128/201571030118《小学四则运算练习软件软件需求说明》结对项目报告
一.以实验二个人项目.实验三结对项目所开发的小学生四则运算练习软件作为原型,实施小学生四则运算练习软件用户调研活动具体过程. 1.真实的调研对象 对象 性别 年龄 身份 刘老师 女 23 小学数学实习 ...
最新文章
- IDEA中PlantUML的使用
- 面向过程与面向对象引入三大特性事务
- python中常用的推导(字典推导和列表推导)
- vue中使用keepAlive组件缓存遇到的坑
- 查看和修改Oracle数据库服务器端的字符集
- Beetlex之redis驱动
- 【HDU - 4217 】Data Structure? (线段树求第k小数)
- python中selenium中使用ajax_Selenium测试Ajax程序(转)
- 1.7 的concurrentHashMap内部结构
- 《Clean Code》 代码简洁之道
- iapp进度条倒计时_倒计时进度条app
- Unable to launch WebDriverAgent because of xcodebuild failure: “iproxy exited with code ‘234‘“
- 赵鑫:简单技术指标的高明运用
- 信号隔离器的功能原理是什么?
- 网络小知识笔记——交换机、路由器、网关和路由
- Rouge的安装与使用
- 毕设 JAVA JSP工资管理系统的设计与实现论文
- Symmetrix GK盘介绍
- 关于CCS中的一些C语法学习
- Mybatis写SQL语句update返回值为null
热门文章
- 鸿蒙系统3.0多大内存,鸿蒙2.0终于上机实测 多大内存能跑?
- 这可能是东半球最详细的Linux下搭建Jenkins服务器实现自动打包的教程(下)
- xcode连接新的iPhone进行app调试教程
- Linux关闭io,文件的打开与关闭-IO
- TypeScript 泛型T使用整理
- HTML粒子漩涡特效,使用HTML5 Canvas绘制经典漩涡粒子特效
- ipref网络性能评估工具
- 对象引用、可变性和垃圾回收
- 什么是归一化,它与标准化的区别是什么?
- twitter如何以图搜图_中学智慧校园如何设计?可以看看这整套的校园CAD设计方案...