资源简介
这是基于C++的实验室预约系统,它可以实现学生和老师等功能,学生可以登录预约实验室,修改预约时间,查看预约结果等。
代码片段和文件信息
/*实验题目:实验室预约系统
计算机学院单位实验室实行全天开放,学生可以根据自己的学习进度自行安排实验时间,
但是每个实验有一个限定的时间,例如某实验要在近两周内完成。
假设近期将要做的实验可以有周一下午、周三下午、周五下午三个时间(可以根据实际情况进行调整),
不妨称为时间一、时间二、时间三,这三个时间做实验的学生可以用队列来存储,要求完成如下功能:
⑴ 插入:将预约做实验的学生插入到合适的时间队列中;
⑵ 删除:时间队列中前5位学生可以在该时间做实验;
⑶ 查询:教师可以随时查询某个时间队列中学生的预约情况;
⑷ 修改:在没做实验之前,学生可以对预约的时间进行修改;
⑸ 输出:输出每个时间队列中预约的学生名单。
*/
#include
#include
#include
#include
#include
#define Max 10
typedef struct Qunode
{
int time; //定义一个存放时间的整型变量
char mima[Max]; //定义一个存放密码的整型变量
char name[Max]; //定义一个存放姓名的字符数组
char ban[Max]; //定义一个存放班别的字符数组
char xueno[Max]; //定义一个存放学号的字符数组
char pername[Max];
struct Qunode *next;
}qnode;
typedef struct timenode //定义时间结点类型
{
int Time; //定义一个存放时间的整型变量
qnode *front; //定义一个队首指针
qnode *rear; //定义一个队尾指针 //指向学生信息
struct timenode *dirctnext; //指向下一个时间的头结点
}LiQueue;
typedef struct
{
int maxnum; //实验室做实验的最大人数
int number; //记录有几个人在预约实验
qnode *next2; //指向申请好账号的学生结点的指针
LiQueue *next1; //指向时间队列头结点的指针
}liqueue; //链队类型定义
int empty(liqueue *q); //对判断队列为空的函数作全局声明
//**********学生申请账号*************
void apply(liqueue *&q)
{
char sXueNo[Max];
int flag=0;
qnode *p*p1*t;
qnode *p2;
p=(qnode*)malloc(sizeof(qnode));
cout<<“请输入你的姓名: “;
cin>>p->name;
cout<<“请输入你的班别: “;
cin>>p->ban;
cout<<“请输入你的学号: “;
cin>>XueNo;
if(q->next2)
{
p2=q->next2;
while(p2 && flag==0)
{
if(strcmp(p2->xuenoXueNo)==0)
{
cout<<“学号有相同!“< cout<<“请重输入你的学号: “;
cin>>XueNo;
flag=1;
}
p2=p2->next;
}
}
strcpy(p->xuenoXueNo);
cout<<“请输入你的密码: “;
cin>>p->mima;
cout<<“你是否确定?请选择(y/n): “;
cin>>s;
if(s==‘y‘|| s==‘Y‘)
{
if(q->next2==NULL)
{
q->next2=p;
p->next=NULL;
}
else
{
p1=q->next2;
while(p1)
{
t=p1;
p1=p1->next;
}
t->next=p;
p->next=NULL;
}
cout<<“你已成功申请账号!“< fstream out(“mima.dat“ios::out|ios::app);
out<xueno<<“\t“<mima<<“\t“<name<<“\t“<ban< out.close();
}
}
//************从文件读取数据到三条时间队列中去*******************
void Read(liqueue *&q)
{
char XueNo[Max]MiMa[Max]Ban[Max]Name[Max];
qnode *p;
qnode *r*t*p1;
fstream in(“mima.dat“ios::in|ios::app);
if(!in.eof())
{
in>>XueNo;
while(!in.eof())
{
in>>MiMa>>Name>>Ban;
p=(qnode*)malloc(sizeof(qnode));
strcpy(p->xuenoXueNo);
strcpy(p->mimaMiMa);
strcpy(p->nameName);
strcpy(p->banBan);
if(q->next2==NULL)
{
q->next2=p;
p->next=NULL;
}
else
{
p1=q->next2;
while(p1)
{
t=p1;
p1=p1->next;
}
t->next=p;
p->next=NULL;
}
in
- 上一篇:标准C语言程序设计第五版部分习题答案
- 下一篇:拉格朗日插值法c语言版
评论
共有 条评论