学生实验任务管理设计方案.docx

上传人:b****5 文档编号:3845488 上传时间:2022-11-25 格式:DOCX 页数:15 大小:126.65KB
下载 相关 举报
学生实验任务管理设计方案.docx_第1页
第1页 / 共15页
学生实验任务管理设计方案.docx_第2页
第2页 / 共15页
学生实验任务管理设计方案.docx_第3页
第3页 / 共15页
学生实验任务管理设计方案.docx_第4页
第4页 / 共15页
学生实验任务管理设计方案.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

学生实验任务管理设计方案.docx

《学生实验任务管理设计方案.docx》由会员分享,可在线阅读,更多相关《学生实验任务管理设计方案.docx(15页珍藏版)》请在冰豆网上搜索。

学生实验任务管理设计方案.docx

学生实验任务管理设计方案

学生实验任务管理设计方案

1.问题描述

学生选实验问题中的数据元素具有如下形式:

登陆密码,学生的自然情况包括姓名、学号、班级。

2.功能要求

要求完成以下功能:

⑴插入:

将预约做实验的学生插入到合适的时间队列中;

⑵删除:

时间队列中前5位学生可以在该时间做实验;

⑶查询:

教师可以随时查询某个时间队列中学生的预约情况;

⑷修改:

在没做实验之前,学生可以对预约的时间进行修改;

⑸输出:

输出每个时间队列中预约的学生名单。

3.实现要点

对队列采用循环队列的存储结构,在建立队列时,由队列的书写形式转化循环队列存储结构,还要把学生的书面形式转化为具体的类。

4.类定义

为队列建立CirQueue,其类定义如下:

classCirQueue

{

public:

CirQueue(){front=rear=0;}

~CirQueue(){}

voidEnQueue(elemtpx);

TDeQueue();

TGetQueue();

{front==rear?

return1:

return0;}

intLength();

voidPrintQueue();

intEnquire(stringnum);

voidDelete(inti);

private:

elemtpdata[QueueSize];

intfront,rear;

};

在CirQueue类中,提供了如下成员函数

(1)函数声明voidEnQueue(elemtpx)

完成的功能将元素x入队

(2)函数声明TDeQueue()

完成的功能将队头元素出队

(3)函数声明TGetQueue()

完成的功能读取队头元素算法

(4)函数声明intLength();

完成的功能取队列长度

(5)函数声明voidPrintQueue();

完成的功能遍历队列,按序号依次输出各元素

(6)函数声明voidDelete(inti);

完成的功能删除队列的第i个元素

(7)函数声明intEnquire(stringnum);

完成的功能查询队列中是否存在指定的元素

5.执行程序显示画面

6.源代码

HeaderFiles

#ifndefCIRQUEUE_H

#defineCIRQUEUE_H

#include

usingnamespacestd;

constintQueueSize=100;//100只是示例性的数据,可以根据实际问题具体定义

structstudent//结构体

{

stringnum;//学生学号

stringname;//学生姓名

stringgrade;//学生班级

};

template

classCirQueue

{

public:

CirQueue(){front=rear=0;}//构造函数,置空队

~CirQueue(){}//析构函数,释放队列中各结点的存储空间

voidEnQueue(Tx);//将元素x入队

TDeQueue();//将队头元素出队

TGetQueue();//取队头元素(并不删除)

boolEmpty(){front==rear?

return1:

return0;}//判断队列是否为空

intLength();

voidPrintQueue();//遍历队列,按序号依次输出各元素

intEnquire(stringnum);//查询队列中是否存在输入的学号

voidDelete(inti);//删除队列的第i个元素

private:

Tdata[QueueSize];//存放队列元素的数组

intfront,rear;//队头和队尾指针,分别指向队头元素的前一个位置和队尾元素的位置

};

#endif

SourceFiles

#include"CirQueue.h"

#include

usingnamespacestd;

template

voidCirQueue:

:

EnQueue(Tx)

{

if((rear+1)%QueueSize==front)throw"上溢";

rear=(rear+1)%QueueSize;

data[rear]=x;

}

template

TCirQueue:

:

DeQueue()

{

if(rear==front)throw"下溢";

front=(front+1)%QueueSize;

returndata[front];

}

template

TCirQueue:

:

GetQueue()

{

inti;

if(rear==front)throw"下溢";

i=(front+1)%QueueSize;

returndata[i];

}

template

intCirQueue:

:

Length()

{

intlength=(rear-front+QueueSize)%QueueSize;

returnlength;

}

template

voidCirQueue:

:

PrintQueue()

{

inti=front;

while(i!

=rear)

{

cout<<"学号:

"<

cout<<"姓名:

"<

cout<<"班级:

"<

i=(i+1)%QueueSize;

}

}

template

intCirQueue:

:

Enquire(stringnum)

