停車場管理系統(tǒng) C 課程設(shè)計
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻薄羈莃蒄袃肀肅蝕蝿肀膅蒃蚅聿羋蚈蟻肈蒀薁罿肇膀莄裊肆節(jié)蕿螁肅莄莂蚇肄肄薇薃膄膆莀袂膃羋薆螈膂蒁荿螄膁膀蚄蝕膀芃蕆罿腿蒞螞裊膈蕆蒅螁膈膇蟻蚇襖艿蒃薃袃莂蠆袁袂肁蒂袇袁芄螇螃袁莆薀蠆袀蒈莃羈衿膈薈襖袈芀莁螀羇莂薇蚆羆肂荿薂羆膄薅羀羅莇蒈袆羄葿蚃螂羃腿蒆蚈羂芁蟻 停車場管理系統(tǒng)一、 需求分析設(shè)計一個停車場管理系統(tǒng),停車場管理系統(tǒng)功能包括:車輛到達(dá),車輛離開,查詢車輛信息等。具體要求如下:(1) 、車輛到達(dá):根據(jù)車輛到達(dá)查詢停車場內(nèi)是否有空位:若尚有空位,則讓車輛進(jìn)停車場,輸入車牌號和車輛進(jìn)停車場的時間;若停車場已滿則可進(jìn)入通道等候。(2) 、車輛離開:根據(jù)客戶提供的情況,為客戶辦理離開車場手續(xù),并計算和打印該車輛停車需要的費用。然后查詢通道是否有車輛排隊,首先查詢排在第一車輛,若滿足則車進(jìn)場。(3) 、查詢車輛信息:根據(jù)客戶的要求可以打印停車場內(nèi)和便道的車輛信息,包括:車牌號,車輛到達(dá)時間。 根據(jù)題目要求可知本題目的是按照從讀文件讀取的數(shù)據(jù)序列進(jìn)行模擬管理。每一組輸入數(shù)據(jù)包括三個數(shù)據(jù)項:汽車“到達(dá)”或“離去”信息、汽車牌照號碼以及到達(dá)或離去的時刻。對每一組輸入數(shù)據(jù)進(jìn)行操作后的輸出信息為:若是車輛到達(dá),則輸出汽車在停車場內(nèi)或便道上的停車位置;若是車輛離去,則輸出汽車在停車場內(nèi)停留的時間和應(yīng)交納的費用(在便道上停留的時間不收費)。 二、 概要設(shè)計(二)、本程序主要分四個模塊實現(xiàn)功能(1)、 以棧模擬停車場,以隊列模擬車場外的通道,按照從終端讀入的輸入 數(shù)據(jù)序列進(jìn)行模擬管理。棧以順序結(jié)構(gòu)實現(xiàn),隊列以鏈表實現(xiàn)。 InitStack(SqStackCar *s) 操作結(jié)果:初始化棧,構(gòu)造空的模擬車站SqStackCar 。 Push(SqStackCar *s,CarNode *e) 操作結(jié)果:進(jìn)站函數(shù),車輛進(jìn)站。 Pop(SqStackCar *s,CarNode *e) 操作結(jié)果:出站函數(shù),車輛出站。 StackEmpty(SqStackCar s) 操作結(jié)果:判斷車站是否為空。 InitQueue(LinkQueueCar *Q) 操作結(jié)果:初始化通道,構(gòu)造空的隊列。 QueueEmpty(LinkQueueCar Q) 操作結(jié)果:判斷通道是否為空。 EnQueue(LinkQueueCar *Q,CarNode *e) 操作結(jié)果:車輛進(jìn)隊列,即進(jìn)通道。 DeQueue(LinkQueueCar *Q,CarNode *e) 操作結(jié)果:車輛出對列,即出通道。 SqStackCar part,temp 操作結(jié)果:聲明停車場和臨時停車場。 InitStack(&temp) 操作結(jié)果:建臨時車場。(2)、車輛達(dá)到和離開。以讀文件的法式輸入數(shù)據(jù),數(shù)據(jù)包括:車輛到達(dá)或 離開,車牌號碼,車輛到達(dá)時間。 Arrive(SqStackCar *In,LinkQueueCar *Wait,char j10,int hour,int min) 操作結(jié)果:顯示車輛到達(dá)信息。 Arrive(&part,&road,&j,hour,min) 初始條件:有車進(jìn)站 操作結(jié)果;車場未滿車進(jìn)站,并顯示車輛信息;已滿則進(jìn)通道等候。 Departure(SqStackCar *In,SqStackCar *temp,LinkQueueCar *Wait,char j10,int hour,int min) 操作結(jié)果:顯示車輛離開信息。 Departure(&part,&temp,&road,&j,hour,min) 初始條件:有車離開。 操作結(jié)果:顯示車輛信息,包括:車牌號,車輛到達(dá)和離開時間。 StackEmpty(*In) 操作結(jié)果:判斷停車場是否為空。 StackEmpty(*temp) 操作結(jié)果:判斷臨時車場是否為空。 FILE *fp1 操作結(jié)果:創(chuàng)建一個“車輛信息.txt”讀文件。 fp1=fopen("c:車輛信息.txt","r"); 操作結(jié)果:讀取“車輛信息.txt”里面的信息。 (3)、查詢功能。 Print(SqStackCar *In,SqStackCar *Temp,LinkQueueCar *Wait) 操作結(jié)果:查詢停車場內(nèi)和通道內(nèi)車輛的信息。 StackEmpty(*In) 操作結(jié)果:判斷停車場是否為空,若不為空,輸出車輛信息;否則輸 出“停車場里沒有車!”語句。 StackEmpty(*Temp) 操作結(jié)果:判斷臨時車場是否為空。三、 詳細(xì)設(shè)計(1)、 棧類型 t ypedef struct time int hour; int min; Time; /*時間結(jié)點*/ typedef struct char num10; Time reach; Time leave; CarNode; /*車輛信息結(jié)點*/ typedef struct CarNode *base; CarNode *top; int stacksize; SqStackCar; /*模擬車站*/ void InitStack(SqStackCar *s) /*初始化棧*/ s->base=(CarNode *)malloc(MAXSTACKSIZE*sizeof(CarNode); if(!s->base) exit(0);/*分配失敗*/ s->top=s->base; s->stacksize=MAXSTACKSIZE; int Push(SqStackCar *s,CarNode *e) /*進(jìn)站函數(shù)*/ if(s->top-s->base>=s->stacksize) return 0; else *s->top+=*e; return 1; int Pop(SqStackCar *s,CarNode *e) /*出站函數(shù)*/ if(s->top=s->base) return 0; *e=*-s->top; return 1; int StackEmpty(SqStackCar s) /*判空函數(shù)*/ if(s.base=s.top) return 1; else return 0; (2) 、隊列類型 typedef struct car CarNode *data; struct car *next; QueueNode; typedef struct QueueNode *front; QueueNode *rear; LinkQueueCar; /*模擬通道*/ int QueueEmpty(LinkQueueCar Q) /*便道判空函數(shù)*/ if(Q.front=Q.rear) return 1; else return 0; int StackEmpty(SqStackCar s) /*判空函數(shù)*/ if(s.base=s.top) return 1; else return 0; int InitQueue(LinkQueueCar *Q) /*初始化便道*/ Q->front=Q->rear=(QueueNode *)malloc(sizeof(QueueNode); if(!Q->front) exit(0); Q->front->next=NULL; return 1; int EnQueue(LinkQueueCar *Q,CarNode *e) /*便道插入函數(shù)*/ QueueNode *p; p=(QueueNode *)malloc(sizeof(QueueNode); if(!p) exit(0); p->data=e; p->next=NULL; Q->rear->next=p; Q->rear=p; return 1; int DeQueue(LinkQueueCar *Q,CarNode *e) /*便道刪除函數(shù)*/ QueueNode *p; if(Q->front=Q->rear) return 0; p=Q->front->next; e=p->data; Q->front->next=p->next; if(Q->rear=p) Q->rear=Q->front; free(p); return 1; (3) 、車輛到達(dá)函數(shù) int Arrive(SqStackCar *In,LinkQueueCar *Wait,char j10,int hour,int min) CarNode *i; QueueNode *w; i=(CarNode *)malloc(sizeof(CarNode); flushall(); strcpy(i->num,j); if(In->top-In->base<MAXSTACKSIZE) /*車場未滿,車輛進(jìn)棧*/ i->reach.hour=hour; i->reach.min=min; Push(In,i); printf("n車牌號碼是%s 的車進(jìn)場成功!",i->num); return 1; else /*停車場已滿,車進(jìn)便道*/ w=(QueueNode *)malloc(sizeof(QueueNode); w->data=i; w->next=NULL; Wait->rear->next=w; Wait->rear=w; printf("停車場已滿,必須在通道里等!"); return 1; return 0; (4) 、車輛離開函數(shù) int Departure(SqStackCar *In,SqStackCar *temp,LinkQueueCar *Wait, char j10,int hour,int min) /*車輛離開函數(shù)*/ int flag=0,a1,a2,b1,b2; float money; CarNode *p,*t; QueueNode *q; p=(CarNode *)malloc(sizeof(CarNode); flushall(); strcpy(p->num,j); while(!StackEmpty(*In) t=(CarNode *)malloc(sizeof(CarNode); Pop(In,t); if(strcmp(p->num,t->num)=0) /*比較車場中有無這輛車,有即出站*/ p->leave.hour=hour; p->leave.min=min; printf("車牌號是 "); printf("%s",p->num); printf(" 的車已出停車場!"); a1= p->leave.hour; a2= t->reach.hour; b1= p->leave.min; b2= t->reach.min; money = (float)(a1-a2+24)%24*60+(b1-b2+60)%60)*price; /*計算 車輛需要的費用*/ printf("n車輛到達(dá)時間: %d:%d",t->reach.hour,t->reach.min); printf("n車輛離開時間: %d:%d",p->leave.hour,p->leave.min); printf("n所需費用: %5.2f yuan",money); flag=1; free(t); break; else Push(temp,t); /*while*/ if(!flag) printf("停車場已滿,必須在通道等!"); getch(); while(!StackEmpty(*temp) Pop(temp,p); Push(In,p); free(p); if(flag&&Wait->front!=Wait->rear) /*車站中有空位,便道有車,車入站*/ q=(QueueNode *)malloc(sizeof(QueueNode); q=Wait->front->next; t=q->data; if(q!=NULL) t->reach.hour=hour; t->reach.min=min; Push(In,t); printf("n車牌號是 "); printf("%s",t->num); printf(" 的車進(jìn)入停車場!"); Wait->front->next=q->next; if(q=Wait->rear) Wait->rear=Wait->front; free(q); return 1; (5) 車輛查詢函數(shù) void Print(SqStackCar *In,SqStackCar *Temp,LinkQueueCar *Wait) /*打印函數(shù)*/ int c=0; int count=1; CarNode *p,*t; QueueNode *q; q=(QueueNode *)malloc(sizeof(QueueNode); p=(CarNode *)malloc(sizeof(CarNode); t=(CarNode *)malloc(sizeof(CarNode); while(1&&c!=3) clrscr(); gotoxy(1,10); printf("1. 通道里的車輛信息!"); gotoxy(1,11); printf("2. 停車場里得車輛信息!"); gotoxy(1,12); printf("3. 返回"); do printf("n請輸入你的選擇:"); c = getche(); printf("n"); while(c!=1&&c!=2&&c!=3); if(c=2) /*打印停車場*/ count=1; if(StackEmpty(*In) printf("n 停車場里沒有車!n"); printf("n請按任意鍵繼續(xù)."); getch(); else printf("n 停車場里車輛信息!n"); while(!StackEmpty(*In) Pop(In,t); Push(Temp,t); while(!StackEmpty(*Temp) Pop(Temp,t); printf(" n 車牌號碼 "); count+; puts(t->num); printf(" 車輛到達(dá)時間: %d:%d n",t->reach.hour,t->reach.min); Push(In,t); printf("n請按任意鍵繼續(xù)."); getch(); if(c=1) /*打印便道*/ count=1; q=Wait->front->next; if(Wait->front!=Wait->rear) /*/ printf("n 通道里車輛信息!n"); while(q!=NULL) p=q->data; printf(" n 通道里車牌號碼是: "); puts(p->num); q=q->next; count+; else printf("n通道里沒有車.n"); printf("n請按任意鍵繼續(xù)."); getch(); (6)、程序設(shè)計原理圖:車輛到達(dá)以堆棧來模擬停車場和以堆棧里的數(shù)據(jù)元素我設(shè)計成汽車的車牌號初始化車站, 初始化讓路的臨時棧, 初始化通道車場未滿,車進(jìn)車場車場已滿,車進(jìn)便道判斷車場是否已滿車輸入車子到達(dá)時間,車牌號未滿 車進(jìn)入車場判斷車場內(nèi)是否有車不做任何計算無點x有 輸入離開車輛的離開時間,進(jìn)行停車費用的計算此車后面的車輛退出并進(jìn)入臨時棧車子離開四、 調(diào)試分析 本次課程設(shè)計主要應(yīng)用棧和隊列,以棧模擬停車場,以隊列模擬車場外的通道,按照從終端讀入的輸入數(shù)據(jù)序列進(jìn)行模擬管理。棧 以順序結(jié)構(gòu)實現(xiàn),隊列以鏈表實 現(xiàn)。編程是應(yīng)注意各變量之間的 關(guān)系、各變量的類型、各種函數(shù)的應(yīng)用條件等。尤其注意應(yīng)繳納費用的計算問題,我在編程的時候就是忽略了計費所用的時間應(yīng)是從車輛進(jìn)停車場是的時刻而不是到達(dá)通道的,以至于出現(xiàn)計算錯誤,但經(jīng)過老是的提醒和幫助我很高興已經(jīng)解決了。五、 用戶手冊(1) 、本程序的運(yùn)行環(huán)境為漢化的TC 。(2) 、運(yùn)行后出現(xiàn)初始界面為 按任意鍵就進(jìn)入初始界面為: 輸入相應(yīng)的數(shù)字進(jìn)行相應(yīng)的操作,如輸入“1”,則進(jìn)入“更新車場信息”選項, 自動一步步讀取讀文件里的車輛信息。然后根據(jù)提示就可完成相應(yīng)的操作。六、 測試結(jié)果若初始選“1”且按提示操作則出現(xiàn)界面:若按ESC鍵退到初始界面,再選“2”,則出現(xiàn)界面: 若選“1”,則出現(xiàn)界面: 若選“2”,則出現(xiàn)界面:選“3”返回初始界面,再選“1”繼續(xù)從文件中讀取信息,出現(xiàn)界面。若按ESC鍵退到初始界面,再選“2”,再按“1”,則出現(xiàn)界面: 繼續(xù)操作,選“2”,則出現(xiàn)界面: 選“3”返回初始界面,在按“3”,則退出系統(tǒng),測試完成!七、 附錄源程序文件名清單: 車輛信息.txt 肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁肅蒀袃羃莂蒀薂腿羋葿蚅羂膄薈螇膇肀薇衿羀荿薆蕿螃蒞薅螁羈芁薄袃袁膇薄薃肇肅薃蚅衿莁薂螈肅芇蟻袀袈膃蝕薀肅聿蠆螞袆蒈蚈襖肁莄蚈羇羄芀蚇蚆膀膆芃蝿羃肂節(jié)袁膈莀莂薀羈芆莁蚃膆膂莀螅罿肈荿羇螂蕆莈蚇肇莃莇蝿袀艿莆袂肆膅莆薁衿肁蒅蚄肄莀蒄螆袇芆蒃袈肂膂蒂蚈裊膈蒁螀膁15