停車場管理系統(tǒng)C課程設(shè)計_第1頁
停車場管理系統(tǒng)C課程設(shè)計_第2頁
停車場管理系統(tǒng)C課程設(shè)計_第3頁
停車場管理系統(tǒng)C課程設(shè)計_第4頁
停車場管理系統(tǒng)C課程設(shè)計_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 計算機學(xué)院計算機科學(xué)與技術(shù)專業(yè)程序設(shè)計綜合課程設(shè)計報告(20010/2011學(xué)年 第一學(xué)期) 學(xué)生姓名: 學(xué)生班級: 學(xué)生學(xué)號: 指導(dǎo)教師: 2011年1月7日停 車 場 管 理 系 統(tǒng)目錄目錄第一章 課程設(shè)計目的和要求11.1課程設(shè)計的目的11.2課程設(shè)計的要求1第二章 課程設(shè)計任務(wù)內(nèi)容22.1課程設(shè)計任務(wù)內(nèi)容22.2課程設(shè)計任務(wù)內(nèi)容闡述2第三章 課程設(shè)計詳細說明33.1程序模塊描述33.2性能描述33.3輸入和輸出43.4程序算法43.5流程邏輯51、 主體程序52、 用戶登陸63、 信息查詢73.6接口函數(shù)描述83.7數(shù)據(jù)文件存儲說明83.8注釋設(shè)計83.9程序運行限制條件93.10測

2、試計劃9第四章 程序使用說明17第五章 課程設(shè)計心得與體會18附錄1 參考文獻19附錄2程序清單:20第一章 課程設(shè)計目的和要求1.1課程設(shè)計的目的C+程序設(shè)計是計算機科學(xué)與技術(shù)專業(yè)的基礎(chǔ)課程,其實踐性、應(yīng)用性很強。實踐教學(xué)環(huán)節(jié)是必不可少的一個重要環(huán)節(jié)。課程設(shè)計的目的是加深對理論教學(xué)內(nèi)容的理解和掌握,使學(xué)生較系統(tǒng)的掌握程序設(shè)計及其在網(wǎng)絡(luò)開發(fā)中的廣泛應(yīng)用,基本方法及技巧,為學(xué)生綜合運用所學(xué)知識,利用軟件工程為基礎(chǔ)進行軟件開發(fā)、并在實踐應(yīng)用方面打下一定基礎(chǔ)。要求學(xué)生在設(shè)計指導(dǎo)教師的幫助下自行完成各個操作環(huán)節(jié),并能實現(xiàn)且達到舉一反三的目的,完成一個項目解決一類問題。要求學(xué)生能夠全面、深入理解和熟悉掌

3、握所學(xué)內(nèi)容,并能夠用其分析、設(shè)計和解答類似問題;對此能夠較好的理解和掌握,能夠進行簡單分析和判斷;能編寫出良好風(fēng)格的程序;掌握C+程序設(shè)計的基本技能和面向?qū)ο蟮母拍詈头椒āE囵B(yǎng)學(xué)生進行設(shè)計分析、設(shè)計方法、設(shè)計操作與測試、設(shè)計過程的觀察、理解和歸納能力的提高。1.2課程設(shè)計的要求功能要求:用c/c+設(shè)計一個程序?qū)崿F(xiàn)停車場管理系統(tǒng),要求如下:1)用C語言實現(xiàn)系統(tǒng);2)函數(shù)功能要劃分好(結(jié)構(gòu)化程序設(shè)計);3)界面友好(良好的人機交互),加必要的注釋;4)提供程序測試方案。第2章 課程設(shè)計任務(wù)內(nèi)容2.1課程設(shè)計任務(wù)內(nèi)容設(shè)計一個程序?qū)崿F(xiàn)停車場管理系統(tǒng),管理人員根據(jù)口令進入系統(tǒng)。 管理車位信息(車位編號,

4、狀態(tài))和每小時的收費費率(貨車7元/小時,客車5元/小時,轎車4元/小時,其他3元/小時,由停車時開始計時選擇錄入)。 停車時,建立對象,錄入信息(車牌號,停泊位置,停泊開始時間);停車位第一個為空的位置,由程序查詢自動給出車位號,如果車位已滿要給出提示。 取車時,需要根據(jù)車輛停泊時間自動計算費用(半小時內(nèi)以半價計算,超出半小時不足一小時按一小時計算)并顯示在屏幕上。 可以隨時根據(jù)車牌查詢是否入庫。可以隨時根據(jù)車位查詢該位置上的相關(guān)信息。 補充:要求可以將錄入的信息儲存到文件內(nèi)并且能夠隨時查詢信息。2.2課程設(shè)計任務(wù)內(nèi)容闡述本程序為一個停車場計時收費系統(tǒng),它能實現(xiàn)的功能是將進入定義的車庫的車輛

