C语言实现客房管理系统

程序如下:



#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#define NUM 100


int j;


void LoginRoom();
void SearchRoom();
void ChangeRoom();
void OutRoom();
void save();
void load();
struct Client
{
    char Name[20];
    int Sex;
    int Age;
    char IDcard[18];
    int hour;
    char date[7];
};


struct room
{
    int RoomID;
    char Tel[11];
    long Price;
    int Sign;
    struct Client Clientlist;
}Room[NUM];


void LoginRoom()     //登记客房信息函数
{
    int i,n,k;
    n=0;
    system("cls");
    printf("                                     用户登记\n");
    for(k=0;;k++)
    {
        printf("请输入客房号:\n");
        scanf("%d",&i);
        if(Room[i-1].Sign==1)
        {
          printf("对不起,该房间已入住,请重新输入。\n");
          n=n+1;
        }
        if(n==5)
        {
            printf("\n请查询清楚客房入住信息后再来登记,谢谢");
            Sleep(1500);
            system("cls");
            return;
        }
        if(Room[i-1].Sign!=1)
            break;
    }
    printf("房间号:%d\n",i);
    printf("客户姓名:");
    scanf("%s",(char *)&Room[i-1].Clientlist.Name);
    printf("性别:");
    scanf("%d",&Room[i-1].Clientlist.Sex);
    printf("年龄:");
    scanf("%d",&Room[i-1].Clientlist.Age);
    printf("身份证号码:");
    scanf("%s",(char *)&Room[i-1].Clientlist.IDcard);
    printf("联系电话:");
    scanf("%s",(char *)&Room[i-1].Tel);
    printf("入住时间:");
    scanf("%s",(char *)&Room[i-1].Clientlist.date);
    printf("住房时长:");
    scanf("%d",&Room[i-1].Clientlist.hour);
    Room[i-1].RoomID=i;
    Room[i-1].Price=(Room[i-1].Clientlist.hour)*40;
    Room[i-1].Sign=1;
    save();
    printf("恭喜,登记成功!!\n要返回首页吗?(1:Y,0:N)");
    scanf("%d",&j);
    if(j==0)
    {
        LoginRoom();
    }
    system("cls");
}


void save()      //将客房入住信息保存到文件中
{
    int i;
    FILE *fp;
    if((fp=fopen("data.txt","w"))==NULL)
    {
        printf("无法打开文件\n");
        return;
    }
    fwrite(Room,sizeof(struct room),NUM,fp);
    printf("文件写入完成\n");
    fclose(fp);
}


void SearchRoom()    //查询客房信息
{
    int k;
    system("cls");
    printf("                                  查询客房信息\n");
    printf("请输入要查询的房间号码:\n");
    scanf("%d",&k);
    if(k<=0||k>100)
    {
        printf("对不起,没有相应的房间。\n");
        SearchRoom();
    }
    if(Room[k-1].Sign==1)
    {
        printf("姓名:%s\n",Room[k-1].Clientlist.Name);
        if(Room[k-1].Clientlist.Sex==1)
        {
            printf("性别:男\n");
        }
        else
        {
            printf("性别:女\n");
        }
        printf("年龄:%d\n",Room[k-1].Clientlist.Age);
        printf("身份证号:%s\n",Room[k-1].Clientlist.IDcard);
        printf("联系电话:%s\n",Room[k-1].Tel);
        printf("入住时间:%s\n",Room[k-1].Clientlist.date);
        printf("入住时长:%d\n",Room[k-1].Clientlist.hour);
        printf("费用:%ld\n",Room[k-1].Price);
    }
    else
    {
        system("cls");
        printf("很抱歉,没有找到该房间登记的相关信息!!\n\n");
    }
    printf("要返回首页吗?(1:Y,0:N)");
    scanf("%d",&j);
    if(j==0)
    {
        SearchRoom();
    }
    system("cls");
}


void load()      //从文件中读取客房入住信息
{
    FILE *fp;
    int i;
    if((fp=fopen("data.txt","r"))==NULL)
    {
        printf("不能打开文件\n");
        return;
    }
    for(i=0;!feof(fp);i++)
    {
        fread(&Room[i],sizeof(struct room),1,fp);
    }
    fclose(fp);
    system("cls");
    printf("文件读取成功\n");
}


