• 小学生四则运算练习软件


    结对伙伴博客地址:http://www.cnblogs.com/zhangcunhui/

    Github仓库主页链接地址:https://github.com/huicunzhang/Sizeyunsuan2

    • 需求分析

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

    2. 题库文件可采用实验二的方式自动生成,也可以手工编辑生成,文本格式如下:

     

     

     

     

     

     

     

     

     

     

     

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

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

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

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

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

    • 设计类图:

     

    Start类:用来创建进入系统的界面;

    SimpleFrame类:做题界面、随机出题、调用shishi3类中的计时功能;

    Sort类:成绩汇总界面,以柱状图的形式展现,用数组记录每次测试的结果。

    • 程序流程图:

    • 核心代码:

     判断结果对错的代码:

     1 if( Expressions.get(0).equals(answers.get(0)) )
     2                     {answer1.setText("正确 "); sum++;}
     3                 else
     4                     answer1.setText("错误");
     5                 
     6                 if( Expressions.get(1).equals(answers.get(1)) )
     7                     {answer2.setText("正确 "); sum++;}
     8                 else
     9                     answer2.setText("错误");
    10                 
    11                 if( Expressions.get(2).equals(answers.get(2)) )
    12                     {answer3.setText("正确 "); sum++;}
    13                 else
    14                     answer3.setText("错误");
    15                 
    16                 if( Expressions.get(3).equals(answers.get(3)) )
    17                     {answer4.setText("正确 "); sum++;}
    18                 else
    19                     answer4.setText("错误"); 
    20 
    21 
    22 
    23                                 num.add(sum*5+"");
    24                 //num.add(sum+"");
    25                                 //将判断结果存入文件
    26                 try {
    27                        File f = new File("result.txt"); 
    28                     FileWriter fw = new FileWriter(f,true);
    29                     PrintWriter pw = new PrintWriter(fw);
    30                     for(String con:num)
    31                      {
    32                           pw.println(con);               
    33                      }
    34                             
    35                     fw.close();
    36                             
    37                     } catch (IOException e) {
    38                     // TODO Auto-generated catch block
    39                         e.printStackTrace();
    40                     }
    View Code

    计时器代码:

     1 class shishi3 extends Thread {
     2             private long noww = 0l;
     3             private long start = System.currentTimeMillis();// 程序启动时间的毫秒值
     4             private long time;
     5             public void run() {
     6                 int i=0;
     7                 while (true) {
     8 
     9                     noww = System.currentTimeMillis();// 获取一秒之后的毫秒值
    10                     time = noww - start;// 两个时间相减的到毫秒差
    11                     timetime=time;
    12                     String ssss=String.format("%02d:%02d:%02d
    ",
    13                             time / (1000 * 60 * 60) % 60/**/, 
    14                             time / (1000 * 60)% 60/**/, 
    15                             (time / 1000 % 60)/**/);// 格式化字符串输出
    16                
    17                         l1.setText(ssss);
    18                         i++;
    19                         try {
    20                             Thread.sleep(1000);
    21                         } catch (InterruptedException e) {
    22                             e.printStackTrace();
    23                         }
    24                     
    25                 }
    26             }
    27         }
    View Code

    柱状图代码: 

    int Width = 400;
            int Height = 450; 
            Random ran = new Random();
            int leftMargin = 15;//柱形图左边界  
            int topMargin = 50;//柱形图上边界  
            Graphics2D g2 = (Graphics2D) g;
            g2.translate(50, 100);
            int ruler = Height-topMargin-5;  
            int rulerStep = ruler/10;//将当前的高度评分为10个单位  
            g2.setColor(Color.gray);//绘制白色背景  
            g2.fillRect(0, 0, Width, Height);//绘制矩形图  
            g2.setColor(Color.LIGHT_GRAY);  
            for(int i=0;i<=10;i++)
         {//绘制灰色横线和百分比  
                g2.drawString((100-10*i)+"", 10, topMargin+rulerStep*i);//写下百分比  
                g2.drawLine(10, topMargin+rulerStep*i, Width, topMargin+rulerStep*i);//绘制灰色横线  
            }  
            g2.setColor(Color.PINK);  
            for(int i=0;i<4;i++)
         {//绘制柱形图  
                int value =save[i]*4;// ran.nextInt(Height-topMargin-10)+10;//随机产生柱形的百分比  
                int step = (i+1)*35;//设置每隔柱形图的水平间隔为40  
                //绘制矩形  
                g2.fillRoundRect(leftMargin+step*2, Height-value-10, 40, value, 40, 10); 
                //g2.fillRoundRect(leftMargin+step*2, Height-value, 40, value, 40, 10);  
                //列出产品的编号  
                g2.drawString("测试"+(i+1), leftMargin+step*2, Height-value-15); 
                
            }
    View Code
    • 运行结果:

     

    • 结对过程:

    • 总结与评价:

       在本次结对过程中,我和我的小伙伴先通过查阅资料对软件系统进行了详细的设计,并作了合理的分工,但理想很丰满,现实过于骨感呐,由于双方编程基础都比较弱,开始去编程的时候出现了很多的困难,没办法,只好再次进行设计,去了很多复杂的东西,从简单的功能入手,等到程序能运行之后再慢慢进行补充。由于双方都不是很要强的那种,加之关系也好,在合作过程中能比较愉快地交流。

      对于结对编程真的能够带来1+1>2的效果的说法,我自己是很赞同的,以前一个人编程完成实验项目,就算完成了也仍然会存在很多的问题,发现问题不及时,后知后觉的,但在此次结对过程中,我深切体会到了合作的力量,结对完成项目,无论在设计还是编程实现过程中,都能让该过程实现得堪称完美,存在的问题能得到及时的反馈、纠正,但前提是沟通要到位。结对完成还能收获其他的很多东西,比方说合作能力,通过结对,合作能力能得到不断提升。

    • PSP:

     

    PSP2.1

    任务内容

    计划共完成需要的时间(min)

    实际完成需要的时间(min)

    Planning

    计划

    10

    10

    ·       Estimate

    ·  估计这个任务需要多少时间,并规划大致工作步骤

    10

    10

    Development

    开发

    1302

    1065

    ··       Analysis

      需求分析 (包括学习新技术)

    10

    20

    ·       Design Spec

    ·  生成设计文档

    5

    5

    ·       Design Review

    ·  设计复审 (和同事审核设计文档)

    2

    5

    ·       Coding Standard

      代码规范 (为目前的开发制定合适的规范)

    5

    5

    ·       Design

      具体设计

    30

    25

    ·       Coding

      具体编码

    1200

    960

    ·       Code Review

    ·  代码复审

    30

    20

    ·       Test

    ·  测试(自我测试,修改代码,提交修改)

    20

    25

    Reporting

    报告

    25

    28

    ··       Test Report

    ·  测试报告

    10

    5

    ·       Size Measurement

      计算工作量

    5

    3

    ·       Postmortem & Process Improvement Plan

    ·  事后总结 ,并提出过程改进计划

    10

    20

  • 相关阅读:
    碎碎念五九
    从边际成本角度思考程序员职业
    质量看板开发实践(五):给echarts图例添加数值
    质量看板开发实践(六):添加一个jira数据列表,并可点击跳转至jira详情
    质量看板开发实践(七):使用旭日图汇总每个人的故事点
    JIT JustInTime(即时编译)
    cocos中常用的一些第三方库(astar、proto、jszip、decimal、crypto、socketio、pako)
    【MySql】远程访问问题
    sql server rml,sql server RML Utilities
    (1.5)mongodb备份恢复,mongodb备份还原,mongodb迁移
  • 原文地址:https://www.cnblogs.com/mumay12447/p/8715603.html
Copyright © 2020-2023  润新知