基于C++的学生选课管理系统的设计与实现

magipige

发布日期: 2018-10-19 16:30:49 浏览量: 1514
评分:
star star star star star star star star_border star_border star_border
*转载请注明来自write-bug.com

一 需求分析

  • 系统添加课程:将一门课程加入到系统数据中。课程提交重复时给出提示信息

  • 系统删除课程:以课程编号为索引删除课程。系统无此课程时给出提示

  • 课程添加学生:把学生的姓名、学号等信息加入到课程中。学号重复时给出提示信息

  • 课程删除学生:以学号为索引从课程中删除学生。课程无此学生时给出提示

  • 课程添加教师:把教师的姓名、教工号等信息加入到课程中。教工号重复时给出提示信息

  • 课程删除教师:以教工号为索引从课程中删除教师。课程无此教师时给出提示

  • 课程输出数据:提供某课程的学生、教师信息

二 程序设计

2.1 功能结构图

如下所示:

2.2 数据设计

数据架构如下图所示:

  • Object(abstractbaseclass):抽象基类。定义了“姓名”和“编号”两种属性。它是Student(class),Teacher(class),Course(class) 最终的父类

  • Person(class):表示人。没有额外定义属性。Student(class)和Teacher(class)直接继承这个类

  • Teacher(class):表示教师。没有额外定义属性

  • Student(class):表示学生。没有额外定义属性

  • std::set(templateclass)

  • Group(template class):对std::set作轻度封装

  • Course(class):表示课程。包含成员Group<Student>和Group<Teacher>,定义一系列添加、删除、访问的操作

  • System(class):表示整个系统的类。是整个程序的核心。包含成员Group<Course>。定义了一系列添加、删除、访问操作

2.3 函数设计

函数结构如下图所示:

  1. // 格式化输出的辅助函数。以上几乎所有函数都调用OutputHelper
  2. void OutputHelper(const string& s1, const string& s2);
  3. // 调用PrintTitle和PrintCourse以表格的形式打印所有的课程
  4. void PrintAllCourse(const System& sys);
  5. // 输入一个课程的全部信息
  6. void PrintCourse(const Course&crs);
  7. // 打印“>>> ”用以实现交互界面
  8. inline void PrintPromt();
  9. // 打印“… ”用以等待用户输入更多信息
  10. inline void PrintPromtForInput();
  11. // 打印指导信息。每次运行该系统都会输出该内容
  12. void PrintInstroduction();
  13. // 打印帮助信息。在系统中输入help会调用该函数输出帮助
  14. void PrintHelp();
  15. // 打印错误信息。该函数会将参数s直接打印出来(加上换行符)
  16. inline void PrintError(const string& s);
  17. // 打印表格的题头。执行实际的打印行为
  18. inline void PrintTitle();
  19. // 模板函数,接受Name和Id,返回T。T是应当是Student,Teacher,Course中的一个
  20. T InputNameAndId();
  21. // 模板函数,接受Id,返回T。同上
  22. T InputId();

三 程序实现

3.1 实现思路

3.1.1 结构间关系

系统中包含了一系列课程,课程由名称和编号构成;课程包含了任课教师和选课学生,学生和教师都含有名称和学号/教工号等信息。系统负责管理课程,课程负责管理教师和学生。

3.1.2 具体逻辑

“添加”操作需要“名称”和“编号”两项信息。“删除”操作只需要“编号”作为索引。编号保证唯一,是确定身份的凭证。

3.2 数据流流向

数据流流向图如下所示:

  • User指用户,即系统管理员

  • User Interface指程序的交互层,包括文件main.cpp,IOHelper.*

  • BusinessLogic指业务逻辑层,包括除上述文件以外的所有文件

  • Dataaccess 数据访问层,系统采用文件IO的方式储存数据

3.3 main函数算法流程

如下图所示:

  • 输入:输入使用getline读取整行

  • 是否语法错误:使用正则表达式检查语法错误。若格式不匹配,输出错误提示信息,重新等待输入

  • 是否逻辑错误:调用System类并查看返回值。若返回false表示出现逻辑错误。输出提示信息,重新等待输入

  • 执行命令:命令被执行

四 程序运行

case1:

case2:

case3:

case4:

case5:

case6:

case7:

上传的附件 cloud_download 基于C++的学生选课管理系统的设计与实现.7z ( 356.40kb, 246次下载 )
error_outline 下载需要10点积分

keyboard_arrow_left上一篇 : 基于C++的多项式计算器 基于C++的物资管理系统的设计与实现 : 下一篇keyboard_arrow_right



magipige
2018-10-19 16:32:16
学生选课管理系统;c++;课程添加、删除,学生添加、删除;教师添加、删除

发送私信

生活不会因为你是女孩子就善待你

9
文章数
15
评论数
最近文章
eject