您好,欢迎访问三七文档
目录一、需求分析............................................................................................................2二、程序的主要功能................................................................................................2三、程序运行平台....................................................................................................2四、系统总框架图....................................................................................................2五、程序类的说明....................................................................................................2六、模块分析............................................................................................................3七、比较有特色的函数............................................................................................3八、存在的不足与对策............................................................................................5九、程序源代码........................................................................................................52一、需求分析选课在大学生活中是必不可少的,为了能让学生们更加便利的查看并选择各种课程,自然就需要一个网络结构,建立一个选课系统,这样可以方便管理学生和课程等内容。二、程序的主要功能1、添加功能:添加课程以及学生的各类信息保存到一个文件中。2、删除功能:能够对一个学生或课程的信息按照编号进行删除。3、浏览功能:可以查看学生信息课程信息以及学生的选课信息。4、选课功能:学生可以通过输入自己的学号进入选择界面,选择各种不同的课程。5、修改功能:用于修改错误的学生信息或者课程信息。三、程序运行平台Windows8.1操作系统VC++6.0四、系统总框架图系统总框架图五、程序类的说明student类的声明classstudent{public:doublexuehao;主函数信息录入信息浏览选择课程删除信息修改信息退出程序3charname[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:coutendl请输入你的学生学号:;doublem_xuehao,m_coursenum;//利用学号和课程号分别找出哪位同学选了哪门课cinm_xuehao;ifstreamis(studentInfo.text,ios::binary);is.seekg(0,ios::beg);while(!is.peek()){is.read((char*)(&stu),sizeof(stu));//从“studentInfo.text”文件中一次读取学生的信息4if(m_xuehao==stu.xuehao){loob:countStudent++;cout请输入学号为m_xuehao的学生想要选择的课程编码(1001-9999):;cinm_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学号为m_xuehao成功选了课程号为m_coursenum的课程!endl;}if(countCoures2){cout同学:你选择的课程已经超过countCoures门了!endl;break;}}if(countCoures==0){cout没有这门课程,还要继续选择其他课程吗y/n?endl;charch;cinch;if(('y'==ch)||('Y'==ch))gotoloob;elsebreak;}inCourse.close();}}5if(countStudent==0){cout没有这个学生,是否重新输入y/n?endl;charch;cinch;if(('y'==ch)||('Y'==ch))gotoloop;}is.close();menu();}八、存在的不足与对策由于设计者水平有限及时间等方面的原因,该系统的功能比较简单,只能输入较少的课程以及学生信息。些许不足请老师多多谅解。今后会学习更多的编程技巧,不断的提高程序设计水平。九、程序源代码#includeiostream#includectype.h#includestring#includeiomanip#includefstream#includesstreamusingnamespacestd;voidmenu()//主菜单{coutendl;cout学生选课系统endl;cout1.信息录入endl;cout2.信息浏览endl;cout3.选择课程endl;cout4.删除信息endl;cout5.修改信息endl;cout6.退出程序endl;}classstudent{public:doublexuehao;charname[100];charmajor[100];charcoursename[100];6voidset()//学生信息录入{studentstu;coutendl;cout请输入学生学号:;cinstu.xuehao;cout请输入学生姓名:;cinstu.name;cout请输入学生专业:;cinstu.major;ofstreamout(studentInfo.text,ios::app|ios::binary);out.write((char*)(&stu),sizeof(stu));out.close();menu();}voidcheckstudent()//查询学生信息{studentstu;cout学生学号\t学生姓名\t所学专业endl;ifstreamis(studentInfo.text,ios::binary);while(!is.peek()){is.read((char*)(&stu),sizeof(stu));coutstu.xuehao\t\tstu.name\t\tstu.major\t\tendl;}is.close();menu();}voidcancleStudent()//删除学生信息{stringxueHaoNum,line,xuehao;ifstreamfin(studentInfo.text.text);fstreamoutfile(studentInfo.text.text,ios::trunc|ios::out);//打开一个文件进行写操作和使同名文件被删除coutendl;cout请输入您要删除学生的学号:;cinxueHaoNum;while(!fin.eof()){getline(fin,line);istringstreamstream(line);//串流输入xueHaoNum=line.substr(0,line.find(,0));7if(xuehao!=xueHaoNum)outfilelineendl;}outfile.close();fin.close();fstreamf(studentInfo.text,ios::trunc|ios::out);//打开一个文件进行写操作和使同名文件被删除ifstreamoutf(studentInfo.text);foutf.rdbuf();outf.close();f.close();coutendl;menu();}voidchangestudent()//修改学生信息{studentstu;intmark;coutendl;cout请输入需要修改信息的学生学号;doublexuehao;cinxuehao;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请输入要修改的学生姓名;cinstu.name;cout请输入要修改的学生专业;cinstu.major;cout修改完毕!endlendl;mark=48*i;menu();break;}}is.close();if(stu.xuehao!=xuehao){cout没有这个学生!endlendl;menu();8}else{ofstreamos(studentInfo.text,ios
本文标题:学生选课系统C++
链接地址:https://www.777doc.com/doc-6681506 .html