机房机位预约模拟

更新时间:2023-12-22 15:46:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、题目要求

(1)查询。根据输入时间输出机位信息。

(2)机位预定。根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供最近时间段。另外,若用户要求在非空时间段上机,俄将用户信息插入该时间段的等待时间列表。

(3)退出预定。根据输入的时间撤出该时间的预订。

(4)查询是否有等待信息。若有则按提示现实联系方式,若无则显示提示信息。

二、设计思路

首先需要定义结构体数组存放等待人员,并且用文件来保存这些数据。纵观整个程序,我用四个分函数来实现各个模块的功能,在主函数中刻画一个分区模块,进入各个分区功能模块。

三、程序设计

首先写出一些函数头文件、自定义的宏定义、全局变量和定义一个结构体数组:

#include

#include #include #include #define SIZE 20

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 #include #include #include #define SIZE 20

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);

本文来源:https://www.bwwdw.com/article/ivp5.html

Top