C语言课程设计报告—机房机位预约模拟系统
机房机位预约模拟

机房机位预约模拟一、题目要求(1)查询。
根据输入时间输出机位信息。
(2)机位预定。
根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供最近时间段。
另外,若用户要求在非空时间段上机,俄将用户信息插入该时间段的等待时间列表。
(3)退出预定。
根据输入的时间撤出该时间的预订。
二、设计思路首先需要定义结构体数组存放等待人员,并且用文件来保存这些数据。
纵观整个程序,我用四个分函数来实现各个模块的功能,在主函数中刻画一个分区模块,进入各个分区功能模块。
三、程序设计首先写出一些函数头文件、自定义的宏定义、全局变量和定义一个结构体数组:#include#include#include#include#defineSIZE20{charnumber[3];charphonenumber[12];}wait[SIZE];然后开始建立函数模块,如下:1、主函数主函数提供了一个菜单界面,操作人员可根据界面的提示来操作以选择菜单中功能。
主函数一般设计的比较简洁,只提供输入、处理和输出部分的函数调用。
【主函数程序】main(){Diplay();}voidDiplay()/某一个总的函数,用cae分别引出各个函数某/{intc;printf(\printf(\机房机位预约\\n\printf(\printf(\选择:\\n\printf(\printf(\查询\\n\printf(\printf(\预定\\n\printf(\printf(\退出预定\\n\printf(\printf(\查询等待信息\\n\printf(\printf(\退出\\n\printf(\printf(\请输入你的选择(1/2/3/4/0):\\n\canf(\printf(\witch(c){cae1:Search();break;cae2:Book();break;cae3:Quit();break;cae4:SearchWait();break;cae0:E某it();break;default:printf(\警告:选择错误!\\n\Diplay();}}2、查询系统当输入时间在8点到20点之间才符合条件,并定义剩余电脑数量为时间减去八。
机房机位预约模拟管理系统设计(2020年10月整理).pdf

#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)段顺序:人数,第一名学生,排队的学生, 最后一名学生*/
预定模块
开始
输入预定时间
判 断 时 间 属 于 8~20 o'clock 与空机位
选择排队 N
输入学号预定成功,排 队成功
结束 iongyudin
/***************************预定模块******************************/ void yuding() { int n;
1
参考文献**********************************18 附录(源程序)****************************18
一.机房机位预约模拟管理系统设计
1、数据结构 顾客信息结构体:
Struct CusInfo { Char name[20];//顾客姓名
Int sex; //性别 Char tel[11]; //电话 }CInfo; 机位信息结构体: Struct
C语言机房机位预约系统课设(附源码)

C语言机房机位预约系统课设项目说明本系统基于C语言开发,适用于刚入门的C语言新手项目课设,开发软件采用VC++6.0开发,VS,DEV C++等均可运行。
(书生)项目运行截图代码界面截图完整源码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>int timeone();/*机位、顾客信息结构体*/typedef struct PCInfo{int State[6]; //机位状态,2小时为一个时间段,8时到20时共6个时间段,0表示有空位,1表示无空位char name[20]; //各时间段运行顾客char sex[30];char tel[20];int year;int month;int day;int start_Time;int end_Time;}PCInfo;PCInfo info[100][100]; //存放100天,20台机位信息int Month[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; /*数组定义每月天数*/int date[12][31]; /*定义日期和机位信息数组*//******************************空白函数模块*****************************/void s_line(int n) /*空行*/{int i;for (i = 1; i <= n; i++)printf("\n");}void space(int n) /*空白*/{int i;for (i = 1; i <= n; i++){printf(" ");}}/******************************清空机位信息模块*****************************/void Empty(){int i,j,k,a;for (i = 0; i <=20 ; i++) /*此循环作用是将0赋给机位状态*/{for (a = 0; a <= 20; a++){for (j = 0; j <= 6; j++){info[i][a].State[j] = 0;}}}for (j = 0; j <= 12; j++) /*此循环作用是将0赋给日期*/{for (k = 0; k <= 31; k++){date[j][k] = 0;}}}/******************************查询机位信息模块*****************************/void Query(){int year, month, day, start_Time, end_Time, time,a=1;int n = 0;int i;while (1){printf("\t\t ********************此处你可以输入时间来查看20个计算机的机位信息********************\n\n");printf("\t\t\t\t 请输入您想要查询的日期时间:(例如:2016/7/22/8-10表示)\n\n");scanf("%d/%d/%d/%d-%d", &year, &month, &day, &start_Time, &end_Time); /*输入查询时间*/if ((start_Time - 8) / 2 >= 0 && (start_Time - 8) / 2 <= 6){time = (start_Time - 8) / 2;}else{printf("输入时间段错误!\n");system("pause");return;}if (month < 1 || month > 12 || day < 0 || day > Month[month])/*如果输入时间不对就回出错,显示出错信息并且给出提示*/ {printf(" 输入错误!\n");printf(" 请选择输入指令:1.重新输入 2.返回菜单\n");scanf("%d", &n);if (n == 2) { break; }if (n == 1){break;}}else break; //未出错则跳出循环,继续执行后面程序}if (n == 2) return;printf("当前您要查询第几次预约的机位信息?(相同日期视为一次)\n\n");scanf("%d", &a);for (i = 1; i <= 20; i++) /*此循环的作用是判断是否有空的机位*/{if (date[month][day] == 1 && info[i][a].State[time] == 1)printf("\t\t\t\t 第%d 号计算机在这段时间已经被预定. \n\n", i);elseprintf("\t\t\t\t 第%d 号计算机在这段时间内没有被预定. \n\n", i);}system("pause"); /*系统暂停,按任意键继续*/}/******************************机位预定模块*****************************/void book_computer() /*此函数的作用是预定机位*/{int year, month, day, start_Time, end_Time, time;int b = 0, m = 0;int n = 0, i = 0, j, k, s,t;while (1){printf("\t\t********************此处你可以输入(年/月/日/XX-XX时间段)来查看是否有空位计算机********************\n\n");printf("\t\t如果有空闲机位将会自动预约,如果无空位,您可以选择最近时间段空位计算机进行预约!\n\n");printf("\t\t\t\t 请输入您想要预约的日期时间:(例如:2016/7/22/8-10表示)\n");scanf("%d/%d/%d/%d-%d",&year,&month, &day, &start_Time, &end_Time);/*输入查询时间*/if ((start_Time - 8) / 2 >= 0 && (start_Time - 8) / 2 <= 6){time = (start_Time - 8) / 2;}else{printf(" 输入时间段错误!\n");}if (month < 1 || month > 12 || day < 0 || day > Month[month])/*检验查询时间是否出错,并给出提示信息*/{printf(" 输入错误!\n");printf(" 请选择输入指令:1.重新输入 2.返回菜单\n");scanf("%d", &n);if (n == 2) break;}else break; //未出错则跳出循环,继续执行后面程序}if (n == 2) return;int a=0;s = timeone(); //该函数负责将不同时间段信息放置在二维数组结构体的不同列printf(" 请选择预约模式:\n");printf(" 1.按顺序预约 2.选择编号预约\n");scanf("%d", &a);if (a == 1) //顺序预约模块{for (i = 1; i <= 20; i++){if (date[month][day] == 0 || info[i][s].State[time] == 0){date[month][day] = 1;info[i][s].State[time] = 1;printf("\t\t ==================第%d 号计算机已经成功预约!==================\n ", i);printf("\t\t ================您可以在预约的时间段内使用计算机!============= \n \n ");printf("\t\t 本次为机位预约模拟系统第%d次预约(不同时期).请留意次数. \n", s);system("pause");return; //有一个符合条件的计算机,则return跳出该函数}}printf("您查询的时间段内无空闲机位!\n\n");printf("是否仍在非空闲时间段内使用电脑:\n\n");printf("1.是(加入等待队列)\n");printf("2.否(查找临近的空位计算机)\n");scanf("%d", &n);if (n == 1) /*如果加入等待列表,就输入相关的姓名,性别,电话和机位号*/{printf("请输入您想要等待的机位号::\n\n");scanf("%d", &m);printf("请输入您的姓名:\n\n");scanf("%s", info[m][s].name, 20);printf("请输入您的性别:(男或女)\n\n");scanf("%s", info[m][s].sex, 30);printf("请输入您的电话号码:\n\n");scanf("%s", info[m][s].tel, 20);info[m][s].year = year;info[m][s].month = month;info[m][s].day = day;info[m][s].start_Time = start_Time;info[m][s].end_Time = end_Time;printf("您已经成功加入等待队列......\n");system("pause");return;}/*通过四层嵌套循环寻找顺次向后推时间段内空机位信息*/for (i = month; i <= 12; i++) //月份{for (j = day; j <= Month[i]; j++) //日期{for (k = 1; k <= 6; k++) //0-6时间段{for (m= 1; m < 20; m++) //1-20号机器{if (date[i][j] == 0 || info[m][s].State[time] == 0){printf("你可以预约到的最近时间段的计算机:第%d 号计算机%d年%d月%d日%d时-%d时\n", s, year, i, j, (2 * k + 6), (2 * k + 8));printf(" 1.预约第%d 号计算机的该段时间\n", s);printf(" 2.不预约并退出\n");printf(" 请输入1&2进行选择: \n");scanf("%d", &n);if (n == 1){printf("\t\t ==================第%d 号计算机已经成功预约!==================\n ", m);printf("\t\t ================您可以在预约的时间段内使用计算机!============= \n \n ");printf("\t\t 本次为机位预约模拟系统第%d次预约(不同时期).请留意次数. \n", s);date[i][j] = 1; /*将机位状态调整为1*/info[m][s].State[time] = 1;}system("pause"); /*系统暂停,按任意键继续*/return;}}}}}}if (a == 2) /*选择编号进行预约*/{printf("请输入您要预约的计算机机位号:\n");scanf("%d", &i);if (date[month][day] == 0 || info[i][s].State[time] == 0){date[month][day] = 1;info[i][s].State[time] = 1;printf("\t\t ==================第%d 号计算机已经成功预约!==================\n ", i);printf("\t\t ================您可以在预约的时间段内使用计算机!============= \n \n ");printf("\t\t 本次为机位预约模拟系统第%d次预约(不同时期).请留意次数. \n", s);system("pause");}else{printf("第%d号机位已经被他人预约!",i); /*重复之前等待信息载入代码*/printf("是否仍在非空闲时间段内使用电脑:\n");printf("1.是(加入等待队列)\n");printf("2.否(查找临近的空位计算机)\n");scanf("%d", &n);if (n == 1) /*如果预定机位,就输入相关的姓名,性别,时间段*/{printf("请输入您想要等待的机位号::\n\n");scanf("%d", &b);printf("请输入您的姓名:\n\n");scanf("%s", info[b][s].name,30);printf("请输入您的性别:(男或女)\n\n");scanf("%s", info[b][s].sex, 30);printf("请输入您的电话号码:\n\n");scanf("%s", info[b][s].tel, 20);info[b][s].year = year;info[b][s].month = month;info[b][s].day = day;info[b][s].start_Time = start_Time;info[b][s].end_Time = end_Time;printf("您已经成功加入等待队列......\n");system("pause");return;}for (i = month; i <= 12; i++) //月份{for (j = day; j <= Month[i]; j++) //日期{for (k = 1; k <= 6; k++) //0-6时间段{for (t = 1; t < 20; t++) //1-20号机器{if (date[i][j] == 0 || info[t][s].State[time] == 0){printf("你可以预约到的最近时间段的计算机:第%d号计算机%d年%d月%d日%d时-%d时\n\n", t, year, i, j, (2 * k + 6), (2 * k + 8));printf(" 1.预约第%d 号计算机的该段时间\n\n", t);printf(" 2.不预约并退出\n\n");printf(" 请输入1&2进行选择: \n\n");scanf("%d", &n);if (n == 1){printf("****************第%d 号计算机已经成功预约!**************** \n ", t);printf("***************您可以在该时间段内使用计算机!************** \n ");date[i][j] = 1;info[t][s].State[time] = 1;}system("pause");return;}}}}}}}}/******************************取消预约模块*****************************/void book_exit() /*此函数的作用是退出预定*/ {int year,month, day, start_Time, end_Time,time,s=0;int n = 0;while (1){printf("\n在此处您可以取消预约已预订的计算机\n");system("pause");printf("\n请输入您想要取消预约的日期时间:(例如:2016/7/22/8-10表示)\n");scanf("%d/%d/%d/%d-%d", &year,&month, &day, &start_Time, &end_Time);if ((start_Time - 8) / 2 >= 0 && (start_Time - 8) / 2 <= 6){time = (start_Time - 8) / 2;}else{printf("\n输入时间段错误!\n");system("pause");return;}if (month < 1 || month > 12 || day < 0 || day > Month[month]){printf(" 输入错误!\n");printf(" 请选择输入指令:1.重新输入 2.返回菜单\n");scanf("%d", &n);if (n == 2) break;}else break;}if (n == 2) return;printf("请输入您想要取消预约的计算机编号:.\n");scanf("%d", &n);printf("您要取消预约第几次预约的计算机机位:.\n");scanf("%d", &s);if (info[n][s].State[time] == 1){info[n][s].State[time] = 0;printf("第%d号机位取消预约成功!\n",n);}else{printf("在该段时间内您没有预约任何编号的计算机!\n");}system("pause");}/******************************查询等待信息模块*****************************/void Look_wait() /*此函数的作用是查询等待机位的人,并按序显示*/{int m;int year, month, day, start_Time, end_Time,s;printf("请输入您想要查询的日期时间:(例如:2016/7/22/8-10表示)\n\n");scanf("%d/%d/%d/%d-%d", &year, &month, &day, &start_Time, &end_Time);printf("请输入您要查询等待信息的机位号:\n\n");scanf("%d", &m);printf("正在查询,请稍候~\n\n");printf("第%d号计算机:\n\n", m);printf(" 您准备查找第几次预约的信息?\n\n ");scanf("%d", &s);printf("姓名:%s\n\n", info[m][s].name);printf("性别:%s\n\n", info[m][s].sex);printf("联系方式:%s\n\n", info[m][s].tel);printf("该成员于%d年%d月%d日加入本台计算机的等待队列\n\n", info[m][s].year, info[m][s].month, info[m][s].day);system("pause");return;}/******************************预约次数(不同时期)判别模块*****************************/int timeone() /*为了便于对不同预约时间相同机位信息判别加设*/ {int n=0,k;int s = 1;printf("如果在本系统首次预约请选择1 ,再次预约请选择2\n\n");scanf("%d", &n);if (n == 1){return s;}if (n == 2){int i=0;printf("预约日期与前几次是否相同? 1.相同 2.不同\n\n");scanf("%d",& i);if (i == 1){s = 0;printf("预约日期与第几次相同?\n");scanf("%d", &k);s = s + k;return s;}if (i == 2){s = 0;printf("本次为第几次预约(不同时期)?\n");scanf("%d", &k);s = s + k;printf("本次为机位预约模拟系统第%d次预约(不同时期).请留意次数. \n",s);return s;}}}/**********************************主函数模块*************************************/main(){Empty();int num;while (1){system("cls"); /* 清除文本模式窗口*/s_line(4);space(40);printf("********************主菜单********************\n"); /*使用空行函数排版*/s_line(2);space(55);printf("1.查询机位信息\n");s_line(1);space(55);printf("2.预约机位\n");s_line(1);space(55);printf("3.取消机位预约\n");s_line(1);space(55);printf("4.查询等待人员信息\n");s_line(1);space(55);printf("5.退出系统\n");s_line(2);space(40);printf("********************************************\n\n");printf("请输入1~5进行功能操作: \n");scanf("%d", &num); /*输入数字进行相应的函数的调用*/if (num == 5) break;switch (num){case 1:Query();break;case 2:book_computer();break;case 3:book_exit();break;case 4:Look_wait();break;default:printf("输入错误!\n");system("pause");exit(0);}}}。
c语言课程设计--机房机位预定系统

c语言课程设计--机房机位预定系统1 设计目的机房机位预定系统2 任务概述20台机器,编号1到20,从早八点到晚八点。
两小时一个时间段,每次可预定一个时间段。
功能要求:(1)系统以菜单方式工作(2)查询,根据输入时间,输出机位信息。
(3)机位预定,根据输入的时间查询是否有空机位,若有则预约,若无则提供最近的时间段,另:若用户在非空时间上机,则将用户信息列入等待列表。
(4)退出预定,根据输入的时间,机器号撤销该事件的预定!(5)查询是否有等待信息,若有则提供最优解决方案(等待时间尽量短),若无则显示提示信息。
.........3 模块划分4 主要函数说明及其N-S图1. 主函数:int main(){Menu(); /*当前状态函数*/}void Menu() /*主界面*/{int n,w;do{puts("\t\t****************机房机位预约系统*******************\n");puts("\t\t*************************菜单***************************\n");puts("\t\t\t 1.查询某时间段机位状态"); /*查询某时间段机位状态*/puts("\t\t\t 2.预定空机位"); /*预定空机位*/puts("\t\t\t 3.取消预订"); /*取消预订*/puts("\t\t\t 4.查询等待信息"); /*查询等待信息*/puts("\t\t\t 5.退出"); /*退出*/puts("\t\t****************************************** **************\n");printf("选择菜单号(1-5):");scanf("%d",&n);if(n<1||n>5){w=1;getchar();}elsew=0;}while(w==1);switch(n){case 1:Situation();break;case 2:Book();break;case 3:Cancel();break;case 4:SearchWaiting();break;case 5:exit(0);break;}getch();}2.机位查询:void Situation(){int time;printf("输在(8-20)范围内的时间:");scanf("%d",&time);if(time<8||time>20){printf("\t时间输入错误!\n");printf("输入在(8-20)范围内的时间:");scanf("%d",&time);}detail(time); /*函数调用*/getchar();Menu();}3.机位预定:void Book(){int time,i=0,x,y;FILE *fp;char c;printf("在(8-20)时间范围内输入你想要预定的时间:");scanf("%d",&time);if(time<8||time>20){printf("\t时间输入错误!\n");printf("\t在(8-20)时间范围内输入你想要预定的时间:");scanf("%d",&time);}detail(time); /*函数调用*/if(sum[T]>0){ if((fp=fopen("waitlist.txt","a"))==NUL L){printf("\n无法打开文件!\n");exit(0);}printf("\n\t请输入你想要预定的机号,并且留下你的电话号码!:\n");scanf("%s %s",wait[i].number,wait[i].teleph onenumber);for(i=0;i<1;i++)fwrite(&wait[i],sizeof(struct waitlist),1,fp);fclose(fp);/*向文本文档添加一个结构体单元*/printf("\t再次输入你想要预定的时间!\n");scanf("%d",&x);/*sum[T]--; / *预定后该时间段空机位数减1*//*computer[T][x]=1; / *预定后该机状态变为1*/printf("\t预订成功!\n");getchar();Menu();}else{printf("这是在这个时间段内未预定的电脑!\n");for(i=T+1;i<6;i++){ time=9+2*i;detail(time); /*函数调用*/if(sum[T]>0)printf("\tThe latest free time is %d,%d\n",2*i+8,2*i+10);break;}printf("\t你想要预定吗?:y/n?");scanf("%s",&c);getchar();if(c=='Y'||c=='y'){if((fp=fopen("waitlist.txt","r"))==NULL){printf("\n无法打开文件!\n");exit(0);}else{ printf("waitlist:number telephonenumber\n");for(i=0;!feof(fp);i++){fscanf(fp,"%s %s",&wait[i].number,&wait[i]. telephonenumber);}fclose(fp);}for(i=0;i<10;i++){ prione(i);}printf("\n\t请输入你想要预定的机号,并且留下你的电话号码!:\n");if((fp=fopen("waitlist.txt","a"))==NULL){printf("\n无法打开文件!\n");exit(0);}scanf("%s %s",wait[i].number,wait[i].teleph onenumber);for(i=0;i<1;i++)fwrite(&wait[i],sizeof(struct waitlist),1,fp);fclose(fp); /*若等待,就用文件的方式列出当时的等待列表并提示输入你的等待序号和联系方式*/printf("再次输入电脑的序号!\n");scanf("%d",&y);sum[T]--;computer[T][y]=1;printf("\t好了,请等待我们的电话!\n");Menu();}else Menu();}}N4.取消预定:void Cancel(){int time,number;printf("在(8-20)时间范围内输入你已经预定的时间:");scanf("%d",&time);if(time<8||time>20){printf("\t输入时间错误!\n");printf("\t在(8-20)时间范围内输入你已经预定的时间:");scanf("%d",&time);}else{printf("\t输入你预定的机号:");scanf("%d",&number);}detail(time);/* sum[T]++; / *预定后该时间段空机位数加1*//*computer[T][number]=0; / *预定后该机状态变为0*/printf("\t取消成功!\n");getchar();Menu();}5.查询等待信息:void SearchWaiting(){int time,i;FILE *fp;printf("\tInput time you want to search between(8-20):");scanf("%d",&time);if(time<8||time>20){printf("\tWrong time!\n");printf("\tInput time you want to search between(8-20):");scanf("%d",&time);}else;if((fp=fopen("waitlist.txt","r"))==NULL){printf("\nCannot open file!\n");exit(0);}else{ printf("waitlist:number telephonenumber\n");for(i=0;!feof(fp);i++){fscanf(fp,"%s %s",&wait[i].number,&wait[i]. telephonenumber);}fclose(fp);}for(i=0;i<10;i++){ prione(i);}Menu();}5 程序运行数据及其结果1.主菜单:2.机位查询:3.机位预定:4.查询等待信息:6 课程设计心得课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。
机房机位预定系统报告书报告机位预订预订机位

机房机位预定系统报告书报告机位预订预订机位机房机位预订系统设计报告书一、需求分析1、引言由于机房在使用时存在着机位的查询、预订与退订的过程,这就使机房管理者在一定程度上需要对机房进行有效的信息化管理并且使用者在机房预订机位时会出现许多问题,所以设计了此项程序旨在帮助机房更好的管理机位,以及使机房管理信息化的同时便于机房使用者更有效的节约时间。
所以,从总体上来说,本次的机房机位预订系统对机房的管理、使用者自身的实际情况有着很大的意义。
2、简述题目需要解决的问题设计一个机房机位预订系统,能够对机房的第二天的机位进行预订。
设某机房有40台机器,编号从1到40,从早上九点到晚上九点,两个小时为一个时间段,每次可预订第二天的某一个时间段。
(1) 系统以菜单方式运行(2) 查询,根据输入时间,输出机位信息。
(3) 机位预订,根据输入的时间输出是否有空机位,若有则进行预订(在该时段写入预订学生的信息),若无则提供最近时间段。
(4) 撤销预订,根据输入的时间段、机器号撤销之前的预订机位。
输出预订,可将第二天的预订情况打印输出。
3、规定软件做什么此款软件依据具体情况而定,有很大的实用性,所以软件在设计时充分地考虑了一些实际的情况并且做了有效的改进。
首先,软件在总体上要有系统以菜单方式运行,实现此项功能,采用了Display()函数作为菜单的输出,便于使用者清晰的选择所需的菜单。
其次,采用编号制的Switch()语句使用户选择菜单更加具体。
当用户选择查询时,系统由switch()语句进入Search( )函数从而进行查询功能。
同理,程序也以此进行了预订、退订、退出系统等功能。
在实现以上功能的同时,增加了对用户姓名的录入,便于下一位用户更好的查询。
二、算法设计1、机房机位预订系统的总程序结构如下图所示机房机位预订系统机位查询机位预订机位退订系统退出2、总体程序中的函数调用机执行情况主函数main()调用类ComList的类对象 fanClass ComList{ }fan.CreatList( ) ComList::CreatList( )fan.Display( ) ComList::Display()Switch ( )Search( ) Book( ) Quit( ) Exit( )3、各个执行函数的详细阐述(1)主函数void main(){ComList fan;fan.CreatList();fan.Display();}主函数中,先定义ComList类的类对象fan,再调用CreatList()函数和Display()函数分别执行对应的功能。
c语言实习报告机房机位预约模拟

c语言实习报告机房机位预约模拟C语言课程设计院系:工程学院姓名:杨文和学号:20051003679班号:05205222指导教师:王老师日期:2007年9月机房机位预约模拟一.题目要求20台机器,从早八点到晚八点,每两个小时一个时间段.需要实现的功能:(1)查询,根据输入的时间,输出机位信息.(2)机位预定,根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供最近空机时间段.另:若用户要求在非空时间上机,则将用户信息插入该时间段的等待列表.(3)退出预定,根据输入的时间,撤消该时间的饿预定.(4)查询是否有等待信息,若有则按顺序显示联系方式,若无则显示提示信息.二.需求分析根据题目要求,需要提供机位信息和预约信息,应该用链表来存储,应提供指针的操作:在程序中,需要查询是否有空机位和等待者和处理预约和取消预约问题,应提供查询,显示,预定,删除,修改等操作;另外还要提供键盘式选择菜单实现功能选择.三.总体设计现在分析整个一下整个系统,根据上面的需求分析,可以将这个系统的设计分为如下六大模块:查询我的预约状态,查询空位,预约,取消预约,排队,查询等待信息.机房机位模拟系统我的预约状态查询空位预约取消预约排队查询等带信息四.详细设计1.宏定义#include<stdio.h>#include<stdlib.h>#include<string.h>#define LENGTH 6/*总时段数*/#define MAX 2#define S(r) (r-8)/2/*计算在哪个时段数*/struct node{int locat;char data[10];/*学号,假设为联系方式*/struct node *next;};struct node *head;struct cell{int CNum;/*连接在该时段头结点的总机器数目*/struct node *first;/*指向整个队列的开头*/struct node *middle;/*指向等待预约队列*/struct node *last;/*指向整个队列的结尾*/}TimeQueue[LENGTH];2..主函数主函数一般设计的比较简洁,只提供输入,处理和输出部分的函数调用.其中个功能模块用菜单方式选择。
c语言机房机位预定系统

课程设计说明书学院、系:专业:学生姓名:学号:设计题目:学生考勤系统起迄日期:指导教师:日期: 2017年5月11日1 设计目的模拟考勤过程,根据考勤评分给出考勤分数。
2 任务概述1>菜单界面:选择操作项目。
2>信息录入:输入学生身份信息与考勤次数,并存入文件。
3>修改功能:通过姓名或学号查找,对学生的考勤次数进行修改。
4>查询功能:通过姓名或学好查找,输出学生信息。
5>评分功能:设定标准考勤次数,按照考勤次数占标准考勤次数的百分比给分。
3 模块划分图1,模块划分图4 主要函数说明及其流程图main主函数:图2,主函数主函数:设计了初始界面,使程序的界面友好化。
给用户选择操作项目,让用户对程序的功能一目了然。
调用功能函数,完成设计目的。
图3,input()函数录入函数:通过使用循环体和判断语句,可实现重复输入学生数据和是否确定输入的功能。
使得用户操作起来更加自如。
图4,change()函数修改函数:通过学号和姓名两种方式可以查询到学生的信息,然后将考勤次数重新赋值并写入文件。
这样可以避免出现错误无法修改以至于重新输入的情况。
search()函数:图5,search()函数查询函数:通过学号和姓名两种方式可以选择查找方式,将文件的内容读出,可以看到学生的身份信息和修改后的考勤次数。
确定该生信息存在。
evaluate()函数:图6,evaluate()函数评分函数:输入标准考勤次数,将实际考勤次数占标准考勤次数的百分比作为最后分数。
5 程序运行数据及其结果姓名:张三学号:1性别:男考勤次数:5修改后考勤次数:10标准考勤次数:10考勤分数:1006 课程设计心得通过编写这次C语言课程设计,对C语言的基本语法,选择,循环等结构有了更深刻的认识。
深入地练习了函数的调用和文件的读写方法,熟悉了结构体的使用,和一些算法的运用。
在整个设计的过程中,遇到了很多问题。
当出现语法错误的时候,首先自己看书,看书上的语法和在例题中的应用,从而对该语法的记忆进一步加深。
机房预约系统课程设计报告

机房预约系统课程设计报告Last updated on the afternoon of January 3, 2021课程设计(论文)任务书软件学院软件+ 信控专业 1 班一、课程设计(论文)题目机房机位预约模拟系统的设计与实现二、课程设计(论文)工作自 2017 年 1月 2日起至2017 年 1月6 日止。
三、课程设计(论文) 地点: 南区创新大楼东楼406四、课程设计(论文)内容要求:1.课程设计的目的《数据结构》课程设计是计算机科学与技术专业集中实践性环节之一,是学习完《数据结构》课程后进行的一次全面的综合练习。
目的是要达到理论与实际应用相结合,使学生能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养良好的程序设计技能。
要求能从实际应用问题出发,合理地选择数据结构,设计相应的数据处理算法,并对算法进行必要的分析;合理选择编程工具,实现数据的物理结构和相应的数据处理算法;对算法进行调试和测试,并对调试及测试结果进行分析;针对数据结构及算法的设计、调试及测试过程认真写出设计分析报告。
2.课程设计的要求及任务(1)基本要求1)初步掌握软件开发过程的问题分析、系统设计、程序编码、调试等基本方法和技能。
2)要求从问题需求入手,完成系统的分析与设计,独立完成系统的数据和功能分析,应用《数据结构》知识,设计抽象数据类型、构思算法、完成系统的设计。
3)结合《数据结构》理论知识,编写程序求解指定问题,程序设计语言推荐使用C/C++,程序书写规范,源程序需加必要的注释。
4)认真完成系统的调试与测试工作,测试数据要完备,详细记录测试结果。
5)规范撰写课程设计报告。
(2)课程设计论文撰写要求1)按照书稿的规格撰写打印课程设计论文;2)论文包括任务书、目录、绪论、正文、总结、参考文献、附录等;3)正文中要有问题描述与分析、数据结构的设计、算法的设计、算法的实现、调试分析与结果;4)课程设计论文装订按学校的统一要求完成(3)课设考核1)考勤和态度;2)任务的难易程度及设计思路;3)编码及调试能力;4)论文撰写的水平、格式的规范性。
课程设计 机房机位预约

《C 课程设计》上机报告院系:班级:姓名:学号:题目:25.机房机位预约模拟成绩:二O 一O 年七月25.机房机位预约模拟[要求]20台机器,从早8点到晚8点,每两个小时一个时间段。
需要实现功能:(1)查询,根据输入时间,输出机位信息。
(2)机位预定,根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供最近空机时间段。
另:若用户要求在非空时间上机,则将用户信息输入该时间段的等待列表。
(3)退出预定,根据输入的时间,撤销该时间的预订。
(4)查询是否有等待信息,若有则按顺序显示联系方式,若无则显示提示信息。
一.需求分析根据题目要求,程序应该提供“日期时间,用户信息”的输入、输出操作;在程序中需要浏览机位信息和用户等待信息,应提供显示、查找、排序等功能;通过文件的删除操作删除撤销的时间预定;提供文件的添加操作来增加新的用户预约信息;另外还需要提供键盘式选择菜单以实现功能选择。
二.总体设计根据以上的需求分析,可以将这个系统的设计分为以下模块:三.详细设计1.定义#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#define SIZE 20void Display();void Search();void Book();void Quit();void Wait();void SearchWait();void Exit(); /*定义的一些相关的函数:查询,预约,退订,查询等待,退出*/ int computernum[12]={20,18,0,15,10,8,12,4,10,1,1,0};/*自己定义的每个时间段剩下的电脑数*/struct waitlist{char number[3];char phonenumber[12];}wait[SIZE];/*一个结构体,等待的序号和联系方式,共20台电脑的,只定义了20个等待的列表*/2.主函数及主界面主函数提供输入,处理和输出部分的函数调用.其功能模块用菜单方式选择。
机房预约系统课程设计报告

(4)利用结构体构造所需的要的数组以及线性表,线性表采用顺序储存。
3.系统设计
3.1 数据结构
程序主要是用一维数组以及二维数组作为程序的样本库,用顺序表顺序储存所有的信息,然后用文本转换函数将其转换成文本文档存储。其中信息包括预定的机位、预定的时间段、以及预定所用的电话号码。
{
int n,w;
do
{
printf("\t\t\t\t机房机位预约系统\n");
printf("\t\t\t\t菜单\n");
printf("\t\t\t 1.查询某时间段机位状态\n"); /*查询某时间段机位状态*/
printf("\t\t\t 2.预定空机位\n"); /*预定空机位*/
printf("\t\t\t 3.取消预订\n"); /*取消预订*/
4)论文撰写的水平、格式的规范性。
(4)课程设计进度安排
内容 天数 地点
构思及收集资料 1 图书馆
程序设计与调试 3 计算机房
撰写论文 1 图书馆
具体任务:20台机器,从早8点到晚8点,每两个小时一个时间段。实现如下功能:
(1)机位空闲查询,查询空闲机位;
(2)机位预定,根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供最近时间段的空机信息。另外,如果用户要求在非空时间上机,则将用户信息插入该时间段的等待列表。
1)按照书稿的规格撰写打印课程设计论文;
2)论文包括任务书、目录、绪论、正文、总结、参考文献、附录等;
3)正文中要有问题描述与分析、数据结构的设计、算法的设计、算法的实现、调
C语言实习报告材料-机房机位预约系统

C语言课程实习报告所在院系班级学号姓名程序已存档指导老师评分二零一零年七月十五目录一.题目要求 (3)二.需求分析 (3)三.总体设计 (3)掌握四.详细设计 (4)1.主函数 (4)(1)流程图 (4)(2)主函数程序 (5)2.各功能模块 (7)(1).查询模块 (7)〈1〉流程图 (7)〈2〉程序 (8)(2)机位预定模块 (9)〈1〉流程图 (9)〈2〉程序 (10)(3)退出预定模块 (11)〈1〉流程图 (11)〈2〉程序 (11)五.总结 (14)一.题目要求设计“机房机位预约系统”,要实现查询,机位预定,退出预定,查询是否有等待信息等功能模块,机位信息一文件存放,功能选择用菜单实现,要求:有20台机器,从早8点到晚8点,每两小时为一个时间段。
二.需求分析根据题目要求,由于机位信息是存放在文件中,所以应提供文件输入输出等操作;在程序中需要查询机位信息和预定机位,应提供显示,查找等操作,另外还要提供键盘式选择菜单实现功能选择。
三.总体设计四.详细设计1.主函数主函数一般设计的比较简洁,只提供输入,功能处理和输出部分的函数调用。
其中各功能模块用菜但方式选择;另外,菜单部分也可以写成函数。
流程图如下:程序:#include<stdio.h>#include<string.h>void search();void place();void call();struct cinformation{int number;int condition[6];}computer[21];int d[20];char b[ ]="placed";void main( ){int n,w1;int i,j;for(i=1;i<=20;i++){computer[i].number=i;for(j=0;j<6;j++)computer[i].condition[j]=0; }while(1){do{puts("\t\t***************主菜单****************\n\n"); puts("\t\t\t\t 1.机位查询");puts("\t\t\t\t 2.机位预定");puts("\t\t\t\t 3.退出预定");puts("\t\t\t\t 4.退出");puts("\n\n\t\t************************************\n"); printf("Choice your number(1-4):[ ]\b\b");scanf("%d",&n);if(n<1||n>4){w1=1;getchar();}else w1=0;}while(w1==1);switch(n){case 1:search();break;/*查询*/case 2:place();break;/*机位预定*/case 3:call();break;/*退出预定*/case 4:return;/*退出*/}}}运行结果:2.各功能模块设计(1)查询[流程图][程序] void search(){int i,j;for(i=1;i<=20;i++){ printf("computer %2d: ",i);for(j=0;j<6;j++)if(computer[i].condition[j]==0) printf("time %2d ",j);printf("\n");}getchar();getchar();}运行结果:[流程图][程序] void place(){int m,n;printf("选择预约机号:[ ]\b\b"); scanf("%d",&m);printf("选择预约时间段:[ ]\b\b"); scanf("%d",&n);if(computer[m].condition[n]==0) {computer[m].condition[n]=1;printf("预约成功\n");}else if(computer[m].condition[n]==1) printf("已被预约");return;}运行结果:(3)退出预定模块[流程图][程序] void call(){char x;int i,j;printf("输入欲退出预约的机号:[ ]\b\b");scanf("%d",&i);printf("输入欲退出预约的时间段:[ ]\b\b");scanf("%d",&j);printf("确定退出预约:“是”输入y),“否”输入n):[ ]\b\b");getchar(); scanf("%c",&x);if(x=='y'){computer[i].condition[j]=0;printf("退出预约成功");}if(x=='n'){computer[i].condition[j]=computer[i].condition[j];}getchar();getchar();}运行结果:五.总结一周的实习终于结束了,经过一个星期的实践,我才发现原来我的c语言掌握得并不象期末考试成绩反映的那样,通过这一次实习,让我感受到了上课听课的重要性,最典型的就是如果上课不听课,我就不知“b\b”是什么了。
机房预定位系统

合肥学院计算机科学与技术系课程设计报告20 12 ~20 13 学年第一学期课程C语言课程设计课程设计题目机房机位预订系统学生姓名学号1204032015专业班级网络工程(2)班指导教师20 13 年 1 月目录一、课程设计目的 (2)二、课程设计名称及内容 (2)三、对任务和要求的分析 (2)四.详细设计及实现 (3)五、源代码 (18)六、程序测试 (24)七、总结 (25)一、课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。
通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《C语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
(3)利用所学知识,开发小型应用系统,掌握运用C语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
(5)掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。
(6)熟练掌握C语言的基本语法,灵活运用各种数据类型。
(7)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。
二、课程设计名称及内容课程设计名称:机房机位预定系统设计内容:设计一个机房机位预定系统,该系统要求对机房电脑机位进行管理和维护。
20台机器,从早八点到晚八点,每两个小时一个时间段.任务和要求:20台机器,编号1到20,从早八点到晚八点。
两小时一个时间段,每次可预定一个时间段。
设计一个机房机位预定系统,通过该系统实现对机房机位的预定管理。
三、对任务和要求的分析可行研究阶段的目标是:使工作人员从繁琐的机位管理工作中解放出来;提高工作质量,使供需双方都获得满意的结果;促进报表,提高工作效率。
课程设计论文

p->next=R;
DUILEI[n].middle=R; /*等待预订列表*/
DUILEI[n].RS++;
printf("成功排队\n");
}/*将刚输入学生信息拍到最后一名后,成最后一名*/
else
{
R=(struct xinxi *)malloc(sizeof(struct xinxi));
R->next=NULL;
p= DUILEI[n].last; /*将最后预订记录赋值给p*/
R->jihao= DUILEI[n].RS+1;
printf("%d",R->jihao); /*表示该时间段第几位预订*/
DUILEI[n].last=R; /*将当前的记录做为最后记录以便形成链表形式指向下一个*/
在当前的限制条件下,本系统的功能目标能够达到;利用现有的技术,本系统的功能能够实现;系统现阶段的发展过程中,利用现有人力和物力是完全具备的能力开发出来的,作为阶段性产品,日后的发展空间大,实现方法逐步简单容易,所以机房管理系统在技术上是完全可行的。小组开发人员的数量和质量完全能够满足开发本系统的要求,并且能够在规定的期限开发完成。
struct xinxi *middle; /*等待队列列表*/
struct xinxi *last; /*最后预订者记录*/
} DUILEI[SJD]; /*学生时间(SJD)段顺序:人数,第一名学生,排队的学生,最后一名学生*/
4.1
/***************************预定模块******************************/
C语言-机房机位预约程序

C语言课程设计题目:机房机位预约设计者:费小丽专业:资源勘查工程班号:021091—07指导老师:童恒建所属院系:资源学院2011年1月6日1题目与要求1.1 题目:20台机器,从早8点到晚8点,每两小时一个时间段。
1.2 本系统涉及的知识点:数组,函数,文件,宏定义,循环,结构体,选择结构。
1.3 功能要求:(1)查询。
根据输入时间输出机位信息。
(2)机位预定。
根据输入的时间段查询是否有空机位,若有则预约,若无则提供最近空机时间段。
另外,若用户要求在非空时间上机,则将用户信息插入该时间段的等待列表。
(3)退出预定。
根据输入的时间撤销该时间的预定。
(4)查询是否有等待信息。
若有则按顺序显示联系方式,若无则显示提示信息。
2功能实现设计主菜单设计如下:1>查询机位信息.2>机位预定.3>退出预定.4>查询等待信息.3模块流程图1 主函数流程图:2 查询机位信息流程图:3 机位预定流程图:4 机位退订流程图:5 查询等待信息流程图5 程序代码设计1)主函数主函数的设计简洁,只提供加输入,排序,统计和显示等函数的调用和加载功能。
其中各功能模块用菜单方式选择。
并将main()函数体内的界面选择部分部分语句单独抽出来做一个独立的函数,目的在于系统执行完每部分功能模块后能更方便返回到系统界面。
menu()函数从主函数中独立出来后,表面的主函数只是起一个程序开始的作用,其主要功能被独立出来的被调用的menu()函数所取代。
menu()函数主要完成菜单的输出和被选择的项目的输入和相应执行函数的调用。
[程序]#include "stdio.h"#include "stdlib.h"void ReadInformation();void Search();void ComputerPrecontract();void OutPrecontract();void SearchWait();void Menu();int a[20][6];void main(){ReadInformation();Menu();}void Menu(){int i;printf("*****欢迎进入机房机位预约模拟系统!*****\n");printf("* *\n");printf("* 1> 查询机位信息. *\n");printf("* 2> 机位预定. *\n");printf("* 3> 退出预定. *\n");printf("* 4> 查询等待信息. *\n");printf("* 5> 退出系统. *\n");printf("* *\n");printf("***************************************\n");printf("请输入功能模块(1~5):[ ]\b\b");scanf("%d",&i);switch(i){case 1: Search();break;case 2: ComputerPrecontract();break;case 3: OutPrecontract();break;case 4: SearchWait();break;case 5: exit(0);}}2)子函数在各个子函数中完成各要求,并成功后将返回到menu()函数继续选择并执行其他操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计报告设计者:肖昊班级序号:055071-27 学号:*********** 指导老师:***C语言程序设计编程实践是学习C语言程序设计的一重要环节,为提高学生程序设计能力,通过课堂和上机实践练习使学生的程序设计能力上一台阶。
通过前四单元温顾而知新、庖丁解牛、举一反三、熟能生巧等过程的练习设计下面一个完整的程序1.题目要求设计“机房机位预约模拟系统”要求:20台机器,从早8点到晚8点,每两个小时一个时间段。
需要实现功能:1,查询,根据输入时间,输出机位信息。
2,即为预定,根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供最近空机时间段。
另:若用户要求在非空时间上机,则将用户信息插入该时间段的等待列表.3,退出预定,根据输入的时间,撤销该时间的预定。
4,查询是否有等待的信息,若有则按顺序显示联系方式,若无则显示提示信息。
2需求分析根据题目要求在程序中需实现查询,预定,排队等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。
3总体设计整个系统可分为3个模块查询模块预定模块取消模块详细设计主函数比较简洁,只提供输入、功能处理和输出部分的函数调用。
main(){int i;for(i=0;i<LENGTH;i++){TimeQueue[i].CNum=0;TimeQueue[i].first=NULL;TimeQueue[i].middle=NULL;TimeQueue[i].last=NULL;}while(1){printf("请输入序号!:\n");printf("1. 查询预定的机位2.查询空机位3.预定4. 取消预定5.等待列表6.查询等待者列表0.退出\n");scanf("%d",&i);switch(i){case 1:Inquir();break;case 2:inquir();break;case 3:booking();break;case 4:cancel();break;case 5:waiting();break;case 6:inquir_waiting();break;case 0:exit(0);default:printf("error\n");}}}void Inquir(){int n;char Infor[10];struct node *Rem;printf("输入查询时间(24 hours 8~20 o'clock,include 8o'clock)\n"); scanf("%d",&n);if(n>=8&&n<20){n=S(n);printf("请输入学号\n");scanf("%s",Infor);Rem=TimeQueue[n].first;for(;Rem->next!=NULL;Rem=Rem->next)if(strcmp(Rem->data,Infor)==0)break;if(Rem->locat!=0)printf("The computer number is %d\n",Rem->locat);else printf("对不起.你依旧在等待列表中或者没有预定");}else printf("错误,请再次输入.\n");}void inquir(){int n;printf("输入想要查询的时间(24 hours 8~20o'clock,include 8 o'clock)\n"); scanf("%d",&n);if(n>=8&&n<20){n=S(n);if(TimeQueue[n].CNum<MAX)printf("There are %d empty computer!\n",MAX-TimeQueue[n].CNum); else printf("对不起.没有空余机位\n");}else printf("错误,再次输入.\n");}预定模块void booking(){int n;char Infor[10];struct node *Rem;struct node *p;printf("输入想要预定的时间\n");scanf("%d",&n);if(n>=8&&n<20){n=S(n);if(TimeQueue[n].CNum<MAX){printf("请输入你的学号\n");scanf("%s",Infor);Rem=(struct node *)malloc(sizeof(struct node)); Rem->locat=1;strcpy(Rem->data,Infor);Rem->next=NULL;TimeQueue[n].first=Rem;TimeQueue[n].last=Rem;TimeQueue[n].CNum++;printf("成功预定\n");}else{Rem=(struct node *)malloc(sizeof(struct node)); strcpy(Rem->data,Infor);Rem->next=NULL;p=TimeQueue[n].last;Rem->locat=TimeQueue[n].CNum+1;printf("%d",Rem->locat);TimeQueue[n].last=Rem;p->next=Rem;TimeQueue[n].CNum++;printf("成功预定\n");}}else printf("没有空余机位!");}else printf("错误.请再次输入.\n");}void waiting(){int n;char Infor[10];struct node *Rem;struct node *p;printf("请输入想要排队的时间\n");scanf("%d",&n);if(n>=8&&n<20){n=S(n);if(TimeQueue[n].CNum>=MAX){printf("请输入你的学号\n");scanf("%s",Infor);Rem=(struct node *)malloc(sizeof(struct node));strcpy(Rem->data,Infor);Rem->next=NULL;Rem->locat=0;p=TimeQueue[n].last;TimeQueue[n].last=Rem;p->next=Rem;TimeQueue[n].middle=Rem;TimeQueue[n].CNum++;printf("成功排队\n");}else{Rem=(struct node *)malloc(sizeof(struct node));strcpy(Rem->data,Infor);Rem->next=NULL;Rem->locat=0;p=TimeQueue[n].last;TimeQueue[n].last=Rem;p->next=Rem;TimeQueue[n].CNum++;printf("成功排队\n");}}else printf("有空余机位,无须等待\n");}else printf("错误.再次输入.\n");}取消模块void cancel(){int n;int i;char Infor[10];struct node *Rem;struct node *q;struct node *p;printf("请输入预定的时间\n"); scanf("%d",&n);if(n>=8&&n<20){printf("Please input your No.!\n"); scanf("%s",Infor);n=S(n);Rem=TimeQueue[n].first;q=Rem;for(i=1;;q=Rem,Rem=Rem->next,i++) if(strcmp(Rem->data,Infor)==0)break; if(i>MAX){if(Rem->next==NULL){q->next=NULL;TimeQueue[n].last=q;free(Rem);TimeQueue[n].CNum--;printf("Succeed to out the queue!\n"); }else{q->next=Rem->next;free(Rem);TimeQueue[n].CNum--;printf("Succeed to out the queue!\n");}}else{if(TimeQueue[n].CNum>MAX){TimeQueue[n].middle->locat=Rem->locat; TimeQueue[n].middle=TimeQueue[n].middle->next; }if(i==1) TimeQueue[n].first=Rem->next;else q->next=Rem->next;free(Rem);TimeQueue[n].CNum--;printf("成功取消预定!\n");附录源代码:#include<stdio.h>#include<stdlib.h>#include<string.h>#define LENGTH 6#define MAX 20#define S(r) (r-8)/2#define NULL 0struct node{int locat;char data[10];struct node *next;};struct node *head;struct cell{int CNum;struct node *first;struct node *middle;struct node *last;}TimeQueue[LENGTH];void Inquir(){int n;char Infor[10];struct node *Rem;printf("输入查询时间(24 hours 8~20 o'clock,include 8o'clock)\n");scanf("%d",&n);if(n>=8&&n<20){n=S(n);printf("请输入学号\n");scanf("%s",Infor);Rem=TimeQueue[n].first;for(;Rem->next!=NULL;Rem=Rem->next)if(strcmp(Rem->data,Infor)==0)break;if(Rem->locat!=0)printf("The computer number is %d\n",Rem->locat);else printf("对不起.你依旧在等待列表中或者没有预定");}else printf("错误,请再次输入.\n");}void inquir(){int n;printf("输入想要查询的时间(24 hours 8~20o'clock,include 8 o'clock)\n"); scanf("%d",&n);if(n>=8&&n<20){n=S(n);if(TimeQueue[n].CNum<MAX)printf("There are %d empty computer!\n",MAX-TimeQueue[n].CNum); else printf("对不起.没有空余机位\n");}else printf("错误,再次输入.\n");}void booking(){int n;char Infor[10];struct node *Rem;struct node *p;printf("输入想要预定的时间\n");scanf("%d",&n);if(n>=8&&n<20){n=S(n);if(TimeQueue[n].CNum<MAX){printf("请输入你的学号\n");scanf("%s",Infor);if(TimeQueue[n].first==NULL){Rem=(struct node *)malloc(sizeof(struct node)); Rem->locat=1;strcpy(Rem->data,Infor);Rem->next=NULL;TimeQueue[n].first=Rem;TimeQueue[n].last=Rem;TimeQueue[n].CNum++;printf("成功预定\n");}else{Rem=(struct node *)malloc(sizeof(struct node)); strcpy(Rem->data,Infor);Rem->next=NULL;p=TimeQueue[n].last;Rem->locat=TimeQueue[n].CNum+1;printf("%d",Rem->locat);TimeQueue[n].last=Rem;p->next=Rem;TimeQueue[n].CNum++;printf("成功预定\n");}}else printf("没有空余机位!");}else printf("错误.请再次输入.\n");}void waiting(){int n;char Infor[10];struct node *Rem;struct node *p;printf("请输入想要排队的时间\n");scanf("%d",&n);if(n>=8&&n<20){n=S(n);if(TimeQueue[n].CNum>=MAX){printf("请输入你的学号\n");scanf("%s",Infor);if((TimeQueue[n].CNum)==MAX){Rem=(struct node *)malloc(sizeof(struct node)); strcpy(Rem->data,Infor);Rem->next=NULL;Rem->locat=0;p=TimeQueue[n].last;TimeQueue[n].last=Rem;p->next=Rem;TimeQueue[n].middle=Rem;TimeQueue[n].CNum++;printf("成功排队\n");}else{Rem=(struct node *)malloc(sizeof(struct node)); strcpy(Rem->data,Infor);Rem->next=NULL;Rem->locat=0;p=TimeQueue[n].last;TimeQueue[n].last=Rem;p->next=Rem;TimeQueue[n].CNum++;printf("成功排队\n");}}else printf("有空余机位,无须等待\n");}else printf("错误.再次输入.\n");}void cancel(){int n;int i;char Infor[10];struct node *Rem;struct node *q;struct node *p;printf("请输入预定的时间\n");scanf("%d",&n);if(n>=8&&n<20){printf("Please input your No.!\n");scanf("%s",Infor);n=S(n);Rem=TimeQueue[n].first;q=Rem;for(i=1;;q=Rem,Rem=Rem->next,i++)if(strcmp(Rem->data,Infor)==0)break;if(i>MAX){if(Rem->next==NULL){q->next=NULL;TimeQueue[n].last=q;free(Rem);TimeQueue[n].CNum--;printf("Succeed to out the queue!\n");}else{q->next=Rem->next;free(Rem);TimeQueue[n].CNum--;printf("Succeed to out the queue!\n");}}else{if(TimeQueue[n].CNum>MAX){TimeQueue[n].middle->locat=Rem->locat; TimeQueue[n].middle=TimeQueue[n].middle->next; }if(i==1) TimeQueue[n].first=Rem->next;else q->next=Rem->next;free(Rem);TimeQueue[n].CNum--;printf("成功取消预定!\n");}}else printf("错误,请再次输入.\n");}void inquir_waiting(){int n;struct node *q;printf("查询其他等待者的预定时间\n");scanf("%d",&n);if(n>=8&&n<20){n=S(n);if(TimeQueue[n].CNum>MAX){printf("等待列表are:\n");q=TimeQueue[n].middle;for(;q->next!=NULL;q=q->next) printf("%s\n",q->data);printf("%s\n",TimeQueue[n].last->data);}else printf("这个时间段没有预定者\n");}else printf("错误。