C学生选课系统.docx
- 文档编号:28746391
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:14
- 大小:18.43KB
C学生选课系统.docx
《C学生选课系统.docx》由会员分享,可在线阅读,更多相关《C学生选课系统.docx(14页珍藏版)》请在冰豆网上搜索。
C学生选课系统
摘要
本课程设计的目的是设计一个学生选修课程系统的程序,用来实现对学生成绩的管理,其中包括学生信息的文件读入、添加、查询、保存、删除以及相应的课程信息管理。
程序设计了两个类,其中一个包含学生的学号、姓名、选课数以及选修总学分,另一个则包含了课程的信息,包括课程编号、课程名称、课程性质、课时等等。
然后通过数组、向量、集合等来实现学生选课信息的记录、保存,删除等相关操作从而达到管理学生选课的。
因为这次课程设计,我们可以熟练的使用C++语言来完成一个学生选课管理系统。
但是编写过程中难免会遇到错误,希望老师给予指导。
1需求分析
计算机技术作为信息化的核心技术受到全社会的普遍重视。
如今,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。
深入掌握计算机专业知识、具有良好系统设计与分析能力的计算机高级专业人才在社会上深受欢迎。
而系统设计与分析能力的培养需要通过实践训练才能获得。
通过计算机对一些系统的管理已经成为一种系统、便捷的方式。
本课程设计就是用C++设计学生选课系统的问题,实现对学生选课的管理操作。
本课程设计的目的是设计一个学生选修课程系统的程序,用来实现对学生成绩的管理,其中包括学生信息的文件读入、添加、查询、保存、删除以及相应的课程信息管理。
程序设计了两个类,其中一个包含学生的学号、姓名、选课数以及选修总学分,另一个则包含了课程的信息,包括课程编号、课程名称、课程性质、课时等等。
然后通过数组、向量、集合等来实现学生选课信息的记录、保存,删除等相关操作从而达到管理学生选课的。
2概要设计
对象设计
把学生和学科信息设计成类student和类subject,通过文件操作函数对输入的学生和学科信息进行读取和存放。
设计优缺点
优点:
1.人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。
程序提示不仅层次分明,提示方式多样,而且提示信息井然有序,更加有利于用户顺利、准确地进行程序的操作。
2.所有的操作大多是在内存中实现,增加操作的速度,十分的方便。
缺点:
1.程序虽然经过多次精简,但仅仅是形式上、小范围的精简,仍未得到本质上的精简,即未找到更加简单、更加高效、更加合理、更小占用的资源的算法。
2.程序仍然存在不合理的地方,例如程序某些部分输入错误会导致程序中止或转向其他功能模块,即程序建议用户注意提示,进行合理的准确的输入,这样更有利于管理工作。
3详细设计
总体设计思路
通过对课题的分析,程序的要求是设计选修课管理系统,对选修课程能够进行录入和修改操作等,要求有主界面和退出功能。
首先,考虑到程序的数据输入,可以设置一个课程增加选项,通过该界面,进行选修课的录入和修改操作,最后将录入的课程存到相应的文件中。
然后定义各种函数的功能包括:
查看、查询、删除等。
另一个为选课界面,该界面学生可以进行课程选择和浏览查询等操作。
在进行该操作之前需要对保存的文件进行读取,然后对其中的东西进行查询等。
在学生选好课程以后,可以将选好的课程保存于相应的文件中,以便下次进行修改。
通过函数的层层调用来实现程序的逻辑结构。
中间通过文件的打开和关闭实现对文件内部所包含的数据操作。
为了方便用户控制管理,又添加了一些更人性化的功能如人工调试,运行配置等功能。
文件存储信息的方式更是简化了程序结构,使程序读起来更容易懂。
除此之外,本系统采用分块实现功能,将要实现的增加课程信息、修改课程信息、删除课程信息、增加学生信息和修改学生信息等功能分别用不同的子程序来完成,这样不仅方便了我们程序调试,更提高了程序的移植性。
类定义
classsubjectC++面向对象程序设计.北京:
中国水利水电出版社,2013.
[2]曾辉.王更生.C++程序设计实训教程.北京:
北京邮电大学出版社,2011
[3]揣锦华等编.《C++程序设计语言》.西安:
西安电子科技大学出版社,2011
[4]张素琴主编.《C++程序设计语言》.北京:
清华大学出版社,2010
[5]邓飞,李瑶主编《C++程序设计》.北京科海电子出版社2009
[6]李军民等编.《C++程序设计语言》.西安:
西安电子科技大学出版社,2011
附录全部代码
#include
#include
#include
#include<>
#include<>
#include<>
#include
#defineN10
usingnamespacestd;
intF;
classsubjectum,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq);
fclose(fp);
}
voidSaveStuInfo()um,z[i].nam,z[i]t,z[i].zxf);
for(it=TT[i].begin();it!
=TT[i].end();it++)
fprintf(fp,"%d",*it);
fprintf(fp,"\n");
}
fclose(fp);
}
voidquit()f==key)
{
cnt++;
printf("\t%3d%12s%8s%4d%6d%8d%8d%7s\n",
v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq);
}
}
cout< "; strings;cin>>s; if(s[0]=='Y'||s[0]=='y')chaxun1(); elseMainMenu(); } voidchaxun2()ha,key)) { cnt++; printf("\t%3d%12s%8s%4d%6d%8d%8d%7s\n", v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq); } } cout< "; strings;cin>>s; if(s[0]=='Y'||s[0]=='y')chaxun2(); elseMainMenu(); } voidtq1(char*str)ind(tmp)! =TT[F].end()){t="";i++;continue;} z[F].zxf+=v[find(tmp)].xf; TT[F].insert(tmp);t="";cont++; } i++; } inttmp=atoi()); if(TT[F].find(tmp)==TT[F].end()) { cont++; TT[F].insert(tmp); z[F].zxf+=v[find(tmp)].xf; } z[F]t+=cont; } voidxuanke()um,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq); } cout< cout< ";gets(str); if(strcmp(str,""))tq1(str); SaveStuInfo(); cout<<"\t\t是否继续选课! [Y/N]"; stringx;cin>>x; if(x[0]=='y'||x[0]=='Y')xuanke(); elseXuanKeMenu(); } intfind(intno)um==no)returni; } voiddisplay(inti) { printf("\t%3d%12s%8s%4d%6d%8d%8d%7s\n", v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq); } voidXuanKeMenu()am<<"学号: "< cout<<"门课程"<<"已选课程总学分: "< cout<<"\t========================================================"< cout<<"\t已选课程信息: \n"; cout<<"\t课程"<<""<<"课程"<<"课程"<<""<<"总" <<""<<"授课"<<""<<"实验或"<<""<<"学分"<<""<<"开课"< cout<<"\t编号"<<""<<"名称"<<"性质"<<""<<"学时" <<""<<"学时"<<""<<"上机学时"<<""<<"学分"<<""<<"学期"< for(it=TT[F].begin();it! =TT[F].end();it++,l++) { if(l&&l%10==0) { cout< cout<<"\t[1]开始选课[2]删除已选课程[3]下一页[0]返回请选择[0/3]: ";cin>>choice;getchar(); if(choice==1)xuanke(); elseif(choice==2)del(); elseif(choice==0)MainMenu(); elseif(choice==3); elseXuanKeMenu(); system("cls"); cout< cout<<"\t********************************************************"< cout<<"\t**********************学生选课*******************"< cout<<"\t********************************************************"< cout<<"\t姓名: "< "< cout<<"门课程"<<"已选课程总学分: "< cout<<"\t========================================================"< cout<<"\t已选课程信息: \n"; cout<<"\t课程"<<""<<"课程"<<"课程"<<""<<"总" <<""<<"授课"<<""<<"实验或"<<""<<"学分"<<""<<"开课"< cout<<"\t编号"<<""<<"名称"<<"性质"<<""<<"学时" <<""<<"学时"<<""<<"上机学时"<<""<<"学分"<<""<<"学期"< } display(find(*it)); } cout< cout<<"\t[1]开始选课[2]删除已选课程[0]返回请选择[0/2]: ";cin>>choice;getchar(); if(choice==1)xuanke(); elseif(choice==2)del(); elseif(choice==0)MainMenu(); elseXuanKeMenu(); } voidtq2(char*str)ind(tmp); if(_t! =TT[F].end()) { t=""; TT[F].erase(_t); z[F]t--; z[F].zxf-=v[find(tmp)].xf; } } i++; } inttmp=atoi()); set : iterator_t=TT[F].find(tmp); if(_t! =TT[F].end()) { t=""; TT[F].erase(_t); z[F]t--; z[F].zxf-=v[find(tmp)].xf; } } voiddel()am<<"学号: "< cout<<"门课程"<<"已选课程总学分: "< cout<<"\t========================================================"< cout<<"\t已选课程信息: \n"; cout<<"\t课程"<<""<<"课程"<<"课程"<<""<<"总" <<""<<"授课"<<""<<"实验或"<<""<<"学分"<<""<<"开课"< cout<<"\t编号"<<""<<"名称"<<"性质"<<""<<"学时" <<""<<"学时"<<""<<"上机学时"<<""<<"学分"<<""<<"学期"< for(it=TT[F].begin();it! =TT[F].end();it++,l++) { if(l&&l%10==0) { cout< cout<<"\t\t\t\t请输入要删除的课程的编号: ";gets(str); if(strcmp(str,""))tq2(str); system("cls"); cout< cout<<"\t********************************************************"< cout<<"\t**********************学生选课*******************"< cout<<"\t********************************************************"< cout<<"\t姓名: "< "< cout<<"门课程"<<"已选课程总学分: "< cout<<"\t========================================================"< cout<<"\t已选课程信息: \n"; cout<<"\t课程"<<""<<"课程"<<"课程"<<""<<"总" <<""<<"授课"<<""<<"实验或"<<""<<"学分"<<""<<"开课"< cout<<"\t编号"<<""<<"名称"<<"性质"<<""<<"学时" <<""<<"学时"<<""<<"上机学时"<<""<<"学分"<<""<<"学期"< } display(find(*it)); } cout<<"\t\t\t\t请输入要删除的课程的编号: ";gets(str); if(strcmp(str,""))tq2(str); SaveStuInfo(); XuanKeMenu(); } voidLoad()um,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq); } cout<<"\t课程总数为: "< cout< "; strings;cin>>s; if(s[0]=='Y'||s[0]=='y')output(); elseMainMenu(); } voidMainMenu()am< cout<<"\t\t\t\t[1]查看课程信息"< cout<<"\t\t\t\t[2]添加课程信息"< cout<<"\t\t\t\t[3]查询课程信息"< cout<<"\t\t\t\t[4]学生选课"< cout<<"\t\t\t\t[5]统计情况"< cout<<"\t\t\t\t[0]退出"< cout<<"\t\t\t\t请选择[0-4]: "; intchoice; cin>>choice; if(choice>=0&&choice<6) { if(choice==1)output(); if(choice==2)add(); if(choice==3)ChaXun(); if(choice==4)XuanKeMenu(); if(choice==5)sum(); if(choice==0)DL(); } elseMainMenu(); } voidDL()um)) {f=0;F=i;MainMenu();break;} if(f! =0) { cout<<"\t\t\t\t学生信息不存在,\n\t\t\t\t是否现在添加[Y/N]: "; charsx; cin>>sx; if(sx=='Y'||sx=='y')AddStuInfo(); DL(); } } voidsum() { system("cls"); cout< cout<<"\t\t***************************************************"< cout<<"\t\t*****************统计数据******************"< cout<<"\t\t***************************************************"< charc; intline=0,j=0; fstreamst; ("d: \\",ios: : in); while(c)) { if(c=='\n') line++; } cout<<"\t\t\t\t学生人数是: "< fstreamsb; ("d: \\",ios: : in); while(c)) { if(c=='\n') j++; } cout<<"\t\t\t\t总课程数为: "< printf("是否继续查看[Y/N]: "); strings;cin>>s; if(s[0]=='Y'||s[0]=='y')output(); elseMainMenu(); } main() { Load();()-1);//调用载入函数并删除最后一条重复的信息 Load2();()-1); ()-1); DL(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 选课 系统