1、C 语言课程设计 机房机位预约模拟机房机位预约模拟 一一.题目要求题目要求 20 台机器,从早八点到晚八点,每两个小时一个时间段. 需要实现的功能: (1) 查询,根据输入的时间,输出机位信息. (2) 机位预定,根据输入的日期和时间段查询是否有空机位,若有则预约,若无则 提供最近空机时间段.另:若用户要求在非空时间上机,则将用户信息插入该 时间段的等待列表. (3) 退出预定,根据输入的时间,撤消该时间的饿预定. (4) 查询是否有等待信息,若有则按顺序显示联系方式,若无则显示提示信息. 二二.需求分析需求分析 根据题目要求,需要提供机位信息和预约信息,应该用链表来存储,应提供指 针的操作:
2、在程序中,需要查询是否有空机位和等待者和处理预约和取消预约问题, 应提供查询,显示,预定,删除,修改等操作;另外还要提供键盘式选择菜单实现功能 选择. 三三.总体设计总体设计 现在分析整个一下整个系统,根据上面的需求分析,可以将这个系统的设计分 为如下六大模块:查询我的预约状态,查询空位,预约,取消预约,排队,查询等待信 息. 机房机位 模拟系统 我的预约 状态 查询空位 预约 取消预约 排队 查询等带 信息 1 四四.详细设计详细设计 1宏定义宏定义 #include #include #include #define LENGTH 6/*总时段数*/ #define MAX 2 #defi
3、ne S(r) (r-8)/2/*计算在哪个时段数*/ struct node int locat; char data10;/*学号,假设为联系方式*/ struct node *next; ; struct node *head; struct cell int CNum;/*连接在该时段头结点的总机器数目*/ struct node *first;/*指向整个队列的开头*/ struct node *middle;/*指向等待预约队列*/ struct node *last;/*指向整个队列的结尾*/ TimeQueueLENGTH; 2.主函数主函数 主函数一般设计的比较简洁,只提供输
4、入,处理和输出部分的函数调用.其中个功 能模块用菜单方式选择。 显示一系列功能信息 输入 n,判断 n 是否是 0-6 根据 n的值调用各功能模块函数 N Y 2 【程序】 main() /*主函数*/ int i; for(i=0;idata,来判断我的 预约状态。 3 流程图 【程序】 void Inquir() int n; int i; char Infor10; struct node *q; struct node *Rem; printf(“Please input the time you want to search!(24 xiao shi zhi between8 and
5、 20 oclock,include 8oclock)n“); scanf(“%d“, if(n=8 if(Rem-locat!=0) printf(“The computer number you have during this period period is %dn“,Rem-locat); 输入要查询的时间 n,判断 n是否 820 n=s(n) 根据的 n 值和输入的学号来查找链表中是否 有该值和其的位置, 从而达到查询出我的状态 的目的 Y 提示:输入错误,请重新输入 N 4 else printf(“Sorry,you are still in the waiting queu
6、e!“); else printf(“Error.Please input again.n“) (2)(2)查询空机位模块查询空机位模块 分析分析 根据输入的时间确定 n 值,然后根据结构体中 TimeQueue 中的 TimeQueuen-Cnum 的值,求出最大值与该值的差即为空机位数。 流程图 【程序】 void inquir() int n; printf(“Please input the time you want to search.(24 hours 824 oclock,include 8 clock)n“); scanf(“%d“, 输入要查询的时间n判断n是否820 ns(n) 根据 n 的值判断 TimeQueuen-Cnum 的值 是否小于最大值 MAX 输出:没有空 机位 空机位数=MAX TimeQueuen CNum N Y Y 提示:输入错误,请重新输入 N 5 i