數(shù)據(jù)結(jié)構(gòu):停車場管理系統(tǒng)_第1頁
數(shù)據(jù)結(jié)構(gòu):停車場管理系統(tǒng)_第2頁
數(shù)據(jù)結(jié)構(gòu):停車場管理系統(tǒng)_第3頁
數(shù)據(jù)結(jié)構(gòu):停車場管理系統(tǒng)_第4頁
數(shù)據(jù)結(jié)構(gòu):停車場管理系統(tǒng)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

—??---------------------數(shù)據(jù)結(jié)構(gòu)實(shí)訓(xùn)報(bào)告----------------------??—

目錄

一、實(shí)訓(xùn)目的...............................................-2-

二、實(shí)訓(xùn)內(nèi)容...............................................-2-

1.實(shí)驗(yàn)題目:停車場管理..........................................-2-

2.具體內(nèi)容........................................................-2-

3.功能.............................................................-2-

三、算法分析...............................................-2-

1.主模塊圖.........................................................*2-

2.程序要點(diǎn)與說明....................................................-3-

四、程序代碼設(shè)計(jì)...........................................-3-

五、程序運(yùn)行結(jié)果...........................................-7-

六、本次實(shí)訓(xùn)的總結(jié)與心得................................-11-

數(shù)據(jù)結(jié)構(gòu)實(shí)訓(xùn)報(bào)告?

一、實(shí)訓(xùn)目的

了解順序棧的結(jié)構(gòu)特點(diǎn)及有關(guān)概念,掌握順序棧的建立、入棧及出棧的基本操

作算法

二、實(shí)訓(xùn)內(nèi)容

1.實(shí)驗(yàn)題目:停車場管理

2.具體內(nèi)容

設(shè)停車場是一個(gè)可停放M輛汽車的狹長通道,且惟獨(dú)一個(gè)大門可供汽車進(jìn)出。汽車

在停車場內(nèi)按車輛到達(dá)時(shí)間的先后順序,挨次由北向南羅歹此大門在最南端,最先到

達(dá)的第一輛車停放在車場的最北端),若車場內(nèi)已停滿n輛汽車,則顯示停車場已滿;

當(dāng)停車場內(nèi)某輛車要離開時(shí),在它之后進(jìn)入的車輛必須先退出車場為它讓路,待該

輛車開出大門外,其他車輛再按原次序進(jìn)入車場,每輛停放在車場的車在它離開停

車場時(shí)必須按它停留的時(shí)間長短交納費(fèi)用。

3.功能

(1)汽車在停車場內(nèi)按車輛到達(dá)時(shí)間的先后順序,挨次停入停車場,輸入車輛

的車牌號及駛?cè)霑r(shí)間;

(2)若車場內(nèi)已停滿M輛汽車,則顯示停車場已滿;

(3)若車牌號重復(fù),則重新輸入車牌號;

(4)車輛離開,輸入離開車輛的車牌號,在它之后進(jìn)入的車輛退出車場進(jìn)入臨

時(shí)棧為它讓路,待該輛車開出后,其他車輛再按原次序進(jìn)入車場;

(5)如果無此車牌號,說明庫中無此車輛,選擇其它指令;

(6)車輛離開,輸入車輛離開時(shí)間,并按它停留的時(shí)間長短交納費(fèi)用;

(7)顯示停車場內(nèi)所有車輛的信息。

三、算法分析

1.主模塊圖

-2-

-----數(shù)據(jù)結(jié)構(gòu)實(shí)訓(xùn)報(bào)告?

2.程序要點(diǎn)與說明

⑴結(jié)構(gòu)體:本程序共有兩個(gè)結(jié)構(gòu)體。Carinfo存儲車輛信息,StackSq存儲停車

場信息,二者定義如下。

typedefstruct〃車輛信息

