189 8069 5689

C语言课设——机房机位预定系统-创新互联

文章目录
    • 一、系统简介
    • 二、系统功能模块图
    • 三、设计思路
    • 四、源代码

成都创新互联是一家专注于成都网站制作、成都网站建设与策划设计,始兴网站建设哪家好?成都创新互联做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:始兴等地区。始兴做网站价格咨询:18980820575一、系统简介
  1. 查询:

根据输入时间,输出机位信息

  1. 机位预定:

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

  1. 退出预定:

根据输入的时间, 撤销该时间的预订;查询是否有等待信息,若有,则按顺序显示联系方式。

  1. 查看预定的情况。
二、系统功能模块图

1.系统功能模块图:
在这里插入图片描述
2.函数模块图
1 void Fx();
菜单页面函数,主函数
2 void f1();
查询机位是否空置的函数
3 void f2();
预定机位函数
4 void f3();
取消预定机位函数
5 void f4();
查看预定情况函数
6 void detail(int t);
对应时间空置机位的情况函数
7 void prione(int i);
输出等待列表到屏幕

三、设计思路

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、源代码
#include#include#include#define N 20 //wait结构体中代表的20个结构体 
#define T (t-8)/2 // 

int sum[6]={0};//有18个小时,用六个元素进行三个时间段循环,每个元素对应下面结构体电脑状态 
int computer[6][20]{{1,0,1,0,1,1,0,0,0,0,0,0,1,1,1,1,0,1,1,1},
{1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1},
{1,1,0,1,1,1,1,1,0,1,1,0,1,0,1,1,0,1,1,1},
{1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1},
{1,1,0,1,1,1,0,0,0,0,0,0,1,1,0,1,1,1,1,0},
{1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1}};//模拟20台电脑状态,0代表空置,18个小时3个循环 ,每个时间机位空置模拟 
void Fx(); //菜单页面函数,主函数 
void f1();//查询机位是否空置的函数 
void f2();//预定机位函数 
void f3();//取消预定机位函数 
void f4();//查看预定情况函数 
void detail(int t);//对应时间空置机位的情况函数 
void prione(int i);//输出等待列表到屏幕 
struct waitlist//等待列表结构体 
{char num[3];//存预约机位号 
	char phone[11];  //存电话号码 
}wait[N];//20个结构体 

int main()
{Fx();
}

void Fx()// 菜单函数 
{int  a,b;
	do
	{printf("\t\t\t机房机位预定系统\n");
	printf("\t\t\t\t菜单\n");
	printf("\t\t\t1.查询机位状态\n");
	printf("\t\t\t2.预定空机位\n");
	printf("\t\t\t3.取消预订\n"); 
	printf("\t\t\t4.查询等待信息\n");
	printf("\t\t\t5.退出\n");
	printf("\t\t请输入选择项目(1-5):");
	scanf("%d",&a);
	if(a<1||a>5)//不是菜单5个选项,重新输入,令b==1,继续循环 
	{b=1;

	}
	else b=0;//b=0,跳出循环 
	}while(b==1);
	switch(a)//主菜单的5个选项 
	{case 1:f1();break;//查询空置机位 
		case 2:f2();break;//预约空置机位 
		case 3:f3();break; //取消预订 
		case 4:f4();break;//查询预约信息 
		case 5:exit(0);break;//返回 
	}
    
}