{

inti;

for(i=front+1;i<=(rear-front+QueueSize)%QueueSize;i++)

{

if(data[i].num==num)

returni;

}

return0;

}

template

voidCirQueue:

:

Delete(inti)

{

if(i<1||i>(rear-front+QueueSize)%QueueSize)throw"位置";

intt;

t=i;

while(t!

=rear)

{

data[t]=data[(t+1)%QueueSize];

t=(t+1)%QueueSize;

}

rear=(rear-1)%QueueSize;

}

CirQueueMain.Cpp

#include

#include"CirQueue.cpp"

#include

usingnamespacestd;

intwhich;

intqueue;

inti;

intflag;

intchoose1=1;

intchoose;

inty;

stringnum;

stringname;

stringgrade;

intwhere;

studenttemp1;

CirQueuea;

CirQueueb;

CirQueuec;

CirQueued;

CirQueuee;

intmain()

{

std:

:

cout<<"欢迎来到学生实验任务管理系统\n\n";

cout<<"请输入登陆密码:

"<<"\n";

inty;

cin>>y;

if(y!

=123456)cout<<"您无权进入系统"<<"\n";

else{

while(choose1==1)

{

cout<<"对周一试验名单进行操作请按1"<<"\n";

cout<<"对周二试验名单进行操作请按2"<<"\n";

cout<<"对周三试验名单进行操作请按3"<<"\n";

cout<<"对周四试验名单进行操作请按4"<<"\n";

cout<<"对周五试验名单进行操作请按5"<<"\n";

cout<<"需要输出全部信息请按6"<<"\n";

cin>>queue;

switch(queue)

{

case1:

flag=1;choose=1;break;

case2:

flag=2;choose=1;break;

case3:

flag=3;choose=1;break;

case4:

flag=4;choose=1;break;

case5:

flag=5;choose=1;break;

case6:

try

{

cout<<"周一试验名单:

"<<"\n";

a.PrintQueue();

cout<<"周二试验名单:

"<<"\n";

b.PrintQueue();

cout<<"周三试验名单:

"<<"\n";

c.PrintQueue();

cout<<"周四试验名单:

"<<"\n";

d.PrintQueue();

cout<<"周五试验名单:

"<<"\n";

e.PrintQueue();

}

catch(char*)

{

cout<<"操作失败\n";//如失败提示失败信息

}

break;

default:

break;

}

while(choose==1)

{

cout<<"需要插入信息请按1"<<"\n";

cout<<"需要删除信息请按2"<<"\n";

cout<<"需要查询信息请按3"<<"\n";

cout<<"需要取消预约请按5"<<"\n";

cout<<"需要退出请按6"<<"\n";

cin>>which;

switch(which)

{

case1:

cout<<"需要插入学生学号:

"<<"\n";

cin>>num;

cout<<"需要插入学生姓名:

"<<"\n";

cin>>name;

cout<<"需要插入学生班级:

"<<"\n";

cin>>grade;

temp1.num=num;

temp1.name=name;

temp1.grade=grade;

try

{

switch(flag)

{

case1:

a.EnQueue(temp1);break;

case2:

b.EnQueue(temp1);break;

case3:

c.EnQueue(temp1);break;

case4:

c.EnQueue(temp1);break;

case5:

c.EnQueue(temp1);break;

default:

break;

}

cout<<"插入成功!

\n";

}

catch(char*)

{

cout<<"操作失败\n";//如失败提示失败信息

}

break;

case2:

try

{

switch(flag)

{

case1:

a.DeQueue();break;

case2:

b.DeQueue();break;

case3:

c.DeQueue();break;

case4:

b.DeQueue();break;

case5:

b.DeQueue();break;

default:

break;

}

cout<<"删除成功!

"<<"\n";

}

catch(char*)

{

cout<<"操作失败\n";//如失败提示失败信息

}

break;

case3:

try

{

switch(flag)

{

case1:

a.PrintQueue();break;

case2:

b.PrintQueue();break;

case3:

c.PrintQueue();break;

case4:

b.PrintQueue();break;

case5:

b.PrintQueue();break;

default:

break;

}

}

catch(char*)

{

cout<<"操作失败\n";

}

break;

case5:

cout<<"请输入取消预约的学生学号:

\n";

cin>>num;

try

{

switch(flag)

{

case1:

i=a.Enquire(num);

a.Delete(i);

break;

case2:

i=b.Enquire(num);

b.Delete(i);

break;

case3:

i=c.Enquire(num);

c.Delete(i);

break;

case4:

i=c.Enquire(num);

d.Delete(i);

break;

case5:

i=c.Enquire(num);

e.Delete(i);

break;

default:

break;

}

cout<<"预约修改成功!

"<<"\n";

}

catch(char*)

{

cout<<"操作失败\n";//如失败提示失败信息

}

break;

case6:

choose=0;

break;

default:

break;

}

}

}

return0;

}

}

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

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1