机房机位预约模拟管理系统设计源代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#include

#define SJD 6 /*宏定义定义SJD Z NULL D(r)*/

#define Z 20

#define D(s) (s-8)/2 /*将输入的时间划分时间段;分别为0,1,2,3,4,5时间段*/

#define NULL 0

struct xinxi{

int jihao;

char xuehao[20];

struct xinxi *next;

}; /*结构函数包含学生信息:机位,学号,还有下名学生信息*/

struct cell{

int RS; /*RS表示总人数*/

struct xinxi *first; /*第一个预订者记录*/

struct xinxi *middle; /*等待队列列表*/

struct xinxi *last; /*最后预订者记录*/

} DUILEI[SJD]; /*学生时间(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划分适当的内存*/

R->jihao=1;

strcpy(R->xuehao,m); /*将输入的学号复制到R->xuehao */

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->xuehao */

R->next=NULL;

p= DUILEI[n].last; /*将最后预订记录赋值给p*/

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; /*将第一名学生的信息赋予R*/

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;

相关文档
最新文档