首页 > 其他分享 >HNU个人项目分析互评

HNU个人项目分析互评

时间:2023-09-20 21:55:26浏览次数:40  
标签:运算符 题目 高中 项目分析 互评 123 HNU 初中 输入

  • 笔者:万宇龙
  • 项目作者:梁钰

项目目标

个人项目:中小学数学卷子自动生成程序
用户:小学、初中和高中数学老师。
功能:

  1. 命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小学、初中和高中三个选项中的一个。否则提示“请输入正确的用户名、密码”,重新输入用户名、密码;
  2. 登录后,系统提示“准备生成XX数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):”,XX为小学、初中和高中三个选项中的一个,用户输入所需出的卷子的题目数量,系统默认将根据账号类型进行出题。每道题目的操作数在1-5个之间,操作数取值范围为1-100;
  3. 题目数量的有效输入范围是“10-30”(含10,30,或-1退出登录),程序根据输入的题目数量生成符合小学、初中和高中难度的题目的卷子(具体要求见附表)。同一个老师的卷子中的题目不能与以前的已生成的卷子中的题目重复(以指定文件夹下存在的文件为准,见5);
  4. 在登录状态下,如果用户需要切换类型选项,命令行输入“切换为XX”,XX为小学、初中和高中三个选项中的一个,输入项不符合要求时,程序控制台提示“请输入小学、初中和高中三个选项中的一个”;输入正确后,显示“”系统提示“准备生成XX数学题目,请输入生成题目数量”,用户输入所需出的卷子的题目数量,系统新设置的类型进行出题;
  5. 生成的题目将以“年-月-日-时-分-秒.txt”的形式保存,每个账号一个文件夹。每道题目有题号,每题之间空一行;
  6. 个人项目9月17日晚上10点以前提交至创新课程管理系统。提交方式:工程文件打包,压缩包名为“几班+姓名.rar”。迟交2天及以内者扣分,每天扣20%。迟交2天及以上者0分。

附表-1:账户、密码

账户类型 账户 密码 备注
小学 张三1 123
小学 张三2 123
小学 张三3 123
初中 李四1 123
初中 李四2 123
初中 李四3 123
高中 王五1 123
高中 王五2 123
高中 王五3 123

附表-2:小学、初中、高中题目难度要求

小学 初中 高中
难度要求 +,-,*,/ 平方,开根号 sin,cos,tan
备注 只能有+,-,*,/和() 题目中至少有一个平方或开根号的运算符 题目中至少有一个sin,cos,tan的运算符

项目设计

项目分为了4个包:entityservicetestutils

  • entity
    包含了构成整个代码生成器部分的实体,类如下
    ExamJuniorExamPrimaryExamSeniorExamUser

  • service
    向外提供项目服务,类如下
    MyService

  • test
    测试用的包,不做说明

  • utils
    存储一些工具类,为上面的enetity包服务


项目实现

  • 最重要的部分:题目生成是通过字符串拼接形式完成
    首先生成n个操作数,接着是n-1个操作符,插在n个操作数之间
    同时生成一个长度为n的boolean类型数组,用来加入高级运算
    最后随机产生括号
    下面的类都是基于这个思想进行编写

  • entity
    抽象Exam将+,-,*,/作为基本二元运算符存储;声明了最大操作数个数;声明了存储操作数的数组
    PrimaryExamJuniorExamSeniorExam都继承自Exam,并且都有public static String createExam()方法(根据不同的学校通过字符串拼接创建不同的题目)。
    User拥有三个属性:levelidpassword以及对应的GetterSetter

  • service
    MyService由于不要求注册或者是新增用户,直接使用ArrayList进行初始化和记录所有用户
    管理entity里面的类,让其相互协同工作,相互配合,以达到登录以及出题的效果

  • utils
    ChoiceUtil判断的工具类,有可以判断字符串是否为纯数字的方法
    ExamProduceUtils试卷生成工具类,可以保存、读取试卷,实现查重功能


项目测试

正常登录
image

能防止异常输入登录
image

能防止输入异常题目数量
image

正常切换模式
image

正常出题
image
小学:
image
初中:
image
高中:
image

能防止出题界面异常输入
image


