课程设计机房机位预约Word下载.docx
《课程设计机房机位预约Word下载.docx》由会员分享,可在线阅读,更多相关《课程设计机房机位预约Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
若用户要求在非空时间上机,则将用户信息输入该时间段的等待列表。
(3)退出预定,根据输入的时间,撤销该时间的预订。
(4)查询是否有等待信息,若有则按顺序显示联系方式,若无则显示提示信息。
一.需求分析
根据题目要求,程序应该提供“日期时间,用户信息”的输入、输出操作;
在程序中需要浏览机位信息和用户等待信息,应提供显示、查找、排序等功能;
通过文件的删除操作删除撤销的时间预定;
提供文件的添加操作来增加新的用户预约信息;
另外还需要提供键盘式选择菜单以实现功能选择。
二.总体设计
根据以上的需求分析,可以将这个系统的设计分为以下模块:
三.详细设计
1.定义
#include<
stdio.h>
#include<
stdlib.h>
conio.h>
string.h>
#defineSIZE20
voidDisplay();
voidSearch();
voidBook();
voidQuit();
voidWait();
voidSearchWait();
voidExit();
/*定义的一些相关的函数:
查询,预约,退订,查询等待,退出*/
intcomputernum[12]={20,18,0,15,10,8,12,4,10,1,1,0};
/*自己定义的每个时间段剩下的电脑数*/
structwaitlist
{
charnumber[3];
charphonenumber[12];
}wait[SIZE];
/*一个结构体,等待的序号和联系方式,共20台电脑的,只定义了20个等待的列表*/
2.主函数及主界面
主函数提供输入,处理和输出部分的函数调用.其功能模块用菜单方式选择。
流程图:
main()
{
Display();
}
voidDisplay()/*一个总的函数,用case分别引出各个函数*/
intc;
printf("
\n\n\n\n"
);
\t\t\t\t机房机位预约\n"
\n"
\t选择:
\n"
\n\n"
\t1:
查询\n"
\t---------------------------------------------\n"
\t2:
预定\n"
\t3:
退出预定\n"
\t4:
查询等待信息\n"
\t0:
退出\n"
\t请输入你的选择(1/2/3/4/0):
scanf("
\t%d"
&
c);
switch(c)
{
case1:
Search();
break;
case2:
Book();
case3:
Quit();
case4:
SearchWait();
case0:
Exit();
default:
\n\t\t警告:
选择错误!
}
}
3..各功能模块的设计
(1)查询模块
通过输入者的数据以及本身存入的数据进行判断。
输入要查询的时间n,判断n是否属于8-20
Y
N
根据n值查询剩余机位数量
警告:
输入的时间有误
程序如下:
voidSearch()/*查询函数,通过输出的时间查出剩下的电脑数。
同时可以连续查询*/
inttime;
charc;
\t======================================================\n"
\t\t\t\t查询\n"
\t=======================================================\n"
\t请输入你要查询的时间(8-20,包括8:
00):
"
%d"
time);
while(time<
8||time>
19)
\t警告:
输入的时间错误!
\t请再次输入(8-20,include8:
\t还剩下机位数量:
%d\n"
computernum[time-8]);
\t是否继续查询?
Y/N"
c=getche();
if(c=='
Y'
||c=='
y'
)
else
(2)预定模块
根据输入者的数据和已有数据进行判断,如有空机位,则显示成功预定;
如无空机位,则显示出所有排队者的数据并存入当前预约者的数据中。
流程图
程序如下
voidBook()/*预约函数*/
inttime,i;
FILE*fp;
=======================================\n"
\t\t\t\t预定\n"
\t=====================================\n"
\t请输入你要预定的时间(8-20,包括8:
\t请再次输入(8-20,包括8:
if(Cnum[time-8]>
0)
Cnum[time-8]--;
\t预定成功!
/*当电脑数不为0的时候,预约成功*/
All();
\t当前没有剩余机位!
for(i=(time-8)+1;
i<
12;
i++)
if(Cnum[i]>
\t最近空机时间段:
%d-%d\n"
(i+9)/2*2,(i+11)/2*2);
\n\t是否等待?
Y/N\n"
/*电脑数为0的时候选择是否等待*/
{
if((fp=fopen("
waitlist.txt"
"
r"
))==NULL)
{
\n文件无法打开!
exit(0);
}
for(i=0;
!
feof(fp);
i++)
fread(&
wait[i],sizeof(structwaitlist),1,fp);
等待列表如下:
序号联系方式\n"
10;
\t\t%s%s\n"
wait[i].number,wait[i].phonenumber);
fclose(fp);
\n\t请留下你的序号(上列表的下一号)和联系方式(手机11位):
if((fp=fopen("
a"
printf("
exit(0);
}/*若等待,就用文件的方式列出当时的等待列表并提示输入你的等待序号和联系方式*/
1;
%s%s"
fwrite(&
\t操作成功,请等待我们的通知!
}
elseAll();
(3)退出预定模块
根据预约者输入的预约时间和已预约的信息来判断是否预约成功。
voidQuit()/*退出预约函数*/
\t\t\t\t退出预定\n"
\t====================================\n"
\t请输入你已经预定的时间(8-20,包括8:
Cnum[time-8]++;
\t退出预定成功!
(4)查询等待信息模块
用户在该模块可根据输入的时间来查询排队信息。
voidSearchWait()/*查询等待列表函数*/
inti;
printf(“\t===================================\n"
\t\t\t\t查询等待信息\n"
\t==================================\n"
\t请输入你要查询的等待时间(8-20,包括8:
/*根据输入的时间用文件的方式列出等待的列表*/
(5)退出模块
voidExit()/*退出菜单函数*/
\t*****************************************\n"
\n\n\t\t\t欢迎下次再来!
\t\tSeeyounexttime!
\t******************************************\n"
4..上机操作
(1)主界面如下:
(2)输入1,进入查询界面:
(3)输入N,返回主界面。
再输入2,进入预定界面:
提示是否等待,若输入Y,则出现等待列表:
提示留下序列号及联系方式,用户输入信息后完成预定
(4)返回主界面,输入3,进入退出预定模块:
或
(5)返回主界面,输入4,进入查询等待信息界面:
(6)输入0,结束程序。
5..总结
通过该实例的学习,我重新温习了C语言的知识,加深了对书上知识的认识与理解,系统地运用已学的知识,扩大了C语言方面的视野。
此次实践让我进一步理解了运用结构化程序设计的思想和方法,初步掌握了开发一个小型实用系统的基本方法,不仅摸索出了调试一个较长程序的的基本方法,而且学会了利用流程图表示算法,进一步掌握和提高了利用C语言进行程序设计的能力。
相信通过此次C语言课程设计所学的知识,在以后我能够在实际生活中解决所遇到的问题。
不仅如此,这次实践,是我认识到学好计算机要重视实践操作,书上的知识弄懂了,不代表会利用计算机运行程序。
纸上得来终觉浅,绝知此事要躬行!
!