一、需求分析
1、题目要求:
我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:
记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
有计时功能,能显示用户开始答题后的消耗时间。
界面支持中文简体/中文繁体/英语,用户可以选择一种;
2、题目分析:
(1)支持真分数和整数的运算;
(2)能够判断对错,且输出正确答案;能够计算正确率并输出;
(3)将程序弄成GUI;
(4)可切换语言,界面支持中文简体/中文繁体/英语,用户可以选择一种;
(5)计时器功能,点击开始计时时,能显示用户开始答题后的消耗时间;
3、分工
此次程序设计由l林晨昕(201421123033)和我(201421123035)一起完成
我的码市地址:https://coding.net/u/Belong033/p/java-second-two/git
二、 程序设计
我们选择设计了两个功能:
1、计时器功能,点击开始计时时,能显示用户开始答题后的消耗时间;
2、可切换语言,界面支持中文简体/中文繁体/英语,用户可以选择一种;
流程图:
三、代码展示
计
//计时器 private boolean isRun = false; private MyRunable myTimeRunable = new MyRunable(); private class MyRunable implements Runnable{ private int hour = 0; private int min = 0; private int sec = 0; private NumberFormat format = NumberFormat.getInstance(); private String nextSecond(){ ++sec; if(sec == 60) { ++min; sec = 0; } if(min == 60) { ++hour; min = 0; } return currentTime(); } private String currentTime(){ return format.format(hour)+":"+format.format(min)+":"+format.format(sec); } @Override public void run() { format.setMinimumIntegerDigits(2); format.setGroupingUsed(false); while(true) { if(rootPaneCheckingEnabled) { if(isRun) { nextSecond(); jLabel4.setText(currentTime()); } } try { Thread.sleep(1000); }catch (InterruptedException e) { } } } }
语言转换(以英文为例)
//创建内容面板 JPanel contentPane; //创建菜单栏组件的对象 JMenuBar jMenuBar1=new JMenuBar();//菜单条 JMenu jMenu0=new JMenu("system");//菜单 JMenuItem jMenuItem0=new JMenuItem("exit");//子菜单 JMenu jMenu1=new JMenu("The text conversion"); JMenuItem jMenuItem1=new JMenuItem("Simplified Chinese"); JMenuItem jMenuItem2=new JMenuItem("Traditional Chinese"); JMenuItem jMenuItem3=new JMenuItem("English"); JMenu jMenu2=new JMenu("Help"); JMenuItem jMenuItem4=new JMenuItem("Directions"); JLabel jLabel1=new JLabel("Please enter the number:"); JTextField jTextField1=new JTextField(); JButton jButton1=new JButton("Start the topic"); //创建构造方法
//点击文字转换下的英文 if(e.getSource()==jMenuItem3) { //创建英文的面板对象 MainFrameE MFE=new MainFrameE(); this.remove(this.getRootPane()); this.dispose(); MFE.setVisible(true); }
四、程序运行
进入四则运算系统
输入题目数量
开始做题并计时
点击确定输出正确答案和正确率计时停止
点击文字转换的繁体中文和英文
繁体:
英文:
五 psp
六 小结
这次的实验是对上次实验的功能的一种完善,升级,本次要求把这个程序做成GUI,我们的程序实现了两种功能即:(1)有计时功能,能显示用户开始答题后的消耗时间。
(2)界面支持中文简体/中文繁体/英语,用户可以选择一种;其实两个人一起完成还是可以起到互补的作用,就是有时候想法会有差异。一开始,晨昕想把计时器弄成那种一跳到做题页面时无需点击就能自动开始计时的。但是我觉得这样并不好,假如用户在答题期间有事情想要暂停,自动计时先暂停等到用户继续答题时再继续。经过我们两的商讨,最后实现能够控制开始计时的功能。以前的项目都是自己独立完成的,从来没有团队合作的经验,通过这次的实验,学会了怎样与人合作。包括有冲突时应该怎样与队友协商解决问题。代码的部分完成的还并不好,编程的过程中碰见了许多问题。我们通过查找资料请教同学一一去解决。但是当功能可以实现时,还是很兴奋的。附上丑照一张,哈哈!