week2-结对编程【网页实现四则运算】
题目描述:
不知道大家是否尝试过这样一种开发模式:你有一个伙伴,你们坐在一起,并肩作战,面对着同一台显示器,使用着同一键盘,同一个鼠标,你们一起思考,一起分析,一起编程?这次,就让我们来体验一下结对编程的魅力!
我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:
记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
有计时功能,能显示用户开始答题后的消耗时间。
界面支持中文简体/中文繁体/英语,用户可以选择一种;
在软件开发中,我们需要大量使用工具来辅助设计,每个环节大家都要善于学习和使用工具。
任务分配:
林凯201421123075(本人)
1. 页面的设计和编程;
林俊鹏201421123076(队友):
1. 页面的设计和编程,后端java程序;


package myapp;
import java.util.Random;
import java.util.Scanner;
import javax.swing.plaf.synth.SynthSpinnerUI;
public class Arithmetic {
String question;
String answer;
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
}
static String oper1(char op,int integer,int numerator,int denominator)//整数和分数的运算
{
String rst;
int temp1 = 0;
if(op=='+')
{
return rst=((integer*denominator+numerator)+"")+'/'+(denominator+"");
}
if(op=='-')
{
return rst=((integer*denominator-numerator)+"")+'/'+(denominator+"");
}
if(op=='*')
{
for(int i=2;(integer*numerator)>=i;i++)
if((integer*numerator)%i==0 && denominator%i==0)
{
temp1=(integer*numerator);
temp1/=i;
denominator/=i;
i--;
}
return rst=(temp1+"")+'/'+(denominator+"");
}
if(op=='÷')
{
for(int i=2;(integer*denominator)>=i;i++)
if((integer*denominator)%i==0 && numerator%i==0)
{
temp1= integer*denominator;
temp1/=i;
numerator/=i;
i--;
}
return rst=temp1+""+'/'+numerator+"";
}
return null;
}
static String oper2(char op,int integer1,int integer2)//整数和整数的运算
{
String rst;
if(op=='+')
{
return rst = (integer1 + integer2)+"";
}
if(op=='-')
{
return rst = (integer1 - integer2)+"";
}
if(op=='*')
{
return rst = (integer1 * integer2)+"";
}
if(op=='÷')
{
for(int i=2;integer1>=i;i++)
if(integer1%i==0 && integer2%i==0)
{
integer1/=i;
integer2/=i;
i--;
}
return rst = (integer1) +"" + '/' + (integer2)+"";
}
return null;
}
static String oper3(char op,int numerator1,int denominator1,int numerator2,int denominator2)//分数和分数的运算
{
String rst;
int temp1,temp2;
if(op=='+')
{
temp1 = numerator1 * denominator2 + numerator2 * denominator1;
temp2 = denominator1 * denominator2;
for(int i=2;temp1>=i;i++)
if(temp1%i==0 && temp2%i==0)
{
temp1/=i;
temp2/=i;
i--;
}
return rst=(temp1)+""+'/'+(temp2)+"";
}
if(op=='-')
{
temp1 = numerator1 * denominator2 - numerator2 * denominator1;
temp2 = denominator1 * denominator2;
for(int i=2;temp2>=i;i++)
if(temp1%i==0 && temp2%i==0)
{
temp1/=i;
temp2/=i;
i--;
}
return rst=(temp1)+""+'/'+(temp2)+"";
}
if(op=='*')
{
temp1 = numerator1 * numerator2;
temp2 = denominator1 * denominator2;
for(int i=2;temp1>=i;i++)
if(temp1%i==0 && temp2%i==0)
{
temp1/=i;
temp2/=i;
i--;
}
return rst=(temp1)+""+'/'+(temp2)+"";
}
if(op=='÷')
{
temp1 = numerator1 * denominator2;
temp2 = denominator1 * numerator2;
for(int i=2;temp1>=i;i++)
if(temp1%i==0 && temp2%i==0)
{
temp1/=i;
temp2/=i;
i--;
}
return rst=(temp1)+""+'/'+(temp2)+"";
}
return null;
}
public static Arithmetic getArithmetic(){
Arithmetic arithmetic = new Arithmetic();
int max=20;
int min=1;
int n;//题目数量
char operation[]={'+','-','*','÷'}; //定义运算符号
int operand[]={1,2,3,4};//1,2为整数和整数运算;3为整数和分数运算;4为分数和分数运算;
Random random = new Random();
int integer1 = random.nextInt(max)%(max-min+1) + min;
int integer2 = random.nextInt(max)%(max-min+1) + min;
int numerator1 = random.nextInt(max)%(max-min+1) + min;
int denominator1 = random.nextInt(max)%(max-min+1) + min;
int numerator2 = random.nextInt(max)%(max-min+1) + min;
int denominator2 = random.nextInt(max)%(max-min+1) + min;
char tempoperation = operation[random.nextInt(4)%(4)];
int tempoperand = operand[random.nextInt(4)%(4)];
String question ="";
String answer = "";
if(tempoperand == 1 || tempoperand == 2){//整数和整数
question = integer1+""+tempoperation+integer2+"=";
answer = oper2(tempoperation,integer1,integer2);
}
if(tempoperand == 3){ //整数和分数
question = integer1+""+ tempoperation + numerator1+"/"+denominator1+"=";
answer = oper1(tempoperation,integer1,numerator1,denominator1);
}
if(tempoperand == 4){ //分数和分数
question = numerator1+"/"+denominator1 + "" + tempoperation + numerator2+"/"+denominator2+"=";
answer = oper3(tempoperation,numerator1,denominator1,numerator2,denominator2);
}
arithmetic.question=question;
arithmetic.answer = answer;
return arithmetic;
}
@Override
public String toString() {
return question + answer ;
}
public static void main(String[] args) {
System.out.println(getArithmetic());
}
}
结果显示:


