本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213

github地址为:https://github.com/LinsenLiang/Aika/tree/master/fourFundamentalRules

一、从个人项目出发,将程序改造成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:

  • 自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。
  • 用户可以输入答案

二、下面附有 8 个相互独立的可以扩展的方向。  

  1. 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3
  2. 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
  3. 用户答题结束以后,程序可以显示用户答题所用的时间
  4. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
  5. 用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名
  6. 程序可以出单个整数阶乘的题目:如:4!=24
  7. 程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。
  8. 程序可以设置皮肤功能,可以改变界面的颜色即可。

三、同学两两结对,每对学生选取 8 个可扩展方向的其中4个加以实现。

1.拓展方向

    • 2.可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号,如: 2*(-4) = -8。
    • 4.用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数。
    • 6.程序可以出单个整数阶乘的题目:如:4!=24。
    • 8.程序可以设置皮肤功能,可以改变界面的颜色即可。

2.结对伙伴

201606120016  陈泽诚  博客地址:https://www.cnblogs.com/StuCzc/p/9827520.html

3.开发环境

IntelliJ IDEA 2018.2.2

四、估计实现所需时间,记录结对编程时间,并写在博客中。

PSP2.1 Personal Software Process Stages Time Senior Student(h) Time(h)
Planning 计划 24 36
· Estimate 估计这个任务需要多少时间 10 12
Development 开发 10 12
· Analysis 需求分析 (包括学习新技术) 1 2
· Design Spec 生成设计文档 1 1
· Design Review 设计复审 1 1
· Coding Standard 代码规范 1 1
· Design 具体设计 1 2
· Coding 具体编码 1 2
· Code Review 代码复审 1 1
· Test 测试(自我测试,修改代码,提交修改) 1 1
Reporting 报告 1 1
· 测试报告 1 1
· 计算工作量 1

1

· 并提出过程改进计划 1

1

五、主要代码及运行截图