项目质量

  • 可读性
    可读性很高,有足够量的注释,变量、方法以及类的命名一目了然

  • 可拓展性
    有点遗憾的就是这里了,如果想要新增加一个一元或者二元运算符,那么需要改动原代码,这可能导致更多的工作以及无法预测的问题

  • 灵活性
    由于整个项目被拆解成很多个部分,再由各个部分合作完成,因此有较高灵活性

  • 编码规范

    • 关于Javadoc,需要按照@param,@return,@throws,@deprecated的形式出现,顺便再这样写会更好看一点
  /**
   * 描述内容1
   * 描述内容2
   * (有一行空出来什么都不要写,包括这句话)
   * @param 变量1 变量1描述
   * @param 变量2 变量2描述
   * @return 返回值描述
   */
    • 关于{}
      大括号与 if, else, for, do, while 语句一起使用,即使只有一条语句(或是空),也应该把大括号{}写上。
    • 关于自动换行
      如果在 非赋值运算符 处断开,那么在该符号前断开(比如+,它将位于下一行)。(有一个toString()方法中的+放在了一行的最后)
      如果在 赋值运算符 处断开,通常的做法是在该符号后断开(比如=,它与前面的内容留在同一行)。
  • 生成题目
    没有做计算答案部分,不方便后续拓展,没有合理性的判断,可能出现÷0,根号下负数,tan90的情况。运算符难以嵌套(不会出现\(tan(cos(\frac{\sqrt{a^2+b^2}}{a}))\)类似的式子)

标签:运算符,题目,高中,项目分析,互评,123,HNU,初中,输入
From: https://www.cnblogs.com/xwan/p/17718546.html

相关文章

  • 软件工程导论个人项目互评
    评价人:软件2101谢先衍评价对象:软件2101方毅前言个人项目是实现一个中小学数学卷子自动生成程序,用户为小学、初中和高中老师,老师可以登录自己的账号生成对应年级的题目并保存到对应的文件夹下,并且还可以切换年级以生成不同难度的题目。具体要求如下:1、命令行输入用户名和密码......
  • 与结对队友的个人项目互评
    与我结对的队友是木拉迪力.艾海提同学,接下来我来分析一下他的个人项目:#include<iostream>#include<string>#include<fstream>#include<ctime>#include<cstdlib>usingnamespacestd;classTeacher{public:Teacher();Teacher(stringusername,stringpwd,str......
  • hnu个人项目互评
    对同伴宋玉为的个人项目的互评:1.代码运行结果1.1登录效果:1.2出题效果:出题有提示题目文件保存在绝对路径,为txt格式,题目前有序号,但是题目之间没有空行。 1.3切换效果:输入错误的指令有提示,输入正确的指令切换成功。初中题目:  高中题目,某些题目被大括号扩了起来。......
  • 【个人项目互评】——中小学数学试卷生成系统
    项目名称:中小学数学试卷生成系统编程语言:java代码作者:符南山评价人:秦凯一、简介我与符南山同学结对,并且都是采用java语言。因此下面博客,我们以java的角度来测试分析南山同学的代码,功能。通过这次互评来互相学习彼此间的优点,同时认识到自己的不足,来提升自己的编程思维。二......
  • 【HNU个人项目互评】 基于java生成中小学数学卷子自动生成程序代码分析
    【评价者】:金颖希【项目作者】:刘一凡【使用语言】:Java前言【项目简介】本项目为中小学数学卷子自动生成程序,采用java编程语言实现用户登录、用户类型判断、生成题目、题目查重、切换用户类型以及题目保存等简单功能。【评价标准】本文以代码分析为主,主要从代码的可读性、性能......
  • 个人项目互评
    中小学数学卷子自动生成程序分析本次课程任务要求我们在规定时间内完成一个可以自动生成中小学数学题目卷子的程序,用户为老师。主要是实现账户名密码的验证,账户的切换,根据账户类型生成不同难度的试题并查重。在此简单分析一下搭档小天的项目代码。 程序流程我来分析......
  • 个人项目互评
    项目介绍用户:小学、初中和高中数学老师。功能:命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小学、初中和高中三个选项中的一个。否则提示“请输入正确的用户名、密码......
  • Hnu个人项目互评
    一、简介本文是对于编程队友xjm同学的代码互评,本着互相学习,互相进步的想法,学习对方的代码,找出其中的优点,缺点也要提醒队友改正。二、项目结构先简单分析一下队友项目中的类以及功能。项目中包括7个类和一个接口User类中点击查看代码privateStringuserName;private......
  • 个人项目互评
    一、前言本篇博客为对结对编程搭档李宛芸同学的个人项目(中小学数学卷子自动生成程序)的评价。首先感谢李宛芸同学,她在编程过程中多次帮忙检查我的代码并指出不符合规范的地方,省去了我很多查阅规定的时间.其次,我来对李宛芸同学的个人项目稍作评论,争取做到取长补短,共同进......
  • HNU_个人项目_中小学数学卷子自动生成程序_简要分析何梁雨代码
    一、前言感谢老师安排的这一次互评,以及我的结对编程伙伴何梁雨。在互评中我学到了不一样的编程思路,更清晰的感受到了自己编程水平哪一部分存在缺陷,并向这个方向学习改正。二、测试与评价1.测试程序运行(1)界面整洁简单,流程清晰。动作转折的地方经常会有一长串横杠隔开,让......