void f1()//查询机位是否空置 
{int t;
	printf(" 输入在(8-20)的时间:");
	scanf("%d",&t);
	if(t<8||t>20)// 不在对应时间,时间错误 
	{printf("\t时间输入错误!\n");
		printf(" 输入在(8-20)的时间:");
		scanf("%d",&t);//重新输入时间 
	}
	detail(t);//输入时间,查找该时间机位空置情况 
	
	Fx(); // 查询后回到主菜单 
}
void f2() // 预约机位函数 
{int t,i=0,x,y;
	FILE *fp;  
	char c;
	printf(" 请输入你想要预定的时间(8-20):");
	scanf("%d",&t);
	if(t<8||t>20)//不在时间内显示时间错误 
	{printf("\t 输入时间错误,请重新输入:\n");
		scanf("%d",&t);
	}
	detail(t);//在时间内查询,输出空机位  
	if(sum[T]>0)//空置电脑序号为正常 
	{if((fp=fopen("waitlist.txt","a"))==NULL)
		{	printf("\n打开文件错误!\n");//文件打开情况 
			exit(0);
		}
		printf("\n\t请问你想预留哪个机位,输入机位号,留下你的电话号码!:\n");
		scanf("%s %s",wait[i].num,wait[i].phone); //对照输出的空机位,输入你想要遇定的号数和你的电话号码 
		for(i=0;i<1;i++)
		fwrite(&wait[i],sizeof(struct waitlist),1,fp);
		fclose(fp);//向文本添加你的信息 
		printf("\t再次输入你想要预定的时间: \n");
		scanf("%d",&x);//再次确定 
		sum[T]--;// 预定后空机位少一个 
		computer[T][x]=1;//机位状态变为不是空置 为1 
		printf("\t预定成功\t\n");
		
		Fx();
	}
	else
	{printf("这是在这个时间段未预定的电脑!\n");
		for(i=T+1;i<6;i++)//由三个循环重新确定机位空置情况 
		{	t=9+2*i;
		detail(t);
		if(sum[T]>0)
		printf("\t最近空闲的时间是:%d,%d\n",2*i+8,2*i+10);//输出对应空闲的时间 
		break;	
		}
		printf("\t你想要预定吗?:Y\N");
		scanf("%s",&c);//输入你是否想要预定 
		
		if(c=='Y')
		{	if((fp=fopen("waitlist.txt","r"))==NULL)
		{	printf("\n打开文件错误!\n");
			exit(0);
		}
		
		else 
		{	printf("等待列表:机位号,电话\n");//输出已经预定的机位和他们的电话号码 
			for(i=0;!feof(fp);i++)
			{		fscanf(fp,"%s %s",&wait[i].num,wait[i].phone); 
			}
			fclose(fp);//读出他们的信息 
		}
		for(i=0;i<10;i++)
		{	prione(i);//输出预定信息 
		}
		printf("\n\t 请输入你想预定的机位号并留下电话号码!:\n");
		if((fp=fopen("waitlist.txt","a"))==NULL)
		{	printf("\n打开文件错误!\n");
			exit(0);
		}
		scanf("%s %s",wait[i].num,wait[i].phone);
		for(i=0;i<1;i++)

			fwrite(&wait[i],sizeof(struct waitlist),1,fp);
			fclose(fp);//写入你的信息,一个结构体单元 
			printf("\t再次输入电脑序号:\n");
			scanf("%d",&y);
			sum[T]--;//空置数和机位状态依次变化 
			computer[T][y]=1;
			printf("\t好了,等待我们电话!\n");
			Fx();
		}
		else Fx();
	}
}

void f3()//取消预定函数 
{int t,x;
	printf("输入你已经预定的时间(8-20):");
	scanf("%d",&t);//输入你预定的时间 
	if(t>20||t<8)//输入错误 
	{printf("\t输入时间错误!\n");
		printf("\t再次输入你已经预定的时间!:");
		scanf("%d",&t);//再次输入 
	}
	else
	{printf("\t你已经预定的机位号!:");
		scanf("%d",&x); 
	}
	detail(t);
	sum[T]++; //取消空机位加1,对应机位状态为空置 
	computer[T][x]=0;
	printf("\t取消成功!\n");
	
	Fx();
}

void f4()//查询预定信息 
{int t,i;
	FILE *fp;
	printf("\t请输入你要搜索的时间:");
	scanf("%d",&t);
	if(t<8||t>20)  //输入时间错误 
	{printf("\t 输入时间错误!\n");
		printf("\t 输入你要搜索的时间:");
		scanf("%d",&t);
	} 
	else 
			if((fp=fopen("waitlist.txt","r"))==NULL)
		{	printf("\n打开文件错误!\n");
			exit(0);
		}
	else 
	{printf("等待列表:机位号,电话\n");
		for(i=0;!feof(fp);i++)
		{	fscanf(fp,"%s %s",&wait[i].num,&wait[i].phone);
		}
		fclose(fp);//打开列表 
	}
	for(i=0;i<10;i++)
	{prione(i);
	}
	Fx();
} 

void detail(int t)//查找空机位数和对应机位号数 
{int i,j=0,k,s=0;
	int v[30];
	for(i=0;i<20;i++)
	{if(computer[T][i]==0) //为0时机位空置 
		{	s++;//空置电脑数加1 
			v[j++]=i;//空置电脑序号 
		}
	}
	sum[t]=s;//由三个循环输出空置的电脑 
	printf("\t目前空置的电脑:%d\n",sum[T]);
	for(k=0;kprintf("\t\t%s %s \n",wait[i].num,wait[i].phone); 
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


标题名称:C语言课设——机房机位预定系统-创新互联
本文网址:http://cdxtjz.com/article/jghpi.html

其他资讯