c语言课程设计--机房机位预定系统-绝对正确-附源代码解析 联系客服

发布时间 : 星期六 文章c语言课程设计--机房机位预定系统-绝对正确-附源代码解析更新完毕开始阅读

1 设计目的

机房机位预定系统

2 任务概述

20台机器,编号1到20,从早八点到晚八点。两小时一个时间段,每次可预定一个时间段。功能要求:

(1)系统以菜单方式工作

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

(3)机位预定,根据输入的时间查询是否有空机位,若有则预约,若无则提供最近的时间段,另:若用户在非空时间上机,则将用户信息列入等待列表。

(4)退出预定,根据输入的时间,机器号撤销该事件的预定!

(5)查询是否有等待信息,若有则提供最优解决方案(等待时间尽量短),若无则显示提示信息。

.........

3 模块划分

机房机位预约系统 查询机位 预定机位 退出预定 查询等待信息

4 主要函数说明及其N-S图

1. 主函数:

int main()

{ Menu(); /*当前状态函数*/ }

void Menu() /*主界面*/ { int n,w; do { puts(\机房机位预约系统*******************\\n\ puts(\菜单***************************\\n\ puts(\查询某时间段机位状态\ /*查询某时间段机位状态*/ puts(\预定空机位\ /*预定空机位*/ puts(\取消预订\ /*取消预订*/ puts(\查询等待信息\ /*查询等待信息*/ puts(\退出\ /*退出*/ puts(\ printf(\选择菜单号(1-5):\ scanf(\ if(n<1||n>5) {w=1;getchar();} else w=0; }while(w==1); switch(n) { case 1:Situation();break;

}

case 2:Book();break; case 3:Cancel();break;

case 4:SearchWaiting();break; case 5:exit(0);break; }

getch();

2.机位查询:

void Situation() { int time; printf(\输在 (8-20)范围内的时间:\ scanf(\ if(time<8||time>20) {printf(\时间输入错误!\\n\ printf(\输入在 (8-20)范围内的时间:\ scanf(\ } detail(time); /*函数调用*/ getchar(); Menu();}

3.机位预定:

void Book() {int time,i=0,x,y;

FILE *fp; char c;

printf(\在(8-20)时间范围内输入你想要预定的时间:\ scanf(\ if(time<8||time>20)

{ printf(\时间输入错误!\\n\ printf(\在(8-20)时间范围内输入你想要预定的时间:\ scanf(\ }

detail(time); /*函数调用*/ if(sum[T]>0)

{ if((fp=fopen(\ { printf(\无法打开文件!\\n\ exit(0); } printf(\请输入你想要预定的机号,并且留下你的电话号码!:\\n\ scanf(\ for(i=0;i<1;i++) fwrite(&wait[i],sizeof(struct waitlist),1,fp); fclose(fp);/*向文本文档添加一个结构体单元*/ printf(\再次输入你想要预定的时间!\\n\ scanf(\ /*sum[T]--; / *预定后该时间段空机位数减1*/ /*computer[T][x]=1; / *预定后该机状态变为1*/ printf(\预订成功!\\n\ getchar(); Menu(); } else { printf(\这是在这个时间段内未预定的电脑!\\n\ for(i=T+1;i<6;i++) { time=9+2*i; detail(time); /*函数调用*/ if(sum[T]>0) printf(\ } printf(\你想要预定吗?:y/n?\ scanf(\ getchar(); if(c=='Y'||c=='y') { if((fp=fopen(\ {

printf(\无法打开文件!\\n\ exit(0); } else { printf(\: number telephonenumber\\n\ for(i=0;!feof(fp);i++) { fscanf(fp,\ }

fclose(fp); } for(i=0;i<10;i++) { prione(i);}

printf(\请输入你想要预定的机号,并且留下你的电话号码!:\\n\ if((fp=fopen(\ { printf(\无法打开文件!\\n\ exit(0); }

scanf(\ for(i=0;i<1;i++) fwrite(&wait[i],sizeof(struct waitlist),1,fp); fclose(fp); /*若等待,就用文件的方式列出当时的等待列表并提示输入你的等待序号和联系方式*/

printf(\再次输入电脑的序号!\\n\ scanf(\ sum[T]--; computer[T][y]=1; printf(\好了,请等待我们的电话!\\n\ Menu(); }

else Menu(); } }

N 4.取消预定:

void Cancel() { int time,number; printf(\在(8-20)时间范围内输入你已经预定的时间:\ scanf(\ if(time<8||time>20) { printf(\输入时间错误!\\n\ printf(\在(8-20)时间范围内输入你已经预定的时间:\ scanf(\ } else {printf(\输入你预定的机号 :\ scanf(\ detail(time);

/* sum[T]++; / *预定后该时间段空机位数加1*/ /*computer[T][number]=0; / *预定后该机状态变为0*/ printf(\取消成功!\\n\ getchar(); Menu(); }