C語言智能停車場(chǎng)系統(tǒng)_第1頁
C語言智能停車場(chǎng)系統(tǒng)_第2頁
C語言智能停車場(chǎng)系統(tǒng)_第3頁
C語言智能停車場(chǎng)系統(tǒng)_第4頁
C語言智能停車場(chǎng)系統(tǒng)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、智能停車場(chǎng)管理系統(tǒng)一、摘要停車場(chǎng)作為交通設(shè)施的組成部分,隨著交通運(yùn)輸?shù)姆泵筒粩喟l(fā)展,人們對(duì)其管理的 要求也不斷提高,都希望管理能夠達(dá)到方便、快捷以及安全的效果。本次方向設(shè)計(jì)主要是 利用C語言平臺(tái)下的VC+6.0編譯器,設(shè)計(jì)一個(gè)方便且效率的智能停車場(chǎng)管理系統(tǒng)。利用 模塊化程序設(shè)計(jì)編寫各個(gè)功能子函數(shù),方便調(diào)用和系統(tǒng)維護(hù);利用堆棧的方法實(shí)現(xiàn)停車場(chǎng) 的車輛駛?cè)牒碗x開。該系統(tǒng)能自動(dòng)錄入停放車輛的各種信息(車牌,時(shí)間等)并自動(dòng)分配 車位以及智能計(jì)算費(fèi)用,同時(shí)也能查詢停車場(chǎng)內(nèi)任意車輛的錄入信息,省事,方便。測(cè)試 表明該智能停車場(chǎng)系統(tǒng) 運(yùn)行良好,能投入實(shí)際使用。二、設(shè)計(jì)目的和意義本次設(shè)計(jì)的目的是設(shè)計(jì)一個(gè)智能

2、的停車場(chǎng)管理系統(tǒng),用戶可以在客戶端上自主的申請(qǐng) 預(yù)約車位和撤銷申請(qǐng);同時(shí),停車場(chǎng)自帶自動(dòng)停放和出站,自動(dòng)計(jì)算停車費(fèi)用;用戶也可 以通過系統(tǒng)查詢特定車輛的停放信息。智能停車場(chǎng)的意義在于:隨著社會(huì)的進(jìn)步和發(fā)展,車輛也在迅速增加,城市交通的瓶 頸不僅體現(xiàn)在道路交通的擁擠上,也體現(xiàn)在傳統(tǒng)停車場(chǎng)管理效率和安全性大大滯后于社會(huì) 發(fā)展需要,給人們的生活帶來了極大的不便。隨著智能大廈和智能小區(qū)等智能建筑的不斷 發(fā)展,與之配套的停車場(chǎng)管理系統(tǒng)應(yīng)運(yùn)而生。智能停車場(chǎng)的產(chǎn)生不但規(guī)范了城市交通管理 和車輛管理水平,還擴(kuò)大了城市的容量,在安全防范方面也有了巨大的保障,同時(shí)還能方 便的和其他智能系統(tǒng)接口,組成更完善的物流及

3、設(shè)備管理系統(tǒng)。三、設(shè)計(jì)原理1、模塊化系統(tǒng)設(shè)計(jì)(1)模塊化設(shè)計(jì)的概念模塊化設(shè)計(jì),簡(jiǎn)單地說就是程序的編寫不是開始就逐條錄入計(jì)算機(jī)語句和指 令,而是首先用主程序、子程序、子過程等框架把軟件的主要結(jié)構(gòu)和流程描述出 來,并定義和調(diào)試好各個(gè)框架之間的輸入、輸出鏈接關(guān)系。逐步求精的結(jié)果是得 到一系列以功能塊為單位的算法描述。以功能塊為單位進(jìn)行程序設(shè)計(jì),實(shí)現(xiàn)其求 解算法的方法稱為模塊化。模塊化的目的是為了降低程序復(fù)雜度,使程序設(shè)計(jì)、 調(diào)試和維護(hù)等操作簡(jiǎn)單化。(2)本次設(shè)計(jì)的功能模塊建立 車輛進(jìn)入函數(shù):記錄駛?cè)胲囕v的車牌號(hào)及駛?cè)霑r(shí)間。 車輛離開函數(shù):計(jì)算車輛停車費(fèi)用并刪除數(shù)據(jù)。 車費(fèi)計(jì)算函數(shù):劃定停車場(chǎng)的收費(fèi)制

