數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、科技大學(xué)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)題目停車(chē)場(chǎng)管理器設(shè)計(jì)院系信息工程學(xué)院專(zhuān)業(yè)計(jì)算機(jī)科學(xué)與技術(shù)姓名馬小強(qiáng)學(xué)號(hào)1167111103指導(dǎo)教師康懿2013年7月5日科技大學(xué)課程設(shè)計(jì)任務(wù)書(shū)課程名稱(chēng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)設(shè)計(jì)題目停車(chē)場(chǎng)管理器設(shè)計(jì)指導(dǎo)教師康懿時(shí)間2013.6.242013.7.5一、教學(xué)要求掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力初步掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問(wèn)題的能力訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開(kāi)發(fā)一般規(guī)進(jìn)行軟件開(kāi)發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法 和作風(fēng)二、設(shè)計(jì)資料及參數(shù)每個(gè)學(xué)生在教師提供的課程設(shè)計(jì)

2、題目中任意選擇一題,獨(dú)立完成,題目選定后不可更換。停車(chē)場(chǎng)管理器設(shè)計(jì)以結(jié)構(gòu)體類(lèi)型表示停車(chē)時(shí)間和車(chē)輛信息,在此基礎(chǔ)上借助棧完成對(duì)車(chē)輛的入場(chǎng)和出場(chǎng)操作, 借助隊(duì)列完成輔助停車(chē)場(chǎng)便道,即存放等待入場(chǎng)車(chē)輛或輔助車(chē)場(chǎng)中的某輛車(chē)出場(chǎng)。要求設(shè)計(jì)類(lèi)(或類(lèi)模板)來(lái)描述棧、隊(duì)列、停車(chē)場(chǎng)及其操作,包含必要的構(gòu)造函數(shù)和析構(gòu) 函數(shù),以及其他能夠完成如下功能的成員函數(shù):壓棧、退棧入隊(duì)列、出隊(duì)列車(chē)輛到場(chǎng)(有車(chē)位即入場(chǎng),否則入便道等待)、車(chē)輛出場(chǎng)(任意位置車(chē)輛均可出場(chǎng))查詢(xún)車(chē)輛信息、輸出停車(chē)場(chǎng)(包括停車(chē)位和便道的車(chē)輛)并設(shè)計(jì)主函數(shù)測(cè)試該類(lèi)。三、設(shè)計(jì)要求及成果分析課程設(shè)計(jì)題目的要求寫(xiě)出詳細(xì)設(shè)計(jì)說(shuō)明編寫(xiě)程序代碼,調(diào)試程序使其能正確

3、運(yùn)行設(shè)計(jì)完成的軟件要便于操作和使用設(shè)計(jì)完成后提交課程設(shè)計(jì)報(bào)告四、進(jìn)度安排資料查閱與討論(1天)系統(tǒng)分析(2天)系統(tǒng)的開(kāi)發(fā)與測(cè)試(5天)編寫(xiě)課程設(shè)計(jì)說(shuō)明書(shū)和驗(yàn)收(2天)五、評(píng)分標(biāo)準(zhǔn)根據(jù)平時(shí)上機(jī)考勤、表現(xiàn)和進(jìn)度,教師將每天點(diǎn)名和檢查根據(jù)課程設(shè)計(jì)完成情況,必須有可運(yùn)行的軟件。根據(jù)課程設(shè)計(jì)報(bào)告的質(zhì)量,如有雷同,則所有雷同的所有人均判為不及格。根據(jù)答辯的情況,應(yīng)能夠以請(qǐng)晰的思路和準(zhǔn)確、簡(jiǎn)練的語(yǔ)言敘述自己的設(shè)計(jì)和回答教師的提問(wèn)六、建議參考資料數(shù)據(jù)結(jié)構(gòu)億語(yǔ)言版)嚴(yán)蔚敏、吳偉民 主編 請(qǐng)華大學(xué)出版社2004.11數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)案例精編(用C/C+描述),建學(xué) 等 編著,請(qǐng)華大學(xué)出版社2007.2教據(jù)結(jié)構(gòu):用

4、面向?qū)ο蠓椒ㄅcC+語(yǔ)言描述,殷人昆主編,請(qǐng)華大學(xué)出版社2007.6目錄2 TOC o 1-5 h z HYPERLINK l bookmark33 o Current Document 第一章、需求分析4 HYPERLINK l bookmark36 o Current Document 第一節(jié)、問(wèn)題描述4 HYPERLINK l bookmark39 o Current Document 第二節(jié)、基本要求5 HYPERLINK l bookmark42 o Current Document 第二章、概要設(shè)計(jì)5第一節(jié)、設(shè)計(jì)恩想5 HYPERLINK l bookmark48 o Current

