中小学数学卷子自动生成 - 结对项目wjy的代码分析

【实现思路】

  1. 命令行输入用户名和密码,匹配试卷难度,每个类的账号只能生成当前难度下的试卷;
  2. 根据试卷难度生成题目,主要是随机生成操作数的个数,每个操作数的形式,两个操作符之间的操作符,最后是随机生成括号,因为设计题目的合理性,所以在写随机生成的时候需要考虑到各种可能的情况;
  3. 最后生成的试卷以“年-月-日-时-分-秒.txt”命名方式生成到以用户名命名的文件夹中。

【函数结构】

  public static void main(String[] args)

  static void init()

  static void menu()

  static void login()

  static void logout()

  static void OperatorChoose()

  static void ChangeRank()

  static void GetNumber()

  static String GetProblem()

  static void ProblemLoad()

  static boolean ProblemCheck( String p)

  static void PrintTest(int num)

  static void Print(int num)

【重难点分析】

  1. 题目的生成(最难):需要考虑题目的合理性,各种操作符的可能存在的位置,主要是利用while和random随机数,将需要用到的符号存在一个g_operator的数组里。括号在匹配的时候要考虑他的位置,不能在操作符的后边,并且要考虑到括号的意义,不能是没有意义的括号。之后是初高中的符号都需要考虑后面跟的数是括号里的还是没有括号的几种情况;
  2. 账户的匹配:此处使用两个数组,通过下标来匹配每个用户和他的密码,用全局变量g_grade来存储难度级别;
  3. 题目的打印:通过SimpleDateFormat类来实现文件的命名,通过FileWriter来实现题目的内容输入;
  4. 查重部分:设置三个难度的题库,每次在一个账号生成题目之前刷新题库中有的题,因为格式相同,所以通过substring方法检查有无重复部分。

【优点】

  1. 界面设置简洁明了;
  2. 每个选项的输入都考虑了不存在的情况,会有提醒几面;
  3. 考虑到了每个账号的安去性问题,各个账户之间不能随意切换难度,因此添加了无敌模式,只有指定的最高权限的账户可以每个难度都能登进去;
  4. 题目种类考虑的较完整,运算符和括号的位置很人性化,避免了很多不合理的存在,并且使每个符号都有自己存在的意义;
  5. 添加了很多人性化的提示。

【缺点】

  1. 用户登陆部分利用两个数组存储安全性和自由性都过低,可以考虑使用User类来实现;
  2. 没有做UI界面很可惜;
  3. 代码中有些重复的部分可以封装成函数。

原文地址:https://www.cnblogs.com/hysxxn/p/11552532.html

时间: 2024-10-10 09:27:02

中小学数学卷子自动生成 - 结对项目wjy的代码分析的相关文章

中小学数学卷子自动生成程序-结对编程之队友代码分析

一.编程语言:C++ 二.代码解读与分析: 1. 项目逻辑 通过输入信息与数组中存储账户信息比对完成用户登录.根据不同的类型要求生成相应类型的试卷并查重.将生成题目以指定的形式存放在指定文件夹下.过程中可切换试卷类型. 2.函数功能说明 int main():主函数负责调用各个功能函数,将各个功能模块按照项目实际的使用情况与应用逻辑结合适当的提示性信息进行组织和套用. void SetPrimary(int n):生成小学类型的试卷. void SetMiddle(int n):生成初中类型的试

中小学数学卷子自动生成程序: 结对编程对方代码分析

需求分析: 1.命令行输入用户名和密码,两者之间用空格隔开(程序预设小学.初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小学.初中和高中三个选项中的一个.否则提示“请输入正确的用户名.密码”,重新输入用户名.密码: 2.登录后,系统提示“准备生成XX数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):”,XX为小学.初中和高中三个选项中的一个,用户输入所需出的卷子的题目数量,系统默认将根据账号类型进行出题.每道题目的操作

中小学数学卷子自动生成程序——结对分析

