一、课程设计题目。
学生信息管理系统的设计与实现。
二、目的:1、进一步学习和巩固c++课程的核心内容,加深对面向对象程序设计思想的正确理解。
2、熟练掌握c++程序设计技能及上机调试方法,为今后学习其他专业课程打好基础。
3、具备一定的计算机应用及软件开发能力,培养独立分析问题、解决问题及查阅资料、获取新知识的能力,以适应技术不断更新的计算机行业特点。
三、内容。按照要求设计一个学生基本信息管理系统,实现对学生信息的综合管理。学生信息包括:
学号、姓名、年龄、性别、家庭住址、联系**、寝室号等信息。用户输入的数据存入文本文件或二进制文件。源码要有适当的注释。
现要求编写程序来完成如下功能:
1)学生信息的输入。
包含功能:对输入的学号是否重复进行判断(学号唯一);对输入数据的有效性别进行判断。其中学号、姓名、和联系**为必填字段。
2)学生信息的显示。
包含功能:以记录的方式显示文件中的所有内容,每行对应一条记录。
3)学生信息的查询。
包含功能:实现按“学号、姓名、性别、寝室号”等查询,把所有满足该条件的记录显示;若非法查询或未查到则给予提示。
4)学生信息的统计。
包含功能:统计学生的“男生人数、女生人数、总人数”。
5)学生信息的删除。
包含功能:删除指定学号的学生信息;若无此记录,给予提示。
6)学生信息的修改。
包含功能:根据接收到的待修改的学生的学号,进行对相应信息的修改。
7)清理屏幕。
包含功能:把当前屏幕上显示的内容清空。可以采用调用system("cls")实现。
8)退出。包含功能:退出系统,只有当用户选择此项功能时才能退出系统,其它情况循环。
9)其他。除此之外,还实现了在查找过程中在查找结果中进一步查找,将查找结果保存到文件,在输入结束之后自动将学生信息以学号排序等功能。
四、总体设计。
1)模块化的设计:
程序主要分为五个模块:学生信息的添加、显示、查找、删除、更改。
函数结构:void read_count() 读取学生统计信息;
void s**e_count() 保存学生统计信息;
bool test_number(string) 检查学号是否重复;
void sort_number() 按学号排序;
bool is_num(string) 判断字符串是否为数字字符串;
void student_input() 输入学生信息;
void student_show(student *,int) 显示学生信息;
void student_show_all() 显示所有的学生信息;
void check_num(student *,int) 以学号查找;
void check_name(student *,int) 以姓名查找;
void check_age(student *,int) 以年龄查找;
void check_sex(student *,int) 以性别查找;
void check_address(student *,int) 以地址查找;
void check_cell(student *,int) 以**号码查找;
void check_room_num(student *,int) 以寝室号查找;
void student_search_next(student *,int) 进一步查找函数;
void student_search() 主查找函数;
void student_change() 更改函数;
void student_delete() 删除函数;
void welcome() 主菜单;
int main() 主函数。
2)模块调用图:
五、详细设计。
1)学生类的设计。
各个学生的信息封装在学生类student中。student类中包含了各个成员变量与构造函数,并重载了输入流、输出流运算符。
2)文件的设计。
以文本文件“保存统计信息,包括男生总人数、女声总人数、总人数。
以二进制文件“保存学生信息。
3)主函数的设计。
首先更改控制台前景、背景颜色,然后调用read_count函数,读取统计信息,最后调用welcome函数显示主菜单。
4)主菜单的设计。
首先显示主菜单,待用户输入选项之后用switch语句调用各个函数,并对用户的错误输入给予提示,实现流程的控制。
5)函数流程图。
read_count:
student_input:
student_show_all:
student_search:
student_change:
student_delete:
六、调试与测试。
在程序调试与测试过程中也遇到了不少问题,不断改进,下面是程序调试与测试高城中遇到的一些问题:
1、在将查找结果保存到文件时发现如果保存为中文文件名会出现文件名乱码,于是改为英文文件名;
2、调试查找函数时发现在进一步查找结束时不会直接返回主菜单的bug,查看源**后发现是由于查找函数调用流程出错造成,修正;
3、测试过程中发现如果在程序运行时直接关闭窗口,下次打开时会出现统计信息不正确的情况,之后发现是由于保存统计信息的函数是在程序正常退出时才调用的,改为在增删学生信息后及时修改统计信息文件后正常;
4、基本完成后再次通读了源**,发现**冗余,及时删除后又优化了主界面;
5、最终测试对学生信息查找结果输出格式不太满意,更改为**输出。
七、小结。此次课程设计经过了模块设计,分块编码,分块调试,整合,整体调试,最终测试几个阶段。通过此次课程设计,加强了我对模块化程序设计的理解,进一步培养了独立分析问题、解决问题及查阅资料、获取新知识的能力,为适应技术不断更新的计算机行业打下了基础。
八.参考资料。
谭浩强著。c++面向对象程序设计。北京。清华大学出版社。2024年1月第一版。
附录·源**。
c语言课程设计报告 课程设计报告
周口师范学院。课程设计报告。院 系 计算机科学与技术学院 班级。学生姓名学号。设计题目 职工工资管理系统。完成日期 年月日 课程设计任务书。设计题目 工资管理系统 教研室主任指导教师 年月日。摘要11设计内容 任务及具体要求2 1.1设计内容2 1.2设计任务及具体要求2 2概要设计3 2.1该系统...
C语言课程设计报告
华中科技大学计算机科学与技术学院。题目 专业 班级 学号 姓名 成绩 指导教师 完成日期 2016年月日。目录。一 系统需求分析 1 二 总体设计 2 三 数据结构设计 3 四 详细设计 4 五 系统实现 5 六 运行测试与结果分析 6 七 总结 7 八 参考文献 8 九 指导教师评语 9 对所要解...
C语言课程设计报告
c语言。课程设计。商业销售管理系统。学号 121407210 姓名 宋军。班级 软件1202 指导老师 邹姝稚。成绩 2013年6月。一 任务描述。编写一个商品销售管理系统,是其能够拥有商品买卖和库存管理功能。在顾客选购时,需给出输入商品名称,或商品型号,或选择列表进而输入商品编号三种选择,在顾客选...