5、 Document 第二節(jié)、數(shù)據(jù)結(jié)構(gòu)6 HYPERLINK l bookmark51 o Current Document 第三節(jié)、程序模塊6 HYPERLINK l bookmark54 o Current Document 第三章、詳細(xì)設(shè)計(jì)10第一節(jié)、數(shù)據(jù)類(lèi)型10 HYPERLINK l bookmark60 o Current Document 第二節(jié)、主要操作12 HYPERLINK l bookmark63 o Current Document 第四章、測(cè)試與分析19 HYPERLINK l bookmark66 o Current Document 第一節(jié)、調(diào)試過(guò)程中的主要問(wèn)題19

6、 HYPERLINK l bookmark69 o Current Document 第二節(jié)、測(cè)試結(jié)果的分析與討論19 HYPERLINK l bookmark78 o Current Document 第五章、用戶使用說(shuō)明23 HYPERLINK l bookmark93 o Current Document 第六章、總結(jié)24 HYPERLINK l bookmark104 o Current Document 第七章、發(fā)現(xiàn)問(wèn)題及錯(cuò)誤分析 26 HYPERLINK l bookmark107 o Current Document 第一節(jié)、邏輯錯(cuò)誤函數(shù)26第二節(jié)、修改前得代碼26 HYPERL

7、INK l bookmark110 o Current Document 第三節(jié)、錯(cuò)誤描述27 HYPERLINK l bookmark75 o Current Document 第四節(jié)、解決方案如下28 HYPERLINK l bookmark113 o Current Document 第八章、參考文獻(xiàn)29 HYPERLINK l bookmark119 o Current Document 附錄代碼:30第一章、需求分析根據(jù)題目要求,充分地分析和理解問(wèn)題,描述系統(tǒng)的功能要求,明確問(wèn)題要求做什 么?以及限制條件是什么?第一節(jié),問(wèn)題描述隨著我國(guó)人民生活水平提高和汽車(chē)工業(yè)的高速發(fā)展.越來(lái)越多的

8、家庭擁有了汽車(chē), 但受到土地的F艮制,所以采用立體停車(chē)場(chǎng)是解決停車(chē)難的激、然出路。立體停車(chē)場(chǎng)占地少, 容量大.利用效率高;泊車(chē)與取車(chē)全自動(dòng)化,省時(shí)省力,安全防盜。本文主要以?xún)蓪油?車(chē)場(chǎng)為例,設(shè)計(jì)一能完成存車(chē)與取車(chē)的停車(chē)場(chǎng)系統(tǒng)。有一個(gè)兩層的停車(chē)場(chǎng),每層有6個(gè)車(chē)位,當(dāng)?shù)谝粚榆?chē)停滿后才允許使用第二層.(停 車(chē)場(chǎng)可用一個(gè)二維數(shù)組實(shí)現(xiàn),每個(gè)數(shù)組元素存放一個(gè)車(chē)牌號(hào))每輛車(chē)的信息包括車(chē)牌 號(hào)、層號(hào)、車(chē)位號(hào)、停車(chē)時(shí)間共4項(xiàng),其中停車(chē)時(shí)間按分鐘計(jì)算。假設(shè)停車(chē)場(chǎng)初始狀態(tài)為第一層巳經(jīng)停有4輛車(chē),其車(chē)位號(hào)依次為14 ,停車(chē)時(shí)間依 次為20, 15, 10,5 .即先將這四輛車(chē)的信息存入文件” car.dat”中(數(shù)組

9、的對(duì)應(yīng)元素也 要進(jìn)行賦值)。停車(chē)操作:當(dāng)一輛車(chē)進(jìn)入停車(chē)場(chǎng)時(shí),先輸入其車(chē)牌號(hào),再為它分配一個(gè)層號(hào)和一個(gè) 車(chē)位號(hào),停車(chē)時(shí)間設(shè)為5,最后將新停入的汽車(chē)的信息添加文件car.dat”中,并將在此 之前的所有車(chē)的停車(chē)時(shí)間加5。收費(fèi)管理(取車(chē)):當(dāng)有車(chē)離開(kāi)時(shí),輸入其車(chē)牌號(hào),先按其停車(chē)時(shí)間計(jì)算費(fèi)用,每5分 鐘0.2元.(停車(chē)費(fèi)用可設(shè)置一個(gè)變量進(jìn)行保存),同時(shí)從文件car.dat”中刪除該車(chē)的信 息,并將該車(chē)對(duì)應(yīng)的車(chē)位設(shè)置為可使用狀態(tài)(即二維數(shù)組對(duì)應(yīng)元素清零).按用戶的選擇 來(lái)判斷是否要輸出停車(chē)收費(fèi)的總計(jì)。第二節(jié)、基本要求輸入的形式和輸入值的圍程序以車(chē)牌號(hào)作為車(chē)主的身份驗(yàn)證,以真實(shí)的汽車(chē)車(chē)牌號(hào)為準(zhǔn),當(dāng)取車(chē)或停

10、車(chē)時(shí), 需輸入車(chē)牌號(hào),輸入字段長(zhǎng)7位。輸出的形式用戶:當(dāng)車(chē)主存車(chē)時(shí),要求顯示空閑的車(chē)位,方便車(chē)主在層選擇(層間要滿足,如 果第一層有空則必須停在第一層)。當(dāng)車(chē)主取車(chē)時(shí),可以根據(jù)客戶選擇,決定是否輸出 憑據(jù)。管理員:能夠查詢(xún)?nèi)寇?chē)輛的信息。程序所能達(dá)到的功能用戶存車(chē):包括查找空位,選擇車(chē)位;用戶取車(chē):包括出車(chē),顯示憑據(jù)。更改停車(chē) 場(chǎng)的狀態(tài)。停車(chē)場(chǎng)管理員:初始化停車(chē)場(chǎng),查詢(xún)所有車(chē)的停車(chē)信息(歷史停車(chē)信息),進(jìn)行一 定的查詢(xún)功能。第二章、概要設(shè)計(jì)第一節(jié),設(shè)計(jì)思想本停車(chē)場(chǎng)有兩層,每層有6個(gè)車(chē)位,所以停車(chē)場(chǎng)可用一個(gè)二維數(shù)組實(shí)現(xiàn),用來(lái)描述 現(xiàn)停汽車(chē)的信息。每輛車(chē)用一結(jié)構(gòu)體表示,包括車(chē)牌號(hào)、層號(hào)、車(chē)位號(hào)、停

11、車(chē)時(shí)間和 停車(chē)標(biāo)志位(標(biāo)志是否停車(chē))。當(dāng)車(chē)入庫(kù)時(shí),將更改二維數(shù)組的信息,當(dāng)車(chē)出庫(kù)時(shí),將 信息寫(xiě)入 car.dat 中o 再次進(jìn)入該系統(tǒng)時(shí),還用這個(gè)二維數(shù)組,來(lái)接受car.dat數(shù)據(jù)的讀 入,便于用戶以后的操作,防止停車(chē)信息的流失。此外,由于需要顯示所有汽車(chē)的停車(chē) 信息,所以我們又加了一個(gè)顧客結(jié)構(gòu)體,一個(gè)顧客鏈表,當(dāng)存車(chē)時(shí),新建用戶節(jié)點(diǎn),并 使用頭插法,插于鏈表(便于取車(chē)時(shí)查到用戶,補(bǔ)充完整用戶的信息兒填寫(xiě)用戶的相 關(guān)信息(車(chē)牌號(hào),層號(hào),車(chē)位號(hào),車(chē)入庫(kù)時(shí)刻)。當(dāng)出庫(kù)時(shí),查找相應(yīng)節(jié)點(diǎn),補(bǔ)充完整 用戶信息,包括(用戶留言,停車(chē)時(shí)間總計(jì),花費(fèi))。當(dāng)退出系統(tǒng)后,將巳出庫(kù)的汽車(chē) 的車(chē)主信息,寫(xiě)入歷史文件l

12、ist.dat中,便于管理員的查詢(xún)。將還未取走車(chē)的車(chē)主的信息 存入臨時(shí)文件temp.dat中,防止系統(tǒng)關(guān)閉后數(shù)據(jù)信息的丟失,車(chē)主取車(chē)時(shí)找不到車(chē)。第二節(jié)、教據(jù)結(jié)構(gòu)結(jié)構(gòu)體Car,保存每個(gè)車(chē)位的停車(chē)信息。結(jié)構(gòu)體Snode,保存每個(gè)客戶的信息。結(jié)構(gòu)體U ser,保存管理員信息。結(jié)構(gòu)體Date,保存時(shí)間。數(shù)組Cars,保存整個(gè)停車(chē)狀況。鏈表CustList,保存所有客戶的信息,包括車(chē)巳取走,和車(chē)未取走的。第三節(jié)、程序模塊(1)此停車(chē)場(chǎng)管理系統(tǒng),主要分為以下若干模塊:首先定義用來(lái)模擬停車(chē)的數(shù)組,用來(lái)保存顧客信息的鏈表,保存管理員信息的結(jié)構(gòu) 以及全局變量,然后編寫(xiě)主函數(shù),在此主函數(shù)中實(shí)現(xiàn)對(duì)其它各個(gè)模塊的調(diào)用

13、。在主函數(shù) 中首先調(diào)用option()函數(shù),出現(xiàn)歡迎用戶使用的界面,然后提示用戶進(jìn)入此停車(chē)場(chǎng)管理 系統(tǒng)后,再出現(xiàn)一個(gè)供用戶選擇的主界面(包括顧客界面和停車(chē)場(chǎng)管理員管理界面)。當(dāng)用戶選擇顧客界而時(shí),跳入到顧客界面,再次界面,用戶可以選擇存車(chē)、取車(chē)及返回 主頁(yè)面。在用戶的選擇過(guò)程中,程序又分別存車(chē),取車(chē)函數(shù)調(diào)用以及退出程序這三個(gè)函 數(shù)模塊。其中,當(dāng)存車(chē)時(shí),調(diào)用了顯示空閑車(chē)位狀態(tài)的信息函數(shù),并調(diào)用了保存car.dat 的函數(shù);當(dāng)取車(chē)時(shí),調(diào)用顯示本次停車(chē)情況以及消費(fèi)金額的函數(shù) 并調(diào)用了保存car.dat 的函數(shù)。最后,在主界而選擇“退出”,保存歷史文件list.dat和臨時(shí)文件temp.dat。當(dāng) 用

14、戶選擇車(chē)管系統(tǒng)時(shí),調(diào)用管理員身份驗(yàn)證函數(shù),從而跳入車(chē)管界而,然后相應(yīng)的功能 函數(shù),實(shí)現(xiàn)查詢(xún)所有停車(chē)信息。(2)在以上各個(gè)模塊中,出現(xiàn)的調(diào)用的函數(shù)為:/ 客 戶 void Customer(Car carsFLOORPNUMBER);void CustomerNote(char note100,CustList *cl);/ 存車(chē)int Enterpark(Car carsFLOORPNUMBER,char *license,int &floor,int &pnumber);void GetDate(Date &date);bool IsFull(Car carsFLOORPNUMBER);bo

15、ol IsSame(Car carsFLOORPNUMBER,char *license);/ 取車(chē)int CarOutMenu(char license,int &floor,int &pnumber,int &ptime,float &cost,char note100);bool IsEmpty(Car carsFLOORPNUMBER);void Print(char license,int floor,int pnumber,int ptime,float &cost);void Leavepark(Car carsFLOORPNUMBER,char license,int &flo

16、or,int&pnumber,int &ptime,char note100);/后臺(tái)管理void Manage(Car carsFLOORPNUMBER); /保存到 car.datvoid Savecars(Car carsFLOORPNUMBER);void FourCarIn(Car CarsFLOORPNUMBER); / 初始停車(chē)場(chǎng)int UsertestAdd(); /管理員身份驗(yàn)證void Load(Car carsFLOORPNUMBER); / 加載文件void Loadfile(Car carsFLOORPNUMBER,char license8,int floor,in

17、t pnumber,int ptime,int empty);void Showcars(Car carsFLOORPNUMBER,CustList *cl); /顯示停車(chē)場(chǎng)現(xiàn)存車(chē)void Message(CustList *clr); /顯示客戶信息void News();/ 發(fā)布消息void Income(CustList *cl,char day,float &amount); 一些查詢(xún)void CheckOneCar(CustList *clr,char *license);/ 后臺(tái)中關(guān)于單鏈表的void InitCustList(CustList *&cl);void InsertT

18、oFirst(CustList *cl,char *license,int floor,int pnumber,Date date);void InsertToLst(CustList *cl,char *license,int floor,int pnumber,int ptime,float cost,Date date);void SearchCust(CustList *&cl,char *license,float cost,int ptimecount,char note);void SaveListTemp(CustList *cl);/保存到 temp.datvoid Save

19、List(CustList *cl); /保存到 list.datvoid DeleteAll(CustList *cl);void ReadFromList(CustList *cl);void LoadList(CustList *clr);void DeleteByNote(CustList *cl);(3)各模塊之間的調(diào)用關(guān)系以及算法設(shè)計(jì)下圖是個(gè)模塊之間的調(diào)用關(guān)系(如圖2-1):圖2-1模塊調(diào)用關(guān)系第三章,詳細(xì)設(shè)計(jì)實(shí)現(xiàn)概要設(shè)計(jì)中定義的所有數(shù)據(jù)類(lèi)型,對(duì)主要操作寫(xiě)出實(shí)現(xiàn)算法,對(duì)主程序和其他 模塊寫(xiě)出算法,寫(xiě)出函數(shù)的調(diào)用關(guān)系。第一節(jié),救據(jù)類(lèi)型結(jié)構(gòu)體Car,保存每個(gè)車(chē)位的停車(chē)信息。struct

20、 Carchar license8;int floor;int pnumber;int ptime;int empty;/標(biāo)志位,有車(chē)為1,無(wú)車(chē)為0;結(jié)構(gòu)體Snode,保存每個(gè)客戶的信息。struct Snodechar license8; 車(chē)牌號(hào)Date date; /停車(chē)的時(shí)刻int floor;int pnumber;int ptimecount; /本次停車(chē)總時(shí)問(wèn)float cost;char note100;/顧客留言Snode *next;結(jié)構(gòu)體U ser,保存管理員信息。struct Userchar id10;char name10;char password10;結(jié)構(gòu)體Dat

21、e,保存時(shí)間。struct Datechar day11;char shike9;char weekday10;);數(shù)組Cars,保存整個(gè)停車(chē)狀況。Car CarsFLOORPNUMBER;鏈表,保存所有客戶的信息,包括車(chē)巳取走,和車(chē)未取走的。typedef struct Snode CustList;第二節(jié)、主要操作(1)存車(chē):int Enterpark(Car carsFLOORPNUMBER,char *license,int &floor,int &pnumber) 輸入車(chē)牌號(hào),判斷車(chē)牌號(hào)的有效性coutlicen;while(!licen)|(strlen(licen)! = 7)c

