大學(xué) C語言 停車場(chǎng)管理系統(tǒng) 設(shè)計(jì)c語言課程設(shè)計(jì) (含調(diào)試圖)
真誠(chéng)為您提供優(yōu)質(zhì)參考資料,若有不當(dāng)之處,請(qǐng)指正。Xxxxx大學(xué)xxxxxxxxxxx系20xx-20xx學(xué)年第一學(xué)期C程序設(shè)計(jì)課程設(shè)計(jì)題目名稱: 停車場(chǎng)管理系統(tǒng)設(shè)計(jì) 姓 名 : 學(xué) 號(hào) : 班 級(jí) : 指導(dǎo)教師 : 編寫日期 : 20 年1月5日20 年1月31日 成績(jī): 1 / 15目錄 (一)需求分析31-1停車31-2取車31-3功能的選擇3(二)總體設(shè)計(jì)(程序設(shè)計(jì)組成框圖)32-1停車模塊32-2取車模塊32-3車輛信息瀏覽模塊42-4程序設(shè)計(jì)組成框圖4(三)詳細(xì)設(shè)計(jì)43-1停車場(chǎng)分析43-2停車操作43-3收費(fèi)管理(取車)53-4車輛信息53-5退出系統(tǒng)5(四)程序運(yùn)行結(jié)果測(cè)試與分析5(五)結(jié)論與心得7(六)參考文獻(xiàn)7(七)致謝8附錄:8(一)需求分析1-1停車車輛信息要用文件存儲(chǔ),因而要提供文件的輸入輸出操作。1-2取車當(dāng)車離開時(shí),要?jiǎng)h除文件中 該車的信息, 因而要提供文件的刪除操作。 1-3功能的選擇提供現(xiàn)實(shí)操作和用鍵盤式菜單實(shí)現(xiàn)功能選擇。(二)總體設(shè)計(jì)(程序設(shè)計(jì)組成框圖)2-1停車模塊對(duì)車輛信息賦值,分配前檢查車位使用情況(按行查找 park 數(shù)組,元素為 0 表示車位 為空,則允許分配) 。把新添加的車輛信息以追加的方式寫入汽車信息文件,并更改汽車信 息文件中其他汽車信息的停車時(shí)間(停車時(shí)間加 5) 。 2-2取車模塊計(jì)算費(fèi)用(停車費(fèi)用=停車時(shí)間*0.2 元) ,從文件中刪除該車信息。并將該車位對(duì)應(yīng)的 二位數(shù)組變量設(shè)為 0,表示該車位可用。輸出提示信息:是否輸出停車費(fèi)用總計(jì)?(Y/N) 如果選擇 Y,則輸出停車費(fèi)用,否則回到上級(jí)菜單。 2-3車輛信息瀏覽模塊輸出車輛信息文件中的記錄。 另外,用戶按 Esc 鍵退出系統(tǒng)。2-4程序設(shè)計(jì)組成框圖停車場(chǎng)管理系統(tǒng)取車查看全部車輛信息 停車 退出(三)詳細(xì)設(shè)計(jì)3-1停車場(chǎng)分析有一個(gè)兩層的停車場(chǎng), 每層有6個(gè)車位, 當(dāng)?shù)谝粚榆囃M后才允許使用第二層。 ( 停車場(chǎng)可用一個(gè)二維數(shù)組實(shí)現(xiàn), 每個(gè)數(shù)組元素存放一個(gè)車牌號(hào) )假設(shè)停車場(chǎng)初始狀態(tài)為第一層已經(jīng)停有4輛車, 其車位號(hào)依次為14 , 停車時(shí)間依次為20, 15, 10 , 5 . 即先將這四輛車的信息存入文件”car.dat”中。( 數(shù)組的對(duì)應(yīng)元素也要進(jìn)行賦值 )3-2停車操作當(dāng)一輛車進(jìn)入停車場(chǎng)時(shí), 先輸入其車牌號(hào), 再為它分配一個(gè)層號(hào)和一個(gè)車位號(hào)(分配前先查詢車位的使用情況, 如果第一層有空則必須停在第一層), 停車時(shí)間設(shè)為5 , 最后將新停入的汽車的信息添加文件”car.dat”中, 并將在此之前的所有車的停車時(shí)間加5。3-3收費(fèi)管理(取車)當(dāng)有車離開時(shí), 輸入其車牌號(hào), 先按其停車時(shí)間計(jì)算費(fèi)用, 每5分鐘0.2元. (停車費(fèi)用可設(shè)置一個(gè)變量進(jìn)行保存), 同時(shí)從文件”car.dat”中刪除該車的信息, 并將該車對(duì)應(yīng)的車位設(shè)置為可使用狀態(tài)(即二維數(shù)組對(duì)應(yīng)元素清零). 按用戶的選擇來判斷是否要輸出停車收費(fèi)的總計(jì)。3-4車輛信息 輸出停車場(chǎng)中全部車輛的信息。3-5退出系統(tǒng) 退出系統(tǒng)。(四)程序運(yùn)行結(jié)果測(cè)試與分析系統(tǒng)初始運(yùn)行時(shí),會(huì)顯示如圖4-1所示的輸入界面,用戶可以根據(jù)提示,進(jìn)行相應(yīng)的選擇,來完成系統(tǒng)提供的各種功能。根據(jù)系統(tǒng)提示提示用戶選擇相應(yīng)的數(shù)字鍵,按ENTER鍵后進(jìn)入相應(yīng)的功能菜單。如下圖4-2是輸入1,顯示停車以及所需用戶的車牌號(hào)輸入后按ENTER鍵進(jìn)入所要放車的停車位菜單,其中包含了系統(tǒng)分配的層號(hào)和一個(gè)車位號(hào)即圖4-3下面即為此程序執(zhí)行此功能時(shí)的截圖: 圖4-1輸入界面 圖4-2輸入1和車牌號(hào)界面圖4-3詳細(xì)信息界面(五)結(jié)論與心得通過這次實(shí)習(xí),讓我初步有了編寫小系統(tǒng)的能力,我對(duì)很多的函數(shù)有了新的認(rèn)識(shí),也學(xué)會(huì)了運(yùn)用多種函數(shù),也明白了編寫軟件的基本過程和基本方法。編寫軟件的過程中我又學(xué)到了曾經(jīng)自己不知道的函數(shù)或是自己不會(huì)的函數(shù)的用法。這次課程設(shè)計(jì)課總的來說讓我受益匪淺。在軟件的設(shè)計(jì)過程中遇到了很多的困難。在軟件一次一次的調(diào)試失敗下,曾經(jīng)想過要放棄。我最后還是堅(jiān)持了下來,毫不畏懼困難,在一起討論論證到底是用什么函數(shù),什么樣的循環(huán)來最簡(jiǎn)單的實(shí)現(xiàn)程序的功能,經(jīng)過幾個(gè)日夜的努力我總算是順利的完成了軟件的設(shè)計(jì)。在程序的編寫過程中我發(fā)現(xiàn)有很多的知識(shí)漏洞和缺陷,需要進(jìn)一步努力學(xué)習(xí)來鞏固完善自己的知識(shí)面。在這幾天的編寫過程中我對(duì)c語言有了更進(jìn)一步的認(rèn)識(shí)和了解。此次編程過程的經(jīng)驗(yàn)和知識(shí)肯定能促進(jìn)我以后的學(xué)習(xí),更是對(duì)我今后參加電子設(shè)計(jì)類軟件編程大賽有較大的幫助(六)參考文獻(xiàn) 1譚浩強(qiáng),C程序設(shè)計(jì)(第四版),北京:清華大學(xué)出版社,2010.6 2(七)致謝 能夠完成這次課程設(shè)計(jì)要感謝c語言課程的老師,感謝老師的悉心教導(dǎo),幫助改錯(cuò),還要感謝各位同學(xué)的幫助,我會(huì)繼續(xù)努力的。附錄:程序源代碼:#include <stdio.h>#include <string.h>#include <stdlib.h>struct Garage char carnum8; /*車牌號(hào)*/ int lay; /層號(hào) int garagenum; /*車位號(hào)*/ int time; /*停車時(shí)間*/int isempty; /*該車位是否為空,1表示空,0表示有車*/;/*打印使用說明*/void Instruction() printf(" 停車場(chǎng)管理系統(tǒng)使用說明n"); printf(" 停車請(qǐng)輸入 1 取車請(qǐng)輸入 2 n"); printf(" 查看全部車輛的信息請(qǐng)輸入 3 退出請(qǐng)輸入 0 n"); /*初始化停車場(chǎng)信息,初始狀態(tài)為第一層已經(jīng)停有4輛車, * 其車位號(hào)依次為1-4 , 停車時(shí)間依次為20, 15, 10 , 5 */void Init(struct Garage gar6) int i, j; /*給所有的車位的層號(hào),車位號(hào)初始化,停車時(shí)間初始化為0,停車位全都初始化為空*/ for (i=0; i<2; i+) for (j=0; j<6; j+) garij.lay = i+1; garij.garagenum = j+1; garij.time = 0; garij.isempty = 1; /*第一層的1-4號(hào)車位停車*/ for (i=0; i<4; i+) gar0i.isempty =0; strcpy(gar00.carnum, "0000"); /*初始化的車牌號(hào)*/ gar00.time = 20; strcpy(gar01.carnum, "1111"); gar01.time = 15; strcpy(gar02.carnum, "2222"); gar02.time = 10; strcpy(gar03.carnum, "3333"); gar03.time = 5;/*新停入的汽車后,將在此之前的所有車的停車時(shí)間加5*/void AddTime(struct Garage gar6) int i, j; for (i=0; i<2; i+) for (j=0; j<6; j+) if (garij.isempty = 0) garij.time += 5; /*停車*/void Park(struct Garage gar6) int i; char num8;printf("請(qǐng)輸入車牌號(hào):"); scanf("%s", num); for (i=0; i<6; i+) if (gar0i.isempty = 1) printf("第一層第%d號(hào)車位空著,請(qǐng)?jiān)诖颂幫\噉", i+1);strcpy(gar0i.carnum, num); printf("車牌號(hào):%s 層號(hào):1 車位號(hào): %d n", num, i+1); AddTime(gar); /*在此之前停車的所有汽車時(shí)間加5*/ gar0i.isempty = 0; /*表示該車為已經(jīng)停車*/ gar0i.time = 5; /*將時(shí)間設(shè)為5*/ return; printf("第一層已經(jīng)沒有空車位n"); for (i=0; i<6; i+) if (gar1i.isempty = 1) printf("第二層第%d號(hào)車位空著,請(qǐng)?jiān)诖颂幫\噉", i+1); strcpy(gar1i.carnum, num); printf("車牌號(hào):%s 層號(hào):2 車位號(hào): %d n", num ,i+1); AddTime(gar); /*在此之前停車的所有汽車時(shí)間加5*/ gar1i.isempty = 0; /*表示該車位已經(jīng)停車*/ gar1i.time = 5; /*將時(shí)間設(shè)為5*/ return; printf("對(duì)不起,1 2層都沒有空車位,您現(xiàn)在不能在此停車n");/*查看所有車輛信息*/void Information(struct Garage gar6) int i, j; printf(" 車牌號(hào) 層號(hào) 車位號(hào) 停車時(shí)間n"); for (i=0; i<2; i+) for(j=0; j<6; j+) if (garij.isempty = 0) printf(" %s%8d%8d%8dn", garij.carnum, garij.lay, garij.garagenum, garij.time); printf("n");/*取車*/double Leave(struct Garage gar26) int i, j; char num8; double charge = 0; printf("請(qǐng)輸入要取的車牌號(hào):"); scanf("%s", num); for (i=0; i<2; i+) for (j=0; j<6; j+) if (!strcmp(garij.carnum, num) printf("您在%d層%d車位停車%d分鐘n", garij.lay, garij.garagenum, garij.time);charge = garij.time/5*0.2; printf("停車費(fèi)用為每5分鐘0.2元,您需交%.2lf元n", charge); garij.isempty = 1; return charge; printf("沒有您輸入的車號(hào)。nn");return charge;/*是否查看總收入*/void IsPrintTotal(double total) char ch; printf("是否查看停車收費(fèi)總計(jì)?Y/N"); scanf("%c", &ch); while (ch!=y && ch!=Y && ch!=n && ch!=N) printf("請(qǐng)輸入Y或N "); scanf("%c", &ch); printf("n"); switch (ch) case Y: case y: printf("停車收費(fèi)總計(jì)為%.2lf元n", total); break; case N: case n: break; main() int choice; double total = 0; struct Garage gar26; Init(gar); /初始化第一層已經(jīng)停有的4輛車 while (1) Instruction(); printf("請(qǐng)輸入要進(jìn)行的操作:"); scanf("%d", &choice); while (choice<0 | choice>3) printf("輸入的不合法,請(qǐng)輸入0-3選擇:"); scanf("%d", &choice); switch (choice) case 1: Park(gar); break; case 2: total += Leave(gar); IsPrintTotal(total); break; case 3: Information(gar); break; case 0: exit(0); return 0; 溫馨提示:最好仔細(xì)閱讀后才下載使用,萬分感謝!