帮帮我 谢谢 用C++语言解决机房机位预约模拟系统
答案:2 悬赏:80 手机版
解决时间 2021-03-21 13:55
- 提问者网友:我是女神我骄傲
- 2021-03-20 15:34
帮帮我 谢谢 用C++语言解决机房机位预约模拟系统
最佳答案
- 五星知识达人网友:woshuo
- 2021-03-20 17:03
你实验报告怎么写的分享一下
全部回答
- 1楼网友:愁杀梦里人
- 2021-03-20 18:22
#include
#include
#include
#define SJD 6
#define Z 20
#define D(s) (s-8)/2
#define NULL 0
struct xinxi{
int jihao;
char xuehao[20];
struct xinxi *next;
};
struct cell{
int RS;
struct xinxi *first;
struct xinxi *middle;
struct xinxi *last;
} DUILEI[SJD];
void yuding()
{
int n;
char m[20];
struct xinxi *R;
struct xinxi *p;
printf("输入想要预定的时间\n");
scanf("%d",&n);
if(n>=8&&n<20){
n=D(n);
if(DUILEI[n].RS {
printf("请输入你的学号\n");
scanf("%s",m);
if(DUILEI[n].first==NULL)
{
R=(struct xinxi *)malloc(sizeof(struct xinxi));
R->jihao=1;
strcpy(R->xuehao,m);
R->next=NULL;
DUILEI[n].first=R;
DUILEI[n].last=R;
DUILEI[n].RS++;
printf("成功预定\n");
}
else
{
R=(struct xinxi *)malloc(sizeof(struct xinxi));
strcpy(R->xuehao,m);
R->next=NULL;
p= DUILEI[n].last;
R->jihao= DUILEI[n].RS+1;
printf("%d",R->jihao);
DUILEI[n].last=R;
p->next=R;
DUILEI[n].RS++;
printf("预定成功\n");
}
}
else printf("没有空余机位!\n");
}
else printf("错误.请输入8~19,再次输入.\n");
}
/
*********************************查询空位模块***********************************/
void chaxunkongwei()
{
int n;
printf("输入想要查询的时间(8~19点,包括8点)\n");
scanf("%d",&n);
if(n>=8&&n<20)
{
n=D(n);
if(DUILEI[n].RS printf("这里还有%d台空电脑!\n",Z-DUILEI[n].RS);
else printf("对不起.没有空余机位!\n");
}
else printf("错误,请输入8~19,再次输入.\n");
}
void chaxunyuding()
{
int n;
char m[20];
struct xinxi *R;
printf("输入查询时间(8~19点,包括8点)\n");
scanf("%d",&n);
if(n>=8&&n<20)
{
n=D(n);
printf("请输入学号\n");
scanf("%s",m);
R= DUILEI[n].first;
if(DUILEI[n].first==0) printf(" 还没有人预定\n");
else{
for(;R->next!=NULL;R=R->next)
if(strcmp(R->xuehao,m)==0)break;
if(R->jihao!=0)
printf("你的机位是%d\n",R->jihao);
else printf("对不起.你依旧在等待列表中或者没有预定");
}
}
else printf("错误,请再次输入.\n");
}
void paiduixitong()
{
int n;
char m[20];
struct xinxi *R; struct xinxi *p;
printf("请输入想要排队的时间\n");
scanf("%d",&n);
if(n>=8&&n<20)
{
n=D(n);
if(DUILEI[n].RS>=Z)
{
printf("请输入你的学号\n"); scanf("%s",m);
if((DUILEI[n].RS)==Z)
{
R=(struct xinxi *)malloc(sizeof(struct xinxi));
strcpy(R->xuehao,m);
R->next=NULL;
R->jihao=0;
p= DUILEI[n].last;
DUILEI[n].last=R;
p->next=R;
DUILEI[n].middle=R;
DUILEI[n].RS++;
printf("成功排队\n");
}
else
{
R=(struct xinxi *)malloc(sizeof(struct xinxi));
strcpy(R->xuehao,m);
R->next=NULL;
R->jihao=0;
p= DUILEI[n].last;
DUILEI[n].last=R;
p->next=R;
DUILEI[n].RS++;
printf("成功排队\n");
}
}
else printf("有空余机位,无须等待\n");
}
else printf("错误.再次输入.\n");
}
void cancel()
{
int n;
int i;
char m[20];
struct xinxi *R;
struct xinxi *q;
struct xinxi *p;
printf("请输入预定的时间\n");
scanf("%d",&n);
if(n>=8&&n<20)
{
printf("请输入你的学号!\n");
scanf("%s",m);
n=D(n);
R= DUILEI[n].first;
q=R;
for(i=1;;q=R,R=R->next,i++)
if(strcmp(R->xuehao,m)==0)break;
if(i>Z)
{
if(R->next==NULL)
{
q->next=NULL;
DUILEI[n].last=q;
free(R);
DUILEI[n].RS--;
printf("取消成功!\n");
}
else{
q->next=R->next;
free(R);
DUILEI[n].RS--;
printf("取消成功!\n");
}
}
else
{
if(DUILEI[n].RS>Z)
{
DUILEI[n].middle->jihao=R->jihao;
DUILEI[n].middle= DUILEI[n].middle->next;
}
if(i==1) DUILEI[n].first=R->next;
else q->next=R->next;
free(R);
DUILEI[n].RS--;
printf("成功取消预定!\n");
}
}
else printf("错误,请再次输入.\n");
}
void daijizheliebiao()
{
int n;
struct xinxi *q; (定义学生的信息)
printf("查询其他等待者的预定时间\n");
scanf("%d",&n);
if(n>=8&&n<20)
{
n=D(n);
if(DUILEI[n].RS>Z) (判断人数是否大)
{
printf("等待列表:\n");
q=DUILEI[n].middle;
for(;q->next!=NULL;q=q->next) printf("%s\n",q->xuehao);
printf("%s\n", DUILEI[n].last->xuehao);
}
else printf("这个时间段没有预定者\n");
}
else printf("错误。请再次输入.\n");
}
int main()
{
int i;
for(i=0;i DUILEI[i].RS=0; (定义)
DUILEI[i].first=NULL; 第一个
DUILEI[i].middle=NULL; 排队ing
DUILEI[i].last=NULL; 最后一名
}
while(1){
printf(" **************************************\n");
printf(" * 机房机位预定系统 *\n");
printf(" * *\n");
printf(" * 1 查询空机位 2 预定系统 *\n");
printf(" * 3 取消预定 4 查询所预定机位 *\n");
printf(" * 5 排队系统 6 等机者列表 *\n");
printf(" * 0 退出系统 *\n");
printf(" * *\n");
printf(" * 请输入序号(0--6): *\n");
printf(" **************************************\n");
printf("请输入序号!:\n");
scanf("%d",&i);
switch(i)
{
case 1:chaxunkongwei();break;
case 2:yuding();break;
case 3:cancel();break;
case 4:chaxunyuding();break;
case 5:paiduixitong();break;
case 6:daijizheliebiao();break;
case 0:exit(0);
default:printf("错误\n");
}
}
return 0;
}
#include
#include
#define SJD 6
#define Z 20
#define D(s) (s-8)/2
#define NULL 0
struct xinxi{
int jihao;
char xuehao[20];
struct xinxi *next;
};
struct cell{
int RS;
struct xinxi *first;
struct xinxi *middle;
struct xinxi *last;
} DUILEI[SJD];
void yuding()
{
int n;
char m[20];
struct xinxi *R;
struct xinxi *p;
printf("输入想要预定的时间\n");
scanf("%d",&n);
if(n>=8&&n<20){
n=D(n);
if(DUILEI[n].RS
printf("请输入你的学号\n");
scanf("%s",m);
if(DUILEI[n].first==NULL)
{
R=(struct xinxi *)malloc(sizeof(struct xinxi));
R->jihao=1;
strcpy(R->xuehao,m);
R->next=NULL;
DUILEI[n].first=R;
DUILEI[n].last=R;
DUILEI[n].RS++;
printf("成功预定\n");
}
else
{
R=(struct xinxi *)malloc(sizeof(struct xinxi));
strcpy(R->xuehao,m);
R->next=NULL;
p= DUILEI[n].last;
R->jihao= DUILEI[n].RS+1;
printf("%d",R->jihao);
DUILEI[n].last=R;
p->next=R;
DUILEI[n].RS++;
printf("预定成功\n");
}
}
else printf("没有空余机位!\n");
}
else printf("错误.请输入8~19,再次输入.\n");
}
/
*********************************查询空位模块***********************************/
void chaxunkongwei()
{
int n;
printf("输入想要查询的时间(8~19点,包括8点)\n");
scanf("%d",&n);
if(n>=8&&n<20)
{
n=D(n);
if(DUILEI[n].RS
else printf("对不起.没有空余机位!\n");
}
else printf("错误,请输入8~19,再次输入.\n");
}
void chaxunyuding()
{
int n;
char m[20];
struct xinxi *R;
printf("输入查询时间(8~19点,包括8点)\n");
scanf("%d",&n);
if(n>=8&&n<20)
{
n=D(n);
printf("请输入学号\n");
scanf("%s",m);
R= DUILEI[n].first;
if(DUILEI[n].first==0) printf(" 还没有人预定\n");
else{
for(;R->next!=NULL;R=R->next)
if(strcmp(R->xuehao,m)==0)break;
if(R->jihao!=0)
printf("你的机位是%d\n",R->jihao);
else printf("对不起.你依旧在等待列表中或者没有预定");
}
}
else printf("错误,请再次输入.\n");
}
void paiduixitong()
{
int n;
char m[20];
struct xinxi *R; struct xinxi *p;
printf("请输入想要排队的时间\n");
scanf("%d",&n);
if(n>=8&&n<20)
{
n=D(n);
if(DUILEI[n].RS>=Z)
{
printf("请输入你的学号\n"); scanf("%s",m);
if((DUILEI[n].RS)==Z)
{
R=(struct xinxi *)malloc(sizeof(struct xinxi));
strcpy(R->xuehao,m);
R->next=NULL;
R->jihao=0;
p= DUILEI[n].last;
DUILEI[n].last=R;
p->next=R;
DUILEI[n].middle=R;
DUILEI[n].RS++;
printf("成功排队\n");
}
else
{
R=(struct xinxi *)malloc(sizeof(struct xinxi));
strcpy(R->xuehao,m);
R->next=NULL;
R->jihao=0;
p= DUILEI[n].last;
DUILEI[n].last=R;
p->next=R;
DUILEI[n].RS++;
printf("成功排队\n");
}
}
else printf("有空余机位,无须等待\n");
}
else printf("错误.再次输入.\n");
}
void cancel()
{
int n;
int i;
char m[20];
struct xinxi *R;
struct xinxi *q;
struct xinxi *p;
printf("请输入预定的时间\n");
scanf("%d",&n);
if(n>=8&&n<20)
{
printf("请输入你的学号!\n");
scanf("%s",m);
n=D(n);
R= DUILEI[n].first;
q=R;
for(i=1;;q=R,R=R->next,i++)
if(strcmp(R->xuehao,m)==0)break;
if(i>Z)
{
if(R->next==NULL)
{
q->next=NULL;
DUILEI[n].last=q;
free(R);
DUILEI[n].RS--;
printf("取消成功!\n");
}
else{
q->next=R->next;
free(R);
DUILEI[n].RS--;
printf("取消成功!\n");
}
}
else
{
if(DUILEI[n].RS>Z)
{
DUILEI[n].middle->jihao=R->jihao;
DUILEI[n].middle= DUILEI[n].middle->next;
}
if(i==1) DUILEI[n].first=R->next;
else q->next=R->next;
free(R);
DUILEI[n].RS--;
printf("成功取消预定!\n");
}
}
else printf("错误,请再次输入.\n");
}
void daijizheliebiao()
{
int n;
struct xinxi *q; (定义学生的信息)
printf("查询其他等待者的预定时间\n");
scanf("%d",&n);
if(n>=8&&n<20)
{
n=D(n);
if(DUILEI[n].RS>Z) (判断人数是否大)
{
printf("等待列表:\n");
q=DUILEI[n].middle;
for(;q->next!=NULL;q=q->next) printf("%s\n",q->xuehao);
printf("%s\n", DUILEI[n].last->xuehao);
}
else printf("这个时间段没有预定者\n");
}
else printf("错误。请再次输入.\n");
}
int main()
{
int i;
for(i=0;i
DUILEI[i].first=NULL; 第一个
DUILEI[i].middle=NULL; 排队ing
DUILEI[i].last=NULL; 最后一名
}
while(1){
printf(" **************************************\n");
printf(" * 机房机位预定系统 *\n");
printf(" * *\n");
printf(" * 1 查询空机位 2 预定系统 *\n");
printf(" * 3 取消预定 4 查询所预定机位 *\n");
printf(" * 5 排队系统 6 等机者列表 *\n");
printf(" * 0 退出系统 *\n");
printf(" * *\n");
printf(" * 请输入序号(0--6): *\n");
printf(" **************************************\n");
printf("请输入序号!:\n");
scanf("%d",&i);
switch(i)
{
case 1:chaxunkongwei();break;
case 2:yuding();break;
case 3:cancel();break;
case 4:chaxunyuding();break;
case 5:paiduixitong();break;
case 6:daijizheliebiao();break;
case 0:exit(0);
default:printf("错误\n");
}
}
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