22、outlicen;)查看是否有重復(fù)while if(IsSame(cars,licen) = = 1)cout”巳經(jīng)存在這輛車(chē),請(qǐng)重新輸入:licen;)else break;)判斷車(chē)場(chǎng)是否巳經(jīng)滿了查看是否有空位,并顯示。便于客戶選擇int i,j;if(IsFull(cars) = = 1)cout巳經(jīng)沒(méi)有空車(chē)位了,謝謝惠顧!正在跳轉(zhuǎn)到顧客界面ooo endl;return 0;)int sign=1;/sign標(biāo)志第幾層有空位0表一,1表二coutvv”您可以選擇的車(chē)位”vvendl;coutvvendl;cout.setf(ios:left);cout.width(8);cout”樓層”

23、;cout.width(8);cout車(chē)位號(hào)”;coutendl;for(i = 0;iFLOOR;i+) if(sign=0) break;for(j=0;jPNUMBER;j+) if(carsij.empty=0)&(i = =0)sign=0;cout.setf(ios:left);cout.width(8);couti+1;cout.width(8);coutj+1endl;if(j = = PNUMBER-1) break;)else if(carsij.empty=0)&(i = = 1)cout.setf(ios:left);cout.width(8);couti+1;cout

24、.width(8);coutj+1endl;)coutendl;int temf;couttemf;while if(carssigntemf-1.empty=0)&(temf = 1&temf = 6)修改一個(gè)車(chē)位的信息carssigntemf-1.empty=1;floor=carssigntemf-1.floor=sign+1;pnumber=carssigntemf-1.pnumber=temf;strcpy(carssigntemf-1.license,licen);strcpy(license,licen);carssigntemf-1.ptime=0;修改整個(gè)停車(chē)場(chǎng)的信息for(

25、i=0;iFLOOR;i+)for(j = 0;jPNUMBER;j+)if(carsij.empty= = 1)carsij.ptime+=5;)break;)else cout”輸入有誤!請(qǐng)輸入車(chē)位號(hào)”temf;)return 1;)(2)取車(chē):void Leavepark(Car carsFLOORPNUMBER,char license,int &floor,int&pnumber,int &ptime,char note100)判斷車(chē)位是否巳空if(IsEmpty(cars) = = 1) cout”停車(chē)場(chǎng)巳沒(méi)有車(chē)停放!請(qǐng)確定您是否停車(chē)。endl;return;)查找車(chē)位int si

