四则运算分析与设计

Posted 黄耀威

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四则运算分析与设计相关的知识,希望对你有一定的参考价值。

一、四则运算调查报告

1、您的角色是?

A、老师(转到2题)

B、学生(跳转24题)

 

2您教的是什么学科?

A、数学

B、语文

C、英语

D、其他

 

3、您教几年级的学生?

A、一年级

B、二年级

C、三年级

D、四年级

E、五年级

F、六年级

 

4、学生需要练习哪种类型的运算题? [多选题]

A、简单算数题 例如 2+2-1=3

B、带分数的四则运算

C、四则混合运算

D、其他 _________________*

 

5、希望学生每次在运算器中练习多少题才能达到练习效果: [单选题] *

A 、10道

B、20道

C、 30道

D、其他: _________________ *

 

6、练习中做的错题需要有单独的记录吗?[单选题] *

A、需要

B、不需要

 

7、错误题目是否需要在练习中重复出现? [单选题] *

A、需要

B、不需要

 

8、是否需要出题功能吗? [单选题] *

A、需要

B、不需要

 

9、您希望四则运算的什么难度合适? [单选题] *

A 、简单加减乘除

B、带有真分数的加减乘除

C、 带有括号和分数的加减乘除

D、开方或平方难度及以上

 

10、您希望我们提供练习是专项练习还是混合练习? [单选题] *

A 、专项练习

B、混合练习

 

11、您希望我们提供一些高分记录或速度纪录来鼓励答题者吗? [单选题] *

A 、建议

B、不建议

C、无所谓

 

12、您对我们的项目有什么意见或建议: [填空题]

_________________________________

 

13、您的孩子现在在上小学几年级? [单选题] *

A、一年级

B、二年级

C、三年级

D、四年级

E、五年级

F、六年级

 

14、您的孩子现在会自己操作使用电脑吗? [单选题] *

A、会

B、不会

 

15、如果有一款小学生练习四则运算的系统,您会让您的孩子使用吗? [单选题] *

A、会

B、不会

 

16、您觉得孩子在线答题需要监督吗? [单选题] *

A、需要

B、不需要

 

17、您觉得查看孩子做题情况的时候需要知道在错题本里显示之前的错误答案吗? [单选题] *

A、需要

B、不需要

 

18、您查看孩子做题情况希望看到的信息是: [多选题] *

A、看孩子做错的题

B、查看孩子做题频率

C、看孩子做题总量

D、看孩子完成一次练习的时间

 

19、您希望孩子在线上做什么类型的题? [多选题] *

A 、简单加减乘除

B、带有真分数的加减乘除

C、 带有括号和分数的加减乘除

D、开方或平方难度及以上

  

20、您希望有出题功能吗? [单选题] *

A、希望

B、不希望

 

21、您希望四则运算的什么难度合适? [单选题] *

A 、简单加减乘除

B、带有真分数的加减乘除

C、 带有括号和分数的加减乘除

D、开方或平方难度及以上

 

22、您希望我们提供练习是专项练习还是混合练习? [单选题] *

A 、专项练习

B、混合练习

 

23、您希望我们提供一些高分记录或速度纪录来鼓励答题者吗? [单选题] *

A 、建议

B、不建议

C、无所谓

 

 

24、你今年在上几年级? [单选题] *

A、一年级

B、二年级

C、三年级

D、四年级

E、五年级

F、六年级

 

25、你会自己操作电脑吗? [单选题] *

A、会

B、不会

 

26、你希望四则运算的什么难度合适? [单选题] *

A 、简单加减乘除

B、带有真分数的加减乘除

C、 带有括号和分数的加减乘除

D、开方或平方难度及以上

 

27、练习算数题,你想一次做多少道题? [单选题] *

A 、20道

B、30道

C、 50道

D、80道

E、其它 _________________ *

 

 

28、查看错题的时候,你希望看到自己的错误答案吗? [单选题] *

A、希望

B、不希望

 29、你希望我们提供练习是专项练习还是混合练习? [单选题] *

A 、专项练习

B、混合练习

 

 

 

调查结果:

用户1:1.A 2.A 3.A 4.C 5.C 6.A 7.A 8.A 9.D 10.B 11.A 12.出题模块能更加有针对性 13.A 14. A 15. A 16. A 17.A 18.ABCD 19.D 20.A 21.D 22.B 23.A

用户2:1.A 2.B 3.B 4.D 5.C 6.B 7.B 8.A 9.D 10.B 11.A 12.查看错题集是能显示相对应的错题答案 13.B 14. A 15. A 16. A 17.A 18.BCD 19.D 20.A 21.D 22.A 23.A

用户3:1.A 2.C 3.C 4.A 5.D 6.B 7.A 8.A 9.B 10.B 11.A 12.无 13.A 14. A 15.B 16. B 17.A 18.ABCD 19.D 20.A 21.D 22.A 23.B

用户4:1.A 2.B 3.F 4.C 5.C 6.A 7.A 8.A 9.D 10.B 11.A 12.界面设置希望更活泼生动一些 13.A 14. A 15. A 16. A 17.A 18.ABCD 19.D 20.A 21.D 22.B 23.A

用户5:1.A 2.B 3.E 4.B 5.A 6.B 7.C 8.A 9.D 10.B 11.B 12.查看错题集是能显示相对应的错题答案 13.B 14. A 15. B 16. A 17.A 18.BCD 19.D 20.A 21.D 22.A 23.A

用户6:1.B 24.E 25.A 26. C 27.C 28.A 29.B

用户7:1.B 24.B 25.A 26. A 27.D 28.A 29.A

用户8:1.B 24.A 25.B 26. C 27.B 28.A 29.B

用户9:1.B 24.F 25.A 26. B 27.D 28.A 29.A

用户10:1.B 24.C 25.B 26. D 27.A 28.A 29.B

 

综合调查结果可知,教师对该软件的需求比较高。普遍的教师希望通过简单网上练习方式对学生的知识点进行考察,并从中得知学生对知识点掌握不清的地方。由此错题集的功能在该软件中重要性相对较高。教师的软件出题量的要求比起学生也相对较高,折合老师和学生的出题量要求进行折中选择。由调查统计也能得出,教师和学生都希望题量进行专项练习,可以考虑在设计软件时先由专项练习为主,最后的复习模块可以为混合练习。学生相对此软件功能要求不高,大多只希望达到方便做题的效果。由此,功能的设计可以偏向教师的需求。

 

一、总体描述

1.产品描述

这个产品是面向小学低年级的“四则运算系统”软件,能自动生成简单的四则运算题目,方便老师出题、学生做题的软件。

2.产品功能

用户对象为老师和学生。用户可以进行注册、修改密码和自己的用户信息。老师注册登录后可以创建班级、布置作业、查看学生的作业完成情况。学生注册登录后可以加入班级,进行题目练习,查看自己的错题情况。

二、具体需求

1.外部接口需求

I.用户界面需求

具体见原型设计:https://modao.cc/app/tIQGJJKdFMQNqOiF3HfG9s0eJoeJ0hV

2.功能需求

I.类图

II.功能描述

用例图如下所示:

用例规约:

 

III.用户场景

顺序图为:

 

 

四、编码规范:格式规范

a)缩进 
使用配置文件进行格式化: 
配置文件中一个TAB等于4个空格。

b)行长度 
每行100字符 
注: 使用eclipse自带的Format方法(快捷键:Ctrl+Shift+F)时,需要配置“Maximum line width”设置长度为100

c)声明

d)声明变量、常量 
一行只声明一个变量或常量; 
在代码块的开始处声明实例变量,不要在首次用到该变量时才声明【推荐】

e)声明类 
左大括号”{“位于声明语句同行的末尾,右大括号”}”另起一行; 
方法与方法之间以空行分隔

f)语句 
可以使用eclipse自带的Format方法(快捷键:Ctrl+Shift+F)时 使用eclipse默认的“Control Statements ”格式化方法进行 
注:if语句总是用”{“和”}”括起来 
示例

class Example {
    void bar() {
        do {
        } while (true);
        try {
        } catch (Exception e) {
        } finally {
        }
    }
 
    void foo2() {
        if (true) {
            return;
        }
        if (true) {
            return;
        } else if (false) {
            return;
        } else {
            return;
        }
    }
}

