C++课程设计学生选课管理系统说明书.docx
- 文档编号:29826104
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:27
- 大小:306.40KB
C++课程设计学生选课管理系统说明书.docx
《C++课程设计学生选课管理系统说明书.docx》由会员分享,可在线阅读,更多相关《C++课程设计学生选课管理系统说明书.docx(27页珍藏版)》请在冰豆网上搜索。
C++课程设计学生选课管理系统说明书
数学与计算机学院
课程设计说明书
课程名称:
面向对象程序设计-课程设计
课程代码:
8401650
题目:
学生选课管理系统
年级/专业/班:
2009级信科1班
学生姓名:
**************************
学 号:
***************
开始时间:
2010年05月23日
完成时间:
2010年06月20日
课程设计成绩:
学习态度及平时成绩(30)
技术水平与实际能力(20)
创新(5)
说明书撰写质量(45)
总分(100)
指导教师签名:
年月日
摘要
随着计算机的普及,各高校均采用计算机进行学生选课。
而对学生选课相关信息的管理由学生选课管理系统实现。
经过分析其学生选课端和系统管理端的各项功能,利用面向对象的C++编程实现了学生选课管理系统。
该系统选课端具有学生选课、退选课程、查看已选课程、打印选课信息等功能,而管理端具有对学生、教师、备选课程等信息的管理,主要包括增加,删除,查看等功能。
关键词:
学生选课管理系统计算机面向对象C++
1引言
1.1问题的提出
我国高校都实行了学分制,其核心就是允许学生自由选课,自主权交给学生。
如果选课能够通过计算机实现,那么就可以节约很多的人力、物力。
因此,为学生选课提供一个好的系统不仅方便学校对学生选课的管理,也方便学生自由选课。
所以,针对此问题有必要做一个学生选课管理系统软件。
1.2任务与分析
学生选课管理系统实现对学生选课相关信息的管理,能处理学生、教师、课程信息的管理及选课操作。
1.每个学生包括有学号、姓名、总学分等内容;
2.每个教师包括工作证号、姓名、职称等信息;
3.课程包括课程号、课程名、任课教师、学分等信息;
4.能提供若干门课,由学生进行选择,打印出学生选课情况。
本课题主要的目的是通过面向对象的C++编程,实现学生选课管理系统对学生选课相关信息的管理,能处理学生、教师、课程信息的管理及选课操作。
其中每个学生包括有学号、姓名、已选课程和总学分;每个教师包括工作证号、姓名、职称等信息;课程包括课程号、课程名、任课教师、学分等信息;最终要实现能通过管理端提供若干门课,供学生进行选择,退选,并打印出学生选课情况。
在功能实现的基础上,还要设计出良好的界面。
2程序的主要功能
2.1添加功能
这是系统管理端的一个功能,主要是对学生、课程和教师的增加。
其中,学生包括学号、姓名;课程包括课程号、课程名、任课教师和学分;教师包括教师证号、教师姓名、职称。
2.2删除功能
这是系统管理端的一个功能,主要是对学生、课程、教师分别按学号、课程号、教师证号进行删除。
2.3查看功能
在系统管理端,可以分别显示所有学生、课程、教师的信息以供查看。
在学生选课端,则可以查看学生的已选课程。
2.4选课功能
这是学生选课端的一个功能,学生通过输入课程号选课,并在选课同时可以查看课程及任课教师的信息。
2.5退选功能
这是学生选课端的一个功能,学生通过输入课程号退选课程。
2.6打印功能
这是学生选课端的一个功能,学生可以打印出选课的所有信息,包括学号,姓名,已选课程和已选课程的总学分等信息。
3程序运行平台
VC++6.0。
具体操作如下:
打开VC++6.0,新建一个空工程,添加相应的源文件,再编译,链接,执行。
4总体设计
图4.1系统总体框架图
5程序类的说明
∙subject类的声明
classsubject//课程信息类
{Course*head;//头指针
Course*p;//当前指针
public:
subject(){head=p=NULL;};
voidAdd();//增加课程
voidDelete();//删除课程
intSearch(charnu[]);//根据课程号查找课程
voidReadFile();//从文件中读取课程信息
voidWriteFile();//向文件写入课程信息
voidDisplay();//在屏幕中输出全部课程信息
friendXS;
friendJS;
friendvoidxuanke(XSP,charnu[],charna[]);
};
∙JS类的声明
classJS//教师信息类
{Teacher*head;//头指针
Teacher*p;//当前指针
public:
JS(){head=p=NULL;};
voidAdd();//增加教师
voidDelete();//删除教师
voidSearch(charna[]);//通过教师姓名查找任课教师
intSearch1(charnu[]);//通过教师号查找教师
voidReadFile();//从文件中读取教师信息
voidWriteFile();//向文件写入教师信息
voidDisplay();//在屏幕中输出全部教师信息
friendXS;
};
∙stu类的声明
classstu//学生信息类
{Student*head;//头指针
Student*p;//当前指针
public:
stu(){head=p=NULL;};
voidAdd();//增加学生
voidDelete();//删除学生
intSearch(charnu[],charna[]);//按学生学号和姓名查找
intSearch(charnu[]);//按学生学号查找
voidReadFile();//将所有学生的信息写入文件
voidWriteFile();//从文件读出学生信息
voidDisplay();//显示所有学生
friendXS;
};
∙XS类的声明
classXS//学生类
{charnum[10];//学号
charname[20];//姓名
Course*head;//已选课程头指针
Course*p;//已选课程当前指针
floattcredit;//已选课程总学分
public:
XS(){head=p=NULL;tcredit=0;};
voidset(charnu[],charna[])
{strcpy(num,nu);strcpy(name,na);};
voidAddcourse(charnu[]);//学生选课
intSearch(charnu[]);//按课程号查找以选课程
voidDeletecourse(charnu[]);//退选
voidShowcourse();//显示已选课程
floatget_tcredit();//获取已选课程总学分
voidReadFilecourse();//读取已选课程
voidWriteFilecourse();//将已选课程写入文件
friendvoidtuixuan(XSP,charnu[],charna[]);
};
6模块分析
6.1选课端登录验证模块
在主菜单选择1时,便进入选课端登录验证,该模块会提示用户输入学号(nu[10])和姓名(na[20]),当输入完成后,调用intstu:
:
Search(nu,na);,当返回值为0,则输出提示信息“对不起,学号或姓名输入错误!
按任意键返回..”,然后返回主菜单;当返回值为1,则登录学生选课系统。
关键代码如下:
P0:
intb1,b2,b0=menu();
stup1;subjectp2;JSp3;XSp;
if(b0==1)
{system("cls");
p1.ReadFile();
charnu[10],na[20];
cout<<"\n\n\t\t请输入您的学号:
";cin>>nu;
cout<<"\n\n\t\t请输入您的姓名:
";cin>>na;
if(p1.Search(nu,na)==0)
{cout<<"\n\n\t\t对不起,学号或姓名输入错误!
按任意键返回..";
getchar();getchar();gotoP0;}
else
{P1:
b1=menu1();
6.2学生选课端选课模块
在学生选课系统中选择1,进入选课模块。
此时调用voidxuanke(XSP,charnu[],charna[]);函数,此函数首先调用subject:
:
ReadFile();subject:
:
Display();将所有的课程输出来,并提示“请输入要选择的课程号:
”,然后输入课程号(kh[10]),此时会提示“是否查看任课教师信息(y/n):
”,输入y,将输出任课教师信息,如果没有此教师信息,输出“没有此任课教师的信息!
”,当输入n,则不输出教师信息。
此时调用XS:
:
Addcourse(kh);选课,再输出“是否继续选课(y/n):
”如输入y,重复以上选课操作,当输入n,则调用XS:
:
WriteFilecourse();保存已选课程。
关键代码如下:
voidxuanke(XSP,charnu[],charna[])//选课功能函数
{system("cls");
JSJ;
J.ReadFile();
subjectsub;
sub.ReadFile();
sub.Display();
P.set(nu,na);
P.ReadFilecourse();
Loop1:
cout<<"请输入要选择的课程号:
";
charkh[10];
cin>>kh;
cout<<"是否查看任课教师信息(y/n):
";
charY_N;
Loop3:
cin>>Y_N;
if(Y_N=='Y'||Y_N=='y')
{chart[20];
Course*kc=sub.head;
while(kc!
=NULL)
{if(strcmp(kc->um,kh)==0)break;
kc=kc->next;
}
if(kc!
=NULL)
{strcpy(t,kc->kecheng.cteacher);
J.Search(t);
}
else
cout<<"没有此任课教师的信息!
"< } else if(Y_N! ='N'&&Y_N! ='n') {cout<<"输入不正确,请重新输入: ";gotoLoop3;} P.Addcourse(kh); getchar(); cout<<"\n\t是否继续选课(y/n): "; Loop2: cin>>Y_N; if(Y_N=='Y'||Y_N=='y')gotoLoop1; else if(Y_N=='N'||Y_N=='n')P.WriteFilecourse(); else {cout<<"输入不正确,请重新输入: ";gotoLoop2;} getchar(); cout<<"按任意键继续...."; getchar(); } 6.3学生选课端退选课程模块 在学生选课系统中选择2,进入退选课程模块,由voidtuixuan(XSP,charnu[],charna[]);函数完成。 首先调用XS: : ReadFilecourse();和XS: : Showcourse();输出已选课程,然后提示“请输入要退选的课程号: ”,此时可输入课程号(kh[10]),在调用XS: : Deletecourse(kh);XS: : WriteFilecourse();退选课程并保存。 此后会提示“是否继续退选课程(y/n): ”输入y,重复退课操作,输入n,则退出此模块。 关键代码如下: voidtuixuan(XSP,charnu[],charna[])//退选课程功能函数 {system("cls"); P.set(nu,na); P.ReadFilecourse(); Loop3: if(P.head! =NULL) {system("cls"); P.Showcourse(); cout<<"请输入要退选的课程号: "; charkh[10]; cin>>kh; P.Deletecourse(kh); P.WriteFilecourse(); getchar(); cout<<"是否继续退选课程(y/n): "; charY_N; Loop4: cin>>Y_N; if(Y_N=='Y'||Y_N=='y')gotoLoop3; else if(Y_N! ='N'&&Y_N! ='n') {cout<<"输入不正确,请重新输入: ";gotoLoop4;} } elsecout<<"\n\n\t\t没有已选课程,不能退选! "< getchar(); cout<<"按任意键继续...."; getchar(); } 6.4学生选课端查看已选课程模块 在学生选课系统中选择3,进入查看已选课程模块,由函数voidlookyixuan(XSP,charnu[],charna[]);实现。 通过调用XS: : ReadFilecourse();XS: : Showcourse();显示已选课程。 关键代码如下: voidlookyixuan(XSP,charnu[],charna[])//查看学生已选课程函数 {system("cls"); P.set(nu,na); P.ReadFilecourse(); P.Showcourse(); getchar(); cout<<"按任意键继续...."; getchar(); } 6.5学生选课端打印模块 在学生选课系统中选择4,进入打印模块,由函数voiddayin(XSP,charnu[],charna[]);实现。 先输出学生的信息,再调用XS: : Showcourse();输出已选课程,最后调用P.get_tcredit();输出总学分。 关键代码如下: voiddayin(XSP,charnu[],charna[])//打印学生选课情况函数 {system("cls"); P.set(nu,na); P.ReadFilecourse(); system("cls"); cout<<"学号: "< "< cout<<"已选课程: "< P.Showcourse(); cout<<"已选课程总学分: "< getchar(); getchar(); cout<<"按任意键继续...."; getchar(); } 6.6管理员密码验证模块 在主菜单中选择2,进入管理员密码验证。 通过函数voidpassword();实现。 首先提示输入管理员密码,再由用户输入密码,正确则进入选课系统管理端,错误则提示重新输入。 如果错误输入超过3次,就强制退出。 关键代码如下: voidpassword()//密码检查功能函数 {intk=0,i; charA[]="000000",B[10],a; system("cls"); for(i=0;i<6;i++) cout< printf("\t\t\t请输入管理员密码: "); while(k<=2) {i=0; while (1) {a=getch(); if(a==13)break; B[i]=a; i++; printf("*"); } B[i]='\0'; if(strcmp(A,B)==0)return; else {k++; if(k<3) cout<<"\n\n\t\t\t密码错误! 请重新输入: "; } if(k>=3) {cout<<"\n\n\t\t\t输入错误密码超过三次! 请按任意键退出.."; getch(); tuichu(); }}} 6.7管理端添加模块 该模块是对学生,课程,教师的增加操作。 由于三者功能相同,故通过函数模板template 首先询问增加多少个(学生,课程,教师),再输入个数。 然后对每一个对象的详细信息进行输入。 如果已经存在该信息,则提示不能重复添加。 输入完成后保存到文件中。 关键代码如下: template voidADD(TP) {system("cls"); P.ReadFile(); intN,i; cout<<"请问您需要增加几个: "; cin>>N; for(i=0;i {cout<<"第"< "< P.Add(); cout< P.WriteFile(); getchar(); cout<<"按任意键继续...."; getchar(); } 6.8管理端查看模块 该模块是对学生,课程,教师的查看操作。 由于三者功能相同,故通过函数模板template 调用各自的Display();函数,将所有信息输出。 关键代码如下: template voidLOOK(TP) {system("cls"); P.ReadFile(); P.Display(); getchar(); cout<<"按任意键继续...."; getchar(); } 6.9管理端删除模块 该模块是对学生,课程,教师的删除操作。 由于三者功能相同,故通过函数模板template 首先输出(学生,课程,教师)所有信息,再调用各自的Delete();函数将对象删除。 最后将删除后的信息保存到文件中。 关键代码如下: template voidDELETE(TP) {system("cls"); P.ReadFile(); P.Display(); P.Delete(); P.WriteFile(); getchar(); cout<<"按任意键继续...."; getchar(); } 7系统测试 首先进入VC++6.0,打开工程“选课管理系统.dsw”,进入源程序运行。 运行程序后出现主菜单界面,如图7.1。 图7.1主菜单 输入“2”,进入管理员密码验证(管理员密码: “000000”)。 当输入错误密码三次,如图7.2所示,输入正确密码就进入“选课管理系统”菜单界面,如图7.3所示。 图7.2错误密码验证 图7.3选课系统管理端菜单 输入“1”,进入增加学生界面。 再输入“4”,增加4个学生。 再根据提示输入学生相关信息,到第4个时输入第1个学生的学号,第4个学生将不能被添加,如图7.4。 图7.4增加学生 按任意键后,回到管理端菜单,输入“2”,查看所有学生信息,如图7.5所示。 图7.5查看所有学生 按任意键后,回到管理端菜单,输入“3”,进入删除学生界面,输入要删除的学生学号“*****”,完成对学生“zhangxiong”的删除,如图7.6。 当输入的学号没有时,如图7.7所示。 再查看学生,确认删除操作成功,如图7.8。 图7.6删除学生 图7.7删除的学生不存在 图7.8查看删除后的所有学生 按任意键返回选课管理菜单,输入“4”,进入增加课程界面。 再输入“4”,增加4门课程。 再根据提示输入课程相关信息,到第4个时输入第1个课程的课程号,第4个课程将不能被添加,如图7.9所示。 图7.9增加课程 按任意键返回管理端菜单,输入“5”,查看所有课程信息,如图7.10所示。 图7.10查看课程 按任意键回到管理端菜单,输入“6”,进入删除课程界面,输入要删除的课程号“10002”,此时没有此课程,如图7.11。 当输入的课程号“20002”时,如图7.12所示。 再查看课程,确认删除操作成功,如图7.13。 图7.11删除的课程不存在 图7.12删除课程 图7.13查看删除后的所有课程 按任意键返回选课管理菜单,输入“7”,进入增加教师界面。 再输入“4”,增加4名教师。 再根据提示输入教师相关信息,到第4个时输入第2个教师的教师号,第4个教师将不能被添加,如图7.14所示。 图7.14增加教师 按任意键返回管理端菜单,输入“8”,查看所有教师信息,如图7.15所示。 图7.15查看教师 按任意键回到管理端菜单,输入“9”,进入删除教师界面,输入要删除的教师证号“10000”,此时没有此教师,如图7.16。 当输入的课程号“30002”时,如图7.17所示。 再查看教师,确认删除操作成功,如图7.18。 图7.16删除的教师不存在 图7.17删除教师 图7.18查看删除后的所有教师 按任意键回到管理端菜单(可以在此再增加一些课程,教师等,以供选课时有更多的选择),输入“0”,返回主菜单,再输入“1”,进入学生选课系统登录界面,输入的学号和姓名不存在或不匹配,则如图7.19;输入的学号和姓名存在且匹配,则进入选课端菜单,如图7.20。 图7.19学生选课系统错误登录 图7.20学生选课系统菜单 在选课系统菜单中输入“1”,进入选课。 分别输入“20001”、“20002”、“20003”、“123456”测试选课。 如图7.21。 图7.21学生选课 按任意键返回选课系统菜单,输入“3”,查看已选课程,如图7.22。 图7.22查看已选课程 按任意键返回选课系统菜单,输入“4”,打印选课信息,如图7.23。 图7.23打印选课信息 按任意键返回选课系统菜单,输入“2”,进入退选课程界面。 输入“54321”,没有此课程,如图7.24,再输入“y”,然后输入“20002”,删除课程“Chinese”,如图7.25所示。 再输入“n”,返回选课系统菜单,输入“3”,查看退选课程后的已选课程,确认是否被删除,如图7.26。 图7.24退选的课程不存在 图7.25退选课程 图7.26退选课程后查看已选课程 按任意键返回,输入“0”,返回主菜单,再输入“0”,退出系统,如图7.27。 图7.27退出系统 通过上述测试,本系统实现了对学生、教师、课程的管理功能和学生自主选课、退选和打印选课信息等功能,能避免询问时对“y”和“n”的输入错误,从界面(下拉菜单)方面来说,也方便实用。 所以,此系统功能全部实现,符合要求。 8结论 刚拿到课程设计任务书时,我看了一下题目及要求,感觉这个课程设计很简单。 但是,到我开始做时,才发觉我学的知识太少,对链表,指针的应用显得特别的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 学生 选课 管理 系统 说明书