26、gn=1;/標(biāo)志位,車(chē)庫(kù)有該車(chē)為1,沒(méi)有賦值為零,初始值為0int i,j;while(sign)for(i=0;iFLOOR;i+)for(j = 0;jPNUMBER;j+)if(strcmp(carsij.license,license) = =0)sign=0;floor=i;pnumber=j;ptime=carsij.ptime;)if(sign)cout”您剛才輸入的車(chē)牌號(hào)不存在!”endl;coutlicense;)if(sign= = 0)cout車(chē)巳找到,請(qǐng)稍等。endl;strcpy(note,”0000000000);floor+=1;pnumber+=1;/syste

27、m (cls);延時(shí)for(i = 0;iiIHISTKATOKXffiasdDan not openthis file面面戶管出擇客車(chē)退選;清Tn圖4-1系統(tǒng)主界面客戶界面(如圖4-2)lc: rC: DOCUflEHTS AID SETTINGSADIIIISTRATORilDasdYD2d圖4-2客戶界面存車(chē)(如圖4-3)*C: BOClfflEHTS AffD SITTIMGSVADHLHISTlATORXffiK 3(3( 學(xué) 1 弁 JCXXJf )(,MZJCX重輸入你的車(chē)牌號(hào)Bsses退出? 3 =是,不)請(qǐng)輸X: n2取車(chē)3彼回上一級(jí) 請(qǐng)選擇:圖4-3存車(chē)界面取車(chē)(如圖4-4

28、)|n| xg= C:BOCU1E1T5 AID SETTINGSVU)工BISTRATOEA堂面消費(fèi)iH8S息號(hào)信位 w。 群車(chē), frp . 0 hjl f琴 車(chē) 好 A雋 汽層 很 一至用 扈1務(wù) =的,據(jù)出1現(xiàn) 2服 一一您尊退. _S 一號(hào)明擇=皋 =輸己曾直選一牌B8選留選 笙吊;3請(qǐng)一車(chē)蒙請(qǐng)請(qǐng)請(qǐng)L1I a圖4-4取車(chē)界面管理員界面(如圖4-5)c th DE輸入不同數(shù)壬代表不同功能 三m德羸2input your license33333license floor pnumber ptime11111Q09522222Q19044444Q380版弱B47566666055inpu

29、t your license 77777Lic:ens:e 11111FIooppnumber02222244444777773圖7-4加載錯(cuò)誤(1)第四節(jié)、解決方案如下pt ine16516Q988515圖7-5加載錯(cuò)誤(2)if(!license)return;strcpy(carsfloor-1pnumber-1.license,license);carsfloor-1pnumber-1.floor =floor;carsfloor-1pnumber-1.pnumber =pnumber;carsfloor-1pnumber-1.ptime =ptime;carsfloor-1pnumb

30、er-1.empty =empty;)第八章,參考文獻(xiàn)1、數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)嚴(yán)蔚敏、吳偉民主編康華大學(xué)出版社 2004.112、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)案例精編(用C/C+描述),建學(xué) 等 編 著,康華大學(xué)出版社2007.23、數(shù)據(jù)結(jié)構(gòu):用面向?qū)ο蠓椒ㄅcC+語(yǔ)言描述,殷人昆主編,清華大學(xué)出版社2007.6附錄代碼:#include #include #include #include #include #define FLOOR 2 #define PNUMBER 6struct Carchar license10;int floor;int pnumber;int ptime;int empty;

