C++课程设计方案-选课系统报告文件_第1页
C++课程设计方案-选课系统报告文件_第2页
C++课程设计方案-选课系统报告文件_第3页
C++课程设计方案-选课系统报告文件_第4页
C++课程设计方案-选课系统报告文件_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2010~2011(2)《面对对象程序设计》课程设计报告姓名:学号:班级:日期:指导老师:课程设计的题目:同学选课管理系统等级:等级三同组成员:组长:一、本系统的设计1.1系统功能模块图图1。1系统功能模块图1。2系统UML图图1。2系统UML图1。3功能模块描述与主要类描述本程序综合运用面对对象的设计方法,主要运用了STL中的map来储存从文件读出的数据。模块一:同学端模块功能(1)查看课程:此模块通过SearchAllCourse()函数,在界面上显示全部可选课程。(2)选择课程:此模块通过choosecourse()函数,通过输入你要选择的课程号进行选课。(3)退选课程:此模块通过Deletecourse()函数,用map中的erase()函数,删除已选课程。(4)查看已选课程:此模块通过Searchcourse()函数,将显示该同学所选课程的情况.模块二:管理端各功能:增加同学:此模块调用了头文件为student。h里的成员和GL类里的AddStudent()成员函数,要求用户输入同学的相关信息。如果学号相同,系统将会提示该同学已存在,然后自动返回管理端。增加课程:此模块调用GL类里的函数AddCourse(),要求用户输入课程相关信息。如果课程号相同,系统会提示课程已存在,并自动返回管理端。删除同学通过输入学号,程序调用函数DeleteStudent(),删除该同学相关信息,然后自动返回管理端。如果要删除的学号不存在,则系统提示该同学不存在,然后自动返回管理端。删除课程通过输入课程号,程序调用函数DeleteCourse(),删除该课程相关信息,然后自动返回管理端。如果要删除的课程号不存在,则系统提示该课程不存在,然后自动返回管理端。修改课程信息通过输入课程号,程序会进入修改课程信息界面,通过switch()函数,用户可选择需要修改的项目。修改同学信息通过输入学号号,程序会进入修改同学信息界面,通过switch()函数,用户可选择需要修改的项目.查看选课情况该模块显示可选的课程信息。查看全部同学该模块显示已存在的同学信息。本同学选课系统采纳了面对对象的程序设计方法。全部的方法均以类为基础.所涉及的类包括:(1)基础类classPeople基础人员信息类:该类是一个基类,设置了包括姓名、性别、年龄、电话的基本信息及相关的构造函数,接口函数,修改私有成员函数。可以给同学类继承。classStudent同学信息类:该类继承了People类,增加了学号,学院,所选课程的信息。classCourse课程信息类:该类设置了一些基本的课程信息,包括课程号、课程名称、学分、授课老师、分类.(2)功能类classXS同学管理类:该类定义了前文模块一同学登录端里面的四个功能的实现。此类的作用在于将同学登陆端的功能集成并定义使用的主要方法。classGL系统管理类:该类定义了前文模块二系统登录端里面的八个功能的实现。此类的作用在于将系统登陆端的功能集成并定义使用的主要方法.1。4选课流程图图1。3选课流程图二、本系统的实现过程主函数里调用map类,通过学号和课程号自动排序同学信息和课程信息,读写文件student、course初始化同学信息以及课程信息.再调用while语句循环同学管理系统、同学选课端、系统管理端,以满意用户输入需求。相关代码:voidmain(){ inta,a1,a2; intsn; stringsm; XS_xs; map〈int,Student>students; map〈int,Course〉courses; ReadFile_student(students); WriteFile_student(students); ReadFile_course(courses); WriteFile_course(courses); while(a=mainmenu()) { if(a==1) { cout〈<”请输入学号:”; cin〉〉sn; cout〈〈"请输入密码:”; cin>〉sm; if(password(sn,sm)) { map<int,Student〉::iteratoritor=students。find(sn); if(itor==students。end()) cout〈<"该同学不存在!"〈<endl; else { XS_xs; Student_takecourse(itor—>second); while(a1=studentmenu()) { switch(a1) { case1:_xs.SearchAllCourse(courses);break;//查看全部课程 case2:_xs.Choosecourse(_takecourse,courses,students);break;//选课 case3:_xs。Deletecourse(_takecourse,students);break;//退选 case4:_xs。SearchCourse(_takecourse,students);break;//查看已选课程 } } } } else cout〈〈”该同学不存在或者密码输入错误!”<〈endl; } if(a==2) { while(a2=adminmenu()) { GL_gl; switch(a2) { case1:_gl。AddStudent(students);break;//增加同学 case2:_gl.AddCourse(courses);break;//增加课程 case3:_gl.DeleteStudent(students);break;//删除同学 case4:_gl。DeleteCourse(courses);break;//删除课程 case5:_gl。ModifyStudent(students);break;//修改同学信息 case6:_gl.ModifyCourse(courses);break;//修改课程信息 case7:_gl。SearchCourse(courses);break;//查询全部课程 case8:_gl.SearchStudent(students);break;//查询全部同学 } } } }}相关代码:intmainmenu(){ intn; system("cls"); cout〈<”\t\t========================================\n” <<”\t\t||\n” <〈”\t\t|同学选课系统|\n" <<”\t\t||\n” 〈〈”\t\t|======================================|\n" 〈<"\t\t||\n" <<"\t\t||\n" <<"\t\t|1。同学选课端|\n" 〈<”\t\t|2.系统管理端|\n" <<”\t\t|0。退出|\n” <〈"\t\t||\n" 〈〈"\t\t||\n” 〈〈”\t\t|======================================|\n"〈<endl; cout<〈”请选择登陆端:"〈<endl; cin>>n; while(n〈0&&n〉2) { cout〈<"输入有误,请重新输入:”; cin〉〉n; } returnn;}同学选课端:通过已存的password。txt文件里的学号及相关密码,可以进入同学登录端界面相关代码:intstudentmenu(){ intn; cout〈〈”\t\t========================================\n" <〈"\t\t||\n” 〈〈"\t\t|同学登陆端|\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|0.返回主菜单|\n" <〈”\t\t||\n" <〈"\t\t||\n” <〈”\t\t||\n” <〈”\t\t|======================================|\n"〈<endl; cout〈〈”请选择操作方式:"<<endl; cin〉〉n; while(n<0&&n〉4) { cout<<"输入有误,请重新输入:"; cin〉>n; } returnn;}当“请选择操作方式”语句下输入1时,程序执行以下语句:voidXS::SearchAllCourse(std::map<int,Course>&courses)//查询全部课程{ map〈int,Course>::iteratoritor=courses。begin(); cout<〈setiosflags(ios_base::left) 〈〈setw(10)<<"课程号" <<setiosflags(ios_base::left) <〈setw(15)<〈”课程名称" <〈setiosflags(ios_base::left) 〈〈setw(10)〈〈"学分" 〈〈setiosflags(ios_base::left) 〈<setw(15)<〈"上课老师” <〈setiosflags(ios_base::left) 〈〈setw(15)〈〈"所属分类”〈<endl; while(itor!=courses.end()) { cout<〈setiosflags(ios_base::left) 〈<setw(10)〈<itor—>second。GetCnum() <〈setiosflags(ios_base::left) 〈〈setw(15)<〈itor—〉second.GetCname() <〈setiosflags(ios_base::left) <<setw(10)<<itor—〉second。GetCredit() <〈setiosflags(ios_base::left) 〈〈setw(15)〈<itor->second。GetTeacher() 〈<setiosflags(ios_base::left) 〈〈setw(15)〈<itor—〉second.GetSort()<<endl; itor++; }}当“请选择操作方式”语句下输入2时,程序执行以下语句:voidXS::Choosecourse(Student&st,map<int,Course>&courses,map<int,Student>&students){ intn; cout<〈”请输入课程号:”; cin>>n; map<int,Course〉::iteratoritorc=courses.find(n); if(itorc==courses.end()) cout<<"没有此课程!”〈〈endl; else { strcpy(st。GetCourse(),(itorc-〉second)。GetCname()); map〈int,Student>::iteratoritor=students.find(st.GetNo()); itor—〉second。ChangeCourse(itorc->second.GetCname()); } }当“请选择操作方式”语句下输入3时,程序执行以下语句:voidXS::Deletecourse(Student&st,map<int,Student>&students){ map〈int,Student>::iteratoritor=students.find(st.GetNo()); char*p="未选课”; itor—>second.ChangeCourse(p); }系统登录端:相关代码:intadminmenu(){ intn; cout〈〈”\t\t========================================\n” 〈<”\t\t||\n” 〈<"\t\t|系统登陆端|\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|5。修改同学信息|\n" 〈<"\t\t|6。修改课程信息|\n” <<”\t\t|7。查看选课情况|\n” 〈<"\t\t|8。查看全部同学|\n” <<”\t\t|0。返回主菜单|\n” 〈〈”\t\t||\n” <〈”\t\t||\n" <<”\t\t||\n" <〈”\t\t|======================================|\n"〈<endl; cout<<”请选择操作方式:"<〈endl; cin>〉n; while(n〈0&&n>8) { cout<<"输入有误,请重新输入:”; cin〉〉n; } returnn;}当“请选择操作方式”语句下输入1时,程序执行以下语句:voidGL::AddStudent(map<int,Student>&students)//增加同学{ charname[20]; charsex; intage; charphone[20]; intno; charschool[20]; charcourse[20]; cout<<”请输入学号:”; cin>>no; map<int,Student>::iteratoritor=students。find(no); if(itor==students.end()) { cout<〈”请输入姓名:"; cin〉>name; cout〈<endl〈〈”请输入性别:"; cin>>sex; cout<<endl〈〈”请输入年龄:”; cin〉>age; cout〈<endl〈〈”请输入电话:"; cin〉>phone; cout〈<endl〈<”请输入学院:"; cin〉〉school; cout〈〈endl<<"请输入课程:"; cin〉〉course; Studentstu(name,sex,age,phone,no,school,course); students.insert(make_pair(no,stu)); } else cout〈<"该同学已存在!”〈<endl; }增加课程同理;当“请选择操作方式"语句下输入3时,程序执行以下语句:调用了erase()函数删除学号所对应的相关信息voidGL::DeleteStudent(std::map<int,Student>&students){ intno; cout〈〈"请输入学号:"; cin〉〉no; map〈int,Student〉::iteratoritor=students.find(no); if(itor==students.end()) cout<<”该同学不存在!"〈〈endl; else students.erase(itor); }删除课程同理;当“请选择操作方式”语句下输入5时,程序执行以下语句:Switch()语句自动跳转执行指令,提示用户输入相关信息.voidGL::ModifyStudent(std::map<int,Student〉&students){ intn,m; cout〈<”请输入学号:”; cin>〉n; map〈int,Student〉::iteratoritor=students.find(n); if(itor==students.end()) cout〈<”该同学不存在!"〈〈endl; else { cout<<”***********************\n" <<”**\n" 〈<”*1.修改姓名*\n” <<"*2。修改性别*\n” <〈”*3。修改年龄*\n” 〈〈”*4。修改电话*\n" 〈〈”*5。修改学院*\n” 〈〈"*0。返回管理端*\n" 〈〈"***********************\n"<<endl; cout<<"请选择要修改的项目:"; cin>>m; switch(m) { case1: charname[20]; cout〈<"请输入新姓名:"; cin〉〉name; itor—>second.ChangeName(name); break; case2: charsex; cout〈<"请输入性别:”; cin>>sex; itor—>second。ChangeSex(sex); break; case3: intage; cout<〈"请输入新年龄"; cin>〉age; itor-〉second。ChangeAge(age); break; case4: charphone[20]; cout<<"请输入新电话号码:"; cin>>phone; itor->second。ChangeName(phone); break; case5: charschool[20]; cout〈〈”请输入新电话号码:”; cin>>school; itor-〉second.ChangeSchool(school); break; case0:break; default: cout〈〈””〈〈endl; } }}修改课程同理;查看同学全部同学,执行以下语句setiosflags(ios_base::left)语句将显示内容规范化,统一左对齐。GL::SearchStudent(std::map<int,Student〉&students){ map<int,Student>::iteratoritor=students.begin(); cout<〈setiosflags(ios_base::left) 〈<setw(6)<〈”学号” <<setiosflags(ios_base::left) <<setw(10)<<"姓名” 〈<setiosflags(ios_base::left) 〈<setw(6)〈<"性别” 〈<setiosflags(ios_base::left) 〈<setw(6)<<"年龄" 〈〈setiosflags(ios_base::left) 〈<setw(15)〈〈”电话" 〈<setiosflags(ios_base::left) 〈〈setw(15)〈〈"学院" <<setiosflags(ios_base::left) 〈〈setw(15)〈〈"所选课程”〈〈endl; while(itor!=students。end()) { cout〈〈setiosflags(ios_base::left) <<setw(6)〈〈itor—〉second。GetNo() <<setiosflags(ios_base::left) 〈<setw(10)<<itor—〉second.GetName() <<setiosflags(ios_base::left) 〈<setw(6)<<itor—>second.GetSex() <〈setiosflags(ios_base::left) <〈setw(6)〈<itor->second。GetAge() <〈setiosflags(ios_base::left) <〈setw(15)〈〈itor—>second。GetPhone() 〈〈setiosflags(ios_base::left) 〈〈setw(15)<<itor—>second。GetSchool() <〈setiosfla

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论