(

intCarNo;//車牌號

intlnTime;〃進(jìn)場時(shí)間

JCarlnfo;

structStackSq{

Carinfostack[M];〃存儲信息

inttop;〃指向棧頂位置的整型變量

};

(2)函數(shù)設(shè)計(jì):本程序共有六個(gè)函數(shù)及一個(gè)主函數(shù),具體定義和作用如下

voidInitStack(structStackSq*S)初始化停車場

voidPush(structStackSq*s,Carinfox)往存儲停車場的棧內(nèi)插入車輛信

息x,被函數(shù)Reach引用

CarinfoPop(structStackSq*s)刪除棧頂元素,被函數(shù)Leave引用

voidDisplay(structStackSq*s)顯示所有車輛信息

voidReach(structStackSq*s)車輛到達(dá)

voidLeave(structStackSq*s)車輛離開

voidmain()

(3)其它設(shè)計(jì):定義M=3,規(guī)定停車場內(nèi)最多的停車數(shù);Price=2,規(guī)定每小時(shí)

停車的價(jià)格為2元/小時(shí)。其具體應(yīng)用如下:

if(s->top==M-1)〃停車場已滿

停車場已滿,無法停車

>>停車費(fèi)用:卻元(%01元/小時(shí)

四、程序代碼設(shè)計(jì)

#include<stdio.h>

include<stdlib.h>

#defineM3〃停車場內(nèi)最多的停車數(shù)

#definePrice2//每小時(shí)停車的價(jià)格(單位:元)

typedefstruct〃車輛信息

(

intCarNo;〃車牌號

intlnTime;〃進(jìn)場時(shí)間

-3-

數(shù)據(jù)結(jié)構(gòu)實(shí)訓(xùn)報(bào)告?

JCarlnfo;

〃停車場信息(順序棧類型)

structStackSq{

Carlnfostack[M];〃存儲信息

inttop;//指向棧頂位置的整型變量

);

//初始化停車場

voidlnitStack(structStackSq*S)

(

S->top=-1;

)

〃往存儲停車場的棧內(nèi)插入車輛信息x,被函數(shù)Reach引用

voidPush(structStackSq*s,Carlnfox)

(

if(s->top==M-1)〃停車場已滿

停車場已滿,無法停車

else

(

s->top++;

s->stack[s->top]=x;

)

)

〃刪除棧頂元素,被函數(shù)Leave引用

CarinfoPop(structStackSq*s)

(

if(s->top<=-1)

(

停車場內(nèi)無任何車輛

)

s->top

returns->stack[s->top+1];

)

//顯示所有車輛信息

voidDisplay(structStackSq*s)

(

inti;〃循環(huán)控制變量i

》》車牌號停車時(shí)間《《

for(i=0;i<=s->top;i++)〃挨次輸出車輛的信息

%4d

-4-

數(shù)據(jù)結(jié)構(gòu)實(shí)訓(xùn)報(bào)告?

[i].InTime);

)

〃車輛到達(dá)

voidReach(structStackSq*s)

(

Carinfocar;//car用于存儲駛?cè)胲囕v的信息

inti,flag=O;//i為循環(huán)控制變量,flag為控制循環(huán)

的標(biāo)記

歡迎進(jìn)入!請輸入車牌號:

do//do-while循環(huán),保證車牌號無重復(fù)

(

for(i=0;i<=s->top;i++)

(

if(car.CarNo==s->stack[i].CarNo)

>>車庫中已有此車輛,請重新輸入車牌號

flag=1;〃如果有重復(fù),則flag=1

)

else

flag=O;//如果無重復(fù),則flag=O

)

}while(flag==1);//如果flag=1,輸入車牌號,直到車牌號無重復(fù)

請輸入進(jìn)場時(shí)間:

Push(s.car);//將車輛car的信息輸入到存儲停車場信息的棧中

>>停車場已有車輛數(shù)

〃車輛離開

voidLeave(structStackSq*s)

{

structStackSqs1;〃暫時(shí)棧s1,存儲從停車場中導(dǎo)出的信息

Carinfocar,t;//car,存儲要離開的車的編號和離開時(shí)間;

t作為媒介,實(shí)現(xiàn)停車場棧和暫時(shí)棧的數(shù)據(jù)交換

inti=O,j=O;〃i,j同為循環(huán)控制變量

intx=0;〃存儲停車場內(nèi)元素個(gè)數(shù)

lnitStack(&s1);//初始化暫時(shí)棧s1

請輸入要離開的車牌號

-5-

數(shù)據(jù)結(jié)構(gòu)實(shí)訓(xùn)報(bào)告?

〃輸入要離開的車牌號

x=s->top;

for(i=0;i<=s->top&&s->stack[i].CarNo!=car.CarNo;i++);

〃循環(huán),當(dāng)找到車輛時(shí),住手循環(huán)

if(i>s->top)//如果沒有此車輛,i大于棧頂指針指向的位置

>>未找到該編號的汽車

else

(

>>停車場中位置為

請輸入離開時(shí)間

//輸入車輛離開時(shí)間

for(j=i+1;j<=x;j++)

(

t=Pop(s);〃導(dǎo)出車輛信息

Push(&s1,t);//將車輛信息導(dǎo)入暫時(shí)棧s1中

)

Display(s);

Display(&s1);

t=Pop(s);〃該汽車離開

>>車牌號為%d的汽車停車時(shí)

?停車費(fèi)用:刈元(%€1元/小

時(shí)

do//暫時(shí)棧s1中的車輛重新回到停車場中

(

t=Pop(&s1);

Push(s,t);

}while(s1.top!=-1);/**/

voidmain()

(

structStackSqCar;〃生成一個(gè)停車場

intchoice;

lnitStack(&Car);//初始化停車場

主菜單

-6-

-----?數(shù)據(jù)結(jié)構(gòu)實(shí)訓(xùn)報(bào)告

(1)車輛到達(dá)

(2)車輛離開

(3)顯示停車場中所有車輛的信息

(0)退出系統(tǒng)

請輸入指令

if(choice<0&&choice>4)continue;

switch(choice)

(

case1:Reach(&Car);break;//車輛至U達(dá),調(diào)用Reach函數(shù)

case2:Leave(&Car);break;//車輛離開,調(diào)用Leave函數(shù)

case3:Display(&Car);break;〃顯示車輛信息,調(diào)用Display函數(shù)

case。:函t(0);〃退出系統(tǒng)

default:break;//如果指令不正確重新循環(huán)

)

}while(1);

五、程序運(yùn)行結(jié)果

1.原始界面

-7-

-------數(shù)據(jù)結(jié)構(gòu)實(shí)訓(xùn)報(bào)告

2.車輛1001于7:00駛?cè)?;車輛1002于8:00駛?cè)?/p>

3j,G:\D.bug\停車場管理系統(tǒng)?

主菜單-----------------------

<1〉車輛到達(dá)

<2〉車輛離開

<3〉顯示停車場中所有車輛的信息

<?!低顺鱿到y(tǒng)

情輸入指令:[

鶻瀛醯然牌號'

1001

>>停車場已有車輛數(shù):1

輸入

父令

關(guān)

進(jìn)

輸1002

場8

>>停車場己有車輛數(shù):2

請竄人指令:

I’

2.輸入錯(cuò)誤車牌號碼1001,停車場中已有此車,無法駛?cè)?;重新輸入正確車牌號2001U

<1〉年輛到達(dá)

<2>牛輛離開

<3>顯示停半場中所有半輛的信息

<。>瓜出系統(tǒng)

褊情輸般入雅指入令〃手、牌當(dāng)一

1001

>>停車場已有車輛數(shù):1

請入

車牌

:1事

關(guān)

或1

進(jìn)

輸?8

>>停車場己有車輛數(shù):2

「舲好褊入車牌號,

1001

鬲播人進(jìn)場時(shí)間?8>>車庫中己有此車輛,請重新輸入車牌號:2001

>>停車場己有車輛數(shù):3

L主

-8-

,數(shù)據(jù)結(jié)構(gòu)實(shí)訓(xùn)報(bào)告

3.車輛2022要停車,但停車場已滿

,G:\D.bu<\停車場管■系統(tǒng).e?e*

指令

人:1

關(guān)

加入車牌號,LI

進(jìn)

?7

》>停車場已有車輛數(shù):[

入陰令”

1002

>>停車場己有車輛數(shù):2

請錨入車牌號,1001

>>主庫中己有此車輛,請重新輸入車牌號:2001

?8

>>停車場己有車輛數(shù):3

前頓零號'2012

已滿,無也停左

>>停車場己有車輛數(shù):3

睛人指令、

4.車輛1002于12點(diǎn)駛出停車場。輸出其停車位置,及停車費(fèi)用

及迎進(jìn)人!環(huán)卷人?車牌號,1002

精瓶關(guān)關(guān)場阡胤8

>>停年場己華年刷數(shù):2

慎輸入小令:1

F迎進(jìn)入請鋪入車牌號,

?1001

I輸入進(jìn)場時(shí)間I8>>主庫中己有此車輛,調(diào)重新輸入車牌號:2001

>>停斗場己有斗輛數(shù),3

H招令

歡>1

賈it-

進(jìn)

曾2012

9主

,

場ff?t

法停

>>停車場已有車輛數(shù):3

晴輸入指令:2

情輸入要離開的主牌號:1?2

a

>〉停車場中位置為2

請?zhí)敫唛_時(shí)間:12

>>主牌號為10空的汽車停主時(shí)間:4

>>停車費(fèi)用?8元(2元/小可>

-(j1-1

-9-

數(shù)據(jù)結(jié)構(gòu)實(shí)訓(xùn)報(bào)告,

5.顯示停車場所有車輛信息

]G?pG:\Debut\停車場管短不統(tǒng).e?e"

1001

>>主庫B已有此車輛.清南新輸入車牌號:2001

>>停車場已有車輛數(shù):3

進(jìn)您2012

>>停¥場已有車輛數(shù)

入更離開的*牌號,,002

>>停車場中位置為2

入離開時(shí)間:12

>>套牌號為,迪汽車停定時(shí)間:4

>>停車費(fèi)用,8元<2兀/小Bf>

入指令:3

》》車牌號停車時(shí)間《《

10017

20018

7日廿

6.退出程序

性斗"G:\D6bu<\停車場修,系統(tǒng).e?e*-I可x|

>>主庫口已有此生輛,請?bào)蛐螺斎塑嚺铺?2001Ld

入拼場時(shí)間,8

>>停車場己有車輛數(shù):3

推令

關(guān)

—入車牌號,U

進(jìn)

翼2012

已.9

法停車

溫馨提示

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

評論

0/150

提交評論