机房机位预约模拟管理系统设计源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;