計算機硬件技術(shù)基礎(chǔ)課程設(shè)計----出租車計價器的設(shè)計_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  計算機硬件技術(shù)基礎(chǔ)課程設(shè)計</p><p>  計程車計價器設(shè)計(用計算機系統(tǒng)的輸入輸出設(shè)備完成)</p><p><b>  二O一O年九月</b></p><p><b>  目 錄</b></p><p>  摘要 ……………………………………………………

2、……………2</p><p>  1.設(shè)計的主要內(nèi)容和方案……………………………………………2</p><p>  2.任務(wù)分工 ……………………………………………………………3</p><p>  3.操作說明 ……………………………………………………………3</p><p>  4.程序流程圖 …………………………………………………

3、………4</p><p>  4.1 主程序流程圖 ……………………………………………4</p><p>  4.2 路程計價與等待時間計價切換流程圖…………………………5</p><p>  4.3 路程計價流程圖 ……………………………………………6</p><p>  4.4 時間計價流程圖 ……………………………

4、………………6</p><p>  4.5 顯示程序流程圖 ……………………………………………6</p><p>  5. 總結(jié)與體會 …………………………………………………………7</p><p>  5.1 呂天志的總結(jié)與體會……………………………………………7</p><p>  5.2 馮尚飛的總結(jié)與體會………………………………

5、……………8</p><p>  5.3 唐杰的總結(jié)與體會 ……………………………………………9</p><p>  5.4 曠駒的總結(jié)與體會 ……………………………………………10</p><p>  6.參考文獻 ……………………………………………………………10</p><p>  7.程序清單 …………………………………………………

6、…………11</p><p>  出租車計價器的設(shè)計(用計算機系統(tǒng)的輸入輸出設(shè)備完成)</p><p>  摘 要:出租車計價器是乘客與司機雙方的交易準(zhǔn)則,它是出租車行業(yè)發(fā)展的重要標(biāo)志,是出租車中最重要的工具。它關(guān)系著交易雙方的利益。具有良好性能的計價器無論是對廣大出租車司機朋友還是乘客來說都是很必要的。因此,汽車計價器的研究也是十分有一個應(yīng)用價值的。學(xué)習(xí)了計算機硬件技術(shù)基礎(chǔ),我們對微機

7、原理有了初步了解,也能編程實現(xiàn)一些基本功能。我們根據(jù)計價器的設(shè)計要求,用計算機輸入輸出設(shè)備完成了出租車計價器的軟件設(shè)計。</p><p>  1 設(shè)計的主要內(nèi)容和方案</p><p>  分析任務(wù)要求,確定系統(tǒng)整體設(shè)計思路系統(tǒng)的設(shè)計方案</p><p>  1分析任務(wù)要求,確定系統(tǒng)整體設(shè)計思路</p><p>  方案一:用匯編語言實現(xiàn)<

8、;/p><p>  軟件設(shè)計分為五個模塊:主程序模塊、路程計價模塊、停車等待計價模塊、油耗計算及報警模塊、顯示模塊。</p><p>  在主程序中,通過設(shè)置相應(yīng)的中斷向量,調(diào)用相應(yīng)的中斷服務(wù)程序,完成相應(yīng)的計價,調(diào)用相關(guān)顯示程序,完成計價器的最終顯示。路程計價模塊中,首先根據(jù)行車速度和行車時間計算出行車路程,其中,行車時間可以由計算機內(nèi)部的8254定時器通道0完成,然后根據(jù)路程和預(yù)先輸入的起

9、步價和每公里單價計算出價格。在計價過程中,若遇到停車,但沒有停止計價,則轉(zhuǎn)入停車等待計價模塊。在停車等待計價模塊中,根據(jù)等待時間及預(yù)設(shè)單價,其中等待時間由8254定時器實現(xiàn),再計算出等待價格。在這個過程中,若車輛開始行駛則轉(zhuǎn)入路程計價模塊。在油耗模塊中,根據(jù)行車路程和每公里油耗,計算相應(yīng)的剩余油量,當(dāng)油量一旦低于警戒值則發(fā)出報警信號,油量為0時強制停車。</p><p>  方案二:用C語言實現(xiàn)</p>

10、;<p>  主要分為三個子程序模塊:初始化主程序、主體運行子程序、示子程序。</p><p>  初始化包括各個變量的初始化定義、函數(shù)定義、從鍵盤接收字符,輸出提示字符提示從鍵盤輸入數(shù)據(jù)。主體部分包括路程計價模塊、停車等待計價模塊、油耗計算及報警模塊。路程計價模塊中,首先根據(jù)行車速度和行車時間計算出行車路程,其中,行車時間可以由計算機系統(tǒng)時間得到,然后根據(jù)路程和預(yù)先輸入的起步價和每公里單價計算出價

11、格。在計價過程中,若遇到停車,但沒有停止計價,則轉(zhuǎn)入停車等待計價模塊。在停車等待計價模塊中,根據(jù)等待時間及預(yù)設(shè)單價,其中等待時間調(diào)用PC機系統(tǒng)時間計時,每隔一分鐘一次單價。在這個過程中,若車輛開始行駛則轉(zhuǎn)入路程計價模塊。在油耗模塊中,根據(jù)行車路程和每公里油耗,計算相應(yīng)的剩余油量,當(dāng)油量一旦低于警戒值則發(fā)出報警信號,油量為0時強制停車。</p><p>  優(yōu)化功能:1顯示路程的單價,符合明碼標(biāo)價的規(guī)定,可以讓消費

12、者消費得更明白。2設(shè)置了輸出背景,并且用不同的顏色顯示,使顯示界面更加友好。3一旦油量為0,從實際出發(fā),則強制停車,并停止計價。</p><p>  根據(jù)小組討論和實踐驗證分析,我們發(fā)現(xiàn)在用匯編語言進行軟件設(shè)計時,組員們普遍遇到了較大困難,對計算機內(nèi)部的中斷機制不清楚,只能運用定時中斷,無法運用軟件中斷,在處理數(shù)據(jù)時也遇到了較大困難。因此,我們在研究了計價器硬件工作原理后,決定用C語言完成系統(tǒng)的軟件設(shè)計。<

13、/p><p><b>  2 任務(wù)分工</b></p><p>  根據(jù)總體設(shè)計方案,確定每位組員的詳細(xì)分工</p><p>  小組討論系統(tǒng)優(yōu)化功能設(shè)計,完成總的軟件設(shè)計,加入相關(guān)的優(yōu)化功能,小組成員共同完成最終程序的調(diào)試運行,并根據(jù)運行結(jié)果作出相應(yīng)的調(diào)整,完成設(shè)計任務(wù)。</p><p><b>  3 操作說明

14、</b></p><p>  在程序開始運行后,系統(tǒng)的初始狀態(tài)是出租車停止,具體操作方式如下:</p><p><b>  按任意鍵啟動系統(tǒng)</b></p><p>  設(shè)置3公里以內(nèi)的白天和晚上的價格</p><p>  設(shè)置3公里以外的白天和晚上的價格</p><p>  設(shè)置出租

15、車時速(0<V<1000)</p><p><b>  設(shè)置起初車內(nèi)油量</b></p><p><b>  設(shè)置每公里耗油量</b></p><p>  按任意鍵啟動速度計價</p><p>  按q等待計時,按s車啟動,按esc車停止計價。</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>  路程計價與等待時間計價切換流程圖</p><p><b>  是</b></p><p>  否 </p><p>  是 否</p><p><b>  路程計價

18、流程圖:</b></p><p><b>  是</b></p><p><b>  否</b></p><p><b>  否</b></p><p><b>  是</b></p><p><b>  時間

19、計價流程圖:</b></p><p><b>  否</b></p><p><b>  顯示程序流程圖:</b></p><p>  否 是</p><p><b>  5 總結(jié)與體會</b></p><p>  學(xué)習(xí)了計算