等号左右必须各有一个空格: 
button = null; 
双目运算符左右必须各有一个空格: 
imageWidth = imagePadding + imageSize; 
标点符号后面必须跟一个空格 
标点符号包括“,”、“;”等,下面列出几个例子。 
一行定义多个变量时,“,”后跟空格: 
int i, j; 
在for循环中,“;”后跟空格: 
for (int i = 0; i < count; ++i) 
在有多个入口参数的函数调用中,“,”后跟一个空格: 
addContentView(view, params);

h)变量类型的使用 
编程的过程中尽量使用接口编程,而少用类编程。 
如:

    List<String> names = new ArrayList<String>();

命名规范

通用规则 
       命名规范使程序更易读,从而更易于理解。它们也可以提供一些有关标识符功能的信息,以助于理解代码,例如,不论它是一个常量,包,还是类。

       包(Packages) 一个唯一包名的前缀总是全部小写的ASCII字母并且是一个顶级域名,通常是com,edu,gov,mil,net,org,或1981年ISO 3166标准所指定的标识国家的英文双字符代码。包名的后续部分根据不同机构各自内部的命名规范而不尽相同。这类命名规范可能以特定目录名的组成来区分部门(department),项目(project),机器(machine),或注册名(login names)。 
如:

package com.itotem.view
package com.itotem.utils.xxxx

 

       类(Classes) 命名规则:类名是个一名词,采用大小写混合的方式,每个单词的首字母大写。尽量使类名简洁而富于描述。使用完整单词,避免缩写词(除非该缩写词被更广泛使用,像URL,html
如:

public class Buttonpublic class EditText

       接口(Interfaces) 命名规则:接口类名以大写“I”开头,大小写规则与类名相似, 
如:

public interface IProjGroupService

       方法(Methods) 方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。 
如:

public void onCreate(Bundle savedInstanceState)public void run()

       局部变量(Local Variables) 采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。变量名应简短且富于描述。变量名的选用应该易于记忆,即,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为i,j,k,m和n,它们一般用于整型。c,d,e,它们一般用于字符型,变量名不应以下划线或美元符号开头。 
如:

int i = 0;float imageWidth = 0;

       实例变量(Instance Variables) 大小写规则和类名相似,除了前面需要一个m。 
如:

    private int mEmployeeId = 0;
    private String mName = "";

       若实例变量为public类型的则和局部变量采用相同的命名规则。 
如:

    public int width = 0;
    public String contactName = "";

       常量(Constants [采用stiatc final 修饰]) 类常量的声明,应该全部大写,单词间用下划线隔开。(类似C语言的宏定义)。 
如:

    private static final int MIN_WIDTH = 4; 
    private static final int MAX_WIDTH = 999; 
  • 1
  • 2

       资源id 资源id全部采用小写,单词之间用下划线隔开。

       注意:这个小写规范是android强制执行的,如果出现大写或者特殊字符工程是不能编译的。会报错 
如:

    download
    app_name
  •     call_log_type

备注(Remark) 
       所有的标识符名称要求取有意义的单词,不能使用myXXXX和button01等风格的名称。

附加说明 
1、从命名中可以直观看懂其定义和用途,否则必须增加注释说明; 
2、在同一系统内命名必须保持统一;避免出现类似示例中的情况; 
示例:项目组id 变量定义:pgid、projectgroupId、idprojectgroup、idProjGroup 
3、避免名字过长、命名采用英文缩写,避免使用汉语拼音【推荐】

组织规范

       引入包规范 
       不允许引入类中未使用的包; 
       引入包时不能直接引入“.*”,必须明确到引入的类名 
       可以通过快捷键引入包。Ctrl+Shift+O;

注释规范

a)通用注释规则

b)说明 
       注释要精简并清晰容易理解; 
       保持注释与代码同步。 
       代码质量不好但能正常运行,或者还没有实现的代码用 //TODO:任务 ; 
       存在错误隐患的代码用 //FIXME:声明; 
       对于不建议使用(废弃)的类或者方法,必须在他们的注释中增加 @deprecated

c)javadoc注释标签语法定义说明 
       @author 对类的说明 标明开发该类模块的作者 
       @version 对类的说明 标明该类模块的版本 
       @see 对类、属性、方法的说明 参考转向,也就是相关主题 
       @param 对方法的说明 对方法中某参数的说明 
       @return 对方法的说明 对方法返回值的说明 
       @exception 对方法的说明 对方法可能抛出的异常进行说 
       @deprecated 对类或方法的说明 该类或方法不建议使用

