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

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告題目汽車場停車管理系統(tǒng)程序 班級 軟件技術(shù)2班 姓名 梁瑞瑞 學(xué)號 停車場管理系統(tǒng)1 問題描述設(shè)停車場是一個可停放n輛汽車的狹長通道,且只有一個門可供出入。汽車在停車場內(nèi)按車輛到達(dá)時間的先后順序,依次由北向南排列(門在最南端,最先到達(dá)的第一輛車停放在車場的最北端),若車場內(nèi)已停滿n輛汽車,則后來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛汽車即可開入;當(dāng)停車場內(nèi)某輛車要離開時,在它之后進(jìn)入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其他車輛再按原順序進(jìn)入車場,每輛停放在車場的車在它離開停車場時必須按它停留的時間長短交納費用

2、。2 需求分析(1)根據(jù)車輛到達(dá)停車場到車輛離開停車場時所停留的時間進(jìn)行計時收費。(2)當(dāng)有車輛從停車場離開時,等待的車輛按順序進(jìn)入停車場停放。實現(xiàn)停車場的調(diào)度功能。(3)用順序棧來表示停車場,鏈隊表示停車場外的便道。(4)顯示停車場信息和便道信息。(5)程序執(zhí)行的命令為:車輛進(jìn)入停車場 車輛離開停車場 顯示停車場的信息。(以棧S作為停車場,棧S1作為讓路的臨時停車點,隊列Q作為車等待時用的便道。stackMax+1作為車場能夠容納的車輛數(shù),num10作為車所在位置的編號,并且限定車場最多能夠容納10輛車.(2).用戶根據(jù)系統(tǒng)所規(guī)定并提示的要求輸入有關(guān)內(nèi)容,車場所能容納的車輛數(shù)由收費人員來確定

3、,車輛離開時,車主還可以得到收據(jù),便于收費的管理使用;并且系統(tǒng)程序所提供的一些信息可通過特殊硬件顯示出來,供車主了解信息,準(zhǔn)確有效的停車。(3).程序應(yīng)該能夠顯示當(dāng)前存車信息以及等待車的信息,便于管理人員對車輛進(jìn)行管理,并且能夠給等待的車提供一些信息,便于他們能夠及時的停車。(4).程序執(zhí)行的命令為:輸入進(jìn)站信息->輸入出站信息->打印收據(jù)(5).改程序系簡單的用于運用棧與隊列基本知識的工具,不能用于現(xiàn)實中,特別是?!跋冗M(jìn)后出”的規(guī)則大大限定了該程序的推廣,現(xiàn)實世界的車站管理系統(tǒng)比這個遠(yuǎn)遠(yuǎn)復(fù)雜的多。二概要設(shè)計:1.設(shè)定棧的抽象數(shù)據(jù)類型定義為:ADT stack數(shù)據(jù)對象:D=ai|a

4、icharset,i=1,2,n,n>=0數(shù)據(jù)關(guān)系:R1=<ai-1,ai>|ai-1,aiD,i=2,n基本操作:InitStack(&S)操作結(jié)果:構(gòu)造一個空棧S。Push(&S,e)初始條件:棧S已經(jīng)存在。操作結(jié)果:在棧S的棧頂插入新的棧頂元素e。Pop(&S,&e)初始條件:棧S已經(jīng)存在。操作結(jié)果:刪除S的棧頂元素,并以e返回其值。StackTraverse(S,visit()初始條件:棧S已經(jīng)存在。操作結(jié)果:從棧底到棧頂依次對S中的每一個元素調(diào)用函數(shù)visit().ADT stack2. 設(shè)定隊列的抽象數(shù)據(jù)類型定義為:數(shù)據(jù)對象:D=a

5、i|aiElemset,i=1,2,n,n>=0數(shù)據(jù)關(guān)系:R1=<ai-1,ai>|ai-1,aiD,i=2,n約定其中ai為隊列頭,an為隊列尾.基本操作:InitQueue(&Q)操作結(jié)果:構(gòu)造一個空隊列Q.DestroyQueue(&Q)初始條件:隊列Q已存在.操作結(jié)果:隊列Q被銷毀,不再存在.ClearQueue(&Q)初始條件:隊列Q已存在.操作結(jié)果:將Q清為空隊列.QueueEmpty(Q)初始條件:隊列Q已存在.操作結(jié)果:若Q為空隊列,則返回True,否則返回False.QueueLength(Q)初始條件:隊列Q已經(jīng)存在.操作結(jié)果:返回

6、Q的元素個數(shù),即隊列的長度.GetHead(Q,&e)初始條件:Q為非空隊列.操作結(jié)果:用e返回Q的對頭元素.EnQueue(&Q,e)初始條件:隊列Q已存在.操作結(jié)果:插入元素e為Q新的隊尾元素.DeQueue(&Q,&e)初始條件:Q為非空隊列.操作結(jié)果:刪除Q的隊頭元素,并用e返回其值.QueueTraverse(Q,visit()初始條件:Q已存在且非空.操作結(jié)果:從隊頭到隊尾,依次對Q的每一個數(shù)據(jù)元素調(diào)用函數(shù)visit().一旦visit()失敗,則操作失敗.ADT Queue3.本程序包括四個模塊1)主程序模塊Void main()聲明定義調(diào)用棧與隊

7、列的函數(shù)主信息(輸入初始操作信息)2)棧模塊-實現(xiàn)棧抽象數(shù)據(jù)類型3)隊列模塊-實現(xiàn)隊列抽象數(shù)據(jù)類型4)結(jié)構(gòu)體模塊-用于對對象及變量的管理各模塊之間的調(diào)用關(guān)系如下: 主程序模塊 結(jié)構(gòu)體模塊 棧模塊 隊列模塊4.設(shè)計停車管理程序的要求按照從終端讀入的輸入數(shù)據(jù)進(jìn)行模擬管理,每一組輸入數(shù)據(jù)包括三個數(shù)據(jù)項:汽車“進(jìn)站”或“出站”信息、汽車牌照號碼以及進(jìn)站或出站的時刻,對每一組輸入數(shù)據(jù)進(jìn)行操作后的輸出信息為:若是車輛到達(dá),則輸出汽車在停車場內(nèi)或便道上的停車位置;若是車輛離去,則輸出汽車在停車場內(nèi)逗留的時間和應(yīng)交納的費用(在便道上停留不收費),按以順序結(jié)構(gòu)實現(xiàn),隊列以鏈表結(jié)構(gòu)實現(xiàn)。三詳細(xì)設(shè)計:1.時間結(jié)點類

