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

个人项目互评

时间:2023-09-20 19:11:13浏览次数:35  
标签:std string 个人 项目 李宛芸 用户 互评 input teacher

一、前言

本篇博客为对结对编程搭档李宛芸同学的个人项目(中小学数学卷子自动生成程序)的评价。首先感谢李宛芸同学, 她在编程过程中多次帮忙检查我的代码并指出不符合规范的地方, 省去了我很多查阅规定的时间.

其次, 我来对李宛芸同学的个人项目稍作评论, 争取做到取长补短, 共同进步.

二. 测试与评价

1. 黑箱测试

  拿到项目文件后, 我首先进行了黑盒测试.从用户的角度评判程序的运行情况.

1)          界面设计较好, 每一步都有充足的文字提示. 用户可以清晰知道下一步应该做什么.

   2 )  生成题目前预设了用户文件夹不存在的情况, 即使删除用户文件夹也能正常生成.

  3 ) 当用户多次生成后会显示题库数量不足, 无法正常出题, 没有做到真正的随机生成.

2. 白盒测试

  由于李宛芸同学和我在完成个人项目之前就经常对彼此的项目交换看法并分享进度, 因此没有花费很多时间我就对”盒子”的结构和工作原理有了一个清晰的了解. 从而结合黑盒测试的表现, 发现内部的长处与不足.

 1 ) 从整体的代码设计来看, 李宛芸同学的代码模块化设计良好, 严格遵循一个函数实现一个功能的原则, 所有的函数都控制在40行以内.

 2 ) 李宛芸为了程序的可扩展性, 将用户数据保存在txt文件中, 每次登录时读取并查询. 如果以后拓展程序, 这会使修改比较方便.

 1 void Login(Teacher* teacher){
 2   while(1){
 3     printf("---欢迎使用中小学数学卷子自动生成程序---\n");
 4     printf("请输入用户名和密码, 两者之间用空格隔开\n");
 5     bool flag = false;
 6     char input_name[100],input_password[100];
 7     scanf("%s %s", input_name, input_password);
 8     getchar();
 9     std::string newTeacherName=input_name, newTeacherPassword=input_password;
10     std::ifstream inputFile("users.txt");
11     if (!inputFile.is_open()) {
12         PrintError("无法打开用户信息文件\n");
13         exit(1);
14     }
15 
16     std::string currName, currPassword;
17     int account_type;
18     while (inputFile >> currName >> currPassword >> account_type) {
19         if (!newTeacherName.compare(currName) && !newTeacherPassword.compare(currPassword)){
20             flag = true;
21             teacher = CreateTeacher(currName,currPassword,account_type);
22             break;
23         }
24     }
25     inputFile.close();
26 
27     if (flag) break;
28     else printf("请输入正确的用户名和密码\n");
29   }
30 
31   printf("当前年级类型为 %s\n", (teacher->GetType()).c_str());
32   EnsureValidNumQuestions(teacher);
33 }
View Code

 3 ) 分析李宛芸同学生成题目和查重的方法得知, 她并没有真正生成随机的题目而是选择了取巧的方法: 使用随机数从题库中抽取. 同时, 查重算法也只是简单遍历所经被抽取的题目. 因此, 当用户多次生成后就面临题库数量不足的危险, 而且判定查重的时间成倍增加.

 1 bool CheckDuplicate(const std::string& question,Teacher* teacher) {
 2   std::string checkPath = teacher->GetTeachername()+ "\\Allquestion.txt";
 3 
 4     // 检查文件是否存在
 5   std::ifstream checkIn(checkPath);
 6   if (!checkIn) {
 7       PrintError("用户信息文件不存在\n");
 8       return false;
 9   }
10 
11   std::string existQuestion;
12   while (getline(checkIn, existQuestion)) {
13       if (existQuestion == question) {
14           checkIn.close();
15           return false;
16       }
17   }
18   checkIn.close();
19 
20     // 追加写入文件
21   std::ofstream checkOut(checkPath, std::ios::app);
22   if (!checkOut) {
23       PrintError("无法打开用户信息文件\n");
24       return false;
25   }
26   checkOut << question << std::endl;
27   checkOut.close();
28 
29   return true;
30 }
View Code
 1 std::string GenerateMathProblem(Teacher* teacher,int linecount,std::string filename) {
 2     // 打开题库文件
 3   std::ifstream questionFile(filename);
 4   if (!questionFile.is_open()) {
 5       PrintError("无法打开文件以保存试卷\n");
 6       exit(1);
 7   }
 8   int randomLineNumber = GenerateRandomNum(linecount);
 9   int currentLine = 0;
10   std::string line="";
11         // 遍历文件内容,查找指定行的问题
12   while (getline(questionFile, line)) {
13       currentLine++;
14       if (currentLine == randomLineNumber) {
15           return line;
16       }
17   }
18 
19    // 没有找到匹配的问题
20     PrintError("未找到匹配的问题\n");
21     return "";
22 }
View Code

以上就是白盒测试的全部内容, 再次感谢李宛芸同学的耐心讲解.

三. 总结

   第一次尝试结对编程搭档互评代码,体验新奇,。本次任务的顺利完成让我对接下来的结对编程项目充满信心,倍感期待。

标签:std,string,个人,项目,李宛芸,用户,互评,input,teacher
From: https://www.cnblogs.com/Nelist-4573qu/p/17718125.html

相关文章

  • 个人项目
    这个作业属于哪个课程计算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......
  • HNU_个人项目_中小学数学卷子自动生成程序_简要分析何梁雨代码
    一、前言感谢老师安排的这一次互评,以及我的结对编程伙伴何梁雨。在互评中我学到了不一样的编程思路,更清晰的感受到了自己编程水平哪一部分存在缺陷,并向这个方向学习改正。二、测试与评价1.测试程序运行(1)界面整洁简单,流程清晰。动作转折的地方经常会有一长串横杠隔开,让......
  • 湖南大学结对编程个人项目互评
    1.简介本博客用于湖南大学结对编程项目中对王明扬同学个人项目的互评工作。个人项目的功能是实现一个中小学数学试卷自动生成程序,基于命令行进行操作。2.代码2.1项目结构项目由多个包组成,分别执行不同的功能:2.1.1controller:接收用户的输入,调用service层进行相应的逻辑......
  • 【个人项目互评】————中小学生题目生成程序
    在完成个人项目的建设后,我和搭档互相交换了代码进行分析。在阅读过程中,看到了她代码的优势,也同时看到了自己代码的不足。再次写下这一次的项目分析;一、题目要求   二、测试与分析功能完成情况: 在输入正确的账户名以及密码后,能够获得当前用户年级信息以及后续操作步骤......
  • Vue动态组件、插槽、vue项目
    一、动态组件1、动态组件#<component:is="who"></component>#component标签的is属性等于组件名字,这里就会显示这个组件<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title>......