20、機硬件基礎(chǔ),我們了解了計算機內(nèi)部指令工作原理并學(xué)會了用匯編語言完成簡單的程序設(shè)計,同時也理解了高級語言是如何在計算機內(nèi)部實現(xiàn)的。經(jīng)過了硬件技術(shù)課程設(shè)計我們真正地學(xué)會了如何應(yīng)用應(yīng)用硬件技術(shù)完成簡單地設(shè)計。</p><p>  拿到這個題目,出租車計價器的實現(xiàn),我大體想了一下設(shè)計思路。首先應(yīng)該調(diào)用系統(tǒng)時間判斷是白天還是晚上,進而轉(zhuǎn)向不同的子程序,然后就是計價模塊,分兩部分,一部分是車在行駛時的計價,另一部分時車停止時

21、的計價,最后計算油耗并顯示相應(yīng)的內(nèi)容。于是便分配了每個組員的任務(wù)。我嘗試用匯編語言編寫主程序,用計算機內(nèi)部的8254通道0作為定時器,定時一秒產(chǎn)生一次中斷,在中斷服務(wù)程序完成計價,但怎樣判斷停車并產(chǎn)生中斷一時半伙搞不清楚,另外,數(shù)據(jù)的處理、顯示都有一定難度。鑒于此,我們小組討論決定用C語言完成程序的設(shè)計。用C語言編寫程序不用考慮數(shù)據(jù)處理,顯示也簡單得多,但需要我們查閱相關(guān)資料調(diào)用相關(guān)函數(shù)完成計時、計算、輸出等。在組員們完成子程序的設(shè)計時

22、,我面臨的問題是如何把一塊塊子程序連接起來,實現(xiàn)從輸入到輸出,再到定時計時等一系列工作,開始沒能連續(xù)計算時間,導(dǎo)致了輸出只顯示當(dāng)前值,時間路程都是固定不變的,通過不斷地改正、調(diào)試,終于實現(xiàn)了部分基本功能。關(guān)于報警我們在C語言中嵌套了匯編,但并不成功,后來我們查資料用/a實現(xiàn)了報警功能。再加入行駛過程中改變速度我們也費了一番周折,幾次調(diào)試都不成功,但最終經(jīng)過我們的努力</p><p>  計價器的設(shè)計,題目看似簡單

23、,思路也清楚,但真正在編程時我們遇到了許多困難,因為在具體實施時要考慮很多細(xì)節(jié)的處理問題。通過此次課程設(shè)計,我學(xué)會了如何分析實際問題并編程實現(xiàn),學(xué)會了如何克服各種困難,學(xué)會了如何分工協(xié)作共同完成項目的設(shè)計實施。</p><p>  這次課程設(shè)計我組有4名成員,做的是出租車計價器的設(shè)計(用計算機系統(tǒng)的輸入輸出設(shè)備完成),我的任務(wù)是負(fù)責(zé)按車速計價程序的編寫和部分報告的完成。</p><p> 

24、 本來我們應(yīng)該用匯編去進行編程,但根據(jù)小組討論和實踐驗證分析,我們發(fā)現(xiàn)在用匯編語言進行軟件設(shè)計時,組員們普遍遇到了較大困難,對計算機內(nèi)部的中斷機制不清楚,只能運用定時中斷,無法運用軟件中斷,在處理數(shù)據(jù)時也遇到了較大困難。因此,我們在研究了計價器硬件工作原理后,決定用C語言完成系統(tǒng)的軟件設(shè)計。</p><p>  我負(fù)責(zé)的部分本來比較簡單,但具體操作的時候卻給了我不小的教訓(xùn)。編程的時候,我很快就把程序編好了,但當(dāng)我

25、把程序交給組長運行時他卻說我的程序塊出現(xiàn)了問題,輸入一個很小的時間卻有很高的價格。這下把又趕緊檢查,找了很長時間還是不對,就這樣兩天過去了,最后實在不行我去找認(rèn)識的一個編程比較好的同學(xué),我把大體內(nèi)容給他說了一下,他開始檢查我的程序,終于發(fā)現(xiàn)了錯誤,原來我在算路程的時候沒把時間換成標(biāo)準(zhǔn)單位,忘了除3600。這本是一個很小的問題但讓我感觸很多,其實很多人都很接近成功,而往往都是由于一點點小錯誤而與成功失之交臂,這不得不讓人們感到惋惜,所以我