8、型typedef struct time int hour。 int min。 Time。 /*時間結(jié)點*/ 2.車輛進(jìn)出站信息類型typedef struct node char num10。Time reach。 Time leave。 CarNode。 /*車輛信息結(jié)點*/ 3.停車場和便道信息類型typedef struct NODE CarNode *stackMax+1。int top。 SeqStackCar。 /*模擬車站*/typedef struct car CarNode *data。struct car *next。 QueueNode。 typedef struct

9、Node QueueNode *head。 QueueNode *rear。 LinkQueueCar。 /*模擬通道*/ void InitStack(SeqStackCar *,int n)。 /*聲明棧*/初始化,創(chuàng)建兩個新棧S,S1int InitQueue(LinkQueueCar *)。 /*聲明便道*/初始化,創(chuàng)建一個隊列Q用于便道int Arrival(SeqStackCar *,LinkQueueCar *,int n)。 /*車輛進(jìn)站*/void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *,int n)。 /*車輛出站*

10、/void List(SeqStackCar,LinkQueueCar)。 /*顯示存車信息*/ void InitStack(SeqStackCar *s,int n) /*初始化棧*/4.主函數(shù)和其它函數(shù)的偽碼算法void main()/主程序initialization()。 /初始化while(1)scanf(.)。/根據(jù)提示信息輸入想要的操作switch(k)/根據(jù)輸入的數(shù)調(diào)用不同的函數(shù)case 1:case 2:.typedef struct */用于創(chuàng)建不同結(jié)構(gòu)體類型的指針與變量void PRINT(CarNode *p)/調(diào)用輸出函數(shù)Leave(*p,n).根據(jù)求解時間值來求得

11、費用,并通過收據(jù)打印出來5.主要函數(shù)思想本程序是個簡單的棧與隊列的應(yīng)用程序,其所用的函數(shù)也是棧與隊列的基本函數(shù),但在編寫函數(shù)時應(yīng)特別注意它的面向?qū)ο笮耘c窗口化設(shè)計,切身為使用者著想.所以在運用一些函數(shù)時調(diào)用的基本語句有太多的重復(fù),其目的在于實現(xiàn)它本來的基本目的.四調(diào)試分析:1. 本次作業(yè)比較簡單,只是棧與隊列的復(fù)習(xí)應(yīng)用,所以總的調(diào)試比較順利,只是在調(diào)用棧與隊列的函數(shù)時遇到一些問題,比如我想通過鍵盤輸入來確定停車場的停車數(shù),所以初始化時那些操作函數(shù)必須帶有停車數(shù)這個參數(shù)。2. 在定義棧的元素最大空間時如果使用順序棧必須先給它賦初值,但如果通過鏈表就可以實現(xiàn)動態(tài)分配內(nèi)存,為棧動態(tài)開辟新空間。3.

