学生实验任务管理设计方案.docx
- 文档编号:3845488
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:15
- 大小:126.65KB
学生实验任务管理设计方案.docx
《学生实验任务管理设计方案.docx》由会员分享,可在线阅读,更多相关《学生实验任务管理设计方案.docx(15页珍藏版)》请在冰豆网上搜索。
学生实验任务管理设计方案
学生实验任务管理设计方案
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; CirQueue CirQueue CirQueue CirQueue CirQueue 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; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 实验 任务 管理 设计方案