机房机位预约模拟系统—C语言课程设计_第1页
机房机位预约模拟系统—C语言课程设计_第2页
机房机位预约模拟系统—C语言课程设计_第3页
机房机位预约模拟系统—C语言课程设计_第4页
机房机位预约模拟系统—C语言课程设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、机房机位预约模拟一题目要求20台机器,从早八点到晚八点,每两个小时一个时间段.需要实现的功能:(1) 查询,根据输入的时间,输出机位信息.(2) 机位预定,根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供最近空机时间段.另:若用户要求在非空时间上机,则将用户信息插入该时间段的等待列表.(3) 退出预定,根据输入的时间,撤消该时间的预定.(4) 查询是否有等待信息,若有则按顺序显示联系方式,若无则显示提示信息.二需求分析根据题目要求,在程序中应实现查询,机位预定,插入等待列表,退出预定,查询等待信息等功能。还应提供键盘式选择菜单实现功能选择。而等待信息放在文件里,所以在相关的模块应

2、提供文件的输入、输出操作。三总体设计根据上面的需求分析,将这个系统的设计分为下面4个模块:机房机位预约模拟系统状态查询模块预订模块取消预订模块查询等待信息模块4详细设计 1.预处理命令及函数声明#include#include#include#define n 20#define t (time-8)/2int sum6=0;int computer620=1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,

3、1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1;/*该数组表示假设某天某人查询时机房各个时间段机位数情况*/void menu(); void situation();void book();void cancel();void searchwaiting();void exit();void detail(int time);void printf_one(int i); struct waitlist

4、 char number3; char telephonenumber12; waitn;2主函数主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。其流程图如图所示:开始显示一系列功能模块根据的值调用各功能模块函数yn输入n的值1-5结束 2./*主函数*/void main()menu(); /*当前状态函数*/void menu() /*主界面*/int n,w;do puts(tt*computer book systerm*n); puts(tt*menu*n); puts(ttt 1.search the current situation

5、); /*查询某时间段机位状态*/ puts(ttt 2.book the vacant computer); /*预定空机位*/ puts(ttt 3.cancel booking); /*取消预订*/ puts(ttt 4.search waiting); /*查询等待信息*/ puts(ttt 5.exit); /*退出*/ puts(tt*n); printf(choose your number(1-5): bb); scanf(%d,&n); if(n5) w=1;getchar(); else w=0;while(w=1);switch(n)case 1:situation();

6、break;case 2:book();break; case 3:cancel();break; case 4:searchwaiting();break; case 5:exit(0);break;3.状态查询函数流程图调用detail函数返回主菜单输入1是否输入time的值8-20开始/*查询模块*/*查询当前状态*/void situation()int time;printf(input time between (8-20):);scanf(%d,&time);if(time20)printf(twrong time!n);printf(please input time betw

7、een (8-20):);scanf(%d,&time); detail(time); /*函数调用*/getchar();menu();4.预定模块函数流程图开始n执行一个循环,进入后面的时间段sumt0输入时间8-20调用detail函数,sumt的值改变输出空机位数,是否等待ny打开文本文件waitlist.txt,输入预定机位号和联系方式,追加一个结构体成员。返回主菜单程序:/*预定模块*/void book()int time,i=0,x,y;file *fp; char c; printf(input time you want to book between(8-20):); s

8、canf(%d,&time); if(time20) printf(twrong time!n); printf(tinput time you want to book between(8-20):); scanf(%d,&time); detail(time); /*函数调用*/if(sumt0) if(fp=fopen(waitlist.txt,a)=null) printf(ncannot open file!n); exit(0); printf(ntplease input the number you want to book and leave your telephonenu

9、mber!:n); scanf(%s %s,waiti.number,waiti.telephonenumber);for(i=0;i1;i+) fwrite(&waiti,sizeof(struct waitlist),1,fp); fclose(fp);/*向文本文档添加一个结构体单元*/printf(tinput the number you want to book again!n);scanf(%d,&x);sumt-; / *预定后该时间段空机位数减1*/computertx=1; / *预定后该机状态变为1*/printf(tbook succeed!n);getchar();m

10、enu();elseprintf(there is no vacant computer at that time!n);for(i=t+1;i0)printf(tthe latest free time is %d,%dn,2*i+8,2*i+10);break;printf(tdo you want to wait?:y/n?);scanf(%s,&c);getchar();if(c=y|c=y) if(fp=fopen(waitlist.txt,r)=null) printf(ncannot open file!n); exit(0); else printf(waitlist: num

11、ber telephonenumbern); for(i=0;!feof(fp);i+) fscanf(fp,%s %s,&waiti.number,&waiti.telephonenumber); fclose(fp); for(i=0;i10;i+) printf_one(i); printf(ntplease input the number you want to book and leave your telephonenumber!:n); if(fp=fopen(waitlist.txt,a)=null) printf(ncannot open file!n); exit(0);

12、 scanf(%s %s,waiti.number,waiti.telephonenumber); for(i=0;i1;i+) fwrite(&waiti,sizeof(struct waitlist),1,fp); fclose(fp); /*若等待,就用文件的方式列出当时的等待列表并提示输入你的等待序号和联系方式*/printf(input the number of the computer again!n);scanf(%d,&y);sumt-; computerty=1; printf(tok,please wait our phone!n); menu(); else menu(

13、);5,取消预订模块函数流程图调用detail函数输入机位号yn输入时间8-20开始该时间段空电脑数加1,所取消电脑号状态变为0主菜单/*取消预订模块*/void cancel()int time,number;printf(input time you have booked between(8-20):);scanf(%d,&time); if(time20) printf(twrong time!n); printf(tinput time you have booked between(8-20):); scanf(%d,&time); elseprintf(tinput number

14、 you have booked :);scanf(%d,&number);detail(time); sumt+; / *预定后该时间段空机位数加1*/computertnumber=0; / *预定后该机状态变为0*/printf(tcancel succeed!n);getchar();menu();6查询等待信息模块流程图开始输入时间8-20打开文本文件,将文本文件转化为二进制文件输出到屏幕上,显示等待信息yn返回主菜单/*查询等待信息模块*/void searchwaiting()int time,i; file *fp;printf(tinput time you want to

15、search between(8-20):);scanf(%d,&time);if(time20) 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 telephonenumbern); for(i=0;!feof(fp);i+) fscanf(fp,%s %s,&waiti.number,&waiti.telephonenumber); fclose(fp); for(i=0;i10;i+) printf_one(i);menu();7.公共函数程序void detail(int time) /*此函数功能是实现查找每个时间段空机位总数和空机位号*/ int i,j=0,k,s=0;int v30; for(i=0;i20;i+)if(computerti=0) s+; vj+=i;sumt=s;printf(tcurrent vacant computers:%dn,su

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论