31、/標(biāo)志位,有車(chē)為1,無(wú)車(chē)為0;/顧客信息節(jié)點(diǎn)struct Customerchar license10; 車(chē)牌號(hào)char date64;/停車(chē)的時(shí)刻int ptimecount; /本次停車(chē)總時(shí)問(wèn)float cost;char note100;/ 顧客留言Customer *next;顧客信息鏈表typedef Customer CustList;/管理員struct Userchar id10;char name10;char password10;int UsertestAdd();void Load(Car cars26);void Loadfile(Car cars26,char li

32、cense10,int floor,int pnumber,int ptime,int empty);void FourCarIn(Car Cars26);void Enterpark(Car cars26);void Showcars(Car cars26);void Savecars(Car cars26);bool IsEmpty(Car cars26);void Print(char license,int floor,int pnumber,int ptime,float &cost);void Leavepark(Car cars26,char license,int &floor

33、,int &pnumber,int &ptime,float &cost,char note100);void CarOutMenu(char license,int &floor,int &pnumber,int &ptime,float &cost,char note100);void Manage(Car cars26);void InitCustList(CustList *&cl);void CreateCustList(CustList *&cl,char *license);void GetDate(char tmp64);void SearchCust(CustList *&c

34、l,char *license,float cost,int pcount);void Customer(Car cars26);void CustomerNote(char note100);void EachGuideInfor(Car c);游客個(gè)人信息的自我查詢(xún)void EachGuideInfor(Car c)cout.setf(ios:left);cout.width(10);cout車(chē)牌號(hào)”;cout.width(8);cout”樓層”;cout.width(8);cout車(chē)位號(hào)”;cout.width(8);cout停車(chē)開(kāi)始時(shí)間endl;cout.setf(ios:left);

35、cout.width(10);cout.width(8);coutc.floor;cout.width(8);coutc.pnumber;cout.width(8);coutc.ptimeendl;)顧客留言void CustomerNote(char note100)coutnote;)/存車(chē)void Enterpark(Car cars26)coutinput your licenselicen;while(!licen)coutinput your licenselicen;)判斷車(chē)庫(kù)是否巳經(jīng)滿了,順便將原來(lái)的ptime加5int i,j;for(i = 0;i2;i+)for(j =

36、0;j6;j+)if(carsij.empty= = 1)carsij.ptime +=5;)elsecarsij.floor =i+1;carsij.pnumber =j+1;carsij.ptime=5;carsij.empty=1;strcpy(carsij.license,licen);return; 如果使用break,則只能跳出單層循環(huán), )顯示停車(chē)信息/ cout”顯示停車(chē)信息? (Y:是,N:否)endl;/couta;/ if(a = = Y)/ (EachGuideInfor(cars);)取車(chē)void Leavepark(Car cars26,char license,i

37、nt &floor,int &pnumber,int &ptime,float&cost,char note100)判斷車(chē)位是否巳空if(IsEmpty(cars) = = 1)cout停車(chē)場(chǎng)巳沒(méi)有車(chē)停放!請(qǐng)確定您是否停車(chē)。endl;return;)查找車(chē)位int sign=1;/標(biāo)志位,車(chē)庫(kù)有該車(chē)為1,沒(méi)有賦值為零,初始值為0int i,j;while(sign)for(i = 0;i2;i+)for(j=0;j6;j+)if(strcmp(carsij.license,license) = = 0)sign=0;floor=i;pnumber=j;ptime=carsij.ptime;)i

38、f(sign)cout”您剛才輸入的車(chē)牌號(hào)不存在!”endl;coutlicense;)if(sign = = 0)cout”車(chē)巳找到,請(qǐng)稍等。endl;floor+=1;pnumber+=1;/system (cls);延時(shí)for(i = 0;i1000000000;i+);車(chē)出庫(kù),將車(chē)位空出carsfloor-1pnumber-1.floor =0;carsfloor-1pnumber-1.pnumber =0;carsfloor-1pnumber-1.ptime=0;carsfloor-1pnumber-1.empty=0;strcpy(carsfloor-1pnumber-1.lice

39、nse,);/由于floor,pnumber與實(shí)際的二位數(shù)組有區(qū)別,加1)取車(chē)的菜單項(xiàng)void CarOutMenu(char license,int &floor,int &pnumber,int &ptime,float &cost,charnote100)cout1 輸出憑據(jù)vvendl;cout2 留言”endl;cout”3 直接退出endl;while couti;if(i3)cout您的操作非法!”endl;continue;)switch(i)case 1:cout現(xiàn)有汽車(chē)停車(chē)信息endl;Print(license,floor,pnumber,ptime,cost);brea

40、k;case 2:CustomerNote(note);break;case 3:break;)if(i = = 1|i = =2) continue;else break;)得到當(dāng)前時(shí)間void GetDate(char tmp64)time_t t = time( 0 );strftime(tmp, sizeof(tmp), %Y/%m/%d %X %A”,localtime(&t);)bool IsEmpty(Car cars26)int i,j;for(i = 0;i2;i+)for(j = i;j6;j+)if(carsij.empty= = 1) return false;retu

