C++课程设计考场管理系统.docx

上传人:b****0 文档编号:10063314 上传时间:2023-05-23 格式:DOCX 页数:31 大小:491.19KB
下载 相关 举报
C++课程设计考场管理系统.docx_第1页
第1页 / 共31页
C++课程设计考场管理系统.docx_第2页
第2页 / 共31页
C++课程设计考场管理系统.docx_第3页
第3页 / 共31页
C++课程设计考场管理系统.docx_第4页
第4页 / 共31页
C++课程设计考场管理系统.docx_第5页
第5页 / 共31页
C++课程设计考场管理系统.docx_第6页
第6页 / 共31页
C++课程设计考场管理系统.docx_第7页
第7页 / 共31页
C++课程设计考场管理系统.docx_第8页
第8页 / 共31页
C++课程设计考场管理系统.docx_第9页
第9页 / 共31页
C++课程设计考场管理系统.docx_第10页
第10页 / 共31页
C++课程设计考场管理系统.docx_第11页
第11页 / 共31页
C++课程设计考场管理系统.docx_第12页
第12页 / 共31页
C++课程设计考场管理系统.docx_第13页
第13页 / 共31页
C++课程设计考场管理系统.docx_第14页
第14页 / 共31页
C++课程设计考场管理系统.docx_第15页
第15页 / 共31页
C++课程设计考场管理系统.docx_第16页
第16页 / 共31页
C++课程设计考场管理系统.docx_第17页
第17页 / 共31页
C++课程设计考场管理系统.docx_第18页
第18页 / 共31页
C++课程设计考场管理系统.docx_第19页
第19页 / 共31页
C++课程设计考场管理系统.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++课程设计考场管理系统.docx

《C++课程设计考场管理系统.docx》由会员分享,可在线阅读,更多相关《C++课程设计考场管理系统.docx(31页珍藏版)》请在冰点文库上搜索。

C++课程设计考场管理系统.docx

C++课程设计考场管理系统

课程设计报告

题目:

考场管理系统

学生姓名:

肖琪

学号:

************

专业班级:

计科09102班

同组姓名:

******************

设计时间:

2010年下学年第1-2周

指导老师意见:

 

评定成绩:

签名:

日期:

1.规划分析

1.1系统概述

首先该系统用户分为教师和学生登录,教师登陆之后,有3个模块,分别为学生管理,教师管理以及考场分配,在其每个模块当中分别实现插入,修改,查询,注销,返回上一级这5个功能。

而学生只需要查询考试信息,因此在登陆之后,系统会自动将所有科目的相关考试信息输出,学生只需核对自己所在班级,找到相关记录即可!

1.2方法分析

首先程序中使用了头文件#include,因为此系统的大部分数据成员都是string类型,这样子解决要简便很多,实现起来也方便。

由于数组存放数据的时候,需要先确定数组的规模,不能动态地分配内存空间,而链表是非连续存放的,可以对内存空间进行动态分配,生成链表之后,每次只要返回头指针就可以对整个链表进行操作,因此用链表来实现各个类模块的插,删,改,查的功能。

另外,程序中通过system("cls")清屏函数来实现界面的转换,主函数中的循环保证程序不会退出,并增加了文件的读入和写出功能,增强了系统的实用性!

2.1系统功能模块图

2.2各个管理模块的插入,删除,修改都是相似的流程:

1.查询流程图

2.修改流程图

 

3.程序详细代码描述

首先该系统建立了3个类:

科目,学生,教师。

学生类里包括姓名,学号,班级,charname[20],intno,stringsclass;科目类里包括科目名,考室,考试日期时间,考试班级,考室监考老师,stringsubj,place,date,sclass,tea;教师类中包括charname[20],姓名intno,编号;stringsubj,所教科目;

其中,登录函数,包括各个显示界面都包含在每个类中;比如教师登陆界面,以及登录函数包含在教师类中,学生登陆界面以及登录函数包含在学生类中:

此系统所用到的头文件:

#include

#include

#include

#include//使用getch()函数所包含的文件

而各个类的实现手法相似,都是利用单链表,下面只详细介绍科目管理这一个类:

classsubject//科目管理类

{stringsubj,place,date,sclass,tea;

public:

stringgetsubj()//科目名

{returnsubj;

}

voidsetsubj(stringtemp)

{subj=temp;

}

stringgetplace()//考室

{returnplace;

}

voidsetplace(stringtemp)

{place=temp;

}

stringgetdate()//考室日期时间

{returndate;

}

voidsetdate(stringtemp)

{date=temp;

}

stringgetsclass()//考室班级

{returnsclass;

}

voidsetsclass(stringtemp)

{sclass=temp;

}

stringgettea()//考室监考老师

{returntea;

}

voidsettea(stringtemp)

{tea=temp;

}

classsubject*next;

};

subject*start=NULL;//这样便于实现后面的插入,删除,修subject*current=NULL;//改操作

subject*precurrent=NULL;