1.可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号,如: 2*(-4) = -8。

 public void test() {
Random rand = new Random();
num1 = rand.nextInt() % 99 + 1;
num2 = rand.nextInt() % 99 + 1;
num3 = rand.nextInt() % 99 + 1;
op1 = (int) (Math.random() * 4 + 1);
op2 = (int) (Math.random() * 4 + 1);
String str_num1 = String.valueOf(num1);
String str_num2 = String.valueOf(num2);
String str_num3 = String.valueOf(num3);
if (num1 < 0) {
str_num1 = String.valueOf("(" + num1 + ")");
}
if (num2 < 0) {
str_num2 = String.valueOf("(" + num2 + ")");
}
if (num3 < 0) {
str_num3 = String.valueOf("(" + num3 + ")");
}

2.用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数。

     public void actionPerformed(ActionEvent e) {
if (e.getSource() == T_inputText) {
right = 0;
wrong = 0;
L_info_pr.setText("");
T_answerText.setText("");
String str_num = T_inputText.getText();
boolean isNumeric = isNumeric(str_num);
if (isNumeric) {
number = Integer.parseInt(str_num);
n = number;
if (number > 0 && number <= 5) {
L_test.setText("题目1:");
test(); } else {
L_info_pr.setText("请输入1~5的值!");
}
} else {
L_info_pr.setText("输入含有非法字符,请重新输入!");
}
}

主界面

主要运行效果

统计结果

换肤功能

阶乘运算功能

 

六、总结体会

和队友已不是第一次合作,分工明确,加上这次的分工相对独立,代码整合也比较容易。这个项目综合了以前的很多知识,并且是在上次项目基础上完成的,开始就有了较为清晰的思路。四个拓展方向算是基本实现,但整个项目还是有不少的瑕疵。尤其是对用户输入答案的检测方面,用JAVA自带的boolean isNumeric()函数进行检测,不能识别“-”号即不能输入负数。

结对项目-四则运算"软件"之升级版的更多相关文章

  1. 结对项目——四则运算GUI项目

    一.项目地址:https://git.coding.net/lvgx/wsz.git 二.PSP: PSP2.1 任务内容 计划共完成需要的时间(min) 实际完成需要的时间(min) Plannin ...

  2. 结对项目-四则运算出题程序(GUI版)

    目录: 一.致搭档(含项目地址) 二.PSP(planning) 三.结对编程中对接口的设计 四.计算模块接口的设计与实现过程 五.计算模块接口部分的性能改进 六.计算模块部分单元测试展示 七.计算模 ...

  3. 结对项目:四则运算题目生成器(Java)

    目录 一.需求分析 二.开发计划 三.实现方案 3.1 项目结构 3.2 代码说明 3.2.1 出题功能代码 3.2.3 批卷功能代码 3.2.3 四则运算功能代码 四.效能分析 4.1 程序效能 4 ...

  4. 结对编程项目——四则运算vs版

    结对编程项目--四则运算vs版 1)小伙伴信息:        学号:130201238 赵莹        博客地址:点我进入 小伙伴的博客 2)实现的功能: 实现带有用户界面的四则运算:将原只能在 ...

  5. 高级软件工程2017第3次作业——结对项目:四则运算题目生成程序(基于GUI)

    Deadline:2017-10-11(周三)21:00pm (注:以下内容参考集大作业 ) 前言 想过和别人一起探索世界吗?多么希望,遇到困难时,有人能一起探讨:想要懈怠时,有人推你一把:当你专注于 ...

  6. 20175324王陈峤宇 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结

    20175324王陈峤宇 2018-2019-2<Java程序设计>结对编程项目-四则运算 第一周 阶段性总结 需求分析 这次的结对作业是要求我们利用栈来设计一个计算器. 自动生成四则运算 ...

  7. 20175229许钰玮 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结

    20175229许钰玮 2018-2019-2<Java程序设计>结对编程项目-四则运算 第一周 阶段性总结 需求分析 自动生成四则运算题目(加.减.乘.除). 既可以用前缀算法(波兰算法 ...

  8. 20175311胡济栋 2018-2019-2《Java程序设计》结对编程项目-四则运算 第二周 阶段性总结

    20175311胡济栋 2018-2019-2<Java程序设计>结对编程项目-四则运算 第二周 阶段性总结 需求分析 这是利用栈来设计一个计算器的第二阶段总结. 自动生成四则运算的题目( ...

  9. 2018-2019-2 《Java程序设计》结对项目阶段总结《四则运算——整数》(二)

    20175218 2018-2019-2 <Java程序设计>结对项目阶段总结<四则运算--整数> 一.需求分析 实现一个命令行程序,要求: 自动生成小学四则运算题目(加,减, ...

随机推荐

  1. linux下应用程序性能剖分神器gprofiler-tools-安装和使用

    最近在摆弄算法的的优化,需要剖分一下算法的瓶颈,就找了一些代码剖分工具,其中 gprofileer-tools是很不错的工具,gperftools时google开源的一款C++性能分析分析工具,git ...

  2. 机器学习技法笔记:05 Kernel Logistic Regression

    Roadmap Soft-Margin SVM as Regularized Model SVM versus Logistic Regression SVM for Soft Binary Clas ...

  3. 机器学习基石笔记:13 Hazard of Overfitting

    泛化能力差和过拟合: 引起过拟合的原因: 1)过度VC维(模型复杂度高)------确定性噪声: 2)随机噪声: 3)有限的样本数量N. 具体实验来看模型复杂度Qf/确定性噪声.随机噪声sigma2. ...

  4. HoloLens开发手记 - 手势输入 Gesture input

    手势是HoloLens三个首要输入形式之一.一旦你使用凝视定位了一个全息图像,手势允许你与它交互.手势输入允许你使用手或者点击器原生地与全息图像交互. 手势之外,你也可以在应用中使用语音输入来交互. ...

  5. js中break、continue和return的一般用法总结

    break break :终止break的整个循环体,包括内部所有循环.但对循环体外部的循环不影响. for(let i = 0;i<2;i++){ for(let j = 0;j<2;j ...

  6. tomcat-四种运行模式和三种部署模式(优化)

    四中运行模式如下: 1-bio: 传统的Java I/O操作,同步且阻塞IO. 2-nio: JDK1.4开始支持,同步阻塞或同步非阻塞IO 3-aio(nio.2): JDK7开始支持,异步非阻塞I ...

  7. 利用history.pushState()实现页面无刷新更新

    本来是在研究vue-router如何记录滚动位置,点返回的时候还是回到原来的位置,看到有人说的history.state存了一个值,才把history研究一下,发现 history.pushState ...

  8. 如何把checkbox做成radio一样的单选效果

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>复 ...

  9. 从零开始学 Web 之 Ajax(七)跨域

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  10. Go语言程序结构分析初探

    每一种编程语言都有自己的语法.结构以及自己的风格,这也是每种语言展现各自魅力及众不同的地方.Go也不例外,它简单而优雅,与此同时使用起来也很有趣.在本文中,我们将讨论以下几点: Go程序结构 如何运行 ...