1、学生选课管理系统报告辽宁石油化工大学计算机与通信工程学院课程设计说明书课 程 名 称: 面向对象程序设计1-课程设计 题 目: 学生选课系统 年级/专业/班: 软件1001班 学 生 姓 名: 王琳 学 号: 1011030127 指 导 教 师: 石 元 博 开 始 时 间: 2011 年 12 月 05 日完 成 时 间: 2011 年 12 月 10 日课 设 成 绩: 摘 要 3引言 31. 任务与分析 32. 程序运行平台 43. 系统设计 44.系统实现 44.1课程类的声明 44.2教师类的声明 54.3学生类的声明 64.4主要实现 74.41选课端验证 74.4.2选课端 8
2、4.43退选课程 104.4.4查看选课 124.4.5密码验证 124.4.6选课端添加 144.4.7选课端删除 144.48管理员查看 155.结论 15摘 要 随着计算机的普及,各高校均采用计算机进行学生选课。而对学生选课相关信息的管理由学生选课管理系统实现。经过分析其学生选课端和系统管理端的各项功能,利用面向对象的C+编程实现了学生选课管理系统。该系统选课端具有学生选课、退选课程、查看已选课程、打印选课信息等功能,而管理端具有对学生、教师、备选课程等信息的管理,主要包括增加,删除,查看等功能。引言1. 任务与分析学生选课管理系统实现对学生选课相关信息的管理,能处理学生、教师、课程信息
3、的管理及选课操作。1. 每个学生包括有学号、姓名、总学分等内容;2. 每个教师包括工作证号、姓名、职称等信息;3. 课程包括课程号、课程名、任课教师、学分等信息;4. 能提供若干门课,由学生进行选择,打印出学生选课情况。本课题主要的目的是通过面向对象的C+编程,实现学生选课管理系统对学生选课相关信息的管理,能处理学生、教师、课程信息的管理及选课操作。其中每个学生包括有学号、姓名、已选课程和总学分;每个教师包括工作证号、姓名、职称等信息;课程包括课程号、课程名、任课教师、学分等信息;最终要实现能通过管理端提供若干门课,供学生进行选择,退选,并打印出学生选课情况。在功能实现的基础上,还要设计出良好
4、的界面。2. 程序运行平台VC+6.0。具体操作如下:打开VC+6.0,新建一个空工程,添加相应的源文件,再编译,链接,执行。3. 系统设计 学生选课管理系统:(1)学生选课端 选择课程、退选课程、查看已选课程、返回主菜单、退出系统 (2)系统管理端:管理员验证:增加学生、查看所有学生、删除学生、增加课程、查看所有课程、删除课程、增加教师、查看所有教师、删除教师、返回主菜单、退出系统(3)退出系统4.系统实现4.1课程类的声明 class subject / 课程信息类Course *head; /头指针Course *p; /当前指针public: subject()head=p=NULL;
5、 ; void Add(); /增加课程 void Delete(); /删除课程 int Search(char nu); /根据课程号查找课程 void ReadFile(); /从文件中读取课程信息 void WriteFile(); /向文件写入课程信息 void Display(); /在屏幕中输出全部课程信息 friend XS; friend JS; friend void xuanke(XS P,char nu,char na);4.2教师类的声明class JS /教师信息类 Teacher *head; /头指针Teacher *p; /当前指针public: JS()he
6、ad=p=NULL; void Add(); /增加教师 void Delete(); /删除教师 void Search(char na); /通过教师姓名查找任课教师 int Search1(char nu); /通过教师号查找教师 void ReadFile(); /从文件中读取教师信息 void WriteFile(); /向文件写入教师信息 void Display(); /在屏幕中输出全部教师信息 friend XS; 4.3学生类的声明 class stu /学生信息类 Student *head; /头指针 Student *p; /当前指针public: stu()head=
7、p=NULL; void Add(); /增加学生 void Delete(); /删除学生 int Search(char nu,char na); /按学生学号和姓名查找 int Search(char nu); /按学生学号查找 void ReadFile(); /将所有学生的信息写入文件 void WriteFile(); /从文件读出学生信息 void Display(); /显示所有学生 friend XS; class XS /学生类char num10; /学号char name20; /姓名Course *head; /已选课程头指针 Course *p; /已选课程当前指针
8、float tcredit; /已选课程总学分public: XS()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(); /读取已
9、选课程 void WriteFilecourse(); /将已选课程写入文件 friend void tuixuan(XS P,char nu,char na);;4.4主要实现4.41选课端验证int b1,b2,b0=menu(); stu p1;subject 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;elseP1:
10、b1=menu1();4.4.2选课端void xuanke(XS P,char nu,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) if(strcmp(kc-um,kh)=0) break; kc=kc-next; if(kc!=N
11、ULL)strcpy(t,kc-kecheng.cteacher);J.Search(t);elsecout没有此任课教师的信息!endl;else if(Y_N!=N&Y_N!=n) cout输入不正确,请重新输入:;goto 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 cout输入不正确,请重新输入:;goto Loop2;getchar();cout按任意键继续.;getchar(); 4.43退选课程void
12、tuixuan(XS P,char nu,char na)/退选课程功能函数system(cls); P.set(nu,na);P.ReadFilecourse ();Loop3:if(P.head !=NULL)system(cls);P.Showcourse();coutkh;P.Deletecourse(kh);P.WriteFilecourse();getchar();coutY_N;if(Y_N=Y|Y_N=y)goto Loop3;else if(Y_N!=N&Y_N!=n)cout输入不正确,请重新输入:;goto Loop4;else coutnntt没有已选课程,不能退选!e
13、ndlendl;getchar();cout按任意键继续.;getchar();4.4.4查看选课void lookyixuan(XS P,char nu,char na)/查看学生已选课程函数system(cls);P.set(nu,na);P.ReadFilecourse ();P.Showcourse();getchar();cout按任意键继续.;getchar();4.4.5密码验证void password()/密码检查功能函数int k=0,i;char A=000000,B10,a; system(cls);for(i=0;i6;i+)coutendl;printf(ttt请输
14、入管理员密码: );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;elsek+;if(k3)cout=3)coutnnttt输入错误密码超过三次!请按任意键退出.;getch();tuichu();4.4.6选课端添加template /增加功能函数模板void ADD(T P)system(cls);P.ReadFile();int N,i;coutN;for(i=0;iN;i+)cout第i+1个: endl;P.Add();coutendl;P.Wr
15、iteFile();getchar();cout按任意键继续.;getchar(); 4.4.7选课端删除template /删除功能函数模板void DELETE(T P)system(cls);P.ReadFile();P.Display();P.Delete();P.WriteFile();getchar();cout按任意键继续.;getchar();4.48管理员查看template /查看功能函数模板void LOOK(T P) system(cls);P.ReadFile();P.Display();getchar();cout按任意键继续.;getchar(); 5.结论对于这
16、次的课程设计任务,我感觉自己完成的不是太好。在做报告的过程中,我发现我学的知识太少了,对链表,对指针的应用显得特别的生疏,频繁出错。知道快完成时才发现好多功能无法实现,我有点灰心丧气,有时候想要放弃不写了。可是这是我应该学习的,我不应该放弃。后来,我经过几天的调试和请教,终于下定决心重新再来写一次。通过网络和翻阅书籍,我又学到了很多东西,最终有了清晰地思路去完成“学生选课管理系统”的设计和编程。经过多次的删改,终于实现了其基本功能,但是还不够完善,我又请教了几个同学,接受了她们的一些建议,对程序进行了完善。可能由于现在知识能力的限制,程序还存在些许不足,有待改进的地方还很多,比如对程序运行时内存空间的清理做的不是很好。通过本次的课程设计,让我体会到了自己做出一个软件后的乐趣,让我对C+充满了好奇心和无比的兴趣。除此之外,这次的课程设计也增加了我学习计算机编程的信心。在今后的学习中,我会更加努力地去学习,学习在C+课程设计里体现的知难而进,不耻下问,主动积极,持之以恒的态度,今后我的成绩也会越来越好。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1