版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数学与计算机学院 课程设计说明书 课 程 名 称: 面向对象程序设计-课程设计 课 程 代 码: 题 目: 学生选课管理系统 年级/专业/班: 2009 级信科 1 班 学 生 姓 名: 学 号: 312009070102119 开 始 时 间: 2010 年 05 月 2 23 日 完 成 时 间: 2010 年 0606 月 2020 日 课程设计成绩: 学习态度及平 时成绩(30) 技术水平与实际能 力(20) 创新 (5) 说明书撰写质量(45) 总 分 (100) 指导教师签名: 年 月 日 学生选课管理系统 目 录 1 1 引引 言言 .1 1 1.1 问题的提出 .1 1.2 任
2、务与分析 .1 2 2 程序的主要功能程序的主要功能 .1 1 2.1 添加功能.1 2.2 删除功能.2 2.3 查看功能.2 2.4 选课功能.2 2.5 退选功能.2 2.6 打印功能.2 3 3 程序运行平台程序运行平台 .2 2 4 4 总体设计总体设计 .2 2 5 5 程序类的说明程序类的说明 .3 3 6 6 模块分析模块分析 .6 6 6.1 选课端登录验证模块.6 6.2 学生选课端选课模块.6 6.3 学生选课端退选课程模块.9 6.4 学生选课端查看已选课程模块.10 6.5 学生选课端打印模块.11 6.6 管理员密码验证模块.12 6.7 管理端增加模块.13 6.
3、8 管理端查看模块.14 6.9 管理端删除模块.14 7 7 系统测试系统测试 .1 15 5 8 8 结论结论 .2626 致谢致谢 .2727 参考文献参考文献 .2727 学生选课管理系统 摘摘 要要 随着计算机的普及,各高校均采用计算机进行学生选课。而对学生选课相 关信息的管理由学生选课管理系统实现。经过分析其学生选课端和系统管理端的 各项功能,利用面向对象的 c+编程实现了学生选课管理系统。该系统选课端具 有学生选课、退选课程、查看已选课程、打印选课信息等功能,而管理端具有对 学生、教师、备选课程等信息的管理,主要包括增加,删除,查看等功能。 关键词:关键词:学生选课管理系统 计算
4、机 面向对象 c+ -1- 学生选课管理系统 1 引引 言言 1.1 问题的提出问题的提出 我国高校都实行了学分制,其核心就是允许学生自由选课,自主权交给学生。 如果选课能够通过计算机实现,那么就可以节约很多的人力、物力。因此,为学生 选课提供一个好的系统不仅方便学校对学生选课的管理,也方便学生自由选课。所 以,针对此问题有必要做一个学生选课管理系统软件。 1.2 任务与分析任务与分析 学生选课管理系统实现对学生选课相关信息的管理,能处理学生、教师、课程信 息的管理及选课操作。 1. 每个学生包括有学号、姓名、总学分等内容; 2. 每个教师包括工作证号、姓名、职称等信息; 3. 课程包括课程号
5、、课程名、任课教师、学分等信息; 4. 能提供若干门课,由学生进行选择,打印出学生选课情况。 本课题主要的目的是通过面向对象的 c+编程,实现学生选课管理系统对学生选课 相关信息的管理,能处理学生、教师、课程信息的管理及选课操作。其中每个学生包 括有学号、姓名、已选课程和总学分;每个教师包括工作证号、姓名、职称等信息; 课程包括课程号、课程名、任课教师、学分等信息;最终要实现能通过管理端提供若 干门课,供学生进行选择,退选,并打印出学生选课情况。在功能实现的基础上,还 要设计出良好的界面。 2 2 程序的主要功能程序的主要功能 2.1 添加功能添加功能 这是系统管理端的一个功能,主要是对学生、
6、课程和教师的增加。其中,学生包 括学号、姓名;课程包括课程号、课程名、任课教师和学分;教师包括教师证号、教 师姓名、职称。 -2- 学生选课管理系统 2.2 删除功能删除功能 这是系统管理端的一个功能,主要是对学生、课程、教师分别按学号、课程号、 教师证号进行删除。 2.3 查看功能查看功能 在系统管理端,可以分别显示所有学生、课程、教师的信息以供查看。在学生选 课端,则可以查看学生的已选课程。 2.4 选课功能选课功能 这是学生选课端的一个功能,学生通过输入课程号选课,并在选课同时可以查看 课程及任课教师的信息。 2.5 退选功能退选功能 这是学生选课端的一个功能,学生通过输入课程号退选课程
7、。 2.6 打印功能打印功能 这是学生选课端的一个功能,学生可以打印出选课的所有信息,包括学号,姓名, 已选课程和已选课程的总学分等信息。 3 3 程序运行平台程序运行平台 vc+6.0。 具体操作如下:打开 vc+6.0,新建一个空工程,添加相应的源文件,再编译, 链接,执行。 4 4 总体设计总体设计 -3- 学生选课管理系统 学生选课管理系统 学 生 选 课 端 管 理 员 验 证 退 出 系 统 系 统 管 理 端 删 除 学 生 返 回 主 菜 单 增 加 课 程 查 看 所 有 课 程 删 除 课 程 增 加 教 师 删 除 教 师 查 看 所 有 教 师 选 择 课 程 退 选
8、课 程 查 看 已 选 课 程 打 印 选 课 情 况 返 回 主 菜 单 查 看 所 有 学 生 增 加 学 生 图 4.1 系统总体框架图 5 5 程序类的说明程序类的说明 subjectsubject 类的声明类的声明 class subject / 课程信息类 course *head; /头指针 course *p; /当前指针 public: subject()head=p=null; ; void add(); /增加课程 void delete(); /删除课程 int search(char nu); /根据课程号查找课程 void readfile(); /从文件中读取课程
9、信息 -4- 学生选课管理系统 void writefile(); /向文件写入课程信息 void display(); /在屏幕中输出全部课程信息 friend xs; friend js; friend void xuanke(xs p,char nu,char na); ; jsjs 类的声明类的声明 class js /教师信息类 teacher *head; /头指针 teacher *p; /当前指针 public: js()head=p=null; void add(); /增加教师 void delete(); /删除教师 void search(char na); /通过教师
10、姓名查找任课教师 int search1(char nu); /通过教师号查找教师 void readfile(); /从文件中读取教师信息 void writefile(); /向文件写入教师信息 void display(); /在屏幕中输出全部教师信息 friend xs; ; stustu 类的声明类的声明 class stu /学生信息类 student *head; /头指针 student *p; /当前指针 public: stu()head=p=null; void add(); /增加学生 -5- 学生选课管理系统 void delete(); /删除学生 int sear
11、ch(char nu,char na); /按学生学号和姓名查找 int search(char nu); /按学生学号查找 void readfile(); /将所有学生的信息写入文件 void writefile(); /从文件读出学生信息 void display(); /显示所有学生 friend xs; ; xsxs 类的声明类的声明 class xs /学生类 char num10; /学号 char name20; /姓名 course *head; /已选课程头指针 course *p; /已选课程当前指针 float tcredit; /已选课程总学分 public: xs(
12、)head=p=null;tcredit=0; void set(char nu,char na ) strcpy(num,nu); strcpy(name,na); void addcourse(char nu); /学生选课 int search(char nu); /按课程号查找以选课程 void deletecourse(char nu); /退选 void showcourse(); /显示已选课程 float get_tcredit(); /获取已选课程总学分 void readfilecourse(); /读取已选课程 void writefilecourse(); /将已选课程
13、写入文件 friend void tuixuan(xs p,char nu,char na); ; -6- 学生选课管理系统 6 6 模块分析模块分析 6.16.1 选课端登录验证模块选课端登录验证模块 在主菜单选择 1 时,便进入选课端登录验证,该模块会提示用户输入学号(nu10) 和姓名(na20) ,当输入完成后,调用 int stu:search(nu,na);,当返回值为 0,则 输出提示信息“对不起,学号或姓名输入错误!按任意键返回.” ,然后返回主菜单; 当返回值为 1,则登录学生选课系统。 关键代码如下: p0: int b1,b2,b0=menu(); stu p1;subj
14、ect p2;js p3; xs p; if(b0=1) system(cls); p1.readfile(); char nu10,na20; coutnu; coutna; if(p1.search(nu,na)=0) coutnntt 对不起,学号或姓名输入错误!按任意键返回.; getchar();getchar();goto p0; else p1:b1=menu1(); 6.26.2 学生选课端选课模块学生选课端选课模块 在学生选课系统中选择 1,进入选课模块。此时调用 void xuanke(xs p,char nu, char na);函数,此函数首先调用 subject:re
15、adfile(); subject:display();将 所有的课程输出来,并提示“请输入要选择的课程号:” ,然后输入课程号(kh10), 此时会提示“是否查看任课教师信息(y/n):” ,输入 y,将输出任课教师信息,如果没 有此教师信息,输出“没有此任课教师的信息!” ,当输入 n,则不输出教师信息。此 时调用 xs:addcourse(kh);选课,再输出“是否继续选课(y/n): ”如输入 y,重复以 -7- 学生选课管理系统 上选课操作,当输入 n,则调用 xs:writefilecourse();保存已选课程。 关键代码如下: void xuanke(xs p,char nu,
16、char na)/选课功能函数 system(cls); js j; j.readfile(); subject sub; sub.readfile(); sub.display(); p.set(nu,na); p.readfilecourse (); loop1: coutkh; couty_n; if(y_n=y|y_n=y) char t20; course *kc=sub.head; while(kc!=null) -8- 学生选课管理系统 if(strcmp(kc-um,kh)=0) break; kc=kc-next; if(kc!=null) strcpy(t,kc-keche
17、ng.cteacher); j.search(t); else cout没有此任课教师的信息!endl; else if(y_n!=ngoto loop3; p.addcourse(kh); getchar(); couty_n; if(y_n=y|y_n=y)goto loop1; else if(y_n=n|y_n=n)p.writefilecourse(); else -9- 学生选课管理系统 cout输入不正确,请重新输入:;goto loop2; getchar(); cout按任意键继续.; getchar(); 6.36.3 学生选课端退选课程模块学生选课端退选课程模块 在学生选
18、课系统中选择 2,进入退选课程模块,由 void tuixuan(xs p,char nu, char na);函数完成。首先调用 xs:readfilecourse ();和 xs:showcourse();输出 已选课程,然后提示“请输入要退选的课程号:” ,此时可输入课程号(kh10),在 调用 xs:deletecourse(kh);xs:writefilecourse();退选课程并保存。此后会提示 “是否继续退选课程(y/n): ”输入 y,重复退课操作,输入 n,则退出此模块。 关键代码如下: void tuixuan(xs p,char nu,char na)/退选课程功能函数
19、 system(cls); p.set(nu,na); p.readfilecourse (); loop3: if(p.head !=null) system(cls); p.showcourse(); coutkh; p.deletecourse(kh); -10- 学生选课管理系统 p.writefilecourse(); getchar(); couty_n; if(y_n=y|y_n=y)goto loop3; else if(y_n!=ngoto loop4; else coutnntt 没有已选课程,不能退选!endlendl; getchar(); cout按任意键继续.; g
20、etchar(); 6.46.4 学生选课端查看已选课程模块学生选课端查看已选课程模块 在学生选课系统中选择 3,进入查看已选课程模块,由函数 void lookyixuan(xs p,char nu,char na);实现。通过调用 xs:readfilecourse ();xs:showcourse(); 显示已选课程。 关键代码如下: void lookyixuan(xs p,char nu,char na)/查看学生已选课程函数 system(cls); -11- 学生选课管理系统 p.set(nu,na); p.readfilecourse (); p.showcourse(); g
21、etchar(); cout按任意键继续.; getchar(); 6.56.5 学生选课端打印模块学生选课端打印模块 在学生选课系统中选择 4,进入打印模块,由函数 void dayin(xs p,char nu, char na);实现。先输出学生的信息,再调用 xs:showcourse();输出已选课程,最 后调用 p.get_tcredit();输出总学分。 关键代码如下: void dayin(xs p,char nu,char na)/打印学生选课情况函数 system(cls); p.set(nu,na); p.readfilecourse (); system(cls); c
22、out学号:nut 姓名:naendlendl; cout已选课程:endlendl; p.showcourse(); cout已选课程总学分:p.get_tcredit()endlendl; getchar(); getchar(); cout按任意键继续.; getchar(); -12- 学生选课管理系统 6.66.6 管理员密码验证模块管理员密码验证模块 在主菜单中选择 2,进入管理员密码验证。通过函数 void password();实现。首 先提示输入管理员密码,再由用户输入密码,正确则进入选课系统管理端,错误则提 示重新输入。如果错误输入超过 3 次,就强制退出。 关键代码如下:
23、 void password()/密码检查功能函数 int k=0,i; char a=000000,b10,a; system(cls); for(i=0;i6;i+) coutendl; printf(ttt 请输入管理员密码: ); while(k=2) i=0; while(1) a=getch(); if(a=13)break; bi=a; i+; printf(*); bi=0; if(strcmp(a,b)=0)return; else -13- 学生选课管理系统 k+; if(k3) cout=3) coutnnttt 输入错误密码超过三次!请按任意键退出.; getch();
24、 tuichu(); 6.76.7 管理端添加模块管理端添加模块 该模块是对学生,课程,教师的增加操作。由于三者功能相同,故通过函数模板 template void add(t p);实现。首先询问增加多少个(学生,课程,教师) , 再输入个数。然后对每一个对象的详细信息进行输入。如果已经存在该信息,则提示 不能重复添加。输入完成后保存到文件中。 关键代码如下: template /增加功能函数模板 void add(t p) system(cls); p.readfile(); int n,i; coutn; for(i=0;in;i+) cout第i+1个: endl; p.add();
25、coutendl; -14- 学生选课管理系统 p.writefile(); getchar(); cout按任意键继续.; getchar(); 6.86.8 管理端查看模块管理端查看模块 该模块是对学生,课程,教师的查看操作。由于三者功能相同,故通过函数模板 template void look (t p);实现。调用各自的 display();函数,将所有信息 输出。 关键代码如下: template /查看功能函数模板 void look(t p) system(cls); p.readfile(); p.display(); getchar(); cout按任意键继续.; getch
26、ar(); 6.96.9 管理端删除模块管理端删除模块 该模块是对学生,课程,教师的删除操作。由于三者功能相同,故通过函数模板 template void delete(t p);实现。首先输出(学生,课程,教师)所有信 息,再调用各自的 delete();函数将对象删除。最后将删除后的信息保存到文件中。 关键代码如下: template /删除功能函数模板 void delete(t p) system(cls); -15- 学生选课管理系统 p.readfile(); p.display(); p.delete(); p.writefile(); getchar(); cout按任意键继续
27、.; getchar(); 7 系统测试 首先进入 vc+6.0,打开工程 “选课管理系统.dsw” ,进入源程序运行。 运行程序后出现主菜单界面,如图 7.1。 图 7.1 主菜单 输入“2” ,进入管理员密码验证(管理员密码:“000000” ) 。当输入错误密码三 次,如图 7.2 所示,输入正确密码就进入“选课管理系统”菜单界面,如图 7.3 所示。 -16- 学生选课管理系统 图 7.2 错误密码验证 图 7.3 选课系统管理端菜单 输入“1” ,进入增加学生界面。再输入“4” ,增加 4 个学生。再根据提示输入学 生相关信息,到第 4 个时输入第 1 个学生的学号,第 4 个学生将
28、不能被添加,如图 7.4。 -17- 学生选课管理系统 图 7.4 增加学生 按任意键后,回到管理端菜单,输入“2” ,查看所有学生信息,如图 7.5 所示。 图 7.5 查看所有学生 按任意键后,回到管理端菜单,输入“3” ,进入删除学生界面,输入要删除的学 生学号“10002” ,完成对学生“zhangxiong”的删除,如图 7.6。当输入的学号没有时, 如图 7.7 所示。再查看学生,确认删除操作成功,如图 7.8。 -18- 学生选课管理系统 图 7.6 删除学生 图 7.7 删除的学生不存在 图 7.8 查看删除后的所有学生 按任意键返回选课管理菜单,输入“4” ,进入增加课程界面
29、。再输入“4” ,增加 4 门课程。再根据提示输入课程相关信息,到第 4 个时输入第 1 个课程的课程号,第 4 个课程将不能被添加,如图 7.9 所示。 -19- 学生选课管理系统 图 7.9 增加课程 按任意键返回管理端菜单,输入“5” ,查看所有课程信息,如图 7.10 所示。 图 7.10 查看课程 按任意键回到管理端菜单,输入“6” ,进入删除课程界面,输入要删除的课程号 “10002” ,此时没有此课程,如图 7.11。当输入的课程号“20002”时,如图 7.12 所 示。再查看课程,确认删除操作成功,如图 7.13。 -20- 学生选课管理系统 图 7.11 删除的课程不存在
30、图 7.12 删除课程 图 7.13 查看删除后的所有课程 按任意键返回选课管理菜单,输入“7” ,进入增加教师界面。再输入“4” ,增加 4 名教师。再根据提示输入教师相关信息,到第 4 个时输入第 2 个教师的教师号,第 4 个教师将不能被添加,如图 7.14 所示。 -21- 学生选课管理系统 图 7.14 增加教师 按任意键返回管理端菜单,输入“8” ,查看所有教师信息,如图 7.15 所示。 图 7.15 查看教师 按任意键回到管理端菜单,输入“9” ,进入删除教师界面,输入要删除的教师证 号“10000” ,此时没有此教师,如图 7.16。当输入的课程号“30002”时,如图 7.
31、17 所示。再查看教师,确认删除操作成功,如图 7.18。 -22- 学生选课管理系统 图 7.16 删除的教师不存在 图 7.17 删除教师 图 7.18 查看删除后的所有教师 按任意键回到管理端菜单(可以在此再增加一些课程,教师等,以供选课时有更 多的选择) ,输入“0” ,返回主菜单,再输入“1” ,进入学生选课系统登录界面,输入 的学号和姓名不存在或不匹配,则如图 7.19;输入的学号和姓名存在且匹配,则进入 选课端菜单,如图 7.20。 图 7.19 学生选课系统错误登录 -23- 学生选课管理系统 图 7.20 学生选课系统菜单 在选课系统菜单中输入“1” ,进入选课。分别输入“20001” 、 “20002” 、 “20003” 、 “123456”测试选课。如图 7.21。 -24- 学生选课管理系统 图 7.21 学生选课 按任意键返回选课系统菜单,输入“3” ,查看已选课程,如图 7.22。 图 7.22 查看已选课程 按任意键返回选课系统菜单,输入“4” ,打印选课信息,如图 7.23。 图 7.23 打印选课信息 按任意键返回选课系统菜单,输入“2” ,进入退选课程界面。输入“54321” ,没 有此课程,如图 7.24,再输入“y”,然后输入“20002” ,删除课程“
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年天津北海油人力资源咨询服务有限公司招聘外包工作人员备考题库及答案详解(易错题)
- 2025年人民日报社公开招聘64名备考题库及答案详解(新)
- 靶向药物总结2026
- 2026荣耀校招笔试题及答案
- 与摸球相关的概率课件2025-2026学年北师大版数学七年级下册
- 2025-2026学年移动教学设计万能模版
- 2025-2026学年咏雪教学设计教资
- 2025-2026学年教案模板双人书桌
- 电力安全管理培训建议
- 2026春牛津译林版英语八年级下册Unit+8+Reading+(同步课件)
- 2026年内蒙古机电职业技术学院单招职业适应性考试题库附答案详解(基础题)
- 山东济宁市2025-2026学年高二上学期期末考试语文试题及参考答案
- 安徽能源集团秋招面试题及答案
- 2026年沈阳职业技术学院单招职业技能测试模拟测试卷附答案解析
- 2026年及未来5年中国城市地铁综合监控系统市场运行态势及行业发展前景预测报告
- 干细胞治疗共济失调的联合用药策略
- 山林共协议书范本
- 哈尔滨工业大学概况
- 《婚姻家庭继承法(第八版)》课件 房绍坤 第1-8章 婚姻家庭法概述-收养制度
- 施工便道施工方案 ()
- 配电线路故障指示器技术规范2013版
评论
0/150
提交评论