机房机位预约模拟
更新时间:2023-12-22 15:46: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);
正在阅读:
机房机位预约模拟12-22
机械原理答案 - 图文01-08
新视野大学英语视听说第4册答案全09-06
作业纸也会跑作文500字06-30
基于PLC的起重机控制系统设计05-12
设计符号的意谓表达_陈卫民07-25
晋职改办201013号11-28
最珍贵的礼物小学生三年级作文06-12
你对人们追求时尚有何看法03-29
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 机位
- 预约
- 机房
- 模拟
- 天大建筑学院对调整修订重要期刊目录2013-5
- 实验九 利用WireShark观察TCP与UDP包
- 学前儿童想象力培养方式
- 操作系统 上海第二工业大学 二工大 期末考试 试卷4
- “勾股定理逆定理”课堂教学心得
- 关于进一步规范班组长管理的通知
- 2011学年第二学期基础性学力检测样卷
- 体育及体育与健康试卷
- 大学运动会开幕词
- 第一次模拟试题FCH2 - 图文
- 西安建筑科技大学学生证补发和换发申请表
- 科室质量安全管理持续改进记录
- 计算机等级考试二级C语言超级经典400道题目
- 2010年银行消防安全工作总结
- 2017-2023年中国人体温度计行业市场发展深度调查及投资战略可行性报告(目录)
- 电大政府公共关系网上考试3满分答案
- 中班综合教案:火柴棒拼小人
- 2013C#习题集
- 医学遗传学选择题(附答案).doc
- 河北省2014年中考英语词汇表