结对作业-基于GUI的四则运算
一、需求分析
1、题目要求:
我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:
记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
有计时功能,能显示用户开始答题后的消耗时间。
界面支持中文简体/中文繁体/英语,用户可以选择一种;
2、题目分析:
(1)支持真分数和整数的运算;
(2)能够判断对错,且输出正确答案;能够计算正确率并输出;
(3)将程序弄成GUI;
(4)可切换语言,界面支持中文简体/中文繁体/英语,用户可以选择一种;
(5)计时器功能,点击开始计时时,能显示用户开始答题后的消耗时间;
3、分工
此次程序设计由l吴伟君(201421123080)和我(201221123032)一起完成
我的码云地址:https://git.oschina.net/junge212/Arithmetic_java/tree/master
二、 程序设计
我们选择设计了两个功能:
1、计时器功能,点击开始计时时,能显示用户开始答题后的消耗时间;
2、可切换语言,界面支持中文简体/中文繁体/英语,用户可以选择一种;
流程图:
三、代码展示
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;public class Arithmetic {public static void main(String[] args){MathF math = new MathF();math.show();}
}
class MathF extends JFrame{public MathF(){Container contentPane = getContentPane();final Panel panel = new Panel();contentPane.add(panel);//contentPane.add(label);setSize(500,500);setTitle("四则运算");setResizable(false);setLocation(0,0);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);panel.setCursor(new Cursor(Cursor.HAND_CURSOR));JMenuBar menuBar = new JMenuBar();JMenu menuSet=new JMenu("设置");JMenu menuOut=new JMenu("退出");JMenuItem TISHU = new JMenuItem("题数"); JMenuItem NANDU = new JMenuItem("难度");JMenuItem YUYAN = new JMenuItem("语言");JMenuItem TUICHU = new JMenuItem("退出");menuBar.add(menuSet);menuSet.add(TISHU);TISHU.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ String i1 = JOptionPane.showInputDialog(null, "请输入你需要的题目数:\n", "题目数",JOptionPane.QUESTION_MESSAGE); int count = Integer.parseInt(i1);panel.SUIJI(count);} });menuSet.add(NANDU);menuSet.add(YUYAN);menuSet.add(TUICHU);TUICHU.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ int i1 = JOptionPane.showConfirmDialog(null,"是否退出?","提示:",JOptionPane.YES_NO_OPTION); if(i1==JOptionPane.OK_OPTION){System.exit(0); }else{String z = "请继续!";JOptionPane.showMessageDialog(null, z);} } });this.setJMenuBar(menuBar);}
}class Panel extends JPanel{//int result;static int score = 0;JButton BUTTON = new JButton(); //提交按钮 触发事件JLabel SCORE = new JLabel();//准确率JLabel OUT = new JLabel();//退出ArrayList<JTextField> answer=new ArrayList<>();public Panel(){ //printf("正确率为:%lf",score*1.0/count);//this.add(SCORE);//this.add(BUTTON);BUTTON.setLocation(100,100);}public void SUIJI(int count){int SUIJI;// printf("请输入题目数?");//scanf("%d",&count);String s1,s2=null;for(int i=0;i<count;i++){SUIJI = new Random().nextInt(2);if(SUIJI==0){s2=this.zhengshu();}else{s2=this.fenshu();}s1=answer.get(i).getText();System.out.println(s1);if(s1.equals(s2)){score ++ ;}}this.add(BUTTON);this.add(SCORE);BUTTON.setText("\r提交");//this.add(OUT);BUTTON.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){SCORE.setText("正确率:"+score/count);}}); }public String zhengshu(){String result=new String();int left = new Random().nextInt(9) + 1;int mid = new Random().nextInt(4);int right = new Random().nextInt(9) + 1;JLabel XIANSHI1 = new JLabel();JLabel XIANSHI2 = new JLabel();JLabel XIANSHI3 = new JLabel();//JButton TIJIAO = new JButton();JTextField SHURU = new JTextField(10);String s2 =null;this.add(XIANSHI1);this.add(XIANSHI2);this.add(XIANSHI3);//this.add(TIJIAO);//this.add(BUTTON);this.add(SHURU);answer.add(SHURU);//is.setLayout(null);XIANSHI1.setText(" "+left+" ");switch(mid){case(0):result=left+right+"";XIANSHI2.setText(" + ");break;case(1):result=left-right+"";XIANSHI2.setText(" - ");break;case(2):result=left*right+"";XIANSHI2.setText(" * ");break;case(3):result=left/right+"";XIANSHI2.setText(" / ");break;}XIANSHI3.setText(" "+right+" = ");System.out.println(left+" " +mid+" "+right +result);return result;}public String fenshu(){int left_x,left_y,mid,right_x,right_y,x = 0,y = 0,GYS;do{left_x = new Random().nextInt(9) + 1;left_y = new Random().nextInt(9) + 1;mid = new Random().nextInt(4) ;right_x = new Random().nextInt(9) + 1;right_y = new Random().nextInt(9) + 1;}while(!(left_x<left_y&&right_x<right_y));JLabel XIANSHI1 = new JLabel();JLabel XIANSHI2 = new JLabel();JLabel XIANSHI3 = new JLabel();//JLabel TIJIAO = new JLabel();JTextField SHURU = new JTextField(10);String s1 = SHURU.getText();String s2 ="";this.add(XIANSHI1);this.add(XIANSHI2);this.add(XIANSHI3);//this.add(TIJIAO);//this.add(BUTTON);this.add(SHURU);answer.add(SHURU);//is.setLayout(null);XIANSHI1.setText(" "+left_x+"/"+left_y);switch(mid){case(0):x=left_x*right_y+left_y*right_x;y=left_y*right_y;GYS=gcd(x,y);x=x/GYS;y=y/GYS;s2 = x +"/" +y;XIANSHI2.setText(" + ");break;case(1):x=left_x*right_y-left_y*right_x;y=left_y*right_y; GYS=gcd(x,y);x=x/GYS;y=y/GYS; s2 = x +"/" +y;XIANSHI2.setText(" - ");break;case(2):x=left_x*right_x;y=left_y*right_y;GYS=gcd(x,y);x=x/GYS;y=y/GYS;s2 = x +"/" +y;XIANSHI2.setText(" * ");break;case(3):x=left_x*right_y;y=left_y*right_x;GYS=gcd(x,y);x=x/GYS;y=y/GYS;s2 = x +"/" +y;XIANSHI2.setText(" / ");break;}System.out.println(left_x+"/"+left_y +" "+mid+" "+right_x+"/"+right_y+"="+x +"/" +y);XIANSHI3.setText(" "+right_x+"/"+right_y+" = ");return s2;}private int gcd(int x, int y) {int r;r=x%y;while(r!=0){x=y;y=r;r=x%y;}return y;}
}
四、程序运行
五 psp
六 小结
这次的实验是对上次实验的功能的一种完善,升级,本次要求把这个程序做成GUI。我和刘光华同学做该项目的时候由于基础不扎实,在GUI的方面花费了大量时间,导致我们的程序没能完成原先设计的许多功能,包括计时器功能,中英转换,唯有一个GUI的基本框架,能够显示用户所需的数量的题目,但是输入的答案没能传入和正确答案比较,目前还在寻找解决方案。
转载于:https://www.cnblogs.com/212junge/p/6552993.html
结对作业-基于GUI的四则运算相关推荐
- 结队编程-基于gui的四则运算生成器
成员:卢少锐 201421123027.刘存201421033023 coding.net地址 1.需求分析:除了实现四则运算的功能外,还添加了计时器功能和语言选择功能 2.程序设计:这次作业是基于上 ...
- 结对作业2——自动生成四则运算
一. 选择题目 我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求: 能够自动生成四则运算练习题 可以定制题目数量 用户可以选择运算符 用户设置最大数(如十以内.百以内等) ...
- Matlab大作业-基于GUI制作图像处理工具箱
目录 MATLAB的GUI界面设计: MATLAB通过资源管理器导入图片: MATLAB GUI通过文件管理器保存图片: MATLAB利用摄像头进行截图抓拍并导入: 滤波器部分: 判断图像是否已经灰度 ...
- 四则运算之结对作业报告
一.项目Coding.net原码仓库地址:https://git.coding.net/caoying/Teamwork.git 曹滢2016012102 卢琪2016011986 二 ...
- 软件工程结对作业 四则运算界面设计
软件工程结对作业 四则运算器界面设计 康鑫 PB16060203 娄雨禛 PB16060356 项目内容链接:http://www.cnblogs.com/silent-zlv/p/8684979 ...
- 结对作业项目报告——四则运算UI设计(UI第一组 PB16120211 章豪 PB16151063 吴宏宇)...
一.项目要求 UI要求: 这是交付给最终用户的软件,有一定的界面和必要的辅助功能.完成Windows和Linux电脑图形界面的程序,需实现以下功能: 对上述各属性参数(生成题目的数量,操作数的数量,题 ...
- 软件工程实践结对作业一
这个作业属于哪个课程 <2022年福大-软件工程.实践-W班> 这个作业要求在哪里 <软件工程实践结对作业一> 这个作业的目标 <结对合作,NABCD模型,需求分析,原型 ...
- 嵌入式系统大作业——基于QT的3D模型展示
嵌入式系统大作业--基于QT的3D模型展示 写在前面 实验设备 实现内容 实现过程 在win10上利用SolidWorks软件对模型进行预处理: 编写代码实现功能: 效果演示 参考资料 写在前面 该大 ...
- 两个小可爱的结对作业(司佳宇,雷镓)
两个小可爱滴结对作业(司佳宇,雷镓) 题目要求 我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求: 能够自动生成四则运算练习题 可以定制题目数量 用户可以选择运算符 用户 ...
- 合肥工业大学宣城校区Java技术实验二 基于GUI的网络通信程序设计
一.实验目的 1.掌握Java中GUI程序的编写,包括事件监听机制. 2.掌握Java的网络通信编程,ServerSocket,Socket类的使用. 3.掌握Java中多线程的编程,Thread类, ...
最新文章
- android 通过GPS获取用户地理位置并监听位置变化
- python 文件操作 os.path.join(path, *paths) 路径合成(追加)
- 系列博文-Three.js入门指南(张雯莉)-静态demo和three.js功能概览
- RocketMQ消息重试机制
- 第一次去四川的广东人是什么下场?
- 在服务器上搭建基于yolo3 与crnn 实现中文自然场景文字检测及识别,GPU版本
- Ethercat解析(八)之主站运行阶段
- 3gpp协议_春天工作室lt;3GPP规范翻译系列gt;1:TS37340协议翻译(导读)第一部分...
- React 开发常见报错解决方法
- 买动狐Tecohoo视频会议设备,送视频会议系统
- Visual studio code清除终端数据
- blender中常用快捷键的总结
- NiFi+Kylo安装部署
- 各层电子数排布规则_原子核外电子排布规则
- mac如何挂载移动硬盘、U盘
- 福禄克FLUKE OFP-200-S-MOD/OFP-200-S1490-MOD/OFP-200-S1625-MOD/OptiFiber Pro高动态范围模块
- Win7系统C盘空间太小怎么扩容【系统天地】
- 字节跳动移动架构师学习笔记,Android篇
- 决策树与R语言(RPART)
- WinHTTP 会话概览