我的学号:201571030104
小伙伴的学号:201571030109
实验要求
软件基本功能要求如下:
在《实验二 软件工程个人项目》中,同学们实现了一个命令行四则运算出题小程序,本次实验采用结对编程方式,设计开发一个小学生四则运算练习软件,使之具有以下功能:
(1)由计算机从题库文件中随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计5分,错误不计分,20道题测试结束后给出测试总分;
(2)题库文件可采用实验二的方式自动生成,也可以手工编辑生成,文本格式如下:
(3)程序为用户提供三种进阶四则运算练习功能选择:百以内整数算式(必做)、带括号算式、真分数算式练习;
(4)程序允许用户进行多轮测试,提供用户多轮测试分数柱状图,示例如下:
(5)程序记录用户答题结果,当程序退出再启动的时候,可为用户显示最后一次测试的结果,并询问用户可否进行新一轮的测试;
(6)测试有计时功能,测试时动态显示用户开始答题后的消耗时间。
(7)程序人机交互界面是GUI界面(WEB页面、APP页面都可),界面支持中文简体(必做)/中文繁体/英语,用户可以进行语种选择。
1、需求分析
该项目要求程序有人机交互界面,且可评判成绩。可为用户提供百以内整数算式、带括号算式、真分数算式三种练习,可为进行多轮测试并记录成绩生成柱状图并且记录用户消耗的时间。
2、功能分析
可实现基本要求,即可生成数字在 0 和 100 之间,运算符在3个到5个之间的计算表达式,并计算出表达式的结果
随机可生成带括号的运算式,括号不会超过运算符的个数
生成真分数的四则运算
有用户界面,可进行多轮测试
记录测试结果,并将以往成绩以柱状图展示
测试时,记录用户的测试用时
3、设计实现
4、运行测试
设计交互界面,首页登陆,登录用户名“admin”,密码123456。
答题界面
答题完毕后,可以点击保存练习过的题目(包括自己答题的答案)
答题结束后,可以查看自己得分情况(具体的用一个柱状统计图展示)
5、核心代码
登录界面
1 public classLogin {2
3 publicLogin()4 {5 JFrame f=newJFrame();6 f.setTitle("小学生四则运算答题系统");7 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);8 f.setExtendedState(JFrame.MAXIMIZED_BOTH);9 f.setVisible(true);10
11 //设置窗口的大小和位置
12 f.setSize(500,500);13 f.setLocation(200,200);14
15 Container con=f.getContentPane();//生成一个容器
16 con.setLayout(new GridLayout(7,1));17
18 JPanel pan1 =newJPanel();19 JLabel title=new JLabel("欢迎登陆小学生四则运算答题系统");20 title.setFont(new Font("宋体",Font.BOLD, 20));21 pan1.add(title);22 con.add(pan1);23 //生成一个新的版
24 JPanel pan2 = newJPanel();25 JPanel pan3 = newJPanel();26 JPanel pan4 = newJPanel();27 JPanel pan5 = newJPanel();28
29 con.add(pan2);30 con.add(pan3);31 con.add(pan4);32 con.add(pan5);33
34 JLabel name=new JLabel("用户名");35 pan2.add(name);36 TextField tf_name=new TextField(20);37 pan2.add(tf_name);38
39 JLabel pass = new JLabel("密码");40 pan3.add(pass);41 TextField password=new TextField(20);42 password.setEchoChar('*');43 pan3.add(password);44
45 JButton b_log=new JButton("登陆");46 b_log.addActionListener(newActionListener() {47 public voidactionPerformed(ActionEvent e) {48 //TODO Auto-generated method stub49 //获取用户名和密码,进行校验
50 String myUsername=tf_name.getText();51 String myPassword=password.getText();52 if(myUsername.equals("admin")&& myPassword.equals("123456")){53 JOptionPane.showMessageDialog(null, "登陆成功!");54 f.dispose();55 MyExGUI ui = newMyExGUI();56
57 }58 else{59 JOptionPane.showMessageDialog(null, "账号或密码错误!");60 name.setText( "");61 password.setText( "");62 }63<