




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生实验任务管理设计方案1. 问题描述学生选实验问题中的数据元素具有如下形式:登陆密码,学生的自然情况包括姓名、学号、班级。2功能要求要求完成以下功能: 插入:将预约做实验的学生插入到合适的时间队列中; 删除:时间队列中前5位学生可以在该时间做实验; 查询:教师可以随时查询某个时间队列中学生的预约情况; 修改:在没做实验之前,学生可以对预约的时间进行修改; 输出:输出每个时间队列中预约的学生名单。3实现要点对队列采用循环队列的存储结构,在建立队列时,由队列的书写形式转化循环队列存储结构,还要把学生的书面形式转化为具体的类。4类定义 为队列建立CirQueue,其类定义如下: class CirQueuepublic: CirQueue() front=rear=0; CirQueue() void EnQueue(elemtp x); T DeQueue(); T GetQueue(); front=rear? return 1: return 0; int Length(); void PrintQueue( ); int Enquire(string num); void Delete(int i); private: elemtp dataQueueSize; int front, rear; ;在CirQueue类中,提供了如下成员函数(1) 函数声明 void EnQueue(elemtp x) 完成的功能 将元素x入队 (2) 函数声明 T DeQueue()完成的功能 将队头元素出队 (3) 函数声明 T GetQueue()完成的功能 读取队头元素算法(4) 函数声明 int Length(); 完成的功能 取队列长度(5) 函数声明 void PrintQueue( );完成的功能 遍历队列,按序号依次输出各元素 (6) 函数声明 void Delete(int i); 完成的功能 删除队列的第i个元素 (7) 函数声明 int Enquire(string num); 完成的功能 查询队列中是否存在指定的元素5.执行程序显示画面6.源代码Header Files#ifndef CIRQUEUE_H#define CIRQUEUE_H#include using namespace std;const int QueueSize=100; /100只是示例性的数据,可以根据实际问题具体定义struct student /结构体 string num; /学生学号 string name; /学生姓名 string grade; /学生班级;template class CirQueuepublic: CirQueue() front=rear=0; /构造函数,置空队 CirQueue() /析构函数,释放队列中各结点的存储空间 void EnQueue(T x); /将元素x入队 T DeQueue(); /将队头元素出队 T GetQueue(); /取队头元素(并不删除) bool Empty() front=rear? return 1: return 0; /判断队列是否为空 int Length(); void PrintQueue( ); /遍历队列,按序号依次输出各元素 int Enquire(string num); /查询队列中是否存在输入的学号 void Delete(int i); /删除队列的第i个元素private: T dataQueueSize; /存放队列元素的数组 int front, rear; /队头和队尾指针,分别指向队头元素的前一个位置和队尾元素的位置;#endifSource Files #include CirQueue.h #include using namespace std;template void CirQueue:EnQueue(T x) if (rear+1)%QueueSize =front) throw 上溢;rear=(rear+1)%QueueSize; datarear=x; template T CirQueue:DeQueue() if (rear=front) throw 下溢; front=(front+1)%QueueSize; return datafront; template T CirQueue:GetQueue() int i; if (rear=front) throw 下溢;i=(front+1)%QueueSize; return datai;template int CirQueue:Length() int length =(rear-front+QueueSize) % QueueSize; return length;template void CirQueue:PrintQueue() int i=front; while (i!=rear) cout 学号: datai+1.num n; cout 姓名: datai+1.name n; cout 班级: datai+1.grade n; i=(i+1)%QueueSize; template int CirQueue:Enquire(string num) int i; for(i=front+1; i=(rear-front+QueueSize)%QueueSize; i+) if(datai.num=num) return i; return 0;template void CirQueue:Delete(int i) if (i(rear-front+QueueSize)%QueueSize) throw 位置; int t; t=i; while(t!=rear) datat=data(t+1)%QueueSize; t=(t+1)%QueueSize; rear= (rear-1)%QueueSize;CirQueueMain.Cpp#include #include CirQueue.cpp#include using namespace std; int which; int queue; int i;int flag; int choose1=1; int choose; int y; string num; string name; string grade;int where; student temp1;CirQueue a; CirQueue b; CirQueue c;CirQueue d;CirQueue e; int main() std:cout欢 迎 来 到 学 生 实 验 任 务 管 理 系 统nn; cout请输入登陆密码:y; if(y!=123456)cout您无权进入系统 n; elsewhile(choose1=1) cout对周一试验名单进行操作请按1n;cout对周二试验名单进行操作请按2n;cout对周三试验名单进行操作请按3n; cout对周四试验名单进行操作请按4n; cout对周五试验名单进行操作请按5n;cout 需要输出全部信息请按6 queue;switch(queue)case 1: flag = 1;choose=1; break;case 2: flag = 2;choose=1; break;case 3: flag = 3;choose=1; break; case 4: flag = 4;choose=1; break; case 5: flag = 5;choose=1; break;case 6: 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 which;switch(which)case 1:cout 需要插入学生学号: num;cout 需要插入学生姓名: name;cout 需要插入学生班级: grade;temp1.num = num; = name;temp1.grade = grade;tryswitch(flag)case 1: a.EnQueue(temp1); break;case 2: b.EnQueue(temp1); break;case 3: c.EnQueue(temp1); break; case 4: c.EnQueue(temp1); break; case 5: c.EnQueue(temp1); break;default: break;cout插入成功!n;catch(char *)cout 操作失败n; /如失败提示失败信息break;case 2:tryswitch(flag)case 1: a.DeQueue(); break;case 2: b.DeQueue(); break;case 3: c.DeQueue(); break; case 4: b.DeQueue(); break; case 5: b.DeQueue(); break;default: break; cout删除成功! n; catch(char *)cout 操作失败n; /如失败提示失败信息break;case 3:tryswitch(flag)case 1: a.PrintQueue(); break;case 2: b.PrintQueue(); break;case 3: c.PrintQueue(); break; case 4: b.PrintQueue(); break; case 5: b.PrintQueue(); break;default: break; catch(char *)cout 操作失败n; break;case 5:coutnum;tryswitch(flag)case 1: i=a.Enquire(num);a.Delete(i);break;case 2: i=b.Enquire(num);b.Delete(i);break;case 3: i=c.Enqui
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 飞机场送人车辆管理制度
- 自贡养老院安全管理制度
- 一般区工作服管理制度
- 乡镇行业部门管理制度
- 中学团委考核管理制度
- 自来水公司生产管理制度
- 云浮人力资源管理制度
- 临床诊疗路径管理制度
- 产品材料标准管理制度
- 仓储物流车辆管理制度
- 手术室-标准侧卧位摆放
- (正式版)JBT 9229-2024 剪叉式升降工作平台
- 合伙人退出协议书
- (高清版)DZT 0208-2020 矿产地质勘查规范 金属砂矿类
- 大件吊装运输企业信息化建设愿景
- 2024年春江苏开放大学先进制造技术第一次过程性考核作业答案
- 2019版新人教版高中英语必修+选择性必修共7册词汇表汇总(带音标)
- FANUC数控系统连接与调试实训 课件全套 第1-8章 FANUC 0iD硬件结构与连接-主轴控制
- 公务员午休管理制度
- 烟机设备修理工滤棒成型
- 大肠癌的诊治及预防措施
评论
0/150
提交评论