首頁 > 軟體

C語言實現賓館管理系統課程設計

2022-03-17 10:00:04

本文範例為大家分享了C語言實現賓館管理系統的具體程式碼,供大家參考,具體內容如下

課程設計題目: 賓館管理系統

一、需求分析

近年來,科技進步不僅促進了全球旅遊企業的快速增長,而且指導了旅遊者消費觀念的 更新,其中資訊與通訊技術的發展對酒店等企業有著深遠的影響,傳統的管理方式已不 能滿足具有資訊量大,查詢量大,儲存期長,要求不間斷執行等特點的賓館管理需求, 重視資訊科技的發展成為我國酒店業的共識。為增強競爭能力,提高管理水平,先進的 賓館管理系統已成為必然。賓館管理系統可以及時瞭解客戶資訊與需求,實現賓館管理 資訊化,通過賓館管理系統的實施可以逐步提高賓館的現代化建設,提升員工工作效率, 良好的管理系統越來越建立服務部門的良好形象,有利於業務規範化,標準化,有利於 提高管理水平,有利於創造更高的經濟效益和社會效益,使管理過程實現現代化。

二、總體設計

三、詳細設計

本系統中主要實現客戶資訊的建立,查詢,刪除等方面功能。由主函數生成系統主選單,為進入各個介面提供通道。主要為 SWITCH 開關語句進入不同的介面,輸入“1”進入賓館資訊建立介面,輸入“2”進入資訊新增介面,輸入“3”進入客戶姓名查詢介面,輸入“4”進入客戶性別查詢介面,輸入“5”進入房號查詢介面。輸入“6”進入入住時間查詢介面,輸入“7”進入客戶資訊修改介面,輸入“8”進入客戶資訊刪除介面,輸入“9”進入客戶資訊刪除介面,輸入“0”退出系統。程式由 C 語言結合資料結構中建立一個線性連結串列的知識程式設計

四、偵錯與測試

五、使用者手冊

1.在主選單輸入“1”進入“賓館資訊建立介面”。此介面可建立客戶的基本資訊:姓名,性別,證件號,入住時間,天數,房號,押金,離開時間等,並返回主選單。

2.賓館資訊新增功能

在主選單輸入“2”進入“賓館資訊新增介面”。此介面可以新增客戶個數和客戶基本資訊:姓名,性別,證件號,入住時間,天數,房號,押金,離開時間等,並返回到選單進行下一步。

3. 客戶姓名查詢功能

在主選單輸入“3”進入“客戶姓名查詢介面”。在此介面首先根據提示輸入 1 表示按照姓名查詢,然後輸入客戶姓名確定進行查詢客戶的基本資訊並顯示出來。此功能可以方便的查詢到某一姓名的客戶
的客房資訊。

4.客戶性別查詢功能

在主選單輸入“4”,進入“客戶性別查詢介面”。在此介面可按客戶的性別查詢某一性別的所有客戶的基本資訊,此功能可以查詢同一性別的客人資訊,並比較不同性別客流量,以制定計劃增加客流量。

5.賓館房號查詢功能

在主選單輸入“5”,進入“賓館房號查詢介面”。在此介面可按已知的房號查詢客戶的基本資訊,此功能可以確定某房間的住入情況,若無人則顯示沒有該房間資訊,若有人住入可根據之前建立或新增的客戶資訊顯示出住在該房間的客人登記資訊。

6.入住時間查詢功能

在主選單輸入“6”,進入“入住時間查詢介面”。在此介面可通過大概的入住時間查詢客戶登記的基本資訊,此功能可以查詢在同一天住入賓館的客

7.客戶資訊修改功能

在主選單輸入“7”,進入“客戶資訊修改介面”。在此介面先通過先前的客戶姓名查詢到該客戶資訊,再根據要修改的客戶姓名,修改客戶資訊。此功能可以方便的對需要增加住宿時間的客戶進行維
護。

8.客戶資訊刪除功能

在主選單輸入“8”,進入“客戶資訊刪除介面”。在此介面可按客戶的姓名刪除客戶的基本資訊,使用 del()函數,輸入客戶姓名,確定刪除按 1,此功能可以將儲存時間過長現在已不需要保留
的客戶的資訊刪除。

