用C语言数组写的简易客房管理系统

简易房客管理系统,用数组写的,学籍管理系统也可以参考。
大学C语言小学期作业。
有不对的谢谢大家指正,有什么问题可以评论。
开始先定义密码,账号,结构体以及各个函数名。
账号和密码可以自定义。## C语言,管理系统

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define Name "l"
#define Key "123456"
typedef struct Person
{
	char numh[5];
	char name[20];
	char Intime[20];
	int Data;
	int Deposit;
	int Rent;
	char houset[20];
 }Person;
Person person[20];
 int num;
 void Iput();
 void meun();
 void Goin();
 void deleteroom();
 void chaxun();
 void xiugai();
 void paixu();
 void print();
 void keep();
 void Getfile();
 int login(char a[],char b[]);

主函数和写入文件操作

 int main()
 {
	 Getfile();
 	Iput();
 }
 void Getfile()
 {
	 Person x;
	 num = 0;
	 FILE *fp = fopen("1.txt", "at+");
	 if (!fp)
	 {
		 printf("打开文件失败\n");
		 exit(0);
	 }
	 fscanf(fp, "%s%s%s%d%d%d%s", x.numh, x.name, x.Intime, &x.Data, &x.Deposit, &x.Rent, x.houset);
	 while (strcmp(x.numh, "END") != 0)
	 {
		 person[num++] = x;
		 fscanf(fp, "%s%s%s%d%d%d%s", x.numh, x.name, x.Intime, &x.Data, &x.Deposit, &x.Rent, x.houset);
	 }
	 fclose(fp);

 }

输入账号和密码

void Iput()
 {
 	char a[20],b[20];
	printf("请输入账户:");
	scanf("%s",a);
	getchar();
	printf("请输入密码:");
	scanf("%s",b);
	getchar();
	if(login(a,b))
	{
		printf("账号密码正确\n");
		meun();	
	}
	else
	{
		printf("账号或密码错误\n");
		Iput();
	}
}
int login(char a[],char b[])
{
	int flag=0;
	if((strcmp(a,Name)==0)&& (strcmp(b,Key)==0))
	flag=1;
	return flag;
}

菜单显示

void meun()
 {
 	int i;
	while (1)
	{
		printf("\t--------------------------\n"); 
		printf("\t **欢迎登陆酒店管理系统** \n");
		printf("\t| 1.登记入住             |\n"); 
		printf("\t| 2.查询客房信息         |\n"); 
		printf("\t| 3.修改押金数目         |\n"); 
		printf("\t| 4.删除房客信息         |\n"); 
		printf("\t| 5.房间入住数量排序     |\n"); 
		printf("\t| 6.所有住房信息         |\n");
		printf("\t| 7.退出(保存)         |\n"); 
		printf("\t--------------------------\n");
		printf("\t请选择您要进行的操作:\n");
		scanf("%d", &i);
		switch(i) 
		{
		case 1:Goin(); break;
		case 2:chaxun(); break;
		case 3:xiugai(); break;
		case 4:deleteroom(); break;
		case 5:paixu(); break;
		case 6:print(); break;
		case 7:keep(); break;
	    }
	}
		
 }

对客人信息进行输入

void Goin()
 {
	 Person x;
 	printf("请输入房间号:\n");
 	scanf("%s",x.numh);
 	printf("请输入姓名:\n");
 	scanf("%s",x.name);
 	printf("请输入入住时间:\n");
 	scanf("%s",x.Intime);
 	printf("请输入入住时长:\n");
 	scanf("%d",&x.Data);
 	printf("请输入押金:\n");
 	scanf("%d",&x.Deposit);
 	printf("请输入租金:\n");
 	scanf("%d",&x.Rent);
 	printf("请输入房间类型:\n");
 	scanf("%s",x.houset);
	person[num] = x;
	num++;
 }

客人信息查询

void chaxun()
 {
 	int i=0,number;
 	char a[10];
	 printf("请输入查询的姓名:\n");
	 scanf("%s",a);
	 for (i = 0; i < num; i++)
	 {
		 if (strcmp(person[i].name, a) == 0)
		 {
			 break;
		 }
	 }
	 if (i == num)
	 {
		 printf("没有该住客\n");
	 }
	 else
	 printf("%s %s %s %d %d %d %s\n", person[i].numh, person[i].name, person[i].Intime, person[i].Data, person[i].Deposit, person[i].Rent, person[i].houset);
	 printf("该住客结算金额:\n");
	 number = person[i].Rent*person[i].Data;
	 printf("%d\n", number);

}

