C语言机房机位预约系统课设(附源码).docx
- 文档编号:101721
- 上传时间:2022-10-03
- 格式:DOCX
- 页数:18
- 大小:477.33KB
C语言机房机位预约系统课设(附源码).docx
《C语言机房机位预约系统课设(附源码).docx》由会员分享,可在线阅读,更多相关《C语言机房机位预约系统课设(附源码).docx(18页珍藏版)》请在冰豆网上搜索。
C语言机房机位预约系统课设
项目说明
本系统基于C语言开发,适用于刚入门的C语言新手项目课设,
开发软件采用VC++6.0开发,VS,DEVC+等+均可运行。
(书生)
项目运行截图
代码界面截图
完整源码
#include
#include
#include
#include
inttimeone();
/*机位、顾客信息结构体*/
typedefstructPCInfo
{
intState[6]; //机位状态,2小时为一个时间段,8时到20
时共6个时间段,0表示有空位,1表示无空位
charname[20]; //各时间段运行顾客
charsex[30];
chartel[20];
intyear;
intmonth;
intday;
intstart_Time;
intend_Time;
}PCInfo;
PCInfoinfo[100][100]; //存放100天,20台机位信息
intMonth[]={0,31,28,31,30,31,30,31,31,30,31,30,31};/*数组定义每月天数*/
intdate[12][31]; /*定义
日期和机位信息数组*/
/******************************空白函数模块
voids_line(intn) /*空行*/
{
inti;
for(i=1;i<=n;i++)printf("\n");
}
voidspace(intn) /*空白*/
{
inti;
for(i=1;i<=n;i++)
{
printf("");
}}
/******************************清空机位信息模块
voidEmpty()
{
inti,j,k,a;
for(i=0;i<=20;i++) /*此循环作用是将0赋给机位状态*/
{
for(a=0;a<=20;a++)
{
for(j=0;j<=6;j++)
{
info[i][a].State[j]=0;
}
}
}
for(j=0;j<=12;j++) /*此循环作用是将0赋给日期*/
{
for(k=0;k<=31;k++)
{
date[j][k]=0;
}
}
}
/******************************查询机位信息模块
voidQuery()
{
intyear,month,day,start_Time,end_Time,time,a=1;
intn=0;
inti;
while
(1)
{
printf("\t\t ********************此处你可以输入时间来查看20个
计算机的机位信息********************\n\n");
printf("\t\t\t\t 请输入您想要查询的日期时间:
(例如:
2016/7/22/8-10表示) \n\n");
scanf("%d/%d/%d/%d-%d",&year,&month,&day,&start_Time,&end_Time);/*输入查询时间*/
if((start_Time-8)/2>=0&&(start_Time-8)/2<=6)
{
time=(start_Time-8)/2;
}
else
{
printf("输入时间段错误!
\n");
system("pause");
return;
}
if(month<1||month>12||day<0||day>Month[month])
/*如果输入时间不对就回出错,显示出错信息并且给出提示*/
{
printf("输入错误!
\n");
printf("请选择输入指令:
1.重新输入2.返回菜单\n");
scanf("%d",&n);
if(n==2){break;}
if(n==1){break;}
}
elsebreak;//未出错则跳出循环,继续执行后面程序
}
if(n==2)return;
printf("当前您要查询第几次预约的机位信息?
(相同日期视为一次)\n\n");
scanf("%d",&a);
for(i=1;i<=20;i++) /*此循环的作用是判
断是否有空的机位*/
{
if(date[month][day]==1&&info[i][a].State[time]==1)
printf("\t\t\t\t 第%d号计算机在这段时间已经被预定.
\n\n",i);
else
printf("\t\t\t\t第%d号计算机在这段时间内没有被预定.\n\n",i);
}
system("pause"); /*系统暂停,按任意
键继续*/}
/******************************机位预定模块
voidbook_computer() /*此函数的作用是预
定机位*/
{
intyear,month,day,start_Time,end_Time,time;
intb=0,m=0;
intn=0,i=0,j,k,s,t;
while
(1)
{
printf("\t\t********************此处你可以输入(年/月/日/XX-XX时间段)来查看是否有空位计算机********************\n\n");
printf("\t\t如果有空闲机位将会自动预约,如果无空位,您可以选择最近时间段空位计算机进行预约!
\n\n");
printf("\t\t\t\t 请输入您想要预约的日期时间:
(例如:
2016/7/22/8-10
表示) \n");
scanf("%d/%d/%d/%d-%d",&year,&month,&day,&start_Time,&end_Time);/*输入查询时间*/
if((start_Time-8)/2>=0&&(start_Time-8)/2<=6)
{
time=(start_Time-8)/2;
}else
{
printf("输入时间段错误!
\n");
}
if(month<1||month>12||day<0||day>Month[month])/*检验查询时间是否出错,并给出提示信息*/
{
printf("输入错误!
\n");
printf("请选择输入指令:
1.重新输入2.返回菜单\n");scanf("%d",&n);
if(n==2)break;
}
elsebreak;//未出错则跳出循环,继续执行后面程序
}
if(n==2)return;
inta=0;
s=timeone();//该函数负责将不同时间段信息放置在二维数组结构体的不同列
printf("请选择预约模式:
\n");
printf("1.按顺序预约 2.选择编号预约\n");
scanf("%d",&a);
if(a==1) //顺序预约模块
{
for(i=1;i<=20;i++)
{
if(date[month][day]==0||info[i][s].State[time]==0)
{
date[month][day]=1;
info[i][s].State[time]=1;
printf("\t\t ================第==%d号计算机已经成功预
约!
==================\n",i);
printf("\t\t ===============您=可以在预约的时间段内使用
计算机!
=============\n\n");
printf("\t\t本次为机位预约模拟系统第%d次预约(不同时期).请留意次数.\n",s);
system("pause");
return;//有一个符合条件的计算机,则return跳出该函数
}
}
printf("您查询的时间段内无空闲机位!
\n\n");
printf("是否仍在非空闲时间段内使用电脑:
\n\n");
printf("1.是(加入等待队列)\n");
printf("2.否(查找临近的空位计算机)\n");
scanf("%d",&n);
if(n==1) /*如果加入等待列表,就输入相关的姓
名,性别,电话和机位号*/
{
printf("请输入您想要等待的机位号:
:
\n\n");
scanf("%d",&m);
printf("请输入您的姓名:
\n\n");
scanf("%s",info[m][s].name,20);
printf("请输入您的性别:
(男或女)\n\n");
scanf("%s",info[m][s].sex,30);
printf("请输入您的电话号码:
\n\n");
scanf("%s",info[m][s].tel,20);
info[m][s].year=year;
info[m][s].month=month;
info[m][s].day=day;
info[m][s].start_Time=start_Time;
info[m][s].end_Time=end_Time;
printf("您已经成功加入等待队列 \n");
system("pause");
return;
}
/*通过四层嵌套循环寻找顺次向后推时间段内空机位信息*/
for(i=month;i<=12;i++) //月份
{
for(j=day;j<=Month[i];j++)//日期
{
for(k=1;k<=6;k++) //0-6时间段
{
for(m=1;m<20;m++) //1-20号机器
{
if(date[i][j]==0||info[m][s].State[time]==0)
{
printf("你可以预约到的最近时间段的计算机:
第%d
号计算机%d年%d月%d日%d时-%d时\n",s,year,i,j,(2*k+6),(2*k+8));
printf("1.预约第%d号计算机的该段时间\n",s);
printf("2.不预约并退出\n");
printf("请输入1&2进行选择:
\n");
scanf("%d",&n);
if(n==1)
{
printf("\t\t ================第==%d号计
算机已经成功预约!
==================\n",m);
printf("\t\t ===============您=可以在预约
的时间段内使用计算机!
=========
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 机房 机位 预约 系统 源码
![提示](https://static.bdocx.com/images/bang_tan.gif)