5、信息存儲,根據(jù)車輛類型(貨車,客車,轎車,其他)來進行不同的計時收費,以及隨時根據(jù)車牌查詢是否入庫,隨時根據(jù)車位查詢該位置上的相關(guān)信息,最后還要能夠?qū)⒈4娴臄?shù)據(jù)讀取查詢。程序需要我們做一個良好的人機交互界面,以及安全性等問題。第3章 課程設(shè)計詳細說明3.1程序模塊描述本程序主要有一下幾個模塊構(gòu)成:1)用戶登陸模塊。此程序中先定義一個用戶名和密碼(無選擇項可以改變,只有修改程序才能修改,用戶名和密碼事先存入文檔“用戶名和密碼.txt”中),用戶名和密碼共有三次輸入機會,正確則登陸停車場系統(tǒng),錯誤則提示重新輸入,如果三次都錯誤則自動退出停車場系統(tǒng)。2)程序登陸后的選擇模塊以及信息存儲模塊。該模塊給

6、出四個選項(1.泊車操作 2.取車操作 3.查詢信息 4. 退出 ),所以在本模塊中添加對錄入信息的儲存模塊,其中加入記錄系統(tǒng)時間的模塊(要求沒有提到,方便信息查詢自己添上的),在用戶的選擇中進入下一個模塊的操作,其中第一個操作的信息將存儲并保存進“車輛信息.txt”。3)信息查詢模塊。在這個模塊中要將之前存儲的信息“車輛信息.txt”中的信息輸出到運行界面中,我利用二維數(shù)組來將信息從文件中輸出,該模塊中其他的選項為輸出當前的車位狀態(tài)以及根據(jù)車牌查詢信息。4)計時收費模塊。該模塊中,定義系統(tǒng)時間函數(shù),在本模塊之前定義車輛分類收費模塊,將這兩個模塊結(jié)合求出車費輸出到界面,其中小于30分鐘的按半小

7、時計算,大于30小于60分鐘按一小時算。3.2性能描述1) 因為任務(wù)書中對該模塊的要求不是很詳細,所以我簡單處理了一下,自己事先定義用戶名和密碼,設(shè)置三次輸入機會,用戶名和密碼事先用文檔存儲,供使用者進入系統(tǒng)。2) 這個模塊比較復(fù)雜,基本的用戶登陸模塊設(shè)計基本完善,在信息錄入和存儲方面也符合要求,本模塊選項的功能也都能實現(xiàn),而且后來加入的查詢歷史停車信息的模塊也和程序要求符合。3) 該模塊其實是最復(fù)雜的模塊,由于剛開始沒有建立查詢歷史信息的模塊,所以不算完善,在建立歷史信息查詢模塊后,完全符合要求,能夠?qū)崿F(xiàn)將第一個為空的位置,由程序查詢自動給出車位號,如果車位已滿要給出提示。可以隨時根據(jù)車牌查

8、詢是否入庫。可以隨時根據(jù)車位查詢該位置上的相關(guān)信息。唯一的不足就是讀取的信息量有限,因為時間緊迫,沒找到合適的解決辦法。4) 本模塊的算法設(shè)計比較簡單,基本的switch函數(shù)就能實現(xiàn)對車型的分類,時間則是導(dǎo)入的系統(tǒng)時間,時間差乘以單價就是最后收費,其中取車時,需要根據(jù)車輛停泊時間自動計算費用(半小時內(nèi)以半價計算,超出半小時不足一小時按一小時計算)并顯示在屏幕上,也順利實現(xiàn)。3.3輸入和輸出1) 該模塊中定義了全局變量,輸入的信息即為事先設(shè)置的用戶名和密碼,輸出的是停車場系統(tǒng)。2) 該模塊中輸入輸出項都較多,在停車模塊中要輸入車牌號,車輛類型,自動輸出停車位以及停車時的系統(tǒng)時間;在取車模塊中,因