在上一周的个人项目中队友用的是C++,代码运行正常,且基本实现了需求文档的要求,然后关于她的代码,我觉得有很多可以借鉴的地方,也有一些需要改进的地方. 优点: 1.总体结构很清楚,思路清晰.从登录到功能切换,从试卷生成到题目生成,以及重复性检测,每一步都有对应的函数代码,思路清晰,逻辑清楚. 2.代码的编写基本符合规范要求,且注释基本到位,可读性强.例如在前面的主要函数声明中注释很清楚地标明清楚了函数的作用,函数基本命名符合规范,可以根据名字而知其意,变量命名也基本符合规范,这一点我得向她学习.

个人项目:中小学数学卷子自动生成程序-队友代码测评

结对编程-队友代码分析 上一周,我们完成了个人项目编程.在经过对队友代码的分析,我感触颇深,觉得非常有必要来写一篇文章分析一下队友的代码,我是用的java,而队友用的c++,以下开始正文! ------------------------------------------------------------------------------- 项目需求简述: 个人项目:中小学数学卷子自动生成程序 用户: 小学.初中和高中数学老师. 功能: 1.命令行输入用户名和密码,两者之间用空格隔开(程序

中小学数学卷子自动生成程序分析

结对编程对方个人项目分析 个人项目:中小学数学卷子自动生成程序 用户:小学.初中和高中数学老师. 功能: 1.命令行输入用户名和密码,两者之间用空格隔开(程序预设小学.初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小学.初中和高中三个选项中的一个.否则提示“请输入正确的用户名.密码”,重新输入用户名.密码: 2.登录后,系统提示“准备生成XX数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):”,XX为小学.初中和高中三

中小学数学卷子自动生成程序分析 个人项目

每个人都弄了一个个人项目,然后结队,编程实现更多功能. 程序要求用户预设账号登录后可以选择自动生成不同数量(10-30道).不同难度(小学.初中.高中)的数学卷子到txt文本中. 通读项目需求,本次程序主要难点集中在题目严谨的数学逻辑与随机出题的结合以及出题不重复的实现. 下面简单分析一下李同学的工程编写优缺点: 优点: 文件路径使用相对路径.文件路径具有相对路径和绝对路径两种形式,而绝对路径可能会使得程序的可重用性差,使得在别的终端上不能运行,而在程序中使用相对路径则会变的有极强的适应性,包括

中小学数学试卷自动生成程序-对张凯翔同学代码的评价

张凯翔的优点: 面向对象编程,结构清晰,修改难度小 生成了UI界面,清晰美观 相比张惟盛的代码生成的题目更加科学,比如会在平方和开方的部分增加括号,以确保意义明确 相较于C语言,采用了更加方便的Java,调用函数以及捕获异常,确保了程度的稳定性 张凯旋的缺点: 代码习惯有点问题,杂乱且缺少注释 虽然采用了全随机生成运算符的方式,但在某些算式中也会出现无意义的括号,比如在正常的加减乘除中,第一个为乘法,已经是优先的但是还是会添加无意义的括号,有瑕疵 缺少了对同一老师的不同试卷进行题目查重的步骤,虽

对结对项目同伴的优缺点分析

上个星期完成了个人项目,这篇博客是对结对项目的伙伴的个人项目的优缺点的评价. 优点: 1.代码清晰明了,有相应的注释便于理解,函数命名规范易于看出该函数的功能,功能大致符合要求,没有多余且无用的参数,if.while等语句格式符合规范. 2.使用了多个自己写的头文件,将功能分隔开来使主程序容易阅读 3.使用了类的私有成员即账户,密码,初始登录等级,使这几项易于联系,便于观察. 4.使用了vector容器来存储文件数据,能够方便的进行随机存取, 由于vector容器提供额外的方法来增加.删除元素,

结对项目编程之代码进展

由于最开始做个人项目的时候就是按照模块的思想进行的设计,所以已经是模块化的程序了. 结对项目关于程序方面老师提出了下列要求 Calc() 这个Calc 函数接受字符串的输入(字符串里就是运算式子,例如 “ 5+3.5”,  “7/8 – 3/8 ”,“3 + 90 * (-0.3)” 等等),这个模块的返回值是一个字符串,例如,前面几个例子的结果就是 ( “17.5”, “1/2”, “-24”). 所以我要增加小数的运算以及负数运算的功能. 并且让模块的返回值为[字符串](现在的返回类型是Fr