用C语言数组写的简易客房管理系统
简易房客管理系统,用数组写的,学籍管理系统也可以参考。
大学C语言小学期作业。
有不对的谢谢大家指正,有什么问题可以评论。
开始先定义密码,账号,结构体以及各个函数名。
账号和密码可以自定义。## C语言,管理系统
#include
#include
#include
#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");}elseprintf("%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("没有该住客");}elseprintf("请输入押金;\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("没有该住客");}elseperson[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);}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
