作业生成程序的代码优劣分析

代码作者:CLZ

所用语言:C++

程序功能一:用户登陆

流程图:

简述:

  将预设的九个账户信息存入User对象数组,通过遍历数组检查账户合法性。

优点:

  没有简单的通过if条件判断,方便添加/注册用户,可扩展性高。

缺点:

   User对象的数组长度没有参数化,导致添加新用户时要修改遍历代码。

程序功能二:登陆后切换年级

 流程图:

简述:

  两个while循环和一个continue语句形成输入判断和跳转。

优点:

  流程结构清晰,只用了一个continue。

缺点:

  1,输入都用的是cin,cin无法读取空格,用户的不规范操作可能会导致不可预料后果。

  2,在输入题目数量时无法切换年级,切换年级只能在最外层循环执行。

程序功能三:生成题目

简述:

  传递参数调用MakePaper(user_no,type_flag,question_num)函数,三个参数分别表示:用户编号、生成题目的年级,生成题目的数量。

  MakePaper函数根据参数类型进行条件判断分别调用生成小学(BasicMake)、初中(NormalMake)、高中(HardMake)题目的函数。

  小学题目生成算法:

    根据运算符个数随机出括号的插入位置===>依此随机出运算符和整数添加到字符串末尾===>返回字符串

  初中题目生成算法:

    根据运算符个数随机出括号的插入位置===>随机flag数组(用来控制题目每个位置应插入数字、运算符)==>for循环形成题目,在每生成一个数字

    后随机判断是否要添加^0.5和^2。

  高中题目生成算法:

    在初中题目的基础上再添加一个flag数组,用来控制三角函数插入的位置。

优点:

  1,按顺序生成一个题目中的所有数字和符号,只用到了字符串的append()操作,运行速度快。

  2,根号和平方都以次方表示,生成起来较方便。                                                                                                       

缺点:

  1,只生成了一对括号。

 程序功能四:查重

简述:

  读取目标文件夹下所有txt文件,将题目序号全替换为0,查找新生成的题目是否在文件中。

优点:

  能完整的查重

缺点:

  没生成一道题目都要全部读取文件一遍,实际上可以只读取一遍文件,存入内存,之后只需遍历就行。

 总结:

  总体效果很好,除了查重部分的文件读取。全部代码几乎全是面向过程的c语言写法,建议采用C++面向对象写法。

    

原文地址:https://www.cnblogs.com/Davidhwj/p/9707337.html