码市地址:https://git.oschina.net/linjunp/lab2-atithmeticGUI
PSP:

总结:
此次是第一次结对作业,在我们的共同努力下,总算是如期完成了。结对编程能提供更好的设计质量和代码质量,两人合作能有更强的解决问题的能力。二人合作能互相督促避免时间浪费。1+1未必大于二,两个人只产出一份代码,时间效率上会降低,结对能更有效地交流,相互学习和传递经验。因为一个人的知识已经被其他人共享。

week2-结对编程【网页实现四则运算】的更多相关文章
- 结对编程项目报告--四则运算CORE
<!doctype html> sw_lab2.mdhtml {overflow-x: initial !important;}#write, body { height: auto; } ...
- 2017-2018-2 165X 『Java程序设计』课程 结对编程练习_四则运算
2017-2018-2 165X 『Java程序设计』课程 结对编程练习_四则运算 经过第一阶段的学习,同学们已经熟悉了这门语言基本的用法.在一次又一次对着电脑编写并提交代码,进行练习的时候,有没有觉 ...
- 20175312 2018-2019-2 《Java程序设计》结对编程练习_四则运算(第二周:整体性总结)
20175312 2018-2019-2 <Java程序设计>结对编程练习_四则运算(第二周:整体性总结) 结对对象与其博客链接 20175309 刘雨恒:https://www.cnbl ...
- 20175312 2018-2019-2 《Java程序设计》结对编程练习_四则运算(第一周:阶段性总结)
20175312 2018-2019-2 <Java程序设计>结对编程练习_四则运算(第一周:阶段性总结) 结对对象与其博客链接 20175309 刘雨恒:https://www.cnbl ...
- 20175208『Java程序设计』课程 结对编程练习_四则运算
20175208 结对编程练习_四则运算(第一周) 结对成员:20175208张家华,20175202葛旭阳 一.需求分析: 实现一个命令行程序,要求: (1)自动生成指定数量的小学四则运算题目(加. ...
- 2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周
2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周 博客要求 组内同学需各自发表博客 博客中需包含以下内容: 相关过程截图 关键代码解释 遇到的困难及解决 ...
- 2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算_第三周
2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算 组队成员: 仇夏 学号: 20172310 博客地址: @王志伟 四则运算第一周博客 @仇夏四则运算第一周博客 ...
- 2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算——第一周
2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算 组队成员: 仇夏 学号: 20172310 博客地址:点击这里 1. 需求分析: 可生成题目: - 输入要想生成 ...
- 2017-2018-2 20165225『Java程序设计』课程 结对编程练习_四则运算
2017-2018-2 20165225『Java程序设计』课程 结对编程练习_四则运算 需求分析: 支持整数,可进行多运算符运算,有优先级. 设计思路: 在有括号的情况下,先计算得出括号中的结果,如 ...
- 20165236 2017-2018-2 《Java程序设计》结对编程练习_四则运算
20165236 2017-2018-2 <Java程序设计>结对编程练习_四则运算 结对小组:叶佺.郭金涛 一.需求分析: 1.能随机生成n道四则运算题目,n由使用者输入: 2.支持多种 ...
随机推荐
- 设计模式-前摄器模式(Proactor)
本周要进行boost asio库的学习,在学习之前发现最好需要先了解一下前摄器模式,这样对asio库的理解很有帮助,故写下此文 我之前写的随笔XShell的模拟实现中的链接方式可以说是同步的(服务器阻 ...
- 【HTTP权威指南】第1 章 HTTP 概述
1.1 HTTP--因特网的多媒体信使 ................................................................................ ...
- ASP.NET Core - Razor页面之Handlers处理方法
简介 在前一篇文章中,我们讨论了Razor页面.今天我们来谈谈处理方法(Handlers). 我们知道可以将代码和模型放在 .cshtml 文件里面或与 .cshtml 匹配的 .cshtml.cs ...
- Jmeter 参数化请求实例
Jmeter 参数化请求实例 在jmeter中的请求可以参数化,其中参数化的方式有4种: 1.CSV Data Set Config 2.数据库 3.用户自定义变量 4.用jmeter中的函数获取参数 ...
- 采药 NOIP 2005 普及组
题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:" ...
- [js高手之路] vue系列教程 - 组件定义与使用上部(7)
组件是vue框架比较核心的内容,那么什么是组件呢? 通俗点讲:组件是由一堆html, css, javascript组成的代码片段, 作用是为了实现模块的重用 组件的基本用法: <div id= ...
- %appdata%目录下配置文件修改
%appdata%目录下配置文件修改 1.假设%appdata%\leez Program目录下有Cache子目录和配置文件Config.ini内容为: [Version] Version=1.0.0 ...
- 使用VS Code开发调试.NET Core 2.0
使用VS Code 从零开始开发调试.NET Core 2.0.无需安装VS 2017 15.3+即可开发调试.NET Core 2.0应用. VS Code 全称是 Visual Studio Co ...
- EXT.NET复杂布局(二)——报表
前面提到过工作台(<EXT.NET复杂布局(一)--工作台>)了,不知道各位看过之后有什么感想.这次就介绍介绍使用EXT.NET画几个报表. 看图写作从小学就开始了,如图: 图一 图二 图 ...
- ffmpeg音频播放代码示例-avcodec_decode_audio4
一.概述 最近在学习ffmpeg解码的内容,参考了官方的教程http://dranger.com/ffmpeg/tutorial03.html,结果发现这个音频解码的教程有点问题.参考了各种博客,并同 ...