1、 程序设计报告程序设计报告 C 语言程序设计 编程 实 践是 学 习 C 语 言 程序 设 计的 一 重要 环 节 , 为 提 高学 生 程序 设 计能 力, 通 过课 堂 和 上 机实 践 练 习 使学 生 的 程序 设 计 能 力上 一 台 阶 。通 过 前 四 单元 温 顾 而知 新 、 庖 丁解 牛 、 举 一反 三 、 熟能 生 巧 等 过程 的 练 习 设计 下 面 一 个完 整 的程序 1. 题目要求题目要求 设计“机房机位预约模拟系统机房机位预约模拟系统” 要求:20 台机器,从早 8 点到晚 8 点,每两个小时一个时间段。 需要实现功能: 1,查询,根据输入时间,输出机位信息
2、。 2,即为预定,根据输入的日期和时间段查询是否有空机位,若有则预约,若无 则提供最近空机时间段。另:若用户要求在非空时间上机,则将用户信息插入该 时间段的等待列表. 3,退出预定,根据输入的时间,撤销该时间的预定。 4,查询是否有等待的信息,若有则按顺序显示联系方式,若无则显示提示信息。 2 需求分析 根据题目要求在程序中需实现查询,预定,排队等功能的操作,所以 需要建立相应的模块来实现 ;另外还需提供键盘 式选择菜单实现功 能,在运行时达到所要目的。 3 总体设计 整个系统可分为 3 个模块 查询模块 预定模块 取消模块 机房机位预约模拟机房机位预约模拟 系统系统 查询模块 预定模块 取消
3、模块 详细设计 主函数比较简洁,只提供输入、功能处理和输出部分的函数调 用。 main() int i; for(i=0;i=8Rem=Rem-next) if(strcmp(Rem-data,Infor)=0)break; if(Rem-locat!=0) printf(“The computer number is %dn“,Rem-locat); else printf(“对不起.你依旧在等待列表中或者没有预定“); else printf(“错误,请再次输入.n“); void inquir() int n; printf(“输入想要查询的时间(24 hours 820oclock,i
4、nclude 8 oclock)n“); scanf(“%d“, if(n=8 if(TimeQueuen.CNum=8 if(TimeQueuen.CNumlocat=1; strcpy(Rem-data,Infor); Rem-next=NULL; TimeQueuen.first=Rem; TimeQueuen.last=Rem; TimeQueuen.CNum+; printf(“成功预定n“); else Rem=(struct node *)malloc(sizeof(struct node); strcpy(Rem-data,Infor); 开始 输入预定时间 判 断 时 间 属
5、 于 820 oclock 与空机位 输入学号预定成功,排 队成功 结束 N 选择排队 Rem-next=NULL; p=TimeQueuen.last; Rem-locat=TimeQueuen.CNum+1; printf(“%d“,Rem-locat); TimeQueuen.last=Rem; p-next=Rem; TimeQueuen.CNum+; printf(“成功预定n“); else printf(“没有空余机位!“); else printf(“错误.请再次输入.n“); void waiting() int n; char Infor10; struct node *R
6、em; struct node *p; printf(“请输入想要排队的时间n“); scanf(“%d“, if(n=8 scanf(“%s“,Infor); if(TimeQueuen.CNum)=MAX) Rem=(struct node *)malloc(sizeof(struct node); strcpy(Rem-data,Infor); Rem-next=NULL; Rem-locat=0; p=TimeQueuen.last; TimeQueuen.last=Rem; p-next=Rem; TimeQueuen.middle=Rem; TimeQueuen.CNum+; printf(“成功排队n“); else Rem=(struct node *)malloc(size