李喜樂 楊潤(rùn)耀 于洪基
摘 要:本文基于C語(yǔ)言和C++論述了酒店客房管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),運(yùn)用“類”將客房信息管理、客戶信息管理以及入住信息管理相互聯(lián)系;運(yùn)用各個(gè)函數(shù)實(shí)現(xiàn)具體功能。
關(guān)鍵詞:酒店客房管理;C語(yǔ)言;C++類
1 系統(tǒng)需求分析
站在用戶的角度上,酒店客房管理系統(tǒng)設(shè)計(jì)的目的及意義是:(1)為了較便利地在文件中錄入相關(guān)的客房信息和入住信息;(2)為了較便捷地按個(gè)人需求或意愿來(lái)查詢已保存的相關(guān)信息;(3)為了可以通過該系統(tǒng)修改已保存的相關(guān)信息。
基于以上考慮,該酒店客房管理系統(tǒng)所需實(shí)現(xiàn)的功能有客房信息、入住信息和客戶信息的錄入、查詢、修改等功能。
2 總體設(shè)計(jì)
2.1 系統(tǒng)功能分析
根據(jù)系統(tǒng)的需求分析,本系統(tǒng)主要實(shí)現(xiàn)三大功能:(1)客房信息管理。錄入客房信息:包括客房編號(hào),價(jià)格,類型,容量,使用狀況等信息的錄入;查詢客房信息:分別按照編號(hào),價(jià)格,類型來(lái)查詢客房,了解客房狀況;修改及保存客房信息:修改客房的基本屬性并進(jìn)行保存;打印客房信息:將酒店中的客房信息實(shí)現(xiàn)全部打印在屏幕上,便于了解入住狀況。(2)客戶信息管理。錄入客戶信息:從入住信息調(diào)入客戶客戶的基本屬性;查詢客戶信息:分別按照姓名,身份證號(hào),訂房日期來(lái)查詢客戶信息;修改及保存客戶信息:修改客戶基本屬性并保存;打印客戶信息:將所有入住過的客戶信息打印出來(lái),以便查看;(3)入住信息管理。錄入入住信息:客戶的基本屬性包括入住客戶的姓名,身份證號(hào),性別,年齡,籍貫,電話,訂房日期,入住時(shí)長(zhǎng)等,以及入住的房號(hào)和房間類型;查詢?nèi)胱⌒畔ⅲ悍謩e按客戶姓名,房號(hào),入住時(shí)間,身份證號(hào)進(jìn)行信息查詢;修改及保存入住信息:修改入住客戶的基本屬性以及所住房間的號(hào)碼和類型;打印入住信息:將入住信息打印出來(lái),以便查詢。
2.2 類的描述
本系統(tǒng)共分為五個(gè)大類,分別是:
Basicroom,Guestoom,Basicperson,Person,RoomPerson。
各個(gè)類及函數(shù)的關(guān)系如下圖所示。
3 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)
3.1 錄入函數(shù)
錄入函數(shù)運(yùn)用在客房信息與客戶信息中,在AddtheGuestroom()(輸入客房函數(shù))中,運(yùn)用“cout<<”下面開始添加客房信息\n”;cout<<”客房編號(hào):”;”提示用戶輸入信息;然后用if語(yǔ)句判斷是否保存,若保存,創(chuàng)建一個(gè)輸入文件流對(duì)象,創(chuàng)建并打開文件,通過語(yǔ)句“ofile< 3.2 查詢函數(shù) 以客房信息中的Rfindbynum()(按編號(hào)查詢客房)為例說明。首先定義各個(gè)變量,通過語(yǔ)句語(yǔ)句“ifstream f1(“Guestroom.txt”);”打開文件;通過if語(yǔ)句“if(!f1)”進(jìn)行安全檢查,若文件出錯(cuò),打印“對(duì)不起,沒有客房信息!”;若打開文件成功,進(jìn)行while循環(huán),循環(huán)條件:文件中內(nèi)容沒有讀取完,語(yǔ)句“while(f1>>num1>>type1>>price1>>count1>>s1)”實(shí)現(xiàn);如果找到了num==num1,就使flag=true;緊接著打印出內(nèi)容cout<<”\t客房編號(hào):”< 3.3 修改函數(shù) 首先定義Guestroom p[N];和Guestroom q;用于讀取數(shù)據(jù);string num1;int i=0;用于循環(huán);bool flag=false;用于判斷是否已找出所要修改的客房。然后語(yǔ)句:cout<<”\n請(qǐng)輸入你要查找的客房編號(hào):”; cin>>num1; 讀取客房編號(hào);語(yǔ)句“ifstreamifile(“Guestroom.txt”,ios::in);”打開文件;運(yùn)用while(ifile)語(yǔ)句,當(dāng)沒有讀到文件尾時(shí),循環(huán)一直進(jìn)行;再命令一個(gè)tellg指針和seekp指針,指到所要修改的一行;語(yǔ)句“ifile>>p[i].num>>p[i].type>>p[i].price>>p[i].count>>p[i].s;”讀出文件內(nèi)容,if(p[i].num==num1),找到,開始打印客房的原始信息,確認(rèn)信息之后,開始修改該客房的信息。 修改完成之后,ofstreamofile(“Guestroom.txt”,ios::in|ios::out); ofile.seekp(j);再次運(yùn)用指針,寫到文件中指定位置,ofile< 3.4 數(shù)據(jù)的保存和裝載 本系統(tǒng)中一共有三類信息:客房信息,客戶信息,入住信息。分別保存在Guestroom.txt 文件,Person.txt文件和RoomPerson.txt文件中(用戶可根據(jù)個(gè)人習(xí)慣更改名稱)。其中,Guestroom.txt和RoomPerson.txt中的信息是通過錄入函數(shù)寫入文件中的,Person.txt中的信息是通過調(diào)入函數(shù)將RoomPerson.txt中部分信息復(fù)制進(jìn)去,這幾個(gè)函數(shù)在前面都已詳細(xì)介紹。 數(shù)據(jù)的提取和寫入是通過輸出流和輸入流來(lái)進(jìn)行的,通過重載<<和>>,方便的提取和寫入數(shù)據(jù)。friend istream&operator;>> (istream&fin;,Basicperson&p;){p.Pinput(fin);return fin;}friend ostream&operator;<<(ostream&fout;,Basicperson&p;){p.Pprt(fout);return fout;}同時(shí)還運(yùn)用了read_ch,tellg,seekp來(lái)讀取數(shù)據(jù)。 4 綜述 本系統(tǒng)的類和函數(shù)有緊密的聯(lián)系,函數(shù)又與文件緊緊相連,通過這幾塊大的知識(shí)相互結(jié)合運(yùn)用再與C++中的異常,虛函數(shù),模板等知識(shí)串聯(lián),實(shí)現(xiàn)了系統(tǒng)基本的錄入,打印,查詢,修改,刪除功能。 參考文獻(xiàn) [1] 陳建平,劉維富等.Visual C++程序設(shè)計(jì)課程建設(shè)研究與實(shí)踐[J].計(jì)算機(jī)教育,2007(12).