1、C+课程设计考场管理系统 课程设计报告题 目: 考场管理系统 学生姓名: 肖 琪 学 号: * 专业班级: 计科09102班 同组姓名: * * 设计时间: 2010年下学年第1-2周 指导老师意见: 评定成绩: 签名: 日期:1.规划分析1.1 系统概述首先该系统用户分为教师和学生登录,教师登陆之后,有3个模块,分别为学生管理,教师管理以及考场分配,在其每个模块当中分别实现插入,修改,查询,注销,返回上一级这5个功能。而学生只需要查询考试信息,因此在登陆之后,系统会自动将所有科目的相关考试信息输出,学生只需核对自己所在班级,找到相关记录即可!1.2方法分析首先程序中使用了头文件#includ
2、e,因为此系统的大部分数据成员都是string类型,这样子解决要简便很多,实现起来也方便。由于数组存放数据的时候,需要先确定数组的规模,不能动态地分配内存空间,而链表是非连续存放的,可以对内存空间进行动态分配,生成链表之后,每次只要返回头指针就可以对整个链表进行操作,因此用链表来实现各个类模块的插,删,改,查的功能。另外,程序中通过system(cls)清屏函数来实现界面的转换,主函数中的循环保证程序不会退出,并增加了文件的读入和写出功能,增强了系统的实用性!2.1系统功能模块图2.2 各个管理模块的插入,删除,修改都是相似的流程:1.查询流程图2.修改流程图3.程序详细代码描述首先该系统建立
3、了3个类:科目,学生,教师。学生类里包括姓名,学号,班级,char name20,int no,string sclass;科目类里包括科目名,考室,考试日期时间,考试班级,考室监考老师,string subj,place,date,sclass,tea;教师类中包括 char name20,姓名 int no, 编号; string subj,所教科目;其中,登录函数,包括各个显示界面都包含在每个类中;比如教师登陆界面,以及登录函数包含在教师类中,学生登陆界面以及登录函数包含在学生类中:此系统所用到的头文件:#include#include#include#include /使用getch(
4、)函数所包含的文件 而各个类的实现手法相似,都是利用单链表,下面只详细介绍科目管理这一个类:class subject /科目管理类 string subj,place,date,sclass,tea;public: string getsubj() /科目名 return subj; void setsubj(string temp) subj=temp; string getplace() /考室 return place; void setplace(string temp) place=temp; string getdate() /考室日期时间 return date; void s
5、etdate(string temp) date=temp; string getsclass() /考室班级 return sclass; void setsclass(string temp) sclass=temp; string gettea() /考室监考老师 return tea; void settea(string temp) tea=temp; class subject * next;subject * start=NULL; /这样便于实现后面的插入,删除,修subject * current=NULL; /改操作subject * precurrent=NULL;sub
6、ject * ptr=NULL;void add1()/向用户链表添加一个节点 string subj1,place1,date1,sclass1,tea1; current =new subject(); / coutendlsubj1; coutendlplace1; coutendldate1; coutendlsclass1; coutendltea1; current-setsubj(subj1); current-setplace(place1); current-setdate(date1); current-setsclass(sclass1); current-settea(
7、tea1); /以头插法将新节点插入链表 current-next=start; start=current; cout插入成功endl;void subj2()/从硬盘文件读数据生成链表 start=NULL; ifstream fin(c:subject.txt); if(!fin) cout打开文件失败i; for(j=0;jsubj1place1date1sclass1tea1; current-setsubj(subj1); current-setplace(place1); current-setdate(date1); current-setsclass(sclass1); cu
8、rrent-settea(tea1); current-next=start; start=current; void subj3()/把内存链表数据写入硬盘文件 ofstream fout(c:subject.txt); if(!fout) cout打开文件失败next; foutin; precurrent=start; while(precurrent!=NULL) foutgetsubj() getplace() getdate() getsclass() gettea()next; void subj4()/显示内存链表数据 cout序号 科目 考室 考试时间 考试班级 监考教师en
9、dl;precurrent=start; int i=1; while(precurrent!=NULL) coutendli+ getsubj() getplace() getdate() getsclass() gettea()next; void delete1()/删除 ptr=precurrent=start; cout请输入需要删除的科目名称uname; while(precurrent!=NULL) if( uname= precurrent-getsubj()/找到该用户 break; else ptr=precurrent; precurrent=precurrent-nex
10、t; if(precurrent!=NULL)/找到了要删除的结点 if(precurrent=start)/要删除的结点是头结点 start=precurrent-next;/改变头结点指向 else/要删除的结点是普通结点 ptr-next=precurrent-next;/断开该结点链表连接 delete precurrent;/释放该结点空间 coutendl删除成功endl; else cout对不起 ,该用户不存在 ,请检查后重新输入!endl; /Save存档 /ofstream outf(c:1.txt,ios:out);void modify()/修改 precurrent=
11、start; string subj1,place1,date1,sclass1,tea1; string uname; coutendluname; while(precurrent!=NULL) if( uname=precurrent-getsubj() )/找到该用户 break; else precurrent=precurrent-next; if(precurrent!=NULL)/找到了要修改的结点 cout请输入您想改成的新考室名:nplace1; precurrent-setplace(place1); cout请输入新的考试时间:ndate1; precurrent-se
12、tdate(date1); cout请输入新的班级:nsclass1; precurrent-setsclass(sclass1); cout请输入新安排的教师姓名:ntea1; precurrent-settea(tea1); cout修改成功endl; else cout对不起 ,该用户不存在 ,请检查后重新输入!endl; 下面这是学生类中的密码函数,即登陆设计,因为有教师跟学生登录,所以它包含在学生类和教师类中:(附:该函数程序参考了案例A)Class stud /学生类 char name20; int no; string sclass;public: string getPW()
13、/密码函数1 char pwCh=*; const int length = 18; /最大密码长度=18 char passlength = 0; for(int i=0;ilength-1;i+) passi = getch(); if(passi=r) passi = 0; cout输入结束。endl; return string(pass); coutpwCh; coutendl; return string(pass); int pass() /登陆管理 string pass1, pass2,pass3; int i = 0; ifstream fin(D:code.txt); i
14、f(!fin) system(cls); /清屏函数 do system(cls); /清屏函数 string pass(666666); coutendl; coutttendl; coutt*endl; coutendltt您选择的是学生登录,欢迎您使用本系统,请输入输入密码!endl; coutendltt这是您第i+1次输入!endl; coutt请注意:学生只拥有查询考试信息的权利,因此你登陆之后,系统n; coutt会自动将所有科目的相关考试信息输出,您只需进行核对自己的n; coutt班级,找到相关记录!Thank you !; coutendltt请输入密码,可以输入三次(当前
15、密码为:666666):endl; coutt*endl; if(!pare(getPW() /比较的是pass和getPW函数返回的值进行的比较 subj2(); subj4(); return 0; else coutendlt密码错误,请重新输入!nendl; system(pause); i+; /错误次数计数 while(i3); if(i=3) coutendlt密码三次错误,退出系统!pass2; /从文件里读密码 pass3 = pass2; do system(cls); coutendlttendl; coutendlt您选择的是学生登录,需要输入密码!endl; cout
16、endlt这是您第i+1次输入!endl; coutendlt请输入修改后的密码(可以输入三次) : ; if(!pare(getPW() subj2(); subj4(); return 0; else coutendlt密码错误,请重新输入!nendl; system(pause); i+; /错误次数计数 while(i3); if(i=3) coutendlt密码三次错误,你已经被限制登录,将退出系统!endl; exit(0); return 0;stud * head=NULL;stud * x=NULL;stud * p=NULL;stud * q=NULL;下面是这些是专门为学
17、生类服务的void sub1()/向用户链表添加一个节点 .void sub2()/从硬盘文件读数据生成链表 .void sub3()/把内存链表数据写入硬盘文件 .void sub4()/显示内存链表数据 void sub5()/删除 void sub6()/修改 Class teacher /教师管理类 char name20; int no; string subj;public: char * getname() /姓名 void setname(char* temp) string getsubj() /班级 void setsubj(string temp) int getno()
18、 /学号 void setno(int temp) class teacher * next; ;teacher * begin=NULL;teacher * f=NULL;teacher * u=NULL;teacher * v=NULL;void tea1()/向用户链表添加一个节点void tea2()/从硬盘文件读数据生成链表void tea3()/把内存链表数据写入硬盘文件void tea4()/显示内存链表数据void tea5()/删除void tea6()/修改class user /界面管理类,负责各个界面的函数void choose_face1() int admin_fa
19、ce() void choose_face3() void choose_face4() void choose_face2() ; 进入系统之后的各个界面以及链接函数: couttt 学生管理 endl; couttt endl; couttt 1.添加学生纪录 endl; couttt 2.修改学生信息 endl; couttt 3.注销学生信息 endl; couttt 4.查询所有学生信息 endl; couttt 0.退出学生管理系统 endl; coutttendl; coutendli; switch(i) case 1: sub1(); sub3(); break; case
20、2: / sub2(); sub6(); sub3(); break; case 3: sub5(); sub3(); break; case 4: sub2(); sub4(); break; case 0: return; void choose_face3() /choose_face3()教师管理函数 int i = 1; coutttendl; couttt endl; couttt 教师管理 endl; couttt endl; couttt 1.添加老师纪录 endl; couttt 2.修改老师信息 endl; couttt 3.注销教师纪录 endl; couttt 4.查询
21、所有教师信息 endl; couttt 0.退出教师管理系统 endl; coutttendl; coutendli; switch(i) void choose_face4() /choose_face4()科目管理 实现考场分配 int i = 1; coutttendl; couttt endl; couttt 考场分配 endl; couttt endl; couttt 1.添加一条考场科目纪录 endl; couttt 2.修改科目纪录信息 endl; couttt 3.注销纪录信息 endl; couttt 4.查询所有科目考试信息 endl; couttt 0.返回上一级 endl; coutttendl; coutendltt请选择 (0-4): ; while(1) int admin_face() /老师登陆之后的界面 system(cls); char choose2; int cn = 0; coutttendl; /程序流程1 couttt endl; couttt 考场管理系统 endl; couttt 1.进入学生管理界面 endl; couttt 2
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2