机房机位预约模拟
更新时间:2023-03-10 01:06:01 阅读量: 综合文库 文档下载
一、题目要求
(1)查询。根据输入时间输出机位信息。
(2)机位预定。根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供最近时间段。另外,若用户要求在非空时间段上机,俄将用户信息插入该时间段的等待时间列表。
(3)退出预定。根据输入的时间撤出该时间的预订。
(4)查询是否有等待信息。若有则按提示现实联系方式,若无则显示提示信息。
二、设计思路
首先需要定义结构体数组存放等待人员,并且用文件来保存这些数据。纵观整个程序,我用四个分函数来实现各个模块的功能,在主函数中刻画一个分区模块,进入各个分区功能模块。
三、程序设计
首先写出一些函数头文件、自定义的宏定义、全局变量和定义一个结构体数组:
#include
#include
int computernum[12]={20,18,0,15,10,8,0,4,0,1,0,0}; struct waitlist
{
char number[3];
char phonenumber[12];
}wait[SIZE];
然后开始建立函数模块,如下:
1、主函数
主函数提供了一个菜单界面,操作人员可根据界面的提示来操作以选择菜单中功能。
主函数一般设计的比较简洁,只提供输入、处理和输出部分的函数调用。 【主函数程序】 main() {
Display();
}
void Display() /*一个总的函数,用case分别引出各个函数*/ {
int c;
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\ scanf(\ printf(\ switch(c) {
case 1: Search(); break; case 2: Book(); break;
case 3: Quit(); break;
case 4: SearchWait(); break; case 0: Exit(); break;
default: printf(\警告:选择错误!\\n\ Display(); } }
2、查询系统
当输入时间在8点到20点之间才符合条件,并定义剩余电脑数量为时间减去八。 程序如下 void Search() /*查询函数,通过输出的时间查出剩下的电脑数。同时可以连续查询*/ {
int time; char c;
printf(\ printf(\查询 \\n\
printf(\ printf(\请输入你要查询的时间(8-20,包括8:00):\ scanf(\
while(time<8||time>19) {
printf(\警告:输入的时间错误!\\n\
printf(\请再次输入(8-20,include8:00):\
scanf(\ }
printf(\还剩下机位数量: %d\\n\ printf(\是否继续查询? Y/N \ c=getche(); printf(\ if(c=='Y'||c=='y') Search(); else Display(); }:
3、机位预订系统
如果时间减去8大于0,则预定成功。 程序如下: oid Book() /*预约函数*/ {
int time,i; FILE *fp; char c;
printf(\ printf(\预定 \\n\ printf(\ printf(\请输入你要预定的时间(8-20,包括8:00):\ scanf(\
while(time<8||time>19) {
printf(\警告:输入的时间错误!\\n\ printf(\请再次输入(8-20,包括8:00):\ scanf(\ }
if(computernum[time-8]>0) {
computernum[time-8]--;
printf(\预定成功!\\n\当电脑数不为0的时候,预约成功*/ Display(); } else
{
printf(\当前没有剩余机位!\\n\ for(i=(time-8)+1;i<12;i++)
if(computernum[i]>0)
printf(\最近空机时间段: %d-%d\\n\2*2);
printf(\是否等待? Y/N \\n\电脑数为0的时候选择是否等待*/ c=getche();
if(c=='Y'||c=='y')
{ if((fp=fopen(\ {
printf(\文件无法打开!\\n\ exit(0);
}
for(i=0;!feof(fp);i++)
fread(&wait[i],sizeof(struct waitlist),1,fp);
printf(\等待列表如下: 序号 联系方式\\n\
for(i=0;i<10;i++)
printf(\
printf(\ fclose(fp);
printf(\请留下你的序号(上列表的下一号)和联系方式(手机11位):\\n\ if((fp=fopen(\ {
printf(\文件无法打开!\\n\ exit(0); }/*若等待,就用文件的方式列出当时的等待列表并提示输入你的等待序号和联系方式*/
for(i=0;i<1;i++)
scanf(\ for(i=0;i<1;i++)
fwrite(&wait[i],sizeof(struct waitlist),1,fp); fclose(fp);
printf(\操作成功,请等待我们的通知!\ Display(); }
else Display(); } }
4、退出预定
程序如下:
void Quit() /*退出预约函数*/ {
int time;
printf(\ printf(\退出预定 \\n\
printf(\ printf(\请输入你已经预定的时间(8-20,包括8:00):\ scanf(\
while(time<8||time>19) {
printf(\警告:输入的时间错误!\\n\ printf(\请再次输入(8-20,包括8:00):\ scanf(\ }
computernum[time-8]++; printf(\退出预定成功!\\n\ Display(); }
5、查询是否有等待信息
首先我在文件里存放了一些等待信息,当输入时间,调用文件直接查看。 程序如下:
void SearchWait() /*查询等待列表函数*/ {
int time; FILE *fp;
int i;
printf(\ printf(\查询等待信息 \\n\
printf(\ printf(\请输入你要查询的等待时间(8-20,包括8:00):\ scanf(\
while(time<8||time>19)
{
printf(\警告:输入的时间错误!\\n\ printf(\请再次输入(8-20,包括8:00):\ scanf(\
}
if((fp=fopen(\ {
printf(\文件无法打开!\\n\ exit(0);
}
for(i=0;!feof(fp);i++)
fread(&wait[i],sizeof(struct waitlist),1,fp);
printf(\等待列表如下: 序号 联系方式\\n\ for(i=0;i<10;i++)
printf(\ fclose(fp);/*根据输入的时间用文件的方式列出等待的列表*/ }
6、退出系统
程序如下:
} oid Exit() /*退出菜单函数*/
{
printf(\ printf(\欢迎下次再来!\\n\ printf(\ See you next time!\\n\\n\
printf(\ exit(0); }
7、文件
文件名:waitlist
01 13419696181 02 13645858585 03 13416969685 04 15864758234 05 13258696547
四、源程序:
#include
void Display(); void Search(); void Book(); void Quit(); void Wait(); void SearchWait();
void Exit(); /*定义的一些相关的函数:查询,预约,退订,查询等待,退出*/
int computernum[12]={20,18,0,15,10,8,0,4,0,1,0,0};/*自己定义的每个时间段剩下的电脑数*/ struct waitlist {
char number[3]; char phonenumber[12];
}wait[SIZE];/*一个结构体,等待的序号和联系方式,共20台电脑的,只定义了20个等待的列表*/
main() {
Display(); }
void Display() /*一个总的函数,用case分别引出各个函数*/ { int c;
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\ scanf(\ printf(\ switch(c) {
case 1: Search(); break; case 2: Book(); break; case 3: Quit(); break; case 4: SearchWait(); break; case 0: Exit(); break;
default: printf(\警告:选择错误!\\n\ Display(); } }
void Search() /*查询函数,通过输出的时间查出剩下的电脑数。同时可以连续查询*/ {
int time; char c;
printf(\ printf(\查询 \\n\
printf(\ printf(\请输入你要查询的时间(8-20,包括8:00):\
scanf(\ while(time<8||time>19) {
printf(\警告:输入的时间错误!\\n\ printf(\请再次输入(8-20,include8:00):\ scanf(\ }
printf(\还剩下机位数量: %d\\n\ printf(\是否继续查询? Y/N \ c=getche(); printf(\ if(c=='Y'||c=='y') Search(); else Display(); }
void Book() /*预约函数*/ {
int time,i; FILE *fp; char c;
printf(\ printf(\预定 \\n\
printf(\ printf(\请输入你要预定的时间(8-20,包括8:00):\ scanf(\ while(time<8||time>19) {
printf(\警告:输入的时间错误!\\n\ printf(\请再次输入(8-20,包括8:00):\ scanf(\ }
if(computernum[time-8]>0) {
computernum[time-8]--;
printf(\预定成功!\\n\当电脑数不为0的时候,预约成功*/ Display(); } else {
printf(\当前没有剩余机位!\\n\ for(i=(time-8)+1;i<12;i++) if(computernum[i]>0)
printf(\最近空机时间段: %d-%d\\n\
printf(\是否等待? Y/N \\n\电脑数为0的时候选择是否等待*/ c=getche(); if(c=='Y'||c=='y') {
if((fp=fopen(\ {
printf(\文件无法打开!\\n\ exit(0);
}
for(i=0;!feof(fp);i++)
fread(&wait[i],sizeof(struct waitlist),1,fp); printf(\等待列表如下: 序号 联系方式\\n\ for(i=0;i<10;i++)
printf(\ printf(\ fclose(fp);
printf(\请留下你的序号(上列表的下一号)和联系方式(手机11位):\\n\ if((fp=fopen(\
{
printf(\文件无法打开!\\n\ exit(0);
}/*若等待,就用文件的方式列出当时的等待列表并提示输入你的等待序号和联系方式*/
for(i=0;i<1;i++)
scanf(\ for(i=0;i<1;i++)
fwrite(&wait[i],sizeof(struct waitlist),1,fp); fclose(fp);
printf(\操作成功,请等待我们的通知!\ Display(); }
else Display(); } }
void Quit() /*退出预约函数*/ {
int time;
printf(\ printf(\退出预定 \\n\
printf(\ printf(\请输入你已经预定的时间(8-20,包括8:00):\ scanf(\ while(time<8||time>19)
{
printf(\警告:输入的时间错误!\\n\ printf(\请再次输入(8-20,包括8:00):\ scanf(\ }
computernum[time-8]++; printf(\退出预定成功!\\n\ Display(); }
void SearchWait() /*查询等待列表函数*/ {
int time; FILE *fp; int i;
printf(\ printf(\查询等待信息 \\n\
printf(\ printf(\请输入你要查询的等待时间(8-20,包括8:00):\ scanf(\ while(time<8||time>19) {
printf(\警告:输入的时间错误!\\n\ printf(\请再次输入(8-20,包括8:00):\ scanf(\ }
if((fp=fopen(\ {
printf(\文件无法打开!\\n\ exit(0); }
for(i=0;!feof(fp);i++)
fread(&wait[i],sizeof(struct waitlist),1,fp); printf(\等待列表如下: 序号 联系方式\\n\ for(i=0;i<10;i++)
printf(\ fclose(fp);/*根据输入的时间用文件的方式列出等待的列表*/ }
void Exit() /*退出菜单函数*/ {
printf(\ printf(\欢迎下次再来!\\n\ printf(\ See you next time!\\n\\n\
printf(\ exit(0);
正在阅读:
机房机位预约模拟03-10
我与书的傻事作文600字06-26
劳动定额 - 图文12-26
致我们终将逝去的青春作文600字07-16
安全风险研判报告 - 图文04-09
对中国PTN技术要求及其关键问题的思考(张海懿、李芳)06-07
2019年七年级生物上册 第2讲 生物与环境的关系讲义 苏教版 - 图03-16
抗日战争时期的音乐作品(1)12-05
风筝与线作文800字07-10
懂文明、讲礼仪行为习惯养成教育活动总结01-18
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 机位
- 预约
- 机房
- 模拟
- 市电业局检修公司输电运检班班长工作标准
- 《内科护理学》课程作业(1)
- 基于MATLAB的GUI设计
- “文明考风,诚信考试”
- Workbench 荷载、约束、接触定义(总结版)
- 安置点工程建筑规划设计方案
- 2014重庆下半年公务员考试行测解题技巧大总结
- 提高精子活力的药物!精子活力差吃什么好?
- 七年级英语听力录音
- 2015年山东省公务员考试行测真题及答案 - 图文
- 曾国藩诫子书
- 2017-2023年中国人体温度计行业市场发展深度调查及投资战略可行
- 法学基础知识#任务02 - 0002
- 操作系统 上海第二工业大学 二工大 期末考试 试卷4
- 关于进一步规范班组长管理的通知
- 大学计算机-操作系统原理期末考模拟题(答案)
- 体育及体育与健康试卷
- 社团指导老师聘任大会主持词
- 部编版二年级语文下册《快乐读书吧》
- 重要 2013年考试说明“调整”内容及解读