4、度。車輛查詢函數(shù):查詢指定的車輛入場(chǎng)記錄。 車輛顯示函數(shù):顯示所有停放車輛。系統(tǒng)框圖圖 1.0 智能停車場(chǎng)系統(tǒng)框圖2、堆棧的原理?xiàng)?Stack)的概念:是限制在表的一端進(jìn)行插入和刪除運(yùn)算的線性表。棧頂(top)和棧底(bottom):允許插入、刪除的這一端稱為棧頂, 另一端稱為棧底。圖 1.1 棧的示意圖棧的插入和刪除遵循后入先出,棧成為后進(jìn)先出表?xiàng)5幕具\(yùn)算 :棧初始化: Init_Stack(&S) 操作結(jié)果:構(gòu)造一個(gè)空棧 S。判??眨?StackEmpty (S)初始條件:棧 S 已存在。 操作結(jié)果:若棧 S 為空棧,則返回1,否則返回 0。入棧: Push(&S,e) 初始條件:棧 S

5、 已存在。 操作結(jié)果:插入元素 e 為新的棧頂元素,棧發(fā)生變化。出棧: Pop(&S,&e) 初始條件:棧 S 已存在且非空。操作結(jié)果:刪除S的棧頂元素并用e返回其值,棧發(fā)生變化。讀取棧頂元素: GetTop(S , &e) 初始條件:棧 S 已存在且非空。操作結(jié)果:用 e 返回棧頂元素,棧不變化。順序棧的類型定義如下:const STACK_INIT_SIZE=100; /順序棧的最大空間 typedef char SElemtype;typedef structSElemtype * elem;int top;int stacksize; SqStack;順序棧的操作方式 設(shè)有定義: Sq

6、Stack S ;棧頂、棧底的位置:設(shè)棧底位置在數(shù)組的 0 端,則入棧時(shí) s.top 加 1,出棧時(shí) s.top 減 1 ??蘸蜅M的狀態(tài):空棧用棧頂指針 top 為-1表示,即 s.top=-1;棧滿用 s.top=stacksize-1 表示。置空棧void InitStack_Sq(SqStack &S, int maxsize=STACK_INIT_SIZE) /構(gòu)造一個(gè)空棧S,初始分配的最大空間為maxsizeS.elem=new SElemTypemaxsize;S. top=-l; /棧中當(dāng)前元素個(gè)數(shù)為0即空棧 S.stacksize=maxsize; /棧最多可以容納 maxs

7、ize 個(gè)元素入棧void Push_Sq(SqStack &S, SElemType e) if (S.top=S.stacksize-1) error( “棧滿);else S.top+;/*棧頂上移*/S.elemS.top=e; /* 元素入棧*/ (9)出棧int Pop_Sq(SqStack &s, SElemType &e) if (s.top=-1) printf( “ stack underflow ” );return 0;else e=s.elems.top; /*獲得棧頂元素的值*/ s.top-;/*棧頂下移*/return 1;四、詳細(xì)設(shè)計(jì)步驟(1)車輛駛?cè)牒瘮?shù):圖

