利用c语言用顺序表的形式实现宾馆客房管理系统 (1)客房信息包括:房间号(char num[10])、房间类型(char type[10])、价格(float money)、是否入住(int flag) (2)除了总的模块要求外,还需计算a.已入住客房的总收入;b.查找某一房间类型的所有房间信息。 并包含这九个模块,第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。 第二个模块——Menu()的功能是:显示选单。 第三个模块——CreateList()的功能是:创建表。 第四个模块——InsertList(L,i)的功能是:在表的任意位置插入新的数据记录,并返回选单。 第五个模块——LocateList()的功能是:按要求查询相关的信息,如果找到了,则显示该信息,如果未找到,则提示文件中没有该信息,并返回选单。 第六个模块——AlterList()[的功能是:修改某条记录的信息(最好可以选择修改哪个数据项),如果未找到要修改的记录,则提示系统中无此记录,并返回选单。 第七个模块——DeleteList()的功能是:删除某条记录,如果未找到要删除的记录,则提示通讯录中没有,并返回选单。 第八个模块——PrintList()的功能是:显示所有记录。 第九个模块——Quit()的功能是:退出选单。
时间: 2024-03-11 21:48:01 浏览: 17
好的,下面是利用 C 语言用顺序表的形式实现宾馆客房管理系统的代码,共九个模块:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 客房信息结构体
typedef struct {
char num[10]; // 房间号
char type[10]; // 房间类型
float money; // 价格
int flag; // 是否入住,0表示未入住,1表示已入住
} Room;
// 定义全局变量
Room *list; // 客房信息数组
int size = 0; // 客房信息数组大小
float total_income = 0; // 已入住客房的总收入
// 函数声明
void Menu();
void CreateList();
void InsertList(int i);
int LocateList(char *num);
void AlterList(int i);
void DeleteList(int i);
void PrintList();
void Quit();
int main() {
Menu();
return 0;
}
void Menu() {
int choice, i;
char num[10], type[10];
float money;
while (1) {
printf("\n请选择操作:\n");
printf("1. 创建表\n");
printf("2. 插入记录\n");
printf("3. 查询记录\n");
printf("4. 修改记录\n");
printf("5. 删除记录\n");
printf("6. 显示所有记录\n");
printf("7. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
CreateList();
break;
case 2:
printf("请输入房间号:");
scanf("%s", num);
printf("请输入房间类型:");
scanf("%s", type);
printf("请输入价格:");
scanf("%f", &money);
InsertList(size);
strcpy(list[size - 1].num, num);
strcpy(list[size - 1].type, type);
list[size - 1].money = money;
list[size - 1].flag = 0;
printf("添加成功!\n");
break;
case 3:
printf("请输入要查询的房间号:");
scanf("%s", num);
i = LocateList(num);
if (i >= 0) {
printf("房间号:%s\n", list[i].num);
printf("房间类型:%s\n", list[i].type);
printf("价格:%.2f\n", list[i].money);
printf("是否入住:%s\n", list[i].flag ? "是" : "否");
} else {
printf("文件中没有该信息!\n");
}
break;
case 4:
printf("请输入要修改的房间号:");
scanf("%s", num);
i = LocateList(num);
if (i >= 0) {
AlterList(i);
printf("修改成功!\n");
} else {
printf("系统中无此记录!\n");
}
break;
case 5:
printf("请输入要删除的房间号:");
scanf("%s", num);
i = LocateList(num);
if (i >= 0) {
DeleteList(i);
printf("删除成功!\n");
} else {
printf("通讯录中没有该信息!\n");
}
break;
case 6:
PrintList();
break;
case 7:
Quit();
break;
default:
printf("输入有误,请重新输入!\n");
}
}
}
void CreateList() {
printf("请输入客房数量:");
scanf("%d", &size);
list = (Room*) malloc(sizeof(Room) * size);
printf("请输入每个客房的信息(房间号、房间类型、价格):\n");
for (int i = 0; i < size; i++) {
scanf("%s %s %f", list[i].num, list[i].type, &list[i].money);
list[i].flag = 0;
}
printf("客房信息创建成功!\n");
}
void InsertList(int i) {
size++;
list = (Room*) realloc(list, sizeof(Room) * size);
for (int j = size - 1; j > i; j--) {
list[j] = list[j - 1];
}
}
int LocateList(char *num) {
for (int i = 0; i < size; i++) {
if (strcmp(list[i].num, num) == 0) {
return i;
}
}
return -1;
}
void AlterList(int i) {
int choice;
char num[10], type[10];
float money;
printf("请选择要修改的数据项:\n");
printf("1. 房间号\n");
printf("2. 房间类型\n");
printf("3. 价格\n");
printf("4. 是否入住\n");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入新的房间号:");
scanf("%s", num);
strcpy(list[i].num, num);
break;
case 2:
printf("请输入新的房间类型:");
scanf("%s", type);
strcpy(list[i].type, type);
break;
case 3:
printf("请输入新的价格:");
scanf("%f", &money);
list[i].money = money;
break;
case 4:
list[i].flag = !list[i].flag;
if (list[i].flag) {
total_income += list[i].money;
} else {
total_income -= list[i].money;
}
break;
default:
printf("输入有误,请重新输入!\n");
}
}
void DeleteList(int i) {
for (int j = i; j < size - 1; j++) {
list[j] = list[j + 1];
}
size--;
list = (Room*) realloc(list, sizeof(Room) * size);
}
void PrintList() {
printf("房间号\t房间类型\t价格\t是否入住\n");
for (int i = 0; i < size; i++) {
printf("%s\t%s\t\t%.2f\t%s\n", list[i].num, list[i].type, list[i].money, list[i].flag ? "是" : "否");
}
printf("已入住客房的总收入:%.2f\n", total_income);
}
void Quit() {
free(list);
printf("程序已退出!\n");
exit(0);
}
```
这个程序可以通过菜单操作实现客房信息的增删改查、显示所有记录以及计算已入住客房的总收入。其中,第一个模块是主函数 `main()`,第二个模块是菜单函数 `Menu()`,第三个模块是创建表函数 `CreateList()`,第四个模块是插入记录函数 `InsertList(int i)`,第五个模块是查询记录函数 `LocateList(char *num)`,第六个模块是修改记录函数 `AlterList(int i)`,第七个模块是删除记录函数 `DeleteList(int i)`,第八个模块是显示所有记录函数 `PrintList()`,第九个模块是退出函数 `Quit()`。