




已閱讀5頁(yè),還剩59頁(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)介
無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 本文配套程序下載地址 : 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ()-大學(xué)生畢業(yè)設(shè)計(jì)站 ,免費(fèi)畢業(yè)設(shè)計(jì)論文 ,無(wú)憂無(wú)慮畢設(shè)網(wǎng) 大學(xué)生畢業(yè)設(shè)計(jì) ,出售各類畢業(yè)設(shè)計(jì)源碼 ,論文 ,程序源碼 ,網(wǎng)站源碼 ,免費(fèi)視頻教程 ,我們將竭誠(chéng)為您服務(wù)! 畢業(yè)設(shè)計(jì) 院系 _ 專業(yè) _ 班級(jí) _ 姓名 _ 日期 年 月 日 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 中文摘要 通用網(wǎng)吧管理系統(tǒng) 為網(wǎng)吧網(wǎng)管員管理網(wǎng)吧的日常經(jīng)營(yíng)提供方便的管理平臺(tái) .通過(guò)本系統(tǒng) 網(wǎng)管可以便捷的操作上機(jī) ,換機(jī) ,遠(yuǎn)程關(guān)機(jī) ,遠(yuǎn)程重啟 ,會(huì)員管理 ,結(jié)帳等一系列網(wǎng)吧日常經(jīng)營(yíng)事項(xiàng) .其開(kāi)發(fā)內(nèi)容主要包括后臺(tái)數(shù)據(jù)庫(kù)的建立和維護(hù)以及前端應(yīng)用程序的開(kāi)發(fā)兩個(gè)方面。利用 DELPHI 6.0 軟件及其提供的各種面向?qū)ο蟮拈_(kāi)發(fā)工具,建立完整性強(qiáng)、安全性好的數(shù)據(jù)庫(kù),開(kāi)發(fā)出功能完備,易使用的應(yīng)用程序。經(jīng)過(guò)調(diào)試、編譯與實(shí)現(xiàn),該程序 界面友好、程序設(shè)計(jì)風(fēng)格樸素,使用起來(lái)美觀大方、方便易用。尤其是系統(tǒng)的“遠(yuǎn)程控制模塊”的功能極大的減輕工作人員的工作量,并以快速、準(zhǔn)確等優(yōu)點(diǎn)取代人工操作, 提高了網(wǎng)吧管理工作效率。 關(guān)鍵詞 : DELPHI 6.0 信息管理系統(tǒng) 數(shù)據(jù)庫(kù) 模塊 網(wǎng)吧管理 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: Overall management of Internet cafes management system for Internet cafes facilitate the daily operation and management of Internet cafes management platform. Through the system administrator can convenient operational aircraft, replacement, long distance communications, remote start, Member management, Internet cafes closed, and a series of daily business matters. its development mainly to the establishment and maintenance of databases including background and the development of two front-end applications. Delphi 6.0 and the use of object-oriented software development tools, the establishment of strong integrity, good safety database developed functions, easy to use applications. After debugging, Translation and the realization that the process friendly interface, simple programming style, using up aesthetic generous, convenient user-friendly. In particular system remote control module function greatly reduce the workload of staff, and to the rapid, accurate, and other advantages replace manually operated, and enhanced Internet cafes management efficiency. Keyword : Delphi 6.0 Information Management System database 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: management modules Internet cafes 引 言 1 1 Delphi 語(yǔ)言概述 2 1.1 Delphi 簡(jiǎn)介 2 1.2 數(shù)據(jù)庫(kù)系統(tǒng)簡(jiǎn)介 2 1.3 本應(yīng)用 軟件的基本介紹 3 2 本應(yīng)用程序的構(gòu)成和開(kāi)發(fā)步驟 4 2.1 可行性研究 4 2.1.1 經(jīng)濟(jì)可行性 4 2.1.2 時(shí)間可行性 4 2.1.3 技術(shù)可行性 4 2.1.4 社會(huì)可行性 5 2.2 數(shù)據(jù)庫(kù)的建立和連接 5 2.3 系統(tǒng)的總體設(shè)計(jì) 5 2.4 系統(tǒng)的詳細(xì)設(shè)計(jì) 7 3 本程序的技術(shù)實(shí)現(xiàn)及具體功能 13 3.1 主界面與程序設(shè)計(jì)實(shí)現(xiàn) 13 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 3.2 會(huì)員管理界面與代碼設(shè)計(jì)實(shí)現(xiàn) 13 3.3 結(jié)帳界面與代碼設(shè)計(jì)實(shí)現(xiàn) 14, 3.4 上機(jī)換機(jī)管理界面與代碼設(shè)計(jì) 15 3.5 系統(tǒng)設(shè)置界面設(shè)計(jì)與代碼設(shè)計(jì) 16 結(jié) 論 21 致 謝 22 參 考 文 獻(xiàn) 23 引 言 隨著經(jīng)濟(jì)的發(fā)展,社會(huì)的進(jìn)步,計(jì)算機(jī)越來(lái)越深入到我們?nèi)粘5墓ぷ鲗W(xué)習(xí)及生活中,成為我們?nèi)粘I钪胁豢扇鄙俚妮o助工具。 隨著科學(xué)技術(shù)的不斷提高 ,計(jì)算機(jī)科學(xué)日漸成熟 ,其強(qiáng)大的功能已為人們深刻認(rèn)識(shí) ,它已進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用。 它已經(jīng)深入到日常工作和生活的方方面面,比如文字處理、信息無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 管理、輔助設(shè)計(jì)、圖形圖像處理、教育培訓(xùn)以及游戲娛樂(lè)等。各行各業(yè)的人們無(wú)須經(jīng)過(guò)特別的訓(xùn)練就能夠使用電 腦完成許許多多復(fù)雜的工作。然而,雖然現(xiàn)在世界上已經(jīng)充滿了多如牛毛的各種軟件,但它們依然不能滿足用戶的各種特殊需要,人們還不得不開(kāi)發(fā)適合自己特殊需求的軟件。以前開(kāi)發(fā) Windows 應(yīng)用軟件是專業(yè)人員的工作,需要掌握許多專業(yè)知識(shí)和經(jīng)過(guò)特殊的培訓(xùn)才能勝任。現(xiàn)在不同了,即使你沒(méi)有接受過(guò)嚴(yán)格的程序設(shè)計(jì)訓(xùn)練,使用 Delphi 編程語(yǔ)言 也一樣能夠開(kāi)發(fā)出功能強(qiáng)大、適合自己特殊需求的應(yīng)用程序了。 Delphi 編程語(yǔ)言 繼承了其他語(yǔ)言易學(xué)易用的特點(diǎn),特別適合于初學(xué)者學(xué)習(xí)Windows 系統(tǒng)編程。 網(wǎng)吧管理系統(tǒng)用計(jì)算機(jī)軟件系統(tǒng)管理 網(wǎng)吧日常經(jīng)營(yíng)的一種計(jì)算機(jī)應(yīng)用技術(shù)的創(chuàng)新 ,在網(wǎng)吧管理系統(tǒng)還未普及之前網(wǎng)吧管理都是由工作人員人工記時(shí) ,結(jié)算的方式來(lái)操作的 .現(xiàn)在一般的網(wǎng)吧管理都采用計(jì)算機(jī)智能化管理 ,采用計(jì)算機(jī)作為工具的實(shí)用的計(jì)算機(jī)網(wǎng)絡(luò)化管理程序來(lái)幫助前臺(tái)管理員進(jìn)行更有效的網(wǎng)吧管理工作。網(wǎng)吧管理系統(tǒng) 是典型的信息管理系統(tǒng) (MIS),其開(kāi)發(fā)主要包括后臺(tái)數(shù)據(jù)庫(kù)的建立和維護(hù)以及前端應(yīng)用程序的開(kāi)發(fā)兩個(gè)方面。對(duì)于前者要求建立起數(shù)據(jù)一致性和完整性強(qiáng)、數(shù)據(jù)安全性好的庫(kù)。而對(duì)于后者則要求應(yīng)用程序功能完備 ,易使用等特點(diǎn)。 經(jīng)過(guò)分析 ,我們使用 Delphi編程 語(yǔ)言 開(kāi)發(fā)工具 ,利用其提供的各種面向?qū)ο蟮拈_(kāi)發(fā)工具 ,尤其是數(shù)據(jù)窗口這一能方便而簡(jiǎn)潔操縱數(shù)據(jù)庫(kù)的智能化對(duì)象 ,首先在短時(shí)間內(nèi)建立系統(tǒng)應(yīng)用原型 ,然后 ,對(duì)初始無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 原型系統(tǒng)進(jìn)行需求迭代 ,不斷修正和改進(jìn) ,直到形成用戶滿意的可行系統(tǒng)。 因?yàn)楸救四芰τ邢?,加上時(shí)間緊迫,所以設(shè)計(jì)出來(lái)的本系統(tǒng)可能功能比較簡(jiǎn)單,另外本系統(tǒng)是單機(jī)版,不能實(shí)現(xiàn)網(wǎng)絡(luò)互聯(lián)操作 ,這些都有待于我在以后的工作學(xué)習(xí)中進(jìn)一步改進(jìn)。 1.1 Delphi 簡(jiǎn)介 1.1 Delphi 簡(jiǎn)介 Delphi是 Inprise公司出品的一個(gè)優(yōu) 秀 的可視化程序開(kāi)發(fā)工具軟件,它短小精悍 ,但功能卻可以與龐大的 visual c+媲美。它易學(xué)易用,如同 VB,因而被稱為“第四代編程語(yǔ)言”。 從 1995 年推出 Delphi1.0 至今已經(jīng)經(jīng)歷了 7 個(gè)版本,Delphi7.0 運(yùn)行在 win9x 或 winme , win2000, winxp,windowsNT 等操作系統(tǒng)下,是一個(gè) 32 位的應(yīng)用程序開(kāi)發(fā)工具。這里把“ VB”比作是傻瓜相機(jī), Delphi 是帶有自動(dòng)功能的專業(yè)相機(jī)。前些年,軟件界流行一句話叫“真正的程序員用 VC,聰明的程序員用 Delphi”。也有的把 Delphi 稱作 VB殺手。 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 1.2 數(shù)據(jù)庫(kù)系統(tǒng)簡(jiǎn)介 數(shù) 據(jù)庫(kù)系統(tǒng)是一個(gè)實(shí)際可運(yùn)行的存儲(chǔ)、維護(hù)和應(yīng)用系統(tǒng)提供數(shù)據(jù)的軟件系統(tǒng),是存儲(chǔ)介質(zhì)、處理對(duì)象和管理系統(tǒng)的集合體。它通常由軟件、數(shù)據(jù)庫(kù)和數(shù)據(jù)管理員組成。其軟件主要包括操作系統(tǒng)、各種宿主語(yǔ)言,實(shí)用程序以及數(shù)據(jù)庫(kù)管理系統(tǒng)。數(shù)據(jù)庫(kù)是依照某種數(shù)據(jù)模型組織起來(lái)并存放二級(jí)存儲(chǔ)器中的數(shù)據(jù)集合。這些數(shù)據(jù)為多個(gè)應(yīng)用服務(wù),獨(dú)立于具體的應(yīng)用程序。數(shù)據(jù)庫(kù)由數(shù)據(jù)庫(kù)管理系統(tǒng)統(tǒng)一管理,數(shù)據(jù)的插入、修改和檢索均要通過(guò)數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行。數(shù)據(jù)庫(kù)管理系統(tǒng)是一種系統(tǒng)軟件,它的主要功能是維護(hù)數(shù)據(jù)庫(kù)并有效地訪問(wèn)數(shù)據(jù)庫(kù)中任意部分?jǐn)?shù)據(jù)。對(duì)數(shù)據(jù)庫(kù)的維護(hù)包括保持?jǐn)?shù) 據(jù)的完整性、一致性和安全性。數(shù)據(jù)管理員負(fù)責(zé)創(chuàng)建、監(jiān)控和維護(hù)整個(gè)數(shù)據(jù)庫(kù),使數(shù)據(jù)能被任何有權(quán)使用的人有效使用。數(shù)據(jù)庫(kù)管理員一般是由業(yè)務(wù)水平較高、資歷較深的人員擔(dān)任。 數(shù)據(jù)庫(kù)系統(tǒng)的個(gè)體含義是指一個(gè)具體的數(shù)據(jù)庫(kù)管理系統(tǒng)軟件和用它建立起來(lái)的數(shù)據(jù)庫(kù);它的學(xué)科含義是指研究、開(kāi)發(fā)、建立、維護(hù)和應(yīng)用數(shù)據(jù)庫(kù)系統(tǒng)所涉及的理論、方法、技術(shù)所構(gòu)成的學(xué)科。在這一含義下,數(shù)據(jù)庫(kù)系統(tǒng)是軟件研究領(lǐng)域的一個(gè)重要分支,常稱為數(shù)據(jù)庫(kù)領(lǐng)域。 數(shù)據(jù)庫(kù)研究跨越于計(jì)算機(jī)應(yīng)用、系統(tǒng)軟件和理論三個(gè)領(lǐng)無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 域,其中應(yīng)用促進(jìn)新系統(tǒng)的研制開(kāi)發(fā),新系統(tǒng)帶來(lái)新的理論研究,而理論研究又對(duì)前兩個(gè)領(lǐng)域起著指導(dǎo)作用。數(shù)據(jù)庫(kù)系統(tǒng)的出現(xiàn)是計(jì)算機(jī)應(yīng)用的一個(gè)里程碑,它使得計(jì)算機(jī)應(yīng)用從以科學(xué)計(jì)算為主轉(zhuǎn)向以數(shù)據(jù)處理為主,并從而使計(jì)算機(jī)得以在各行各業(yè)乃至家庭普遍使用。在它之前的文件系統(tǒng)雖然也能處理持久數(shù)據(jù),但是文件系統(tǒng)不提供對(duì)任意部分?jǐn)?shù)據(jù)的快速訪問(wèn),而這對(duì)數(shù)據(jù)量不斷增大的應(yīng)用來(lái)說(shuō)是至關(guān)重要的。為了實(shí)現(xiàn)對(duì)任意部分?jǐn)?shù)據(jù)的快速訪問(wèn),就要研究許多優(yōu)化技術(shù)。這些優(yōu)化技術(shù)往往很復(fù)雜,是普通用戶難以實(shí)現(xiàn)的,所以就由系統(tǒng)軟件(數(shù)據(jù)庫(kù)管理系統(tǒng))來(lái)完成,而提供給用戶的是簡(jiǎn)單易用的數(shù)據(jù)庫(kù)語(yǔ)言。由于對(duì)數(shù)據(jù)庫(kù)的操作 都由數(shù)據(jù)庫(kù)管理系統(tǒng)完成,所以數(shù)據(jù)庫(kù)就可以獨(dú)立于具體的應(yīng)用程序而存在,從而數(shù)據(jù)庫(kù)又可以為多個(gè)用戶所共享。因此,數(shù)據(jù)的獨(dú)立性和共享性是數(shù)據(jù)庫(kù)系統(tǒng)的重要特征。數(shù)據(jù)共享節(jié)省了大量人力物力,為數(shù)據(jù)庫(kù)系統(tǒng)的廣泛應(yīng)用奠定了基礎(chǔ)。數(shù)據(jù)庫(kù)系統(tǒng)的出現(xiàn)使得普通用戶能夠方便地將日常數(shù)據(jù)存入計(jì)算機(jī)并在需要的時(shí)候快速訪問(wèn)它們,從而使的計(jì)算機(jī)走出科研機(jī)構(gòu)進(jìn)入各行各業(yè)、進(jìn)入家庭。 1.3 本應(yīng)用軟件的基本介紹 本應(yīng)用軟件先是打開(kāi)一個(gè)啟動(dòng)窗口,就可以進(jìn)入應(yīng)用程序的主窗口了。主界面是一個(gè)圖型界面窗口,整個(gè)平臺(tái)顯示無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 采用人性化方式,可以非常方 便的數(shù)據(jù)庫(kù)、會(huì)員管理、數(shù)據(jù)分析 ,收費(fèi)結(jié)帳等基本信息,管理日常經(jīng)營(yíng)的基本情況,通過(guò)各種條件查詢出網(wǎng)吧每臺(tái)機(jī)器的基本信息,以及打印出查詢出的基本信息,總之一切網(wǎng)吧基本信息都會(huì)顯示在系統(tǒng)平臺(tái)上,大大提高了管理人員的工作效率。 2 本應(yīng)用程序的構(gòu)成和開(kāi)發(fā)步驟 下面從軟件工程的角度介紹本程序的基本開(kāi)發(fā)步驟。Delphi 應(yīng)用程序一般包含以下三個(gè)基本部分: 應(yīng)用程序運(yùn)行的接口:負(fù)責(zé)系統(tǒng)整體環(huán)境的設(shè)置,運(yùn)行狀態(tài)的監(jiān)視,應(yīng)用程序的啟動(dòng)等。 應(yīng)用程序的主體:主要完成用戶的業(yè)務(wù)邏輯功能,如上機(jī) ,換機(jī)操作 ,數(shù)據(jù) 庫(kù)備份 ,遠(yuǎn)程控制 ,用戶管理等信息 . 應(yīng)用程序的輔助部分:協(xié)助程序主體完成的一些工作。 下面從軟件工程的角度描述本程序的開(kāi)發(fā)生命周期,開(kāi)發(fā)過(guò)程和組織過(guò)程。 2.1 可行性研究 任何一個(gè)系統(tǒng)或一項(xiàng)工程,在建立之前,必須首選進(jìn)行可行性分析,可行性分析包括兩層含義,一是可能性,二是必要性??赡苄灾搁_(kāi)發(fā)信息系統(tǒng)的條件是否具備,必要性是指客觀上是否真正需要,通過(guò)可行性研究,可避免盲目投資,減少政治性要的損失。下面從四方面來(lái)討論: 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 2.1.1 經(jīng)濟(jì)可行性 主要是只指算一個(gè)新的系統(tǒng)開(kāi)發(fā)所需要的投資費(fèi)用和運(yùn)算費(fèi)用,并與估 計(jì)的新系統(tǒng)收益進(jìn)行比較,看是否有利。本系統(tǒng)所需的軟硬件成本比較低,投資小,具有一定的通過(guò)性,因此 ,在經(jīng)濟(jì)上是可行的。 2.1.2 時(shí)間可行性 主要包括系統(tǒng)在目前環(huán)境下能否正常運(yùn)行,運(yùn)行后所引起的各方面,以及這些變化對(duì)社會(huì)或人的因素所產(chǎn)生的影響。本系統(tǒng)對(duì)人事的管理比較全面,可長(zhǎng)期使用。 2.1.3 技術(shù)可行性 利用現(xiàn)有的設(shè)備,軟件及技術(shù)人員,新系統(tǒng)的目標(biāo)能否達(dá)到,這也是可行性研究中需要考慮的一個(gè)問(wèn)題。關(guān)系型數(shù)據(jù) 庫(kù)的高速發(fā)展使管理信息系統(tǒng)具備了良好的開(kāi)發(fā)環(huán)境。本系統(tǒng)使用的 Delphi 普及性好,操作簡(jiǎn)單, 用戶可以很快掌握使用方法,因此,在技術(shù)上是完全可行的。 2.1.4 社會(huì)可行性 人類社會(huì)文明的發(fā)展已進(jìn)入信息化的高速發(fā)展時(shí)期,傳統(tǒng)的手工方式支持下的管理模式,已經(jīng)不能滿足各方面的需要。開(kāi)發(fā)本系統(tǒng)的目標(biāo)不僅是提高工作效率,減輕勞動(dòng)強(qiáng)度,而且減少出錯(cuò)率,具有很好的社會(huì)意義。 2.2 數(shù)據(jù)庫(kù)的建立和連接 這個(gè)程序采用的數(shù)據(jù)庫(kù)是 Microsoft Access2000, Delphi作為數(shù)據(jù)庫(kù)的前臺(tái)開(kāi)發(fā)工具,必須與后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行連接,無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 這樣才能控制和進(jìn)行操作數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)的連接方式有兩種, ODBC 和 ADO。 ODBC 是數(shù)據(jù)庫(kù)的通用接口,其缺點(diǎn)是效率低;專用接口調(diào)用直接速度快,但是通用性差,如果用 ODBC 連接數(shù)據(jù)庫(kù)一般要兩個(gè)步驟: 1.要?jiǎng)?chuàng)建數(shù)據(jù)源; 2.創(chuàng)建描述文件。數(shù)據(jù)庫(kù)的建立則時(shí)在 access2000 中建立的,在這里你可以設(shè)置數(shù)據(jù)庫(kù)的密碼,對(duì)數(shù)據(jù)庫(kù)進(jìn)行保護(hù)。在創(chuàng)建數(shù)據(jù)源時(shí)可以通過(guò) BDE administrator 進(jìn)行創(chuàng)建,也可以通過(guò)系統(tǒng)控制面板中的 ODBC 數(shù)據(jù)源進(jìn)行建立。而描述文件則可以在 Delphi 的主程序中用 Database Profile 中進(jìn)行建立,之后進(jìn)行數(shù)據(jù)庫(kù)的連接。接下來(lái)的工作是建表。同樣建表的過(guò)程也不是 唯一的,但是最終實(shí)現(xiàn)的結(jié)果是唯一的。你可以通過(guò) Access 進(jìn)行建表,也可以通過(guò)在 Visual Basic 主程序中建表,也可以通過(guò)powerdesigner 進(jìn)行可視化的建立,不過(guò)用這種方法,在導(dǎo)入的時(shí)候要把數(shù)據(jù)庫(kù)要先斷開(kāi),否則數(shù)據(jù)庫(kù)的數(shù)據(jù)容易丟失。建表的過(guò)程注意規(guī)范化命名規(guī)則,如表的字段名等等。同時(shí)也要注意表的字段長(zhǎng)度和可否為空。因?yàn)橐院笠O(shè)計(jì)到主鍵,外鍵的問(wèn)題。如果字段名不同,同一字段長(zhǎng)度不同則主鍵和外鍵將會(huì)連接不上??梢?jiàn)建表時(shí)應(yīng)做好全局的打算。我在程序開(kāi)發(fā)的初期,同樣犯了這個(gè)錯(cuò)誤,導(dǎo)致數(shù)據(jù)庫(kù)出錯(cuò),有時(shí) 還要向表中新加入字段。導(dǎo)致數(shù)據(jù)窗口不好用的連鎖反映。 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 2.3 系統(tǒng)的總體設(shè)計(jì) 這個(gè)管理系統(tǒng)從 4 月 1 日開(kāi)始著手設(shè)計(jì)開(kāi)發(fā) ,經(jīng)過(guò)一段時(shí)間的分析,并根據(jù)對(duì)網(wǎng)吧管理的具體要求及需要本軟件實(shí)現(xiàn)的功能,將本軟件分為 5 個(gè)大的模塊,分別是:第一部分:上機(jī)換機(jī)操作 ; 第二部分:遠(yuǎn)程控制 ; 第三部分:會(huì)員管理; 第四部分:參數(shù)設(shè)置。 程序流程圖如下: 主界面 上機(jī)換機(jī)操作 遠(yuǎn)程控制 會(huì)員管理 參數(shù)設(shè)置 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 2.4 系統(tǒng)的詳細(xì)設(shè)計(jì) 進(jìn)入 Access 后要做的第一件事就是建立一個(gè)數(shù)據(jù)庫(kù)。Access 提供了 6 種用構(gòu)造數(shù)據(jù)庫(kù)系 統(tǒng)的對(duì)象,根據(jù)本課題的需要,在這里選擇一個(gè)空的數(shù)據(jù)庫(kù),命名 建立了一個(gè)數(shù)據(jù)庫(kù)名稱為 “ BAR” , 網(wǎng)吧管理系統(tǒng)。 并在此數(shù)據(jù)庫(kù)下創(chuàng)建了 五個(gè)表,用于存放原始數(shù)據(jù)。它只是存放數(shù)據(jù),對(duì)其中數(shù)據(jù)的修改要通過(guò)對(duì)應(yīng)的窗體來(lái)完成。 創(chuàng)建各表的具體結(jié)構(gòu)如下 : 1. 會(huì)員管理信息表 : 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 2.計(jì)費(fèi)信息表 3. 每日結(jié)算信息表 : 4. 商品清單信息表 5. 商品銷售信息表 : 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 3 本程序的技術(shù)實(shí)現(xiàn)及具體功能 3.1 主界面與程序設(shè)計(jì)實(shí)現(xiàn) 代碼設(shè)計(jì) : unit MainFrm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ToolWin, Buttons, Menus, Grids, DBGridEh, ExtCtrls, StdCtrls, user, ActnList, ImgList, Registry, DBCtrls, DateUtils, Variants; type TTimeSect = record Index: Integer; BeginTime: TDateTime; EndTime: TDateTime; Length: TDateTime; NetMoney: Double; 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: TongXiao: Boolean; end; TSectMoneyAndTime = record Money: Double; Time: Double; end; TInSectState = (ssAllIn, ssTwoPortIn, ssBeginIn, ssEndIn, ssAllOut, ssInclude); TFjResult = (frSp, frNet, frAll); TTimeSectArray = array1.5 of TTimeSect; TEachSectMoney = array1.5 of Double; /*以上為自定義類型 * TfrmMain = class(TForm) mmMain: TMainMenu; N1: TMenuItem; N2: TMenuItem; N4: TMenuItem; StatusBar1: TStatusBar; CoolBar1: TCoolBar; ToolBar1: TToolBar; ActionList1: TActionList; actBeginComputer: TAction; actEndComputer: TAction; N5: TMenuItem; ImageList1: TImageList; actConfigID: TAction; N7: TMenuItem; N8: TMenuItem; N9: TMenuItem; N6: TMenuItem; N10: TMenuItem; N3: TMenuItem; N11: TMenuItem; N12: TMenuItem; N13: TMenuItem; N14: TMenuItem; N15: TMenuItem; N16: TMenuItem; N17: TMenuItem; N18: TMenuItem; N19: TMenuItem; N20: TMenuItem; N24: TMenuItem; N25: TMenuItem; 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: N26: TMenuItem; N27: TMenuItem; N37: TMenuItem; N38: TMenuItem; N39: TMenuItem; N41: TMenuItem; ToolButton1: TToolButton; ToolButton2: TToolButton; ToolButton3: TToolButton; ToolButton4: TToolButton; ToolButton6: TToolButton; N42: TMenuItem; actEditMoney: TAction; actSwapComputer: TAction; ToolButton7: TToolButton; ToolButton8: TToolButton; ToolButton9: TToolButton; N43: TMenuItem; N44: TMenuItem; N45: TMenuItem; N46: TMenuItem; N47: TMenuItem; N48: TMenuItem; N49: TMenuItem; Panel2: TPanel; Panel1: TPanel; pnlInfo: TPanel; Panel4: TPanel; pnlNote: TPanel; Splitter1: TSplitter; Panel6: TPanel; Panel7: TPanel; Panel9: TPanel; Panel8: TPanel; Splitter2: TSplitter; ToolButton5: TToolButton; ToolButton10: TToolButton; ToolButton12: TToolButton; ToolButton11: TToolButton; Timer1: TTimer; N35: TMenuItem; N36: TMenuItem; N40: TMenuItem; N28: TMenuItem; 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: N29: TMenuItem; PopupMenu1: TPopupMenu; N30: TMenuItem; N50: TMenuItem; N51: TMenuItem; N53: TMenuItem; N54: TMenuItem; N55: TMenuItem; actFuJia: TAction; Panel10: TPanel; Memo1: TMemo; N21: TMenuItem; N22: TMenuItem; ToolButton13: TToolButton; actClear: TAction; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; N31: TMenuItem; N23: TMenuItem; procedure actConfigIDExecute(Sender: TObject); procedure actBeginComputerExecute(Sender: TObject); procedure actEndComputerExecute(Sender: TObject); procedure N35Click(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure actEditMoneyExecute(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormResize(Sender: TObject); procedure ShowHyForm(Sender: TObject); procedure ShowSpForm(Sender: TObject); procedure ShowConfigForm(Sender: TObject); procedure Splitter2Moved(Sender: TObject); procedure actFuJiaExecute(Sender: TObject); procedure N21Click(Sender: TObject); procedure actClearExecute(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure actSwapComputerExecute(Sender: TObject); procedure N13Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private Private declarations 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: procedure SetPanel8; procedure OpenNote; function CheckToday(ADate: TDate): Boolean; public Public declarations procedure DelAllComputer; procedure SetComputerNo(No: Integer); procedure EnableControl; procedure BeginComputer(XianShi: TTime; YaJin: Double; BeiZhu: string); overload; procedure BeginComputer(KaHao: string; XianShi: TTime; YaJin: Double; BeiZhu: string); overload; procedure SetTongxiao(var Youhui: TTimeSect; const Tongxiao: TTimeSect); procedure Taxis(var ATimeSect: TTimeSect; var BTimeSect: TTimeSect); / 對(duì)時(shí)段按開(kāi)始時(shí)間進(jìn)行排序,并且將時(shí)段長(zhǎng)度為 0 的放到后面。 procedure TaxisTheTimeSectArray; /對(duì) TheTimeSectArray 實(shí)際執(zhí)行排序。 procedure SetLength; /設(shè)置時(shí)段長(zhǎng)度。 procedure EndComputer; /procedure TxTrim(var Youhui: TTimeSect; const Tongxiao: TTimeSect); procedure DecodeMoney(ABeginTime, AEenTime: TDateTime; var APt, AYh, ATx: Double; IsTx: Boolean); procedure MyRound(var Money: Double); /幾舍幾入。 procedure GetFjMoney(const ComputerID: Integer; var SpMoney, NetMoney: Double); procedure PutIntoAccount(ANetMoney, AFjMoney: Double; ADate: TDate); procedure ClearRecord; procedure SetHyCardMoney(const ID: string; Money: Double); procedure SetInfoPanel; function GetHyCardMoney(const ID: string): Double; function EncodeMoney(APt, AYh, ATx: Double; IsHy: Boolean): Double; function DateTimeToChinesStr(ADateTime: TDateTime): string; function GetTimes(ABeginTime, AEndTime: TDateTime): TDateTime; function GetMoney(ATimes, AFeilu: Double): Double; function InSect(ATime, ASectBegin, ASectEnd: TDateTime): Boolean; /針對(duì) 24 小時(shí)內(nèi)的情況。 function InSectState(ABeginTime, AEndTime: TDateTime; ATimeSect: 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: TTimeSect): TInSectState; function InSectTimes(ABeginTime, ATimeLength: Double; ATimeSect: TTimeSect): TDateTime; function EachSectMoney(ABeginTime, AEndTime: TDateTime): TEachSectMoney; function InTongxiao(ATime: TDateTime; ATongxiaoSect: TTimeSect): Boolean; function BuildTimeSect(ATongXiao: Boolean): TTimeSectArray; function JiFei(AStartTime, AEndTime: TDateTime; AFeilu, AZDSF, ARound: Double): Double; function IsHuiyan(ID: string): Boolean; overload; function IsHuiyan(ID: string; PassWord: string): Boolean; overload; function NetMoney(BeginTime, EndTime: TDateTime; TongXiao: Boolean): Double; overload; function NetMoney(BeginTime, EndTime: TDateTime; TongXiao: Boolean; UserID: string): Double; overload; end; var frmMain: TfrmMain; TheTimeSectArray: TTimeSectArray; implementation uses MainDM, HyFrm, Bar, DB, AddHyFrm, StartComputerFrm, FuJiaFrm, SpFrm, ConfigFrm, JieZhangFrm, ADODB, MrjsFrm, SpNumFrm, AboutFrm; $R *.DFM TfrmMain procedure TfrmMain.DelAllComputer; begin with dmMain.tblMain do begin while not Eof do begin Delete; end; end; 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: end; procedure TfrmMain.actConfigIDExecute(Sender: TObject); begin with dmMain.qryForAll do begin Close; SQL.Clear; SQL.Add(SELECT 上機(jī)時(shí)間 FROM 計(jì)費(fèi) WHERE 上機(jī) 時(shí)間NULL); Open; end; /if MessageDlg(此操作將清空當(dāng)前所有的上機(jī)記錄,要執(zhí)行此操作嗎? / , mtWarning, mbYes, mbNo, 0) = mrYes then if dmMain.qryForAll.Eof then begin frmSpNum := TfrmSpNum.Create(Self); try frmSpNum.Caption := 設(shè)置電腦數(shù)目 ; frmSpNum.SpinEdit1.MaxValue := 999; if frmSpNum.ShowModal = mrOk then begin Screen.Cursor := crHourGlass; dmMain.tblMain.DisableControls; DelAllComputer; SetComputerNo(frmSpNum.SpinEdit1.Value); dmMain.tblMain.EnableControls; dmMain.tblMain.Refresh; end; finally Screen.Cursor := crDefault; frmSpNum.Free; end; end else ShowMessage(當(dāng)前有用戶正在上機(jī),請(qǐng)清除后再設(shè)置! ); end; procedure TfrmMain.SetComputerNo(No: Integer); var K: Integer; 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: begin with dmMain.tblMain do begin begin for K := 1 to No do begin Append; FieldByName(機(jī)號(hào) ).Value := K; end; end; Post; end; end; procedure TfrmMain.actBeginComputerExecute(Sender: TObject); begin frmStartComputer := TfrmStartComputer.Create(Self); try if frmStartComputer.ShowModal = mrOK then frmStartComputer.StartComputer; finally frmStartComputer.Free; end; end; procedure TfrmMain.actEndComputerExecute(Sender: TObject); const RMB = ¥ ; var BeginDateTime, EndDateTime, AllDateTime: TDateTime; PtMoney, YhMoney, TxMoney, AllNetMoney: Double; FjSpMoney, FjNetMoney, FjAllMoney: Double; YjMoney 壓金 , YsMoney 應(yīng)收 : Double; HyCard: string; isTx: Boolean; isHy: Boolean; ComputerID: Integer; begin dmMain.tblMain.Edit; dmMain.tblMain.FieldByName(下機(jī)時(shí)間 ).AsDateTime := Now; BeginDateTime := dmMain.tblMain.FieldByName( 上 機(jī) 時(shí) 間).AsDateTime; 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: EndDateTime := dmMain.tblMain.FieldByName(下機(jī)時(shí)間 ).AsDateTime; YjMoney := dmMain.tblMain.FieldByName(壓金 ).AsFloat; AllDateTime := EndDateTime - BeginDateTime; isTx := dmMain.tblMain.FieldByName(通宵 ).AsBoolean; HyCard := dmMain.tblMain.FieldByName(卡號(hào) ).AsString; if HyCard then isHy := True else isHy := False; ComputerID := dmMain.tblMain.FieldByName(機(jī)號(hào) ).AsInteger; DecodeMoney(BeginDateTime, EndDateTime, PtMoney, YhMoney, TxMoney, isTx); AllNetMoney := EncodeMoney(PtMoney, YhMoney, TxMoney, isHy); /FjMoney:=GetFjMoney(ComputerID); MyRound(AllNetMoney); GetFjMoney(ComputerID, FjSpMoney, FjNetMoney); FjAllMoney := FjSpMoney + FjNetMoney; YsMoney := AllNetMoney + FjAllMoney - YjMoney; /對(duì) frmJz 初始化。 frmJz := TfrmJz.Create(Self); /frmJz.lblBegin.Caption := DateToStr(BeginDateTime); /frmJz.lblEnd.Caption := DateToStr(EndDateTime); frmJz.lblTimeAll.Caption := DateTimeToChinesStr(AllDateTime); frmJz.lblNetMoney.Caption := RMB + FormatFloat(0.00, AllNetMoney); frmJz.lblFjMoney.Caption := RMB + FormatFloat(0.00, FjAllMoney); frmJz.lblYsMoney.Caption := RMB + FormatFloat(0.00, YsMoney); frmJz.lblCardMoney.Caption := RMB + FormatFloat(0.00, GetHyCardMoney(HyCard); if IsHy then frmJz.CheckBox1.Enabled := False; if frmJz.ShowModal = mrOk then begin dmMain.tblMain.FieldByName(網(wǎng)費(fèi) ).AsCurrency := AllNetMoney; dmMain.tblMain.Post; if (frmJz.CheckBox1.Checked = true) and (frmJz.ComboBox1.Text ) then begin with dmMain.tblSpBuy do begin Append; FieldByName(機(jī)號(hào) ).Value := StrToInt(frmJz.ComboBox1.Text); FieldByName(品名 ).Value := IntToStr(ComputerID) + 號(hào)機(jī)費(fèi)用 ; 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: FieldByName(售價(jià) ).Value := AllNetMoney + FjAllMoney; FieldByName(數(shù)量 ).Value := 1; FieldByName(類型 ).Value := False; Post; end; end; if AutoClear then ClearRecord; end else dmMain.tblMain.Cancel; end; procedure TfrmMain.EnableControl; begin end; procedure TfrmMain.N35Click(Sender: TObject); begin frmHy.ShowModal; end; procedure TfrmMain.ToolButton1Click(Sender: TObject); begin frmHy.ShowModal end; function TfrmMain.JiFei(AStartTime, AEndTime: TDateTime; AFeilu, AZDSF, ARound: Double): Double; var AllDate: TDateTime; AllHour: TDateTime; ShouFei: Double; begin AllDate := AEndTime - AStartTime; AllHour := 24 * AllDate; ShouFei := FeiLu; end; procedure TfrmMain.actEditMoneyExecute(Sender: TObject); begin frmStartComputer := TfrmStartComputer.Create(Self); try frmStartComputer.SetEditModal; 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: if frmStartComputer.ShowModal = mrOK then begin frmStartComputer.EditComputer; end; finally frmStartComputer.Free; end; end; procedure TfrmMain.SetPanel8; begin Panel8.Top := Panel9.Top + 1; Panel8.Height := Panel9.Height - 2; Panel8.Width := Panel9.Width - 2; end; procedure TfrmMain.FormCreate(Sender: TObject); begin SetPanel8; ReadConfig; OpenNote; end; procedure TfrmMain.FormResize(Sender: TObject); begin SetPanel8; end; function TfrmMain.IsHuiyan(ID: string): Boolean; var strSQL: string; begin ID := Trim(ID); strSQL := SELECT 狀態(tài) FROM 會(huì)員 WHERE 卡號(hào) = + + ID + ; with dmMain.qryCheckHy do begin Close; SQL.Clear; SQL.Add(strSQL); Open; end; Result := dmMain.qryCheckHy.Fields0.AsBoolean; if dmMain.qryCheckHy.Eof then Result := False 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: end; function TfrmMain.IsHuiyan(ID, PassWord: string): Boolean; var strSQL: string; begin ID := Trim(ID); strSQL := SELECT 密碼 FROM 會(huì)員 WHERR HH 卡號(hào) = + ID; with dmMain.qryCheckHy do begin Close; SQL.Clear; SQL.Add(strSQL); Open; end; if PassWord = dmMain.qryCheckHy.FieldByName(密碼 ).Value then Result := True else Result := False; end; procedure TfrmMain.BeginComputer(XianShi: TTime; YaJin: Double; BeiZhu: string); begin with dmMain.tblMain do begin Edit; FieldByName(上機(jī)時(shí)間 ).AsDateTime := Now; FieldByName(限時(shí) ).AsDateTime := XianShi; FieldByName(壓金 ).AsFloat := YaJin; FieldByName(備注 ).AsString := BeiZhu; Post; end; end; procedure TfrmMain.BeginComputer(KaHao: string; XianShi: TTime; YaJin: Double; BeiZhu: string); begin with dmMain.tblMain do begin Edit; FieldByName(卡號(hào) ).AsString := KaHao; FieldByName(上機(jī)時(shí)間 ).AsDateTime := Now; 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: FieldByName(限時(shí) ).AsDateTime := XianShi; FieldByName(壓金 ).AsFloat := YaJin; FieldByName(備注 ).AsString := BeiZhu; Post; end; end; procedure TfrmMain.ShowHyForm(Sender: TObject); begin frmHy := TfrmHy.Create(Self); frmHy.ShowModal; end; procedure TfrmMain.ShowSpForm(Sender: TObject); begin frmSp := TfrmSp.Create(Self); frmSp.ShowModal; end; procedure TfrmMain.ShowConfigForm(Sender: TObject); begin frmConfig := TfrmConfig.Create(Self); frmConfig.SetData; frmConfig.ShowModal; end; function TfrmMain.NetMoney(BeginTime, EndTime: TDateTime; TongXiao: Boolean): Double; begin Result := FeiLu * (EndTime - BeginTime); end; function TfrmMain.NetMoney(BeginTime, EndTime: TDateTime; TongXiao: Boolean; UserID: string): Double; begin end; procedure TfrmMain.Splitter2Moved(Sender: TObject); begin SetPanel8; end; 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: function TfrmMain.BuildTimeSect(ATongXiao: Boolean): TTimeSectArray; var I, J: Integer; begin for I := 1 to 5 do begin TheTimeSectArrayI.Index := I; TheTimeSectArrayI.BeginTime := YouHuiI * 2 - 1; TheTimeSectArrayI.EndTime := YouHuiI * 2; TheTimeSectArrayI.NetMoney := YouHui10 + I; TheTimeSectArrayI.TongXiao := False; if I = 5 then /如果是通宵,則對(duì)其進(jìn)行特殊的設(shè)置。 begin TheTimeSectArrayI.TongXiao := True; if not ATongXiao then begin TheTimeSectArrayI.BeginTime := 0; /如果不是通宵上機(jī),則將通宵長(zhǎng)度置為 0 TheTimeSectArrayI.EndTime := 0; end; end; end; SetLength; end; procedure TfrmMain.SetTongxiao(var Youhui: TTimeSect; const Tongxiao: TTimeSect); begin if InTongxiao(Youhui.BeginTime, Tongxiao) and InTongxiao(Youhui.EndTime, Tongxiao) then begin Youhui.BeginTime := 0; Youhui.EndTime := 0; end; /開(kāi)始、結(jié)束時(shí)間都在通宵內(nèi) if InTongxiao(Youhui.BeginTime, Tongxiao) and (not InTongxiao(Youhui.EndTime, Tongxiao) then begin Youhui.BeginTime := Tongxiao.EndTime; end; /只有開(kāi)始時(shí)間在通宵內(nèi) if (not InTongxiao(Youhui.BeginTime, Tongxiao) and InTongxiao(Youhui.EndTime, Tongxiao) then 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: begin Youhui.EndTime := Tongxiao.BeginTime; end; /只有結(jié)束時(shí)間在通宵內(nèi) if (Youhui.BeginTime = Tongxiao.BeginTime) and (Youhui.EndTime = Tongxiao.EndTime) then begin Youhui.BeginTime := 0; Youhui.EndTime := 0; end; /與通宵完全重疊 end; function TfrmMain.InTongxiao(ATime: TDateTime; ATongxiaoSect: TTimeSect): Boolean; var TxBeginTime, TxEndTime: TDateTime; begin Result := False; TxBeginTime := ATongxiaoSect.BeginTime; TxEndTime := ATongxiaoSect.EndTime; if TxBeginTime TxBeginTime) and (ATime TxEndTime then if not (ATime = TxEndTime) and (ATime TheTimeSectArrayI.EndTime then TheTimeSectArrayI.Length := 1 - (TheTimeSectArrayI.BeginTime - TheTimeSectArrayI.EndTime) else TheTimeSectArrayI.Length := TheTimeSectArrayI.EndTime - TheTimeSectArrayI.BeginTime end; /此處不可倒置,否則開(kāi)始、結(jié)束時(shí)間相等時(shí)會(huì)出現(xiàn) Length 為 1的情況。 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: end; procedure TfrmMain.Taxis(var ATimeSect: TTimeSect; var BTimeSect: TTimeSect); var Temp: TTimeSect; begin if (ATimeSect.Length = 0) and (BTimeSect.Length 0) or (ATimeSect.Length 0) and (BTimeSect.Length 0) and (ATimeSect.BeginTime BTimeSect.BeginTime) then begin Temp := ATimeSect; ATimeSect := BTimeSect; BTimeSect := Temp; end; end; procedure TfrmMain.TaxisTheTimeSectArray; var I, J: Integer; begin for I := Low(TheTimeSectArray) to High(TheTimeSectArray) do begin for J := Low(TheTimeSectArray) to High(TheTimeSectArray) - 1 do Taxis(TheTimeSectArrayJ, TheTimeSectArrayJ + 1); end; end; function TfrmMain.EachSectMoney(ABeginTime, AEndTime: TDateTime): TEachSectMoney; var AllLength: Double; BeginTime: TDateTime; /開(kāi)始時(shí)間,不包括日期部分。 TheDays: Integer; TheTimes: Double; begin AllLength := AEndTime - ABeginTime; BeginTime := TimeOf(ABeginTime); TheDays := Trunc(AllLength); TheTimes := AllLength - TheDays; end; function TfrmMain.InSectTimes(ABeginTime, ATimeLength: Double; 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: ATimeSect: TTimeSect): TDateTime; var BeginTime, EndTime, SectBegin, SectEnd: TDateTime; begin BeginTime := ABeginTime; EndTime := TimeOf(ABeginTime + ATimeLength); SectBegin := ATimeSect.BeginTime; SectEnd := ATimeSect.EndTime; case InSectState(BeginTime, EndTime, ATimeSect) of ssAllIn: Result := ATimeLength; ssTwoPortIn: Result := ATimeLength + ATimeSect.Length - 1; ssBeginIn: Result := GetTimes(BeginTime, SectEnd); ssEndIn: Result := GetTimes(SectBegin, EndTime); ssInclude: Result := ATimeSect.Length; ssAllOut: Result := 0; else ShowMessage(錯(cuò)誤! ); end; end; function TfrmMain.InSect(ATime, ASectBegin, ASectEnd: TDateTime): Boolean; begin Result := False; if ASectBegin = ASectBegin) and (ATime ASectEnd then if not (ATime ASectEnd) and (ATime 0 then TxMoney := TheTimeSectArray5.NetMoney; end; /普通時(shí)段的費(fèi)用 PtTime := Times - TxTime - AllYhTime; PtMoney := GetMoney(PtTime, FeiLu); /天數(shù)部分的費(fèi)用。 OneDayYhMoney := 0; /包括通宵。 OneDayYhTime := 0; /包括通宵。 for I := Low(TheTimeSectArray) to High(TheTimeSectArray) do begin if I = 5 then Continue; OneDayYhMoney := OneDayYhMoney + GetMoney(TheTimeSectArrayI.Length, TheTimeSectArrayI.NetMoney); OneDayYhTime := OneDayYhTime + TheTimeSectArrayI.Length; end; OneDayTxMoney := 0; OneDayTxTime := 0; if TongXiao then OneDayTxMoney := TheTimeSectArray5.NetMoney; OneDayTxTime := TheTimeSectArray5.Length; OneDayPtTime := 1 - OneDayYhTime - OneDayTxTime; OneDayPtMoney := GetMoney(OneDayPtTime, FeiLu); OneDayMoney := OneDayYhMoney + OneDayTxMoney + OneDayPtMoney; AllDaysMoney := OneDayMoney * Days; dmMain.tblMain.FieldByName(網(wǎng)費(fèi) ).AsFloat := YhMoney + TxMoney + PtMoney + AllDaysMoney; frmJz.lblTimeAll.Caption := DateTimeToChinesStr(AllDateTime); frmJz.ShowModal; dmMain.tblMain.Post; 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: end; function TfrmMain.InSectState(ABeginTime, AEndTime: TDateTime; ATimeSect: TTimeSect): TInSectState; var SectBegin, SectEnd: TDateTime; begin SectBegin := ATimeSect.BeginTime; SectEnd := ATimeSect.EndTime; if InSect(ABeginTime, SectBegin, SectEnd) and InSect(AEndTime, SectBegin, SectEnd) then if GetTimes(ABeginTime, AEndTime) ATimeSect.Length then Result := ssTwoPortIn else Result := ssAllIn; if InSect(ABeginTime, SectBegin, SectEnd) and not (InSect(AEndTime, SectBegin, SectEnd) then Result := ssBeginIn; if not (InSect(ABeginTime, SectBegin, SectEnd) and InSect(AEndTime, SectBegin, SectEnd) then Result := ssEndIn; if not (InSect(ABeginTime, SectBegin, SectEnd) and not (InSect(AEndTime, SectBegin, SectEnd) then if InSect(SectBegin, ABeginTime, AEndTime) and InSect(SectEnd, ABeginTime, AEndTime) then Result := ssInclude else Result := ssAllOut; end; function TfrmMain.GetTimes(ABeginTime, AEndTime: TDateTime): TDateTime; begin if ABeginTime 0 then TxMoney := TheTimeSectArray5.NetMoney; end; /普通時(shí)段的費(fèi)用 PtTime := Times - TxTime - AllYhTime; PtMoney := GetMoney(PtTime, FeiLu); /天數(shù)部分的費(fèi)用。 OneDayYhMoney := 0; /包括通宵。 OneDayYhTime := 0; /包括通宵。 for I := Low(TheTimeSectArray) to High(TheTimeSectArray) do begin if I = 5 then Continue; OneDayYhMoney := OneDayYhMoney + GetMoney(TheTimeSectArrayI.Length, TheTimeSectArrayI.NetMoney); OneDayYhTime := OneDayYhTime + TheTimeSectArrayI.Length; end; OneDayTxMoney := 0; OneDayTxTime := 0; if TongXiao then OneDayTxMoney := TheTimeSectArray5.NetMoney; OneDayTxTime := TheTimeSectArray5.Length; OneDayPtTime := 1 - OneDayYhTime - OneDayTxTime; OneDayPtMoney := GetMoney(OneDayPtTime, FeiLu); APt := OneDayPtMoney * Days + PtMoney; 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: AYh := OneDayYhMoney * Days + YhMoney; ATx := OneDayTxMoney * Days + TxMoney; end; function TfrmMain.EncodeMoney(APt, AYh, ATx: Double; IsHy: Boolean): Double; var EnablePt, EnableYh, EnableTx: Boolean; theYHL: Double; /優(yōu)惠率 begin if IsHy then begin theYHL := YHL / 100; if EnablePt then APt := APt * theYHL; if EnableYh then AYh := AYh * theYHL; if EnableTx then ATx := ATx * theYHL; end; Result := APt + AYh + ATx; end; procedure TfrmMain.MyRound(var Money: Double); var temp: Double; X: Integer; Y: Double; I: Integer; /幾舍幾入的界限 begin temp := Money / ZXDW; X := Trunc(temp); Y := temp - X; I := YECL + 2; if Y = (I / 10) then Inc(X); Money := ZXDW * X; if Money ZDSF then Money := ZDSF end; procedure TfrmMain.GetFjMoney(const ComputerID: Integer; var SpMoney, NetMoney: Double); begin 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: with dmMain.tblSpBuy do begin DisableControls; First; while not Eof do begin if FieldByName(機(jī)號(hào) ).Value = ComputerID then if FieldByName(類型 ).AsBoolean = true then SpMoney := SpMoney + FieldByName(合計(jì) ).AsFloat else NetMoney := NetMoney + FieldByName(合計(jì) ).AsFloat; Next; end; EnableControls; end; end; procedure TfrmMain.actFuJiaExecute(Sender: TObject); begin frmFuJia := TfrmFuJia.Create(Self); frmFuJia.ShowModal; end; procedure TfrmMain.PutIntoAccount(ANetMoney, AFjMoney: Double; ADate: TDate); begin with dmMain.tblMrjs do begin if CheckToday(ADate) then begin Edit; FieldByName(網(wǎng)費(fèi) ).AsFloat := FieldByName(網(wǎng)費(fèi) ).AsFloat + ANetMoney; FieldByName(商品 ).AsFloat := FieldByName(商品 ).AsFloat + AFjMoney; Post; end else AppendRecord(ADate, ANetMoney, AFjMoney); end; end; function TfrmMain.CheckToday(ADate: TDate): Boolean; begin 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: result := false; with dmMain.tblMrjs do begin First; repeat if Int(FieldByName(日期 ).AsDateTime) ADate then Next else begin result := true; Break; end; until Eof; end; end; procedure TfrmMain.N21Click(Sender: TObject); begin frmMrjs := TfrmMrjs.Create(Self); frmMrjs.ShowModal; end; procedure TfrmMain.actClearExecute(Sender: TObject); var NetMoney: Double; FjSpMoney, FjNetMoney: Double; ComputerID: string; begin ClearRecord; end; procedure TfrmMain.ClearRecord; var ComputerID: Integer; NetMoney: Double; FjSpMoney, FjNetMoney, FjAllMoney: Double; Today: TDate; IsHy: Boolean; CanPut: Boolean; SQLstr: string; HyCard: string; begin ComputerID := dmMain.tblMain.FieldByName(機(jī)號(hào) ).AsInteger; NetMoney := dmMain.tblMain.FieldByName(網(wǎng)費(fèi) ).AsFloat; HyCard := dmMain.tblMain.FieldByName(卡號(hào) ).AsString; GetFjMoney(ComputerID, FjSpMoney, FjNetMoney); 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: case JsByDate of 0: Today := Trunc(dmMain.tblMain.FieldByName( 上機(jī)時(shí)間).AsDateTime); 1: Today := Trunc(dmMain.tblMain.FieldByName( 下機(jī) 時(shí)間).AsDateTime); end; IsHy := dmMain.tblMain.FieldByName(卡號(hào) ).AsString ; CanPut := True; if IsHy and (not AddHyMoney) then CanPut := False; if Today = 0 then CanPut := False; if CanPut then PutIntoAccount(NetMoney, FjSpMoney, Today); if IsHy then SetHyCardMoney(HyCard, NetMoney + FjSpMoney + FjNetMoney); with dmMain.tblMain do begin Edit; SetFields(nil, null, null, null, null, null, nil, null, False, null); Post end; SQLstr := DELETE * FROM 商 品 銷 售 WHERE 機(jī)號(hào) = + IntToStr(ComputerID); dmMain.tblSpBuy.Close; with dmMain.qryForAll do begin Close; SQL.Clear; SQL.Add(SQLstr); ExecSQL; end; dmMain.tblSpBuy.Open; end; function TfrmMain.GetHyCardMoney(const ID: string): Double; var SQLstr: string; begin SQLstr := SELECT 余額 FROM 會(huì)員 WHERE 卡號(hào) = + ID + ; with dmMain.qryForAll do begin close; 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: SQL.Clear; SQL.Add(SQLstr); Open; Result := Fields0.AsFloat; end; end; procedure TfrmMain.SetHyCardMoney(const ID: string; Money: Double); var XfMoney, CardMoney: Double; SQLstr, MoneyStr: string; begin MoneyStr := FloatToStr(Money); SQLstr := UPDATE 會(huì)員 SET 累計(jì)消費(fèi) =累計(jì)消費(fèi) + + MoneyStr + , 余額 =余額 - + MoneyStr + WHERE 卡號(hào) = + ID + ; /ShowMessage(SQLstr); with dmMain.qryForAll do begin Close; SQL.Clear; SQL.Add(SQLstr); ExecSQL; end; dmMain.tblHy.Refresh; end; procedure TfrmMain.SetInfoPanel; const RMB = ¥ ; var BeginTime, EndTime, AllTimes: TDateTime; NetMoney, FjMoney, AllMoney: Double; PtMoney, YhMoney, TxMoney: Double; FjSpMoney, FjNetMoney: Double; IsTx, IsHy: Boolean; S1, S2, S3: string; ComputerID: Integer; label SetLabel; begin S1 := ; S2 := ; S3 := ; BeginTime := dmMain.tblMain.FieldByName(上 機(jī)時(shí)間 ).AsDateTime; ; 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: if BeginTime = 0 then goto SetLabel; if not dmMain.tblSpBuy.Active then goto SetLabel; if dmMain.tblMain.FieldByName(下機(jī)時(shí)間 ).Value = null then EndTime := Now else EndTime := dmMain.tblMain.FieldByName(下機(jī)時(shí)間 ).AsDateTime; IsTx := dmMain.tblMain.FieldByName(通宵 ).AsBoolean; IsHy := dmMain.tblMain.FieldByName(卡號(hào) ).AsString ; ComputerID := dmMain.tblMain.FieldByName(機(jī)號(hào) ).AsInteger; DecodeMoney(BeginTime, EndTime, PtMoney, YhMoney, TxMoney, isTx); NetMoney := EncodeMoney(PtMoney, YhMoney, TxMoney, isHy); MyRound(NetMoney); GetFjMoney(ComputerID, FjSpMoney, FjNetMoney); FjMoney := FjSpMoney + FjNetMoney; AllTimes := EndTime - BeginTime; S1 := DateTimeToChinesStr(AllTimes); S2 := RMB + FormatFloat(0.00, NetMoney); S3 := RMB + FormatFloat(0.00, FjMoney); SetLabel: Label4.Caption := S1; Label5.Caption := S2; Label6.Caption := S3; end; procedure TfrmMain.OpenNote; var S: string; begin GetDir(0, S); S := S + note.txt; if FileExists(note.txt) then Memo1.Lines.LoadFromFile(S); /ShowMessage(S); end; procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction); var S: string; begin GetDir(0, S); S := S + note.txt; 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: Memo1.Lines.SaveToFile(S); end; procedure TfrmMain.actSwapComputerExecute(Sender: TObject); begin frmSpNum := TfrmSpNum.Create(Self); try frmSpNum.Caption := 換機(jī) ; frmSpNum.GroupBox1.Caption := 換到 ; frmSpNum.SpinEdit1.MaxValue := dmMain.tblMain.RecordCount; if frmSpNum.ShowModal = mrOk then begin end finally frmSpNum.Free; end; end; procedure TfrmMain.N13Click(Sender: TObject); begin frmAbout := TfrmAbout.Create(Self); frmAbout.ShowModal; end; procedure TfrmMain.Timer1Timer(Sender: TObject); var SQLstr: string; ThisTime:TDateTime; begin ThisTime:=Now; SQLstr := SELECT 機(jī)號(hào) FROM 計(jì)費(fèi) WHERE (限時(shí) NULL) AND (+FloatToStr(ThisTime)+-上機(jī)時(shí)間 限時(shí) ); with dmMain.qryTime do begin Close; SQL.Clear; SQL.Add(SQLstr); Open; end; end; end. 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 3.2 會(huì)員管理界面與代碼設(shè)計(jì)實(shí)現(xiàn) 代碼設(shè)計(jì) : unit HyFrm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ToolWin, Grids, DBGridEh; type TfrmHy = class(TForm) StatusBar1: TStatusBar; DBGridEh1: TDBGridEh; CoolBar1: TCoolBar; ToolBar1: TToolBar; ToolButton1: TToolButton; ToolButton2: TToolButton; ToolButton3: TToolButton; procedure ShowHyAdd(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private Private declarations 無(wú)憂無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: public Public declarations end; var frmHy: TfrmHy; implementation uses MainDM, MainFr
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 保險(xiǎn)分級(jí)考試試題及答案
- 安全技術(shù)知識(shí)試題及答案
- 安全工程師職業(yè)技能考核試題及答案
- 大學(xué)物理創(chuàng)新性學(xué)習(xí)成果展示試題及答案
- 創(chuàng)業(yè)者需要掌握的扶持政策信息試題及答案
- 入團(tuán)考試題及答案
- 教學(xué)反思與教育改善策略試題及答案
- 建筑施工安全責(zé)任劃分試題及答案
- 大學(xué)物理方法論解析題及答案2025
- 三年級(jí)數(shù)學(xué)計(jì)算題專項(xiàng)練習(xí)匯編及答案
- 2025年導(dǎo)游從業(yè)資格知識(shí)點(diǎn)合輯
- (三診)成都市2022級(jí)高中高三畢業(yè)班第三次診斷性檢物理試卷(含答案)
- 四川省成都市蓉城名校聯(lián)盟2024-2025學(xué)年高一下學(xué)期期中考試英語(yǔ)(含答案)
- 建投國(guó)電準(zhǔn)格爾旗能源有限公司招聘考試真題2024
- 農(nóng)行反洗錢(qián)與制裁合規(guī)知識(shí)競(jìng)賽考試題庫(kù)大全-上下
- 2025年上半年陜西西安閻良區(qū)事業(yè)單位招聘高層次及緊缺特殊專業(yè)人才9人重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解
- 2025年中考數(shù)學(xué)幾何模型綜合訓(xùn)練專題16全等三角形模型之婆羅摩笈多模型解讀與提分精練(教師版)
- 《應(yīng)收款項(xiàng)減值專題》課件
- 農(nóng)藝師常規(guī)知識(shí)培訓(xùn)課件
- 2025-2030年中國(guó)管理咨詢行業(yè)十三五發(fā)展戰(zhàn)略規(guī)劃及投資前景預(yù)測(cè)報(bào)告
- 第8課 良師相伴 亦師亦友(課件)-【中職專用】高一思想政治《心理健康與職業(yè)生涯》
評(píng)論
0/150
提交評(píng)論