永发信息网

帮帮我 谢谢 用C++语言解决机房机位预约模拟系统

答案:2  悬赏:80  手机版
解决时间 2021-03-21 13:55
帮帮我 谢谢 用C++语言解决机房机位预约模拟系统
最佳答案
你实验报告怎么写的分享一下
全部回答
#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].RSprintf("这里还有%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;iDUILEI[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;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
电脑上出现svps表格的怎么操作
电子琴kb280用什么方法直接输入音色编号
质点作匀变速直线运动,正确的说法是A.若加速
体育锻炼横着跑叫什么 双手平摊 两脚交叉横着
从宜昌到贵阳的火车要经过哪些站点?
think of与imagine的区别!!
我开的公司税什么的都开了,网上报账我不报或
森焱食杂超市怎么去啊,有知道地址的么
日语“超が何个も付くほど”是什么意思,望详
一个几何体是由许多规格相同的小正方体堆积而
森森底滤鱼缸,用的着加氧吗,水泵不是也再加
平明寻白羽 没在石棱中 赞扬飞将军的什么精神
带早和燕的昵称,同音字也可以
蒂姆哈达威和安芬尼哈达威是什么关系
职工医疗保险怎么用
推荐资讯
广义信用风险与狭义信用风险的区别
放弃房屋所有权公证和赠与公证有何区别
单选题下列表示图上1厘米代表实地距离30千米
去异地就业,实习,怎么去租房子
从2016.01.25到好久是1314天
完形填空Miracles(奇迹)willhappenifyoudon't
在外面捡到一面很漂亮的大镜子、不知好不好
搜二战影片炸德国岸边大炮的电影名
想在云集品上销售自己工厂的产品,不知道会不
elisa方法检测的是什么抗体
豪门绝恋(豪门小老婆) 几个人物的结局
骑马与砍杀我是领主的有个任务叫寻找伊莎贝拉
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?