12、在判斷鍵盤輸入是否符合要求時,如果不符合要求應(yīng)循環(huán)賦值,直到符合要求為止,在此利用的do-while循環(huán)語句與外部while語句套用時應(yīng)使用兩次break語句,才能跳出循環(huán),否則會造成死循環(huán)。4. 經(jīng)驗體會:通過DEBUG調(diào)試器和數(shù)據(jù)觀察窗口,可以加快找到程序中的疵點。五軟件使用說明書:本系統(tǒng)為存車信息管理軟件,能實現(xiàn)車場存車及便道存車信息的輸入,輸出,查找等功能,并建立和更新的存車費用信息保存于文件輸出或打印。對于查找等功能能夠按存車位置及車牌號分別進(jìn)行。每輛車的相關(guān)信息包括:車牌號,進(jìn)站時間,出站時間,存車位置,停車費用等。本系統(tǒng)功能還需完善,操作簡單,只是供學(xué)習(xí)之用,并不能作為實際生活使

13、用。下面介紹了此軟件的使用說明:1.停車場.exe;2.進(jìn)入演示系統(tǒng)后首先是一個用戶及管理員使用注意事項界面,進(jìn)入后會出現(xiàn)菜單選項。 1.車輛進(jìn)站 2.車輛出站 3.存車信息 4.離開系統(tǒng) 請選擇: 1|2|3|4.這時可按照提示進(jìn)行你想要的操作。3.對于14的具體操作與內(nèi)容請詳見前面的調(diào)試分析,您便可以輕松操作了!六總結(jié):經(jīng)過這次課程設(shè)計,通過對程序的編制,調(diào)試和運行,使我更好的掌握了棧和隊列基本性質(zhì)和有關(guān)它們之間關(guān)系使用問題的解決方法,熟悉了各種調(diào)用的數(shù)據(jù)類型,在調(diào)試和運行過程中使我更加的了解和熟悉程序運行的環(huán)境,提高了我對程序調(diào)試分析的能力和對錯誤的糾正能力。這次數(shù)據(jù)結(jié)構(gòu)的程序設(shè)計,對于

14、我來說是一個挑戰(zhàn)。我對數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)在程序的設(shè)計中也有所體現(xiàn)。課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識、發(fā)現(xiàn)、提出、分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程。隨著科學(xué)技術(shù)發(fā)展的日新月異,當(dāng)今計算機應(yīng)用在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握計算機開發(fā)技術(shù)是十分重要的。七附錄所用到的庫函數(shù):Stdio.h /*標(biāo)準(zhǔn)輸入/輸出頭文件*/String.h /*包含字符串處理函數(shù)頭文件*/Stdlib.h /*包含動態(tài)存儲與釋放函數(shù)頭文件*/Malloc.h /*包含內(nèi)存分配頭文件*/該停車場管理系統(tǒng)的主要程序如下:/*停車場管理系統(tǒng)*/#in

15、clude<stdio.h>#include<stdlib.h> #include<string.h>#include<malloc.h>/*-*/ #define Max 10int getn()int n。printf("歡迎您光臨順風(fēng)停車場,")。printf("本停車場管理實行24小時制,停車每分鐘0.1元.n")。printf("請輸入停車場可容納的車(最多10輛):")。scanf("%d",&n)。fflush(stdin)。do if(n<

16、;1 | n>10) printf("輸入的車輛數(shù)不在要求范圍內(nèi),請重新輸入!")。 scanf("%d",&n)。 fflush(stdin)。 else break。while(n<1 | n>10)。return n。typedef struct time int hour。 int min。 Time。 /*時間結(jié)點*/ typedef struct node char num10。Time reach。 Time leave。 CarNode。 /*車輛信息結(jié)點*/ typedef struct NODE CarNod

