学生选课系统.docx
- 文档编号:26602110
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:24
- 大小:106.73KB
学生选课系统.docx
《学生选课系统.docx》由会员分享,可在线阅读,更多相关《学生选课系统.docx(24页珍藏版)》请在冰豆网上搜索。
学生选课系统
-CAL-FENGHAI.-(YICAI)-CompanyOne1-CAL-本页仅作为文档封面,使用请直接删除
学生选课系统C++(总14页)
一、需求分析11
二、程序的主要功能11
三、程序运行平台11
四、系统总框架图11
五、程序类的说明11
六、模块分析13
八、存在的不足与对策15
九、程序源代码15
一、需求分析
选课在大学生活中是必不可少的,为了能让学生们更加便利的查看并选择各种课程,自然就需要一个网络结构,建立一个选课系统,这样可以方便管理学生和课程等内容。
二、程序的主要功能
1、添加功能:
添加课程以及学生的各类信息保存到一个文件中。
2、删除功能:
能够对一个学生或课程的信息按照编号进行删除。
3、浏览功能:
可以查看学生信息课程信息以及学生的选课信息。
4、选课功能:
学生可以通过输入自己的学号进入选择界面,选择各种不同的课程。
5、修改功能:
用于修改错误的学生信息或者课程信息。
三、程序运行平台
Windows8.1操作系统
VC++6.0
四、系统总框架图
主函数
信息录入
信息浏览
选择课程
删除信息
修改信息
退出程序
系统总框架图
五、程序类的说明
∙student类的声明
classstudent
{
public:
doublexuehao;
charname[100];
charmajor[100];
charcoursename[100];
∙course类的声明
classcourse
{
public:
doublecoursenum;
charcoursename[50];
charcoursetapy[50];
doublexuefen;
doublexueshi;
charcourseteacher[50];
六、模块分析
1.信息录入模块
按照提示输入所需数字,进入添加界面后添加课程以及学生的各类信息,最终保存到一个文件中,用以之后读取。
2.信息浏览模块
可以用来查看学生信息和课程信息以及学生的选课信息。
3.修改信息模块
用于修改错误的学生信息或者课程信息。
4.删除信息模块
能够对一个学生或课程的信息按照编号进行删除。
5.选择课程模块
学生可以通过输入自己的学号进入选择界面,选择各种不同的课程。
七、比较有特色的函数
voidselectCoures()//选课函数
{
studentstu;//用于保存将要选课的那名同学的信息
intcountCoures=0;//用来统计该学生选了多少门课程
intcountStudent=0;//用来统计学生的个数
loop:
cout< "; doublem_xuehao,m_coursenum;//利用学号和课程号分别找出哪位同学选了哪门课 cin>>m_xuehao; ifstreamis("studentInfo.text",ios: : binary); is.seekg(0,ios: : beg); while(! is.peek()) { is.read((char*)(&stu),sizeof(stu));//从“studentInfo.text”文件中一次读取学生的信息 if(m_xuehao==stu.xuehao) { loob: countStudent++; cout<<"请输入学号为"< "; cin>>m_coursenum; ifstreaminCourse("courses.text",ios: : binary);//用于从"courses.text"文件中找出该同学想选择的课程信息 inCourse.seekg(0,ios: : beg); while(! inCourse.eof()) {//选课的核心代码 coursecus;//用于此同学将要选择的课程信息 inCourse.read((char*)(&cus),sizeof(cus)); if(m_coursenum==cus.coursenum) {//若找到那门课程则选它 countCoures++; strcpy(stu.coursename,cus.coursename); ofstreamoutStu("selectCourseResult.text",ios: : binary|ios: : app);//现将选课的同学信息放入选课结果的文件中 outStu.write((char*)(&stu),sizeof(stu)); outStu.close(); cout<<"学号为"< "< } if(countCoures>2) { cout<<"同学: 你选择的课程已经超过"< "< break; } } if(countCoures==0) { cout<<"没有这门课程,还要继续选择其他课程吗y/n"< charch; cin>>ch; if(('y'==ch)||('Y'==ch)) gotoloob; else break; } inCourse.close(); } } if(countStudent==0) { cout<<"没有这个学生,是否重新输入y/n"< charch; cin>>ch; if(('y'==ch)||('Y'==ch)) gotoloop; } is.close(); menu(); } 八、存在的不足与对策 由于设计者水平有限及时间等方面的原因,该系统的功能比较简单,只能输入较少的课程以及学生信息。 些许不足请老师多多谅解。 今后会学习更多的编程技巧,不断的提高程序设计水平。 九、程序源代码 #include #include #include #include #include #include usingnamespacestd; voidmenu()//主菜单 { cout< cout<<"学生选课系统"< cout<<"1.信息录入"< cout<<"2.信息浏览"< cout<<"3.选择课程"< cout<<"4.删除信息"< cout<<"5.修改信息"< cout<<"6.退出程序"< } classstudent { public: doublexuehao; charname[100]; charmajor[100]; charcoursename[100]; voidset()//学生信息录入 { studentstu; cout< cout<<"请输入学生学号: "; cin>>stu.xuehao; cout<<"请输入学生姓名: "; cin>>stu.name; cout<<"请输入学生专业: "; cin>>stu.major; ofstreamout("studentInfo.text",ios: : app|ios: : binary); out.write((char*)(&stu),sizeof(stu)); out.close(); menu(); } voidcheckstudent()//查询学生信息 { studentstu; cout<<"学生学号\t学生姓名\t所学专业"< ifstreamis("studentInfo.text",ios: : binary); while(! is.peek()) { is.read((char*)(&stu),sizeof(stu)); cout<<""< } is.close(); menu(); } voidcancleStudent()//删除学生信息 { stringxueHaoNum,line,xuehao; cout< cout<<"请输入您要删除学生的学号: "; cin>>xueHaoNum; while(! fin.eof()) { getline(fin,line); istringstreamstream(line);//串流输入 xueHaoNum=line.substr(0,line.find("",0)); if(xuehao! =xueHaoNum) outfile< } outfile.close(); fin.close(); fstreamf("studentInfo.text",ios: : trunc|ios: : out);//打开一个文件进行写操作和使同名文件被删除 ifstreamoutf("studentInfo.text"); f< outf.close(); f.close(); cout< menu(); } voidchangestudent()//修改学生信息 { studentstu; intmark; cout< cout<<"请输入需要修改信息的学生学号"; doublexuehao; cin>>xuehao; ifstreamis("studentInfo.text",ios: : binary); for(inti=0;! is.eof();i++) { is.seekg(48*i);//对输入文件定位,第一个参数是偏移量,第二个参数是基地址 is.read((char*)(&stu),sizeof(stu)); if(stu.xuehao==xuehao) { cout<<"请输入要修改的学生姓名"; cin>>stu.name; cout<<"请输入要修改的学生专业"; cin>>stu.major; cout<<"修改完毕! "< mark=48*i; menu(); break; } } is.close(); if(stu.xuehao! =xuehao) { cout<<"没有这个学生! "< menu(); } else { ofstreamos("studentInfo.text",ios: : in|ios: : binary); os.seekp(mark); os.write((char*)(&stu),sizeof(stu)); os.close(); } } }; classcourse//课程类 { public: doublecoursenum; charcoursename[50]; charcoursetapy[50]; doublexuefen; doublexueshi; charcourseteacher[50]; voidset()//课程信息录入 { coursecus; cout<<"请输入课程编码: "; cin>>cus.coursenum; cout<<"请输入课程名称: "; cin>>cus.coursename; cout<<"请输入课程类型: "; cin>>cus.coursetapy; cout<<"请输入课程学分: "; cin>>cus.xuefen; cout<<"请输入课程学时: "; cin>>cus.xueshi; cout<<"请输入主讲教师: "; cin>>cus.courseteacher; ofstreamos("courses.text",ios: : binary|ios: : app); os.write((char*)(&cus),sizeof(cus)); os.close(); menu(); } voidcheckcourse()//浏览课程信息 { cout< ifstreamis("courses.text",ios: : binary); cout<<"课程编码课程名称课程类型课程学分课程学时主讲教师"< coursecus;//临时保存课程信息 while(! is.peek())//检测文件结束 { is.read((char*)(&cus),sizeof(cus)); cout<<""< } is.close(); menu(); } voidcanclecourse()//删除课程信息 { stringcoursenum,line,course; ifstreamfin("courses.text"); fstreamoutfile("courses.text",ios: : trunc|ios: : out);//打开一个文件进行写操作和使同名文件被删除 cout< cout<<"请输入您要删除课程的编码: "; cin>>coursenum; while(! fin.eof()) { getline(fin,line); istringstreamstream(line);//串流输入 coursenum=line.substr(0,line.find("",0)); if(course! =coursenum) outfile< } outfile.close(); fin.close(); fstreamf("courses.text",ios: : trunc|ios: : out);//打开一个文件进行写操作和使同名文件被删除 ifstreamoutf("courses.text"); f< outf.close(); f.close(); cout< menu(); } voidchangecourse()//修改课程信息 { coursecus; intmark; cout< cout<<"请输入要修改课程信息的编码"; doublecoursenum; cin>>coursenum; ifstreamis("courses.text",ios: : binary); for(inti=0;! is.eof();i++) { is.seekg(28*i);//对输入文件定位,第一个参数是偏移量,第二个参数是基地址 is.read((char*)(&cus),sizeof(cus)); if(cus.coursenum==coursenum) { cout<<"请输入要修改的课程名称"; cin>>cus.coursename; cout<<"请输入要修改的课程类型"; cin>>cus.coursetapy; cout<<"请输入要修改的课程学分"; cin>>cus.xuefen; cout<<"请输入要修改的课程学时"; cin>>cus.xueshi; cout<<"请输入要修改的主讲教师"; cin>>cus.courseteacher; cout<<"修改完毕! "< mark=28*i; menu(); break; } } is.close(); if(cus.coursenum! =coursenum) { cout<<"没有这门课程! "< menu(); } else { ofstreamos("courses.text",ios: : in|ios: : binary); os.seekp(mark); os.write((char*)(&cus),sizeof(cus)); os.close(); } } }; voidselectCoures()//选课函数 { studentstu; intcountCoures=0; intcountStudent=0; loop: cout< "; doublem_xuehao,m_coursenum;//利用学号和课程号分别找出哪位同学选了哪门课 cin>>m_xuehao; ifstreamis("studentInfo.text",ios: : binary); is.seekg(0,ios: : beg); while(! is.peek()) { is.read((char*)(&stu),sizeof(stu));//从“studentInfo.text”文件中一次读取学生的信息 if(m_xuehao==stu.xuehao) { loob: countStudent++; cout<<"请输入学号为"< "; cin>>m_coursenum; ifstreaminCourse("courses.text",ios: : binary);//用于从"courses.text"文件中找出该同学想选择的课程信息 inCourse.seekg(0,ios: : beg); while(! inCourse.eof())//选课核心代码 { coursecus;//用于此同学将要选择的课程信息 inCourse.read((char*)(&cus),sizeof(cus)); if(m_coursenum==cus.coursenum) { countCoures++; strcpy(stu.coursename,cus.coursename); ofstreamoutStu("selectCourseResult.text",ios: : binary|ios: : app);//现将选课的同学信息放入选课结果的文件中 outStu.write((char*)(&stu),sizeof(stu)); outStu.close(); cout<<"学号为"< "< } if(countCoures>2) { cout<<"同学: 你选择的课程已经超过"< "< break; } } if(countCoures==0) { cout<<"没有这门课程,还要继续选择其他课程吗y/n"< charch; cin>>ch; if(('y'==ch)||('Y'==ch)) gotoloob; else break; } inCourse.close(); } } if(countStudent==0) { cout<<"没有这个学生,是否重新输入y/n"< charch; cin>>ch; if(('y'==ch)||('Y'==ch)) gotoloop; } is.close(); menu(); } voidscanResult()//查询选课结果 { studentstu;//用于保存将要选课的那名同学的信息 cout<<"学生学号\t学生姓名\t所学专业\t选课名称"< ifstreamis("selectCourseResult.text",ios: : binary); for(inti=0;! is.peek();i++) { is.read((char*)(&stu),sizeof(stu)); cout< } is.close(); menu(); } voidset()//信息录入菜单 { cout< cout<<"﹌﹌﹌﹌﹌﹌1.录入学生信息﹌﹌﹌﹌﹌﹌"< cout<<"﹌﹌﹌﹌﹌﹌2.录入课程信息﹌﹌﹌﹌﹌﹌"< cout<<"﹌﹌﹌﹌﹌﹌3.返回前面菜单﹌﹌﹌﹌﹌﹌"< studentstu; coursecus; intchoose; cout<<"请输入选项序号: "; cin>>choose; switch(choose) { case1: stu.set();break; case2: cus.set();break; case3: menu();break; default: cout<<"没有这个选项,请重新输入,谢谢! "< set(); break; } } voidcheck()//查询信息 { cout< cout<<"﹌﹌﹌﹌﹌﹌1.查询学生信息﹌﹌﹌﹌﹌﹌"< cout<<"﹌﹌﹌﹌﹌﹌2.查询课程信息﹌﹌﹌﹌﹌﹌"< cout<<"﹌﹌﹌﹌﹌﹌3.查询学生选课结果信息﹌﹌﹌﹌﹌﹌"< cout<<"﹌﹌﹌﹌﹌﹌4.返回主要菜单﹌﹌﹌﹌﹌﹌"< cout<<"请输入选项序号"; intchoose; cin>>choose; studentstu; coursecus; switch(choose) { case1: stu.checkstudent();break; case2: cus.checkcourse();break; case3: scanResult();break; case4: menu();break; } } voidcancle()//删除信息 { cout< cout<<"﹌﹌﹌﹌﹌﹌1.删除学生信息﹌﹌﹌﹌﹌﹌"< cout<<"﹌﹌﹌﹌﹌﹌2.删除课程信息﹌﹌﹌﹌﹌﹌"<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 选课 系统