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

个人项目互评

时间:2023-09-20 20:22:35浏览次数:41  
标签:current file 个人 项目 生成 互评 出题 user 文件

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

  本次课程任务要求我们在规定时间内完成一个可以自动生成中小学数学题目卷子的程序,用户为老师。主要是实现账户名密码的验证,账户的切换,根据账户类型生成不同难度的试题并查重。在此简单分析一下搭档小天的项目代码。

 

程序流程

  我来分析一下这个自动出题程序的几段关键代码:

1. 用户验证

// 用户验证
bool validuser = false; 
User* current_user = nullptr;
for (User& user : users) {
  if (user.username == username && user.password == password) {
    validuser = true;
    current_user = &user;
    break;
  }
}

 

  这段代码遍历users数组,检查输入的用户名密码是否匹配,如果匹配则将validuser置为true,current_user指向该User对象。

 

2. 账号类型输出

// 账号类型输出
switch (current_user->account_type) {
case PRIMARY_SCHOOL:
printf("小学出题\n");
break;
case JUNIOR_HIGH:
printf("初中出题\n");
break;
case HIGH_SCHOOL:
printf("高中出题\n");
break;
}

 

  使用switch结构根据current_user的account_type字段来打印对应的账号类型。

3. 题目生成

// 生成题目
string question = GenerateQuestion(current_user->account_type, *current_user);
output_file << question << endl;

 

  调用GenerateQuestion,传入账号类型和用户信息,生成对应的题目文本,并打印到输出文件中。

 

4. 日期时间

string date_time_str = GetCurrentDateTimeString();

 

  调用GetCurrentDateTimeString函数获取格式化的当前日期时间字符串。

5. 文件写入

ofstream output_file(file_name);
output_file << content;
output_file.close();

 

  使用ofstream以输出方式打开文件,将内容写入文件,最后关闭文件。

  

总结来说,这个程序首先定义所需函数,然后在主循环中检验用户身份,根据账号类型生成不同难度和数量的题目,并输出到以用户名和日期时间命名的文件中。对输入进行了验证,保证了程序的正确性。主要流程包括:用户验证、级别输出、题目数量验证、文件夹生成、日期时间获取、文件写入、错误提示等。利用函数将功能模块化,提高代码复用性。

 

优点

  哥们,我看了下你这个出题系统的代码,确实功能实现得不错,自动随机生成不同难度的题目然后输出到文件,这具有实用价值。但作为你的朋友,我还是要认真给你分析分析这个程序的优缺点,帮助你改进提高:

  优点方面:你运用了C++的一些新的特性比如file system来简化文件操作,这很先进。面向对象的设计思想也用得不错,有结构体、枚举等,看起来很专业。然后你把功能划分得很清晰,有单独的函数生成表达式、文件名之类的,这也方便修改和复用代码,整体结构做得不错。随机数和日期时间功能实现得也很顺畅,这对一个出题系统很关键。

缺点

  但缺点和可以改进的地方也有一些:

1. 用户信息直接写在代码里不太灵活,要是用户量大起来,添加和修改都很不方便。可以考虑存数据库或者文件来维护

2. 题型还比较单一,只有四则运算,可以扩展更多题型,考虑用面向对象多态的方式实现不同题型,这样扩展性强。

3. 处理错误的情况可以更严谨全面些,避免异常退出。

 

总结

  总之,程序本身作为课程作业是非常不错了,但要做成实际产品还需着眼全面考虑,在可扩展性、可维护性上下点功夫。作为程序员要有追求完美的激情,哪怕是小项目也要做到极致。加油吧,兄弟!你要有自己一套严谨的代码风格和质量标准,这样才能成为一个出色的工程师。

 

标签:current,file,个人,项目,生成,互评,出题,user,文件
From: https://www.cnblogs.com/wym123/p/17718317.html

相关文章

  • 个人项目互评
    项目介绍用户:小学、初中和高中数学老师。功能:命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小学、初中和高中三个选项中的一个。否则提示“请输入正确的用户名、密码......
  • 使用js开发一个快速打开前端项目的alfred插件
    使用js开发一个快速打开前端项目的插件目录前言使用的技术栈步骤问题发现待优化前言一直以来开发都是先打开vscode,然后选择项目,在项目多的情况下会觉得挺繁琐;如果同时打开了许多vscode窗口,寻找目标窗口也比较麻烦,于是萌生了开发一个alfred的工作流插件的想法,目标是在alf......
  • Hnu个人项目互评
    一、简介本文是对于编程队友xjm同学的代码互评,本着互相学习,互相进步的想法,学习对方的代码,找出其中的优点,缺点也要提醒队友改正。二、项目结构先简单分析一下队友项目中的类以及功能。项目中包括7个类和一个接口User类中点击查看代码privateStringuserName;private......
  • 个人项目互评
    一、前言本篇博客为对结对编程搭档李宛芸同学的个人项目(中小学数学卷子自动生成程序)的评价。首先感谢李宛芸同学,她在编程过程中多次帮忙检查我的代码并指出不符合规范的地方,省去了我很多查阅规定的时间.其次,我来对李宛芸同学的个人项目稍作评论,争取做到取长补短,共同进......
  • 个人项目
    这个作业属于哪个课程计算2114这个作业要求在哪里个人项目这个作业的目标1.在github上实现代码的运行2.对于文本相似度算法的理解3.遍历代码并对其做出优化需求题目:论文查重描述如下:设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改的......
  • Springboot 的 maven项目利用 maven插件构建 docker 镜像(免 DockerFile编写)
    Springboot的maven项目利用maven插件构建docker镜像(免DockerFile编写)本小节目的是springboot项目maven插件构建容器实验步骤:1.本地创建springboot项目,写业务逻辑代码2.提交代码到远程git仓库3.在linux环境拉取远程git仓库代码,构建镜像4.把构建完成的镜像推送......
  • IDEA 本地启动项目时候提示:错误:无法加载主类StartMain
    这也许是IDEA的bug.最好的办法就是清理IDEA项目缓存。具体步骤如下:一、检查使用包版本是否正确 二、清除缓存重启 ......
  • 2023年9月天津/济南/深圳CSPM-3国标项目管理中级认证报名
    CSPM-3中级项目管理专业人员评价,是中国标准化协会(全国项目管理标准化技术委员会秘书处),面向社会开展项目管理专业人员能力的等级证书。旨在构建多层次从业人员培养培训体系,建立健全人才职业能力评价和激励机制的要求,培养我国项目管理领域复合型人才。  【证书含金量】 ·竞聘优先......
  • 2023年9月西安/成都/广东软考中级系统集成项目管理工程师招生
    系统集成项目管理工程师是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目之一,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职称资格考试。 系统集成项目管理工程师,属于软考三个级别中的“中级”。 考试合格者将颁发由中......
  • Vue-cli创建项目
    1.单页面应用:spa-以后Vue的项目就只有一个:XX.html页面-当定义了很多组件,不可能都写在:XX.html中吧2.单文件组件:xx.vue-https://v2.cn.vuejs.org/v2/guide/single-file-components.html-一个组件一个文件一个组件中有的东西-1.html内容:以后html都放在te......