9、為任務(wù)書要求為根據(jù)車牌號取車,所以輸入的為任意車牌號,輸出的為停車費;在查詢模塊中,根據(jù)任務(wù)書要求,可以輸入車牌號或者車位號,輸出的為車位號或者車牌號;其余選項無輸入項,輸出項為回到系統(tǒng)或跳出系統(tǒng)(退出)。3) 該模塊可以看著第二個模塊的子模塊,輸入輸出項也是第二個模塊所陳述的。4) 該模塊中處理信息都是自動的。其中輸入項是開始的時間,為自動計時,輸出的就是車輛收費。3.4程序算法本程序的的主函數(shù)就是一個美化的界面,主要功能靠其他的功能函數(shù)的調(diào)用來實現(xiàn)。下面具體說明:登陸函數(shù)中比較麻煩的用戶名和密碼做了提前的處理,用if語句判斷函數(shù),continue函數(shù)進入程序界面。在這個模塊中,涉及的算法和

10、函數(shù)比較多,首先是ofstream 函數(shù)存儲停車信息,以及后面的ifstream 函數(shù)讀取存儲的信息;用string函數(shù)導(dǎo)入了系統(tǒng)時間,用if函數(shù)做選擇項以及車輛類型的選擇,以及數(shù)組定義time1在ifstream函數(shù)中導(dǎo)出時間。這個模塊中的函數(shù)與第二模塊相同,不再詳說。這個模塊中,主要是用position將時間設(shè)置為空,建立新的時間函數(shù)hour1和min1,用struct tm *newtime獲取新的系統(tǒng)時間,再做判斷。3.5流程邏輯1、 主體程序開始用戶登陸退出查詢信息泊車操作取車操作車牌號退出查詢歷史信息查詢車位查詢車牌號車牌號圖2、 用戶登陸開始輸入用戶名判斷用戶名NY輸入密碼N判斷

11、密碼Y進入停車系統(tǒng)結(jié)束圖3、 信息查詢開始選擇輸入1/2/3/44321退出查詢歷史信息查詢車位查詢車牌號導(dǎo)入存儲的信息從錄入信息中輸出輸出信息結(jié)束圖3.6接口函數(shù)描述此部分程序有一個主函數(shù)和一下子函數(shù):1 int main 主函數(shù)2 void putcar(); 停車函數(shù)3 void takecar(); 取車函數(shù)4 string time1 時間函數(shù)5 ofstream和ifstream 存儲和讀取信息函數(shù)6 int juge 判斷車位函數(shù)7 double charge 收費函數(shù)8 void search_pos 車位查詢函數(shù)3.7數(shù)據(jù)文件存儲說明由于任務(wù)要求不是很詳細,本程序只用到了兩個

12、數(shù)據(jù)文件:“用戶名和密碼.txt”、“車輛信息.txt”,其中“用戶名和密碼.txt”文檔中的信息為提前輸入的,使用者用于輸入賬號和密碼進入系統(tǒng),“車輛信息.txt”文檔為系統(tǒng)自動生成的文檔,用于存放和讀取車輛信息,進行查詢使用。3.8注釋設(shè)計注釋主要是利于自己和別人來了解程序編寫的思路以及運行方法,下面說一下本程序中的注釋:1) 在登陸模塊加的注釋為了提醒大家開始了用戶登陸界面的設(shè)計,以及其中用戶名和密碼的定義。2) 主程序開始時用注釋提示了一下,在錄入信息模塊是用到了系統(tǒng)信息,加入了注釋,方便理解,以及保存車輛信息時的函數(shù)也加入注釋,方便自己改錯和理解。3) 在查詢信息模塊里,主要注釋提示

13、了存儲數(shù)據(jù)的輸出形式,用到了二維數(shù)組,以及查詢歷史信息的函數(shù)。4) 最后的模塊中用注釋解釋了全局變量的清空以及停車時間和車費計算函數(shù)的提示,最后是查詢函數(shù)的注釋。3.9程序運行限制條件本程序在硬件方面的要求比較低,軟件要求環(huán)境為Microsoft Visual C+6.0。在程序設(shè)計時,感覺程序在用戶登陸時不夠完善,不能靈活輸入用戶名,只能用事先存好的用戶名和密碼;再就是在信息輸入時不夠智能,當然這個很難;再就是存儲信息時不能加入漢字,如果加入會導(dǎo)致讀取數(shù)據(jù)時異常麻煩,最后是讀取數(shù)據(jù)時,由于用的數(shù)組,信息量有限,超出不能繼續(xù)存儲和讀取。3.10測試計劃在程序測試階段,主要是看程序能不能運行以及

