学生选课管理系统面向对象程序设计课程设计毕业设计论文.docx
- 文档编号:10296627
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:28
- 大小:288.50KB
学生选课管理系统面向对象程序设计课程设计毕业设计论文.docx
《学生选课管理系统面向对象程序设计课程设计毕业设计论文.docx》由会员分享,可在线阅读,更多相关《学生选课管理系统面向对象程序设计课程设计毕业设计论文.docx(28页珍藏版)》请在冰点文库上搜索。
学生选课管理系统面向对象程序设计课程设计毕业设计论文
目录
1引言1
1.1问题的提出1
1.2任务与分析1
2程序的主要功能1
2.1添加功能1
2.2删除功能2
2.3查看功能2
2.4选课功能2
2.5退选功能2
2.6打印功能2
3程序运行平台2
4总体设计2
5程序类的说明3
6模块分析6
6.1选课端登录验证模块6
6.2学生选课端选课模块6
6.3学生选课端退选课程模块9
6.4学生选课端查看已选课程模块10
6.5学生选课端打印模块11
6.6管理员密码验证模块12
6.7管理端增加模块13
6.8管理端查看模块14
6.9管理端删除模块14
7系统测试15
8结论26
致谢27
参考文献27
摘要
随着计算机的普及,各高校均采用计算机进行学生选课。
而对学生选课相关信息的管理由学生选课管理系统实现。
经过分析其学生选课端和系统管理端的各项功能,利用面向对象的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”,进入删除学生界面,输入要删除的学生学号“10002”,完成对学生“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文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 选课 管理 系统 面向 对象 程序设计 课程设计 毕业设计 论文