一、项目源码

Github的仓库主页链接地址:https://github.com/LilyFuEnLi/Arithmetic_SE.git

 

二、项目报告

1. 需求分析

(1)由计算机从题库文件中随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计5分,错误不计分,20道题测试结束后给出测试总分;

(2)题库文件可采用实验二(详细内容请查看上一篇博客)的方式自动生成,文本格式如图1所示;

201571030108/201571030112《小学四则运算练习软件》结对项目报告

201571030108/201571030112《小学四则运算练习软件》结对项目报告

 

 

 

                             

                  图 1                                                                                                                                                                               图 2

(3)程序为用户提供三种进阶四则运算练习功能选择:百以内整数算式、带括号算式、真分数算式练习;

(4)程序允许用户进行多轮测试,提供用户多轮测试分数柱状图,如图2所示;

(5)程序记录用户答题结果,当程序退出再启动的时候,可为用户显示最后一次测试的结果,并询问用户可否进行新一轮的测试;

(6)测试有计时功能,测试时动态显示用户开始答题后的消耗时间;

(7)程序人机交互界面是GUI界面(WEB页面、APP页面都可),界面支持中文简体/中文繁体/英语,用户可以进行语种选择。

2.  软件设计

(1)程序设计图如下所示:

201571030108/201571030112《小学四则运算练习软件》结对项目报告

(2)类图如下图所示:

 201571030108/201571030112《小学四则运算练习软件》结对项目报告

 

(1)Main( )类:主函数类,弹出登录窗口界面;

(2)Start( )类:产生答题窗口类,利用按钮监听器接口,存储学生答案,显示结果,进行对比分析等操作。

(3)Calculate_SE()类:运算式产生类,结合上次作业,产生整数运算式、分数运算式文件。

(4)Timer()类:包含内部类Timer.CountingThread()类,产生计时窗口。

(5)Chart_H( )类:绘制成绩柱状图。

3.  核心功能代码展示

(1) 答题界面的监听器方法部分代码

 1         //---------------------------------------整数-------------------------
 2         JRadioButton buttonInteger=new JRadioButton("整数");//JRadioButton
 3         buttonInteger.addItemListener(new ItemListener() {
 4             public void itemStateChanged(ItemEvent arg0) {
 5                 frame2.pack();    
 6                 frame2.setVisible(true);  
 7                 try {
 8                     CA.calaulate_AE(40);
 9                 } catch (IOException e) {
10                     e.printStackTrace();
11                 }
12                 String shizi = CA.IntegerQ.get(number);
13                 NUM++;
14                 label1.setText(shizi);
15             }
16         });
17        //--------------------------------分数---------------------------------
18         JRadioButton buttonFenshu = new JRadioButton("分数");
19         buttonFenshu.addItemListener(new ItemListener() {
20             public void itemStateChanged(ItemEvent arg0) {
21                 frame2.pack();    
22                 frame2.setVisible(true);  
23                 try {
24                     CA.fenshu();
25                 } catch (IOException e) {
26                     e.printStackTrace();
27                 }
28                 String shizi = CA.FractionQ.get(number);
29                 NUM++;
30                 label1.setText(shizi);
31             }
32         });
33         //-------------------------------------下一题答案按钮的设定-------------------------------------------------------
34         JButton buttonNext=new JButton("下一题");
35         buttonNext.addActionListener(new ActionListener() {//定义时间监听器
36            public void actionPerformed(ActionEvent e) {
37                if(buttonInteger.isSelected())
38                {
39                    String question=label1.getText();
40                    String result=text.getText();
41                    String ifRight="";
42                    if((CA.IntegerA.get(number)).equals(result))
43                    {
44                        ifRight="正确";
45                        rightSum++;
46                    }
47                    else
48                    {
49                        ifRight="错误";
50                    }
51                    String message=question+", "+"你的答案:"+result+", "+"正确答案: "+CA.IntegerA.get(number)+", 状态: "+ifRight;
52                    list.add(message);
53                    text.setText("");
54                    number++;
55                    String shizi=CA.IntegerQ.get(number);
56                    NUM++;
57                    label1.setText(shizi);
58                    if(NUM==20)
59                    {
60                        JOptionPane.showMessageDialog(null, "本题为第20道题,答题结束,请提交答案。", "答题结束", JOptionPane.INFORMATION_MESSAGE);
61                        text.setText(result); 
62                    }         
63                 }
64                if(buttonFenshu.isSelected()) 
65                {
66                    String question=label1.getText();
67                    String result=text.getText();
68                    String ifRight="";
69                    if(CA.FractionA.get(number).equals(result))
70                    {
71                        ifRight="正确";
72                        rightSum++;
73                    }
74                    else
75                    {
76                        ifRight="错误";
77                    }
78                    String message=question+", "+"你的答案:"+result+", "+"正确答案: "+CA.FractionA.get(number)+", 状态: "+ifRight;
79                    list.add(message);
80                    text.setText("");
81                    number++;
82                    String shizi=CA.FractionQ.get(number);
83                    NUM++;     
84                    label1.setText(shizi);
85                    if(NUM==20)
86                    {
87                        JOptionPane.showMessageDialog(null, "本题为第20道题,答题结束,请提交答案。", "答题结束", JOptionPane.INFORMATION_MESSAGE);
88                        text.setText(result);
89                    }
90             }
91        }        
92       });
View Code

相关文章:

猜你喜欢
  • 2021-06-11
  • 2021-09-21
  • 2021-12-08
  • 2021-08-27
  • 2021-07-28
  • 2021-05-23
相关资源
相似解决方案