还剩41页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
课程设计报告课程名称面向对象程序设计C++设计题目学生选课管理系统专业计算机科学与技术姓名学号指导教师李晓虹
1、系统需求分析
1.1选题背景当今时代是飞速发展的信息时代在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境计算机的最到好处在于利用它能够进行信息管理使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性随着高校的多样全面发展,学生的人数和课程的种类急速增加,传统的选课管理模式已经无法满足当前的实际需求,学生选课作为一种信息资源的集散地,包含很多的信息数据的管理由于数据繁多,容易丢失,且不易查找并且数据处理手工操作工作量大,出错率高,出错后不易更改,造成各种不便,总的来说,缺乏系统,规范的信息管理手段尽管有的学校有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是学生选课管理信息系统的开发基本环境背景
1.2课题意义基于以上问题,我们认为有必要建立一个学生选课管理信息系统,使学生选课信息管理工作规范化、系统化、程序化,以避免学生选课管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改选课情况系统实现后,极大的方便对学生进行选课和选课后班级的安排管理工作,学生选课信息的管理避免在安排课程信息的滞后,减少信息交流的繁琐过程及其带来的额外开销促进高校教育的计算机信息化进程,提高高校的工作效率并且对于系统本身而言,具有更高的使用性、安全性能够满足学生选课,以及学生对选课信息的管理同时,通过该课程设计,我们可以达到把C++程序设计理论知识更加的巩固加深,加强动手操作能力与实践能力,学以致用,与现实生活中的应用充分的结合起来,也实现了知识的活学活用
1.3功能需求分析一个完善的学生选课管理信息系统能够极大的提高学生选课信息的管理效率,具有检索迅速,查找方便,可靠性高,存储量大,更新快,寿命长,成本低等优点本系统主要可以实现以下任务目标
1、系统可以准确的记录和查询学生、老师以及所开设的课程的基本信息
2、学生登录系统后可以根据本专业制定的教学计划进行选课操作,可以查询个人的基本信息性能需求本学生信息管理系统要能够抵御用户可能的各种操作,包括修改、更新、删除等操作,以保证软件的可行性、稳定性、健壮性,同时要对数据进行检验,保证数据有效性,可操作性,安全性同时普通用户登录只有浏览的权限系统的非功能性需求实用性系统以用户需求为目标,以方便用户为原则根据用户实际的需求情况,度身订造一套先进的局域网数据传输,从用户角度出发尽可能的方便用户使用,满足基本的用户需要,成为学校等通用的网络软件高可靠性一个实用的系统同时必须是可靠的,本设计通过合理而先进的网络设计以及软、硬件的优化选型,可保证系统数据传输的正确性高安全性在设计中,将充分利用网络软、硬件提供的各种安全措施,既可以保证用户共享资源,同时也可保证关键数据的安全性可扩展性及灵活性系统的设计以方便未来业务的扩展和系统扩充为目标,系统要求能够方便的升级,充分保护系统的投资智能型系统在设计时,充分考虑系统运行的智能性,在使用系统一段时间后,系统可以适应于任何局域网
2.总体设计根据设计要求,我们认为该系统应该包括两个端体系统管理端和学生端
2.1系统管理端
2.
1.1增加学生
2.
1.2增加课程
2.
1.3删除学生
2.
1.4删除课程
2.
1.5填写成绩
2.
1.6更改学分
2.
1.7学生情况
2.
1.8选课情况
2.
1.9保存数据
2.
1.10退出系统
2.2学生端
2.
2.1学生选课
2.
2.2学生情况
2.
2.3选课情况
2.
2.4退出系统
3、详细设计
3.
1.系统一共定义了个类,分别是
3.
1.1对于stedent学生类classstudent{public:student{root=NULL;constmaxcourse=5;factcourse=0;}voidreadnamecharN[];//读入学生的姓名voidgetnamecharN[];//得到学生的姓名voidwrecoursecharN[]floatscore;//要据课程名写入学生课程的成绩floataverage;//学生课程的平均成绩voidaddcoursecharN[]floatg;//给学生增加一门课intfindcoursecharN[];//查找是否已有此课程如果有返回1如果没有返回0intretfactcourse{returnfactcourse;}//得到所学的课程数目course*retroot{returnroot;//利用键表将所有的课程保存起来}intretmaxcourse{return5;//得到最多可学的课程数目}voidclrroot//清零{root=NULL;factcourse=0;}//student//{//}private:charsname
[20];//学生的姓名intmaxcourse;//学生最多可以学五门课程intfactcourse;//学生实际所学的课程数目course*root;//课程的根结点指针};voidstudent::readnamecharN[]{strcpysnameN;}voidstudent::getnamecharN[]{strcpyNsname;}voidstudent::wrecoursecharN[]floatscore{course*p=root;ifp==NULLreturn;ifp!=NULLp=p-Next;whilep{ifstrcmpp-cnameN==0p-grade=score;p=p-Next;}}floatstudent::average{floataver=
0.0;course*p=root;whilep{aver=aver+p-grade;}aver=aver/factcourse;returnaver;}voidstudent::addcoursecharN[]floatg{course*s=newcourse;s-Next=NULL;ifroot==NULLroot=s;course*p=root;course*newcourse=newcourse;newcourse-Next=p-Next;p-Next=newcourse;strcpynewcourse-cnameN;newcourse-grade=g;factcourse++;}intstudent::findcoursecharN[]{course*p=root;ifroot==NULLreturn0;p=p-Next;whilep{ifstrcmpp-cnameN==0return1;p=p-Next;}return0;}/////////////////////////////////////////////////////////////////////////////////////////////structstudentdb{studentstu;studentdb*Next;};structstudentname{chartname
[20];//学生的名字floatresult;//学生所得的该课程分数studentname*Next;};
3.
1.2对于subject课程类classsubject{public:subject{first=NULL;maxstudent=30;activestudnet=0;}floatreadcredit;//得到课程的学分voidgetcreditfloata;//设置学分floatgetaverage;//得到学生的平均成绩floatgetresultcharN[];//查找某个学生的成绩voidgetknamecharN[];//读出课程的名称voidsetknamecharN[];//读入课程的名称studentname*retfirst{returnfirst;//返回根结点}voidfindstudentstudentdb*P;//根据该课程的名称寻找选这课程的学生intretactivestudent{returnactivestudnet;//返回实际学生数}intretmaxstudent{return30;//返回最多学生数30}voidclractivestudnet{activestudnet=0;//从文件中读出来后将实际学生数清零}private:intmaxstudent;//最多学生数intactivestudnet;//实际学生数studentname*first;//学生名单floatcredit;//该课程的学分floataveragerusult;//该课程的平均成绩charkname
[20];//该课程的名称};floatsubject::readcredit{returncredit;}voidsubject::getcreditfloata{credit=a;}floatsubject::getaverage{floatk=
0.0;studentname*p;p=first-Next;ifp==NULLreturn0;whilep{k=k+p-result;p=p-Next;}returnk/activestudnet;}floatsubject::getresultcharN[]{studentname*p;p=first;whilep{ifstrcpyp-tnameN==0returnp-result;p=p-Next;}return-1;}voidsubject::getknamecharN[]{strcpyNkname;}voidsubject::setknamecharN[]{strcpyknameN;}voidsubject::findstudentstudentdb*P{studentname*newcode=newstudentname;newcode-Next=NULL;first=newcode;studentname*T=first;studentdb*K=P-Next;whileK{course*Y=K-stu.retroot;ifY==NULL{K=K-Next;continue;}ifY!=NULLY=Y-Next;whileY{ifstrcmpY-cnamekname==0{studentname*Acode=newstudentname;charName
[20];K-stu.getnameName;strcpyAcode-tnameName;Acode-result=Y-grade;Acode-Next=T-Next;T-Next=Acode;activestudnet=activestudnet+1;break;}Y=Y-Next;}K=K-Next;}return;}///////////////////////////////////////////////////////////////////////////////////voidtuichu{systemcls;cout\n\n\t\t\t谢谢你使用选修课小系统\t再见\n\nendl;cout\n\t如果你觉得此软件有修改及补充之处,请按以下方式联系我们\n\t提出你的宝贵意见.我们将不断地改进并及时的公布新版本谢谢!!\n\nendl;cout\t\t联系方式\n\t\t姓名:郑德锋\n\n\t\t电话:0594-2657094\n\n\t\tEmail:cyan_studio@
163.com\n\n\t\t学校地址:莆田学院36号0443信箱\t邮政编码:351100\n\n\nendl;getch;exit-1;}
3.
1.3对于menu菜单内charmenu{intk=0;chara
[3]ci;systemcls;coutendlendl;cout\t\t\t\tC++课程设计课题\n\nendl;cout\t\t********************************************\n\t\t**\n\t\t*选修课小系统*\n\t\t**\n\t\t**\n\t\t*操作方式:*\n\t\t*
1.选修课系统学生端*\n\t\t**\n\t\t*
2.选修课系统管理端*\n\t\t**\n\t\t********************************************\nendl;while1{cout\n\t\t请选择登入方式:;cina;ifstrlena==1{fori=1;i=2;i++{c=i;ifc==a
[0]returnc;}}cerr\n\n\t\t\t\t输入有误!\nendl;k++;ifk2{systemcls;cerr\n\n\n\t\t~~提示~~:错误输入次数超过三次,你将被强制退出!!\n\nendl;cout\t\t按任意键继续endl;getch;tuichu;}}}/////////////////////////////////////////////////////////////////////////////////////选修课系统端操作charcustom{charA
[10];charb;chari;intk=0;systemcls;;cout\n\n\n\t\t※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\t\t※选修课系统学生端※\n\t\t※※\n\t\t※操作方式:※\n\t\t※
1.学生选课※\n\t\t※
2.学生情况※\n\t\t※
3.选课情况※\n\t\t※
4.退出系统※\n\t\t※※\n\t\t※※※※※※※※※※※※※※※※※※※※※※※※※※※\nendl;while1{cout\t\t\t请选择操作方式:;cinA;ifstrlenA==1{fori=1;i=4;i++{b=i;ifb==A
[0]returnb;}}cerr\n\t\t\t\t输入有误!\nendl;k++;ifk2{systemcls;cerr\n\n\t\t\t~~提示~~错误输入超过三次!你将被强制退出!!\nendl;cout\t\t按任意键继续endl;getch;tuichu;}}}charserver{charA
[10];charb;chari;intk=0;systemcls;;cout\n\n\n\t\t※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\t\t※※\n\t\t※选修课系统管理端※\n\t\t※※\n\t\t※操作方式:※\n\t\t※
1.增加学生
2.增加课程※\n\t\t※
3.删除学生
4.删除课程※\n\t\t※
5.填写成绩
6.更改学分※\n\t\t※
7.学生情况
8.选课情况※\n\t\t※
9.保存数据
0.退出系统※\n\t\t※※\n\t\t※※※※※※※※※※※※※※※※※※※※※※※※※※※\nendl;while1{cout\t\t请选择操作方式:;cinA;ifstrlenA==1{fori=0;i=9;i++{b=i;ifb==A
[0]returnb;}}cerr\n\t\t\t\t输入有误!\nendl;;k++;ifk2{cerr错误输入超过三次!\n;exit-1;}}}////////////////////////////////////////////////////////////////////////////////////密码检查voidpassword{intk=0i;charA[]=0411200;charB
[10];chara;systemcls;fori=0;i8;i++coutendl;whilek=2{printf\t\t\t请输入管理员密码:;i=0;while1{a=getch;ifa==13break;B[i]=a;i++;printf*;}B[i]=\0;ifstrcmpAB==0return;else{k++;cerr\n\n\t\t\t密码输入错误!请重新输入!\nendl;}ifk=3{systemcls;cerr\n\n\t\t\t输入错误密码超过三次!请按任意键退出..endl;getch;tuichu;}}}///////////////////////////////////////////////////////////////////////structsubjectdb{subjectsub;subjectdb*Next;};intmenu_2_7studentdb*P;intmenu_2_9studentdb*Ysubjectdb*P;intmenu_2_8subjectdb*P;//////////////////////////////////////////////////////////////////////////学生端功能函数intmenu_1_1studentdb*Psubjectdb*X//学生选课{systemcls;cout\n\n\t\t\t\t学生选课操作endl;//studentdb*q=P-Next;inti;charN
[20]M
[20];ifq!=NULLcout\n\n\n\t\t所有学生名单如下:\nendl;else{cerr\n\n\n\t\t对不起暂时没有学生名单!请按任意键继续..endl;return1;}whileq{q-stu.getnameN;cout\t\t\t\tN;coutendl;q=q-Next;}q=P-Next;ifq==NULLreturn1;cout\n\n\t\t请输入学生姓名:;cinN;i=0;q=P-Next;whileq{q-stu.getnameM;ifstrcmpNM==0i++;q=q-Next;}intj=0k=1;ifi==0{cout\n\n\t\t没有这个学生!!请按任意键返回..endl;return1;}elseifi1{cout\n\n\t\t共找到i个姓名为N的学生endl;cout\t\t选择第几个:;cink;}ifki||k=0{cerr\n\t\t\t输入有误!按任意键继续endl;return1;}q=P-Next;j=0;whileq{q-stu.getnameM;ifstrcmpNM==0j++;ifj==k{ifq-stu.retfactcourse=q-stu.retmaxcourse{cout\n\t\t所选课程已满!按任意键继续endl;return1;}else{subjectdb*t=X-Next;charN1
[20];systemcls;;ift!=NULL{cout\n\n\n\t\t所有课程如下:endl;cout\n\t\t\t\t课程名称\t\t学分endl;}else{cerr\n\n\n\t\t对不起暂时没有课程endl;return1;}whilet{t-sub.getknameN1;cout\t\t\t\tN1setw26-strlenN1t-sub.readcreditendl;t=t-Next;}charN2
[20];cout\n\t输入你所要选的课程:;cinN2;t=X-Next;whilet{t-sub.getknameN1;ifstrcmpN1N2==0{ifq-stu.findcourseN2==1{cout\n\t\t此课程你已选过了不能再选.按任意键继续endl;return1;}t=X-Next;charNA
[20];whilet{t-sub.getknameNA;ifstrcmpNAN2==0{ift-sub.retactivestudent=t-sub.retmaxstudent{cout\n\t\t此课程已选满不能选.按任意键继续endl;return1;}}t=t-Next;}q-stu.addcourseN
20.0;cout\n\n\t\t选课成功!按任意键继续endl;return1;}t=t-Next;}cerr\n\t\t没有此课程!按任意键继续endl;}return1;}q=q-Next;}return1;}intmenu_1_2studentdb*Psubjectdb*X//学生情况{studentdb*q=P-Next;charN
[20];systemcls;cout\n\n\t\t\t\t学生情况操作endl;inti;ifq!=NULL{cout\n\n\n\t\t所有学生选课信息如下:\nendlendl;cout\t\t姓名\t\t\t选课情况\nendl;}else{cerr\n\n\n\t\t对不起暂时没有学生名单!!请按任意键继续..endl;return1;}whileq{q-stu.getnameN;cout\t\tNsetw25-strlenN已选q-stu.retfactcourse门课endl;q=q-Next;}charM
[20];cout\n\t\t输入要查看的学生姓名:;cinM;i=0;q=P-Next;whileq{q-stu.getnameN;ifstrcmpNM==0i++;q=q-Next;}intj=0k=1;ifi==0{cout\n\t\t\t没找到这个学生!!请按任意键继续..endl;return1;}elseifi1{cout\n\t\t共找到i个姓名为M的学生endl;cout\t\t选择第几个:;cink;}ifki||k=0{cerr\n\t\t\t输入有误!按任意键继续..endl;return1;}q=P-Next;j=0;q=P-Next;whileq{q-stu.getnameN;ifstrcmpNM==0j++;ifj==k{systemcls;;course*T=q-stu.retroot;ifT==NULL{cout\n\n\n\t\t\tN同学你还未选课!请按任意键继续..endl;return1;}ifT!=NULLT=T-Next;cout\n\n\n\t\tN同学你已选q-stu.retfactcourse门课具体如下\n\nendl;cout\t\t\t课程名称\t\t成绩\nendl;whileT{cout\t\t\tT-cnamesetw25-strlenT-cnameT-gradeendl;T=T-Next;}j=0;}q=q-Next;}cout\n\t\t请按任意键继续...endl;return1;}intmenu_1_3subjectdb*P//选课情况{subjectdb*q=P-Next;charN
[20];systemcls;cout\n\n\t\t\t\t选课情况操作endl;ifq!=NULL{cout\n\n\n\t\t所有选课情况如下:\nendl;cout\n\t\t\t课程名称\t\t选课人数\nendl;}else{cerr\n\n\n\t\t对不起暂时没有课程!!请按任意键继续..endl;return1;}whileq{q-sub.getknameN;cout\t\t\tNsetw28-strlenNq-sub.retactivestudentendl;q=q-Next;}cout\n\t\t请按任意键继续..endl;return1;}intmenu_1_4studentdb*Xsubjectdb*P//退出系统{menu_2_9XP;tuichu;return0;}
3.2管理功能函数intmenu_2_1studentdb*P//增加学生{charN
[20];systemcls;;cout\n\n\t\t\t\t增加学生操作\nendl;cout\n\n\t\t请输入学生姓名:;cinN;coutendl\t\t增加学生操作成功按任意键继续endl;studentdb*newnode=newstudentdb;newnode-Next=P-Next;newnode-stu.readnameN;P-Next=newnode;return1;}intmenu_2_2subjectdb*P//增加课程{floatk;charN
[20]M
[20];systemcls;;cout\n\n\t\t\t\t增加课程操作\nendl;cout\n\n\t\t请输入课程名称:;cinN;coutendl;subjectdb*q=P-Next;whileq{q-sub.getknameM;ifstrcmpNM==0{cout\n\t\t此课程已经存在按任意键继续endl;return1;}q=q-Next;}cout\t\t输入此课程的学分:;cink;cout\n\t\t增加课程操作成功按任意键继续endl;subjectdb*newnode=newsubjectdb;newnode-Next=P-Next;newnode-sub.setknameN;newnode-sub.getcreditk;P-Next=newnode;return1;}intmenu_2_3studentdb*P//删除学生{systemcls;cout\n\n\t\t\t\t删除学生操作endl;menu_2_7P;studentdb*q=P-Next;ifq==NULLreturn1;inti;charN
[20]M
[20];cout\n\t请输入要删除的学生姓名:;cinN;i=0;whileq{q-stu.getnameM;ifstrcmpNM==0i++;q=q-Next;}intj=0k=1;ifi==0{cerr\n\t\t没有这个学生!!请按任意键继续..endl;return1;}elseifi1{cout\n\t\t共找到i个姓名为N的学生endl;cout\n\t\t要删除第几个:;cink;}ifki||k=0return1;q=P-Next;studentdb*R=P;j=0;whileq{q-stu.getnameM;ifstrcmpNM==0j++;ifj==k{R-Next=q-Next;freeq;cout\n\t\t删除学生操作成功按任意键继续..endl;return1;}q=q-Next;R=R-Next;}return1;}intmenu_2_4subjectdb*P//删除课程{subjectdb*q=P-Next;charN
[20];systemcls;;cout\n\n\t\t\t\t删除课程操作endl;ifq!=NULLcout\n\n\n\t\t所有课程如下:\nendl;else{cerr\n\n\n\t\t对不起暂时没有课程!!请按任意键继续..endl;return1;}whileq{q-sub.getknameN;cout\t\t\t\tNendl;q=q-Next;}q=P-Next;subjectdb*R=P;ifq==NULLreturn1;charM
[20];cout\n\t请输入要删除的课程:;cinM;whileq{q-sub.getknameN;ifstrcmpNM==0{R-Next=q-Next;freeq;cout\n\t\t删除课程操作成功按任意键继续endl;return1;}q=q-Next;R=R-Next;}cerr\n\t\t没有此课程!!\t请按任意键继续..endl;return1;}intmenu_2_5studentdb*Xsubjectdb*P//填写成绩{subjectdb*q=P-Next;charM
[20]N
[20]NA
[20];floatscore;systemcls;cout\n\n\t\t\t\t填写成绩操作\nendl;ifq!=NULLcout\n\t\t\t课程名称\t\t选课人数\nendl;else{cout\n\n\n\t\t对不起暂时没有任何选修课程请按任意键继续..endl;return1;}whileq{q-sub.getknameN;cout\t\t\tNsetw28-strlenNq-sub.retactivestudentendl;q=q-Next;}q=P-Next;cout\n\t请输入课程名称:;cinM;whileq{q-sub.getknameN;studentname*K=q-sub.retfirst;ifK!=NULLK=K-Next;ifstrcmpNM==0{systemcls;;ifK!=NULL{cout\n\n\t\t请填写选修M的学生成绩\nendl;cout\n\t\t\t姓名\t\t成绩endl;}ifK==NULLcerr\n\t\t\t无任何信息!!请按任意键继续..endl;whileK{cout\n\t\t\tK-tname\t\t;cinscore;studentdb*XX=X-Next;whileXX{XX-stu.getnameNA;ifstrcmpNAK-tname==0XX-stu.wrecourseMscore;XX=XX-Next;}K=K-Next;}ifK==NULLcout\n\t\t填写成绩完毕!!请按任意键继续..endl;return1;}q=q-Next;}cerr\n\t\t没有此课程!!请按任意键继续..endl;return1;}intmenu_2_6subjectdb*P//更改学分{floatk;systemcls;cout\n\n\n\t\t\t\t更改学分操作\nendl;subjectdb*q=P-Next;charN
[20]M
[20];ifq!=NULLcout\n\n\n\t\t所有课程如下:\nendl;else{cerr\n\n\n\t\t对不起暂时没有任何可选课程请按任意键继续..endl;return1;}whileq{q-sub.getknameN;cout\t\t\t\tNendl;q=q-Next;}q=P-Next;cout\n\n\n\t\t请输入要改的课程:;cinM;whileq{q-sub.getknameN;ifstrcmpNM==0{cout\n\t\t\t原来学分为:q-sub.readcreditendl;cout\n\t\t\t现要更改为:;cink;q-sub.getcreditk;cout\n\t\t更改课程学分成功按任意键继续endl;return1;}q=q-Next;}cerr\n\t\t无此课程!!请按任意键继续..endl;return1;}intmenu_2_7studentdb*P//学生情况{studentdb*q=P-Next;charN
[20];systemcls;cout\n\n\n\t\t\t\t学生情况操作\nendl;ifq!=NULLcout\n\n\n\t\t所有学生名单如下:\nendl;else{cerr\n\n\n\t\t对不起暂时没有学生名单!请按任意键继续..endl;return1;}whileq{q-stu.getnameN;cout\t\t\t\tN;coutendl;q=q-Next;}cout\n\t\t按任意键继续..endl;return1;}intmenu_2_8subjectdb*P//选课情况{subjectdb*q=P-Next;charM
[20]N
[20];systemcls;cout\n\n\t\t\t\t选课情况操作endl;ifq!=NULL{cout\n\n\n\t\t所有选课情况如下:\nendl;cout\n\t\t\t课程名称\t\t选课人数\nendl;}else{cerr\n\n\n\t\t对不起暂时没有课程!!请按任意键继续..endl;return1;}whileq{q-sub.getknameN;cout\t\t\tNsetw28-strlenNq-sub.retactivestudentendl;q=q-Next;}q=P-Next;cout\n\t请输入课程名称:;cinM;whileq{q-sub.getknameN;studentname*K=q-sub.retfirst;ifK!=NULLK=K-Next;ifstrcmpNM==0{systemcls;;ifK==NULL{cerr\n\n\t无任何选课信息!!\t请按任意键继续..endl;return1;}cout\n\n\n\t\t选修M课的学生名单如下:\nendl;cout\n\t\t\t姓名\t\t成绩endl;whileK{cout\n\t\t\tK-tnamesetw20-strlenK-tnameK-resultendl;K=K-Next;}cout\n\t\t请按任意键继续..endl;return1;}q=q-Next;}cerr\n\t\t无此课程!!\t请按任意键继续..endl;return1;}intmenu_2_9studentdb*Ysubjectdb*P//保存数据{studentdb*Z=Y-Next;subjectdb*X=P-Next;systemcls;;fstreamfilesubject.txtios::out;whileX{file.writechar*X-subsizeofX-sub;X=X-Next;}file.close;fstreamfile1student.txtios::out;fstreamfile2course.txtios::out;whileZ{file
1.writechar*Z-stusizeofZ-stu;inttime=Z-stu.retfactcourse;course*co=Z-stu.retroot*co1;ifco!=NULLco1=co-Next;whiletime{file
2.writechar*co1sizeof*co1;co1=co1-Next;time=time-1;}Z=Z-Next;}file
2.close;file
1.close;cout\n\n\n\t\t\t保存数据成功!按任意键继续..endl;return1;}intmenu_2_0//退出系统{tuichu;return0;}intmain{subjectdb*P=newsubjectdb*Q=P;P-Next=NULL;subjectM;fstreamfilesubject.txtios::in;while1{file.readchar*MsizeofM;if!filebreak;Q-Next=newsubjectdb;Q-Next-Next=NULL;Q-Next-sub=M;Q=Q-Next;}file.close;studentdb*Y=newstudentdb*X=Y;Y-Next=NULL;studentN;courseO;fstreamfile1student.txtios::in;fstreamfile2course.txtios::in;while1{file
1.readchar*NsizeofN;if!file1break;Y-Next=newstudentdb;Y-Next-Next=NULL;Y-Next-stu=N;inttime=N.retfactcourse;Y-Next-stu.clrroot;whiletime{file
2.readchar*Osizeofcourse;if!file2break;Y-Next-stu.addcourseO.cnameO.grade;time--;}Y=Y-Next;}file
2.close;file
1.close;Q=P-Next;whileQ{Q-sub.clractivestudnet;Q-sub.findstudentX;Q=Q-Next;}charc;charb;intbr=1;b=menu;ifb==1{while1{c=custom;switchc{case1:br=menu_1_1XP;getch;break;//学生选课case2:br=menu_1_2XP;getch;break;//学生情况case3:br=menu_1_3P;getch;break;//选课情况case4:br=menu_1_4XP;break;//退出系统}ifbr==0break;}}ifb==2{password;while1{c=server;switchc{case1:br=menu_2_1X;getch;break;//增加学生case2:br=menu_2_2P;getch;break;//增加课程case4:br=menu_2_4P;getch;break;//删除课程case3:br=menu_2_3X;getch;break;//删除学生case5:br=menu_2_5XP;getch;break;//填写成绩case6:br=menu_2_6P;getch;break;//更改学分case7:br=menu_2_7X;getch;break;//学生情况case8:br=menu_2_8P;getch;break;//选课情况case9:br=menu_2_9XP;getch;break;//保存数据case0:br=menu_2_0;break;//退出系统}ifbr==0break;}}return0;}
4、系统调试整体界面
4.1先登录管理员端,选2后输入密码
04112004.
1.1然后选择1或2,此时里面没有数据,这里选择
14.
1.2读者自己输入确认后在进行各项添加,修改,查看,删除等操作
4.2以学生端登录进来(不需要密码)
4.
2.1以方式1登录进来,可以看到之前我添加的学生
4.
2.2输入学生姓名就以我自己为例即是输入邓权虹,得到下图
4.
2.3退出来选择方式2可以看到选课情况
4.
2.4同理选方式3也可查看选课情况
4.
2.5再次以管理员端身份登录进去还可以查看刚才的选课信息
4.
2.6还有很多功能让读者自己试验
5、程序结果基本能实现总体设计的要求
6、总结我可能不会走上C++语言程序设计的专业道路,可能不会让其成为我的职业,但计算机已经成为现代社会职业人不可或缺的一种工具,这段时间的知识储备所具有的能量也许会在未来的某一天显现出来我很感谢能有机会学习这样一门课程经历这样一次课程设计,并且我在用心对待认真去做,把它当成一件事情去做,这种心理的成就感我觉得很满足。