溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C語言如何實(shí)現(xiàn)酒店管理系統(tǒng)

發(fā)布時(shí)間:2022-06-06 09:35:53 來源:億速云 閱讀:560 作者:zzz 欄目:開發(fā)技術(shù)

這篇文章主要講解了“C語言如何實(shí)現(xiàn)酒店管理系統(tǒng)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“C語言如何實(shí)現(xiàn)酒店管理系統(tǒng)”吧!

系統(tǒng)框架:

C語言如何實(shí)現(xiàn)酒店管理系統(tǒng)

代碼:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int dan=988,shuang=1299,tao=2998;//初始房間價(jià)格
int sdan=1000,sshuang=600,stao=200;//初始房間數(shù)量
int Day;//天數(shù)
int num=0;//客戶數(shù)量
long N=10000000;//現(xiàn)金流
struct DINGDAN//訂單結(jié)構(gòu)體
{
    long hao;//訂單號(hào)
    struct YHXX *p;//客戶信息結(jié)構(gòu)體地址
};
struct DINGDAN Dingdan[2000];
struct YHXX//客戶信息結(jié)構(gòu)體
{
    char ID[18];
    char name[10];
    char sex;//性別
    int rooms;//房間數(shù)
    char rooml;//房間類型
    int rday[3];//入住日期
    int sday;//住宿時(shí)間
    long dingdanhao;//訂單號(hào)
};
struct YHXX yhxx[2000];
void zhucaidan()//主菜單
{
    printf("\n\n");
    printf("\t\t******大壯酒店管理系統(tǒng)******\n");
    printf("\t\t*     1.:用戶信息查詢      *\n");
    printf("\t\t*     2.:客房經(jīng)營(yíng)管理      *\n");
    printf("\t\t*     3.:客房管理          *\n");
    printf("\t\t****************************\n\n");
}
void caidan1()//用戶信息查詢菜單
{
    printf("\n");
    printf("\t\t--------用戶信息查詢--------\n");
    printf("\t\t*     1.:按訂單號(hào)查詢      *\n");
    printf("\t\t*     2.:按姓名查詢        *\n");
    printf("\t\t*     3.:按身份證號(hào)查詢    *\n");
    printf("\t\t*     4.:用戶信息目錄      *\n");
    printf("\t\t----------------------------\n\n");
}
void caidan2()//客房經(jīng)營(yíng)管理菜單
{
    printf("\n");
    printf("\t\t--------客房經(jīng)營(yíng)管理--------\n");
    printf("\t\t*     1.:預(yù)定客房或登記入住*\n");
    printf("\t\t*     2.:退房操作          *\n");
    printf("\t\t*     3.:客房狀態(tài)          *\n");
    printf("\t\t----------------------------\n\n");
}
void caidan3()//房間管理菜單
{
    printf("\n");
    printf("\t\t----------房間管理----------\n");
    printf("\t\t*        1.:更改房?jī)r(jià)       *\n");
    printf("\t\t*        2.:增加客房       *\n");
    printf("\t\t*        3.:減少客房       *\n");
    printf("\t\t----------------------------\n\n");
}
void save()
{
    FILE *fp;
    //int i;
    if((fp=fopen("kehu","wb"))==NULL)//打開輸出文件
    {
        printf("\t\tcannot open file\n");
        return;
    }
    fseek(fp,0L,2);
    if(fwrite(&yhxx[num],sizeof(struct YHXX),1,fp)!=1)
        printf("\t\tfile write error\n");
    fclose(fp);//關(guān)閉wenj
}
void print()
{
    int i,t=0;
    FILE *fp;
    if((fp=fopen("kehu.dat","wb"))==NULL)//打開輸入文件
    {
        printf("cannot open file\n");
        exit(0);
    }
    rewind(fp);//使文件位置標(biāo)記返回文件開頭
    for(i=0;i<num;i++)
        {
            fread(&yhxx[i],sizeof(struct YHXX),1,fp);
            printf("\t\t姓名:%s\t",yhxx[i].name);
            if(yhxx[i].sex=='Y') printf("性別: 男\(zhòng)n");
            else printf("性別 女\n");
            printf("\t\t身份證號(hào):%s\n",yhxx[i].ID);
            printf("\t\t入住日期: %d %d %d",yhxx[i].rday[0],yhxx[i].rday[1],yhxx[i].rday[2]);
            printf("  入住時(shí)間: %d\n",yhxx[i].sday);
            t=1;
        }
        if(t==0) printf("\t\t  無用戶信息!\n");
        fclose(fp);//關(guān)閉文件
}
void H()//更改房?jī)r(jià)
{
    int x;
    char ch;
Hto:
    printf("\t\t豪華單間:D  豪華雙人:S  貴賓套房:T\n");
    printf("\t\t請(qǐng)輸入房間類型和更改后價(jià)格: ");
    scanf("%c %d",&ch,&x);
    switch(ch)
    {
        case 'D':dan=x;break;
        case 'S':shuang=x;break;
        case 'T':tao=x;break;
        default : goto Hto;
    }
    printf("\t\t更改后分別為:\n\t\t%d %d %d\n\t\t",dan,shuang,tao);
}
void I()//增加客房
{
    int x;
    char ch;
Ito:
    printf("\t\t豪華單間:D  豪華雙人:S  貴賓套房:T\n");
    printf("\t\t請(qǐng)輸入房間類型和增加數(shù)量: ");
    scanf("%c %d",&ch,&x);
    switch(ch)
    {
        case 'D':sdan+=x;break;
        case 'S':sshuang+=x;break;
        case 'T':stao+=x;break;
        default : goto Ito;
    }
    printf("\t\t更改后分別為:%d %d %d\n\t\t",sdan,sshuang,stao);
}
void J()//減少客房
{
    int x;
    //int sdan=1000,sshuang=600,stao=200;
    char ch;
Jto:
    printf("\t\t豪華單間:D  豪華雙人:S  貴賓套房:T\n");
    printf("\t\t請(qǐng)輸入房間類型和減少數(shù)量: ");
    scanf("%c %d",&ch,&x);
    switch(ch)
    {
        case 'D':sdan-=x;break;
        case 'S':sshuang-=x;break;
        case 'T':stao-=x;break;
        default : goto Jto;
    }
    printf("\t\t更改后分別為:%d %d %d\n\t\t",sdan,sshuang,stao);
}
void DE()//預(yù)定客房或登記入住
{
    char lroom;
    int sroom;
    int jiner=0;
    printf("\t\t訂房功能\n");
    to:
    printf("\t\t豪華單間:D  豪華雙人:S  貴賓套房:T\n");
    printf("\t\t請(qǐng)輸入房間類型:");
    getchar();
    scanf("%c",&lroom);
    printf("\t\t數(shù)量:");
    scanf("%d",&sroom);
    switch(lroom)
    {
        case 'D':jiner=sroom*dan;sdan-=sroom;break;
        case 'S':jiner=sroom*shuang;sshuang-=sroom;break;
        case 'T':jiner=sroom*tao;stao-=sroom;break;
        default:goto to;
    }
    if((lroom=='D'&&sroom<=sdan)||(lroom=='S'&&sroom<=sshuang)||(lroom=='T'&&sroom<=stao))
    {
        printf("\t\t請(qǐng)輸入您的信息: \n");
        printf("\t\t姓名: ");
        scanf("%s",yhxx[num].name);
        getchar();
        printf("\t\t性別: (男:Y  女:X) :");
        scanf("%c",&yhxx[num].sex);
        printf("\t\t身份證ID: ");
        scanf("%s",yhxx[num].ID);
        printf("\t\t入住日期: ");
        scanf("%d %d %d",&yhxx[num].rday[0],&yhxx[num].rday[1],&yhxx[num].rday[2]);
        printf("\t\t入住時(shí)間: ");
        scanf("%d",&yhxx[num].sday);
        printf("\t\t訂單總額:%d\n",jiner*yhxx[num].sday);
        N+=jiner;jiner=0;
        yhxx[num].rooms=sroom;
        yhxx[num].rooml=lroom;
        yhxx[num].dingdanhao=100000+num;//生成訂單號(hào);
        save();
        Dingdan[num].hao=yhxx[num].dingdanhao;//插入訂單號(hào)到訂單號(hào)結(jié)構(gòu)體;
        Dingdan[num].p=&yhxx[num];//將客戶信息結(jié)構(gòu)體地址插入到訂單結(jié)構(gòu)體中;
        printf("\t\t訂單號(hào):%ld\n",yhxx[num].dingdanhao);
        num++;
        printf("\t\t訂購成功!\n");
    }
}
void F()//退房操作
{
    int i,j,t=0;
    char name1[10],ID1[18];
    printf("\t\t退房操作:\n");
    printf("\t\t請(qǐng)輸入姓名: ");
    scanf("%s",name1);
    printf("\n\t\t請(qǐng)輸入身份證號(hào):");
    scanf("%s",ID1);
    for(i=0;i<num;i++)
    {
        if(strcmp(name1,yhxx[i].name)==0&&strcmp(ID1,yhxx[i].ID)==0)
        {
            switch(yhxx[i].rooml)
            {
                case 'D':N-=yhxx[i].rooms*dan;
                case 'S':N-=yhxx[i].rooms*shuang;
                case 'T':N-=yhxx[i].rooms*tao;
            }
            for(j=i-1;i<num;j++,i++)
            {
               strcpy(yhxx[j].ID,yhxx[i].ID);
               strcpy(yhxx[j].name,yhxx[i].name);
               yhxx[j].sex=yhxx[i].sex;
               yhxx[j].rooms=yhxx[i].rooms;
               yhxx[j].rooml=yhxx[i].rooml;
               yhxx[j].sday=yhxx[i].sday;
               yhxx[j].rday[0]=yhxx[i].rday[0];
               yhxx[j].rday[1]=yhxx[i].rday[1];
               yhxx[j].rday[1]=yhxx[i].rday[1];
            }
            num--;
            t=1;
            break;
        }
        else printf("\t\t查詢到無此用戶!");
    }
    if(t==1)printf("\t\t退房成功!\n");
}
void G()//客房狀態(tài)
{
    printf("\t\t空余客房:豪華單間:%d 豪華雙間:%d 豪華套房:%d\n",1000-sdan,600-sshuang,200-stao);
    printf("\t\t\t現(xiàn)金流:%ld\n",N);
}
void A()//按訂單號(hào)查詢
{
    int i,t=0;
    long h;
    struct YHXX *p0;
    printf("\t\t請(qǐng)輸入訂單號(hào):");
    scanf("%ld",&h);
    for(i=0;i<num;i++)
    {
        if(h==Dingdan[i].hao)
        {
            p0=Dingdan[i].p;
            printf("\t\t姓名:%s\t",p0->name);
            if(p0->sex=='Y') printf("性別: 男\(zhòng)n");
            else printf("性別 女\n");
            printf("\t\t身份證號(hào):%s ",p0->ID);
            switch(yhxx[i].rooml)
            {
                case 'D':printf(" 豪華單間: %d\n",p0->rooms);break;
                case 'S':printf(" 豪華雙間: %d\n",p0->rooms);break;
                case 'T':printf(" 豪華套房: %d\n",p0->rooms);break;
            }
            printf("\t\t入住日期: %d %d %d",p0->rday[0],p0->rday[1],p0->rday[2]);
            printf("  入住時(shí)間: %d\n",p0->sday);
            t=1;
            break;
        }
    }
    if(t==0) printf("\t\t客戶信息不存在!\n");
}
void B()//按姓名查詢
{
    int i,t=0;
    FILE *fp;
    char names[10];
    printf("\t\t請(qǐng)輸入姓名:");
    scanf("%s",names);
    if((fp=fopen("kehu.dat","wb"))==NULL)//打開文件
    {
        printf("cannot open file\n");
        exit(0);
    }
    rewind(fp);//使文件位置標(biāo)記返回文件開頭
    for(i=0;i<num;i++)
    {
        fread(&yhxx[i],sizeof(struct YHXX),1,fp);
        if(strcmp(names,yhxx[i].name)==0)
        {
            printf("\t\t姓名:%s\t",yhxx[i].name);
            if(yhxx[i].sex=='Y') printf("性別: 男\(zhòng)n");
            else printf("性別 女\n");
            printf("\t\t身份證號(hào):%s",yhxx[i].ID);
            switch(yhxx[i].rooml)
            {
                case 'D':printf(" 豪華單間: %d\n",yhxx[i].rooms);break;
                case 'S':printf(" 豪華雙間: %d\n",yhxx[i].rooms);break;
                case 'T':printf(" 豪華套房: %d\n",yhxx[i].rooms);break;
            }
            printf("\t\t入住日期: %d %d %d",yhxx[i].rday[0],yhxx[i].rday[1],yhxx[i].rday[2]);
            printf("  入住時(shí)間: %d\n",yhxx[i].sday);
            t=1;
            break;
        }
    }
    if(t==0) printf("\t\t客戶信息不存在!\n");
    fclose(fp);//關(guān)閉文件
}
void C()//按身份證號(hào)查詢
{
    int i,t=0;
    FILE *fp;
    char ids[10];
    printf("\t\t請(qǐng)輸入身份證號(hào):");
    scanf("%s",ids);
    if((fp=fopen("kehu.dat","wb"))==NULL)//打開文件
    {
        printf("cannot open file\n");
        exit(0);
    }
    rewind(fp);//使文件位置標(biāo)記返回文件開頭
    for(i=0;i<num;i++)
    {
        fread(&yhxx[i],sizeof(struct YHXX),1,fp);
        if(strcmp(ids,yhxx[i].ID)==0)
        {
            printf("\t\t姓名:%s\t",yhxx[i].name);
            if(yhxx[i].sex=='Y') printf("性別: 男\(zhòng)n");
            else printf("性別 女\n");
            printf("\t\t身份證號(hào):%s",yhxx[i].ID);
            switch(yhxx[i].rooml)
            {
                case 'D':printf(" 豪華單間: %d\n",yhxx[i].rooms);break;
                case 'S':printf(" 豪華雙間: %d\n",yhxx[i].rooms);break;
                case 'T':printf(" 豪華套房: %d\n",yhxx[i].rooms);break;
            }
            printf("\t\t入住日期: %d %d %d",yhxx[i].rday[0],yhxx[i].rday[1],yhxx[i].rday[2]);
            printf("  入住時(shí)間: %d\n",yhxx[i].sday);
            t=1;
            break;
        }
    }
    if(t==0) printf("\t\t客戶信息不存在!\n");
    fclose(fp);//關(guān)閉文件
}
void zhukongzhi()//主控制函數(shù)
{
    int x1,x2;
    rrr:
    zhucaidan();//首頁菜單
    printf("\t\t請(qǐng)輸入選項(xiàng):");
    scanf("%d",&x1);
    if(x1==1)//用戶信息查詢模塊
    {
        qqq:
        caidan1();//用戶信息查詢菜單
        printf("\t\t請(qǐng)輸入選項(xiàng):");
        scanf("%d",&x2);
        switch(x2)
        {
            case 1:A();break;//按訂單號(hào)查詢
            case 2:B();break;//按姓名查詢
            case 3:C();break;//按身份證號(hào)查詢
            case 4:print();break;//用戶目錄瀏覽
            default: goto qqq;//重新輸入
        }
    }
    else if(x1==2)//客房經(jīng)營(yíng)管理模塊
    {
        www:
        caidan2();//客房經(jīng)營(yíng)管理菜單
        printf("\t\t請(qǐng)輸入選項(xiàng):");
        scanf("%d",&x2);
        switch(x2)
        {
            case 1:DE();break;//預(yù)定客房或登記入住
            case 3:F();break;//退房操作
            case 4:G();break;//客房狀態(tài)
            default: goto www;//重新輸入
        }
    }
    else if(x1==3)//房間管理模塊
    {
        eee:
        caidan3();//客房管理菜單
        printf("\t\t請(qǐng)輸入選項(xiàng):");
        scanf("%d",&x2);
        switch(x2)
        {
            case 1:H();break;//更改房?jī)r(jià)
            case 2:I();break;//增加客房
            case 3:J();break;//減少客房
            default: goto eee;//重新輸入
        }
    }
    else goto rrr;//返回主菜單重新輸入
}
int main()
{
    int x=0;
    do
    {
        zhukongzhi();//進(jìn)入主控制函數(shù);
        printf("\t\t--------是否需要繼續(xù)?--------\n");
        printf("\t\t----回復(fù): 1 (繼續(xù)): 0 (結(jié)束)----\n\t\t請(qǐng)選擇:");
        scanf("%d",&x);
    }while(x);
    return 0;
}

感謝各位的閱讀,以上就是“C語言如何實(shí)現(xiàn)酒店管理系統(tǒng)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)C語言如何實(shí)現(xiàn)酒店管理系統(tǒng)這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI