




已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 本文配套程序下載地址 : 無憂無慮畢設網(wǎng) ()-大學生畢業(yè)設計站 ,免費畢業(yè)設計論文 ,無憂無慮畢設網(wǎng) 大學生畢業(yè)設計 ,出售各類畢業(yè)設計源碼 ,論文 ,程序源碼 ,網(wǎng)站源碼 ,免費視頻教程 ,我們將竭誠為您服務! 第一章 緒 論 1 1 前言 隨著高科技的蓬勃發(fā)展,智能化管理已經(jīng)走進了人們的社會生活,一座座智能化大廈拔地而起,適應 信息的時代需要 ,作為跨世紀使用的建筑 ,必須在功能上滿足當前和未來發(fā)展的需求 ,成為文化和經(jīng)濟發(fā)展的基地。 門禁系統(tǒng)開發(fā)作為一項先進的高科技技術防范和管理手段,在一些經(jīng) 濟發(fā)達的國家已經(jīng)廣泛應用于科研、工業(yè)、博物館、酒店、商場、醫(yī)療監(jiān)護、銀行、監(jiān)獄等,特別是由于系統(tǒng)本身具有隱蔽性,及時性等特點,在許多領域的應用越來越廣泛。 門禁系統(tǒng)的技術不斷向前發(fā)展 , 用戶需求也在發(fā)生變化 , 因此門禁系統(tǒng)的設計與實施應考慮到將來可擴展的實際需要 , 亦即 : 可靈活增減或更新各個子系統(tǒng) , 滿足不同時期的需要 , 保持長時間領先地位 , 成為智能建筑的典范。系統(tǒng)設計時 ,對需要實現(xiàn)的功能進行了合理配置 ,并且這種配置是可以改變的 ,設置甚至在工程完成后 ,這種配置的改變也是可能的和方便的 .系統(tǒng)軟件根據(jù)開發(fā)商 符合不同歷史時期市場的需求進行相應的升級和完善 ,并免費為相應的應用客戶進行免費的軟件升級 .同時,可以擴展為考勤系統(tǒng)、會議簽到系統(tǒng)、巡邏管理系統(tǒng),就餐管理系統(tǒng)等一卡通工程。 1 2 Delphi 簡介 本課題是在 Delphi 的基礎上開發(fā)研制的,下面對 Delphi進行簡單的介紹。Delphi是 Borland 公司開發(fā)的可視化軟件開發(fā)系統(tǒng)。 Delphi系列軟件的工作平臺相當廣泛,可以工作于 Windows 95、 Windows98、 Windows NT、 Windows2000以及 Windows XP下,編程所用的 語言為結(jié)構(gòu)化程度相當高的 Object Pascal 語言。用過 Delphi 系列軟件的程序員一定都會覺得 Object Pascal 語言具有高度清晰的結(jié)構(gòu),高效率的優(yōu)化系統(tǒng),是一種簡單易學,但又不乏其作為優(yōu)秀編無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 程語言的特點。同時,由于 Delphi采用了內(nèi)置高速的優(yōu)化編譯器,使得程序的編譯、鏈接速度快的驚人。在與其相類似的可視化軟件開發(fā)系統(tǒng) Microsoft Visual C+的比較中,我們不可否認 Microsoft Visual C+的功能相當強大,但調(diào)試程序時的編譯時間過長,使很多程序員感到棘手;而 Delphi 在編譯時等待的時間很少。 Delphi 的編譯器采用了事件編譯和選擇鏈接技術,使生成的可執(zhí)行文件冗余更少,運行起來速度更快。另外,由于 Delphi生成的可執(zhí)行文件不需要動態(tài)鏈接庫的支持,可以直接交付使用,這會使得使用 Delphi 的程序員充分享受 Delphi 為他們帶來的方便快捷。 Delphi 系列另一個廣受歡迎的原因是其強大的可擴展數(shù)據(jù)庫功能。 Delphi6.0 不但在傳統(tǒng)的開發(fā)能力方面持續(xù)進步,讓程序員能夠享有更具生產(chǎn)力的開發(fā)環(huán)境,對于最新的信息技術,也有非常良好的支持,讓程序員能夠快速地使用這些新的技術。 在對 Delphi 有了一個初步的了解之后,我們將進入對 Delphi 集成開發(fā)環(huán)境和工程管理的介紹,使大家能夠進一步深入了解 Delphi,并在此基礎上介紹編輯器和調(diào)試器的使用方法。 IDE是提供設計、運行和測試應用程序所需的所有工具的集成環(huán)境。 Delphi的集成開發(fā)環(huán)境( IDE)包括代碼編輯器、調(diào)試器、工具欄、圖像編輯器以及諸多用于應用程序開發(fā)的組件(如數(shù)據(jù)庫開發(fā)組件等)。所有這些都以集成方式進行操作,極大地簡化了用戶編程的過程。 1 3 研究背景 當前 ,大學內(nèi)的微機機房正在朝著開放式 ,大型化方向發(fā)展。一個 教學實驗中心里的幾個機房有著幾百臺微機 ,已是很普遍的現(xiàn)象。使用方式也由原來的以計劃安排集體上機為主 ,變?yōu)橐詡€人自由上機為主。因此、以往那種主要針對集體上機的以機房和時間段為單位來安排機器使用的管理方式已顯得不適用。為適應新的應用和發(fā)展 ,結(jié)合中心自身的特點 ,四川大學工程設計中心和西南交通大學共同研制出了這套用于微機機房管理的集中式 IC 卡控制門禁系統(tǒng)。該系統(tǒng)著眼于對大型開放式機房進行集中管理。把原來的分機房分散管理變?yōu)閱我怀鋈肟诘募泄芾?。變原來的人工計時計費為計算機管理的 IC 卡計費。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 1 4 特點及組成原 理 該系統(tǒng)有如下特點 : (1)技術上充分利用機房內(nèi)部局域網(wǎng)系統(tǒng) (LAN)環(huán)境。管轄范圍內(nèi)只設一個出入口。將所有投入使用的機器置于集中統(tǒng)一管理之下。 (2)采用多模塊結(jié)構(gòu)化模式設計 ,使用多種軟件混合編程。實現(xiàn)子系統(tǒng)內(nèi)數(shù)據(jù)庫管理和通訊及子系統(tǒng)與子系統(tǒng)之間的通訊。通過相互間的通訊 ,把幾個子系統(tǒng)的結(jié)合在一起。形成一個完善的門禁管理系統(tǒng)。 (3)用戶界面友好、操作簡便、并且具有較好的可維護性。 (4)系統(tǒng)除強調(diào)其實用性外 ,還對其安全性和可靠性作了充分考慮。 該系統(tǒng)主要由 IC 卡刷卡機管理子系統(tǒng)、登錄管理服務器及用戶端登 錄子系統(tǒng)組成。它們之間通過內(nèi)部局域網(wǎng)交換信息以保證機房外刷卡和機房內(nèi)登錄能協(xié)調(diào)工作。除此之外 ,還有與之相配套的數(shù)據(jù)后備系統(tǒng)提供電源保障的 UPS 系統(tǒng),在門禁系統(tǒng)管理下 ,刷卡機管理子系統(tǒng)向機器使用者提供上機刷卡服務。持卡用戶首先在設于機房外出入口的刷卡機前刷卡 ,刷卡機管理管理服務器在對卡的有效性進行驗證 ,待驗證無誤后使用者方可能進入機房。進入機房后還要進行登記才能使用機器。登錄管理服務器及用戶端登錄子系統(tǒng)提供使用者刷卡后進入機房后的登錄服務。上機要進行登錄是為了避免無卡上機和一人使用多臺機器情況的發(fā)生而設計的。 使用者進入機房后 ,可以隨意選定機位但必需進行登錄后才能獲得機器的使用權。為了避免未經(jīng)刷卡就上機 ,在登錄管理服務器的管理下 ,未刷卡的人將不能通過登錄驗證 ,一個人也不能同時登錄兩臺機器。同樣 ,一臺已經(jīng)被登錄使用的機器如果未被使用者注銷 ,它也不能再被其他人登錄。當機器使用完畢后 ,使用者必須先執(zhí)行登錄管理服務器所提供的下機注銷功能 ,釋放該機器的使用權 ,然后再到刷卡機前刷卡 ,刷卡機管理子系統(tǒng)根據(jù)使用時間計算并從卡上扣除相應機時金額。如此 ,門禁管理系統(tǒng)就完成了一個上下機的管理過程。從上面上下機的過程可以看出 ,門禁管理系 統(tǒng)的核心部分主要由設在機房外的 IC 卡刷卡機管理子系統(tǒng)、登錄管理服務器和裝在機房內(nèi)每臺機器上的用戶端登錄子系統(tǒng)組成 ,形成內(nèi)外兩道防線。使其即實現(xiàn)上機必須刷卡 ,且一人只能使用一臺計算機 ,又能根據(jù)需要自由選定機位 ,調(diào)換機位。給管理和使用都帶來了方無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 便。下面分別介紹各子系統(tǒng)的功能及工作原理。 1 4 1 刷卡機管理子系統(tǒng) 刷卡機管理子系統(tǒng)負責對出入機房進行計時 ,以及對卡的有效性進行驗證。它還兼有對當前正在上機和當日上機總?cè)藬?shù)進行統(tǒng)計的功能。該子系統(tǒng)由 IC 卡刷卡機和刷卡機管理服務器組成。 IC 卡刷卡機由單片機加上一個 通過 IC 卡機構(gòu)成 ,使其具有了和刷卡機管理服務器之間進行通訊的能力和驅(qū)動數(shù)碼管顯示的能力。加上一個多用戶串行通信卡與刷卡機進行通信 ,一臺刷卡機管理服務器上的多用戶卡最多可掛接 8 臺 IC 卡刷卡機。 IC 卡使用者刷卡后 ,刷卡機將 IC 卡信息送至刷卡機管理服務器 ,經(jīng)校驗傳送信息無誤后 ,刷卡機管理服務器查找數(shù)據(jù)庫對該卡記錄進行處理 ,判別是上機還是下機 ,如果是上機 ,就必須對該卡的有效性進行驗證。它要檢查該卡是否已經(jīng)超過使用期限、是否是掛失卡、卡上金額是否滿足設定的要求等。如驗證有誤 ,管理服務器送相應錯誤代碼至 IC 卡刷卡機 ,IC 卡刷卡機將顯示誤代碼 ,并發(fā)聲提示。如果是下機 ,管理服務器首先要通過 LAN 從用戶端登錄服務器獲取該卡登錄信息 ,判斷該卡是否按正常下機步驟已經(jīng)注銷。如已注銷 ,根據(jù)用機時間和設定的機時價格送至刷卡機扣出金額并清除庫中相應的上機信息。否則送“尚未注銷”錯誤代碼至 IC 卡刷卡機通知該卡用戶返回機房注銷機器以釋放該機器的使用權。一次刷卡過程在 500ms 內(nèi)完成。該系統(tǒng)還可按不同機房的不同機型設置收費標準。根據(jù)實際應用的需要 ,該子系統(tǒng)還設置了跨日下機 ,不注銷刷卡下機等特殊處理功能。登錄管理服務器及用戶端錄子系統(tǒng)該子系統(tǒng)由一 個含有控制引導過程的擴展 ROM 卡和事先寫在硬盤特殊位置的登錄軟件構(gòu)成。放在 ROM 擴展卡上的程序用來獲取對系統(tǒng)引導過程的控制權 ,確保該計算機的使用者必須經(jīng)過上機登錄并且有效才能取得對該機器的使用權。由于采用了硬件設計 ,一般用戶無法繞過登錄 ,因此 ,設置登錄功能就有效地避免了未經(jīng)刷卡就使用機器或一個使用多臺機器現(xiàn)象的發(fā)生。用戶端登錄服務通訊程序 BOLABDC+編寫 ,它的作用是用它通過 LAN 與登錄服務器進行通訊 ,以完成對該機的上機登錄和下機注銷以及更改密碼的工作。使用者刷卡進入機房后 ,首先將申請該機使用權的用戶的 卡號 ,密碼輸入。登錄服務通訊程序?qū)⑤斎氲目ㄌ?,密碼連同本機地址一道通過 LAN 發(fā)送至登錄管理服務器 ,登無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 錄管理服務器收到登錄申請請求后通過 LAN 查詢刷卡機管理服務器。通過卡號查詢檢查該卡用戶是否已經(jīng)刷卡。如果找到該卡的刷卡信息并且核對密碼無誤 ,則返回登錄成功信息到用戶終端機。用戶終端機收到返回的登錄成功信息后將控制權交本機 WIN98 引導系統(tǒng)。進入正常使用狀態(tài)。否則 ,如果在刷卡機管理服務器未查到該用戶的刷卡信息或核對密碼有誤 ,則返回一登錄失敗以及相應的錯誤信息到用戶終端機。用戶終端機收到返回錯誤信息后將在計算機屏 幕上顯示“無此卡號”或“密碼錯誤”的信息 ,讓使用者確定是否刷卡,或是輸入了錯誤的卡號或密碼而作出相應處理 ,直至登錄正確。同樣 ,使用者在機器使用完后要使用戶端登錄服務提供的注銷功能進行注銷 ,才能釋放該機的使用權 ,才能正常通過刷卡機管理子系統(tǒng)刷卡下機。在登錄管理服務器端運行的登錄軟件 ,不僅負責對用戶登錄和注銷的及時處理 ,還對登錄后的使用情況進行管理和監(jiān)控。它記錄并保存用戶上機的起始時間和使用者機位變更情況。以備需要時查詢。它還負責對集體上機這類不需登錄的情況進行處理。登錄管理服務器端可以把某些機位設置為不檢測卡 號和登錄。因此集體上機的用戶在指定機位上無須登錄即可使用計算機。 1 4 2 數(shù)據(jù)后備系統(tǒng) 在整個門禁系統(tǒng)運行過程中 ,數(shù)據(jù)的可靠性和安全性是非常重要的 ,數(shù)據(jù)一但丟失或遭到破壞將會造成巨大損失。因此 ,從系統(tǒng)及數(shù)據(jù)的安全考慮。專門為各子系統(tǒng)軟件設計了一個自動備份模塊。該自動備份模塊確保各子系統(tǒng)不僅要將自己的數(shù)據(jù)保存一段時間 ,在每天關機前退出相應的管理程序時 ,各子系統(tǒng)還會啟動自己的自動備份模塊 ,自動將當日的所有數(shù)據(jù)通過 LAN 傳送到一個專門的數(shù)據(jù)后備服務器予以保存。這樣 ,即使發(fā)生意外 ,最多只能影響到當日數(shù)據(jù)。從而把損失降到最少。 1 4 3 UPS 系統(tǒng) 為保證因意外事故導致突然停電后 ,所有的登錄及刷卡信息不被丟失和使用者能刷卡下機。門禁系統(tǒng)專門配備了 50KW/UPS 不間斷電源 ,在電網(wǎng)停電時能為各子系統(tǒng)提供不少于 30 分鐘的供電。保證正在上機的使用者都能在這段時間無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 內(nèi)能利用刷卡機子系統(tǒng)提供的“不注銷下機”功能正常刷卡下機。管理人員也能在所有使用者刷卡退出后按正常步驟關閉各子系統(tǒng)并在退出過程中自動備份當日的相關數(shù)據(jù)。 第二章 總體概要設計 2 1 系統(tǒng)需求分析 在此實例中,我們要開發(fā)一個實現(xiàn)局域網(wǎng)門禁系統(tǒng)功能的 客戶 /服務器( C/S)數(shù)據(jù)庫應用系統(tǒng),下面是用戶對系統(tǒng)需求功能的陳述。 系統(tǒng)應用在一個各臺 PC 均安裝 WINDOWS NT/2000 操作系統(tǒng)的局域網(wǎng)內(nèi),且此網(wǎng)由一臺域控制器(服務器)和多臺域成員 PC 組成。此局域網(wǎng)的用戶為某學校的學生與教職員,分成 Teacher、 Master 和 Graduate 三組。他們每人均有一張機讀卡,對學生而言標識其學號,對教職員而言則標識其員工代號,在此我們系統(tǒng)稱為 ID。每個 ID 均由數(shù)字和英文字母組成,長度不大于 16 位。現(xiàn)在要對該網(wǎng)進行管理,實現(xiàn)刷卡上機,自動計費。因此,該系統(tǒng)應有刷卡 和實時監(jiān)控兩個模塊。在刷卡端能夠使用刷卡器讀取用戶卡上的 ID 并發(fā)送給服務器,然后顯示用戶信息及刷卡成功或失敗等反饋消息;在實時監(jiān)控端,要求設立管理員,能夠?qū)崟r顯示已刷卡用戶、進行自動計費以及輸出查詢統(tǒng)計報表。管理員可以維護上機用戶的數(shù)據(jù),實現(xiàn)增加、刪除用戶及修改用戶信息。下表1-1 顯示了系統(tǒng)模塊劃分情況。 模塊名 所在機器 功能 刷卡模塊 專門用于刷卡的 PC 上 刷卡及顯示反饋信息 實時監(jiān)控模塊 域控制器上(服務器) 實時顯示、自動計費、用戶管理和輸出查詢統(tǒng)計報表 表 1-1 局域網(wǎng)門禁系統(tǒng)模塊劃分情況 刷卡模塊主要完成刷卡功能,同時顯示從服務器上反饋回來的信息,包括:用戶 ID、用戶姓名、用戶班級、用戶刷卡登記時間、用戶刷卡注銷時間、當前無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 的上機余款、刷卡是否成功。為了防止用戶使用鍵盤關閉刷卡模塊,必須實現(xiàn)只能通過服務器端的實時監(jiān)控模塊制刷卡模塊退出的功能。 實時監(jiān)控模塊主要完成實時監(jiān)控功能,隨時監(jiān)聽從刷卡端發(fā)來的刷卡消息,叛斷是刷卡登錄還是刷卡注銷,隨后進行相應的數(shù)據(jù)處理,再向刷卡端返回反饋消息。 用戶管理主要分為用戶帳號的增加、刪除,用戶信息的修改。每一個欲上機的用戶必須首先在實時監(jiān)控模塊端進行注冊, 然后在刷卡端刷卡,方可使用局域網(wǎng)內(nèi)的任一臺機器。系統(tǒng)對用戶進行了分類,分成老師、研究生、本科生三類,分別有不同的計費標準。 統(tǒng)計查詢功能要求有登錄日志查詢、用戶信息查詢、組信息查詢和用戶上機情況統(tǒng)計。登錄日志查詢要求顯示某段日期內(nèi)某個用戶的登錄記錄;用戶信息查詢要求顯示某用戶的具體信息如金額等;組信息查詢要求顯示某組的計費標準和成員列表;用戶上機情況統(tǒng)計要求統(tǒng)計用戶的總上機小時數(shù)以便核查。所有查詢統(tǒng)計結(jié)果均為只讀信息,不可以進行任何修改。在用戶管理和查詢統(tǒng)計前,均要求使用者輸入管理員帳號和密碼。 由于實時臨 近模塊端可以對用戶數(shù)據(jù)庫進行操作,考慮到安全性,必須在啟動的時候?qū)κ褂谜叩纳矸葸M行認證,由使用者輸入管理員帳號和密碼,同數(shù)據(jù)庫中的記錄進行核對,核對正確后方可進入系統(tǒng)。這樣確保了只有管理員才可以運行實時監(jiān)控模塊,也保證了用戶資料不受惡意修改。管理員進入實時監(jiān)控模塊后,可以維護自己的密碼,以滿足自己的需要。 2 2 系統(tǒng)設計 在以上的系統(tǒng)功能分析中,我們確定了系統(tǒng)的模塊劃分和所需要具有的功能。然而用戶需求還不能直接指導我們進行開發(fā),作為開發(fā)人員,我們必須根據(jù)用戶需求進行詳細的系統(tǒng)分析和設計,形成相應的數(shù) 據(jù)模型,包括數(shù)據(jù)庫的表結(jié)構(gòu)、數(shù)據(jù)在各表及各模塊之間的傳遞關系、網(wǎng)絡通信所使用的自定義協(xié)議等。只有事先確定了這些,我們才能在開發(fā)時做到心中有數(shù),游刃有余。 2 2 1 畫出數(shù)據(jù)流圖 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 刷 卡 消息處理 實時監(jiān)控 P1 管理員 查詢統(tǒng)計 用戶維護 登錄日志D1 組計費標準 D2 用戶列表 D3 P4 P2 P3 數(shù)據(jù)流圖( Data Flow Diagram,簡稱 DFD 圖)是用一些規(guī)定的圖標和符號來描述數(shù)據(jù)在系統(tǒng)中的流動和處理的情況。數(shù)據(jù)流圖在表示系統(tǒng)時,采用自上而下逐步細化的結(jié)構(gòu)化方法表示。頂層一級的功能在下一級中加以細化。 根據(jù)系統(tǒng)分析,我們可以畫出如圖 1-5 所示的頂層數(shù)據(jù)流圖。 圖 1-5 頂層數(shù)據(jù)流圖 上面的 頂層數(shù)據(jù)流圖經(jīng)過細化后,得到圖 1-6 所示的監(jiān)控模塊第二層數(shù)據(jù)流圖與圖 1-7 所示的刷卡模塊第二層數(shù)據(jù)流圖。 反 退 刷 饋 出 卡 消 命 消 息 令 息 刷卡消息量 驗證信息 身份驗證 處理結(jié)果 驗 身 證 份 調(diào)用信息 調(diào)用信息 調(diào)用信息 信 驗 查詢要求 統(tǒng)計要求 修改要求 息 證 查詢結(jié)果 統(tǒng)計結(jié)果 修改結(jié)果 圖 1-6 實時監(jiān)控模塊第二層數(shù)據(jù)流 局域網(wǎng)門禁系統(tǒng) 刷卡消息 刷卡反饋消息 系統(tǒng)退出命令 刷卡模塊 實時監(jiān)控模塊 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 顯示信息 刷卡消息 刷卡反饋消息 刷卡 ID 系統(tǒng)退出命令 圖 1-7 刷卡模塊第二層數(shù)據(jù)流 2 2 2 編寫數(shù)據(jù)項 根據(jù)數(shù)據(jù)項的含義,我們將數(shù)據(jù)項的定義分為以下幾個方面:數(shù)據(jù)項名、類型、長度、附加說明。主要數(shù)據(jù)項定義如表 5-14 至表 5-16 所示。 數(shù)據(jù)項名 類型 長度 說明 用戶 ID( id) 字符型 16 英文字符和數(shù)字的組合 類型( type) 字符型 4 固定為“刷卡”,為以后功能擴充使用 登錄時間( intime) 日期型 形式: 2005-3-4 12: 00 注銷時間( outtime) 日期型 形式同上 IP 字符型 15 以后功能擴充使用 表 1-14 數(shù)據(jù)項定義(登錄日志) 數(shù)據(jù)項名 類型 長度 說明 組類別( type) 字符型 16 英文字符和數(shù)字的組合(主碼),為Teacher|Master|Graduate 計費標準 (criteria) 浮點型 Single 類型 表 1-15 數(shù)據(jù)項定義(組計費標準) 數(shù)據(jù)項名 類型 長度 說明 用戶 ID(id) 字符型 16 用戶卡上的標識碼(主碼) 類型( type) 字符型 16 同組類別 姓名( name) 字符型 20 密碼( pwd) 字符 型 20 英文字符和數(shù)字的組合 金額( money) 浮點型 Single 類型 刷卡器 刷卡信息處理 P5 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 附加信息( info) 字符型 100 其他信息 表 1-16 數(shù)據(jù)項定義(用戶列表) 2 3 數(shù)據(jù)庫設計 1 數(shù)據(jù)庫概念設計 根據(jù)對數(shù)據(jù)流圖和數(shù)據(jù)字典的分析,我們可以確定該應用中的實體、屬性和實體之間的關系,并畫出如圖所示的用戶 E-R 圖。 1 1 n 1 1 n m n m 2數(shù)據(jù)庫邏輯結(jié)構(gòu)設計 轉(zhuǎn)換后的關系模型如下所示 ,關系主碼用下劃線標出 . 登錄日志 Log( id, type, intime, outtime,ip ) 計費標準 Rule( type, criteria ) 用戶列表 Users( id, type, class, name, pwd, money, info ) 下面我們將利用 SQL 語言的 CREATE 語句建立上述關系 ,并定義好完整性約束 . CRAETE TABLE Log 登錄日志 ( id VARCHAR(16), type VARCHAR(16), intime DATETIME, outtime DATETIME, 組 屬于 用戶 對應 金額 對應 ID 對應 計費 標準 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: ip VARCHAR(15) ); CREATE TABLE Rule 計費標準 (type VARCHAR(16) CONSTRAINT CONDNO PRIMARY KEY , criteria FLOAT ); CREATE TABLE Users (id VARCHAR(16) CONSTRAINT CONDNO PRIMARY KEY , type VARCHAR(16), class VARCHAR(16), name VARCHAR(20), pwd VARCHAR(20), money FLOAT, info VARCHAR(100) ); 具體到建立數(shù)據(jù)庫 ,需要手工建立一個數(shù)據(jù)庫 LGSys.mdb. 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 第三章 分子模塊的設計 3 1 C/S 基本概念 什么是 C/S?如果你是一位 DELPHI 開發(fā)人員,那你一定要把這個概念弄清楚。因為實際上, DELPHI 本身就是一個客戶 /服務器開發(fā)環(huán)境。典型的客戶 /服務器結(jié)構(gòu)總是包括一個前端程序,也叫客戶。其作用于是向遠程服務器上的程序發(fā)送數(shù)據(jù),并接收來自服務器的數(shù)據(jù)并進行一定的處理,再根據(jù)情況進行反饋。即遠程服務器是服務的提供者,它可以從內(nèi)部訪問服務器上的數(shù)據(jù)庫;而客戶總是向服務器請求服務 ,并不能直接訪問數(shù)據(jù)庫內(nèi)的數(shù)據(jù)。在這種情況下,服務器盡可能詳盡地定義業(yè)務規(guī)則和實現(xiàn)盡可對強大的功能,因為它往往是更新比較緩慢的,而客戶往往比較“瘦小”,因為它往往是頻繁更新和分發(fā)的對象。 一般情況下,客戶 /服務器方案可以解決以下幾個問題: 允許將不同客戶進行分類,每類客戶只允許處理它負責的數(shù)據(jù)。 以一種更為有效的方式為決策者提供決策支持。 在 MIS 中加強對數(shù)據(jù)的集中控制,而在數(shù)據(jù)分析和使用的集中控制上只需要花費比較少的精力。 在服務器端可以對整個業(yè)務數(shù)據(jù)庫進行數(shù)據(jù)完整性驗證。 更靈活的業(yè)務劃分,客戶端和服務 器端業(yè)務功能分離,各司其職。 服務器向客戶端傳遞的數(shù)據(jù)是經(jīng)過篩選的,可以減輕網(wǎng)絡負擔。 1 客戶 /服務器模型 客戶 /服務器模型通常分兩層模型和三層模型兩類。下面我們分別進行介紹。 兩層模型 兩層模型的應用十廣泛,基本上,它是由桌面數(shù)據(jù)庫應用系統(tǒng)演變而來的。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 在此模型中,數(shù)據(jù)庫位于服務器端,客戶應用程序位于客戶機上,業(yè)務邏輯放在客戶或服務器上。如圖 1-5 所示。 三層模型 如圖 1-6 所示,客戶僅僅起顯示數(shù)據(jù)的作用,業(yè)務規(guī)則(處理邏輯)放在服務器上,而實際的數(shù)據(jù)庫則放在另外一臺機器上。由于三者處于不同的機器,開發(fā)人 員可以更靈活高效地劃分系統(tǒng)功能,優(yōu)化數(shù)據(jù)訪問及維護數(shù)據(jù)的完整性。 圖 1-5 兩層客戶 /服務器模型 圖 1-6 三層客戶 /服務器模 2 客戶 /服務器模型與桌面數(shù)據(jù)庫應用系統(tǒng)的比較 客戶 /服務器器模型與桌面模型應用系統(tǒng)的比較:面向集合與面向記錄。 對客戶端而言,它面向的是記錄。對桌面數(shù)據(jù)庫而言,它直接面對數(shù)據(jù)集合;而在 C/S 模型中,客戶面對的只是數(shù)據(jù)集合的一個子集。通過 SQL 語句,客戶可以從服務器端獲取到符合一定要求 的一組記錄,而不需要把整個數(shù)據(jù)表格全部下載到本地再進行處理。而一個桌面數(shù)據(jù)庫要從網(wǎng)絡數(shù)據(jù)庫中獲取數(shù)據(jù)時,它得到的是整個數(shù)據(jù)表格。如果數(shù)據(jù)表格很大,那網(wǎng)絡傳輸所需要的時間是很數(shù)據(jù) 業(yè)務規(guī)則 客戶 1 客戶 2 客戶 3 數(shù)據(jù)庫 業(yè)務規(guī)則 客戶 1 客戶 2 客戶 3 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 長的。相比之下,通過 SQL,只需要通過網(wǎng)絡傳輸符合記錄的部分記錄集,這就大大減輕了網(wǎng)絡傳輸?shù)呢摀?,也使系統(tǒng)的響應速度得到了很大的提高。 3 3 1 刷卡模塊 刷卡模塊主要有 2 個子模塊組成,如圖 1-7 所示。 圖 1-7 刷卡模塊系統(tǒng)結(jié)構(gòu)圖 下面是各模塊的主要功能: 背景框架子模 塊 該子模塊是刷卡模塊的背景界面,通過覆蓋整個桌面起到模擬的效果。同時,它起到禁止用戶關閉系統(tǒng)的作用。通過在內(nèi)部設定一個開關,使得用戶無法通過鍵盤和鼠標關閉刷卡應用程序,而只能通過接收來自服務器的命令才能夠自動關閉。 刷卡消息處理子模塊 該子模塊是刷卡模塊的邏輯核心部分。在這個子模塊中,能夠?qū)崿F(xiàn)自動讀取用戶刷卡信息、向服務器傳送刷卡信息和接收并顯示服務器反饋信息的功能。通過這個模塊,用戶可以刷卡,實時看到自己刷卡的處理結(jié)果以及自己的姓名、班級、刷卡登錄時間、注銷時間和當前余額信息。如果用戶余額不足,該子模塊 將顯示拒絕用戶登錄的提示。 3 3 2 實時監(jiān)控模塊 該模塊主要由四個子模塊組成,如圖 1-8 所示 背景框架子模塊 刷卡消息處理模塊 實時監(jiān)控 子模塊 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 圖 1-8 實時監(jiān)控子模塊系統(tǒng)結(jié)構(gòu)圖 下面是各模塊的主要功能: 實時監(jiān)控子模塊 該子模塊是實時監(jiān)控模塊的主界面,也是系統(tǒng)的惟一進入和退出端。通過此子模塊,用戶可以調(diào)用查詢統(tǒng)計子模塊和用戶管理子模塊,同時,此子模塊還自動調(diào)用刷卡消息處理子模塊處理來自刷卡模塊的消息。由于只有管理員才可以訪問這四個子模塊,因此,在進入此模塊時必須進行身份驗證,確保只有管理員才能運行實時監(jiān)控應用程序。 在此模塊中,管理員還可以實時看到當前刷卡上機的用戶列表及每個用戶的詳細信息。 刷卡消息處理子模塊 該子模塊是實時監(jiān)控模塊實現(xiàn)門禁功能和自動計費功能的核心部分。這個子模塊由實時監(jiān)控子模塊自動調(diào)用,以刷卡消息為處理對象,自動維護已刷卡用戶列表和域用戶列表,并向數(shù)據(jù)庫中寫入登錄住處和更新用戶金額。由于采用了多線程模型和臨界區(qū)域?qū)ο?,可以處理同時到達的多個刷卡信息。 用戶管理子模塊 該子模塊是管理員維護域用戶列表和用戶信息的界面。管理員可以瀏覽并修改三個用戶組的成員列表,組計費標準和各用戶的詳細信息??梢詾楦鱾€用戶 組添加新用戶和刪除無用的用戶。由于用戶信息同時存在于域用戶(操作系統(tǒng)數(shù)據(jù)結(jié)構(gòu))和數(shù)據(jù)庫(系統(tǒng)自帶數(shù)據(jù)表單),如圖 1-9 所示,因此管理員要修改用戶清單必須使用此子模塊,而不能單獨使用操作系統(tǒng)自帶的管理工具來維護用戶列表。 刷卡消息處理子模塊 用戶管理子模塊 查詢統(tǒng)計子模塊 用戶管理子模塊 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 一一對應 同步更新 圖 1-9 用戶管理子模塊內(nèi)部結(jié)構(gòu)說明 查詢統(tǒng)計子模塊 該子模塊允許管理員就登錄、用戶信息和組成員列表進行查詢。允許對查詢設定關鍵字進行模糊查詢,對登錄記錄的查詢還允許設定查詢的 時間段。統(tǒng)計功能分為用戶上機清單和用戶上機總時兩部分,前者給出用戶每一天的上機時間,后者給出用戶總上機時間。統(tǒng)計前,可以設定統(tǒng)計的用戶 ID 進行模糊查詢,還可以設定統(tǒng)計的時間段。最后生成的數(shù)據(jù)集體傳遞給報表及輸出子模塊進行顯示和輸出。 報表及輸出子模塊 該子模塊顯示查詢統(tǒng)計模塊生成的數(shù)據(jù)集,并以 Microsoft Word XP 的形式自動輸出到固定的目錄下,供用戶瀏覽、修改和打印。 3 4 系統(tǒng)功能實現(xiàn) 通過上面對本局域網(wǎng)門禁系統(tǒng)的功能的簡單介紹,我們把此系統(tǒng)分割成兩個單獨的模塊,刷卡模塊和實時監(jiān)控模 塊,兩者之間通過網(wǎng)絡進行通信。下面將介紹系統(tǒng)的詳細設計和具體的實現(xiàn)細節(jié)。 3 4 1 刷卡模塊的設計和實現(xiàn) 本模塊采用 MDI 結(jié)構(gòu),背景窗口為 MDI 框架窗口,刷卡窗口為 MDI 子窗口。系統(tǒng)啟動后背景窗口將以全屏顯示 ,重點突出刷卡窗口。 MDI 結(jié)構(gòu)即多文檔結(jié)構(gòu),是從 Windows2.0 下的 Microsoft Excel 電子表格程序開始引入的,與它相對應的是 SDI(單文檔結(jié)構(gòu))。 一個 MDI 應用程序包含如下窗口: 框架窗口:框架窗口雖應用程序的主要窗口。此窗口一般含有標題欄、菜單條和系統(tǒng)菜單。右上角為最小化、最 大化和關閉按鈕。 數(shù)據(jù)庫 各用戶組計費 標準 Rule表單用戶列表 Users表單 Windows2000/NT 域全局組 域用戶列表 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 客戶窗口: MDI 程序的窗口管理器,是框架窗口呂間的空白區(qū)域。用來管理和顯示 MDI 子窗口。 MDI 子窗口:顯示在客戶窗口內(nèi)的窗口,不能移出客戶區(qū)。 由于 Delphi6.0 會自動管理 MDI 窗口元素。因此對我們來說,只需要記住對框架窗口而言,必須把 FormStyle 屬性設置成 fsMDIForm;對子窗口而言,必須把 FormStyle 屬性設置成 fsMDIChild。如果子窗口是自動建立的,那么在程序啟動的時候會自動顯示在客戶窗口內(nèi)。缺省地,每一個窗口都有是自動建立的,這可以在 Project 菜單的 Options 內(nèi)的 Forms 卡內(nèi)觀察。 Auto-create forms列表里的窗口 Form1v 和 Form2 都是在程序運行的時候自動建立的,如果不是MDI 子窗口,則處于隱藏狀態(tài)。如果把某個 Form 如 Form3 放進 Available forms列表下,那在調(diào)用這個窗口前必須手工建立它。 3 5 UDP 協(xié)議的基本知識 UDP 協(xié)議( User Datagram Protocol),即用戶數(shù)據(jù)報協(xié)議,廣泛使用在計算機間傳輸數(shù)據(jù)的網(wǎng)絡應用上,如網(wǎng)絡視頻會議系統(tǒng)、語音傳播等眾多的客戶 /服務器模式。 UDP 協(xié)議從問世至今 已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類似協(xié)議所掩蓋,但是即使在今天, UDP 協(xié)議仍然在一項非常衫和有效的網(wǎng)絡傳輸層協(xié)議。與我們所熟知的 TCP 協(xié)議一樣, UDP 協(xié)議位于 IP( Internet Protocol)協(xié)議的頂層。根據(jù) OSI (Open System Interconnect )參考模型, UDP 和TCP 同屬于傳輸層協(xié)議。 UDP 協(xié)議的主要作用是將網(wǎng)絡數(shù)據(jù)流量壓縮成數(shù)據(jù)報的形式。一個典型的數(shù)據(jù)報是一個二進制數(shù)據(jù)的傳輸單位。每一個數(shù)據(jù)報的前 8 個字節(jié)用來包含報頭號信息,剩余字節(jié)則用來包含具體的傳輸數(shù)據(jù) 。 UDP 協(xié)議是一種無連接協(xié)議。它與 TCP 操作不同,計算機間進行通信時并不需要事先建立一個連接。而且,一個 UDP 的接受方可以同時作為一個發(fā)送方,相比 TCP 協(xié)議,它的應用方法也非常簡單。因此,在我們的系統(tǒng)中,使用 UDP協(xié)議作為我們進行網(wǎng)絡通信的網(wǎng)絡協(xié)議。 3 6 界面設計 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 刷卡消息處理子模塊的界面布局如圖 1-17 所示。 圖 1-17 刷卡消息處理子模塊界面布局 從圖中我們可以看到刷卡界面的基本布局。對此窗口,我們需要把FormStyle 屬性設置為 fsMDIChild,命名為 fmScanForm,Caption 為“ LGYSY-刷卡窗口”。 窗口內(nèi)最上面是刷卡用的 Tedit 控件,命名為 editCardNo。下面是個人信息界面,分別顯示了用戶姓名、班級、登錄時間、注銷時間和當前上機余額,分別命名為 editName,editClass,editInTime,editOutTime,editMoney。由于只起顯示作用,因此這五個 Tedit 控件的 ReadOnly 屬性需要設置為 False。對于設置多個組件的同一屬性,有一個簡單的方法,即按住鍵盤 Shift 鍵分別點選各個 Tedit 組件,然后在 Object Inspector 里選擇 ReadOnly 項,設置為 True 即可。最下面是狀態(tài)欄,左邊的 Panel 用于顯示刷卡成功 /失敗的信息,右邊的 Panel 顯示當前日期。 最關鍵的 TNMUDP 控件我們命名為 nuScanCard,LocalPort 屬性設置為無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 2171, RemotePort 屬性設置為 2173, ReportLevel 屬性為 1。 3 7 代碼設計 首先,在窗口創(chuàng)建時需要將個人信息下的各個輸入框設置為只讀。其次,我們在此需要用到 UDP 的廣播功能,這樣只需要把 RemoteIP 設置為廣播地址,發(fā)送的數(shù)據(jù)就可以被局域網(wǎng)內(nèi)的所有 機器所接收。這樣,我們就沒必要單獨設置服務器的 IP ,否則,當服務器 IP 改變的時候,還必須重新設置nuScanCard.RemoteHost 屬性值。對于廣播的詳細信息,請參閱其他專業(yè)文獻,在這里只需要指出,如果本機 IP 為 3 而子網(wǎng)掩碼為 ,則廣播地址即為 55。因此,在窗口創(chuàng)建時需要獲取廣播地址并賦給RemoteIP 屬性。如果獲取 IP 失敗,則應該退出系統(tǒng)。另外,由于下面的代碼用到了 WinSock.pas 單元,而這個單元并沒有缺省包含在引用列表中 ,所以必須手工在接口部分的引用列表中添加此單元。 3 8 ODBC 數(shù)據(jù)源 設計 所有的模塊及界面做好以后,最后就要進行數(shù)據(jù)庫連接了。打開開始設置控制面板管理工具 ODBC 數(shù)據(jù)源,選擇系統(tǒng) DNS,如下圖所示: 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 選擇添加創(chuàng)建新數(shù)據(jù)源如下圖所示: 點擊完成。填寫數(shù)據(jù)源名稱網(wǎng)吧管理系統(tǒng),選擇數(shù)據(jù)庫,如下圖所示: 點擊確定完成。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 第四章 總結(jié)與展望 通過本次畢業(yè)設計,我們基本明確了一個局域網(wǎng)門禁系統(tǒng)從構(gòu)思到設計再到實現(xiàn)的一般步驟以及需要注意的方面,這也是一個讓我 們自己學習知識和運用知識的大好機會。 我們最大的遺憾就是由于能力和設備的限制沒有能夠把一整套網(wǎng)絡管理系統(tǒng)做出來。還有部分功能還有待進一步加強。嚴格的來說,我們的系統(tǒng)還不是真正意義上的局域網(wǎng)門禁系統(tǒng),而是一個單機測試版。原因就是缺乏很強專業(yè)技術水平以及沒有很高的技術含量。 由于在校內(nèi)課程中沒有涉及到很深 Delphi 程序,以及我個人學習能力的限制,系統(tǒng)也沒有能夠?qū)崿F(xiàn)很強的功能。 還有就是各組員間聯(lián)系不夠緊密,缺乏團隊合作精神。由于與指導教師缺乏默契的合作和密切的聯(lián)系,為后期的時間緊迫埋下了隱患。而作為組長,我負 有不可推卸的責任。 但是在各位領導和老師對我們的關心和指導之下,我們克服了困難,經(jīng)過調(diào)試,系統(tǒng)已基本達到我們初步制定的目標,完成簡單登錄、查詢、管理等功能,并能順利通過單機環(huán)境測試。 我相信,在不久的將來,局域網(wǎng)門禁系統(tǒng)將提供更為簡單,同時也是更為精細和完善的實現(xiàn)手段。到那時,使用局域網(wǎng)門禁系統(tǒng)管理網(wǎng)絡,將更加簡單! 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 致 謝 在這幾個月的畢業(yè)設計過程中,學校領導和老師對我們表達了深切的關心和嚴格的督促;尤其是在課題設計的初始階段,專業(yè)老師對我進行了悉心的教導并提出了許多寶貴的意見 ;在系統(tǒng)開發(fā)過程中,指導教師在百忙之中抽出時間為我們的設計提供參考書目和專業(yè)指導;在課題研究過程中,其他老師也為我們提供了許多的寶貴意見和幫助;班主任老師更是一遍一遍不厭其煩地督促我們完成設計工作。 參 考 文 獻 1、江毅等 .DELPHI6.0 數(shù)據(jù)庫實例編程 . 北京:中國水利水電出版社, 2002 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 2、苗雪蘭,劉瑞新,王懷峰 .數(shù)據(jù)庫系統(tǒng)原理及應用教程 . 北京:機械工業(yè)出版社, 2001 3、袁培根 ,楊東艷 ,肖仁琴 ,何明儒 .開放式機房門禁系統(tǒng)研制與實踐 . 北京:實驗室研究與探索第 20卷 第 5期, 2001 4、賈成宇 ,李樹秋 ,王世剛 .智能門禁系統(tǒng)門控部分硬件設計 . 吉林:長春郵電學院學報第 18卷第 3期, 2000 5、賈成宇 ,李樹秋 ,王世剛 .智能門禁系統(tǒng)門控部分軟件設計 . 吉林:長春郵電學院學報第 19卷第 1期, 2001 附 錄 部分重要代碼詳解 unit main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, StdCtrls, ExtCtrls, Menus, Mask, DBCtrls, Buttons; 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: type TForm1 = class(TForm) Panel1: TPanel; Panel2: TPanel; Edit1: TEdit; Label1: TLabel; DBGrid1: TDBGrid; MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N4: TMenuItem; N6: TMenuItem; N5: TMenuItem; PC1: TMenuItem; DBEsdjg: TDBEdit; DBEshangji: TDBEdit; DBExiaji: TDBEdit; DBEsj: TDBEdit; DBExj: TDBEdit; Label2: TLabel; Timer1: TTimer; Splitter1: TSplitter; Label3: TLabel; Label4: TLabel; Panel3: TPanel; DBGrid2: TDBGrid; Panel4: TPanel; N7: TMenuItem; DBEmrjg: TDBEdit; DBEyhm: TDBEdit; N8: TMenuItem; N9: TMenuItem; DBEqx: TDBEdit; DBText1: TDBText; N3: TMenuItem; Label5: TLabel; function sswu(yuanshi:string):real; function jgjs(shangji:string;xiaji:string;MM:string):string; procedure Edit1KeyPress(Sender: TObject; var Key: Char); procedure N5Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure PC1Click(Sender: TObject); procedure N7Click(Sender: TObject); procedure N6Click(Sender: TObject); procedure N4Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure N3Click(Sender: TObject); private Private declarations public Public declarations end; var Form1: TForm1; implementation uses D_M, sd_gl, dd_gl, mr_jg, deng_lu, dl_gl, shan_chu; $R *.dfm function Tform1.sswu(yuanshi:string):real; var dd:string; begin if pos(.,yuanshi)0 then 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: begin dd:=copy(yuanshi,pos(.,yuanshi)+1,3); if (strtofloat(dd)=0)and(strtofloat(dd)25)and(strtofloat(dd)75)and(strtofloat(dd)=99) then result:=strtofloat(copy(yuanshi,1,pos(.,yuanshi)-1)+1; end else result:=strtofloat(yuanshi); end; function Tform1.jgjs(shangji:string;xiaji:string;MM:string):string; var tt,xiaoshi,fenzhong,allmoney:string; begin tt:=; xiaoshi:=; fenzhong:=; allmoney:=; /tt:=timetostr(now()-strtodatetime(DM.ADOTgltemp.Lookup( 卡編號 ,edit1.Text, 上機時間); tt:=timetostr(strtodatetime(xiaji)-strtodatetime(shangji); xiaoshi:=copy(tt,1,2); if copy(xiaoshi,2,2)=: then xiaoshi:=copy(xiaoshi,1,1); xiaoshi:=floattostr(strtofloat(xiaoshi)*strtofloat(MM);/小時位的計算 if copy(tt,3,1)=: then fenzhong:=copy(tt,4,2) else fenzhong:=copy(tt,3,2); fenzhong:=copy(floattostr(strtofloat(fenzhong)/60*strtofloat(MM),1,4);/ 分鐘位的計算 result:=floattostr(strtofloat(xiaoshi)+strtofloat(fenzhong);/總金額的計算 end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var moneyall:double; ok,ss,xx:string; begin ss:=; xx:=; if key=#13 then if (DM.ADOTgltemp.Lookup(卡編號 ,edit1.Text,卡編號 )=Null) then begin DM.ADOTgl.Append; DM.ADOTgl.FieldByName(卡編號 ).AsString:=edit1.Text; DM.ADOTgl.FieldByName(上機時間 ).AsString:=datetimetostr(now(); DM.ADOTgl.FieldByName(操作員 ).AsString:=DBEyhm.Text; DM.ADOTgl.Post; DM.ADOTgltemp.Append; DM.ADOTgltemp.FieldByName(卡編號 ).AsString:=edit1.Text; DM.ADOTgltemp.FieldByName(上機時間 ).AsString:=datetimetostr(now(); DM.ADOTgltemp.Post; edit1.Text:=; DBText1.Caption:=inttostr(strtoint(DBtext1.Caption)-1); 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: DM.ADOQuery1.Close; DM.ADOQuery1.Open; DM.ADOQuery2.Close; DM.ADOQuery2.Open; end else begin dm.ADOTgl.Locate( 卡編號 ; 上機時間 ,vararrayof(DM.ADOTgltemp.Lookup( 卡編號,edit1.Text,卡編號 ),DM.ADOTgltemp.Lookup(卡編號 ,edit1.Text,上機時間 ),); dm.ADOTgl.Edit; DM.ADOTgl.FieldByName(下機時間 ).AsString:=datetimetostr(now(); DM.ADOTgl.UpdateBatch; DM.ADOTgl.Edit; DM.ADOTjggl.First; ok:=; repeat begin if strtodatetime(DBEsj.Text)=strtodatetime(datetostr(now()+ +DBEshangji.Text)and(strtodatetime(DBExj.Text)=strtodatetime(datetostr(now()+ +DBExiaji.Text) then begin moneyall:=0; moneyall:=sswu(jgjs(DBEsj.Text,datetostr(now()+ +DBEshangji.Text,DBEmrjg.text); while okok do begin DM.ADOTjggl.Next; if DM.ADOTjggl.eof then begin DM.ADOTgl.FieldByName( 結(jié)算).AsFloat:=moneyall+sswu(jgjs(datetostr(now()+ +DBEshangji.Text,datetostr(now()+ +DBExiaji.Text,DBEsdjg.Text)+sswu(jgjs(datetostr(now()+ +DBExiaji.Text,DBExj.Text,DBEmrjg.Text); ok:=ok; break; end; if (strtodatetime(DBExj.Text)=strtodatetime(datetostr(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋼材期貨基礎知識(培訓)
- 2025建筑工程公司勞動合同模板
- 2025年綜合運輸合同標準文本
- 2025年英國留學本科入學合同的重點注意事項
- 私人房屋建筑施工協(xié)議書版
- 工程咨詢與服務合同范本
- 個人知識產(chǎn)權許可合同樣本
- 專利申請轉(zhuǎn)讓合同范本
- (廣東二模)2025年廣東省高三高考模擬測試(二)地理試卷(含答案)
- 《勞動經(jīng)濟學專題研究》課件
- 管理體系文件編號規(guī)則
- 四年級語文教案 囊螢夜讀-公開課比賽一等獎
- 企業(yè)數(shù)字化轉(zhuǎn)型解決方案
- 外研版五年級下冊英語Module 8 Unit 1課件
- 混凝土模板支撐工程專項施工方案(140頁)
- 羽毛球教案36課時
- 第三章煤層氣的儲層壓力及賦存狀態(tài)
- 住宅(小區(qū))智能化系統(tǒng)檢測報告
- ansys教學算例集汽輪機內(nèi)蒸汽平衡態(tài)與非平衡態(tài)仿真分析
- 安全管理機構(gòu)架構(gòu)
- 國際海上人命安全公約(SOLAS)介紹
評論
0/150
提交評論