2015710301120/201571030119《小学四则运算练习软件》结对项目报告

一、项目源码

Github地址:https://github.com/myGitHub1018/Student_Comput3.git

二、项目报告

1、需求分析

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

(2)题库文件可采用实验二的方式自动生成,也可以手工编辑生成,文本格式如下:

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

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

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

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

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

2、软件设计

类图如下:

(1)Calculator( )类:主函数类;定义各种组件,初始化界面,计算答题时间,设置组件的位置和大小;绑定三个事件:开始测试、下一题、查看历史成绩。每一轮测试结束之后,在endGame( )中调用了ChartUtil( )类的addScore( )方法往成绩库中添加成绩,添加成功之后再顺手写到文件中保存,下次重新打开程序的时候成绩还在。

(2)Exam( )类:运算式产生与结果计算类,一轮产生20道题目,保存表达式与正确结果,然后由Question类返回运算式与输入结果。

(3)ChartUtil( )类:统计成绩类,将每一轮的总成绩写入文件(d://scores.db),从文件中加载历史成绩,创建JFreeChart对象画

柱状图。

(4)Question( )类:返回表达式与输入的结果。

(5)Scores( )类:添加历史成绩类。

3、核心功能代码展示

(1)事件监听器部分代码展示

绑定了三个事件:开始测试点击事件、下一题点击事件、查看历史成绩点击事件。

 1 /**
 2      * 绑定事件
 3      */
 4     public void bindEvent() {
 5         //开始测试点击事件
 6         startGame.addActionListener(new ActionListener() {
 7             @Override
 8             public void actionPerformed(ActionEvent e) {
 9                 startGame();
10             }
11         });
12         nextQuestion.addActionListener(new ActionListener() {
13
14             @Override
15             public void actionPerformed(ActionEvent e) {
16                 String text = answer.getText();
17                 if (currentAnswer.equals(text)) {
18                     point += 5;
19                 }
20                 doNextQuestion();
21             }
22         });
23         showScore.addActionListener(new ActionListener() {
24
25             @Override
26             public void actionPerformed(ActionEvent e) {
27                 ChartUtil.show();
28             }
29         });
30     }
31
32     /**
33      * 开始测试
34      */
35     public void startGame() {
36         startTime = new Date().getTime();
37         time.setText("计时: 00:00");
38         startGame.setEnabled(false);
39         question.setVisible(true);
40         answer.setVisible(true);
41         nextQuestion.setVisible(true);
42         tips.setVisible(true);
43         time.setVisible(true);
44         point = 0;
45         try {
46             Exam.buildQuestions();//随机创建试题
47             doNextQuestion();
48         } catch (ScriptException e) {
49             e.printStackTrace();
50         }
51     }
52
53     public void doNextQuestion() {
54         tips.setText("当前得分:" + point + " 分");
55         Question q = Exam.getQuestion();
56         if (q != null) {
57             question.setText(q.getExpress().replaceAll("\\*", "×").replaceAll("/", "÷") + " =");
58             currentAnswer = q.getAnswer();
59         } else {
60             endGame();
61         }
62     }
63     public static void show() {
64         ChartFrame cf = new ChartFrame("历史成绩统计图", createChart());
65         cf.pack();
66         cf.setVisible(true);
67         cf.setLocationRelativeTo(null);
68     }

(2)计时器代码展示

这部分在“测试”界面初始化的时候进行调用,当发生开始测试点击事件时,计时器开始计时。

 1 private void startTimer() {
 2         new Thread() {
 3             public void run() {
 4                 while (true) {
 5                     try {
 6                         Thread.sleep(1000);
 7                         long seconds = (new Date().getTime() - startTime) / 1000;
 8                         long min = seconds / 60;
 9                         long second = seconds % 60;
10
11                         time.setText("计时: " + (min < 10 ? "0" + min : "" + min) + ":" + (second < 10 ? "0" + second : "" + second));
12                     } catch (InterruptedException e) {
13                         e.printStackTrace();
14                     }
15                 }
16             }
17         }.start();
18         ;
19     }

(3)统计柱状图代码展示

 1 /**
 2      * 创建JFreeChart对象
 3      * @return chart
 4      */
 5     public static JFreeChart createChart() {
 6         StandardChartTheme standardChartTheme = new StandardChartTheme("CN"); //创建主题样式
 7         standardChartTheme.setExtraLargeFont(new Font("隶书", Font.BOLD, 20)); //设置标题字体
 8         standardChartTheme.setRegularFont(new Font("宋体", Font.PLAIN, 15)); //设置图例的字体
 9         standardChartTheme.setLargeFont(new Font("宋体", Font.PLAIN, 15)); //设置轴向的字体
10         ChartFactory.setChartTheme(standardChartTheme);//设置主题样式
11         // 通过ChartFactory创建JFreeChart
12         JFreeChart chart = ChartFactory.createBarChart(
13                 "历史成绩统计图", //图表标题
14                 "历史成绩", //横轴标题
15                 "成绩(分)", //纵轴标题
16                 createDataSet(), //数据集合
17                 PlotOrientation.VERTICAL, //图表方向
18                 true, //是否显示图例标识
19                 false, //是否显示tooltips
20                 false);//是否支持超链接
21         return chart;
22     } 

4、程序运行

(1)运行文件,界面弹出“测试”框。如下图所示:

(2)点击开始测试按钮后,计时器开始计时,计时器下显示四则运算题目,用户可在输入答案后,点击下一题,一轮共有20道题目。如下图所示:

(3)每一轮测试完成之后,界面都会会弹出“消息”对话框,“消息”对话框内显示本次测试的成绩。在点击"确定"按钮后,用户可以选择点击开始测试按钮,进行下一轮测试,或点击“查看历史成绩”选择查看历史成绩。如下图所示。

(4)点击查看历史成绩按钮后,每一轮的测试结果将以柱状图的形式,成绩存放在文件(d://scores.db)中。如下图所示(第四次和第五次测试为0分)。

5、结对编程

我们两个人组队后首先根据老师的项目要求仔细地讨论了项目内容,进行了对此次结对项目信息的分析与设计,达成共识确定了此次项目总共有三个主要的部分:绑定事件、计时器、画统计图,然后进行了项目分工。我这边主要负责在实验二算法的基础上进行修改,统计每一轮的测试成绩,将统计结果写入文件scores.db,方便统计图显示时调用,我的搭档则负责计时器和统计图设计方面的代码设计编写。在结对编程过程中,我负责的部分有许多困难,但在经过查阅网上资料和搭档以及同学的帮助下,最终完成了此次借对项目。

6、PSP展示

PSP2.1 任务内容 计划完成的时间(min) 实际完成需要的时间(min)
PLanning 计划 120 100
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 120 90
Developmet 开发 480 600
Analysis 需求分析(包括学习新技术) 30 45
Design Spec 生成设计文档 10 20
Design Revie 设计复审(和同事审核设计文档) 30 30
Coding Standard 代码规范 20 30
Design 具体设计 60 80
Coding 具体编码 300 300
Code Review 代码复审 30 360
Test 测试(自我测试,修改代码,提交修改) 20 30
Reporting 报告 60 50
Test Report 测试报告 20 15
Size Measurement 计算工作量 5 5
Postmortem & Process Improvement Plan 事后总结,并提出过程改机计划 35 30

7、评价小伙伴

由于和小伙伴的关系本身比较好,我们两个在此次项目整体上合作的比较融洽。当然,毕竟两个人的想法不会总是相同,在探讨分析阶段我们在意见上还是都有点自己的小想法,思想上有点小碰撞,但通过积极讨论,最终达成了意见一致的方案。查找资料、编写代码阶段我们两个相互学习,共同进步,最终完成了此次结对项目。在此次项目中,小伙伴一直乐观面对,积极完成,使我学习到了许多。  

8、项目总结

  此次项目为结对项目,不同于以往的个人项目,1+1>2的效果在此次得到了充分的展现。个人项目由于个人想法单一、片面,虽然也能完成,但不够多彩。结对项目由于两个人的思想碰撞,得到了更加绚丽多彩的火花,使得项目内容更加充实,完整,完成效果更加饱满多姿,时间上也节约了许多。我们的最终的完成效果我们也还是挺满意的,界面的美化改进,我的搭档也比较满意,但是由于我们两个人的能力问题,本次设计的功能不是特别全面,没有增加附加功能,以后继续努力,希望在以后的学习中能够实现!

原文地址:https://www.cnblogs.com/liuqiong/p/8706859.html

时间: 2024-10-04 03:05:35

2015710301120/201571030119《小学四则运算练习软件》结对项目报告的相关文章

201571030132/201571030333《小学四则运算系统》结对项目报告

GitHub仓库地址: https://github.com/Sophur/Team-four-operation 一.需求分析 (1)由计算机从题库文件中随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计5分,错误不计分,20道题测试结束后给出测试总分: (2)题库文件可采用实验二的方式自动生成,也可以手工编辑生成,文本格式如下: (3)程序为用户提供三种进阶四则运算练习功能选择:百以内整数算式(必做).带括号算式.真分数算式练习: (4)程序允许用户进行多轮

2015710301020/201571030119《小学四则运算练习软件软件需求说明》结对项目报告

任务一:以小学生四则运算练习软件作为原型,实施小学生四则运算练习软件用户调研活动 1.实践软件需求获取方式 调查问卷: 利用问卷星平台,列出来28道题分别对老师.家长以及小学生进行了问卷调查. 问卷样本链接:https://www.wjx.cn/jq/22531831.aspx 2.调查问卷分析 任务二:采用适当的建模方法描述任务1所获取的需求,请调研用户复查. 任务三: 1.<小学四则运算练习软件软件需求说明>链接:https://shimo.im/docs/OtKU7suLE2QKTihS

201571030120/201571030119《小学四则运算练习软件软件需求说明》结对项目报告

任务一:以小学生四则运算练习软件作为原型,实施小学生四则运算练习软件用户调研活动 1.需求获取方式 (1)老师:搭档父亲是一名小学老师,由她提前和他通了电话,他答应帮她把电子版的调查问卷发放给他的同事.然后让他对我们的原型进行了分析. (2)家长和学生:亲戚中有小孩上小学,我们将包含我们软件原型和博客的调查问卷发给他们,同时获取了小学生和家长的意见,考虑小学生的理解能力有限,我们提前和家长进行了沟通,帮助孩子理解题目并作答. 2.调查问卷设计(https://www.wjx.cn/m/22531

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

201571030107/201571030121<小学四则运算练习软件软件需求说明>结对项目报告 结对小伙伴:冯晓(201571030107) 任务一 首先,我们进行了实例体验,把我们已经上线的<小学生四则运算网站>链接发给我们调研的人,在他们体验过我们的程序后在填写需求分析调查问卷,这样可以更好的得到一个反馈,让我们的需求分析更加清楚. 网站链接:http://123.56.24.117:8080/ 其次,我们主要采取了精准的问卷调查方式来进行需求分析,调查的主要对象为老师和有

201571030122/201571030129《小学四则运算练习软件软件需求说明》结对项目报告

<小学四则运算练习软件>博文链接:http://www.cnblogs.com/mzll/p/8709480.html GitHub的链接地址:https://github.com/13993013291/Shiyan3.git 任务一:        以实验二个人项目.实验三结对项目所开发的小学生四则运算练习软件作为原型,实施小学生四则运算练习软件用户调研活动. 1.调研对象:老师,学生以及家长: 2.调研方法:主要是问卷调查,其次通过即时通讯工具访谈了下当老师的同学: 3.问卷样本链接:h

201571030329/201571030310《小学四则运算练习软件需求获取》结对项目报告

任务1:实施软件用户调研活动说明: (1) 调研对象:通过一位已经毕业在小学当数学教师的学姐,以她的同事以及班内小学生作为本次调研对象.让他们进行体验我和小伙伴设计的小学四则运算练习软件,并在体验结束后填写电子调查问卷:因为上次和我的搭档开发的时候就是利用Android设计的一个小APP,所以直接通过微信分享了软件,安装在手机上就可以直接进行体验测试了.让参加调查的数学老师和小学生们以这个软件为原型工具进行反馈.     (2)调查问卷设计:由于考虑到用户的差异性,本次问卷调查分为两类,第一类是

2016011990小学四则运算练习软件项目报告

 小学四则运算练习软件项目报告 项目克隆地址:https://git.coding.net/chenf640/workhome2_2.git 目录: 一.需求分析 二.功能设计 三.设计实现 四.算法详解 五.测试运行 六.代码展示 七.psp 八.总结 -------------------------------------------------- 一.需求分析 (一)功能需求  基本功能: 程序可接收一个输入参数n,然后随机产生n道加减乘除(分别使用符号+-*÷来表示)练习题. 每个数字

2016012075+小学四则运算练习软件项目报告

2016012075+小学四则运算练习软件项目报告 一.需求分析 二.功能设计 三.设计实现 四.算法详解 五.测试详解 六.代码展示 七.总结 八.PSP展示 coding.net地址:https://git.coding.net/sparkleStar/arithmetic.git,代码在Main.java中 一.需求分析 1.编写目标 使用Java编程语言,独立完成一个3到5个运算符的四则运算练习的命令行软件开发. 2.基本功能需求 (1)程序可接收一个输入参数n,然后随机产生加减乘除(分

201571030133/201571030102《小学四则运算练习软件软件需求说明》结对项目报告

我的学号:201571030133 结对伙伴的学号:201571030102 结对伙伴的博文链接:http://www.cnblogs.com/yuan1229/p/8873824.html 任务一: 以实验二个人项目.实验三结对项目所开发的小学生四则运算练习软件作为原型,实施小学生四则运算练习软件用户调研活动. 1. 调研对象:小学生.小学生家长和小学老师. 2. 需求调研方法:访谈.问卷调查 .原型评估. 问卷样本链接:https://www.wjx.cn/jq/22680152.aspx