17、e *stackMax+1。int top。 SeqStackCar。 /*模擬車站*/typedef struct car CarNode *data。struct car *next。 QueueNode。 typedef struct Node QueueNode *head。 QueueNode *rear。 LinkQueueCar。 /*模擬通道*/ void InitStack(SeqStackCar *,int n)。 /*聲明棧*/int InitQueue(LinkQueueCar *)。 /*聲明便道*/int Arrival(SeqStackCar *,LinkQueu

18、eCar *,int n)。 /*車輛進(jìn)站*/void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *,int n)。 /*車輛出站*/void List(SeqStackCar,LinkQueueCar)。 /*顯示存車信息*/ void InitStack(SeqStackCar *s,int n) /*初始化棧*/ int i。 s->top=0。 for(i=0。i<=n。i+)s->stacks->top=NULL。 int InitQueue(LinkQueueCar *Q) /*初始化便道*/ Q->

19、head=(QueueNode *)malloc(sizeof(QueueNode)。 if(Q->head!=NULL) Q->head->next=NULL。 Q->rear=Q->head。 return(1)。 else return(-1)。 void PRINT(CarNode *p) /*打印出站車的信息*/ int A1,A2,B1,B2。int a,b,c。 printf("n請輸入離開的時間:/*:*/")。 scanf("%d:%d",&(p->leave.hour),&(p-&g

20、t;leave.min)。fflush(stdin)。doif(p->leave.hour<p->reach.hour | (p->leave.hour=p->reach.hour && p->leave.min<p->reach.min)printf("輸入離開時間比進(jìn)站時間早,請重新輸入!n")。scanf("%d:%d",&(p->leave.hour),&(p->leave.min)。fflush(stdin)。if(p->leave.hour<

21、;0 | p->leave.hour>=24 | p->leave.min<0 | p->leave.min>=60)printf("輸入的時間格式有錯,請重新輸入!")。 scanf("%d:%d",&(p->leave.hour),&(p->leave.min)。 fflush(stdin)。else break。while(p->leave.hour<p->reach.hour | (p->leave.hour=p->reach.hour &&am

22、p; p->leave.min<p->reach.min) | p->leave.hour<0 | p->leave.hour>=24 | p->leave.min<0 | p->leave.min>=60)。printf("車場現(xiàn)在有一輛車離開,請便道里的第一輛車進(jìn)入車場!n")。printf("出站的車的車牌號為:")。puts(p->num)。printf("n")。A1=p->reach.hour。 A2=p->reach.min。 B1=p-

23、>leave.hour。 B2=p->leave.min。a=(B1-A1)*60+B2-A2。if(a>=60)b=a/60。c=a-60*b。elseb=0。c=a。printf(" 祝您一路順風(fēng),歡迎您下次光臨.")。printf("n 收 據(jù)n")。printf("= 車牌號: ")。puts(p->num)。printf("n")。printf("=n")。printf("|進(jìn)車場時刻 | 出車場時刻 | 停留時間 | 應(yīng)付(元)|n")。p

24、rintf("=n")。printf("| %d:%d",p->reach.hour,p->reach.min)。printf(" | %d:%d",p->leave.hour,p->leave.min)。printf(" | %d:%d",b,c)。printf(" | %2.1f",0.1*a)。printf(" |n")。printf("-n")。free(p)。 int Arrival(SeqStackCar *Enter,

25、LinkQueueCar *W,int n) /*車輛到達(dá)*/ CarNode *p。 QueueNode *t。 int a,b。p=(CarNode *)malloc(sizeof(CarNode)。 flushall()。 printf("n請輸入車牌號(七位,例:陜A1234):n")。printf("請嚴(yán)格按照要求輸入車牌號,否則系統(tǒng)會出錯!n")。doa=strlen("陜A1234")。b=strlen(gets(p->num)。fflush(stdin)。if(a!=b)printf("輸入車牌號格式錯

26、誤,請重新輸入(七位)!n")。gets(p->num)。fflush(stdin)。else break。if(a!=b)printf("輸入車牌號格式錯誤,請重新輸入(七位)!n")。while(a!=b)。if(Enter->top<n) /*車場未滿,車進(jìn)車場*/ Enter->top+。 printf("n車輛在車場第%d位置.",Enter->top)。 fflush(stdin)。printf("n請輸入到達(dá)時間:/*:*/")。 scanf("%d:%d",&

27、amp;(p->reach.hour),&(p->reach.min)。fflush(stdin)。doif(p->reach.hour<0 | p->reach.hour>=24 | p->reach.min<0 | p->reach.min>=60)printf("輸入的時間格式有錯,請重新輸入!")。 scanf("%d:%d",&(p->reach.hour),&(p->reach.min)。 fflush(stdin)。elsebreak。while

28、(p->reach.hour<0 | p->reach.hour>=24 | p->reach.min<0 | p->reach.min>=60)。Enter->stackEnter->top=p。 return(1)。 else /*車場已滿,車進(jìn)便道*/ printf("n請該車在便道稍作等待!")。t=(QueueNode *)malloc(sizeof(QueueNode)。 t->data=p。 t->next=NULL。 W->rear->next=t。 W->rear=t

29、。 return(1)。 void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W,int n) /*車輛離開*/ int i, room。 CarNode *p,*t。 QueueNode *q。 /*判斷車場內(nèi)是否有車*/ if(Enter->top>0) /*有車*/ while(1) /*輸入離開車輛的信息*/ printf("n請輸入要離開的車在車場的位置/1-%d/:",Enter->top)。scanf("%d",&room)。fflush(st

30、din)。 if(room>=1&&room<=Enter->top) break。 while(Enter->top>room) /*車輛離開*/ Temp->top+。 Temp->stackTemp->top=Enter->stackEnter->top。 Enter->stackEnter->top=NULL。 Enter->top-。 p=Enter->stackEnter->top。 Enter->stackEnter->top=NULL。 Enter->to

31、p-。 while(Temp->top>=1) Enter->top+。 Enter->stackEnter->top=Temp->stackTemp->top。 Temp->stackTemp->top=NULL。 Temp->top-。 PRINT(p)。/*判斷通道上是否有車及車站是否已滿*/ if(W->head!=W->rear)&&Enter->top<n) /*便道的車輛進(jìn)入車場*/q=W->head->next。 t=q->data。 Enter->top

32、+。 printf("n現(xiàn)在請便道上的車進(jìn)入車場.該車的車牌號為:")。puts(t->num)。printf("n該車進(jìn)入車場第%d位置.",Enter->top)。printf("n請輸入現(xiàn)在的時間(即該車進(jìn)站的時間)/*:*/:")。scanf("%d:%d",&(t->reach.hour),&(t->reach.min)。fflush(stdin)。 doif(t->reach.hour<0 | t->reach.hour>=24 | t-&

33、gt;reach.min<0 | t->reach.min>=60)printf("輸入的時間格式有錯,請重新輸入!")。 scanf("%d:%d",&(t->reach.hour),&(t->reach.min)。 fflush(stdin)。elsebreak。while(t->reach.hour<0 | t->reach.hour>=24 | t->reach.min<0 | t->reach.min>=60)。W->head->next=

34、q->next。 if(q=W->rear) W->rear=W->head。 Enter->stackEnter->top=t。 free(q)。 else printf("n目前便道里沒有車.n")。 else printf("n目前車場里沒有車,來車請直接進(jìn)入車場!")。 /*沒車*/ void List1(SeqStackCar *S) /*列表顯示車場存車信息*/ int i。 if(S->top>0) /*判斷車站內(nèi)是否有車*/ printf("n車場:")。 printf(

35、"n 位置 到達(dá)時間車牌號n")。 for(i=1。i<=S->top。i+) printf(" %d ",i)。 printf("%d:%d ",S->stacki->reach.hour,S->stacki->reach.min)。 puts(S->stacki->num)。 else printf("n目前車場里沒有車")。 void List2(LinkQueueCar *W) /*列表顯示便道信息*/ QueueNode *p。 p=W->head-&

36、gt;next。 if(W->head!=W->rear) /*判斷通道上是否有車*/ printf("n目前正在等待車輛的號碼為:")。while(p!=NULL) puts(p->data->num)。 p=p->next。 printf("n")。 else printf("n目前便道里沒有車.")。 void List(SeqStackCar S,LinkQueueCar W) int flag,tag。 flag=1。 while(flag) printf("n1.車場n2.便道n3.

37、返回n")。 while(1) printf("n請選擇 1|2|3:")。 scanf("%d",&tag)。fflush(stdin)。doif(tag<1|tag>3)printf("輸入有誤,請按要求重新輸入!")。 scanf("%d",&tag)。 fflush(stdin)。elsebreak。while(tag>3 && tag<1)。break。 switch(tag) case 1:List1(&S)。break。 /*列表顯示車場信息*/ case 2:List2(&W)。break。 /*列表顯示便道信息*/ case 3:flag=0。break。/*返回*/default: break。 void main() SeqStackCar Enter,Temp。 LinkQueueCar Wait。int ch。int n。 printf("該停車場管理系統(tǒng)是個比較簡單系統(tǒng),在應(yīng)用的時候請注意要求!

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論