客人信息修改

 void xiugai()
 {
 	int i,b;
	char a[10];
 	printf("请输入要修改的房间号:\n");
 	scanf("%s",a);
	for ( i = 0; i < num; i++)
	{
		if (strcmp(person[i].numh,a ) == 0)
		{
			break;
		}
	}
	if (i == num)
	{
		printf("没有该住客");
	}
	else
 	printf("请输入押金;\n");
 	scanf("%d",&b);
	person[i].Deposit = b;
 }

客人信息删除

 void deleteroom()
 {
 	int i;
 	char number[10];
 	printf("请输入你想删除的房间号:\n");
 	scanf("%s",number);
	for (i = 0; i < num; i++)
	{
		if (strcmp(person[i].numh, number) == 0)
		{
			break;
		}
	}
	if (i == num)
	{
		printf("没有该住客");
	}
	else
		person[i] = person[i + 1];
 }

客房类型数量统计和排序,这里我只是统计和排序,没有相对应,有大佬可以改一下,并且循环可以写一起。

void paixu()
 {
	 int a=0, b=0, c=0, d=0, e=0, f=0, g=0, h=0, i=0,k=0;
	 int j[9];
	 for (k = 0; k < num; k++)
	 {
		 if (strcmp(person[k].houset, "经济单人间") == 0)
		 {
			 a++;
		 }
	 }
	 for (k = 0; k < num; k++)
	 {
		 if (strcmp(person[k].houset, "经济双人间") == 0)
		 {
			 b++;
		 }
	 }
	 for (k = 0; k < num; k++)
	 {
		 if (strcmp(person[k].houset, "经济三人间") == 0)
		 {
			 c++;
		 }
	 }
	 for (k = 0; k < num; k++)
	 {
		 if (strcmp(person[k].houset, "标准单人间") == 0)
		 {
			 d++;
		 }
	 }
	 for (k = 0; k < num; k++)
	 {
		 if (strcmp(person[k].houset, "标准双人间") == 0)
		 {
			 e++;
		 }
	 }
	 for (k = 0; k < num; k++)
	 {
		 if (strcmp(person[k].houset, "标准三人间") == 0)
		 {
			 f++;
		 }
	 }
	 for (k = 0; k < num; k++)
	 {
		 if (strcmp(person[k].houset, "豪华单人间") == 0)
		 {
			 g++;
		 }
	 }
	 for (k = 0; k < num; k++)
	 {
		 if (strcmp(person[k].houset, "豪华双人间") == 0)
		 {
			 h++;
		 }
	 }
	 for (k = 0; k < num; k++)
	 {
		 if (strcmp(person[k].houset, "豪华三人间") == 0)
		 {
			 i++;
		 }
	 }
	 printf("经济单人间的数量为:%d\n", a);
	 printf("经济双人间的数量为:%d\n", b);
	 printf("经济三人间的数量为:%d\n", c);
	 printf("标准单人间的数量为:%d\n", d);
	 printf("标准双人间的数量为:%d\n", e);
	 printf("标准三人间的数量为:%d\n", f);
	 printf("标准单人间的数量为:%d\n", g);
	 printf("标准双人间的数量为:%d\n", h);
	 printf("标准三人间的数量为:%d\n", i);
	 j[0] = a; j[1] = b; j[2] = c; j[3] = d; j[4] = e; j[5] = f; j[6] = g; j[7] = h; j[8] = i;
	 int m, n, y,t;
	 for (m = 0; m < 9; m++)
	 {
		 y = m;
		 for (n = m + 1; n < 9; n++)
		 {
			 if (j[n] > j[y])
			 {
				 y = n;
			 }
		 }
		 if (y != n)
		 {
			 t = j[m];
			 j[m] = j[y];
			 j[y] = t;

		 }
	 }
	 printf("由大到小排序后:\n");
	 for (m= 0; m < 9; m++)
	 {
		 printf("   %d   ",j[m]);
	 }
	 
 }

对客人信息进行显示和保存

 void print()
 {
	 for (int i = 0; i < num; i++)
	 {
		 printf("%s %s %s %d %d %d %s\n", person[i].numh, person[i].name, person[i].Intime, person[i].Data, person[i].Deposit, person[i].Rent, person[i].houset);
	 }
 }
 void keep()
 {
 	FILE *fp=fopen("1.txt","wt");
	if (fp == NULL) exit(0);
 	for(int i=0;i<num;i++)
 	{
 		fprintf(fp,"%s %s %s %d %d %d %s\n",person[i].numh,person[i].name,person[i].Intime,person[i].Data,person[i].Deposit,person[i].Rent,person[i].houset);
	 }
 	fprintf(fp,"END");
 	fclose(fp);
 }
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值