subject*ptr=NULL;

voidadd1()//向用户链表添加一个节点

{

stringsubj1,place1,date1,sclass1,tea1;

current=newsubject();

//

cout<

";

cin>>subj1;

cout<

";

cin>>place1;

cout<

";

cin>>date1;

cout<

";

cin>>sclass1;

cout<

";

cin>>tea1;

current->setsubj(subj1);

current->setplace(place1);

current->setdate(date1);

current->setsclass(sclass1);

current->settea(tea1);

//以头插法将新节点插入链表

current->next=start;

start=current;

cout<<"插入成功"<

}

voidsubj2()//从硬盘文件读数据生成链表

{

start=NULL;

ifstreamfin("c:

\\subject.txt");

if(!

fin)

{

cout<<"打开文件失败"<

return;

}

inti,j;

stringsubj1,place1,date1,sclass1,tea1;

fin>>i;

for(j=0;j

{

current=newsubject();

fin>>subj1>>place1>>date1>>sclass1>>tea1;

current->setsubj(subj1);

current->setplace(place1);

current->setdate(date1);

current->setsclass(sclass1);

current->settea(tea1);

current->next=start;

start=current;

}

}

voidsubj3()//把内存链表数据写入硬盘文件

{

ofstreamfout("c:

\\subject.txt");

if(!

fout)

{

cout<<"打开文件失败"<

return;

}

inti=0;

precurrent=start;

while(precurrent!

=NULL)//计算链表中共有多少个节点

{

i++;

precurrent=precurrent->next;

}

fout<

precurrent=start;

while(precurrent!

=NULL)

{

fout<getsubj()<<""<getplace()<<""<getdate()<<""<getsclass()<<""<gettea()<<"'\n'";

precurrent=precurrent->next;

}

}

 

voidsubj4()//显示内存链表数据

{

cout<<"序号"<<"科目考室考试时间考试班级监考教师"<

precurrent=start;

inti=1;

while(precurrent!

=NULL)

{

cout<getsubj()<<""<getplace()<<""<getdate()<<""<getsclass()<<""<gettea()<

precurrent=precurrent->next;

}

}

 

voiddelete1()//删除

{

ptr=precurrent=start;

cout<<"请输入需要删除的科目名称"<

stringuname;

cin>>uname;

while(precurrent!

=NULL)

{

if(uname==precurrent->getsubj())//找到该用户

break;

else

{

ptr=precurrent;

precurrent=precurrent->next;

}

}

if(precurrent!

=NULL)//找到了要删除的结点

{

if(precurrent==start)//要删除的结点是头结点

{

start=precurrent->next;//改变头结点指向

}

else//要删除的结点是普通结点

{

ptr->next=precurrent->next;//断开该结点链表连接

}

deleteprecurrent;//释放该结点空间

cout<

}

else

{

cout<<"对不起,该用户不存在,请检查后重新输入!

"<

}

//Save存档

//ofstreamoutf("c:

\\1.txt",ios:

:

out);

}

voidmodify()//修改

{

precurrent=start;

stringsubj1,place1,date1,sclass1,tea1;

stringuname;

cout<

";

cin>>uname;

while(precurrent!

=NULL)

{

if(uname==precurrent->getsubj())//找到该用户

break;

else

{

precurrent=precurrent->next;

}

}

if(precurrent!

=NULL)//找到了要修改的结点

{

cout<<"请输入您想改成的新考室名:

\n"<

cin>>place1;

precurrent->setplace(place1);

cout<<"请输入新的考试时间:

\n"<

cin>>date1;

precurrent->setdate(date1);

cout<<"请输入新的班级:

\n"<

cin>>sclass1;

precurrent->setsclass(sclass1);

cout<<"请输入新安排的教师姓名:

\n"<

cin>>tea1;

precurrent->settea(tea1);

cout<<"修改成功"<

}

else

{

cout<<"对不起,该用户不存在,请检查后重新输入!

"<

}

}

 

下面这是学生类中的密码函数,即登陆设计,因为有教师跟学生登录,所以它包含在学生类和教师类中:

(附:

该函数程序参考了案例A)

Classstud//学生类

{

charname[20];

intno;

stringsclass;

public:

stringgetPW()//密码函数1

{

charpwCh='*';

constintlength=18;//最大密码长度=18

charpass[length]={0};

for(inti=0;i

{

pass[i]=getch();

if(pass[i]=='\r')

{

pass[i]=0;

cout<<"输入结束。

"<

returnstring(pass);

}

cout<

}

cout<

returnstring(pass);

}

intpass()//登陆管理

{

stringpass1,pass2,pass3;

inti=0;

ifstreamfin("D:

\\code.txt");

if(!

fin)

{

system("cls");//清屏函数

do

{

system("cls");//清屏函数

stringpass("666666");

cout<

cout<<"\t\t"<

cout<<"\t*********************************************************"<

cout<

"<

cout<

"<

cout<<"\t请注意:

学生只拥有查询考试信息的权利,因此你登陆之后,系统\n";

cout<<"\t会自动将所有科目的相关考试信息输出,您只需进行核对自己的\n";

cout<<"\t班级,找到相关记录!

Thankyou!

!

";

cout<

666666):

"<

cout<<"\t*********************************************************"<

if(!

pare(getPW()))//比较的是pass和getPW函数返回的值进行的比较

{

subj2();

subj4();

return0;

}

else

{

cout<

\n"<

system("pause");

i++;////错误次数计数

}

}

while(i<3);

if(i==3)

{

cout<

"<

exit(0);

}

}

fin>>pass2;//从文件里读密码

pass3=pass2;

do

{

system("cls");

cout<

cout<

"<

cout<

"<

cout<

";

if(!

pare(getPW()))

{

subj2();

subj4();

return0;

}

else

{

cout<

\n"<

system("pause");

i++;////错误次数计数

}

}while(i<3);

if(i==3)

{

cout<

"<

exit(0);

}

return0;

…stud*head=NULL;

stud*x=NULL;

stud*p=NULL;

stud*q=NULL;

下面是这些是专门为学生类服务的

voidsub1()//向用户链表添加一个节点

{

……..

}

voidsub2()//从硬盘文件读数据生成链表

……..

voidsub3()//把内存链表数据写入硬盘文件

…….

voidsub4()//显示内存链表数据

voidsub5()//删除

voidsub6()//修改

Classteacher//教师管理类

{

charname[20];

intno;

stringsubj;

public:

char*getname()//姓名

voidsetname(char*temp)

stringgetsubj()//班级

voidsetsubj(stringtemp)

intgetno()//学号

voidsetno(inttemp)

classteacher*next;

};

teacher*begin=NULL;

teacher*f=NULL;

teacher*u=NULL;

teacher*v=NULL;

voidtea1()//向用户链表添加一个节点

voidtea2()//从硬盘文件读数据生成链表

voidtea3()//把内存链表数据写入硬盘文件

voidtea4()//显示内存链表数据

voidtea5()//删除

voidtea6()//修改

classuser//界面管理类,负责各个界面的函数

{

voidchoose_face1()

intadmin_face()

voidchoose_face3()

voidchoose_face4()

voidchoose_face2()

};

………

进入系统之后的各个界面以及链接函数:

cout<<"\t\t★学生管理★"<

cout<<"\t\t★★"<

cout<<"\t\t★1.添加学生纪录★"<

cout<<"\t\t★2.修改学生信息★"<

cout<<"\t\t★3.注销学生信息★"<

cout<<"\t\t★4.查询所有学生信息★"<

cout<<"\t\t★0.退出学生管理系统★"<

cout<<"\t\t★★★★★★★★★★★★★★★★★★★"<

cout<

";

while

(1)

{

cin>>i;

switch(i)

{

case1:

{

sub1();

sub3();

break;

}

case2:

//

{

sub2();

sub6();

sub3();

break;

}

case3:

{

sub5();

sub3();

break;

}

case4:

{

sub2();

sub4();

break;

}

case0:

{

return;

}

}

}

}

voidchoose_face3()//choose_face3()教师管理函数

{

inti=1;

cout<<"\t\t★★★★★★★★★★★★★★★★★★★"<

cout<<"\t\t★★"<

cout<<"\t\t★教师管理★"<

cout<<"\t\t★★"<

cout<<"\t\t★1.添加老师纪录★"<

cout<<"\t\t★2.修改老师信息★"<

cout<<"\t\t★3.注销教师纪录★"<

cout<<"\t\t★4.查询所有教师信息★"<

cout<<"\t\t★0.退出教师管理系统★"<

cout<<"\t\t★★★★★★★★★★★★★★★★★★★"<

cout<

";

while

(1)

{

cin>>i;

switch(i)

{

……

……

}

voidchoose_face4()//choose_face4()科目管理实现考场分配

{

inti=1;

cout<<"\t\t★★★★★★★★★★★★★★★★★★★"<

cout<<"\t\t★★"<

cout<<"\t\t★考场分配★"<

cout<<"\t\t★★"<

cout<<"\t\t★1.添加一条考场科目纪录★"<

cout<<"\t\t★2.修改科目纪录信息★"<

cout<<"\t\t★3.注销纪录信息★"<

cout<<"\t\t★4.查询所有科目考试信息★"<

cout<<"\t\t★0.返回上一级★"<

cout<<"\t\t★★★★★★★★★★★★★★★★★★★"<

cout<

";

while

(1)

{

}

intadmin_face()//老师登陆之后的界面

{

system("cls");

charchoose[2];

intcn=0;

cout<<"\t\t★★★★★★★★★★★★★★★★★★★"<

cout<<"\t\t★★"<

cout<<"\t\t★考场管理系统★"<

cout<<"\t\t★1.进入学生管理界面★"<

cout<<"\t\t★2

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2