26、在以后的生活中會嚴(yán)格要求自己無論做什么事都嚴(yán)肅認(rèn)真。另外我的工作還有報告的完成,這一部分比較簡單,我原本把大家的程序和感想總結(jié)在一塊就行了,但我不知怎么地完成以后卻忘記保存了,我趕緊又把大家的資料找回來重新做,幸虧大家的資料還在要不真不知道該怎么辦。</p><p>  就這樣我門的課程設(shè)計完成了,我做的并不像其他同學(xué)的那么難,需要差很多資料,但卻給了我不小的教訓(xùn),就拿忘保存這件事來說吧,如果大家的資料沒備份我們

27、就得再做一遍,那樣既浪費時間又降低了效率,再者現(xiàn)在只是個課程設(shè)計,如果以后工作中把很重要的資料弄丟了,那樣后果會更嚴(yán)重,我真不敢再往下想了......</p><p>  不過這也給我一個提醒,無論干什么事都要有一個良好的習(xí)慣,做什么事不要急于求成要一絲不茍。另外我要考研,我想這會對我的考研有好處的,它會讓我在考研道路上減少曲折,也會讓我在以后的生活中減少波折......</p><p>

28、  計算機硬件技術(shù)基礎(chǔ)課程設(shè)計是本學(xué)期開校第一個任務(wù),分組完成后每個人都承擔(dān)自己分內(nèi)之事,我們組的課程設(shè)計題目為:計程車計價設(shè)計(用計算機系統(tǒng)的輸入輸出設(shè)備完成),這個類似現(xiàn)實的問題確實,有一定的難度,經(jīng)大家一并商量后,組長呂天志分配給每個人任務(wù),其中我承擔(dān)的是:顯示當(dāng)前燃油量,車輛行進過程中反映燃油的消耗,但燃油量低于警戒值時報警,以及畫各軟件模塊的流程圖。</p><p>  剛開始我準(zhǔn)備用匯編語言編寫程序,

29、但經(jīng)過吧一天的實踐后,發(fā)現(xiàn)比較復(fù)雜,后經(jīng)過大家商量決定用C語言編寫,看似短短的一句話,當(dāng)需要設(shè)計成程序后才知道,比較困難。程序語言不同于,一般的語言,太精煉,所以很容易忽略,整個過程中需要反復(fù)的編譯,找錯,其中過程,讓讓人郁悶,多方請教反復(fù)看書查閱資料最后寫出了正確的程序。說起來過程也是有些心酸,最后寫出程序的一剎那,還是很有成就感的!在畫各軟件模塊的程序流程圖中困難很少,整個過程也很簡單,我是在Word上畫的,整個過程比較輕松。<

30、;/p><p>  整個課程設(shè)計中遇到的問題都是在完成程序設(shè)計中的,寫出來的程序雖然不多但是耗費了不少周折,在編寫程序中,有些數(shù)據(jù)課程設(shè)計題目上并未給出,我們商量后決定采用一個合理的數(shù)據(jù),全組統(tǒng)一,如余油量少于2時報警等。完成設(shè)計后我回過頭看看,又加深了對c語言的了解,熟悉了它的應(yīng)用,當(dāng)然過程中也翻閱了很多參考資料,如程序設(shè)計技術(shù)及實驗指導(dǎo)書,計算機硬件技術(shù)基礎(chǔ)及實驗指導(dǎo)書等。</p><p>

31、;  簡單回顧這個過程,時間雖然短暫但是我們也從中學(xué)到了不少東西,凡事多商量,一個人的思維難免有局限性,一種方法走不通,趕快換路,時間很重要,分工合作互相幫助,明確任務(wù)詳細(xì)計劃,并按照計劃確定任務(wù)步驟一步步的攻克難題。我們同樣學(xué)會了一些把文字轉(zhuǎn)換為我們實際設(shè)計時所用語言的能力。再設(shè)計過程中大家齊心協(xié)力,最后將各自的子程序合并在一起,由組長整合后,我們的程序最終正確的運行,這里包含大家的兩周勞動,增強了我們的自信。</p>