14、能不能達到任務(wù)書所要求的功能,所以要對出現(xiàn)的錯誤進行分析和改正,并且完善自己的程序,下面為程序運行截圖:圖為用戶名或者密碼輸入錯誤截圖 圖圖為用戶名和密碼正確進入系統(tǒng)的截圖 圖圖為輸入車牌號的界面 圖圖為車輛類型選擇界面 圖圖為取車操作界面 圖圖為查詢信息界面 圖圖為按車牌查詢界面圖圖為按車位查詢界面圖圖為歷史信息查詢界面圖圖為查詢信息的退出界面圖圖為不同時間的收費界面圖圖為存儲信息的文檔的截圖 圖3.1012第4章 程序使用說明程序說明如下:1) 登陸系統(tǒng)時先打來“用戶名和密碼.txt”文檔瀏覽用戶名和密碼,輸入其中的用戶名和密碼進入系統(tǒng)。2) 在進入系統(tǒng)以后,嚴格按照系統(tǒng)要求來使用。第5章

15、 課程設(shè)計心得與體會經(jīng)過一個學(xué)期對C+程序設(shè)計的學(xué)習(xí),我學(xué)習(xí)到了基本的理論知識,了解到了C+語言程序設(shè)計的思想,這些知識都為我的課程實踐和進一步的學(xué)習(xí)打下了堅實的基礎(chǔ)。通過C+課程設(shè)計,一方面是為了檢查這一個學(xué)期來計算機語言的學(xué)習(xí)成果,另一方面也是為了讓我們進一步掌握和熟練地運用它,與此同時,也能夠讓我們認清自己在C+學(xué)習(xí)方面的不足之處和薄弱環(huán)節(jié),并加以彌補和鞏固。通過對教學(xué)管理系統(tǒng)的程序設(shè)計,進一步的鞏固了用C+語言編寫程序的能力,并且利于更好的掌握C+語言!在為期近兩周的C+課程設(shè)計中,我體會頗多,學(xué)到了很多東西。我懂得了用Microsoft Visual C+ 6.0對程序進行調(diào)試,我加

16、強了對C+程序設(shè)計這門課程的認識,并且復(fù)習(xí)了自己以前學(xué)習(xí)到的知識,自己的邏輯思考能力也提高不少。這些都使得我對計算機語言的學(xué)習(xí)有了更深入的認識!總之,通過這次課程設(shè)計,我收獲頗豐,相信會為自己以后的學(xué)習(xí)和工作帶來很大的好處。最重要的還是激發(fā)了我編程的興趣和熱情,讓我從一個只懂理論變成了能做一些小型程序。整體地評價這次課程設(shè)計,我認為收獲很大,正如上面所說的那樣,通過課程設(shè)計,既復(fù)習(xí)了以前的舊知識,又學(xué)到了一些新的知識。像停車場管理系統(tǒng)這樣的應(yīng)用程序的設(shè)計和創(chuàng)建,經(jīng)歷了平時在課堂和考試中不會出現(xiàn)的難題和考驗。而這些問題,又都是課本上很少提到的、更深一層的實踐與知識相結(jié)合的問題,這并不是我們平時只

17、靠課本,就可以輕易解決的。所以,鍛煉了我們面對難題,學(xué)會用已掌握的知識去解決具體問題的能力,進一步培養(yǎng)了獨立思考問題和解決問題的能力。特別是學(xué)會了在Visual C+中如何調(diào)試程序的方法。當然,老師的指導(dǎo)和同學(xué)的幫助也是不可忽視的,他們給了我許多提示和幫助,教會了我編譯復(fù)雜程序的方法。總而言之,這次C+程序設(shè)計實踐讓我收獲很大。附錄1 參考文獻1) c+程序設(shè)計作者:譚浩強 出版時間2004年6月2) C程序設(shè)計(第三版)作者:譚浩強 出版時間2005年7月3) c+程序設(shè)計實踐指導(dǎo)作者:譚浩強 出版時間:2005年7月4) 百度文庫、百度知道附錄2程序清單:#include <iost

18、ream> #include <stdio.h> #include <string> #include <time.h> #include<fstream>using namespace std; class car public: char no9; int pos; double fee; void putcar(); void takecar(); ; class Time public: int hour; int min; void getime(); ; int i,poi; int position100=0;/全局變量 ca