void ChangeRoom()      //修改客房入住信息
{
    int i,n;
    system("cls");
    printf("                                  修改客房信息\n");
    printf("请输入房间号:\n");
    scanf("%d",&i);
    if(Room[i-1].Sign==1)
    {
        printf("\t1.--修改客户姓名\n");
        printf("\t2.--修改客户性别\n");
        printf("\t3.--修改客户年龄\n");
        printf("\t4.--修改住房时间\n");
        printf("\t5.--修改住房时长(续住)\n");
        printf("\t6.--修改客户电话号码\n");
        printf("\t7.--修改客户身份证号\n");
        printf("请输入要修改的项:");
        scanf("%d",&n);
        switch(n)
        {
            case 1:scanf("%s",(char *)&Room[i-1].Clientlist.Name);
            break;
            case 2:scanf("%d",&Room[i-1].Clientlist.Sex);
            break;
            case 3:scanf("%d",&Room[i-1].Clientlist.Age);
            break;
            case 4:scanf("%s",(char *)&Room[i-1].Clientlist.date);
            break;
            case 5:
                scanf("%d",&Room[i-1].Clientlist.hour);
                Room[i-1].Price=(Room[i-1].Clientlist.hour)*40;
            break;
            case 6:scanf("%s",(char *)&Room[i-1].Tel);
            break;
            case 7:scanf("%s",(char *)&Room[i-1].Clientlist.IDcard);
            break;
            default:printf("输入错误,请从新选择");
            break;
        }
        save();
        printf("修改成功!");
    }
    else
    {
        system("cls");
        printf("该房间为空房!!\n");
    }
    printf("\n要返回首页吗?(1:Y,0:N)");
    scanf("%d",&j);
    if(j==0)
    {
        ChangeRoom();
    }
    system("cls");
}


void OutRoom()      //退房函数
{
    int i,j;
    system("cls");
    printf("                                    退房管理\n");
    printf("请输入房间号:\n");
    scanf("%d",&i);
    printf("确认要退%d号房吗?(1:Y/0:N)",i);
    scanf("%d",&j);
    if(j==1)
    {
        if(Room[i-1].Sign==1)
        {
            Room[i-1]=Room[101];
            save();
            system("cls");
            printf("退房成功\n");
        }
        else
        {
            system("cls");
            printf("该房间为空房\n");
        }
    }
    printf("要返回首页吗?(1:Y,0:N)");
    scanf("%d",&j);
    if(j==0)
    {
        OutRoom();
    }
    system("cls");
}


void FreeRoom()     //查询客房整体入住信息
{
    int f,sum;
    sum=0;
    system("cls");
    printf("                                  客房入住信息\n");
    for(f=0;f<NUM;f++)
    {
        if(Room[f].Sign==1)
        {
            printf("%d号房已入住\n",f+1);
            sum=sum+1;
        }
    }
    printf("\n总共总共1~100号房间中有%d个房间已入住,剩余%d个房间为空房。 \n",sum,NUM-sum);
    printf("要返回首页吗?(1:Y,0:N)");
    scanf("%d",&j);
    if(j==0)
    {
        FreeRoom();
    }
    system("cls");
}


int main()      //主函数
{
    int i,j;
    system("mode con cols=82");
    system("color 19");
    load();
    system("cls");
    for(j=0;j<NUM;j++)   //为房间状态赋值为0,当有人入住时,其值改变为1
    {
        Room[j].RoomID=j+1;
    }
    do                  //菜单栏
    {
        printf("\n");
        printf("     ***********************************************************************     \n");
        printf("   ************************欢迎使用客房登记系统*******************************   \n");
        printf(" ***********************好消息!!!!特价钟点房40元/小时*************************** \n");
        printf("|                                                                               |\n");
        printf("|\t1.--登记客房信息                                                        |\n");
        printf("|\t2.--查询客房信息                                                        |\n");
        printf("|\t3.--修改客房信息                                                        |\n");
        printf("|\t4.--用户退房管理                                                        |\n");
        printf("|\t5.--显示当前空房信息                                                    |\n");
        printf("|\t6.--退出客房管理系统                                                    |\n");
        printf("|                                                                               |\n");
        printf("|*******************************************************************************|\n");
        printf("|********************>>>>李少港-计科(2)班-20151101134<<<<*********************|\n");
        printf("|*******************************************************************************|\n\n");
        printf("输入需要选择的功能:");
        scanf("%d",&i);
        switch(i)            //通过输入相应数字调用不同函数进行相应工作
        {
            case 1:LoginRoom();
            break;
            case 2:SearchRoom();
            break;
            case 3:ChangeRoom();
            break;
            case 4:OutRoom();
            break;
            case 5:FreeRoom();
            break;
            case 6:printf("谢谢使用客房登记系统,正在退出..........\n退出成功,按任意键关闭程序!!\n");
            break;
            default:
                system("cls");
                printf("\n 输入错误,请从新选择\n");
            break;
        }
    }
    while(i!=6);
    return 0;
}


  • 43
    点赞
  • 168
    收藏
    觉得还不错? 一键收藏
  • 54
    评论
