基于C++实现的选课系统

Begone

发布日期: 2018-11-15 13:14:50 浏览量: 3561
评分:
star star star star star star star star star star
*转载请注明来自write-bug.com

1 程序功能

教务提供登记课程的功能,为学生提供选课及查看的功能。

2 程序总览

3 函数介绍

4 设计思路

为了存储数据必须进行文件读写,同时为了直观地理解程序,定义了结构体方便在内存 中进行数据修改。之后考虑程序的整体设计思路。明确这是一个具有层次的程序结构,所以依照程序本 身的层次逻辑分别进行程序设计。首先确定了程序框架是:

一级菜单 → 二级菜单 → 三级菜单 → 具体实现

所以此处我采用了从下到上的方法,先逐个实现具体函数,然后把相应的函数组合成对应的上级菜单,不断向上直到一级菜单。具体实现请参考相应函数定义。

5 使用说明

进入程序后将来到主界面,在这里用户可以选择“注册”、“退出”或者根据自己的身份 (教务或学生) 进入登录界面。注册需要选择自己的身份,然后输入对应的账号 (教务) 或学号 (学生),输入密码,之后教务完成注册,学生还需要输入姓名和班级。在此过程中用户不能随时退出,必须在最后 提示是否确认时选择确认或者取消方可退出。

教务在输入账号密码登陆后可以选择“添加课程”、“删除课程”、“修改课程”、“查看结果”或者 返回主界面。对于添加课程,用户需要输入课程名和最大选课人数,可以在输入结束之后确认或取消添加。对于删除课程和修改课程,用户首先将看到当前课程的选课情况,包括课程编号、课程名和选课人 数信息 (已选/全部),然后输入对应的课程编号按照提示进行删除/修改即可。这个过程可以不断进行, 直到用户输入 0 退出。对于查看结果,用户只能查看对应课程的详细选课情况,即所有选课的学生的信 息,包括学号、姓名和班级。

学生输入账号密码登陆后可以选择“选课”、“退课”、“查看”或者返回主界面。对于选课和退课, 学生都将看到当前所有课程的信息,包括课程编号、课程名和剩余人数。如果学生尝试选择不存在的课 程或者无剩余人数的课程将会提示输入错误。学生可以输入 0 返回。对于查看,学生将看到自己的选课 情况和所有选课情况总览,按任意键可返回。

6 问题与对策

  • 如何制作类似的图形界面

    由于不会 Qt 等软件,所以采用了强行 printf 大法和超强的窗 口设计能力解决了这个难题。

  • 光标定位问题

    因为在绘制好字符型窗口后光标移到了最后,这时候又需要进 行一系列输入,所以必须把光标移到对应的地点。通过发动“秘技——百度搜索术”解决了问题——定义一个gotoxy() 函数, 让光标飞起来。

  • 数据存储问题

    由于需要保存众多的数据,所以采用文件 I/O,并且分 为”users.txt”、”students.txt” 和”coursers.txt”、分别保存所有用户的信息、学生的相关信息和课程信息。

  • 删除的课程更新已选该课程同学数据的问题

    一种方法是用另一个文件专门存放每个学生的选课情况,另一 种方法是直接在总的学生信息文件里进行修改,这里采用了后一种方法,虽然效率比较低,但是执行起来更简单。

  • 在 viewallsel 中画出横和纵都变化的表格、且实现对齐

    这是所有实现中最复杂的一个。解决的方法主要是首先记录现有的课程数和班级数,然后求出每个课程名的长度,为其分配 相应的表格宽度,然后再进行对齐。

7 程序亮点

  • 简洁友好的操作界面

  • 温馨体贴的询问功能

  • 符合实际选课情况,人性化的操作流程

  • 增加” 删除课程” 功能,教师享受极致课程管理体验

8 程序缺点

  • 只依赖于键盘,无法通过鼠标点击的方式操作

  • 文件模式进行文件读写过于僵硬

  • 完全无法实际应用

9 收获

体验了程序设计从下到上的方法;感受到了在实际项目中代码可读性的重要性以及团队合作的重要性;学习数据结构的重要性,优秀的数据结构能够大大提高程序效率。

程序主界面

上传的附件 cloud_download 基于C++实现的选课系统.7z ( 1.08mb, 660次下载 )
error_outline 下载需要9点积分

发送私信

我也许不完美,但我一直在做自己

19
文章数
31
评论数
最近文章
eject