《面向對象程序設計》課程設計:酒店管理系統(tǒng)設計
《《面向對象程序設計》課程設計:酒店管理系統(tǒng)設計》由會員分享,可在線閱讀,更多相關《《面向對象程序設計》課程設計:酒店管理系統(tǒng)設計(29頁珍藏版)》請在裝配圖網上搜索。
1、1 面向對象程序設計面向對象程序設計 課課 程程 設設 計計 指指 導導 書書 2 湖南工業(yè)大學 課程設計任務書 2015 2016 學年第學年第 2 學期學期 計算機與通信學院 學院(系、部) 物聯(lián)網 專業(yè) 1401 班級 課程名稱: 面向對象程序設計 設計題目: 酒店管理系統(tǒng) 完成期限:自 2016 年 6 月 13 日至 2016 年 6 月 19 日共 1 周 內 容 及 任 務 一、設計的主要技術參數(shù) 二、設計任務 三、設計工作量 起止日期工作內容 本學期 11 周召開動員大會,學生選題; 2016-6-112016-6-12系統(tǒng)分析和設計; 2016-6-132016-6-17熟悉
2、軟件開發(fā)工具、編碼系統(tǒng)、系統(tǒng)測試以及中期答辯; 進 度 安 排 2015-6-182015-6-19撰寫并提交課程設計說明書 (含電子文檔)、源程序等。 主 要 參 考 資 料 指導教師 (簽字): 年 月 日 系(教研室)主任( 簽字): 年 月 日 面向對象程序設計課程設計 設計說明書 酒店管理系統(tǒng) 起止日期: 2016 年 6 月 20 日 至 2016 年 6 月 25 日 學生姓名賀志玉 班級物聯(lián)網 1401 班 學號14408500124 成績 指導教師 (簽字 ) 計算機與通信學院計算機與通信學院 年 月 日 1 目 錄 引言引言 2 2 一、系統(tǒng)概述一、系統(tǒng)概述 3 3 二、二
3、、 需求分析需求分析 3 3 2.12.1 系統(tǒng)需求系統(tǒng)需求 3 3 2.22.2 開發(fā)環(huán)境開發(fā)環(huán)境 3 3 三、系統(tǒng)分析及類的設計三、系統(tǒng)分析及類的設計 4 4 3.13.1 系統(tǒng)分析系統(tǒng)分析4 4 3.23.2 類的設計類的設計 5 5 四、系統(tǒng)的數(shù)據(jù)設計及實現(xiàn)四、系統(tǒng)的數(shù)據(jù)設計及實現(xiàn) 6 6 4.14.1 主函數(shù)設計主函數(shù)設計6 6 4.24.2 客房錄入函數(shù)設計客房錄入函數(shù)設計 7 7 4.34.3 入住登記模塊設計入住登記模塊設計7 7 4.44.4 客房信息修改模塊設計客房信息修改模塊設計8 8 4.54.5 退房結算模塊設計退房結算模塊設計 8 8 4.64.6 查詢模塊設計查詢
4、模塊設計9 9 4.74.7 客房信息刪除模塊設計客房信息刪除模塊設計9 9 4.84.8 保存文件和讀入文件功能模塊設計保存文件和讀入文件功能模塊設計 1010 五、五、 遇到的問題和分析解決遇到的問題和分析解決1111 六、系統(tǒng)特色及關鍵技術六、系統(tǒng)特色及關鍵技術 1212 七、結論七、結論 1313 7.17.1 系統(tǒng)完成情況系統(tǒng)完成情況1313 7.27.2 未能完成和有待改進之處未能完成和有待改進之處1313 7.37.3 課程設計期間的收獲課程設計期間的收獲1414 附錄(源代碼)附錄(源代碼) 1414 2 引言引言 隨著我國經濟的迅速發(fā)展,人們的生活水平有了顯著的提高, 賓館酒
5、店業(yè)的競爭也愈來愈激烈。如何在激烈的競爭中生從發(fā)展, 是每一個賓館酒店必須面臨的問題。因此,采用全新的計算機網絡 和賓館管理系統(tǒng),已成為提高賓館的管理效率,改善服務的水準備 的重要手段之一。在某種意義上,賓館客房管理方面的信息話已成 為現(xiàn)代化賓館的重要標志。是國家發(fā)展必要的軟件管理基礎。 所以,本著這樣的需求。此次 C+語言課程設計我選擇的是簡 易酒店管理系統(tǒng)設計,系統(tǒng)設計采用 C+語言在 Microsoft visual C+6.0 下編譯而成。 通過本課程設計,使我能更加系統(tǒng)地理解和掌握數(shù)據(jù)結構的基 本概念; 能自如地根據(jù)實際要求,設計相應的數(shù)據(jù)結構,并運用 C+語言實現(xiàn)所設計的算法,能夠
6、利用所學的基本知識和技能,分析 和解決簡單的程序設計問題 ,為后續(xù)其它課程的學習和應用打下良 好基礎。 3 一、系統(tǒng)概述一、系統(tǒng)概述 酒店管理系統(tǒng)具有 1. 建立數(shù)據(jù)文件功能; (如:客房信息文件、住客信息文件) 2具有數(shù)據(jù)輸入功能; (如:輸入酒店房間的基本信息,客戶入住基本信息) 3具有數(shù)據(jù)修改功能; (如:修改酒店房間類型及價格,客戶入住時填寫的基本信息) 4具有數(shù)據(jù)刪除功能; (如:客戶退房時刪除客戶的基本信息) 5具有數(shù)據(jù)查詢功能; (如按房號查詢、按姓名查詢、空余客房查詢等查詢房間信息、客戶信息) ; 6具有多種統(tǒng)計功能; (如:某住客按照入住房間類型幾天輸計算應付多少費用等) 本
7、系統(tǒng)開發(fā)由分析、設計、實施、調試和測試等階段組成。通過一個菜單 界面,提示用戶進行信息輸入輸出,提供客房信息錄入,客戶入住登記,客房 信息修改,客房信息刪除,退房結算,查詢空房,已住房相關信息的功能,并 在最后具有通過文件的形式保存客房信息、住客信息的功能。由此構成一個簡 單的,供客房工作人員進行客房管理、住客登記、查詢一體化的客房管理系統(tǒng)。 二、二、 需求分析需求分析 2.12.1 系統(tǒng)需求系統(tǒng)需求 根據(jù)題目要求,要求對客戶信息進行輸入、輸出等操作;在程序中需要瀏 覽客戶的信息,應提供顯示、統(tǒng)計、查詢、修改等操作;另外還應提供鍵盤式 選擇菜單實現(xiàn)功能選擇。 2.22.2 開發(fā)環(huán)境開發(fā)環(huán)境 系
8、統(tǒng)開發(fā)平臺:中文 windows XP 系統(tǒng)開發(fā)工具:Microsoft Visual C+ 6.0。 4 系統(tǒng)開發(fā)語言:C+ 三、三、系統(tǒng)分析及類的設計系統(tǒng)分析及類的設計 3.13.1 系統(tǒng)分析系統(tǒng)分析 按照需求分析所得,客房信息系統(tǒng)有以下幾個功能模塊: 1.1. 新建兩個類;新建兩個類; 分別為 Customer 和 Room ,其中 Customer 類中包含住客姓名、身份證號、 年齡、入住日期等相關信息,Room 類包含房間號,類型,價格等相關信息。 2.2. 錄入客房信息;錄入客房信息; 先判斷是否已存在客房信息,如果已存在,則提示選擇是否再次添加;若 不存在,則添加客房信息。 3.
9、3. 住客登記模塊;住客登記模塊; 頁面首先顯示目前剩余客房信息,后提示客戶選擇入住房號,登記相關客 戶信息,登記入住成功。 4.4. 修改客房信息;修改客房信息; 讀取保存的客房信息數(shù)據(jù),根據(jù)客房編號查找所需修改的客房信息,然后 根據(jù)具體所需,修改成員參數(shù)。 5.5. 退房結算模塊;退房結算模塊; 頁面首先顯示目前已住客房信息,后提示客戶選擇退房房號,確認退房 后,解除客戶與客房關聯(lián),并提示需要繳納房費金額,退房成功。 6.6. 查詢客房函數(shù);查詢客房函數(shù); 分按編號、類型、客戶姓名查找客房信息,同時可以查看當日所有客房、 已住客房、剩余客房信息,這樣可以更具有人性化來選擇所剩余的客房,從而
10、 進行日常安排。 7.7. 刪除客房信息模塊;刪除客房信息模塊; 從保存中的文件中讀取信息,刪除需要刪除的信息,完善現(xiàn)在的客房運作。 8.8. 退出系統(tǒng)函數(shù);退出系統(tǒng)函數(shù); 在退出系統(tǒng)的同時,進行文件保存,方便日后再次讀取客房信息。 根據(jù)需求分析,可以對這個系統(tǒng)的設計分為以下幾個模塊: 5 客房管理系統(tǒng) 客房 錄 入 住客 登 記 客房 修 改 退 房 結 算 查 詢 信 息 刪 除 信 息 房號 查 詢 姓名 查 詢 類型 查 詢 所有 客 房 已 住 客 房 所有 空 房 圖一:系統(tǒng)功能圖一:系統(tǒng)功能 3.23.2 類的設計類的設計 根據(jù)需求分析,有客房類和客戶類 (1) 、客戶類 客戶類
11、中的主要成員有:name為客戶姓名,id為客戶身份證號碼,age 為 年齡,roomnum為入住房號。開始初始化。 具體如下: string name; /姓名 string id; /身份證號 string sex;/性別 int age; /年齡 int roomnum; /入住房號 string ruzhum; /入住日期 string ruzhut;/入住時間 string lidianm;/離店日期 string lidiant;/離店時間 int staytime; /入住天數(shù) (2)客房類 客房類中的主要成員有:num是客房編號,type是客房類型,price是客房 價格, 具體
12、如下: int num;/房號 int price; /價格 string type; /類型 int renshu; /入住人數(shù) int yajin; /客房押金 6 四、系統(tǒng)的數(shù)據(jù)設計及實現(xiàn)四、系統(tǒng)的數(shù)據(jù)設計及實現(xiàn) 4.14.1 主函數(shù)設計主函數(shù)設計 主界面中顯示客房管理系統(tǒng)的全部信息,客房信息的錄入,客人入住登記, 客房信息的修改,客人退房結算,查詢(包括按房間號,按房間類型,按客戶 姓名查詢,同時還有輸出所有空房信息,所有客房信息,已住客房信息) ,刪除 客房信息。最開始先讀入客房、住客文件中的信息,然后通過 switch 函數(shù)調用 其它函數(shù)實現(xiàn)其它功能。 流程圖流程圖 根據(jù) choo
13、se 的值調用各功能模塊函數(shù) N Y 輸入 choose,判斷 choose 是否是 1-7 圖二圖二 酒店客房管理系統(tǒng)如圖三所示: 圖三圖三 顯示各功能選項 7 4.24.2 客房錄入函數(shù)設計客房錄入函數(shù)設計 調用該函數(shù)模塊時,先利用 for 循環(huán)查找是否已經有客房信息,如果已有 客房信息,提示是否再次添加,然后依次錄入房型、價格等信息。最后通過 if,else if 函數(shù)實現(xiàn)繼續(xù)添加客房的功能。 如圖四所示: 圖四圖四 4.34.3 入住登記模塊設計入住登記模塊設計 入住登記時,先顯示當日剩余未住客房情況,供客戶選擇,后通過 cin、cout 提示用戶,讀入客戶信息,與客房信息相關聯(lián)。如圖
14、五所示。 圖五圖五 8 4.44.4 客房信息修改模塊設計客房信息修改模塊設計 提示根據(jù)編號尋找到客房并輸出該客房內容,然后詢問用戶是否要修改客 房信息,修改界面如圖六、圖七所示。 圖六圖六圖七圖七 4.54.5 退房結算模塊設計退房結算模塊設計 一個好的客房管理系統(tǒng),必然要有退房結算功能。該功能通過顯示已住客 房信息,提示客戶輸入入住的客房號,搜索客房號,找到房號后,會顯示應該 收取的房費金額,確認退房后,該客房號信息重新初始化,達到退房目的。如 下圖所示: 圖八圖八 圖九圖九 9 4.64.6 查詢模塊設計查詢模塊設計 分別實現(xiàn)按房間號、按姓名,和按房間類型查詢客房信息的功能,還可實 現(xiàn)輸
15、出所有客房信息、空房信息、已住房信息的功能。如下圖所示。 圖十圖十 圖十一圖十一 圖十二圖十二 4.74.7 客房信息刪除模塊設計客房信息刪除模塊設計 提示根據(jù)編號尋找到客房并輸出該客房內容,然后詢問用戶是否要刪除客 房信息 通過 IF 語句,如果該客房下仍有住客,提示是否仍要刪除客房、住客信息、 刪除界面如下圖所示。 圖十三圖十三 10 4.84.8 保存文件和讀入文件功能模塊設計保存文件和讀入文件功能模塊設計 為了方便之后進行維護,應該具備保存客戶和客房信息的功能,所以進行 該模塊設計。在主函數(shù)模塊中,開始先讀入客房、客戶信息文件中的信息,分 門別類的存進數(shù)組中,再進行增加、查找、修改等,
16、后在選擇主界面中退出系 統(tǒng)選項時,保存已經存入數(shù)組的信息。 關鍵代碼如下: void write(Room * room,Customer *customer) /保存房間信息 ofstream Str(“客房信息.txt“,ios_base:trunc); ofstream C(“客戶信息.txt“,ios_base:trunc); if (!Str|!C) cout兩個讀取符,一個一個把數(shù)組中的字符(串) 存入文件中。在存入文件的時候,存入的時候字符與字符之間沒有間隔,導致 讀取的時候,出現(xiàn)一整片讀取錯誤的狀況。后來,修改了存入文件中,用 t設置字符跳格之后,讀取文件成功。 2、在客房錄入
17、函數(shù)模塊中,我設置了客房錄入從房間號 300 開始。但是這 樣子,遇到了一些問題。比如,雖然在第一次的時候,能正確錄入。但是當再 次錄入的時候,也依舊從房間號 300 開始錄入,相當于前面錄入的客房信息已 經被抹掉了。經過我從網上查詢后,運用了 static 函數(shù)。因為 static 函數(shù)有 這樣的作用, 平時無 static 定義的變量的含義是由程序自動控制變量的生存 周期,通常指的就是變量在進入其作用域的時候被分配,離開其作用域的時候 被釋放;而 static 不一樣,變量在程序初始化時被分配,直到程序退出前才被 釋放;也就是 static 是按照程序的生命周期來分配釋放變量的,而不是變量
18、自 己的生命周期。所以我在客房錄入函數(shù)模塊中,運用了 static 函數(shù)定義房間號 number 變量,使其成為靜態(tài)局部變量。這樣就可以在每次退出系統(tǒng)后,都記錄 之前最后一次錄入的房間號了。 3、在程序編譯時常常會出現(xiàn)各種或多或少的錯誤提示,其原因往往是程序 代碼出現(xiàn)了一些細節(jié)上的簡單錯誤,或是分號缺失,或是大括號不對應,或是 未定義變量等各種常見錯誤。這些錯誤雖不是致命性的嚴重失誤但卻影響了程 序的編譯和連接,最終仍不能使程序正常執(zhí)行。為了能夠消除這些錯誤,必須 不斷地、反復地修改程序代碼,并且不斷的調試運行。 12 六、系統(tǒng)特色及關鍵技術六、系統(tǒng)特色及關鍵技術 本系統(tǒng)在設計之初,有很多可圈
19、可點的想法點子,讓系統(tǒng)有一定的特色。 但在實際操作過程中,卻出現(xiàn)各種各樣的問題,包括時間問題,個人水平問題 等等,導致有些功能不能得以實現(xiàn)。故在系統(tǒng)完成后,我審閱了程序,沒有很 大的特色。但是小特色還是有以下幾點的。 在房間錄入函數(shù)模塊,如果之前已經錄入了房間,會有提示說之前已經錄 入客房信息,是否再次錄入。這是比較人性化的一方面。這個主要是在錄入客 房信息時,運用了 for 函數(shù)循環(huán)查找是否之前已經錄入了客房信息,然后用 if 語句在已經錄入和未錄入之間選擇,組成了以上的可以提示信息的功能。 1、在住客入住登記模塊,在開始的界面,會首先提示當日剩余的客房信息, 包括類型、價格等等,以便供客戶
20、更好的選擇房間。這里沒有用到多大的技術, 主要是在該函數(shù)模塊里面,調用了剩余客房函數(shù)模塊,使其先顯示剩余客房信 息,讓客戶有更好的選擇權。 關鍵代碼如下: cout #include #include #include using namespace std; /*問題描述:該系統(tǒng)能簡單實現(xiàn)對客棧的住宿情況進行管理。至少包括以下信息: 房號、房型、單價(每床) 、已住人數(shù); 住客姓名、性別、年齡、身份、身份證號碼,房號,床號,入住日期、入住時間、離店日期、離店時間。 這些信息應存放在兩個文件中,分別是客房信息文件、住客信息文件?!胺啃汀翱扇≈?1-3,分別表示單人 間、雙人間、通鋪(可以住很多
21、人的房間) 功能要求: 1具有建立數(shù)據(jù)文件(客房信息文件、住客信息文件)功能; 2具有數(shù)據(jù)輸入功能; 3具有數(shù)據(jù)修改功能; 4具有數(shù)據(jù)刪除功能; 5能查詢(查找)一些基本信息(如按房號查詢、按姓名查詢、空余客房查詢等) ; 6具有多種統(tǒng)計功能(要求有一定的實用性) (如某客房當前有那些空床、某住客應付多少費用、某天住店總人數(shù)和總收入等) 15 說明: (1)功能各方面越完善越好 (2)自定義的數(shù)據(jù)結構可以使用數(shù)組,鏈表,樹等,可以使用多種數(shù)據(jù)結構來存放數(shù)據(jù),然后在其上使 用不同的排序算法。 (3)若用數(shù)組,必須動態(tài)分配空間(文本文件中最好有一行來表示數(shù)組應該有多大,這樣便于動態(tài)分配 空間) *
22、/ /*類定義*/ class Customer /住客信息類 public: string name; /姓名 string id; /身份證號 string sex;/性別 int age; /年齡 int roomnum; /入住房號 string ruzhum; /入住日期 string ruzhut;/入住時間 string lidianm;/離店日期 string lidiant;/離店時間 int staytime; /入住天數(shù) Customer() name=“無“; id=“0“; sex=“0“; age= -1; roomnum=0; ruzhum=“0“; ruzhut
23、=“0“; lidianm=“0“; lidiant=“0“; staytime=0; ; Customer(); ; class Room /客房類 public: int num;/房號 int price; /價格 string type; /類型 int renshu; /入住人數(shù) int yajin; /客房押金 Room() num=0; price=0; type=50; renshu=0; yajin=0; ; Room(); 16 ; /*客房信息錄入功能*/ void room_luru(Room *room); /添加房 void room_luru2(Room *roo
24、m); void room_luru(Room *room)/無房,添房函數(shù) if(room0.num=0) int size; static int Number=300; coutsize; for(int i=0;iroomi.type; coutroomi.price; coutP; if(P=“Y“) room_luru2(room); else if(P=“N“) coutroomi.type;coutroomi.price; coutP;break; else Number+; ; while(P=“Y“|“y“); if(P=“N“|“n“) coutb; if(b=“Y“)
25、int Num; int t=0; coutNum; for(int i=0;icustomeri.name; coutcustomeri.id; coutcustomeri.age; coutcustomeri.sex; coutroomi.yajin; 18 coutcustomeri.ruzhum; coutcustomeri.ruzhut; coutcustomeri.lidianm; coutcustomeri.lidiant; coutcustomeri.staytime; coutNum; int t=0; for(int i=0;ip; if(p=“Y“) cout_type;
26、 roomi.type=_type; cout_price; roomi.price=_price; coutNum; for(int i=0;iB;coutchoose; system(“cls“); switch (choose) case 1:chaxun_num(room,customer); break; /房號查詢 case 2:chaxun_name(room,customer);break; /姓名查詢 case 3:chaxun_type(room,customer); break; /類型查詢 case 4:printall(room);break; /查詢所有客房 cas
27、e 5:printall1(room,customer);break; /查詢已住客房 case 6:printall2(room,customer);break; /查詢所有空房 case 7:p=false;break; default :; break; ; ; /*打印客房信息*/ void printall(Room *room) /打印全部客房信息 21 int t=0; coutNum; for(int i=0;iName; for(int i=0;iNum; for(int i=0;iNum; for(int i=0;iB;coutC;coutroomi.numroomi.ty
28、peroomi.priceroomi.renshuroomi.yajin; i+; ; while(!readcustomer.eof() readcustomercustomerj.roomnumcustomerj.namecustomerj.idcustomerj.sex customerj.agecustomerj.ruzhumcustomerj.ruzhut customerj.lidianmcustomerj.lidiantcustomerj.staytime; j+; 26 ; readroom.close(); readcustomer.close(); int main() R
29、oom room50; Customer customer50; read(room,customer); while(1) coutchoose; system(“cls“); switch (choose) /用戶的選擇 case 1:room_luru(room); break; /輸入客房信息 case 2:check_in(room,customer);break; /客人入住登記 case 3:room_xiugai(room); break; /修改客房信息 case 4:tuifang(room,customer);break; /客戶退房 case 5:chaxun_menu(room,customer); break; /查詢菜單 case 6:delete_room(room,customer); break; /刪除客房信息 case 7:write(room,customer); exit(0); /退出 default : break; return 0; ;
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。