d)类的注释 
目的:简单概述该类作用

范围:所有java类,可以不包括javabean

书写规范:类的注释必须写在该类的声明语法之前。在注释中要描述该类的描述,创建者,创建日期。

类注释模板:可以通过eclipse配置(Code Templates 中的 Code 的New Java files)

${filecomment}
${package_declaration}
/**
 * Title: ${project_name}<br>
 * Description: <br>
 * Copyright: Copyright (c) ${year}    <br>
 * Create DateTime: ${date} ${time} <br>
* @author perry.li
 */
${typecomment}
${type_declaration}

类注释示例:

package cn.sh.sstic.projectmanagement.projectfeasibleschemaeval;

 

/**
 * Title: mwbas2008<br>
 * Description: 可行性方案套数数组定义类<br>
 * Create DateTime: Oct 6, 2008 4:41:03 PM <br>
* @author perry.li
 */public class FormUtil {

e)方法的注释

       目的:简要概述该方法的功能,包括其参数、返回值意义的注释

       范围:java类中的各种方法 
       注:接口的实现方法的注释应写在接口中而不是实现代码中; 
       对自动生成的get/set方法不需要添加注释; 
       如果方法允许null作为参数,或者允许返回值为null,必须在JavaDoc中说明,如果没有说明,方法的调用者不允许使用null作为参数,并认为返回值是null 安全的。

       书写规范:方法注释必须写在方法定义之前。该注释包括:方法其功能的简单 描述,方法的参数、返回值类型、返回值意义简单的描述。

       模板:对于已定义好的接口的方法,可以直接输入 /**回车 eclipse可自动生成注释模板

示例:

    /**
     * 演示方法注释
     * @param args
     * @return
     *  返回 null 表示没有找到
     * @throws Exception
     */
    private String[] demoFunction(String args) throws Exception{
        return null;
    }

f)失效代码块的注释 
       目的:对一块暂时不启用的代码进行注释。 
       注:这里并不是指垃圾、无用的代码,只是暂时不启用或暂时不明确的代码

       书写规范:失效代码块采用块注释方法行注释方法进行标注。 
       注:采用注释块在 使用eclipse自带的Format方法(快捷键:Ctrl+Shift+F)时需要配置,去掉选中 “Enable block commnet formatting”

示例:

    // if (1==1) {
    //          
    // } else {
    //
    //      }

或者

    /*      if (1 == 1) {
                // 如果1与1相等的时候
                String code1;
            } else {
                // 如果1与1不相等的时候
                String code2;
            }*/

g)分支语句的注释 
目的:简单描述该分支条件的意义

书写规范:在分支语句代码的下一行进行注释

示例:

        if (1==1) {
            //如果1与1相等的时候
            code
        } else {
            //如果1与1不相等的时候
            code
        }

h)变量、常量的注释 
       目的:简单描述该变量、常量的意义。 
       书写规范:变量、常量注释必须写在变量、常量定义之前或同一行中,简单描述其代表的意义。 
       注:对自循环所用的变量(i,j,k,)可以不需要注释。 
示例:

String commitFlag; //提交标志
i)@Override的使用
所有的重写方法,在方法开始加上 @Override 关键字。
@Overridepublic void onCreate(Bundle savedInstanceState) {
}

异常处理规范

       重新抛出的异常必须保留原来的异常,即throw new NewException(“message”, e); 而不能写成throw new NewException(“message”),更不能不继续往上层抛出异常。 
       针对重要的可捕获的业务相关异常,需创建异常处理类,在方法中捕获到异常后,反馈到用户界面上,提示用户【推荐】

补充规范

       代码在提交版本控制之前,请确保已清除不必要的log调试语句 
       明确的垃圾或无用代码必须删除

 

以上是关于四则运算分析与设计的主要内容,如果未能解决你的问题,请参考以下文章

四则运算2的设计思想+源程序代码+运行结果截图+编程总结分析

四则运算分析与设计

小学四则运算程序_分析与设计

四则运算程序的分析与设计

四则运算分析与设计

分析与设计