简易房客管理系统,用数组写的,学籍管理系统也可以参考。
大学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);
}