首页 > 编程语言 >湖南大学个人项目C++互评

湖南大学个人项目C++互评

时间:2023-09-21 19:23:13浏览次数:35  
标签:模块化 代码 用户 C++ 生成 互评 文件夹 错误处理 湖南大学

优点

  1. 模块化设计: 代码有一个良好的模块化设计,其中每个类和函数都有一个特定的目的。

  2. 可扩展性: 由于使用了继承和多态,该设计易于扩展。例如,添加新类型的问题生成器相对简单。

  3. 用户交互: 代码包含用户交互,允许用户登录并选择问题类型和数量。

  4. 文件操作: 代码成功地将生成的问题保存到文件中,方便用户随后查看。

  5. 避免重复: 使用set容器存储已经生成的问题,确保没有重复。

  6. 时间戳和用户特定文件夹: 根据时间和用户生成独特的文件夹和文件名,这有助于文件管理。

缺点

  1. 代码重复: GenerateQuestions中的条件判断可用工厂模式替代以减少代码重复。

  2. 硬编码: 代码中有一些硬编码的部分,例如用户的姓名和状态,这应该通过配置文件或数据库来管理。

  3. 随机数生成: 当前的随机数生成逻辑可能不是很有效,特别是在生成数学问题时。例如,在HighQuestion类中,sin, cos, tan函数用随机生成的角度,这可能产生不合适或过于复杂的问题。

  4. 用户验证: 目前,用户登录仅通过用户名进行,没有密码验证,这可能是一个安全隐患。

  5. 错误处理: 在某些地方,例如文件操作,错误处理不够充分。

  6. 内存管理: 代码中使用了newdelete进行内存管理,但没有异常处理机制,也没有使用智能指针。

  7. 代码注释: 虽然有一些注释,但它们主要是用中文写的,而且没有充分解释每个模块或函数的目的和工作机制。

  8. 用户状态和文件夹名称: 当前设计将用户状态与文件夹名称硬编码在一起,这不是一个灵活的设计,因为任何用户状态的改变都会导致代码更改。

综上所述,代码具有一定的优点,特别是在模块化和可扩展性方面,基本完成了任务。然而,还有一些明显的缺点和改进的空间,特别是在代码结构和错误处理方面。

标签:模块化,代码,用户,C++,生成,互评,文件夹,错误处理,湖南大学
From: https://www.cnblogs.com/qzyqyy/p/17720740.html

相关文章

  • C++ RAII在HotSpot VM中的重要应用
    RAII(ResourceAcquisitionIsInitialization),也称为“资源获取就是初始化”,是C++语言的一种管理资源、避免泄漏的惯用法。C++标准保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终会被调用。简单的说,RAII的做法是使用一个对象,在其构造时获取资源,在对象生命期控制范围之下......
  • HNU个人项目互评——中小学生卷子生成系统
    一.前言首先此篇博客是对搭档鄢逾恒个人项目的评价总结,在此感谢队友提供的不同思路,取长补短,共同进步,提升个人水平,编程素养,协作能力。二.题目要求1、命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类......
  • c++并发编程实战-第4章 并发操作的同步
    等待事件或等待其他条件坐车案例想象一种情况:假设晚上坐车外出,如何才能确保不坐过站又能使自己最轻松?方法一:不睡觉,时刻关注自己的位置1#include<iostream>2#include<thread>3#include<mutex>4usingnamespacestd;56mutex_mtx;7boolbFlag=false;......
  • 《探索C++多线程》:condition_variable源码(一)
    https://blog.csdn.net/hujingshuang/article/details/70596630    现在接着学习关于多线程编程的特征,在这一节,将会了解到多线程中的condition_variable(条件变量)的相关知识。     在头文件<condition_variable>中有两种条件变量的类声明与定义:condition_varia......
  • 那些让我世界观崩塌的c/c++玩法
    if('\0'==0){printf("true");}else{printf("false");}----------------------------------------------inti=false; if('\0'||0||NULL||i){ printf("true&q......
  • HNU个人项目互评——中小学生卷子生成系统
    HNU个人项目互评——中小学生卷子生成系统一.前言本博客是对结对编程队友阿希耶·王同学的个人项目的评价,项目采用的编程语言是Java语言。通过互评发现对方代码的优缺点,互相学习,互相交流,提升个人水平,编程素养,协作能力。二、个人项目要求用户:小学、初中和高中数学老师。功能:......
  • c++中的四种cast转换?
    c++中的四种cast转换是:static_cast,const_cast,dynamic_cast,reinteroret_cast;static_cast:1.用于类层次结构中父类和子类之间指针或引用的转换。进行多态向上转换(子类指针或引用转换成父类)是安全的,多态向下转化是不安全的(把父类指针或引用转换成子类的指针或引用,没有动态类型检查)......
  • c++ 引用
     引用最大的价值是避免复制 #include<iostream>usingnamespacestd;voidmethod2(int&param){param=param+1;cout<<"method2inner:"<<param<<endl;//method2inner:2}voidmethod1(intparam){param=pa......
  • c++中指针和引用的区别?
    1.指针是一个实体,需要分配内存空间,引用是一个变量的别名,不需要分配内存空间。2.引用在定义的时候必须进行初始化,并且不能改变。引用的值不能为NULL,指针在定义的时候不一定要初始化,并且指针所指向的空间是可变的,可以指向NULL。3.sizeof指针得到的是指针本事的大小,sizeof引用得到......
  • 【c&c++】C++中memset()函数的用法详解
    头文件:cstring 或 memory话说刚开始使用memset的时候一直以为memset是对每一个int赋值的,心里想有了memset还要for循环对数组进行初始化干嘛。但其实memset这个函数的作用是将数字以单个字节逐个拷贝的方式放到指定的内存中去memset(dp,0,sizeof(dp));int类型的变量一般占......