




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、PAGE PAGE 34管理信息系統(tǒng)課程報告專業(yè)/班級 學 號 姓 名 目錄一、系統(tǒng)概述31.1 選題背景31.2 選題意義31.3 總體目標4二、系統(tǒng)結(jié)構(gòu)與功能分析42.1 系統(tǒng)的構(gòu)成4三、系統(tǒng)運行分析93.1功能設計93.2系統(tǒng)功能描述:103.3系統(tǒng)運行詳細說明13四、課程設計心得18一、系統(tǒng)概述隨著社會經(jīng)濟的發(fā)展,人們對生活質(zhì)量的要求越來越高,作為服務之一的賓館業(yè)也在不斷的完善服務體制。它是集餐飲、住宿、娛樂于一體的立體化服務體系,其中顧客可以隨意消費并統(tǒng)一結(jié)賬;賓館管理者可及時了解賓館的全部運營情況及經(jīng)營走勢,找出運轉(zhuǎn)成本,作為經(jīng)營決策的依據(jù)。只有運用先進的科學管理手段,利用計算機管
2、理系統(tǒng)才能更好實現(xiàn)這一管理模式。1.1 選題背景近年來,賓館業(yè)迅猛發(fā)展,市場的競爭日趨激烈,全面提高賓館的軟件管理水準,已成為賓館業(yè)發(fā)展的當務之急。尤其是對于星級賓館,既需要完成前臺的一些服務工作,還需要完成后臺的管理工作。然而,傳統(tǒng)的人工管理模式已經(jīng)遠遠不能滿足有效、快捷地處理經(jīng)營中產(chǎn)生的大量信息數(shù)據(jù)的需要,從而使得企業(yè)決策層無法及時、準確地掌握一線資料,繼而影響對市場進行正確地分析和預測。像沿海城市三星級以上賓館引進外方管理,使小部分賓館管理水準幾乎接近或達到國際水平。但對占80%以上的廣大中小型賓館來說,是難以做到的。因此,欲在競爭中甩開對手,取得優(yōu)勢,必須在經(jīng)營、管理、產(chǎn)品、服務等方面
3、具備獨到之處。而對賓館的經(jīng)營狀況起決定作用的是客房的管理。簡單的服務標準已不是制勝的錦囊,只有管理做到最細微之處,才能讓顧客體會到賓館服務的高標準、高質(zhì)量,而準確、快速、周全往往就是最基本的成功要素。傳統(tǒng)的管理方法已經(jīng)不能適應現(xiàn)代社會的需要,因此采用電腦管理業(yè)務、財務等諸多環(huán)節(jié)已成為推動賓館業(yè)迅速發(fā)展的先決條件,賓館客房管理信息系統(tǒng)是各大中小型賓館所需要使用的一個管理系統(tǒng)。1.2 選題意義在飛速發(fā)展的信息時代,信息已經(jīng)成為所有企業(yè)的關(guān)鍵資源。賓館客房管理信息系統(tǒng)是用來收集、處理、存貯和傳播客房、顧客、結(jié)算信息,以信息管理為核心的計算機應用系統(tǒng)。利用賓館客房管理信息系統(tǒng)中合理的數(shù)據(jù)庫結(jié)構(gòu)來保存數(shù)
4、據(jù)信息,及時了解各個環(huán)節(jié)中信息的變更,通過有效的程序結(jié)構(gòu)來支持各種數(shù)據(jù)操作的執(zhí)行,以提高管理效率,實現(xiàn)賓館服務的系統(tǒng)化、規(guī)范化、自動化。通過該項目的開發(fā)與使用,賓館可以改善賓館酒店的管理與運行效率,提高服務質(zhì)量,節(jié)約開支,提高勞動生產(chǎn)率。從而贏得高信譽、強實力、好效益!1.3 總體目標建立一套功能完善的管理信息系統(tǒng),既能滿足業(yè)務人員日常處理的需要,增強企業(yè)經(jīng)營全過程的數(shù)字化管理水平;又能滿足管理人員決策分析的需要,提高公司管理層對公司經(jīng)營反饋信息的響應速度。從而大幅度提高工作效率,提高實施管理的準確性、科學性,使擔負管理的工作人員從繁雜的手工勞作中解脫出來??焖賹崿F(xiàn)客人入住登記和賬務處理,減少
5、客人住店及離店時的等待時間準確實現(xiàn)客人預訂入住的要求,實現(xiàn)有效及有保障的前臺系統(tǒng)作業(yè)快速響應住宿客人的有關(guān)項目查詢要求實現(xiàn)入住、消費、結(jié)賬一條龍服務,方便客人在店內(nèi)的各類消費要求二、系統(tǒng)結(jié)構(gòu)分析系統(tǒng)結(jié)構(gòu)分析是采用系統(tǒng)的思想和方法,把復雜的對象分解成簡單的組成部分,找出這些部分的基本屬性和彼此之間的聯(lián)系。針對現(xiàn)行賓館客房計算機管理系統(tǒng)中存在的問題,為了提高信息采集的迅速性和準確性,利用計算機所具有的特殊功能處理賓館客房管理系統(tǒng)中大量復雜的數(shù)據(jù),及時輸出各種管理信息和業(yè)務信息,為各級人員有效的管理和決策提供有力的依據(jù),提高工作效率和經(jīng)濟效益,在全面調(diào)查的基礎上提出了系統(tǒng)的總體邏輯描述。2.1 系統(tǒng)
6、的構(gòu)成芙蓉酒店管理系統(tǒng)由計算機硬件、系統(tǒng)軟件及應用軟件組成。(1)硬件指電腦設備,系統(tǒng)軟件指系統(tǒng)的運行平臺,它們一起構(gòu)成賓館電腦系統(tǒng)的體系結(jié)構(gòu)。芙蓉酒店管理系統(tǒng)使用的體系結(jié)構(gòu)一般有三種類型:單機系統(tǒng)、集中式和分布式。這三種結(jié)構(gòu)隨計算機技術(shù)的發(fā)展而產(chǎn)生,至今還在不斷地發(fā)展變化著。(2)芙蓉酒店管理信息系統(tǒng)從使用者的角度看,軟件結(jié)構(gòu)就是酒店管理系統(tǒng)的功能結(jié)構(gòu)。各種功能之間又有各種信息聯(lián)系,這樣就構(gòu)成了一個有機結(jié)合的整體,形成一個完整的軟件功能結(jié)構(gòu)。因此,系統(tǒng)一般可分為前臺(對客服務)和后臺(內(nèi)部管理)兩大部分,另外還可包括對前后臺系統(tǒng)的功能補充的擴充系統(tǒng)(有的系統(tǒng)把擴充系統(tǒng)直接包含在前后臺系統(tǒng)中)
7、,以及各種各樣的系統(tǒng)接口。如下圖所示:芙蓉酒店管理信息系統(tǒng)芙蓉酒店管理信息系統(tǒng)擴充系統(tǒng)財務分析商務管理宴會銷售餐飲成本桑拿管理采供系統(tǒng)考勤系統(tǒng)安全管理接口系統(tǒng)程控交換機門鎖接口IC卡/磁卡消費遠程查詢系統(tǒng)遠程預訂系統(tǒng)戶籍管理Internet接口語音信箱接口VOD接口后臺系統(tǒng)帳務處理工資系統(tǒng)人事系統(tǒng)庫存管理固定資產(chǎn)工程設備前臺系統(tǒng)預訂接待財務審核電話計費公關(guān)銷售客房中心系統(tǒng)維護商務中心餐飲管理娛樂收銀經(jīng)理查詢圖2-1芙蓉酒店管理系統(tǒng)結(jié)構(gòu)圖(一)系統(tǒng)的初步調(diào)查在信息高度發(fā)達的今天,酒店服務業(yè)涉及的各個工作環(huán)節(jié)已經(jīng)不再僅僅是傳統(tǒng)的住宿、結(jié)算,而是更廣、更全面的服務性行業(yè)代表。酒店作為一個服務性行業(yè),
8、從客房的營銷即客人的預訂開始,到入住登記直至最后退房結(jié)賬,整個過程應該能夠體現(xiàn)以賓客為中心,提供快捷、方便的服務,給賓客一種顧客至上的享受,提高酒店的管理水平,簡化各種復雜操作,在最合理最短時間內(nèi)完成酒店業(yè)務規(guī)范操作,這樣才能令顧客舒適難忘,增加顧客回頭率。面對酒店行業(yè)激烈的競爭形勢,各酒店均在努力拓展其服務領域的廣度和深度。在這里,管理信息系統(tǒng)具有廣泛的實際應用性。雖然計算機并不是賓館走向成功的關(guān)鍵因素,但它可以幫助那些真正影響成敗的因素發(fā)揮更大的效用。因此,采用全新的計算機管理系統(tǒng),將成為提高酒店的管理效率,改善服務水準的重要手段之一。據(jù)我國賓館業(yè)的統(tǒng)計分析表明,在現(xiàn)代的酒店服務行業(yè)中,由
9、于客戶流量增長,傳統(tǒng)的管理方法使得辦公人員每天要處理的事務繁多,重復性的工作使其效率較低;各類客戶信息收集不齊全;分類、歸檔不合理,以至于造成查找困難;保存方式不科學,使得資料、文件受損,影響使用效果和時間。針對這種情況,各酒店管理人員已意識到使用計算機管理信息系統(tǒng)的重要性,因此他們迫切需要開發(fā)一個“酒店管理信息系統(tǒng)”來進行管理工作。(二)業(yè)務流程分析 業(yè)務流程分析是對業(yè)務功能分析的進一步細化,業(yè)務流程分析的結(jié)果是給出業(yè)務流程圖。業(yè)務流程圖反映了實際的業(yè)務活動。它不僅是系統(tǒng)分析人員進行更深入系統(tǒng)分析的依據(jù),而且也是系統(tǒng)分析人員,管理人員,業(yè)務操作人員,系統(tǒng)設計人員進行溝通的工具??梢灾苯釉跇I(yè)務
10、流程圖上擬出能夠由計算機實現(xiàn)的部分,明確系統(tǒng)的邊界,使計算機處理與人工業(yè)務處理的接口清晰,分析組織的業(yè)務流程是否合理,刪除重復的,不合理的環(huán)節(jié),明確整個業(yè)務流程,為以后的分析與設計打下良好的基礎。因此,為了能夠反映酒店內(nèi)部各部門之間的聯(lián)系程度,其主要業(yè)務和他們在業(yè)務過程中所承擔的工作。酒店的業(yè)務流程圖如圖2.3.3所示:圖2.3.3 業(yè)務流程圖通過現(xiàn)行業(yè)務流程圖對現(xiàn)行系統(tǒng)進行分析,客人流量多,需要的服務多,致使管理的過程不好控制,效率不高。可以通過計算機來實現(xiàn)前臺操作員的一些業(yè)務,讓電腦來代為運作,可以提高效率,減輕人的工作量。(四) 數(shù)據(jù)流程分析數(shù)據(jù)流程分析是數(shù)據(jù)和數(shù)據(jù)流程分析工作的最后一步
11、,該工作是對系統(tǒng)中的數(shù)據(jù)進行輸入輸出、存儲、傳遞、轉(zhuǎn)換等分析。6數(shù)據(jù)流程分析的結(jié)果是給出數(shù)據(jù)流程圖。數(shù)據(jù)流程圖是描述系統(tǒng)邏輯模型的主要工具,作者采取結(jié)構(gòu)化分析的方法繪制數(shù)據(jù)流程圖。針對現(xiàn)在酒店業(yè)的發(fā)展需求,在業(yè)務流程圖的基礎上,可以得到數(shù)據(jù)流程圖:調(diào)房調(diào)房 房態(tài)查詢Fangtaichaxun 房態(tài)查詢Fangtaichaxun 掛賬續(xù)住追加押金查詢 掛賬續(xù)住追加押金宿費提醒結(jié)賬選房宿費提醒結(jié)賬點單消 費離店手牌入住前臺登記客人 點單消 費離店手牌入住前臺登記客人 確定手牌 退 牌現(xiàn)結(jié) 歷史單據(jù) 建立賬戶現(xiàn)結(jié) 歷史單據(jù)報表預訂客房 當前客戶賬單 預訂房費單報表預訂客房 當前客戶賬單 預訂房費單報
12、表報表圖 2.1.4. 數(shù)據(jù)流程圖三、系統(tǒng)功能分析3.1功能設計芙蓉酒店管理系統(tǒng)適用于各類中小型酒店的客房資源和客戶信息的管理,實現(xiàn)了酒店的信息化管理,該系統(tǒng)主要包括基礎信息設置、客房前臺管理、查詢統(tǒng)計管理、掛賬管理、系統(tǒng)初始設計、系統(tǒng)維護等功能。圖3.1功能結(jié)構(gòu)圖3.2系統(tǒng)功能描述:(一)基礎信息設置 1、設置客房信息:對客房的基本信息進行增加、修改、刪除。 2、設置員工信息:對員工的基本信息進行增加、修改、刪除。3、設置掛賬單位:對掛賬單位的基本信息進行增加、修改、刪除。圖 3.1.2 系統(tǒng)登錄程序流程圖(二)客房前臺管理 1、客房預訂:可以通過此窗口實現(xiàn)客房預訂。 2、住宿登記:客人入住
13、賓館登記信息,退宿一天前進行提醒。3、宿費提醒:查詢某日期的提醒信息或全部提醒信息。圖 3.1.3 住宿登記、修改、查詢程序流程圖4、退宿結(jié)帳:可以選擇掛賬、打折等多種方式,并可以在此增加其他消費項目的費用。自動提取系統(tǒng)時間以及當前操作員,實現(xiàn)功能為客人的退房結(jié)賬。在下拉菜單中選擇憑證號碼,其他信息自動從數(shù)據(jù)庫中提取,退宿編號為自動分配。在附加費處選擇附加費項目,然后在后面的單行編輯框中輸入數(shù)目,提中顯示對應的消費,并自動計算到應收金額及退還金額中。下圖(圖 3.1.4)為退宿結(jié)帳、查詢程序流程圖。操作員登錄退宿結(jié)賬開始操作員登錄退宿結(jié)賬開始登錄判斷 NO登錄判斷 YES退宿查詢 NO退宿查詢
14、結(jié)賬判斷結(jié)賬判斷退出系統(tǒng) YES退出系統(tǒng)結(jié)束結(jié)束圖 3.1.4 退宿結(jié)帳、查詢程序流程圖(三)查詢統(tǒng)計管理 1、客房查詢:通過房間號查詢客房基本信息。 2、房態(tài)查詢:(未實現(xiàn)) 3、預訂房查詢:通過客戶姓名查詢預訂信息。 4、住宿查詢:通過客戶姓名查詢住宿信息。 5、退宿查詢:通過客戶姓名查詢退宿信息。(四)掛賬管理 1、掛賬查詢:通過掛賬單位或地址以及時間段查詢掛賬信息。 2、掛賬結(jié)款:登記掛賬單位對掛賬的還款。(五)系統(tǒng)初始設計 1、本單位定義:設置本單位的基本信息。 2、業(yè)務部門定義:設置各業(yè)務部門的相關(guān)信息。(六)系統(tǒng)維護 1、系統(tǒng)初始化:清空目前的系統(tǒng)數(shù)據(jù),將系統(tǒng)恢復為初始狀態(tài)。 2
15、、操作員管理:高級管理員登錄后可進行操作員的添加、刪除以及信息更改。3、權(quán)限設置:可以設定操作員的管理權(quán)限以及具體的可操作功能。3.3 系統(tǒng)運行詳細說明(1)系統(tǒng)登錄(2)向?qū)В?)房態(tài)圖客戶系統(tǒng)(4)新客戶入住登記(5)預訂管理(6)客務中心(7)離店結(jié)賬四、課程設計心得總結(jié)在做這次的課程設計以前,我對管理信息系統(tǒng)開發(fā)的理解只是停留在理論知識的水平上,是紙上談兵,缺乏實際的經(jīng)驗。在整個開發(fā)過程中遇到了很多的問題,但最終都一一解決,對其中比較深刻的幾點體會總結(jié)如下:第一,從教條主義到理論聯(lián)系實際的轉(zhuǎn)變。因為沒有做課程設計的經(jīng)驗,所以開始總是生搬硬套書本上的理論和概念,結(jié)果做出來的課程設計就非常
16、死板,缺乏新意,不能真正描述出系統(tǒng)的過程當中,犯了教條主義的錯誤。后來經(jīng)過老師以及學長的多次指點,我對課程設計從結(jié)構(gòu)和內(nèi)容上都進行了大幅度的調(diào)整和修改,刪掉了課程設計當中過多的理論和概念,利用理論知識把自己實際的寫作過程,用自己的語言和科學方法準確的表達出來,經(jīng)過多次修改終于完成了管理信息系統(tǒng)課程設計的制作。這使我真正體會到什么叫理論聯(lián)系實際。第二,這次的課程設計對我來說是非常難得的一次鍛煉機會。課程設計使作者對半學期以來所學的專業(yè)課知識有了更為深刻的認識,提高了對管理信息系統(tǒng)開發(fā)理論,方法和步驟的認識,使知識得到了融會貫通,得到了比以往學習任何一門課都大的提高和進步。對于我來講,這不僅僅是一
17、次課程設計,不僅僅學會了一門數(shù)據(jù)庫開發(fā)工具,更重要的是在學習的過程中,遇到了很多的困難,在解決這些困難的過程中提高了我學習的能力、解決問題的能力和實際工作能力,學到了許多書本以外的知識。總之,理論+實踐=知識。在制作課程設計的過程中,以理論為指導,以實踐為主體,將理論與實踐緊密結(jié)合起來,親身體會到只有將理論與實踐有效的結(jié)合起來,才能使理論指導實踐,又反過來豐富理論,二者相得益彰,使學習效率大大提高。成績與教師評語成績教師評語附錄資料:不需要的可以自行刪除C語言中如何獲取時間?精度如何?1 使用time_t time( time_t * timer ) 精確到秒2 使用clock_t clock
18、() 得到的是CPU時間精確到1/CLOCKS_PER_SEC秒3 計算時間差使用double difftime( time_t timer1, time_t timer0 )4 使用DWORD GetTickCount() 精確到毫秒5 如果使用MFC的CTime類,可以用CTime:GetCurrentTime() 精確到秒6 要獲取高精度時間,可以使用BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)獲取系統(tǒng)的計數(shù)器的頻率BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerfo
19、rmanceCount)獲取計數(shù)器的值然后用兩次計數(shù)器的差除以Frequency就得到時間。7 Multimedia Timer FunctionsThe following functions are used with multimedia timers.timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime/*/用標準C實現(xiàn)獲取當前系統(tǒng)時間的函數(shù)一.time()函數(shù)time(&rawtime)函數(shù)獲取當前時間距1970年1月1日的秒數(shù),以秒計數(shù)單位,存于rawtime 中。#include time.hvoid mai
20、n ()time_t rawtime;struct tm * timeinfo;time ( &rawtime );timeinfo = localtime ( &rawtime );printf ( 007The current date/time is: %s, asctime (timeinfo) );exit(0);=#include - 必須的時間函數(shù)頭文件time_t - 時間類型(time.h 定義是typedef long time_t; 追根溯源,time_t是long)struct tm - 時間結(jié)構(gòu),time.h 定義如下:int tm_sec;int tm_min;in
21、t tm_hour;int tm_mday;int tm_mon;int tm_year;int tm_wday;int tm_yday;int tm_isdst;time ( &rawtime ); - 獲取時間,以秒計,從1970年1月一日起算,存于rawtimelocaltime ( &rawtime ); - 轉(zhuǎn)為當?shù)貢r間,tm 時間結(jié)構(gòu)asctime ()- 轉(zhuǎn)為標準ASCII時間格式:星期 月 日 時:分:秒 年二.clock()函數(shù),用clock()函數(shù),得到系統(tǒng)啟動以后的毫秒級時間,然后除以CLOCKS_PER_SEC,就可以換成“秒”,標準c函數(shù)。clock_t clock
22、( void );#includeclock_t t = clock();long sec = t / CLOCKS_PER_SEC;他是記錄時鐘周期的,實現(xiàn)看來不會很精確,需要試驗驗證;三.gettime(&t); 據(jù)說tc2.0的time結(jié)構(gòu)含有毫秒信息#include#includeint main(void)struct time t;gettime(&t);printf(The current time is: -:d:d.dn,t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund);return 0;time 是一個結(jié)構(gòu)體, 其中成員函數(shù) ti_hund
23、 是毫秒。四.GetTickCount(),這個是windows里面常用來計算程序運行時間的函數(shù);DWORD dwStart = GetTickCount();/這里運行你的程序代碼DWORD dwEnd = GetTickCount();則(dwEnd-dwStart)就是你的程序運行時間, 以毫秒為單位這個函數(shù)只精確到55ms,1個tick就是55ms。五.timeGetTime()t,imeGetTime()基本等于GetTickCount(),但是精度更高DWORD dwStart = timeGetTime();/這里運行你的程序代碼DWORD dwEnd = timeGetTime
24、();則(dwEnd-dwStart)就是你的程序運行時間, 以毫秒為單位雖然返回的值單位應該是ms,但傳說精度只有10ms。=/*Unix#unix時間相關(guān),也是標準庫的/*1.timegm函數(shù)只是將struct tm結(jié)構(gòu)轉(zhuǎn)成time_t結(jié)構(gòu),不使用時區(qū)信息;time_t timegm(struct tm *tm);2.mktime使用時區(qū)信息time_t mktime(struct tm *tm);timelocal 函數(shù)是GNU擴展的與posix函數(shù)mktime相當time_t timelocal (struct tm *tm);3.gmtime函數(shù)只是將time_t結(jié)構(gòu)轉(zhuǎn)成struct
25、 tm結(jié)構(gòu),不使用時區(qū)信息;struct tm * gmtime(const time_t *clock);4.localtime使用時區(qū)信息struct tm * localtime(const time_t *clock);1.time獲取時間,stime設置時間time_t t;t = time(&t);2.stime其參數(shù)應該是GMT時間,根據(jù)本地時區(qū)設置為本地時間;int stime(time_t *tp)3.UTC=true 表示采用夏時制;4.文件的修改時間等信息全部采用GMT時間存放,不同的系統(tǒng)在得到修改時間后通過localtime轉(zhuǎn)換成本地時間;5.設置時區(qū)推薦使用setup
26、來設置;6.設置時區(qū)也可以先更變/etc/sysconfig/clock中的設置再將ln -fs /usr/share/zoneinfo/xxxx/xxx /etc/localtime 才能重效time_t只能表示68年的范圍,即mktime只能返回1970-2038這一段范圍的time_t看看你的系統(tǒng)是否有time_t64,它能表示更大的時間范圍/*windows#Window里面的一些不一樣的/*一.CTime () 類VC編程一般使用CTime類 獲得當前日期和時間CTime t = GetCurrentTime();SYSTEMTIME 結(jié)構(gòu)包含毫秒信息typedef struct _
27、SYSTEMTIME WORD wYear;WORD wMonth;WORD wDayOfWeek;WORD wDay;WORD wHour;WORD wMinute;WORD wSecond;WORD wMilliseconds; SYSTEMTIME, *PSYSTEMTIME;SYSTEMTIME t1;GetSystemTime(&t1)CTime curTime(t1);WORD ms = t1.wMilliseconds;SYSTEMTIME sysTm;:GetLocalTime(&sysTm);在time.h中的_strtime() /只能在windows中用char t11;
28、_strtime(t);puts(t);/*獲得當前日期和時間CTime tm=CTime:GetCurrentTime();CString str=tm.Format(%Y-%m-%d);在VC中,我們可以借助CTime時間類,獲取系統(tǒng)當前日期,具體使用方法如下:CTime t = CTime:GetCurrentTime(); /獲取系統(tǒng)日期,存儲在t里面int d=t.GetDay(); /獲得當前日期int y=t.GetYear(); /獲取當前年份int m=t.GetMonth(); /獲取當前月份int h=t.GetHour(); /獲取當前為幾時int mm=t.GetMi
29、nute(); /獲取當前分鐘int s=t.GetSecond(); /獲取當前秒int w=t.GetDayOfWeek(); /獲取星期幾,注意1為星期天,7為星期六二.CTimeSpan類如果想計算兩段時間的差值,可以使用CTimeSpan類,具體使用方法如下:CTime t1( 1999, 3, 19, 22, 15, 0 );CTime t = CTime:GetCurrentTime();CTimeSpan span=t-t1; /計算當前系統(tǒng)時間與時間t1的間隔int iDay=span.GetDays(); /獲取這段時間間隔共有多少天int iHour=span.GetTo
30、talHours(); /獲取總共有多少小時int iMin=span.GetTotalMinutes();/獲取總共有多少分鐘int iSec=span.GetTotalSeconds();/獲取總共有多少秒三._timeb()函數(shù)_timeb定義在SYSTIMEB.H,有四個fieldsdstflagmillitmtimetimezonevoid _ftime( struct _timeb *timeptr );struct _timeb timebuffer;_ftime( &timebuffer );取當前時間:文檔講可以到ms,有人測試,好象只能到16ms!四.設置計時器定義TIME
31、R ID#define TIMERID_JISUANFANGSHI 2在適當?shù)牡胤皆O置時鐘,需要開始其作用的地方;SetTimer(TIMERID_JISUANFANGSHI,200,NULL);在不需要定時器的時候的時候銷毀掉時鐘KillTimer(TIMERID_JISUANFANGSHI);對應VC程序的消息映射void CJisuan:OnTimer(UINT nIDEvent)switch(nIDEvent)#如何設定當前系統(tǒng)時間windowsSYSTEMTIME m_myLocalTime,*lpSystemTime;m_myLocalTime.wYear=2003;m_myLoc
32、alTime.wM;m_myLocalTime.wDay=1;m_myLocalTime.wHour=0;m_myLocalTime.wMinute=0;m_myLocalTime.wSec;m_myLocalTime.wMillisec;lpSystemTime=&m_myLocalTime;if( SetLocalTime(lpSystemTime) ) /此處換成 SetSystemTime( )也不行MessageBox(OK !);elseMessageBox(Error !);SYSTEMTIME m_myLocalTime,*lpSystemTime;m_myLocalTime.
33、wYear=2003;m_myLocalTime.wM;m_myLocalTime.wDay=1;lpSystemTime=&m_myLocalTime;if( SetDate(lpSystemTime) ) /此處換成 SetSystemTime( )也不行MessageBox(OK !);elseMessageBox(Error !);本文來自CSDN博客,轉(zhuǎn)載請標明出處:HYPERLINK /khuang2008/archive/2008/12/09/3483274.aspx/khuang2008/archive/2008/12/09/3483274.aspx一種制作微秒級精度定時器的方
34、法當使用定時器時,在很多情況下只用到毫秒級的時間間隔,所以只需用到下面的兩種常用方式就滿足要求了。一是用SetTimer函數(shù)建立一個定時器后,在程序中通過處理由定時器發(fā)送到線程消息隊列中的WM_TIMER消息,而得到定時的效果(退出程序時別忘了調(diào)用和SetTimer配對使用的KillTimer函數(shù))。二是利用GetTickCount函數(shù)可以返回自計算機啟動后的時間,通過兩次調(diào)用GetTickCount函數(shù),然后控制它們的差值來取得定時效果,此方式跟第一種方式一樣,精度也是毫秒級的。用這兩種方式取得的定時效果雖然在許多場合已經(jīng)滿足實際的要求,但由于它們的精度只有毫秒級的,而且在要求定時時間間隔小
35、時,實際定時誤差大。下面介紹一種能取得高精度定時的方法。在一些計算機硬件系統(tǒng)中,包含有高精度運行計數(shù)器(high-resolution performance counter),利用它可以獲得高精度定時間隔,其精度與CPU的時鐘頻率有關(guān)。采用這種方法的步驟如下:1、首先調(diào)用QueryPerformanceFrequency函數(shù)取得高精度運行計數(shù)器的頻率f。單位是每秒多少次(n/s),此數(shù)一般很大。2、在需要定時的代碼的兩端分別調(diào)用QueryPerformanceCounter以取得高精度運行計數(shù)器的數(shù)值n1,n2。兩次數(shù)值的差值通過f換算成時間間隔,t=(n2-n1)/f。下面舉一個例子來演示
36、這種方法的使用及它的精確度。在VC 6.0 下用MFC建立一個對話框工程,取名為HightTimer.在對話框面板中控件的布局如下圖:其中包含兩個靜態(tài)文本框,兩個編輯框和兩個按紐。上面和下面位置的編輯框的ID分別為IDC_E_TEST和IDC_E_ACTUAL,通過MFC ClassWizard添加的成員變量也分別對應為DWORD m_dwTest和DWORD m_dwAct. “退出”按紐的ID為IDOK,“開始測試”按紐ID為IDC_B_TEST,用MFC ClassWizard添加此按紐的單擊消息處理函數(shù)如下:void CHightTimerDlg:OnBTest()/ TODO: Ad
37、d your control notification handler code hereUpdateData(TRUE); /取輸入的測試時間值到與編輯框相關(guān)聯(lián)的成員變量m_dwTest中LARGE_INTEGER frequence;if(!QueryPerformanceFrequency( &frequence) /取高精度運行計數(shù)器的頻率,若硬件不支持則返回FALSEMessageBox(Your computer hardware doesnt support the high-resolution performance counter,Not Support, MB_ICONE
38、XCLAMATION | MB_OK);LARGE_INTEGER test, ret;test.QuadPart = frequence.QuadPart * m_dwTest / 1000000; /通過頻率換算微秒數(shù)到對應的數(shù)量(與CPU時鐘有關(guān)),1秒=1000000微秒ret = MySleep( test ); /調(diào)用此函數(shù)開始延時,返回實際花銷的數(shù)量m_dwAct = (DWORD)(1000000 * ret.QuadPart / frequence.QuadPart ); /換算到微秒數(shù)UpdateData(FALSE); /顯示到對話框面板其中上面調(diào)用的MySleep函數(shù)如
39、下:LARGE_INTEGER CHightTimerDlg:MySleep(LARGE_INTEGER Interval)/ 功能:執(zhí)行實際的延時功能 / 參數(shù):Interval 參數(shù)為需要執(zhí)行的延時與時間有關(guān)的數(shù)量 / 返回值:返回此函數(shù)執(zhí)行后實際所用的時間有關(guān)的數(shù)量 / LARGE_INTEGER privious, current, Elapse;QueryPerformanceCounter( &privious );current = privious;while( current.QuadPart - privious.QuadPart Interval.QuadPart )Qu
40、eryPerformanceCounter( t );Elapse.QuadPart = current.QuadPart - privious.QuadPart;return Elapse;注:別忘了在頭文件中為此函數(shù)添加函數(shù)聲明。至此,可以編譯和執(zhí)行此工程了,結(jié)果如上圖所示。在本人所用的機上(奔騰366, 64M內(nèi)存)測試,當測試時間超過3微秒時,準確度已經(jīng)非常高了,此時機器執(zhí)行本身延時函數(shù)代碼的時間對需要延時的時間影響很小了。上面的函數(shù)由于演示測試的需要,沒有在函數(shù)級封裝,下面給出的函數(shù)基本上可以以全局函數(shù)的形式照搬到別的程序中。BOOL MySleep(DWORD dwInterval
41、)/ 功能:執(zhí)行微秒級的延時功能 / 參數(shù):Interval 參數(shù)為需要的延時數(shù)(單位:微秒) / 返回值:若計算機硬件不支持此功能,返回FALSE,若函數(shù)執(zhí)行成功,返回TRUE / BOOL bNormal = TRUE;LARGE_INTEGER frequence, privious, current, interval;if(!QueryPerformanceFrequency( &frequence):MessageBox(NULL, Your computer hardware doesnt support the high-resolution performance count
42、er,Not Support, MB_ICONEXCLAMATION | MB_OK); /或其它的提示信息return FALSE;interval.QuadPart = frequence.QuadPart * dwInterval / 1000000;bNormal = bNormal & QueryPerformanceCounter( &privious );current = privious;while( current.QuadPart - privious.QuadPart interval.QuadPart )bNormal = bNormal & QueryPerform
43、anceCounter( t );return bNormal;需要指出的是,由于在此函數(shù)中的代碼很多,機器在執(zhí)行這些代碼所花費的時間也很長,所以在需要幾個微秒的延時時,會影響精度。實際上,讀者在熟悉這種方法后,只要使用QueryPerformanceFrequency和QueryPerformanceCounter這兩個函數(shù)就能按實際需要寫出自己的延時代碼了。使用CPU時間戳進行高精度計時對關(guān)注性能的程序開發(fā)人員而言,一個好的計時部件既是益友,也是良師。計時器既可以作為程序組件幫助程序員精確的控制程序進程,又是一件有力的調(diào)試武器,在有經(jīng)驗的程序員手里可以盡快的確定程序的性能瓶頸,或者對不同的
44、算法作出有說服力的性能比較。在Windows平臺下,常用的計時器有兩種,一種是timeGetTime多媒體計時器,它可以提供毫秒級的計時。但這個精度對很多應用場合而言還是太粗糙了。另一種是QueryPerformanceCount計數(shù)器,隨系統(tǒng)的不同可以提供微秒級的計數(shù)。對于實時圖形處理、多媒體數(shù)據(jù)流處理、或者實時系統(tǒng)構(gòu)造的程序員,善用QueryPerformanceCount/QueryPerformanceFrequency是一項基本功。本文要介紹的,是另一種直接利用Pentium CPU內(nèi)部時間戳進行計時的高精度計時手段。以下討論主要得益于Windows圖形編程一書,第15頁17頁,有興
45、趣的讀者可以直接參考該書。關(guān)于RDTSC指令的詳細討論,可以參考Intel產(chǎn)品手冊。本文僅僅作拋磚之用。在Intel Pentium以上級別的CPU中,有一個稱為“時間戳(Time Stamp)”的部件,它以64位無符號整型數(shù)的格式,記錄了自CPU上電以來所經(jīng)過的時鐘周期數(shù)。由于目前的CPU主頻都非常高,因此這個部件可以達到納秒級的計時精度。這個精確性是上述兩種方法所無法比擬的。在Pentium以上的CPU中,提供了一條機器指令RDTSC(Read Time Stamp Counter)來讀取這個時間戳的數(shù)字,并將其保存在EDX:EAX寄存器對中。由于EDX:EAX寄存器對恰好是Win32平臺
46、下C+語言保存函數(shù)返回值的寄存器,所以我們可以把這條指令看成是一個普通的函數(shù)調(diào)用。像這樣:inline unsigned _int64 GetCycleCount() _asm RDTSC 但是不行,因為RDTSC不被C+的內(nèi)嵌匯編器直接支持,所以我們要用_emit偽指令直接嵌入該指令的機器碼形式0X0F、0X31,如下:inline unsigned _int64 GetCycleCount() _asm _emit 0 x0F _asm _emit 0 x31 以后在需要計數(shù)器的場合,可以像使用普通的Win32 API一樣,調(diào)用兩次GetCycleCount函數(shù),比較兩個返回值的差,像這樣
47、: unsigned long t; t = (unsigned long)GetCycleCount(); /Do Something time-intensive . t -= (unsigned long)GetCycleCount(); Windows圖形編程第15頁編寫了一個類,把這個計數(shù)器封裝起來。有興趣的讀者可以去參考那個類的代碼。作者為了更精確的定時,做了一點小小的改進,把執(zhí)行RDTSC指令的時間,通過連續(xù)兩次調(diào)用GetCycleCount函數(shù)計算出來并保存了起來,以后每次計時結(jié)束后,都從實際得到的計數(shù)中減掉這一小段時間,以得到更準確的計時數(shù)字。但我個人覺得這一點點改進意義不大
48、。在我的機器上實測,這條指令大概花掉了幾十到100多個周期,在Celeron 800MHz的機器上,這不過是十分之一微秒的時間。對大多數(shù)應用來說,這點時間完全可以忽略不計;而對那些確實要精確到納秒數(shù)量級的應用來說,這個補償也過于粗糙了。 這個方法的優(yōu)點是: 1.高精度。可以直接達到納秒級的計時精度(在1GHz的CPU上每個時鐘周期就是一納秒),這是其他計時方法所難以企及的。 2.成本低。timeGetTime 函數(shù)需要鏈接多媒體庫winmm.lib,QueryPerformance* 函數(shù)根據(jù)MSDN的說明,需要硬件的支持(雖然我還沒有見過不支持的機器)和KERNEL庫的支持,所以二者都只能在
49、Windows平臺下使用(關(guān)于DOS平臺下的高精度計時問題,可以參考圖形程序開發(fā)人員指南,里面有關(guān)于控制定時器8253的詳細說明)。但RDTSC指令是一條CPU指令,凡是i386平臺下Pentium以上的機器均支持,甚至沒有平臺的限制(我相信i386版本UNIX和Linux下這個方法同樣適用,但沒有條件試驗),而且函數(shù)調(diào)用的開銷是最小的。 3.具有和CPU主頻直接對應的速率關(guān)系。一個計數(shù)相當于1/(CPU主頻Hz數(shù))秒,這樣只要知道了CPU的主頻,可以直接計算出時間。這和QueryPerformanceCount不同,后者需要通過QueryPerformanceFrequency獲取當前計數(shù)器每秒的計數(shù)次數(shù)才能換算成時間。 這個方法的缺點是: 1.現(xiàn)有的C/C+編譯器多數(shù)不直接支持使用RDTSC指令,需要用直接嵌入機器碼的方式編程,比較麻煩。 2.數(shù)據(jù)抖動比較厲害。其實對任何計量手段而言,精度和穩(wěn)定
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)用病床租賃協(xié)議書
- 廠房裝修處理協(xié)議書
- 商業(yè)托管轉(zhuǎn)讓協(xié)議書
- 2025年財務管理考試的前沿試題及答案分析
- 2025年工程行業(yè)規(guī)范試題及答案
- 廠房合租解除協(xié)議書
- 勞務包車租車協(xié)議書
- 加油應急保障協(xié)議書
- 勞動糾紛諒解協(xié)議書
- 合伙律師退伙協(xié)議書
- 安徽省1號卷A10聯(lián)盟2025屆高三5月最后一卷化學試題及答案
- 2022《農(nóng)產(chǎn)品質(zhì)量安全法》全文解讀與學習
- 2025屆河北省邢臺市清河中學高三下學期5月模擬物理試卷(原卷版+解析版)
- 【部編版】六年級語文下冊《語文園地五》精美課件
- 登革熱防控知識培訓
- 糖尿病患者血脂管理中國專家共識(2024版)解讀
- 藥物制劑輔助材料試題及答案
- 婚前心理知識講座課件
- 蛋雞育雛前后管理制度
- 安全文明及綠色施工方案
- 特檢院面試試題及答案
評論
0/150
提交評論