32、<p>  這次關(guān)于計程車計價器的設(shè)計任務(wù)相對來說,比較繁瑣,我們一共花費了一周左右的時間,每個人都積極動手和思考,團結(jié)得比較融洽,我們還把這個設(shè)計詳細(xì)地進行了分工。每個人負(fù)責(zé)不同的一小塊。</p><p>  由于計價器可以說是相對來說比較智能的器件,因為它的計價需要按照路程,時間的差異收費不同,一般情況下它有個起步價,一般設(shè)置在3公里范圍內(nèi),然后超過3公里了就按照每公里的單價收費。這種情況比較普遍。

33、但是遇到路上堵車的情況,也就是出租車沒有走,但是同樣要計費,這種計費方式就是按照時間進行計費,也就是說每隔一段時間,計價器計價結(jié)果增加一次單價。出租車的啟動或者靜止應(yīng)該是計價器自己進行分析,有必要設(shè)置一個傳感器。如果沒有設(shè)置傳感器,則需要人為的進行計價調(diào)整,那樣相對來說比較麻煩。然而更過時候,白天的收費標(biāo)準(zhǔn)和晚間的收費標(biāo)準(zhǔn)不同,晚上的收費按照晚上的起步價和晚間美公里單價計算。比如說晚上10點過后到早上7點之間這段時間里面。這種不需要計價

34、器自己感應(yīng),如果把它設(shè)計成計價器自動調(diào)節(jié)收費標(biāo)準(zhǔn),會產(chǎn)生一些沒必要的錯誤,至少在時間上存在差異,比如快幾分鐘或者慢幾分鐘。我覺得人為地調(diào)整收費情況比較好。</p><p>  這次設(shè)計任務(wù)中我主要是負(fù)責(zé)停車停車等待時的計價程序,也就是堵車或者等待乘客的時候所需要的程序,屬于一個子模塊。這個部分相對來說比較簡單,而且內(nèi)容上不是很繁瑣。在設(shè)計該段程序之前我首先列出了程序流程圖。在此用文字作簡單的描述,首先是程序開始(

35、指等待的時候,即開始等待),通過程序計算出時間,根據(jù)時間增加單價,然后考慮等待時間是否結(jié)束了(也就是說預(yù)先設(shè)置的開關(guān)鍵S是否按下),若是,則程序結(jié)束,顯示出來。如果不是,那么需要回到第一步,繼續(xù)這個程序,直到等待時間結(jié)束為止。</p><p>  通過這次課程設(shè)計,我學(xué)到了很多東西,。鍛煉了自己的動手能力,積極查閱資料的動力,以及思考能力。為今后投入工作打下了一個堅實的基礎(chǔ)。同時更重要的是這次設(shè)計室分小組進行的,

36、每個小組幾個成員一起探討,共同努力,提高了團隊的意識。</p><p><b>  6 參考文獻</b></p><p>  [1].熊壯、陳策主編.程序設(shè)計技術(shù).重慶大學(xué)出版社</p><p>  [2].卜艷萍、周偉主編. 匯編語言程序設(shè)計教程. 清華大學(xué)出版社</p><p>  [3]. 徐愛蕓、向華主編. 匯編

37、語言程序設(shè)計教程與實驗. 清華大學(xué)出版社</p><p>  [4].黃勤、高富強主編.計算機硬件技術(shù)基礎(chǔ)實驗教程.重慶大學(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è)置;回車=速度設(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>  // 畫漸變的天空(通過亮度逐漸增加)</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>  // 畫漸變的天空(通過亮度逐漸增加)</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)前時間 ");</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,"起步價格 ");</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,"每公里單價 ");</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,"起步價格 ");</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,"每公里單價 ");</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)前價格 ");</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,"等待時間 ");</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,"油已耗盡 無法繼續(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)前鍵盤狀態(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();//主體運行</p><p>  closegraph(); /

溫馨提示

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

評論

0/150

提交評論