41、rn true;)逐條添加記錄到car.dat中void Savecars(Car cars26)FILE* fp = fopen(car.txt”,wb”);if(fp=NULL)return;)/to fileCar car;int i=0;int j=0;while(i2)while(j6)if(carsij.empty = = 1)car.floor =carsij.floor ;strcpy(car.license ,carsij.license );car.pnumber =carsij.pnumber ;car.ptime =carsij.ptime ;car.empty=car

42、sij.empty ;/ fwrite(&cars,sizeof(car),1,fp);/ 如果寫(xiě)成這樣,每次都從car00地址開(kāi)始寫(xiě)入,回報(bào)原來(lái)的容覆蓋掉,加深了我對(duì)fwrite()的理解fwrite(&car,sizeof(car),1,fp);)j+;)i+;)fclose(fp);)void Load(Car cars26)FILE* fp = fopen(car.txt”,rb”);if(fp=NULL)coutcan not open this fileendl;return;)Car car;int n;while(!feof(fp)/read one car informati

43、onn = fread(&car,sizeof(car),1,fp);if(n! = 1)break;/ coutcar.license car.floor car.pnumber car.ptime endl;Loadfile(cars,car.license ,car.floor,car.pnumber ,car.ptime ,car.empty );)fclose(fp);)輸出收費(fèi)后個(gè)人憑據(jù)void Print(char license,int floor,int pnumber,int ptime,float &cost)計(jì)算費(fèi)用cost=ptime*float (0.2);輸出co

44、ut.setf(ios:left);cout.width(10);cout車(chē)牌號(hào)”;cout.width(8);cout”樓層”;cout.width(8);cout車(chē)位號(hào)”;cout.width(8);cout消費(fèi)”endl;cout.setf(ios:left);coutlicense;cout.width(8);coutfloor;cout.width(8);coutpnumber;cout.width(8);coutcostendl;)void FourCarIn(Car cars26)/4車(chē)進(jìn)庫(kù)Car c;int i;cout請(qǐng)輸入四輛車(chē)的信息:endl;for(i = 0;i4;i

45、+)cout第i+1c.license;cout第i+1c.floor;cout第i+1c.pnumber;cout”第i+1c.ptime;c.empty=1;Loadfile(cars,c.license,c.floor,c.pnumber,c.ptime,c.empty );)/寫(xiě)入文件 car.datSavecars(cars);)記錄一個(gè)停車(chē)位的狀態(tài)void Loadfile(Car cars26,char license10,int floor,int pnumber,int ptime,int empty )if(!license)return;strcpy(carsfloor-

46、1pnumber-1.license,license);carsfloor-1pnumber-1.floor =floor;carsfloor-1pnumber-1.pnumber =pnumber;carsfloor-1pnumber-1.ptime =ptime;carsfloor-1pnumber-1.empty =empty;)void Showcars(Car cars26)int i,j;cout.setf(ios:left);cout.width(10);cout車(chē)牌號(hào)”;cout.width(8);cout”樓層”;cout.width(8);cout車(chē)位號(hào)”;cout.wid

47、th(8);cout停車(chē)時(shí)間endl;for(i = 0;i2;i+)for(j = 0;j6;j+)if(carsij.empty= = 1)cout.setf(ios:left);cout.width(10);coutcarsij.license;cout.width(8);coutcarsij.floor;coutcarsij.pnumber;cout.width(8);coutcarsij.ptimeid;cout”請(qǐng)輸入密碼password;for(i = 0;i10;i+)if(!strcmp(UserArri.id,id)&!strcmp(UserArri.password,pa

48、ssword)n = 1;break;)if(n)break;)i=0;count+;cout密碼或賬號(hào)錯(cuò)誤,;if(count=2|k=2)cout您今天巳累計(jì)輸錯(cuò)count”次-”;coutendl;cout輸入數(shù)字1表示同意注冊(cè),其他則表示不同意條款”tip;if(tip= = 1)if(k=2)cout很遺憾,系統(tǒng)管理員用戶總數(shù)達(dá)到上限,無(wú)法注冊(cè),若需 注冊(cè),請(qǐng)聯(lián)系管理員endl;return 0;)elsecout請(qǐng)輸入要注冊(cè)賬號(hào)id;strcpy(UserArrk+1.id ,id);cout請(qǐng)輸入您的姓名”name;strcpy(UserArrk+1.name ,name);char password10;cinpassword;strcpy(UserArrk+1.password ,password);cout注冊(cè)成功,系統(tǒng)正在為您跳轉(zhuǎn)到登陸界面”end

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論