8、 1.2 停車函數(shù)流程圖主要程序代碼:stacknode *into(stacknode *top1,LQueue *Q)stacknode *p,*q;time_t rawtime;/調(diào)用系統(tǒng)時(shí)間函數(shù)struct tm *timeinfo; /時(shí)間結(jié)點(diǎn) time(&rawtime);timeinfo=localtime(&rawtime);p=(stacknode *)malloc(sizeof(stacknode);prin tf(請(qǐng)輸入進(jìn)入停車場(chǎng)車輛的車牌號(hào):);scanf(%s,p-data.num);q=top1;p-data.time.day=timeinfo-tm_mday;p-

9、data.time.hour=timeinfo-tm_hour; p-data.time.min=timeinfo-tm_min; p-data.n=b;(2)車輛離開函數(shù):車輛離開函數(shù)流程圖 車輛離開函數(shù)流程圖 1.3主要程序代碼:stacknode *leave(stacknode *top1,char str,LQueue *Q) int i,day,hour,min;time_t rawtime;struct tm *timeinfo;time(&rawtime); timeinfo=localtime(&rawtime);day=timeinfo-tm_mday; hour=time

10、info-tm_hour;min=timeinfo-tm_min;3)車輛顯示函數(shù): 主要程序代碼:while(top1!=NULL)printf(%s%號(hào)小點(diǎn)小分第d位 n,top1-data.num,top1-data.time.day,top1-data.time.hour,top1-d ata.tim e.min,top1-data.n);top1=top1-next;車輛查詢函數(shù)順序查找NOIF IF無此車打印輸出圖 1.4 車輛查詢函數(shù)流程圖主要程序代碼:void seq_search(stacknode *top1,char str)int i=0;int flag=max;st

11、acknode *p;p=top1;while(flag-)if(strcmp(p-data.num,str)!=0)i+;p=p-next; else break;if(idata.num,p-data.time.day,p-data.time.hour,p-data.time.min, p- dat a.n);elseprin tf(“該車輛未在停車場(chǎng)中);調(diào)用機(jī)器時(shí)間函數(shù):需先聲明 #include主要程序代碼:int timef()int x,y;time_t rawtime;struct tm *timeinfo;time(&rawtime);timeinfo=localtime(&

12、rawtime); x=timeinfo-tm_mday,y=timeinfo-tm_hour;把timeinfo指向的tm結(jié)構(gòu)體中儲(chǔ)存的時(shí)間轉(zhuǎn)換為字符串字符串格式返回,格式為:Www Mmm dd hh:mm:ss yyyy。其中Www為星期;Mmm為月份;dd為日;hh為時(shí);mm為分;ss為秒;yyyy為年份五、設(shè)計(jì)結(jié)果及分析1.車輛駛?cè)牍δ埽狠斎胲嚺铺?hào)之后,系統(tǒng)先判斷停車場(chǎng)是否有空余車位,如果沒有,發(fā)出提示“停車 場(chǎng)已滿,請(qǐng)?jiān)谕獾群颉?;如果有,系統(tǒng)再判斷該車是否已經(jīng)進(jìn)入停車場(chǎng),并給出相應(yīng)的 提示,同時(shí)調(diào)用機(jī)器時(shí)間作為車輛停入時(shí)間,并且為車輛分配內(nèi)存作為存放時(shí)間和停 車位置的空間。進(jìn)入11

13、入進(jìn)為- 一、J.:進(jìn)入11入進(jìn)為- 一、J.:人Jt時(shí) 選 幫車的 戈停11廠一一系二一一碩進(jìn)離崖 M藉示詢岀 一一仁聿顯查退二X- 一“ 12345進(jìn)離崖息 亠呂 車信;八 人T犁氏場(chǎng)14 場(chǎng)停顯查退充 甥內(nèi) 呦進(jìn)離律 車鬻示詢岀息 亠一一!=! 車信 有輛請(qǐng)輸入選項(xiàng)停顯查退充 甥內(nèi) 呦進(jìn)離律 車鬻示詢岀息 亠一一!=! 車信 有輛請(qǐng)輸入選項(xiàng)5: 2please press any key to cont in Lie圖1:5停車功能截圖,please press any key車輛離開功能:用戶輸入車牌號(hào),之后,系統(tǒng)先判斷停車場(chǎng)內(nèi)是否有該車輛,如果沒有,給出相應(yīng)提 示;有的話,系統(tǒng)調(diào)用當(dāng)