19、r carin100; Time catime100; int juge(); int comp(); void search_no(); void search_pos(); void main() /用戶登錄 const char ha10="wangbing"/管理員用戶名 const char hb10="1427"/管理員密碼 char cn10,cm10; int ci=0; while(1) cout<<"請輸入管理員用戶名:" cin>>cn; if(strcmp(ha,cn) cout<

20、<"輸入錯誤!n" ci+; if(ci=3) return; continue; else cout<<"請輸入密碼:" cin>>cm; if(!strcmp(hb,cm) break; else cout<<"密碼錯誤!n" ci+; if(ci=3) return; continue; /主程序 int k; cout<<"請選擇:" <<"nnt" <<"nnt 1.泊車操作 " <

21、<"nnt 2.取車操作 " <<"nnt 3.查詢信息 " <<"nnt 4. 退出 " <<"nntnn" ofstream outfile("車輛信息.txt",ios:app);if(! outfile)cerr<<"open error!"<<endl;exit(1);/ifstream infile("車輛信息.txt",ios:in);/if(! outfile)/cerr&l

22、t;<"open error!"<<endl;/exit(1);while(cin>>k) if(k=1) i=juge(); cout<<"t車牌號:" cin>>carini.no; carini.putcar(); cout<<"請選擇:" <<"nnt" <<"nnt 1.泊車操作 " <<"nnt 2.取車操作 " <<"nnt 3.查詢信息

23、" <<"nnt 4. 退出 " <<"nntnn"string time1;time_t t; time(&t); time1=ctime(&t); cout<<time1;/導(dǎo)入系統(tǒng)時間outfile<<carini.no<<" "<<time1<<endl;/保存車輛信息。continue; if(k=2) poi=comp(); carinpoi.takecar(); cout<<"請選擇:&qu

24、ot; <<"nnt" <<"nnt 1.泊車操作 " <<"nnt 2.取車操作 " <<"nnt 3.查詢信息 " <<"nnt 4. 退出 " <<"nntnn"continue; if(k=3) int x; while(1) cout<<"nnt"<<"nnt查詢車牌號請選擇1,查詢車位請選擇2,查詢歷史信息請選擇3,退出請選擇4: &quo

25、t;<<"nntnn" cin>>x; if(x=1) search_no();break; else if(x=2) search_pos();break; else if(x=3)string a,time11005;/定義二維數(shù)組讀取數(shù)據(jù)int i,j,m,n;ifstream infile("車輛信息.txt",ios:in);if(! infile)cerr<<"open error!"<<endl;exit(1);infile>>a;for(i=0;i<5;

26、i+)for(m=0;m<100;m+)infile>>time1mi;cout<<" "cout<<a<<" "for(j=0;j<5;j+)for(n=0;n<100;n+)cout<<time1nj<<" "/將存儲的數(shù)據(jù)用數(shù)組形式輸出/查詢歷史信息else if(x=4)break;else cout<<"t選擇錯誤,請重新選擇:" cout<<"請選擇:" <<

27、"nnt" <<"nnt 1.泊車操作 " <<"nnt 2.取車操作 " <<"nnt 3.查詢信息 " <<"nnt 4. 退出 " <<"nntnn" outfile.close(); int juge() /判斷出第一個空的車位 int j=0; while(positionj=1&&j<100) j+; if(j<100) positionj=1; return j; int c

28、omp() char ch9; cout<<"t車牌號:" cin>>ch; for(int k=0;k<100;k+) if(!strcmp(ch,carink.no) if(positioncarink.pos-1=1) return (carink.pos-1); break; if(k=100) return k; void car:putcar() int t; while(1) cout<<"nnt"<<"nnt貨車請輸入1,客車請輸入2,轎車請輸入3,其他請輸入4: "

29、;<<"nntnn"cin>>t; if(t=1) carini.fee=7.0;break; else if(t=2) carini.fee=5.0;break; else if(t=3)carini.fee=4.0;break; else if(t=4)carini.fee=4.0;break;cout<<"輸入錯誤!請重新輸入:n" if(i=100) cout<<"對不起,車位已滿!n" carini.pos=i+1; /自動輸出車位號 cout<<"nnt

30、"cout<<"nnt車位號:"<<carini.pos<<endl; catimei.getime(); cout<<"nnt現(xiàn)在時間是:"<<catimei.hour<<":"<<catimei.min<<endl; cout<<"nnt"<<endl; void car:takecar() int hour1,min1; double charge; if(poi<100) positionpoi=0;/重新設(shè)置為空位 hour1=cat

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論