版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 計(jì)算機(jī)硬件技術(shù)基礎(chǔ)課程設(shè)計(jì)</p><p> 計(jì)程車(chē)計(jì)價(jià)器設(shè)計(jì)(用計(jì)算機(jī)系統(tǒng)的輸入輸出設(shè)備完成)</p><p><b> 二O一O年九月</b></p><p><b> 目 錄</b></p><p> 摘要 ……………………………………………………
2、……………2</p><p> 1.設(shè)計(jì)的主要內(nèi)容和方案……………………………………………2</p><p> 2.任務(wù)分工 ……………………………………………………………3</p><p> 3.操作說(shuō)明 ……………………………………………………………3</p><p> 4.程序流程圖 …………………………………………………
3、………4</p><p> 4.1 主程序流程圖 ……………………………………………4</p><p> 4.2 路程計(jì)價(jià)與等待時(shí)間計(jì)價(jià)切換流程圖…………………………5</p><p> 4.3 路程計(jì)價(jià)流程圖 ……………………………………………6</p><p> 4.4 時(shí)間計(jì)價(jià)流程圖 ……………………………
4、………………6</p><p> 4.5 顯示程序流程圖 ……………………………………………6</p><p> 5. 總結(jié)與體會(huì) …………………………………………………………7</p><p> 5.1 呂天志的總結(jié)與體會(huì)……………………………………………7</p><p> 5.2 馮尚飛的總結(jié)與體會(huì)………………………………
5、……………8</p><p> 5.3 唐杰的總結(jié)與體會(huì) ……………………………………………9</p><p> 5.4 曠駒的總結(jié)與體會(huì) ……………………………………………10</p><p> 6.參考文獻(xiàn) ……………………………………………………………10</p><p> 7.程序清單 …………………………………………………
6、…………11</p><p> 出租車(chē)計(jì)價(jià)器的設(shè)計(jì)(用計(jì)算機(jī)系統(tǒng)的輸入輸出設(shè)備完成)</p><p> 摘 要:出租車(chē)計(jì)價(jià)器是乘客與司機(jī)雙方的交易準(zhǔn)則,它是出租車(chē)行業(yè)發(fā)展的重要標(biāo)志,是出租車(chē)中最重要的工具。它關(guān)系著交易雙方的利益。具有良好性能的計(jì)價(jià)器無(wú)論是對(duì)廣大出租車(chē)司機(jī)朋友還是乘客來(lái)說(shuō)都是很必要的。因此,汽車(chē)計(jì)價(jià)器的研究也是十分有一個(gè)應(yīng)用價(jià)值的。學(xué)習(xí)了計(jì)算機(jī)硬件技術(shù)基礎(chǔ),我們對(duì)微機(jī)
7、原理有了初步了解,也能編程實(shí)現(xiàn)一些基本功能。我們根據(jù)計(jì)價(jià)器的設(shè)計(jì)要求,用計(jì)算機(jī)輸入輸出設(shè)備完成了出租車(chē)計(jì)價(jià)器的軟件設(shè)計(jì)。</p><p> 1 設(shè)計(jì)的主要內(nèi)容和方案</p><p> 分析任務(wù)要求,確定系統(tǒng)整體設(shè)計(jì)思路系統(tǒng)的設(shè)計(jì)方案</p><p> 1分析任務(wù)要求,確定系統(tǒng)整體設(shè)計(jì)思路</p><p> 方案一:用匯編語(yǔ)言實(shí)現(xiàn)<
8、;/p><p> 軟件設(shè)計(jì)分為五個(gè)模塊:主程序模塊、路程計(jì)價(jià)模塊、停車(chē)等待計(jì)價(jià)模塊、油耗計(jì)算及報(bào)警模塊、顯示模塊。</p><p> 在主程序中,通過(guò)設(shè)置相應(yīng)的中斷向量,調(diào)用相應(yīng)的中斷服務(wù)程序,完成相應(yīng)的計(jì)價(jià),調(diào)用相關(guān)顯示程序,完成計(jì)價(jià)器的最終顯示。路程計(jì)價(jià)模塊中,首先根據(jù)行車(chē)速度和行車(chē)時(shí)間計(jì)算出行車(chē)路程,其中,行車(chē)時(shí)間可以由計(jì)算機(jī)內(nèi)部的8254定時(shí)器通道0完成,然后根據(jù)路程和預(yù)先輸入的起
9、步價(jià)和每公里單價(jià)計(jì)算出價(jià)格。在計(jì)價(jià)過(guò)程中,若遇到停車(chē),但沒(méi)有停止計(jì)價(jià),則轉(zhuǎn)入停車(chē)等待計(jì)價(jià)模塊。在停車(chē)等待計(jì)價(jià)模塊中,根據(jù)等待時(shí)間及預(yù)設(shè)單價(jià),其中等待時(shí)間由8254定時(shí)器實(shí)現(xiàn),再計(jì)算出等待價(jià)格。在這個(gè)過(guò)程中,若車(chē)輛開(kāi)始行駛則轉(zhuǎn)入路程計(jì)價(jià)模塊。在油耗模塊中,根據(jù)行車(chē)路程和每公里油耗,計(jì)算相應(yīng)的剩余油量,當(dāng)油量一旦低于警戒值則發(fā)出報(bào)警信號(hào),油量為0時(shí)強(qiáng)制停車(chē)。</p><p> 方案二:用C語(yǔ)言實(shí)現(xiàn)</p>
10、;<p> 主要分為三個(gè)子程序模塊:初始化主程序、主體運(yùn)行子程序、示子程序。</p><p> 初始化包括各個(gè)變量的初始化定義、函數(shù)定義、從鍵盤(pán)接收字符,輸出提示字符提示從鍵盤(pán)輸入數(shù)據(jù)。主體部分包括路程計(jì)價(jià)模塊、停車(chē)等待計(jì)價(jià)模塊、油耗計(jì)算及報(bào)警模塊。路程計(jì)價(jià)模塊中,首先根據(jù)行車(chē)速度和行車(chē)時(shí)間計(jì)算出行車(chē)路程,其中,行車(chē)時(shí)間可以由計(jì)算機(jī)系統(tǒng)時(shí)間得到,然后根據(jù)路程和預(yù)先輸入的起步價(jià)和每公里單價(jià)計(jì)算出價(jià)
11、格。在計(jì)價(jià)過(guò)程中,若遇到停車(chē),但沒(méi)有停止計(jì)價(jià),則轉(zhuǎn)入停車(chē)等待計(jì)價(jià)模塊。在停車(chē)等待計(jì)價(jià)模塊中,根據(jù)等待時(shí)間及預(yù)設(shè)單價(jià),其中等待時(shí)間調(diào)用PC機(jī)系統(tǒng)時(shí)間計(jì)時(shí),每隔一分鐘一次單價(jià)。在這個(gè)過(guò)程中,若車(chē)輛開(kāi)始行駛則轉(zhuǎn)入路程計(jì)價(jià)模塊。在油耗模塊中,根據(jù)行車(chē)路程和每公里油耗,計(jì)算相應(yīng)的剩余油量,當(dāng)油量一旦低于警戒值則發(fā)出報(bào)警信號(hào),油量為0時(shí)強(qiáng)制停車(chē)。</p><p> 優(yōu)化功能:1顯示路程的單價(jià),符合明碼標(biāo)價(jià)的規(guī)定,可以讓消費(fèi)
12、者消費(fèi)得更明白。2設(shè)置了輸出背景,并且用不同的顏色顯示,使顯示界面更加友好。3一旦油量為0,從實(shí)際出發(fā),則強(qiáng)制停車(chē),并停止計(jì)價(jià)。</p><p> 根據(jù)小組討論和實(shí)踐驗(yàn)證分析,我們發(fā)現(xiàn)在用匯編語(yǔ)言進(jìn)行軟件設(shè)計(jì)時(shí),組員們普遍遇到了較大困難,對(duì)計(jì)算機(jī)內(nèi)部的中斷機(jī)制不清楚,只能運(yùn)用定時(shí)中斷,無(wú)法運(yùn)用軟件中斷,在處理數(shù)據(jù)時(shí)也遇到了較大困難。因此,我們?cè)谘芯苛擞?jì)價(jià)器硬件工作原理后,決定用C語(yǔ)言完成系統(tǒng)的軟件設(shè)計(jì)。<
13、/p><p><b> 2 任務(wù)分工</b></p><p> 根據(jù)總體設(shè)計(jì)方案,確定每位組員的詳細(xì)分工</p><p> 小組討論系統(tǒng)優(yōu)化功能設(shè)計(jì),完成總的軟件設(shè)計(jì),加入相關(guān)的優(yōu)化功能,小組成員共同完成最終程序的調(diào)試運(yùn)行,并根據(jù)運(yùn)行結(jié)果作出相應(yīng)的調(diào)整,完成設(shè)計(jì)任務(wù)。</p><p><b> 3 操作說(shuō)明
14、</b></p><p> 在程序開(kāi)始運(yùn)行后,系統(tǒng)的初始狀態(tài)是出租車(chē)停止,具體操作方式如下:</p><p><b> 按任意鍵啟動(dòng)系統(tǒng)</b></p><p> 設(shè)置3公里以內(nèi)的白天和晚上的價(jià)格</p><p> 設(shè)置3公里以外的白天和晚上的價(jià)格</p><p> 設(shè)置出租
15、車(chē)時(shí)速(0<V<1000)</p><p><b> 設(shè)置起初車(chē)內(nèi)油量</b></p><p><b> 設(shè)置每公里耗油量</b></p><p> 按任意鍵啟動(dòng)速度計(jì)價(jià)</p><p> 按q等待計(jì)時(shí),按s車(chē)啟動(dòng),按esc車(chē)停止計(jì)價(jià)。</p><p>&
16、lt;b> 4 程序流程圖</b></p><p><b> 主程序流程圖:</b></p><p><b> 否</b></p><p><b> 是</b></p><p> 是 否</p><p&
17、gt;<b> 否</b></p><p> 路程計(jì)價(jià)與等待時(shí)間計(jì)價(jià)切換流程圖</p><p><b> 是</b></p><p> 否 </p><p> 是 否</p><p><b> 路程計(jì)價(jià)
18、流程圖:</b></p><p><b> 是</b></p><p><b> 否</b></p><p><b> 否</b></p><p><b> 是</b></p><p><b> 時(shí)間
19、計(jì)價(jià)流程圖:</b></p><p><b> 否</b></p><p><b> 顯示程序流程圖:</b></p><p> 否 是</p><p><b> 5 總結(jié)與體會(huì)</b></p><p> 學(xué)習(xí)了計(jì)算
20、機(jī)硬件基礎(chǔ),我們了解了計(jì)算機(jī)內(nèi)部指令工作原理并學(xué)會(huì)了用匯編語(yǔ)言完成簡(jiǎn)單的程序設(shè)計(jì),同時(shí)也理解了高級(jí)語(yǔ)言是如何在計(jì)算機(jī)內(nèi)部實(shí)現(xiàn)的。經(jīng)過(guò)了硬件技術(shù)課程設(shè)計(jì)我們真正地學(xué)會(huì)了如何應(yīng)用應(yīng)用硬件技術(shù)完成簡(jiǎn)單地設(shè)計(jì)。</p><p> 拿到這個(gè)題目,出租車(chē)計(jì)價(jià)器的實(shí)現(xiàn),我大體想了一下設(shè)計(jì)思路。首先應(yīng)該調(diào)用系統(tǒng)時(shí)間判斷是白天還是晚上,進(jìn)而轉(zhuǎn)向不同的子程序,然后就是計(jì)價(jià)模塊,分兩部分,一部分是車(chē)在行駛時(shí)的計(jì)價(jià),另一部分時(shí)車(chē)停止時(shí)
21、的計(jì)價(jià),最后計(jì)算油耗并顯示相應(yīng)的內(nèi)容。于是便分配了每個(gè)組員的任務(wù)。我嘗試用匯編語(yǔ)言編寫(xiě)主程序,用計(jì)算機(jī)內(nèi)部的8254通道0作為定時(shí)器,定時(shí)一秒產(chǎn)生一次中斷,在中斷服務(wù)程序完成計(jì)價(jià),但怎樣判斷停車(chē)并產(chǎn)生中斷一時(shí)半伙搞不清楚,另外,數(shù)據(jù)的處理、顯示都有一定難度。鑒于此,我們小組討論決定用C語(yǔ)言完成程序的設(shè)計(jì)。用C語(yǔ)言編寫(xiě)程序不用考慮數(shù)據(jù)處理,顯示也簡(jiǎn)單得多,但需要我們查閱相關(guān)資料調(diào)用相關(guān)函數(shù)完成計(jì)時(shí)、計(jì)算、輸出等。在組員們完成子程序的設(shè)計(jì)時(shí)
22、,我面臨的問(wèn)題是如何把一塊塊子程序連接起來(lái),實(shí)現(xiàn)從輸入到輸出,再到定時(shí)計(jì)時(shí)等一系列工作,開(kāi)始沒(méi)能連續(xù)計(jì)算時(shí)間,導(dǎo)致了輸出只顯示當(dāng)前值,時(shí)間路程都是固定不變的,通過(guò)不斷地改正、調(diào)試,終于實(shí)現(xiàn)了部分基本功能。關(guān)于報(bào)警我們?cè)贑語(yǔ)言中嵌套了匯編,但并不成功,后來(lái)我們查資料用/a實(shí)現(xiàn)了報(bào)警功能。再加入行駛過(guò)程中改變速度我們也費(fèi)了一番周折,幾次調(diào)試都不成功,但最終經(jīng)過(guò)我們的努力</p><p> 計(jì)價(jià)器的設(shè)計(jì),題目看似簡(jiǎn)單
23、,思路也清楚,但真正在編程時(shí)我們遇到了許多困難,因?yàn)樵诰唧w實(shí)施時(shí)要考慮很多細(xì)節(jié)的處理問(wèn)題。通過(guò)此次課程設(shè)計(jì),我學(xué)會(huì)了如何分析實(shí)際問(wèn)題并編程實(shí)現(xiàn),學(xué)會(huì)了如何克服各種困難,學(xué)會(huì)了如何分工協(xié)作共同完成項(xiàng)目的設(shè)計(jì)實(shí)施。</p><p> 這次課程設(shè)計(jì)我組有4名成員,做的是出租車(chē)計(jì)價(jià)器的設(shè)計(jì)(用計(jì)算機(jī)系統(tǒng)的輸入輸出設(shè)備完成),我的任務(wù)是負(fù)責(zé)按車(chē)速計(jì)價(jià)程序的編寫(xiě)和部分報(bào)告的完成。</p><p>
24、 本來(lái)我們應(yīng)該用匯編去進(jìn)行編程,但根據(jù)小組討論和實(shí)踐驗(yàn)證分析,我們發(fā)現(xiàn)在用匯編語(yǔ)言進(jìn)行軟件設(shè)計(jì)時(shí),組員們普遍遇到了較大困難,對(duì)計(jì)算機(jī)內(nèi)部的中斷機(jī)制不清楚,只能運(yùn)用定時(shí)中斷,無(wú)法運(yùn)用軟件中斷,在處理數(shù)據(jù)時(shí)也遇到了較大困難。因此,我們?cè)谘芯苛擞?jì)價(jià)器硬件工作原理后,決定用C語(yǔ)言完成系統(tǒng)的軟件設(shè)計(jì)。</p><p> 我負(fù)責(zé)的部分本來(lái)比較簡(jiǎn)單,但具體操作的時(shí)候卻給了我不小的教訓(xùn)。編程的時(shí)候,我很快就把程序編好了,但當(dāng)我
25、把程序交給組長(zhǎng)運(yùn)行時(shí)他卻說(shuō)我的程序塊出現(xiàn)了問(wèn)題,輸入一個(gè)很小的時(shí)間卻有很高的價(jià)格。這下把又趕緊檢查,找了很長(zhǎng)時(shí)間還是不對(duì),就這樣兩天過(guò)去了,最后實(shí)在不行我去找認(rèn)識(shí)的一個(gè)編程比較好的同學(xué),我把大體內(nèi)容給他說(shuō)了一下,他開(kāi)始檢查我的程序,終于發(fā)現(xiàn)了錯(cuò)誤,原來(lái)我在算路程的時(shí)候沒(méi)把時(shí)間換成標(biāo)準(zhǔn)單位,忘了除3600。這本是一個(gè)很小的問(wèn)題但讓我感觸很多,其實(shí)很多人都很接近成功,而往往都是由于一點(diǎn)點(diǎn)小錯(cuò)誤而與成功失之交臂,這不得不讓人們感到惋惜,所以我
26、在以后的生活中會(huì)嚴(yán)格要求自己無(wú)論做什么事都嚴(yán)肅認(rèn)真。另外我的工作還有報(bào)告的完成,這一部分比較簡(jiǎn)單,我原本把大家的程序和感想總結(jié)在一塊就行了,但我不知怎么地完成以后卻忘記保存了,我趕緊又把大家的資料找回來(lái)重新做,幸虧大家的資料還在要不真不知道該怎么辦。</p><p> 就這樣我門(mén)的課程設(shè)計(jì)完成了,我做的并不像其他同學(xué)的那么難,需要差很多資料,但卻給了我不小的教訓(xùn),就拿忘保存這件事來(lái)說(shuō)吧,如果大家的資料沒(méi)備份我們
27、就得再做一遍,那樣既浪費(fèi)時(shí)間又降低了效率,再者現(xiàn)在只是個(gè)課程設(shè)計(jì),如果以后工作中把很重要的資料弄丟了,那樣后果會(huì)更嚴(yán)重,我真不敢再往下想了......</p><p> 不過(guò)這也給我一個(gè)提醒,無(wú)論干什么事都要有一個(gè)良好的習(xí)慣,做什么事不要急于求成要一絲不茍。另外我要考研,我想這會(huì)對(duì)我的考研有好處的,它會(huì)讓我在考研道路上減少曲折,也會(huì)讓我在以后的生活中減少波折......</p><p>
28、 計(jì)算機(jī)硬件技術(shù)基礎(chǔ)課程設(shè)計(jì)是本學(xué)期開(kāi)校第一個(gè)任務(wù),分組完成后每個(gè)人都承擔(dān)自己分內(nèi)之事,我們組的課程設(shè)計(jì)題目為:計(jì)程車(chē)計(jì)價(jià)設(shè)計(jì)(用計(jì)算機(jī)系統(tǒng)的輸入輸出設(shè)備完成),這個(gè)類(lèi)似現(xiàn)實(shí)的問(wèn)題確實(shí),有一定的難度,經(jīng)大家一并商量后,組長(zhǎng)呂天志分配給每個(gè)人任務(wù),其中我承擔(dān)的是:顯示當(dāng)前燃油量,車(chē)輛行進(jìn)過(guò)程中反映燃油的消耗,但燃油量低于警戒值時(shí)報(bào)警,以及畫(huà)各軟件模塊的流程圖。</p><p> 剛開(kāi)始我準(zhǔn)備用匯編語(yǔ)言編寫(xiě)程序,
29、但經(jīng)過(guò)吧一天的實(shí)踐后,發(fā)現(xiàn)比較復(fù)雜,后經(jīng)過(guò)大家商量決定用C語(yǔ)言編寫(xiě),看似短短的一句話,當(dāng)需要設(shè)計(jì)成程序后才知道,比較困難。程序語(yǔ)言不同于,一般的語(yǔ)言,太精煉,所以很容易忽略,整個(gè)過(guò)程中需要反復(fù)的編譯,找錯(cuò),其中過(guò)程,讓讓人郁悶,多方請(qǐng)教反復(fù)看書(shū)查閱資料最后寫(xiě)出了正確的程序。說(shuō)起來(lái)過(guò)程也是有些心酸,最后寫(xiě)出程序的一剎那,還是很有成就感的!在畫(huà)各軟件模塊的程序流程圖中困難很少,整個(gè)過(guò)程也很簡(jiǎn)單,我是在Word上畫(huà)的,整個(gè)過(guò)程比較輕松。<
30、;/p><p> 整個(gè)課程設(shè)計(jì)中遇到的問(wèn)題都是在完成程序設(shè)計(jì)中的,寫(xiě)出來(lái)的程序雖然不多但是耗費(fèi)了不少周折,在編寫(xiě)程序中,有些數(shù)據(jù)課程設(shè)計(jì)題目上并未給出,我們商量后決定采用一個(gè)合理的數(shù)據(jù),全組統(tǒng)一,如余油量少于2時(shí)報(bào)警等。完成設(shè)計(jì)后我回過(guò)頭看看,又加深了對(duì)c語(yǔ)言的了解,熟悉了它的應(yīng)用,當(dāng)然過(guò)程中也翻閱了很多參考資料,如程序設(shè)計(jì)技術(shù)及實(shí)驗(yàn)指導(dǎo)書(shū),計(jì)算機(jī)硬件技術(shù)基礎(chǔ)及實(shí)驗(yàn)指導(dǎo)書(shū)等。</p><p>
31、; 簡(jiǎn)單回顧這個(gè)過(guò)程,時(shí)間雖然短暫但是我們也從中學(xué)到了不少東西,凡事多商量,一個(gè)人的思維難免有局限性,一種方法走不通,趕快換路,時(shí)間很重要,分工合作互相幫助,明確任務(wù)詳細(xì)計(jì)劃,并按照計(jì)劃確定任務(wù)步驟一步步的攻克難題。我們同樣學(xué)會(huì)了一些把文字轉(zhuǎn)換為我們實(shí)際設(shè)計(jì)時(shí)所用語(yǔ)言的能力。再設(shè)計(jì)過(guò)程中大家齊心協(xié)力,最后將各自的子程序合并在一起,由組長(zhǎng)整合后,我們的程序最終正確的運(yùn)行,這里包含大家的兩周勞動(dòng),增強(qiáng)了我們的自信。</p>
32、<p> 這次關(guān)于計(jì)程車(chē)計(jì)價(jià)器的設(shè)計(jì)任務(wù)相對(duì)來(lái)說(shuō),比較繁瑣,我們一共花費(fèi)了一周左右的時(shí)間,每個(gè)人都積極動(dòng)手和思考,團(tuán)結(jié)得比較融洽,我們還把這個(gè)設(shè)計(jì)詳細(xì)地進(jìn)行了分工。每個(gè)人負(fù)責(zé)不同的一小塊。</p><p> 由于計(jì)價(jià)器可以說(shuō)是相對(duì)來(lái)說(shuō)比較智能的器件,因?yàn)樗挠?jì)價(jià)需要按照路程,時(shí)間的差異收費(fèi)不同,一般情況下它有個(gè)起步價(jià),一般設(shè)置在3公里范圍內(nèi),然后超過(guò)3公里了就按照每公里的單價(jià)收費(fèi)。這種情況比較普遍。
33、但是遇到路上堵車(chē)的情況,也就是出租車(chē)沒(méi)有走,但是同樣要計(jì)費(fèi),這種計(jì)費(fèi)方式就是按照時(shí)間進(jìn)行計(jì)費(fèi),也就是說(shuō)每隔一段時(shí)間,計(jì)價(jià)器計(jì)價(jià)結(jié)果增加一次單價(jià)。出租車(chē)的啟動(dòng)或者靜止應(yīng)該是計(jì)價(jià)器自己進(jìn)行分析,有必要設(shè)置一個(gè)傳感器。如果沒(méi)有設(shè)置傳感器,則需要人為的進(jìn)行計(jì)價(jià)調(diào)整,那樣相對(duì)來(lái)說(shuō)比較麻煩。然而更過(guò)時(shí)候,白天的收費(fèi)標(biāo)準(zhǔn)和晚間的收費(fèi)標(biāo)準(zhǔn)不同,晚上的收費(fèi)按照晚上的起步價(jià)和晚間美公里單價(jià)計(jì)算。比如說(shuō)晚上10點(diǎn)過(guò)后到早上7點(diǎn)之間這段時(shí)間里面。這種不需要計(jì)價(jià)
34、器自己感應(yīng),如果把它設(shè)計(jì)成計(jì)價(jià)器自動(dòng)調(diào)節(jié)收費(fèi)標(biāo)準(zhǔn),會(huì)產(chǎn)生一些沒(méi)必要的錯(cuò)誤,至少在時(shí)間上存在差異,比如快幾分鐘或者慢幾分鐘。我覺(jué)得人為地調(diào)整收費(fèi)情況比較好。</p><p> 這次設(shè)計(jì)任務(wù)中我主要是負(fù)責(zé)停車(chē)停車(chē)等待時(shí)的計(jì)價(jià)程序,也就是堵車(chē)或者等待乘客的時(shí)候所需要的程序,屬于一個(gè)子模塊。這個(gè)部分相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,而且內(nèi)容上不是很繁瑣。在設(shè)計(jì)該段程序之前我首先列出了程序流程圖。在此用文字作簡(jiǎn)單的描述,首先是程序開(kāi)始(
35、指等待的時(shí)候,即開(kāi)始等待),通過(guò)程序計(jì)算出時(shí)間,根據(jù)時(shí)間增加單價(jià),然后考慮等待時(shí)間是否結(jié)束了(也就是說(shuō)預(yù)先設(shè)置的開(kāi)關(guān)鍵S是否按下),若是,則程序結(jié)束,顯示出來(lái)。如果不是,那么需要回到第一步,繼續(xù)這個(gè)程序,直到等待時(shí)間結(jié)束為止。</p><p> 通過(guò)這次課程設(shè)計(jì),我學(xué)到了很多東西,。鍛煉了自己的動(dòng)手能力,積極查閱資料的動(dòng)力,以及思考能力。為今后投入工作打下了一個(gè)堅(jiān)實(shí)的基礎(chǔ)。同時(shí)更重要的是這次設(shè)計(jì)室分小組進(jìn)行的,
36、每個(gè)小組幾個(gè)成員一起探討,共同努力,提高了團(tuán)隊(duì)的意識(shí)。</p><p><b> 6 參考文獻(xiàn)</b></p><p> [1].熊壯、陳策主編.程序設(shè)計(jì)技術(shù).重慶大學(xué)出版社</p><p> [2].卜艷萍、周偉主編. 匯編語(yǔ)言程序設(shè)計(jì)教程. 清華大學(xué)出版社</p><p> [3]. 徐愛(ài)蕓、向華主編. 匯編
37、語(yǔ)言程序設(shè)計(jì)教程與實(shí)驗(yàn). 清華大學(xué)出版社</p><p> [4].黃勤、高富強(qiáng)主編.計(jì)算機(jī)硬件技術(shù)基礎(chǔ)實(shí)驗(yàn)教程.重慶大學(xué)出版社</p><p><b> 7 附錄</b></p><p><b> 程序清單</b></p><p> #include <stdio.h><
38、/p><p> #include <stdlib.h></p><p> #include <string.h></p><p> #include <time.h></p><p> #include <conio.h></p><p> #include <
39、;graphics.h></p><p> double temp,V,oil,oil_used,price_day,price_night,price_day3,price_night3;</p><p> char reset[256];</p><p> int st[256],R,t,X,Y,x,y;</p><p>
40、clock_t start, finish; </p><p> double price,distance,delay_min,delay_sec;</p><p> char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri"
41、,"Sat"},*endptr; </p><p> time_t timep; </p><p> struct tm *p; </p><p> const char tips1[256]="重置速度的提示:",tips2[256]="r=重新設(shè)置速度;c=取消設(shè)置;回車(chē)=速度設(shè)置完成;整數(shù) 且
42、 0<V<1000";</p><p> float H, S, L;</p><p> // sampal : 8 10 1.2 1.8 300 4 10</p><p> bool getkey()</p><p><b> {</b></p><p> if
43、( kbhit( ) )</p><p><b> {</b></p><p><b> char ch;</b></p><p> ch=getch();</p><p><b> st[ch]++;</b></p><p> if (ch=
44、='c'){st['c']=st['r']=0;reset[0]='\0';R=0;}</p><p> if (st['r']>0 && ch >='0' && ch<='9')</p><p><b> {<
45、;/b></p><p> reset[R++]=ch;</p><p> reset[R]='\0';</p><p><b> }</b></p><p> if (st['r']>0 && ch==8)</p><p>&l
46、t;b> {</b></p><p> reset[--R]='\0';</p><p><b> }</b></p><p> if (ch==13)</p><p><b> {</b></p><p> st[13]=st[
47、'r']=0;</p><p> if (strtod(reset,&endptr)<1000)</p><p> V=strtod(reset,&endptr);</p><p> R=0;reset[0]='\0';</p><p><b> }</b>&
48、lt;/p><p> // 畫(huà)漸變的天空(通過(guò)亮度逐漸增加)</p><p> H = 190;// 色相</p><p> S = (float)1.4;// 飽和度</p><p> L = 0.85f;// 亮度</p><p> for(y = 300; y < 600; y+
49、+)</p><p><b> {</b></p><p> L += 0.0005f;</p><p> setcolor( HSLtoRGB(H, S, L) );</p><p> line(0, y, 799, y);</p><p><b> }</b>&
50、lt;/p><p> return true;</p><p><b> }</b></p><p> return false;</p><p><b> }</b></p><p> void init()</p><p><b>
51、 {</b></p><p> R=0;reset[0]='\0';</p><p> price=distance=0;</p><p> delay_min=delay_sec=0;</p><p> printf("please press any key to start the sys
52、tem...\n");</p><p> while(!kbhit());</p><p><b> getch();</b></p><p> system("cls");</p><p> printf("please set the price before 3 km
53、 in day and night ...\n");</p><p> scanf("%lf%lf",&price_day,&price_night);</p><p> system("cls");</p><p> printf("please set the price more
54、 than 3 km in day and night ...\n");</p><p> scanf("%lf%lf",&price_day3,&price_night3);</p><p> system("cls");</p><p> printf("please set th
55、e speed V km/h ...\n");</p><p> scanf("%lf",&V);</p><p> system("cls");</p><p> printf("please set the oil mass ...\n");</p><p&g
56、t; scanf("%lf",&oil);</p><p> system("cls");</p><p> printf("please set the oil used per 100km ...\n");</p><p> scanf("%lf",&oil_
57、used);</p><p> system("cls");</p><p> printf("please press any key to start the taxi...\n");</p><p> while(!kbhit());</p><p><b> getch();&
58、lt;/b></p><p> //LOGFONT f;</p><p> //getfont(&f);// 獲取當(dāng)前字體設(shè)置</p><p> //f.lfHeight = 30;// 設(shè)置字體高度為 48(包含行距)</p><p> //strcpy(f.lfFaceName, &
59、quot;黑體");// 設(shè)置字體為“黑體”</p><p> //f.lfQuality = ANTIALIASED_QUALITY;// 設(shè)置輸出效果為抗鋸齒 </p><p> //setfont(&f);// 設(shè)置字體樣式</p><p> initgraph(800, 600);// 設(shè)置屏幕
60、尺寸</p><p> X=20;Y=10;</p><p> setfont(24, 12, "黑體");// 設(shè)置字體</p><p> // 畫(huà)漸變的天空(通過(guò)亮度逐漸增加)</p><p> H = 190;// 色相</p><p> S = (float)1.4;// 飽
61、和度</p><p> L = 0.7f;// 亮度</p><p> for(y = 0; y < 600; y++)</p><p><b> {</b></p><p> L += 0.0005f;</p><p> setcolor( HSLtoRGB(H, S, L)
62、);</p><p> line(0, y, 799, y);</p><p><b> }</b></p><p> start=clock();</p><p> memset(st,0,sizeof(st));</p><p> setcolor(0xFCFCFC);//
63、WHITE</p><p> outtextxy(X,Y,tips1);</p><p> outtextxy(X,Y+30,tips2);</p><p> outtextxy(X,Y+60,"press ESC to leave the car...");</p><p> outtextxy(X,Y+90,&
64、quot;press q to stop the car...");</p><p> outtextxy(X,Y+120,"press s to start the car...");</p><p><b> }</b></p><p> void out()</p><p>&l
65、t;b> {</b></p><p> char temp[256],str[256];</p><p> setcolor(0xA8A800);//CYAN</p><p> strcpy(str,"當(dāng)前時(shí)間 ");</p><p> ultoa(1900+p->tm_year
66、,temp,10); </p><p> strcpy(str,temp);</p><p> strcat(str,"/");</p><p> ultoa(1+p->tm_mon,temp,10); </p><p> strcat(str,temp);</p><p> str
67、cat(str,"/");</p><p> ultoa(p->tm_mday,temp,10); </p><p> strcat(str,temp);</p><p> strcat(str," ");</p><p> strcat(str,wday[p->tm_wday])
68、;</p><p> strcat(str," ");</p><p> ultoa(p->tm_hour,temp,10); </p><p> strcat(str,temp);</p><p> strcat(str,":");</p><p> ultoa
69、(p->tm_min,temp,10); </p><p> strcat(str,temp);</p><p> strcat(str,":");</p><p> ultoa(p->tm_sec,temp,10); </p><p> strcat(str,temp);</p><
70、;p> outtextxy(X,Y+170,str);</p><p> setcolor(0x00A800);//GREEN</p><p> if (p->tm_hour>=7 && p->tm_hour<=22)</p><p><b> {</b></p>&
71、lt;p> strcpy(str,"起步價(jià)格 ");</p><p> ultoa(int(price_day),temp,10);</p><p> strcat(str,temp);</p><p> strcat(str,".");</p><p> ultoa(int(price
72、_day*10)%10,temp,10);</p><p> strcat(str,temp);</p><p> outtextxy(X,Y+210,str);</p><p> strcpy(str,"每公里單價(jià) ");</p><p> ultoa(int(price_day3),temp,10);</
73、p><p> strcat(str,temp);</p><p> strcat(str,".");</p><p> ultoa(int(price_day3*10)%10,temp,10);</p><p> strcat(str,temp);</p><p> outtextxy(X,Y
74、+240,str);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> strcpy(str,"起步價(jià)格 ");</p><p> ul
75、toa(int(price_night),temp,10);</p><p> strcat(str,temp);</p><p> strcat(str,".");</p><p> ultoa(int(price_night*10)%10,temp,10);</p><p> strcat(str,temp);
76、</p><p> outtextxy(X,Y+210,str);</p><p> strcpy(str,"每公里單價(jià) ");</p><p> ultoa(int(price_night3),temp,10);</p><p> strcat(str,temp);</p><p> s
77、trcat(str,".");</p><p> ultoa(int(price_night3*10)%10,temp,10);</p><p> strcat(str,temp);</p><p> outtextxy(X,Y+240,str);</p><p><b> }</b><
78、/p><p> setcolor(0xA800A8);//MAGENTA</p><p> strcpy(str,"當(dāng)前速度 ");</p><p> ultoa(int(V),temp,10);</p><p> strcat(str,temp);</p><p> strcat(
79、str,".");</p><p> ultoa(int(V*10)%10,temp,10);</p><p> strcat(str,temp);</p><p> outtextxy(X,Y+270,str);</p><p> setcolor(0x5454FC);//LIGHTRED</p&
80、gt;<p> strcpy(str,"當(dāng)前價(jià)格 ");</p><p> ultoa(int(price),temp,10);</p><p> strcat(str,temp);</p><p> strcat(str,".");</p><p> ultoa(int(pri
81、ce*10)%10,temp,10);</p><p> strcat(str,temp);</p><p> outtextxy(X,Y+300,str);</p><p> strcpy(str,"當(dāng)前里程 ");</p><p> ultoa(int(distance),temp,10);</p>
82、<p> strcat(str,temp);</p><p> strcat(str,".");</p><p> ultoa(int(distance*10)%10,temp,10);</p><p> strcat(str,temp);</p><p> outtextxy(X,Y+330,st
83、r);</p><p> setcolor(0x54FCFC);//YELLOW</p><p> strcpy(str,"等待時(shí)間 ");</p><p> ultoa(delay_min,temp,10);</p><p> if (delay_min<10)strcat(str,"0
84、");</p><p> strcat(str,temp);</p><p> strcat(str,":");</p><p> ultoa(delay_sec,temp,10);</p><p> if (delay_sec<10)strcat(str,"0");</p
85、><p> strcat(str,temp);</p><p> outtextxy(X,Y+360,str);</p><p> strcpy(str,"剩余油量 ");</p><p> ultoa(int(oil-distance/100*oil_used),temp,10);</p><p&
86、gt; strcat(str,temp);</p><p> strcat(str,".");</p><p> ultoa(int((oil-distance/100*oil_used)*10)%10,temp,10);</p><p> strcat(str,temp);</p><p> outtextxy
87、(X,Y+390,str);</p><p> if (oil-distance/100*oil_used <= 0.1 )</p><p><b> {</b></p><p><b> V=0;</b></p><p> setcolor(RED);</p><
88、p> outtextxy(X,Y+430,"油已耗盡 無(wú)法繼續(xù)行駛!");</p><p><b> }</b></p><p> else if (oil-distance/100*oil_used < 2 )</p><p><b> {</b></p><p
89、> setcolor(RED);</p><p> outtextxy(X,Y+430,"油快耗盡!");</p><p> printf("\a");</p><p><b> }</b></p><p> if (st['r']>0)<
90、;/p><p><b> {</b></p><p> setcolor(LIGHTBLUE);</p><p> strcpy(str,"重置速度: V = ");</p><p> strcat(str,reset);</p><p> outtextxy(X,Y+4
91、70,str);</p><p><b> }</b></p><p><b> }</b></p><p> void run()</p><p><b> {</b></p><p> while(st[27]==0 &&
92、oil-distance/100*oil_used>0.1)//未按下ESC</p><p><b> {</b></p><p> time(&timep); </p><p> p=localtime(&timep); </p><p> t=p->tm_sec;<
93、/p><p> finish=clock();</p><p> distance+=(double)(finish - start) / CLOCKS_PER_SEC*V/3600;//得到里程</p><p> if (distance<=3)</p><p><b> {</b></p>
94、<p> if (p->tm_hour>=7 && p->tm_hour<=22)</p><p> price=price_day;</p><p> else price=price_night;</p><p><b> }</b></p><p><
95、;b> else</b></p><p><b> {</b></p><p> if (p->tm_hour>=7 && p->tm_hour<=22)</p><p> price=price_day+price_day3*(distance-3);</p>&
96、lt;p> else price=price_night+price_night3*(distance-3);</p><p><b> }</b></p><p> start=finish;</p><p> out();//輸出當(dāng)前狀態(tài)</p><p> if (get
97、key())//獲取當(dāng)前鍵盤(pán)狀態(tài)</p><p><b> {</b></p><p> if (st['q']>0)</p><p><b> {</b></p><p><b> temp=V;</b><
98、/p><p><b> V=0;</b></p><p> st['s']=0;</p><p> while(st[27]==0 && st['s']==0)</p><p><b> {</b></p><p> ti
99、me(&timep); </p><p> p=localtime(&timep); </p><p> t=p->tm_sec;</p><p> finish=clock();</p><p> delay_sec+=(double)(finish - start) / CLOCKS_PER_SEC;<
100、;/p><p> if (delay_sec>=60)</p><p><b> {</b></p><p> delay_sec-=60;</p><p> delay_min++;</p><p> price+=delay_min;</p><p><
101、;b> }</b></p><p><b> getkey();</b></p><p><b> out();</b></p><p> start=finish;</p><p><b> }</b></p><p>&l
102、t;b> V=temp;</b></p><p> st['q']=0;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><
103、;b> }</b></p><p> int main()</p><p><b> {</b></p><p> init();//初始化</p><p> run();//主體運(yùn)行</p><p> closegraph(); /
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 計(jì)算機(jī)硬件課程設(shè)計(jì)---出租車(chē)計(jì)價(jià)器設(shè)計(jì)
- 硬件課程設(shè)計(jì)----出租車(chē)計(jì)價(jià)器
- 計(jì)算機(jī)硬件技術(shù)基礎(chǔ)課程設(shè)計(jì)---計(jì)程車(chē)計(jì)價(jià)器設(shè)計(jì)
- 硬件課程設(shè)計(jì)--出租車(chē)計(jì)價(jià)器系統(tǒng)
- 硬件課程設(shè)計(jì)報(bào)告--出租車(chē)計(jì)價(jià)器
- 出租車(chē)計(jì)價(jià)器課程設(shè)計(jì)
- 出租車(chē)計(jì)價(jià)器課程設(shè)計(jì)
- 出租車(chē)計(jì)價(jià)器課程設(shè)計(jì)
- 出租車(chē)計(jì)價(jià)器課程設(shè)計(jì)
- 課程設(shè)計(jì)--出租車(chē)計(jì)價(jià)器設(shè)計(jì)
- 出租車(chē)計(jì)價(jià)器設(shè)計(jì)課程設(shè)計(jì)
- 課程設(shè)計(jì)---出租車(chē)計(jì)價(jià)器設(shè)計(jì)
- 課程設(shè)計(jì)---出租車(chē)計(jì)價(jià)器設(shè)計(jì)
- 課程設(shè)計(jì)---出租車(chē)計(jì)價(jià)器的設(shè)計(jì)
- 課程設(shè)計(jì)--出租車(chē)計(jì)價(jià)器的設(shè)計(jì)
- 出租車(chē)計(jì)價(jià)器課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)--出租車(chē)計(jì)價(jià)器
- eda課程設(shè)計(jì)--出租車(chē)計(jì)價(jià)器
- 出租車(chē)計(jì)價(jià)器課程設(shè)計(jì)論文
- 接口課程設(shè)計(jì)---出租車(chē)計(jì)價(jià)器
評(píng)論
0/150
提交評(píng)論