C++学生选课系统_第1页
C++学生选课系统_第2页
C++学生选课系统_第3页
C++学生选课系统_第4页
C++学生选课系统_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 本课程设计的目的是设计一个学生选修课程系统的程序 用来实现对学生成绩的 管理 其中包括学生信息的文件读入 添加 查询 保存 删除以及相应的课程信息 管理 程序设计了两个类 其中一个包含学生的学号 姓名 选课数以及选修总学分 另一个则包含了课程的信息 包括课程编号 课程名称 课程性质 课时等等 然后 通过数组 向量 集合等来实现学生选课信息的记录 保存 删除等相关操作从而达 到管理学生选课的 因为这次课程设计 我们可以熟练的使用 C 语言来完成一个学生 选课管理系统 但是编写过程中难免会遇到错误 希望老师给予指导 目目 录录 1 1 需求分析需求分析 1 2 2 概要设计概要设计 1 2 1 对象设计对象设计 1 2 2 设计优缺点设计优缺点 1 3 3 详细设计详细设计 2 3 1 总体设计思路总体设计思路 2 3 2 类定义类定义 2 3 3 宏定义宏定义 3 3 4 文件操作函数文件操作函数 3 3 5 用户操作函数用户操作函数 3 3 6 其他重要函数其他重要函数 3 4 测试结果及运行效果测试结果及运行效果 4 5 系统开发所用到的技术系统开发所用到的技术 6 参考文献参考文献 7 附录附录 全部代码全部代码 8 1 1 1 需求分析需求分析 计算机技术作为信息化的核心技术受到全社会的普遍重视 如今 计算机的使用 也已不再局限于科学计算 它已进入人类社会的各个领域并发挥着越来越重要的作用 深入掌握计算机专业知识 具有良好系统设计与分析能力的计算机高级专业人才在社 会上深受欢迎 而系统设计与分析能力的培养需要通过实践训练才能获得 通过计算 机对一些系统的管理已经成为一种系统 便捷的方式 本课程设计就是用 C 设计学生 选课系统的问题 实现对学生选课的管理操作 本课程设计的目的是设计一个学生选修课程系统的程序 用来实现对学生成绩的 管理 其中包括学生信息的文件读入 添加 查询 保存 删除以及相应的课程信息 管理 程序设计了两个类 其中一个包含学生的学号 姓名 选课数以及选修总学分 另一个则包含了课程的信息 包括课程编号 课程名称 课程性质 课时等等 然后 通过数组 向量 集合等来实现学生选课信息的记录 保存 删除等相关操作从而达 到管理学生选课的 2 2 概要设计概要设计 2 1 对象设计对象设计 把学生和学科信息设计成类 student 和类 subject 通过文件操作函数对输入的学 生和学科信息进行读取和存放 2 2 设计优缺点设计优缺点 优点 1 人性化的程序提示语言 程序提示语言较人性化 不仅大多为祈使语句 疑问 句 而且提示明确 具有较强的明确的指导作用 程序提示不仅层次分明 提示方式 多样 而且提示信息井然有序 更加有利于用户顺利 准确地进行程序的操作 2 所有的操作大多是在内存中实现 增加操作的速度 十分的方便 缺点 1 程序虽然经过多次精简 但仅仅是形式上 小范围的精简 仍未得到本质上的 精简 即未找到更加简单 更加高效 更加合理 更小占用的资源的算法 2 程序仍然存在不合理的地方 例如程序某些部分输入错误会导致程序中止或转 向其他功能模块 即程序建议用户注意提示 进行合理的准确的输入 这样更有利于 管理工作 2 3 3 详细设计详细设计 3 1 总体设计思路总体设计思路 通过对课题的分析 程序的要求是设计选修课管理系统 对选修课程能够进行录 入和修改操作等 要求有主界面和退出功能 首先 考虑到程序的数据输入 可以设 置一个课程增加选项 通过该界面 进行选修课的录入和修改操作 最后将录入的课 程存到相应的文件中 然后定义各种函数的功能包括 查看 查询 删除等 另一个 为选课界面 该界面学生可以进行课程选择和浏览查询等操作 在进行该操作之前需 要对保存的文件进行读取 然后对其中的东西进行查询等 在学生选好课程以后 可 以将选好的课程保存于相应的文件中 以便下次进行修改 通过函数的层层调用来实 现程序的逻辑结构 中间通过文件的打开和关闭实现对文件内部所包含的数据操作 为了方便用户控制管理 又添加了一些更人性化的功能如人工调试 运行配置等功能 文件存储信息的方式更是简化了程序结构 使程序读起来更容易懂 除此之外 本系 统采用分块实现功能 将要实现的增加课程信息 修改课程信息 删除课程信息 增 加学生信息和修改学生信息等功能分别用不同的子程序来完成 这样不仅方便了我们 程序调试 更提高了程序的移植性 3 2 类定义类定义 class subject 建立一个课程类 保存课程信息 class student 建立一个学生类 保存学生信息 函数 该程序包含的主要函数功能说明 void XuanKeMenu 选课主菜单函数 int find int no void Save void DL 登录界面的函数 void MainMenu void output void Load 载入文件信息的函数 void Load2 void quit void add void ChaXun void chaxun1 void chaxun2 void xuanke void tq1 提取选课编号的函数 void tq2 void AddStuInfo 添加学生信息的函数 3 void SaveStuInfo 保存学生信息到文件中 void del 删除已选课程信息的函数 void sum 3 3 宏定义宏定义 define N 10 3 4 文件操作函数文件操作函数 void AddStuInfo 添加学生信息的函数 void SaveStuInfo 保存学生信息到文件中 3 5 用户操作函数用户操作函数 该函数根据用户的选择 完成指定的操作 void DL 登录界面 void MainMenu 系统主菜单 void output 显示函数 将课程信息输出到屏幕 void AddStuInfo 增加学生信息 并保存在文件中 void add 增加课程信息 并保存在文件中 void del 删除已选课程信息 void ChaXun 查询主菜单函数 void xuanke 选课函数 执行选课功能 void sum 统计函数 统计并输出文件中的数据 3 6 其他重要函数其他重要函数 void Load 载入函数 载入课程信息 文件此前已建立 void Load2 载入学生信息 文件此前已建立 void Save 保存已选的课程信息 4 void SaveStuInfo 保存学生信息 void quit 退出函数 void chaxun1 按学分方式查询 void chaxun2 按课程性质查询 void tq1 char str 提取出选课时输入的课程编号 int find int no 寻找函数 找到想要的课程编号 void display int i 输出函数 void tq2 char str 提取函数 提前删除时输入的课程编号 4测试结果及运行效果测试结果及运行效果 运行程序后 登陆界面登陆学号 进入登陆后的界面 在其中可以选择查看课程 信息 添加课程信息 查询课程信息 学生选课 统计情况和退出 按照提示输入 0 5 和 Enter 键进入下级菜单 或者退出程序 图 4 1 登陆后的界面 输入 1 进入查看课程信息页面后 给出存放在文件类的所有课程信息 按 y 和 Enter 键停留界面 按 n 和 Enter 退出 5 图 4 2 进入查看课程信息界面 在主菜单中选择 2 进入添加课程信息界面 图 4 3 添加课程时的界面 在主菜单中选 4 学生选课界面 图 4 4 学生选课时的界面 在登陆界面输入 exit 退出系统 6 图 4 5 退出系统时的界面 5系统开发所用到的技术系统开发所用到的技术 操作系统 Windows 7 开发软件 Microsoft Visual Studio 2013 技术 功能模块 函数 向量 文件保存及读取 模块 是抽象的概念 按照功能划分模块 尽可能保证每个模块互相独立 这个 一般同程序的逻辑设计有关 同具体语言关系不大 函数 一般都有有明确的定义 有明确的语法 用来完成相对独立功能和程序 向量 Vector Vector 是 C 标准程序库中的一个类 可视为会自动扩展容量 的数组 以循序 Sequential 的方式维护变量集合 vector 的特色包括支持随机存取 在集合尾端增删元素很快 但是在集合中间增删元素比较费时 vector 是 C 标准程 序库中的众多容器 container 之一 除此之外还有 list set map 等等 vector 以模板 泛型 方式实现 可以存储任何类型的变量 包括用户自定义的数据型 态 文件操作 C 语言对文件的处理一般有两种方法 缓冲文件系统和非缓冲文件系统 在文件系统中 系统对文件进行读写之前首先在内存区开辟一个称作缓冲区的专用内 存区域 在缓冲文件系统中 系统对文件进行读写之前首先在内存区开辟一个称作缓 冲区的专用内存区域 从内存向磁盘写文件时必须先写入缓冲区 装满缓冲区后才一 起写到磁盘上去 从磁盘读文件时必须先把一批数据读到缓冲区 充满缓冲区 然后 再从缓冲区将数据逐个送到用户数据区 在非缓冲文件系统中 文件的处理不自动开 辟确定大小的缓冲区 而是由程序设定的缓冲区 一般用缓冲文件系统进行的输入 输 出 用非缓冲文件系统进行的输入 输出称为低级 低层 输入 输出 ANSI C 标准采 用缓冲文件系统 现代的操作系统也广泛采用缓冲型文件系统 7 参考文献参考文献 1 李素若 C 面向对象程序设计 北京 中国水利水电出版社 2013 2 曾辉 王更生 C 程序设计实训教程 北京 北京邮电大学出版社 2011 3 揣锦华等编 C 程序设计语言 西安 西安电子科技大学出版社 2011 4 张素琴主编 C 程序设计语言 北京 清华大学出版社 2010 5 邓飞 李瑶主编 C 程序设计 北京科海电子出版社 2009 6 李军民等编 C 程序设计语言 西安 西安电子科技大学出版社 2011 8 附录附录 全部代码全部代码 include include include include include include include define N 10 using namespace std int F class subject 建立一个课程类 保存课程信息 public int num char name 30 char cha 20 int Time time1 time2 xf char kkxq 20 S class student 建立一个学生类 保存学生信息 public char nam 10 char num 15 int zxf int cnt Stu vector v 声明一个 指向课程信息的向量 vector z 声明一个 指向学生信息的向量 9 set T 建立一个 集合 vector set TT 建立一个 向量集合 set iterator it 建立一个 迭代器 void XuanKeMenu 声明一个 选课主菜单函数 int find int no void Save void DL 声明一个登录界面的函数 void MainMenu void output void Load 声明载入文件信息的函数 void Load2 void quit void add void ChaXun void chaxun1 void chaxun2 void xuanke void tq1 声明提取信息的函数 void tq2 void AddStuInfo 声明添加学生信息的函数 void del void sum void AddStuInfo FILE fp fp fopen d student txt a fseek fp 0 2 打开学生信息文件 system cls cout endl endl endl endl endl cout t t endl cout t t 学生选课系统 endl cout t t endl endl 10 cout Stu num cout Stu nam St Stu zxf 0 fprintf fp s s d d n Stu num Stu nam St Stu zxf 存入文件 z push back Stu T clear TT push back T 用向量指向学生信息 fclose fp void add A system cls cout endl endl endl cout t endl cout t 课 程 信 息 endl cout t endl endl cout S num cout S name cout S cha cout S Time cout S time1 cout S time2 cout S xf cout S kkxq v push back S 11 Save cout endl s if s 0 Y s 0 y goto A else MainMenu void Save 保存已选的课程信息 FILE fp fp fopen d subject txt w for unsigned int i 0 i v size i fprintf fp d s s d d d d s n v i num v i name v i cha v i Time v i time1 v i time2 v i xf v i kkxq fclose fp void SaveStuInfo 保存学生信息 FILE fp fp fopen d student txt w for unsigned int i 0 i z size i fprintf fp s s d d z i num z i nam z i cnt z i zxf for it TT i begin it TT i end it fprintf fp d it fprintf fp n fclose fp void quit 退出函数 exit 1 12 void ChaXun 查询主菜单函数 system cls cout endl endl endl cout t endl cout t 课 程 信 息 endl cout t endl endl cout t t t t请选择查询方式 n t t t t 1 学分查询 n t t t t 2 课程性质查询 n t t t t 0 返回主菜单 n n cout choice if choice 0 if choice 2 chaxun2 if choice 0 MainMenu else ChaXun void chaxun1 按学分方式查询 system cls int cnt 0 cout endl endl endl cout t endl cout t 课 程 信 息 endl cout t endl endl 13 cout key cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl for unsigned int i 0 i v size i if cnt cout t 按任意键查看下一页 getch system cls cout endl endl endl cout t endl cout t 课 程 信 息 endl cout t endl endl cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl if v i xf key 14 cnt printf t 3d 12s 8s 4d 6d 8d 8d 7s n v i num v i name v i cha v i Time v i time1 v i time2 v i xf v i kkxq cout endl s if s 0 Y s 0 y chaxun1 else MainMenu void chaxun2 按课程性质查询 system cls int cnt 0 cout endl endl endl cout t endl cout t 课 程 信 息 endl cout t endl endl cout key cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl for unsigned int i 0 i v size i if cnt cout t 按任意键查看下一页 getch system cls cout endl endl endl cout t endl cout t 课 程 信 息 endl cout t endl endl cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl if strcmp v i cha key cnt printf t 3d 12s 8s 4d 6d 8d 8d 7s n v i num v i name v i cha v i Time v i time1 v i time2 v i xf v i kkxq cout endl s if s 0 Y s 0 y chaxun2 else MainMenu 16 void tq1 char str 提取出选课时输入的课程编号 string t int i 0 cont 0 while str i if isalnum str i t str i else int tmp atoi t c str if TT F find tmp TT F end t i continue z F zxf v find tmp xf TT F insert tmp t cont i int tmp atoi t c str if TT F find tmp TT F end cont TT F insert tmp z F zxf v find tmp xf z F cnt cont void xuanke 选课函数 执行选课功能 char str 100 system cls cout endl endl cout t endl 17 cout t 课 程 信 息 endl cout t endl endl cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl for unsigned int i 0 i v size i if i cout endl t 请输入所选课程编号 gets str if strcmp str tq1 str system cls cout endl endl cout t endl cout t 课 程 信 息 endl cout t endl endl cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl 18 printf t 3d 12s 8s 4d 6d 8d 8d 7s n v i num v i name v i cha v i Time v i time1 v i time2 v i xf v i kkxq cout endl t cout endl t 请输入所选课程编号 gets str if strcmp str tq1 str SaveStuInfo cout x if x 0 y x 0 Y xuanke else XuanKeMenu int find int no 寻找函数 找到想要的课程编号 for unsigned int i 0 i v size i if v i num no return i void display int i printf t 3d 12s 8s 4d 6d 8d 8d 7s n v i num v i name v i cha v i Time v i time1 v i time2 v i xf v i kkxq void XuanKeMenu 选课菜单函数 system cls int choice l 0 cout endl endl cout t endl cout t 学 生 选 课 endl 19 cout t endl endl cout t 姓名 z F nam 学号 z F num 已选 z F cnt cout 门课程 已选课程总学分 z F zxf endl cout t endl cout t 已选课程信息 n cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl for it TT F begin it TT F end it l if l cout choice getchar if choice 1 xuanke else if choice 2 del else if choice 0 MainMenu else if choice 3 else XuanKeMenu system cls cout endl endl cout t endl cout t 学 生 选 课 endl cout t endl endl cout t 姓名 z F nam 学号 z F num 已选 20 z F cnt cout 门课程 已选课程总学分 z F zxf endl cout t endl cout t 已选课程信息 n cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl display find it cout endl t endl cout choice getchar if choice 1 xuanke else if choice 2 del else if choice 0 MainMenu else XuanKeMenu void tq2 char str 提取函数 提前删除时输入的课程编号 string t int i 0 cont 0 while str i if isalnum str i t str i else 21 int tmp atoi t c str set iterator t TT F find tmp if t TT F end t TT F erase t z F cnt z F zxf v find tmp xf i int tmp atoi t c str set iterator t TT F find tmp if t TT F end t TT F erase t z F cnt z F zxf v find tmp xf void del 删除已选课程信息 int m l 0 k 0 char str 100 system cls cout endl endl cout t endl cout t 学 生 选 课 endl cout t 22 endl endl cout t 姓名 z F nam 学号 z F num 已选 z F cnt cout 门课程 已选课程总学分 z F zxf endl cout t endl cout t 已选课程信息 n cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl for it TT F begin it TT F end it l if l cout t t t t请输入要删除的课程的编号 gets str if strcmp str tq2 str system cls cout endl endl cout t endl cout t 学 生 选 课 endl cout t endl endl cout t 姓名 z F nam 学号 z F num 已选 z F cnt cout 门课程 已选课程总学分 z F zxf endl cout t endl cout t 已选课程信息 n cout t 课程 课程 课程 总 23 授课 实验或 学分 开课 endl cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl display find it cout t t t t请输入要删除的课程的编号 gets str if strcmp str tq2 str SaveStuInfo XuanKeMenu void Load 载入函数 载入课程信息 文件此前已建立 FILE fp1 bool f 1 fp1 fopen d subject txt r if fp1 NULL f 0 while f v push back S fclose fp1 void Load2 载入学生信息 文件此前已建立 FILE fp 24 fp fopen d student txt r while feof fp int x fscanf fp s s d d Stu num z push back Stu T clear for int j 0 j St j fscanf fp d TT push back T fclose fp void output 显示函数 将课程信息输出到屏幕 system cls unsigned int i 0 cout endl endl endl cout t endl cout t 课 程 信 息 endl cout t endl endl cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl for i v size i if i cout t 按任意键查看下一页 getch system cls cout endl endl endl cout t endl cout t 课 程 信 息 endl cout t endl endl cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl printf t 3d 12s 8s 4d 6d 8d 8d 7s n v i num v i name v i cha v i Time v i time1 v i time2 v i xf v i kkxq cout t 课程总数为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论