结对编程1----基于java的四则运算生成器
小组成员:王震(201421123054)、王杰(201421123055)
Coding地址:https://git.coding.net/a506504661/sssss.git
一、题目描述
我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:
- 记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
- 有计时功能,能显示用户开始答题后的消耗时间。
- 界面支持中文简体/中文繁体/英语,用户可以选择一种;
二、需求分析
1.有计时功能:在答题结束时,能够显示用户答题所用时间。
2.有语言切换功能:界面可以支持中文简体、中文繁体、英语的切换
3.有相应的界面区域以及按钮等。
三、程序设计
主要流程图:
四则运算Calculator类:
GUI类:
四、代码展示
四则运算实现相关代码:
加法
Calculator add(Calculator r){ // 加法运算 int a = r.getNumerator(); int b = r.getDenominator(); int newNumerator = numerator * b + denominator * a; int newDenominator = denominator * b; Calculator result = new Calculator(newNumerator,newDenominator); return result; }
减法
Calculator sub(Calculator r){ // 减法运算 int a = r.getNumerator(); int b = r.getDenominator(); int newNumerator = numerator * b - denominator * a; int newDenominator = denominator * b; Calculator result = new Calculator(newNumerator,newDenominator); return result; }
乘法
Calculator muti(Calculator r){ // 乘法运算 int a = r.getNumerator(); int b = r.getDenominator(); int newNumerator = numerator * a; int newDenominator = denominator * b; Calculator result = new Calculator(newNumerator,newDenominator); return result; }
除法
Calculator div(Calculator r){ // 除法运算 int a = r.getNumerator(); int b = r.getDenominator(); int newNumerator = numerator * b; int newDenominator = denominator * a; Calculator result = new Calculator(newNumerator,newDenominator); return result; }
分数
int numerator; // 分子 int denominator; // 分母 void setNumeratorAndDenominator(int a, int b){ // 设置分子和分母 int c = f(Math.abs(a),Math.abs(b)); // 计算最大公约数 numerator = a / c; denominator = b / c; if(numerator<0 && denominator<0){ numerator = - numerator; denominator = - denominator; } }
计时器相关代码:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { Calculator cal = new Calculator(); String h=InputField.getText(); int g = Integer.parseInt(h); String[] all={""}; all=cal.answer(); c=all[5]; jTextField1.setText("("+all[1]+")"+all[2]+"("+all[4]+")"+"="); IntputField2.setText(""); answer.setText(""); congratulations.setText(""); now=System.currentTimeMillis(); i++; }
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { over=System.currentTimeMillis(); now1=((over-now) / (1000 * 60 * 60) % 60)+":"+((over-now)/ (1000 * 60)% 60)+":"+((over-now)/ 1000 % 60); String a=now1+""; jTextField7.setText(a); }
语言选择相关代码:
jMenu1.setText("文字转换"); jMenu1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenu1ActionPerformed(evt); } }); jMenuItem2.setText("英语"); jMenuItem2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem2ActionPerformed(evt); } }); jMenu1.add(jMenuItem2); jMenu1.add(jSeparator1); jMenuItem3.setText("中文简体"); jMenuItem3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem3ActionPerformed(evt); } }); jMenu1.add(jMenuItem3); jMenuItem1.setText("中文繁体"); jMenuItem1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem1ActionPerformed(evt); } });
GUI界面相关代码:
private javax.swing.JTextField InputField; private javax.swing.JTextField IntputField2; private javax.swing.JTextField answer; private javax.swing.JTextField congratulations; private javax.swing.JTextField good; private javax.swing.JButton jButton1;//开始做题按钮 private javax.swing.JButton jButton2;//查看答案按钮 private javax.swing.JButton jButton3;//结束答题按钮 private javax.swing.JButton jButton4;//下一题按钮 private javax.swing.JLabel jLabel1;//四则运算生成器标签 private javax.swing.JLabel jLabel10;//正确答案标签 private javax.swing.JLabel jLabel2;//请输入题数标签 private javax.swing.JLabel jLabel3;//题目标签 private javax.swing.JLabel jLabel4;//下一题标签 private javax.swing.JLabel jLabel5;//你的答案是标签 private javax.swing.JLabel jLabel6;//答题数标签 private javax.swing.JLabel jLabel7;//错题数标签 private javax.swing.JLabel jLabel8;//正确率标签 private javax.swing.JLabel jLabel9;//所用时间标签 private javax.swing.JMenu jMenu1;//文字转换选择菜单 private javax.swing.JMenuBar jMenuBar1; private javax.swing.JMenuItem jMenuItem1;//中文繁体选项 private javax.swing.JMenuItem jMenuItem2;//英语选项 private javax.swing.JMenuItem jMenuItem3;//中文简体选项 private javax.swing.JPanel jPanel1;//界面格局 private javax.swing.JPopupMenu jPopupMenu1; private javax.swing.JPopupMenu jPopupMenu2; private javax.swing.JRadioButtonMenuItem jRadioButtonMenuItem1; private javax.swing.JPopupMenu.Separator jSeparator1; private javax.swing.JPopupMenu.Separator jSeparator2; private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField7; private javax.swing.JTextField mistake; private javax.swing.JTextField title1;
四、测试
开始做题:
错题
对题
结束
切换文字
五、实验小结
本次实验对于要求方面有很多问题的不懂,比如按键不匹配,错题不会累加等等,记过讨论和咨询,完成了本次结对实验,收益很多。
PSP:
|
||||||||||||||||||||||||||||||||||||||||||||||||||