專周設(shè)計(jì)報(bào)告樣板_第1頁(yè)
專周設(shè)計(jì)報(bào)告樣板_第2頁(yè)
專周設(shè)計(jì)報(bào)告樣板_第3頁(yè)
專周設(shè)計(jì)報(bào)告樣板_第4頁(yè)
專周設(shè)計(jì)報(bào)告樣板_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

專 周 報(bào) 告 目 錄一專周目的1二專周任務(wù)與要求:11、任務(wù):12、設(shè)計(jì)要求:1三設(shè)計(jì)說(shuō)明書(shū)21 需求分析22 概要設(shè)計(jì)95 物理設(shè)計(jì)146數(shù)據(jù)庫(kù)建立157 數(shù)據(jù)初始化178 數(shù)據(jù)庫(kù)用戶權(quán)限管理199、建立觸發(fā)器,存儲(chǔ)過(guò)程1910 系統(tǒng)實(shí)現(xiàn)20四、專周心得體會(huì)28一、題目和設(shè)計(jì)要求專周題目:停車場(chǎng)管理,設(shè)計(jì)要求:對(duì)一個(gè)兩層共十二個(gè)車位的停車場(chǎng)進(jìn)行停車、取車管理,我作為小組一員負(fù)責(zé)停車收費(fèi)管理這一塊。 題目要求如下:1、有一個(gè)兩層的停車場(chǎng),每層有6個(gè)車位,當(dāng)?shù)匾粚油\嚌M后才允許使用第二層。(停車場(chǎng)可用一個(gè)二維數(shù)組實(shí)現(xiàn),每個(gè)數(shù)組元素存放一個(gè)車牌號(hào))每輛車的信息包括車牌號(hào),層號(hào),車位號(hào),停車時(shí)間共四項(xiàng),其中停車時(shí)間按分鐘計(jì)算。2、假設(shè)停車場(chǎng)的初始狀態(tài)為第一層已經(jīng)停有4輛車,其車位號(hào)依次為1-4,停車時(shí)間依次為20,15,10,5.即先將這四輛車的信息存入文件car_dat中(數(shù)組的 對(duì)應(yīng)元素也要進(jìn)行賦值)。3、停車操作:當(dāng)一輛車進(jìn)入停車場(chǎng)時(shí),先輸入其車牌號(hào),再為它分配一個(gè)層號(hào)和一個(gè)車位號(hào)(分配前先查詢車位的使用情況,如果第一層有空位必須停在第一層);停車時(shí)間設(shè)為5,最后將新停入的汽車的信息添加文件car_dat中,并將在此之前的所有車的停車時(shí)間加5。 4、收費(fèi)管理(取車):當(dāng)有車離開(kāi)時(shí),輸入其車牌號(hào),先按其停車時(shí)間計(jì)算費(fèi)用,每5分鐘0.2元。(停車費(fèi)用可用一個(gè)變量進(jìn)行保存),同時(shí)從文件car_dat中刪除該車的信息,并將該車對(duì)應(yīng)的車位設(shè)置為可用狀態(tài),(即二位數(shù)組對(duì)用元素清零)。按用戶的選擇來(lái)判斷是否要輸出停車收費(fèi)的總計(jì)。5、輸出停車場(chǎng)的全部車輛信息。6、退出系統(tǒng)。 整個(gè)收費(fèi)管理操作用一個(gè)charge函數(shù)來(lái)執(zhí)行,在此函數(shù)內(nèi)可使用其他函數(shù),或者循環(huán)使用,同時(shí)在此函數(shù)執(zhí)行中要記錄下執(zhí)行此操作的時(shí)間,以便于計(jì)算費(fèi)用和打印憑條(即為題目要求的“輸出停車收費(fèi)總計(jì)),而且客戶或者管理員在進(jìn)行收費(fèi)管理時(shí)也可以及時(shí)的返回主菜單,另外如果不按照系統(tǒng)指示進(jìn)行操作也會(huì)返回主菜單。二、設(shè)計(jì)與實(shí)現(xiàn)1、分析問(wèn)題a) 主過(guò)程:當(dāng)停在停車場(chǎng)的車要離開(kāi)時(shí),車主會(huì)輸入車牌號(hào),系統(tǒng)就應(yīng)該迅速計(jì)算出停車費(fèi)用,之后詢問(wèn)客戶是否要憑條,是的話打印憑條。b) 輸入車牌號(hào)的時(shí)候,有可能客戶輸入的車牌號(hào)不是五位,或者輸入錯(cuò)誤(沒(méi)有輸入自己的車牌號(hào)),此時(shí)也有可能輸入的錯(cuò)誤車牌號(hào)恰巧和停車場(chǎng)其他某一輛車一致,對(duì)于此類情況系統(tǒng)要做出判斷和相應(yīng)的提示。c) 詢問(wèn)車主取車時(shí),可能不按提示輸入。d) 在某些情況,可能車主會(huì)不記得自己的車牌號(hào),則可以按車位取車。e) 按車位取車的時(shí)候,可能輸入的車位不合范圍。f) 詢問(wèn)車主是否打印憑條,車主不按照系統(tǒng)要求輸入(比如Y或者N),而輸入其他的。2、 設(shè)計(jì)思路a) 首先請(qǐng)車主輸入車牌號(hào)(包含字母),如果輸入的車牌號(hào)不是五個(gè),就輸出提示,提醒他輸入五位。b) 當(dāng)車主輸入了車牌號(hào)(五位)之后,系統(tǒng)就在“car.dat”文件中去搜索,如果沒(méi)有找到則說(shuō)明車主輸入有誤,提醒他重新輸入。c) 提醒的時(shí)候同時(shí)給予另外一種選擇,即通過(guò)車位號(hào)取車,此時(shí)車主要做出選擇。d) 如果選擇輸入車牌號(hào),則再次回到a,如果選擇通過(guò)車位號(hào)取車,系統(tǒng)就會(huì)提示車主輸入車層和車位,如果輸入車層超過(guò)2車位超過(guò)6,則提示車主輸入錯(cuò)誤,讓他重新輸入。e) 待車主輸入正確之后,找到該車,輸出車牌號(hào)并確認(rèn)取車。f) 在b中,如果搜索到了對(duì)應(yīng)的車牌號(hào),則將此車相應(yīng)的車層和車位輸出,并詢問(wèn)車主是否確認(rèn)取車(以防止輸錯(cuò)車牌號(hào)和別人的車正好吻合)。不取則回到菜單。g) 確認(rèn)取車之后,系統(tǒng)就會(huì)計(jì)算出停車的費(fèi)用,計(jì)算時(shí),小于五分鐘統(tǒng)一按五分鐘計(jì)算,將結(jié)果輸出,然后詢問(wèn)車主是否要打印憑條。h) 需要的話,即將結(jié)構(gòu)體中所有的信息輸出,不需要?jiǎng)t不進(jìn)行任何操作。i) 最后將取出的車的所有信息歸零,包括車牌號(hào),停車起始和終止時(shí)間,停車費(fèi)用,以及停車日期,并存入文件,跳出charge函數(shù)。j) 在選擇取車方式的時(shí)候,如果車主沒(méi)有按照要求輸入1或者2,則系統(tǒng)提示錯(cuò)誤,默認(rèn)返回主菜單。3、流程圖開(kāi)始輸入車牌號(hào)(code_num)車牌號(hào)為5strlen=5停車場(chǎng)中是否含有此車牌號(hào)的車NY確認(rèn)i值 (i+1)=6YN輸出層數(shù) 1,輸出車位(i+1)輸出層數(shù) 2,輸出車位(i-5)輸入是否取車YN341N輸入有誤,選擇取車方式:1,車牌號(hào);2,車位212default44Menu函數(shù)1Nn記錄時(shí)間并且將當(dāng)?shù)貢r(shí)間賦給結(jié)構(gòu)體parking_messagei3輸出費(fèi)用parking_messagei是否打印憑條將時(shí)間值及車牌號(hào)全部歸零NY2輸入層數(shù)和車位找到對(duì)應(yīng)的車牌號(hào)并且輸出確認(rèn)是否取車YN34Save函數(shù)Menu函數(shù)1Pingtiao函數(shù):輸出車牌號(hào),停車位,以及停車取車時(shí)間注釋:1,charge 函數(shù) 2,chargeplace函數(shù) 3,fee 函數(shù) 4,back 函數(shù)4、功能實(shí)現(xiàn)1,我的整個(gè)模塊就是一個(gè)charge 函數(shù),其中包含了四個(gè)函數(shù),fee函數(shù)、chargeplace函數(shù)、back函數(shù)、pingtiao函數(shù)、save函數(shù),在chatge函數(shù)主體中,主要流程是讓車主輸入車牌號(hào),同時(shí)也可以通過(guò)車位取車,這時(shí)就進(jìn)入chargeplace函數(shù)和車主對(duì)話。2,不論車主以何種方式取車,最終確認(rèn)取車之后就進(jìn)入fee函數(shù),計(jì)算費(fèi)用,如果車主不取車,進(jìn)入back函數(shù)即回去主菜單。3,在fee函數(shù)中,計(jì)算費(fèi)用并輸出之后,就詢問(wèn)是否需要憑條,需要?jiǎng)t進(jìn)入pingtiao(憑條)函數(shù),輸出車主停車的全部詳細(xì)信息,如果不需要,則再次進(jìn)入back函數(shù),回到主菜單。4,不論是否需要憑條,在fee函數(shù)最后都會(huì)執(zhí)行save函數(shù),將已取的車信息全部歸零,以便于下次取車。以下即為我負(fù)責(zé)編寫(xiě)的charge 函數(shù)以及相應(yīng)的注釋:/* 聲明要使用的函數(shù) */void chargeplace();void fee(int j);void pingtiao(); void fee(int j); /* 聲明fee函數(shù) */ void charge()int i,a;char d; /* 定義要使用的變量及字符 */char code_num6; /* 定義一個(gè)一維數(shù)組存放車牌號(hào) */ char c;printf(請(qǐng)輸入車牌號(hào)(五位):); /* 輸入車牌號(hào) */scanf(%s,code_num);while(strlen(code_num)!=5) /* 保證輸入的(車牌號(hào))字符串長(zhǎng)度為5 */printf(您的輸入有誤,請(qǐng)重新輸入車牌號(hào)(五位):);scanf(%s,code_num);for(i=0;i+)if(strcmp(parking_messagei.code_num,code_num)=0)&(i=11) /*通過(guò)車牌號(hào)找到i值*/printf(您的車停放在%d層%d號(hào)車位:,(i+1)=6?1:2,(i+1)=12) break; /*沒(méi)有找這個(gè)車牌,跳出循環(huán)執(zhí)行下一項(xiàng)*/if(i=12) /*車牌號(hào)輸入錯(cuò)誤*/printf(對(duì)不起!該停車場(chǎng)沒(méi)有找到車牌號(hào)為%s的車!n,code_num);printf(1輸入錯(cuò)誤再來(lái)一次,請(qǐng)按-1t 2忘記了車牌號(hào),請(qǐng)按-2);scanf(%d,&a); /* 選擇取車方式 */switch(a)case 1:charge();break; /*再次輸入,重新執(zhí)行charge函數(shù)*/case 2:chargeplace();break; /*忘記了車牌號(hào),通過(guò)停車位取車*/default:printf(errorn); /*選擇取車的時(shí)候按鍵錯(cuò)誤,則返回主菜單*/printf(按任意鍵返回主菜單.n);scanf(%s,&c);if(c=getchar()!=0) back();save();void chargeplace() /* 通過(guò)車位取車 */ int i=0;int m,n;char d;printf(請(qǐng)輸入層數(shù)(12)及車位號(hào)(16):); /* 輸入車位 */scanf(%d,%d,&m,&n);while(m2|n6) /* 保證輸入的車位號(hào)正確 */printf(您的輸入有誤,請(qǐng)重新輸入層數(shù)(12)及車位號(hào)(16):);scanf(%d,%d,&m,&n);i=(m=1)?(n-1):(n+5); /* 通過(guò)輸入的車位確定i值,找相應(yīng)的結(jié)構(gòu)體元素 */printf(車已找到,車牌號(hào)為%s,parking_messagei.code_num);printf(n);printf(是否要取該車(Y/N)?n); /* 確認(rèn)取車 */ scanf(%s,&d);if(d=Y|d=y) printf(取車成功n);fee(i); /* 取車即進(jìn)入fee函數(shù)*/else back(); /* 不取車即再次返回主采單*/ void fee(int j) /* 收費(fèi)函數(shù) */void pingtiao(int k);char q; /* 聲明pingtiao函數(shù) */local=localtime(&parking_messagej.end); /* 確定local結(jié)構(gòu)體指針的指向 */parking_messagej.end=time(NUL); /* 確定本地時(shí)間,并將它賦給結(jié)構(gòu)體 */int p=parking_messagej.end,parking_messagej.start); /*計(jì)算一輛車停車到取車的時(shí)間(秒)*/printf(您的停車費(fèi)用為:);parking_messagej.fee=(p/300)+1)*0.2; /*計(jì)算停車費(fèi)用*/printf(t%7.1fn,parking_messagej.fee);printf(請(qǐng)問(wèn)您是否需要您停車收費(fèi)的憑條:需要Yt退出Nn);/*詢問(wèn)是否需要打印全部信息*/ scanf(%s,&q);if(q=Y|q=y) pingtiao(j); /* 需要?jiǎng)t執(zhí)行pingtiao函數(shù) */ strcpy(parking_messagej.code_num,); /* 將原來(lái)停車的信息歸零,即刪除 */ parking_messagej.parkingtime2.year=parking_messagej.parkingtime2.day=parking_messagej.parkingtime2.mon=parking_messagej.parkingtime2.hour=parking_messagej.parkingtime2.min=parking_messagej.parkingtime1.year=parking_messagej.parkingtime1.day=parking_messagej.parkingtime1.mon=parking_messagej.parkingtime1.hour=parking_messagej.parkingtime1.min=0;parking_messagej.start=0;parking_messagej.end=0;save(); /* 最后再存入car.dat文件 */void pingtiao(int k) /* 打印憑條函數(shù) */printf(*); /* 輸出車牌號(hào),車位,停車費(fèi)用信息 */printf(n您的車牌號(hào)為%5s,停放在第%d層第%d號(hào)車位,您停車的總費(fèi)用為%6.2f元,nnt謝謝光臨發(fā)發(fā)停車場(chǎng),歡迎下次惠顧!n,parking_messagek.code_num,parking_messagek.floor,parking_messagek.place,parking_messagek.fee);char str80;char ptr80;local=localtime(&parking_messagek.end);parking_messagek.end=time(NUL);/* 通過(guò)時(shí)間結(jié)構(gòu)體獲取當(dāng)?shù)貢r(shí)間并賦給 parking_message結(jié)構(gòu)體 */parking_messagek.parkingtime2.hour=local-tm_hour; parking_messagek.parkingtime2.min=local-tm_min;printf(n日期:停車: ); /* 輸出當(dāng)?shù)啬暝氯?以及停車取車具體時(shí)間 */ strftime(str,100,%A, %Y-%B-%d, ,local);printf(str);printf(%d:%dn,parking_messagek.parkingtime1.hour,parking_messagek.parkingtime1.min);printf( 取車: );strftime(ptr,100,%A, %Y-%B-%d, ,local);printf(ptr);printf(%d:%dn,parking_messagek.parkingtime2.hour,parking_messagek.parkingtime2.min);printf(*);5、典型算法和技巧分析,調(diào)試體會(huì)1,從整體結(jié)構(gòu)看,在我寫(xiě)的這個(gè)函數(shù)里,包含了很多個(gè)函數(shù),這是由于在進(jìn)行取車時(shí),會(huì)遇到很多不同的情況,把每一種情況都編寫(xiě)成一個(gè)函數(shù),便于編寫(xiě),也便于思考和分析,看起來(lái)也顯得清晰簡(jiǎn)潔。2,在輸入車牌號(hào),車位號(hào)等信息,我都使用了一個(gè)while語(yǔ)句,給予車主提示,以保證輸入給系統(tǒng)的信息可以被識(shí)別。3,在輸出時(shí)間的時(shí)候,我采用時(shí)間函數(shù)特有輸出方式,這樣比輸出結(jié)構(gòu)體的信息更準(zhǔn)確更快速。4,在程序中基本上沒(méi)有有返回值的函數(shù),但是整個(gè)函數(shù)圍繞所要取的車輛,而確認(rèn)所要取的車最直接的方法就是確定i值,即確定是結(jié)構(gòu)體的哪一個(gè)元素,這樣就可以把各個(gè)函數(shù)聯(lián)系在一起,所取用的值和賦予的值都能夠相互對(duì)應(yīng)。5,因此,我在使用fee函數(shù)pingtiao函數(shù)時(shí),將i值作為一個(gè)實(shí)參進(jìn)行傳遞,達(dá)到各個(gè)函數(shù)相互聯(lián)系的目的。6,由于函數(shù)很多,流向也很不清晰,剛開(kāi)始運(yùn)行總會(huì)出現(xiàn)很多很奇怪的結(jié)果,而且錯(cuò)誤很多,vc的提示也不準(zhǔn)確。我將每個(gè)函數(shù)分開(kāi)先進(jìn)行調(diào)試,確認(rèn)正確之后,只要保證函數(shù)之間的連接正確即可。7,為了保證函數(shù)流向正確,我先大概了寫(xiě)了函數(shù)之后,就畫(huà)它的流程圖,通過(guò)流程圖,我可以很輕松地發(fā)現(xiàn)我的錯(cuò)誤,也看出了很多可以改進(jìn)的地方。8,調(diào)試程序的時(shí)候,我覺(jué)得手是心境最重要,首先要保持心情平靜,不可心煩氣躁,否則越調(diào)越亂,另外就是要冷靜地思考,同時(shí)也有一些技巧,比如用/*/把一些不很重要的程序筐住,一部分一部分調(diào)試,效率更高也讓人更有信心。9,還有的時(shí)候,老是調(diào)試不通,偶然的機(jī)會(huì)在書(shū)上看到類似的,才發(fā)現(xiàn)自己本身掌握不夠準(zhǔn)確。10,在運(yùn)行中有的算法不明顯的,特別是有個(gè)程序只是在內(nèi)部進(jìn)行了運(yùn)算處理,但是卻暫時(shí)沒(méi)有輸出,在運(yùn)行就沒(méi)有辦法看見(jiàn)這些算法是如何運(yùn)行的,解決這樣的問(wèn)題,我可以在其中插入一些輸出函數(shù),就可以很清楚地看見(jiàn)這些算法是如何運(yùn)行的,檢查起來(lái)就容易多了。三、專周小結(jié)1. 我們組的題目是關(guān)于停車場(chǎng)的管理,這是一個(gè)實(shí)際性很強(qiáng)的題目,所以在進(jìn)行設(shè)計(jì)的時(shí)候要考慮很多實(shí)際情況,因此在設(shè)計(jì)中加入很多很人性化的操作,比如說(shuō)忘了車牌號(hào),輸入錯(cuò)誤可以再重新輸入。2. 在收費(fèi)的時(shí)候,收費(fèi)的依據(jù)就是停車時(shí)間,所以停車時(shí)間一定要算準(zhǔn)確,為次我們同學(xué)網(wǎng)上搜索和學(xué)習(xí),在整個(gè)函數(shù)包括主函數(shù)都插入了時(shí)間結(jié)構(gòu)體,在我這個(gè)函數(shù)中就記錄了每輛車的停車時(shí)間,這樣在打印憑條的時(shí)候就可以給客戶一個(gè)清楚的停車起始時(shí)間和終止時(shí)間,這樣用戶得到憑條的時(shí)候也會(huì)有個(gè)好心情。3. 寫(xiě)這個(gè)程序的時(shí)候才發(fā)現(xiàn),原來(lái)做一些程序的時(shí)候,拿來(lái)就上機(jī)實(shí)現(xiàn),而不做任何準(zhǔn)備,那只能應(yīng)付小程序,一旦像現(xiàn)在這樣寫(xiě)一個(gè)很大的程序時(shí),就發(fā)現(xiàn)在長(zhǎng)長(zhǎng)的一大塊里面找一個(gè)小錯(cuò)誤是多么的困難。4. 體會(huì)最深的也是上面提到過(guò)的,算法是一個(gè)程序的靈魂,寫(xiě)之前一定要使用流程圖,起碼心中有數(shù),否則在調(diào)試的時(shí)候,太亂了,c語(yǔ)言也不像其他的,錯(cuò)誤指向不精確,如果是一些句子的語(yǔ)法錯(cuò)誤還比較容易發(fā)現(xiàn),但是如果算法有錯(cuò)或者有漏洞,它的錯(cuò)誤指示就毫無(wú)章法可詢,這個(gè)時(shí)候在vc里面拖上拖下檢查程序效率就非常低,相反的,放下電腦,拿張紙畫(huà)一下算法就很容易發(fā)現(xiàn)問(wèn)題。5. 這次做這個(gè)程序是以小組形式進(jìn)行的,注意組內(nèi)的合作,也是非常重要的,大的程序分成多個(gè)不關(guān)聯(lián)的部分大家同時(shí)去做,程序?qū)懙酶旄?,檢查錯(cuò)誤的

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論