C語言實現(xiàn)賓館管理系統(tǒng)課程設(shè)計
本文實例為大家分享了C語言實現(xiàn)賓館管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
課程設(shè)計題目: 賓館管理系統(tǒng)
一、需求分析
近年來,科技進步不僅促進了全球旅游企業(yè)的快速增長,而且指導了旅游者消費觀念的 更新,其中信息與通信技術(shù)的發(fā)展對酒店等企業(yè)有著深遠的影響,傳統(tǒng)的管理方式已不 能滿足具有信息量大,查詢量大,保存期長,要求不間斷運行等特點的賓館管理需求, 重視信息技術(shù)的發(fā)展成為我國酒店業(yè)的共識。為增強競爭能力,提高管理水平,先進的 賓館管理系統(tǒng)已成為必然。賓館管理系統(tǒng)可以及時了解客戶信息與需求,實現(xiàn)賓館管理 信息化,通過賓館管理系統(tǒng)的實施可以逐步提高賓館的現(xiàn)代化建設(shè),提升員工工作效率, 良好的管理系統(tǒng)越來越建立服務部門的良好形象,有利于業(yè)務規(guī)范化,標準化,有利于 提高管理水平,有利于創(chuàng)造更高的經(jīng)濟效益和社會效益,使管理過程實現(xiàn)現(xiàn)代化。
二、總體設(shè)計
三、詳細設(shè)計
本系統(tǒng)中主要實現(xiàn)客戶信息的建立,查找,刪除等方面功能。由主函數(shù)生成系統(tǒng)主菜單,為進入各個界面提供通道。主要為 SWITCH 開關(guān)語句進入不同的界面,輸入“1”進入賓館信息建立界面,輸入“2”進入信息添加界面,輸入“3”進入客戶姓名查詢界面,輸入“4”進入客戶性別查詢界面,輸入“5”進入房號查詢界面。輸入“6”進入入住時間查詢界面,輸入“7”進入客戶信息修改界面,輸入“8”進入客戶信息刪除界面,輸入“9”進入客戶信息刪除界面,輸入“0”退出系統(tǒng)。程序由 C 語言結(jié)合數(shù)據(jù)結(jié)構(gòu)中建立一個線性鏈表的知識編程
四、調(diào)試與測試
五、用戶手冊
1.在主菜單輸入“1”進入“賓館信息建立界面”。此界面可建立客戶的基本信息:姓名,性別,證件號,入住時間,天數(shù),房號,押金,離開時間等,并返回主菜單。
2.賓館信息添加功能
在主菜單輸入“2”進入“賓館信息添加界面”。此界面可以添加客戶個數(shù)和客戶基本信息:姓名,性別,證件號,入住時間,天數(shù),房號,押金,離開時間等,并返回到菜單進行下一步。
3. 客戶姓名查詢功能
在主菜單輸入“3”進入“客戶姓名查詢界面”。在此界面首先根據(jù)提示輸入 1 表示按照姓名查找,然后輸入客戶姓名確定進行查詢客戶的基本信息并顯示出來。此功能可以方便的查詢到某一姓名的客戶
的客房信息。
4.客戶性別查詢功能
在主菜單輸入“4”,進入“客戶性別查詢界面”。在此界面可按客戶的性別查詢某一性別的所有客戶的基本信息,此功能可以查詢同一性別的客人信息,并比較不同性別客流量,以制定計劃增加客流量。
5.賓館房號查詢功能
在主菜單輸入“5”,進入“賓館房號查詢界面”。在此界面可按已知的房號查詢客戶的基本信息,此功能可以確定某房間的住入情況,若無人則顯示沒有該房間信息,若有人住入可根據(jù)之前建立或添加的客戶信息顯示出住在該房間的客人登記信息。
6.入住時間查詢功能
在主菜單輸入“6”,進入“入住時間查詢界面”。在此界面可通過大概的入住時間查詢客戶登記的基本信息,此功能可以查詢在同一天住入賓館的客
7.客戶信息修改功能
在主菜單輸入“7”,進入“客戶信息修改界面”。在此界面先通過先前的客戶姓名查找到該客戶信息,再根據(jù)要修改的客戶姓名,修改客戶信息。此功能可以方便的對需要增加住宿時間的客戶進行維
護。
8.客戶信息刪除功能
在主菜單輸入“8”,進入“客戶信息刪除界面”。在此界面可按客戶的姓名刪除客戶的基本信息,使用 del()函數(shù),輸入客戶姓名,確定刪除按 1,此功能可以將保存時間過長現(xiàn)在已不需要保留
的客戶的信息刪除。
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();//菜單輸出函數(shù)? listnode* Add(linklist head,int b);//增加客戶信息 linklist Create(int a);//賓館客戶信息的建立 ? void SaveInfoToFile(linklist head);//保存顧客信息到文件中 listnode *ReadInfoFromFile();//信息從文件讀出 int main()//主函數(shù)? {? ?? ?int i,a; ?? ?for(;;)? ?? ?{? ?? ??? ?switch(Display_Menu()) ? ?? ??? ?{ ?? ??? ?case 1: printf("**2.賓館信息的建立**\n"); ? ? ? ? ?? ?? ??? ??? ?printf("輸入你想輸入的數(shù)目:"); ? ? ? ?? ?? ??? ??? ?scanf("%d",&i); ? ? ? head=Create(i); break; ? ?? ??? ?case 2: printf("**1.從文件讀入客戶信息!**\n"); ? ? ? ? ?? ??? ??? ?ReadInfoFromFile(); ? ? ? ? ? ? break; ? ? ? ?? ??? ?case 3: printf("**3.賓館信息的添加**\n"); ? ? ? ? ? ?? ??? ??? ?printf("輸入你想添加的人數(shù):"); ? ? ?? ?? ??? ??? ?scanf("%d",&a); ? ? ?? ?? ??? ??? ?Add(head,a); break;? ?? ??? ?case 4: ?printf("**4.客戶姓名的查詢**\n"); ? ? ? ? ?? ??? ??? ?p=Name_Search(head); ? ? ? ? ? ? if(p!=NULL) ? ? ?? ?? ??? ??? ?{ ? ? ?? ?? ??? ??? ??? ?printf("姓名\t 性別\t 證件\t 入住\t 天數(shù)\t 房號\t 價格\t 押金\t 離開\n "); ? ?? ?? ??? ??? ??? ?printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",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 天數(shù)\t 房號\t 價格\t 押金\t 離開\n "); ?? ?? ??? ??? ??? ?printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",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 天數(shù)\t 房號\t 價格\t 押金\t 離開\n "); ?? ?? ??? ??? ??? ?printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",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 天數(shù)\t 房號\t 價格\t 押金\t 離開\n "); ? ? ?? ??? ??? ??? ?printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",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;? } //菜單函數(shù)? char Display_Menu()? { ? ?? ?int ?i; ? ?? ?FILE *fp; ?? ?char ch;? ?? ?printf("\n\n\n\n\n\n"); ?? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? 歡迎使用賓館信息管理系統(tǒng)!") ; ?? ?? ?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,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",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 天數(shù)\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 天數(shù)\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 天數(shù)\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 天數(shù)\t 房號\t 價格\t 押金\t 離開\n ");? ?? ?while(p->next!=NULL) ?{? ?? ??? ? ?? ??? ?printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",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("現(xiàn)在沒有顧客信息,請先輸入顧客信息!\n\n");? ?? ??? ?return;? ?? ?} ?? ?fp=fopen("F:\\Cyy Report\\customer.txt","w"); ? ?? ?if(!fp)? ?? ?{? ?? ??? ?printf("文件不存在!\n"); ?? ??? ?return; ?? ?} ?? ?while(p) ? ?? ?{ ?? ??? ?fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",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");? }?
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
《戰(zhàn)狼》中兩軍作戰(zhàn)入侵代碼竟然是輸出星期幾的!
這篇文章主要介紹了《戰(zhàn)狼》中兩軍作戰(zhàn)入侵代碼竟然是輸出星期幾的,喜歡戰(zhàn)狼和編程的同學可以了解下。2017-11-11c++ builder TreeView控件節(jié)點遍歷代碼
這篇文章介紹了c++ builder TreeView控件節(jié)點遍歷代碼,有需要的朋友可以參考一下2013-09-09opencv圖片的任意角度旋轉(zhuǎn)實現(xiàn)示例
這篇博客將介紹如何使用OpenCV旋轉(zhuǎn)圖像任意角度,實現(xiàn)各個角度的旋轉(zhuǎn),具有一定的參考價值,需要的朋友們下面隨著小編來一起學習學習吧2021-06-06