1、1 1 设计目的设计目的 机房机位预定系统 2 2 任务概述任务概述 20 台机器,编号 1 到 20,从早八点到晚八点。两小时一个时间段,每次可预定一个 时间段。功能要求: (1)系统以菜单方式工作 (2)查询,根据输入时间,输出机位信息。 (3)机位预定,根据输入的时间查询是否有空机位,若有则预约,若无则提供最近的时间 段,另:若用户在非空时间上机,则将用户信息列入等待列表。 (4)退出预定,根据输入的时间,机器号撤销该事件的预定! (5)查询是否有等待信息,若有则提供最优解决方案(等待时间尽量短) ,若无则显示提示 信息。 . 3 3 模块划分模块划分 4 4 主要函数说明及其主要函数说
2、明及其 N N- -S S 图图 1. 主函数主函数: int main() Menu(); /*当前状态函数*/ void Menu() /*主界面*/ int n,w; do puts(“tt*机房机位预约系统*n“); puts(“tt*菜单*n“); 机房机位预约系统 查询机位 预定机位 退出预定 查询等待信息 C 语言课程设计 第 2 页共 17 页 puts(“ttt 1.查询某时间段机位状态“); /*查询某时间段机位状态*/ puts(“ttt 2.预定空机位“); /*预定空机位*/ puts(“ttt 3.取消预订“); /*取消预订*/ puts(“ttt 4.查询等待信
3、息“); /*查询等待信息*/ puts(“ttt 5.退出“); /*退出*/ puts(“tt*n“); printf(“选择菜单号(1-5):“); scanf(“%d“, if(n5) w=1;getchar(); else w=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 Situatio
4、n() int time; printf(“输在 (8-20)范围内的时间:“); scanf(“%d“, if(time20) C 语言课程设计 第 3 页共 17 页 printf(“t 时间输入错误!n“); printf(“输入在 (8-20)范围内的时间:“); scanf(“%d“, detail(time); /*函数调用*/ getchar(); Menu(); 3.机位预定机位预定: void Book() int time,i=0,x,y; FILE *fp; char c; printf(“在(8-20)时间范围内输入你想要预定的时间:“); scanf(“%d“, if
5、(time20) printf(“t 时间输入错误!n“); printf(“t 在(8-20)时间范围内输入你想要预定的时间:“); scanf(“%d“, detail(time); /*函数调用*/ if(sumT0) if(fp=fopen(“waitlist.txt“,“a“)=NULL) printf(“n 无法打开文件!n“); exit(0); printf(“nt 请输入你想要预定的机号,并且留下你的电话号码!:n“); C 语言课程设计 第 4 页共 17 页 scanf(“%s %s“,waiti.number,waiti.telephonenumber); for(i=0;i0) if(fp=fopen(“waitlist.txt“,“a“)=NULL) printf(“n 无法打开文件!n“); exit(0); printf(“nt 请输入你想要预定的机号,并且留下你的电话号码!:n“); scanf(“%s %s“,waiti.number,waiti.telephonenumber); for(i=0;i1;i+) fwrite( fclose(fp);/*向文本文档添加一个结构体单元*/ printf(“t 再次输入