14、前機(jī)器時(shí)間,并且和該車存放的過去的機(jī)器時(shí)間做減法運(yùn)算,四舍五入,然后乘上相應(yīng)單價(jià),最后打印輸出用戶的離開時(shí)間和所需要支付的停車費(fèi)用。 diXMicrosoft Visual StudioMyProj車輛離開功能:用戶輸入車牌號(hào),之后,系統(tǒng)先判斷停車場(chǎng)內(nèi)是否有該車輛,如果沒有,給出相應(yīng)提 示;有的話,系統(tǒng)調(diào)用當(dāng)前機(jī)器時(shí)間,并且和該車存放的過去的機(jī)器時(shí)間做減法運(yùn)算,四舍五入,然后乘上相應(yīng)單價(jià),最后打印輸出用戶的離開時(shí)間和所需要支付的停車費(fèi)用。 diXMicrosoft Visual StudioMyProjectsfdgdDebuigfdgd.exe圖1.6車輛離開截圖顯示功能: 系統(tǒng)采用遍歷的算

15、法,將棧里面的所有元素按照“車牌號(hào)”“進(jìn)入時(shí)間”“位置 ”的方式,依次打印顯示出來;如果沒有數(shù)據(jù)則顯示“停車場(chǎng)內(nèi)無車”。圖 1.7 圖 1.7 車輛顯示截圖查詢功能: 用戶輸入車牌號(hào)之后,系統(tǒng)采用遍歷的方式,將該車牌號(hào)和棧內(nèi)的所有車牌號(hào) 一 一 比較,如果查詢失敗,顯示“無此車輛”;若查詢成功,則打印輸出該車牌號(hào)車輛的進(jìn)入 時(shí)間和??课恢谩?234請(qǐng)輸入要翳漓竈野內(nèi)充 有輛 靄內(nèi) bi.進(jìn)離斬輛示詢岀 卜聿顯查退車牌號(hào)1234請(qǐng)輸入要翳漓竈野內(nèi)充 有輛 靄內(nèi) bi.進(jìn)離斬輛示詢岀 卜聿顯查退車牌號(hào)1111進(jìn)入時(shí)間13號(hào)1?點(diǎn)26分please press any key to continue

16、:圖 1.8 查詢功能截圖六、總結(jié)設(shè)計(jì)過程中,由于自己的只是水平有限要實(shí)現(xiàn)某些功能,還需借助強(qiáng)大的互聯(lián)網(wǎng)。在 完成本設(shè)計(jì)的過程中,我既感受到了面對(duì)自己無法解決的問題時(shí)的苦惱,也體會(huì)到問題最 終得以解決時(shí)的快樂。同時(shí),我深刻體會(huì)到要做好一件事情,需要有系統(tǒng)的思維方式和方 法,對(duì)待一個(gè)新的問題,要耐心、要善于運(yùn)用已有的資源來充實(shí)自己。在對(duì)待一個(gè)新事物 時(shí),一定要從整體考慮,完成一步之后再作下一步,這樣對(duì)于系統(tǒng)而言才能更加有效。通 過此次畢業(yè)設(shè)計(jì),我不但對(duì) Eclipse 和數(shù)據(jù)庫有了更深刻的認(rèn)識(shí),積累了使用軟件工程的 思想來開發(fā)軟件的經(jīng)驗(yàn),同時(shí)最重要的是摸索出了一套分析問題和解決問題的方法,這對(duì) 于我將來走上工作崗位受益匪淺七、體會(huì)通過這次課程設(shè)計(jì),讓我對(duì)程序設(shè)計(jì)過程有了更加深入的理解,程序設(shè)計(jì)就有如解決 一實(shí)際問題,從解決實(shí)際問題的角度,我們要明白我們想要程序做什么,怎么做,需要什 么,完成什么效果,最低要求,最高要求,然后再一一實(shí)現(xiàn)他的目標(biāo)。它主要分為幾個(gè)步 驟,首先要了解這個(gè)問題的基本要求,即輸入、輸出、完成從輸入到輸出的要求是什么; 其次,從問題的要害入手,從前到后的解決問題的每個(gè)方面,即從輸入開始入手,著重考 慮如何從輸入導(dǎo)出輸出,在這個(gè)過程中,可確定所需的變量、數(shù)組、函數(shù),然后確定處理 過程算法??傻米詈蠼Y(jié)論。對(duì)課程設(shè)計(jì)的建議,我個(gè)人的看法是對(duì)于這么個(gè)函數(shù)功能

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論