以下是一个用C语言实现宾馆客房管理系统的单链表源代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> // 定义客房结构体 typedef struct Room { int roomNo; // 客房号 char roomType[20]; // 房间类型 float price; // 房间价格 int status; // 房间状态:0表示空闲,1表示已预订,2表示已入住 struct Room *next; // 指向下一个客房的指针 } Room; // 定义客房管理系统结构体 typedef struct Hotel { Room *head; // 指向链表头结点的指针 int count; // 客房数量 } Hotel; // 初始化宾馆客房管理系统 void init(Hotel *hotel) { hotel->head = NULL; hotel->count = 0; } // 创建新的客房 Room *createRoom(int roomNo, char *roomType, float price, int status) { Room *room = (Room *)malloc(sizeof(Room)); room->roomNo = roomNo; strcpy(room->roomType, roomType); room->price = price; room->status = status; room->next = NULL; return room; } // 添加新的客房 void addRoom(Hotel *hotel, Room *room) { if (hotel->head == NULL) { hotel->head = room; } else { Room *p = hotel->head; while (p->next != NULL) { p = p->next; } p->next = room; } hotel->count++; } // 删除客房 void deleteRoom(Hotel *hotel, int roomNo) { if (hotel->head == NULL) { printf("宾馆客房管理系统为空,无法删除客房!\n"); return; } Room *p = hotel->head; Room *pre = NULL; while (p != NULL) { if (p->roomNo == roomNo) { break; } pre = p; p = p->next; } if (p == NULL) { printf("未找到客房号为%d的客房,无法删除!\n", roomNo); return; } if (pre == NULL) { hotel->head = p->next; } else { pre->next = p->next; } free(p); hotel->count--; } // 修改客房信息 void updateRoom(Hotel *hotel, int roomNo, char *roomType, float price, int status) { if (hotel->head == NULL) { printf("宾馆客房管理系统为空,无法修改客房信息!\n"); return; } Room *p = hotel->head; while (p != NULL) { if (p->roomNo == roomNo) { strcpy(p->roomType, roomType); p->price = price; p->status = status; printf("客房信息修改成功!\n"); return; } p = p->next; } printf("未找到客房号为%d的客房,无法修改客房信息!\n", roomNo); } // 查询客房信息 void queryRoom(Hotel *hotel, int roomNo) { if (hotel->head == NULL) { printf("宾馆客房管理系统为空,无法查询客房信息!\n"); return; } Room *p = hotel->head; while (p != NULL) { if (p->roomNo == roomNo) { printf("客房号:%d,类型:%s,价格:%.2f,状态:%d\n", p->roomNo, p->roomType, p->price, p->status); return; } p = p->next; } printf("未找到客房号为%d的客房,无法查询客房信息!\n", roomNo); } // 显示所有客房信息 void showAllRooms(Hotel *hotel) { if (hotel->head == NULL) { printf("宾馆客房管理系统为空,无法显示客房信息!\n"); return; } printf("客房号\t类型\t价格\t状态\n"); Room *p = hotel->head; while (p != NULL) { printf("%d\t%s\t%.2f\t%d\n", p->roomNo, p->roomType, p->price, p->status); p = p->next; } } int main() { Hotel hotel; init(&hotel); Room *room1 = createRoom(101, "单人间", 200.0, 0); Room *room2 = createRoom(102, "双人间", 300.0, 0); Room *room3 = createRoom(103, "豪华套房", 500.0, 0); addRoom(&hotel, room1); addRoom(&hotel, room2); addRoom(&hotel, room3); showAllRooms(&hotel); deleteRoom(&hotel, 102); updateRoom(&hotel, 103, "总统套房", 800.0, 1); queryRoom(&hotel, 103); showAllRooms(&hotel); return 0; } ``` 说明: 以上代码实现了一个简单的宾馆客房管理系统,使用单链表来存储客房信息。程序中定义了客房结构体和宾馆客房管理系统结构体,并实现了添加客房、删除客房、修改客房信息、查询客房信息和显示所有客房信息等基本功能。在主函数中,先初始化宾馆客房管理系统,然后创建三个客房并添加到系统中,显示所有客房信息,删除一个客房,修改一个客房信息,查询一个客房信息,最后再次显示所有客房信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 54
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值