9.客戶資訊顯示功能

在主選單輸入“9”,進入“客戶資訊顯示介面”。在此介面可按客戶的性別查詢客戶的基本資訊,此功能可以將所有客戶資訊顯示在輸出介面上,工作人員可直觀觀察。

六.原始碼

#include"stdio.h"
#include"stdlib.h" 
#include"string.h"
typedef struct
{
    char name[50];  
    char sex[50]; 
    char ID[50];
    char come[50];  
    char day[50];
    char number[50]; 
    char type[50];
    char price[50];  
    char yushou[50];
    char yajin[50];  
    char leave[50];
}datatype;
typedef struct node
{
    datatype data;  
    struct node *next; 
}listnode; 
typedef listnode *linklist;
linklist head;
listnode *p;
void Output_allInfo(linklist head);//輸出所有客戶資訊  
void Delete_info(linklist head);//客戶資訊的刪除 
void Info_Modify(linklist head);//按客戶姓名的資訊修改 
listnode *Name_Search(linklist head); //按姓名查詢賓館資訊 
listnode *Sex_Search(linklist head);//按性別查詢賓館資訊  
listnode *Roomnum_Search(linklist head);//按房間號查詢賓館資訊
listnode *Cometime_Search(linklist head) ;//按入住時間查詢 
char Display_Menu();//選單輸出函數 
listnode* Add(linklist head,int b);//增加客戶資訊
linklist Create(int a);//賓館客戶資訊的建立  
void SaveInfoToFile(linklist head);//儲存顧客資訊到檔案中
listnode *ReadInfoFromFile();//資訊從檔案讀出
int main()//主函數 
{ 
    int i,a;
    for(;;) 
    { 
        switch(Display_Menu())  
        {
        case 1: printf("**2.賓館資訊的建立**n");           
            printf("輸入你想輸入的數目:");         
            scanf("%d",&i);       head=Create(i); break;  
        case 2: printf("**1.從檔案讀入客戶資訊!**n");        
            ReadInfoFromFile();             break;      
        case 3: printf("**3.賓館資訊的新增**n");          
            printf("輸入你想新增的人數:");       
            scanf("%d",&a);       
            Add(head,a); break; 
        case 4:  printf("**4.客戶姓名的查詢**n");        
            p=Name_Search(head);             if(p!=NULL)       
            {       
                printf("姓名t 性別t 證件t 入住t 天數t 房號t 價格t 押金t 離開n ");     
                printf("%st%st%st%st%st%st%st%st%sn",p->data.name,p->data.sex,p->data.ID,      
                    p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );      
                printf("n");  
            } 
            else printf("該使用者不存在!");break;       
        case 5: printf("**5.客戶性別的查詢**n");    
            p=Sex_Search(head);          
            if(p!=NULL)         
            {
                printf("姓名t 性別t 證件t 入住t 天數t 房號t 價格t 押金t 離開n ");   
                printf("%st%st%st%st%st%st%st%st%sn",p->data.name,p->data.sex,p->data.ID,    
                    p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );      
                printf("n");   
            }
            else
                printf("該使用者不存在!");break;  
        case 6: 
            printf("**6.客戶房號的查詢**n");     
            p=Roomnum_Search(head);     
            if(p!=NULL)  
            {
                printf("姓名t 性別t 證件t 入住t 天數t 房號t 價格t 押金t 離開n ");   
                printf("%st%st%st%st%st%st%st%st%sn",p->data.name,p->data.sex,p->data.ID, 
                    p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );   
                printf("n");     
            }
            else printf("該房間資訊不存在!");break; 
        case 7:
            printf("**7.客戶性別的查詢**n");    
            p=Cometime_Search(head);
            if(p!=NULL)   
            {
                printf("姓名t 性別t 證件t 入住t 天數t 房號t 價格t 押金t 離開n ");    
                printf("%st%st%st%st%st%st%st%st%sn",p->data.name,p->data.sex,p->data.ID,
                    p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );    
                printf("n");  
            }    
            else printf("該房間資訊不存在!");break;
        case 8: printf("**8.賓館資訊的修改**n");         
            Info_Modify(head);break; 
        case 9: printf("**9.賓館資訊的刪除**n"); 
            Delete_info(head);break;   
        case 10: printf("**10.賓館資訊的輸出**n");    
            Output_allInfo(head); break;  
        case 11:printf("11.儲存顧客資訊");      
            SaveInfoToFile(head); break;
            //儲存顧客資訊到檔案中   
        case 0:printf("**0.退出**n");     
            exit(0);   
        default: break; 
        } 
    }
    return 0; 
}
//選單函數 
char Display_Menu() 
{  
    int  i;  
    FILE *fp;
    char ch; 
    printf("nnnnnn");
    printf("                         歡迎使用賓館資訊管理系統!") ;   
    if((fp=fopen("F:\Cyy Report\menu.txt","r"))==NULL) 
    {
        printf("選單檔案開啟失敗!");  
        exit(0);  
    } 
    ch=fgetc(fp);
    while(ch!=EOF) 
    {
        putchar(ch); 
        ch=fgetc(fp);
    }
    printf("n");
    for(;;)  
    { 
        scanf("%d",&i); 
        printf("n");  
        if(i<0||i>11) 
            printf("選擇錯誤,重新選擇:n");   
        else break;
    }   
    return i;
}
listnode *ReadInfoFromFile() 
{ 
    FILE *fp;  
    int b; 
    fp=fopen("F:\Cyy Report\customer.txt","r");  
    listnode *p=NULL,*q=NULL,*head=NULL;
    p=(listnode *)malloc(sizeof(listnode));   
    head->next=p;     
    b=1;
    if(!fp)  
    {
        printf("檔案開啟失敗!");  
        exit(0); 
    }
    else printf("檔案開啟成功");  
    while(!feof(fp)) 
    {  
        /*fprintf(fp,"%st%st%st%st%st%st%st%st%sn",p->next->data.name,p->next->data.se x,p->next->data.ID,          p->next->data.come,p->next->data.day,p->next->data.number,p->next->data.price,p->next->data. yajin,p->next->data.leave );*/  
        q=(listnode *)malloc(sizeof(listnode));   
        fscanf(fp,"%s%s%s%s%s%s%s%s",p->data.name,p->data.sex,p->data.ID,   
            p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave); 
        p->next=q;
        q=p ;
        b++;
    }
    head=Add(head,b); 
    printf("n"); 
    fclose(fp);  
    return head; 
}
//賓館客戶資訊的建立 
linklist Create(int a)
{
    linklist head=(listnode *)malloc(sizeof(listnode));
    listnode *p,*q;  
    q=head;
    while(a--) 
    {
        p=(listnode *)malloc(sizeof(listnode)); 
        printf("姓名t 性別t 證件t 入住t 天數t 房號t 價格t 押金t 離開n "); 
        scanf("%s%s%s%s%s%s%s%s%s",p->data.name,p->data.sex,p->data.ID,   
            p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave); 
        q->next=p;   
        q=p; 
    } 
    q->next=NULL; 
    return head; 
}
listnode* Add(linklist head,int b)//增加顧客資訊 
{
    listnode *m,*n,*p;
    m=head;
    n=m->next;  
    while(n->next!=NULL)
    {
        m=n;  
        n=n->next; 
    }
    while(b--) 
    {
        p=(listnode *)malloc(sizeof(listnode));   
        printf("姓名t 性別t 證件t 入住t 天數t 房號t 價格t 押金t 離開n "); 
        printf("***************************n"); 
        scanf("%s%s%s%s%s%s%s%s%s",p->data.name,p->data.sex,p->data.ID,        
            p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );  
        n->next=p;
        n=p; 
    }
    n->next=NULL; 
    return head; 
}
//按姓名查詢賓館資訊 
listnode *Name_Search(linklist head) 
{
    listnode *p;  
    char name[10];
    int i;  
    printf("按 1 表示姓名查詢:");  
    p=head->next ; 
    scanf("%d",&i);  
    if(i==1) 
    {
        printf("輸入要查詢的姓名:");  
        scanf("%s",&name);
        while(p&&strcmp(p->data.name,name)>0)   
            p=p->next;   
        if(p==NULL||strcmp(p->data.name,name)<0)
            p=NULL;
    }
    else
        printf("輸入錯誤!");  
    return p;
}
//按性別查詢賓館資訊  
listnode *Sex_Search(linklist head)
{
    listnode *p; 
    char sex[10];
    int i;  
    printf("按 1 表示性別查詢:");  
    scanf("%d",&i);
    p=head->next ;  
    if(i==1)  
    {
        printf("輸入要查詢的性別:");  
        scanf("%s",&sex); 
        while(p&&strcmp(p->data.sex,sex)>0)
            p=p->next; 
        if(p==NULL||strcmp(p->data.sex,sex)<0) 
            p=NULL;  
    }
    return p; 
}
//按房間號查詢賓館資訊  
listnode *Roomnum_Search(linklist head)
{
    listnode *p;
    char number[10]; 
    int i;
    printf("按 1 表示房間號查詢:");  
    p=head->next ;
    scanf("%d",&i);
    if(i==1)  
    {
        printf("輸入要查詢的房間號:");   
        scanf("%s",&number);
        while(p&&strcmp(p->data.number,number)>0)  
            p=p->next; 
        if(p==NULL||strcmp(p->data.number,number)<0)  
            p=NULL; 
    }
    return p; 
}
//按入住時間查詢 
listnode *Cometime_Search(linklist head) 
{
    listnode *p; 
    char come[10]; 
    int i;  
    printf("按 1 表示性別查詢:");  
    p=head->next ;
    scanf("%d",&i); 
    if(i==1) 
    {
        printf("輸入要查詢的入住時間:");  
        scanf("%s",&come); 
        while(p&&strcmp(p->data.come,come)>0) 
            p=p->next;  
        if(p==NULL||strcmp(p->data.come,come)<0)
            p=NULL; 
    }
    return p; 
}
//按客戶姓名的資訊修改  
void Info_Modify(linklist head) 
{  
    listnode *p;
    p=Name_Search(head);
    if(p==NULL)
    { 
        printf("賓館資訊不存在!n");  
    }  
    else
    {
        printf("姓名t 性別t 證件t 入住t 天數t 房號t 價格t 押金t 離開n ");
        printf("***************************n");   
        scanf("%s%s%s%s%s%s%s%s%s",p->data.name,p->data.sex,p->data.ID,       
            p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );  printf("賓館資訊已修改!");    
    }
}
//客戶資訊的刪除
void Delete_info(linklist head) 
{
    int i;  
    listnode *p,*q; 
    p=Name_Search(head);  
    if(p==NULL) 
    {
        printf("資訊不存在!n");   
        return;  
    }  
    else 
    {
        printf("按 1 刪除:");   
        scanf("%d",&i);
        if(i==1) 
        {
            q=head;
            while(q!=NULL&&q->next!=p)  
                q=p->next;
            q->next=p->next; 
            free(p); 
            printf("資訊已刪除!");    
        }
    }
}
//賓館資訊的輸出 
void Output_allInfo(linklist head) 
{
    listnode *p; 
    p=head;  
    printf("姓名t 性別t 證件t 入住t 天數t 房號t 價格t 押金t 離開n "); 
    while(p->next!=NULL)  { 
        
        printf("%st%st%st%st%st%st%st%st%sn",p->next->data.name,p->next->data.sex,p-> next->data.ID,      
            p->next->data.come,p->next->data.day,p->next->data.number,p->next->data.price,p->next->data. yajin,p->next->data.leave ); 
        p=p->next ;
    }
}
void SaveInfoToFile(linklist head) 
{ 
    FILE *fp;
    listnode *p; 
    p=head->next; 
    if(p==NULL) 
    { 
        printf("現在沒有顧客資訊,請先輸入顧客資訊!nn"); 
        return; 
    }
    fp=fopen("F:\Cyy Report\customer.txt","w");  
    if(!fp) 
    { 
        printf("檔案不存在!n");
        return;
    }
    while(p)  
    {
        fprintf(fp,"%st%st%st%st%st%st%st%st%sn",p->data.name,p->data.sex,p->data.ID,      p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );     
        p=p->next; 
    }  
    fclose(fp);  
    printf("檔案儲存成功!n"); 
} 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com