《C++课程设计报告样例-学生选课系统设计报告(共34页).doc》由会员分享,可在线阅读,更多相关《C++课程设计报告样例-学生选课系统设计报告(共34页).doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上计算机与信息科学系学生选课系统设计报告(C+)班 级: 计科系08级2班 专 业: 计算机科学与技术 题 目: 学 生 选 课 系 统 指导教师 : 学 号: 姓 名: 同 组 人 : 无 2010 年 1 月 1 日目 录(Contents)引言.3一.设计目的.3二.总体设计.4三.详细设计.51.界面设计.52.课程信息设计.63.学生信息设计.74.选课设计.85.程序代码.9 (1).头文件代码(xk.h) .9 (2).菜单代码(menu.app) .10(3).课程信息代码(course.app) .12(4).学生信息代码(student.app) .
2、19(5).选课信息代码(selectcourse.app).25(6).主函数代码(main.app) .29四.测试与调试.30五.心得体会.31引 言21世纪以高科技为核心的知识经济将占主导地位,国家的综合国力和国际竞争力将越来越取决于科学技术创新水平。教育作为知识创新、传播和应用的基础,培养和输送人才的摇篮,已经成为经济发展和社会进步的基础。尽管人类进步的程度随着不同时代,不同地区而有所变化,教育的口径却在不断扩宽,以便使过去仅供少数人使用的教育资源能够为更多各种年龄、不同社会阶层和背景的人们所用。在信息爆炸的时代,传统教学管理面临着诸多挑战。一 设计目的网上选课系统是针对在校学生和教
3、师使用,从学生的角度来说,由于学校教学制度的改革,现在大部分高等院校开始实行的是学生的自主选课模式,传统的教学模式(学生按照学校安排好的课程上课)已经不能适应新型的教学手段,如果仍然通过纸上的方式选课,一方面浪费的大量的人力、物力资源,另一方面浪费时间以及在人为的统计过程中不可避免出现的差错等情况。随着学校规模的不断扩大,专业、班级、学生的数量急剧增加,有关学生选课的各种信息量也成倍增长,而目前许多高校的学生选课管理仍停留在复杂的人工操作上,重复工作较多,工作量大,效率低,这种弊端会越来越多的暴露出来。因此,利用网络,使学生只要在计算机前输入自己的个人选课信息即可完成原来几倍的作业量。从教师的
4、角度来说,同样是节省了大量的工作量,由于教师提出代课申请完成课程发布的工作较学生选课而言更加的复杂,因此通过网上进行课程发布能大幅度的减少教师的工作量,减少错误的发生几率。作为教师,也只要通过自己的电脑来操作即可,不用再奔波于教务处和办公室之间。二 总体设计学生选课系统退出系统学生信息管理学生信息修改学生信息查询学生信息录入学生信息删除退出学生信息学生信息浏览课程信息管理课程信息修改课程信息查询课程信息录入课程信息删除退出课程信息课程信息浏览选 课选课信息浏览退 选选 课退 出三详细设计运行环境:Visual Studio2005语言:C+1. 界面设计 界面图示菜单选择:选1:进入课程信息界
5、面 选2:进入学生信息界面 选3:进入选课界面 选4:退出,并保存相关记录到文件里2课程信息课程信息界面图示菜单选择:选1:进入课程信息浏览,先看是否有记录,无则退出到课程信息界面,有则显示出来. 选2:进入课程信息录入,录入课程编号,先看是否重复,若 有重复,则提示错误,进行下次输入,无则输出一条记录,并添加记录到表. 选3:进入课程信息修改,录入课程编号,看是否在表中有这条记录,无则提示错误,有则提示修改记录的相关信息. 选4:进入课程信息删除,录入要删除的课程编号,看是否在表中有这条记录,无则提示错误,有则提示显示记录的相关信息,再提示是否确实要删除记录,要则删除. 选5:进入课程信息查
6、询,进行选择是按学号查询或学分查询,不管哪种方式,都查询一下表中有相关的记录,没有则重新选择,有刚显示相关记录. 选6: 退出课程信息界面.3学生信息学生信息界面图示菜单选择:选1:进入学生信息浏览,先看是否有记录,无则退出到学生信息界面,有则显示出来. 选2:进入学生信息录入,录入学生编号,先看是否重复,若 有重复,则提示错误,进行下次输入,无则输出一条记录,并添加记录到表. 选3:进入学生信息修改,录入学生编号,看是否在表中有这条记录,无则提示错误,有则提示修改记录的相关信息. 选4:进入学生信息删除,录入要删除的学生编号,看是否在表中有这条记录,无则提示错误,有则提示显示记录的相关信息,
7、再提示是否确实要删除记录,要则删除. 选5:进入学生信息查询,进行选择是按学号查询或学分查询,不管哪种方式,都查询一下表中有相关的记录,没有则重新选择,有刚显示相关记录. 选6: 退出学生信息界面.4选课选课界面图示菜单选择:选1:进入选课信息浏览,先看是否有记录,无则退出到选课信息界面,有则显示出来. 选2:进入学生选课,录入学生编号,先看是否重复,若有重复,则提示错误,进行下次输入,无则进行选课提示,输入选课的编号,再看是否输入的编号是否存在,无则重新输入,有则看是否选了这门课,没有就选上,进行重复选择. 选3: 进入学生退选,录入学生编号,先看是否重复,若有重复,则提示错误,进行下次输入
8、,无则进行选课提示,输入退选课程的编号,再看是否输入的编号是否存在,无则重新输入,有则看是否选了这门课,没有就提示错误信息,若有就进行退选.再进行重复选择. 选6: 退出选课界面5.程序代码(1).头文件代码(xk.h)专心-专注-专业#include#include#include#include#include#includeusing namespace std;class student;/建立一个课程结构struct course1 int cnumber;/课程编号 char cname100;/课程名称 int xinzhi;/课程性质 int floattime;/课程理论学时
9、 int testtime;/课程实验学时 int credit;/课程学分 int term;/课程开课学期 int select;/课程数 ;/建立一个课程类class course public: int c;/课程信息记录个数 course1 cou100; void cinput();/课程信息录入 void cborrow();/课程信息浏览 void cedit();/课程信息修改 void cdelete();/课程信息删除 void ccx();/课程信息查找 void cshuchu();/课程信息从文件中写到程序中 void cshuru();/课程信息从程序输出到文件中
10、 ;/建立一个学生结构struct student1 int snumber;/学号 char sname8;/姓名 int sxinbie;/性别 char sborn11;/出生年月 char stelephone11;/电话 int sage;/年龄 int sele20;/选课情况 int x;/学生选了多少课 int sum;/学生选课的总学分;/建立一个学生类class student public: int s;/学生信息记录个数 student1 stu100; void sborrow();/学生信息的浏览 void sedit();/学生信息修改 void sdelete(
11、);/学生信息删除 void scx();/学生信息查询 void sinput();/学生信息输出 void sshuru();/学生信息从文件中输入到程序中 void sshuchu();/学生信息从程序中输出到文件中 ;/选课类class selectcourse:public student,public course public: void selsum(student& m,course& n);/计算选修的学分的总和 void selcourse(student& m,course& n);/学生选课 void delecourse(student& m,course& n);
12、/学生退选 void selborrow(student& m,course& n);/学生选课浏览;char menu();/主菜单char coursemenu();/课程信息菜单char studentmenu();/学生信息菜单char selectmenu();/选课菜单(2).菜单代码(menu.app)#includexk.h/主菜单char menu() system(cls); char n3; coutendlendl; coutttstring(50,*)endl; couttt*string(48, )*endl; couttt*string(48, )*endl; c
13、outtt*string(19, )学生选课系统string(17, )*endl; couttt*string(48, )*endl; couttt*string(20, )1.课程信息string(18, )*endl; couttt*string(20, )2.学生信息string(18, )*endl; couttt*string(20, )3.选课string(22, )*endl; couttt*string(20, )4.退出系统string(18, )*endl; couttt*string(48, )*endl; couttt*string(48, )*endl; coutt
14、tstring(50,*)endl; coutendlendl; while(1) coutn; if(strlen(n)=1) for(char i=1;i=4;i+) if(n0=i) return i; couttt*输入有误,请重新输入endl; /课程菜单char coursemenu() system(cls); char n3; coutendlendl; coutttstring(50,#)endl; couttt#string(48, )#endl; couttt#string(48, )#endl; couttt#string(19, )课程信息string(21, )#e
15、ndl; couttt#string(48, )#endl; couttt#string(17, )1.课程信息浏览string(17, )#endl; couttt#string(17, )2.课程信息录入string(17, )#endl; couttt#string(17, )3.课程信息修改string(17, )#endl; couttt#string(17, )4.课程信息删除string(17, )#endl; couttt#string(17, )5.课程信息查询string(17, )#endl; couttt#string(17, )6.退出课程信息string(17, )
16、#endl; couttt#string(48, )#endl; couttt#string(48, )#endl; coutttstring(50,#)endl; coutendlendl; while(1) coutn; if(strlen(n)=1) for(char i=1;i=6;i+) if(n0=i) return i; couttt*输入有误,请重新输入endl; /学生菜单char studentmenu() system(cls); char n3; coutendlendl; coutttstring(50,#)endl; couttt#string(48, )#endl
17、; couttt#string(48, )#endl; couttt#string(19, )学生信息string(21, )#endl; couttt#string(48, )#endl; couttt#string(17, )1.学生信息浏览string(17, )#endl; couttt#string(17, )2.学生信息录入string(17, )#endl; couttt#string(17, )3.学生信息修改string(17, )#endl; couttt#string(17, )4.学生信息删除string(17, )#endl; couttt#string(17, )5
18、.学生信息查询string(17, )#endl; couttt#string(17, )6.退出学生信息string(17, )#endl; couttt#string(48, )#endl; couttt#string(48, )#endl; coutttstring(50,#)endl; coutendlendl; while(1) coutn; if(strlen(n)=1) for(char i=1;i=6;i+) if(n0=i) return i; couttt*输入有误,请重新输入endl; /选课菜单char selectmenu() system(cls); char n3
19、; coutendlendl; coutttstring(50,#)endl; couttt#string(48, )#endl; couttt#string(48, )#endl; couttt#string(19, )选课功能string(21, )#endl; couttt#string(48, )#endl; couttt#string(21, )1.选课记录浏览string(13, )#endl; couttt#string(21, )2.选课string(21, )#endl; couttt#string(21, )3.退选string(21, )#endl; couttt#str
20、ing(21, )4.退出选课string(17, )#endl; couttt#string(48, )#endl; couttt#string(48, )#endl; coutttstring(50,#)endl; coutendlendl; while(1) coutn; if(strlen(n)=1) for(char i=1;i=4;i+) if(n0=i) return i; couttt*输入有误,请重新输入umber;break; case 2:ame;break; case 3:sincouc.xinzhi;break; case 4:sincouc.floattime;br
21、eak; case 5:sincouc.testtime;break; case 6:sincouc.credit;break; case 7:sincouc.term;break; case 8:sincouc.select; n+; if(n=9) break; c+; void course:cshuchu() ofstream cout(course.txt); for(int i=0;ic;i+) umber ame coui.xinzhi ; coutcoui.floattime coui.testtime ; coutcoui.credit coui.term coui.sele
22、ctendl; /课程信息录入void course:cinput() system(cls); char bol; while(1) system(cls); int p=0; couttt请输入课程信息:endl; umber; for(int i=0;ic;i+) if(umber=umber) couttt*课程编号已存在,请重新输入100 | umber0) couttt*输入错误,课程编号在-100之间!nendl; getch(); continue; ame; coutcouc.xinzhi; if(couc.xinzhi!=1 & couc.xinzhi!=0) couttt
23、*课程性质输入错误,请输入(、考查/0、考核)!nendl; getch(); continue; coutcouc.floattime; if(couc.floattime100 | couc.floattime1) couttt*输入错误,理论学时必须在-100之间!nendl; getch(); continue; coutcouc.testtime; if(couc.testtime100 | couc.testtime1) couttt*输入错误,理论实验学时必须在-100之间!nendl; getch(); continue; coutcouc.credit; if(couc.cr
24、edit6 | couc.credit1) couttt*输入错误,学分必须在-6之间!nendl; getch(); continue; coutntt课程开课学期:; coutntt请选择:endl; coutcouc.term; if(couc.term6 | couc.term1) couttt*输入错误!nendl; getch(); continue; couc.select=0; c+; coutbol; if(bol=n | bol=N) break; system(cls); coutntt按任意键返回.; getch();/课程信息浏览void course:cborrow
25、() system(cls); coutendlendl; if(c=0) couttt*没有记录,请先输入记录endl; else coutntt课程具体信息如下:nendl; coutsetw(5)setfill( )left编号setw(15)setfill( )left名称setw(6)setfill( )left性质; coutsetw(9)setfill( )left理论学时setw(9)setfill( )left实验学时; coutsetw(5)setfill( )left学分setw(9)setfill( )left开课学期setw(9)setfill( )left选课人数e
26、ndl; for(int i=0;ic;i+) coutsetw(5)setfill( )umbersetw(15)setfill( )amesetw(6)setfill( )left(coui.xinzhi=1 ? 考试 : 考核); coutsetw(9)setfill( )leftcoui.floattimesetw(9)setfill( )leftcoui.testtime; coutsetw(5)setfill( )leftcoui.creditsetw(9)setfill( )leftcoui.termsetw(9)setfill( )leftcoui.selectendl; co
27、utntt按任意键返回.n; getch();/课程信息修改void course:cedit() system(cls); int p=0,number,y; char bol,boll; if(c=0) couttt*没有记录,请先输入记录; else while(1) system(cls); coutnumber; if(number100 | number0) coutntt*输入有误,请重新输入(0-99):endl;getch(); continue; for(int i=0;ic;i+) if(umber=number) p=1; while(1) system(cls); i
28、nt mon; coutsetw(5)setfill( )left编号setw(15)setfill( )left名称setw(6)setfill( )left性质; coutsetw(9)setfill( )left理论学时setw(9)setfill( )left实验学时; coutsetw(5)setfill( )left学分setw(9)setfill( )left开课学期setw(9)setfill( )left选课人数endl; coutsetw(5)setfill( )umbersetw(15)setfill( )amesetw(6)setfill( )left(coui.xin
29、zhi=1 ? 考试 : 考核); coutsetw(9)setfill( )leftcoui.floattimesetw(9)setfill( )leftcoui.testtime; coutsetw(5)setfill( )leftcoui.creditsetw(9)setfill( )leftcoui.termsetw(9)setfill( )leftcoui.selectendl; coutn请选择修改(1.名称/2.性质/3.理论学时/4.实验学时/5.学分/6.开课学期):y; if(y6 | y1) couttt*输入错误,请重新输入.endl; getch(); continue; switch(y)