版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 摘要</b></p><p> 隨著各高校學生的增多, 實驗室管理的工作變得越來越繁重。采用傳統(tǒng)的人工管理模式,效率低下,不能滿足實際的需求。本文描述的是基于Windows環(huán)境的一個實驗室進程管理系統(tǒng),對一個實驗室進程管理系統(tǒng)的需求進行了分析。本系統(tǒng)的主要功能包括:老師可以實時監(jiān)控學生機系統(tǒng)運行的程序,發(fā)現(xiàn)未被允許的進程進行警告;超過一定的時間則關閉未被允許的
2、進程??梢栽黾雍蛣h除允許運行的程序至許可程序集;從許可程序集中,指定本節(jié)課允許運行的程序;可臨時添加本節(jié)可允許運行的程序(不將其加入許可程序集);增加或修改本節(jié)課允許運行的程序;許可程序集可以保存。系統(tǒng)的設計與開發(fā)采用服務器/客戶機的系統(tǒng)結構模式,使用Delphi開發(fā)工具開發(fā),應用SQL Server2000數(shù)據(jù)庫管理系統(tǒng),通過ADO連接數(shù)據(jù)庫。</p><p><b> 第一章 引言3</
3、b></p><p><b> 1.1課題背景4</b></p><p> 1.2 語言工具4</p><p><b> 1.3主要內容4</b></p><p> 第二章 相關技術介紹5</p><p> 2.1 delphi5</p>
4、<p> 2.1.1 Delphi特點5</p><p> 2.1.2 Delphi76</p><p> 2.2 SQL Server6</p><p> 2.2.1 SQL Server 20007</p><p> 2.2.2 SQL Server 2000的特點7</p><
5、;p> 2.3 ADO技術7</p><p> 第三章 需求分析與可行性分析7</p><p> 3.1 需求分析7</p><p> 3.1.1 實驗室需求簡介7</p><p> 3.1.2 功能性需求8</p><p> 3.1.3 非功能性需求8</p><p&
6、gt; 安全保密性需求:用戶登錄需要密碼驗證8</p><p> 3.2 可行性分析9</p><p> 3.2.1 經(jīng)濟可行性9</p><p> 3.2.2 技術可行性9</p><p> 第四章 總體設計9</p><p> 4.1 總體設計目標9</p><p>
7、 4.2 功能模塊設計9</p><p> 4.3 數(shù)據(jù)庫設計11</p><p> 4.3.2數(shù)據(jù)建模11</p><p> 4.3.3各實體關系模型11</p><p> 4.3.4數(shù)據(jù)庫邏輯結構設計12</p><p> 第五章 系統(tǒng)詳細設計15</p><p>
8、 5.1 重要代碼16</p><p> 第六章 實驗室進程管理系統(tǒng)設計總結24</p><p> 6.1系統(tǒng)的優(yōu)點24</p><p><b> 參考文獻25</b></p><p><b> 第一章 引言</b></p><p> 21世紀,人類已全面
9、進入數(shù)字信息化社會,現(xiàn)在信息技術的應用越來越普及,不但促進了社會的高速發(fā)展,也影響著人們的工作、學習、生活和娛樂的方式以及思想觀念。隨著科學技術的不斷提高,計算機科學與技術日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領域,迅速地改變著人類社會的生產(chǎn)方式和生活方式,成為減輕人們體力與腦力勞動,幫助人們完成一些人們難以完成任務的有效工具。</p><p> 隨著電腦的普及與使用,現(xiàn)在的管理也提升了
10、一個檔次,漸漸實現(xiàn)了無紙化辦公。高校是科研的陣地,教學的實驗室管理也應該一改傳統(tǒng)的人工管理,更加信息化,時代化,節(jié)省人力物力,提高效率?;谶@一點,開發(fā)了此實驗室管理系統(tǒng)。</p><p><b> 1.1課題背景</b></p><p> 高校實驗室存在一些不良現(xiàn)象,有些學生在實驗課上做其他的事。如玩游戲為了提高高校實驗室管理效率,試實驗室的管理更加的規(guī)范。&l
11、t;/p><p> 實驗室進程管理系統(tǒng)從限制學生電腦的進程來管理。使用實驗室進程管理系統(tǒng),只需一到兩名數(shù)據(jù)操作員即可操作管理系統(tǒng),節(jié)省大量人力和財力;可以存儲大量學生上課的基本信息,安全、高效、快捷;可以實時監(jiān)控學生機系統(tǒng)運行的程序,發(fā)現(xiàn)未被允許的進程進行警告;超過一定的時間則關閉未被允許的進程。這些特點可以極大地提高實驗室管理的效率。</p><p><b> 1.2 語言工具
12、</b></p><p> 該實驗室進程管理系統(tǒng)是我所在團隊的第一個任務,在語言工具的選擇上,我們通過導師的提議以及所有成員集體討論后,前臺工具使用了delphi語言,在后臺數(shù)據(jù)庫的選擇上,我們使用SQL server 2000作為我們的后臺。 delphi靈活方便,與后臺的SQL Server2000數(shù)據(jù)庫相結合,可以提供一個高性能的實驗室進程管理系統(tǒng)。</p><p>&
13、lt;b> 1.3主要內容</b></p><p> 本文研究的主要內容有:</p><p> 實驗室進程管理系統(tǒng)的需求分析</p><p> 實驗室進程管理系統(tǒng)的可行性分析</p><p> 實驗室進程管理系統(tǒng)開發(fā)的相關技術介紹</p><p> 實驗室進程管理系統(tǒng)的總體設計</
14、p><p> 系統(tǒng)數(shù)據(jù)庫的概念設計</p><p> 系統(tǒng)各模塊的詳細設計</p><p> 系統(tǒng)評價以及設計中碰到的難點</p><p> 第二章 相關技術介紹</p><p> 開發(fā)數(shù)據(jù)庫管理信息系統(tǒng)需要兩種工具,即前臺開發(fā)語言和后臺數(shù)據(jù)庫。本系統(tǒng)前臺開發(fā)技術使用Delphi,后臺數(shù)據(jù)庫使用SQL Serve
15、r2000。Delphi靈活方便,與后臺的SQL Server2000數(shù)據(jù)庫相結合,可以提供一個高性能的實驗室進程管理系統(tǒng)。</p><p> 2.1 delphi</p><p> Delphi是Pascal語言的一種版本,但它與傳統(tǒng)的Pascal語言有很大差別。一個Delphi程序首先應是程序框架(Frame),而這一框架正式應用程序的“骨架”。在骨架上即使沒有附著任何東西,仍然可
16、以運行。所要做的工作只是在“骨架”中加入程序。缺省的應用程序是一個空白的窗體(Form),運行可以得到一個空白的窗口。這個窗口具有Windows窗口的全部性質,可以被放大縮小、移動、最大最小化等。程序框架及一個空白的窗體已經(jīng)是一個可運行應用程序,只是不處理任何事情。</p><p> 2.1.1 Delphi特點</p><p> Delphi自從1995年2月誕生以來,獲得了巨大的
17、榮譽和廣泛的影響力,以可視化編程、強大的編譯功能、友好的用戶界面聞名于世。</p><p><b> 主要特點是:</b></p><p> 高效的可視化組件庫和面向對象的架構。</p><p> 具有多種操作向導和在線幫助,大大方便程序編寫。</p><p> 界面設計所見即所得和鼠標拖曳方式,可以輕松設計出華
18、麗的界面。</p><p> 支持各種最新及最常用的技術如 Win32 API、OLE、COM、DCOM、ActiveX、ISAPI、NSAPI、DirectX等。</p><p> 全面支持Windows 應用程序。</p><p> 具有開放式數(shù)據(jù)庫結構,集成了豐富的數(shù)據(jù)庫開發(fā)工具。</p><p> 具有強大的面向網(wǎng)絡編程功能,
19、其C/S開發(fā)工具在高性能的快速應用程序開發(fā)領域成為行業(yè)標準。</p><p> Delphi產(chǎn)品按照功能可以分為4個類型:</p><p> Delphi集成開發(fā)環(huán)境(Integrate Develop Environment):提供友好的用戶編程開發(fā)界面,集成了高效的編譯器、項目管理器、團隊開發(fā)支持、高級調試等功能。</p><p> Delphi可視化組件
20、庫(Visual Component Library):提供幾百個常用組件,用于數(shù)據(jù)庫訪問、用戶接口、數(shù)據(jù)處理、報表和Internet開發(fā)。</p><p> Borland數(shù)據(jù)引擎(Borland Data Engineer):能夠進行數(shù)據(jù)庫管理,并與數(shù)據(jù)庫服務器高速連接。</p><p> MIDAS:是一個集成與Delphi的分布式應用稽核,功能強大,主要用于商業(yè)邏輯的智能集中管
21、理和企業(yè)交易的快速處理。</p><p> 2.1.2 Delphi7</p><p> 2002年8月6日,Borland公司正式宣布推出Delphi 7 Studio,全面支持Microsoft公司.NET平臺應用的開發(fā)。Delphi7是一個針對Windows平臺上的跨平臺快速開發(fā)(RAD)環(huán)境。Delphi7的一個顯著特性是企業(yè)開發(fā)和部署。</p><p&g
22、t; Delphi7的新特點:</p><p> 企業(yè)應用的MDA開發(fā):通過讓開發(fā)者從設計到發(fā)布都重復使用一個應用程序,加速開發(fā)進程,同時顯著減少代碼量和需要的開發(fā)時間。</p><p> 可視化的快速Web開發(fā):讓開發(fā)者能夠在Delphi7環(huán)境中可視化地創(chuàng)建Web應用,并且利用它的應用模型框架,不必再考慮通用的服務器端的開發(fā)任務,還能透明地處理會話管理。</p>&l
23、t;p> 內建的Linux的跨平臺支持:Delphi7在出售時將附帶Delphi語言版本的Dylix3。Kylix3是第一個Linux操作系統(tǒng)上的高性能的可視化集成開發(fā)環(huán)境(IDE),它適用來快速創(chuàng)建數(shù)據(jù)庫應用、GUI應用、Web應用和Web服務應用。</p><p> 企業(yè)級的報表能力:讓開發(fā)者能創(chuàng)建跨平臺的報表,這些報表能幫助查看應用程序運行的效率。</p><p> Wi
24、ndows XP應用:Delphi7包含了對Windows XP風格支持,讓開發(fā)者能夠創(chuàng)建可以利用Windows XP 使用者界面風格的應用。</p><p> 2.2 SQL Server </p><p> 數(shù)據(jù)庫是數(shù)據(jù)管理的最新技術,是計算機科學的重要分支。今天,信息資源已成為各個部門的重要財富和資源。建立一個滿足各級部門信息處理要求的行之有效的信息系統(tǒng)也成為企業(yè)或組織生存和發(fā)展
25、的重要條件。因此,作為信息系統(tǒng)核心和基礎的數(shù)據(jù)庫技術得到越來越廣泛的應用。對于一個國家來說,數(shù)據(jù)庫的建設規(guī)模、數(shù)據(jù)庫信息量的大小和使用頻度已成為衡量一個國家信息化程度的重要標志。</p><p> 2.2.1 SQL Server 2000</p><p> SQL Server 2000 是一個高性能的客戶端/服務器結構的關系數(shù)據(jù)庫管理系統(tǒng)。SQL SERVER 2000是為支持高
26、容量的事務處理以及數(shù)據(jù)倉庫和決策支持系統(tǒng)而設計的。它是Microsoft 公司推出的,該版本繼承了SQL Serve 7.0 版本的優(yōu)點,同時又比它增加了許多更先進的功能,可跨越從運行Microsoft Windows 98 的電腦到運行Microsoft Windows 2000 的大型多處理器的服務器等多種平臺使用。</p><p> 2.2.2 SQL Server 2000的特點</p>
27、<p> 簡單易操作:SQL Server 2000 界面風格和Windows界面風格完全一致。</p><p> 兼容性良好,具有擴展性,可靠性。</p><p> 數(shù)據(jù)倉庫: SQL Server 2000增加了OLAP功能。OLAP可以通過多維存儲技術對大型、復雜數(shù)據(jù)集執(zhí)行快速、高級的分析工作。數(shù)據(jù)挖掘功能能夠揭示隱藏在大量數(shù)據(jù)中的傾向及趨勢,它允許組織或機構最大限
28、度地從數(shù)據(jù)中獲取價值。通過對現(xiàn)有數(shù)據(jù)進行有效分析,這一功能可以對未來的趨勢進行預測。</p><p><b> 2.3 ADO技術</b></p><p> ADO( Active Data Objects )是一種提供訪問各種數(shù)據(jù)類型的鏈接機制,是通過ODBC的方法訪問數(shù)據(jù)庫的接口。ADO主要優(yōu)點是易于使用、高速度、低內存支出和占用磁盤空間較少,同時具有遠程數(shù)據(jù)
29、服務(RDS)功能。在Delphi中,提供了一組ADO組件,用于對ADO訪問能力的支持。</p><p> 第三章 需求分析與可行性分析</p><p><b> 3.1 需求分析</b></p><p> 3.1.1 實驗室需求簡介</p><p> 客戶端方面:實時監(jiān)控學生機系統(tǒng)運行的程序,發(fā)現(xiàn)未被允許的進程
30、進行警告;超過一定的時間則關閉未被允許的進程。</p><p> 服務器方面:可以增加和刪除允許運行的程序至許可程序集;從許可程序集中,指定本節(jié)課允許運行的程序;可臨時添加本節(jié)可允許運行的程序(不將其加入許可程序集);增加或修改本節(jié)課允許運行的程序;許可程序集可以保存。</p><p> 3.1.2 功能性需求</p><p> 軟件需求分析是指對目標軟件系統(tǒng)
31、在功能、行為、性能、設計約束等方面的期望。需求分析是軟件設計、實現(xiàn)測試直至維護的主要基礎,良好的需求分析可以避免或盡早提出早期的錯誤,從而降低軟件的開發(fā)成本,改進軟件的質量。</p><p> 我們所設計完成的實驗室進程管理系統(tǒng)應該要完成以下的任務:</p><p><b> ?</b></p><p><b> 客戶端 &l
32、t;/b></p><p> 從教師機獲取本節(jié)課允許運行程序集;</p><p> 實時監(jiān)控學生機系統(tǒng)運行的程序,發(fā)現(xiàn)未被允許的進程進行警告;</p><p> 超過一定的時間則關閉未被允許的進程</p><p> 系統(tǒng)以托盤程序或系統(tǒng)服務形式運行;</p><p><b> ● 服務器端&l
33、t;/b></p><p> 可以增加和刪除允許運行的程序至許可程序集;</p><p> 從許可程序集中,指定本節(jié)課允許運行的程序;</p><p> 可臨時添加本節(jié)可允許運行的程序(不將其加入許可程序集);</p><p> 增加或修改本節(jié)課允許運行的程序;</p><p><b> 許可
34、程序集可以保存</b></p><p> 3.1.3 非功能性需求</p><p> 用戶界面需求:簡潔、易用、易懂,友好的用戶界面。</p><p> 運行環(huán)境需求:windows 98及以上操作系統(tǒng)</p><p> 可靠性需求:保證用戶在正常使用本系統(tǒng)時,用戶的操作或誤操作不會產(chǎn)生數(shù)據(jù)丟失。</p>&
35、lt;p> 安全保密性需求:用戶登錄需要密碼驗證</p><p><b> 3.2 可行性分析</b></p><p> 開發(fā)任何一個系統(tǒng),都會受到時間和資源上的限制。因此,在每一個項目開發(fā)之前,都要進行可行性分析,以減少項目的開發(fā)風險,避免人力,物力和財力的浪費??尚行苑治鲋饕ń?jīng)濟可行性和技術可行性等。</p><p> 3
36、.2.1 經(jīng)濟可行性</p><p> 經(jīng)濟可行性,主要是針對一個學校的開發(fā)系統(tǒng)的成本與收益相比較。如今是信息化時代,信息化管理可以使實驗室管理更加系統(tǒng)化,全面化、快速化,這樣可以為學校帶來高校的工作效益和經(jīng)濟效益,開發(fā)出本系統(tǒng)可以減少實驗室管理人員人數(shù),而且管理方便,各功能實現(xiàn)快速,數(shù)據(jù)有效的管理。這些效益和管理上的便捷遠遠超過了開發(fā)本系統(tǒng)的成本,所以在經(jīng)濟上具有完全的可行性。</p><
37、p> 3.2.2 技術可行性</p><p> 本系統(tǒng)開發(fā)工具是Delphi和SQL Server2000。Delphi具有可視化界面,是一種面向對象的語言,簡單易學而且靈活方便,SQL Server 2000是一個安全、可靠的并且支持面向對象設計的數(shù)據(jù)庫系統(tǒng)。易用性和可維護性也很好。在大二期間,就已學過SQL Server2000。所以,技術上具有完全的可行性。</p><p>
38、; 數(shù)據(jù)庫的設計和操作是本系統(tǒng)設計的核心。在大學期間曾經(jīng)學習過軟件工程,也以四人一組完成過有關的大作業(yè),具備一定的系統(tǒng)分析與設計能力,熟悉數(shù)據(jù)的設計與操縱。因此,本系統(tǒng)的實現(xiàn)在技術上是可行的。</p><p><b> 第四章 總體設計</b></p><p> 4.1 總體設計目標</p><p> 減少老師、管理人員大量繁瑣的工作。
39、</p><p> 減少學校在實驗室管理方面的人力和物力的投資。</p><p> 實驗室進程管理系統(tǒng)功能實用。操作簡單,擁有友好的易額面,適用于各類學校的機房進程管理。</p><p> 4.2 功能模塊設計</p><p> 系統(tǒng)功能模塊包括: </p><p><b> 教師機功能:</
40、b></p><p> 可以增加和刪除允許運行的程序至許可程序集;</p><p> 從許可程序集中,指定本節(jié)課允許運行的程序;</p><p> 可臨時添加本節(jié)可允許運行的程序(不將其加入許可程序集);</p><p> 增加或修改本節(jié)課允許運行的程序;</p><p><b> 許可程序集
41、可以保存</b></p><p><b> 學生機功能</b></p><p> 從教師機獲取本節(jié)課允許運行程序集;</p><p> 實時監(jiān)控學生機系統(tǒng)運行的程序,發(fā)現(xiàn)未被允許的進程進行警告;</p><p> 超過一定的時間則關閉未被允許的進程</p><p> 系統(tǒng)以托
42、盤程序或系統(tǒng)服務形式運行;</p><p><b> 4.3 數(shù)據(jù)庫設計</b></p><p><b> 4.3.2數(shù)據(jù)建模</b></p><p> 模型是軟件的第一個技術表示。信息系統(tǒng)的建模是用模型來描述復雜的信息系統(tǒng),使得系統(tǒng)的要求、結構和數(shù)據(jù)變得簡單。設計者通過描述用戶的需求獲得與用戶的不斷交互,最終對整個
43、系統(tǒng)能全面地把握。建立完整的數(shù)據(jù)模型,完成對信息系統(tǒng)中數(shù)據(jù)的存儲和處理。</p><p> 實驗室進程管理系統(tǒng)比較復雜,為了建立這樣一個復雜系統(tǒng)的模型,并滿足實際對象不斷發(fā)展的需求,在實際設計中應遵循下列原則:</p><p> 準確性:所建立的模型要求能夠正確反映實際的對象,能夠滿足實驗室進程管理工作的實際需求。·</p><p> 完整性:指要求
44、模型既能反映對象系統(tǒng)的靜態(tài)特性,同時能夠反映其豐富的動態(tài)特性。</p><p> 一致性:要求建立的模型能保證從分析階段到設計階段的平穩(wěn)過渡。</p><p> 4.3.3各實體關系模型</p><p> 經(jīng)過分析,可以得出以下各實體之間的E-R圖,(如圖4-6到4-8)</p><p> 4.3.4數(shù)據(jù)庫邏輯結構設計</p&g
45、t;<p><b> 基本定義:</b></p><p> 教師與管理員有自己的編號、密碼。在要進入該進程管理系統(tǒng)時,需進行身份認證。不用類型的用戶有不同的權限。管理員的權限最大,包括進程的增刪查、教師的增刪改查等。教師有自己的身份認證,可以發(fā)布課程信息,每次課可以添加、刪除臨時進程,同時可以改變自己的登錄密碼。</p><p> 學生在上課時,只
46、能運行管理員發(fā)布的進程以及教師本節(jié)課添加的臨時進程,其余進程不予運行。</p><p> 進程與課程的刪除,若某進程還有課程使用,則不能從進程表中刪除</p><p> 教師表teacher:</p><p> 課程表:course</p><p> 上課登記表link:</p><p> 進程表:proce
47、ss</p><p> 臨時表:tempprocess</p><p> 3.3 物理結構設計</p><p> a.建立一個數(shù)據(jù)庫,數(shù)據(jù)庫名稱process</p><p> create database process</p><p><b> on</b></p>
48、<p><b> (</b></p><p> name=library</p><p> filename="d:\SQL\process.mdf",</p><p> size=20MB,</p><p> filegrowth=5MB</p><p>
49、;<b> )</b></p><p><b> log on</b></p><p><b> (</b></p><p> name=ManaLibLog,</p><p> filename="d:\SQL\ManaLibLog.ldf",&
50、lt;/p><p><b> size=5MB,</b></p><p> maxsize=20MB,</p><p> filegrowth=10%</p><p><b> )</b></p><p> use process</p><p>
51、; 在該數(shù)據(jù)庫中建立教師表teacher、課程表course、上課登記表link、進程表process及臨時表tempprocess。一切活動都在該數(shù)據(jù)庫進行了。</p><p> b.對于primary key數(shù)據(jù)庫會自動建立索引。</p><p> C.對于有建立聚簇索引表的數(shù)據(jù),可以通過聚簇索引存取方法;對于有建立索引表的數(shù)據(jù),可以通過索引存取方法;沒有索引表的數(shù)據(jù),有HASH
52、存取方法可以選擇;最后選擇進行全表掃描得到。</p><p><b> 4 運行設計</b></p><p> 4.1 數(shù)據(jù)字典設計</p><p><b> a.數(shù)據(jù)項</b></p><p><b> b.數(shù)據(jù)結構</b></p><p>
53、; 教師=教師編號+教師姓名+密碼+權限</p><p> 課程=課程編號+課程名稱+上課時間及介紹+課程登記時間;</p><p> 上課情況=教師證號+課程編號+進程名;</p><p> 進程=進程證號+進程介紹+進程類型</p><p><b> C.數(shù)據(jù)存儲</b></p><p&
54、gt; 數(shù)據(jù)存儲描述=名稱:ManalibData;存儲在相應的磁盤中,形成計算機文檔,通過鍵盤輸入數(shù)據(jù),存儲在表中。剛建立該管理系統(tǒng)時,進程的創(chuàng)建較頻繁,接下去比較穩(wěn)定,不同教師的不同課程,可能會臨時增加一些進程,一般情況下為進程的查詢。 </p><p> 4.2 安全保密設計</p><p> 初定為用戶分為兩大類:教師和學生,教師在教師機上進行進程的管理,學生機上只能運行
55、教師允許的進程,其余的不予運行。</p><p> 教師分為兩種:管理員和普通教師。管理員擁有所有的權限,包括教師的權限管理,基本信息的增刪改查;普通教師由管理員授予不用的權限。只能在上課時修改該節(jié)課所要用到的進程,不能對其他課程的進程進行修改。</p><p> 學生可以對所上課程允許的進程進行查詢,也只能運行老師所允許的進程。</p><p> 第五章 系
56、統(tǒng)詳細設計</p><p> 該實驗室進程管理系統(tǒng)是由緯度工作室的所有成員共同完成的,對于個人而言,所完成的任務就是其中的若干個模塊。在本系統(tǒng)的設計中,我所完成的任務主要有員工信息錄入模塊、員工信息統(tǒng)計模塊、宿舍信息錄入模塊、學生休學及學生復學模塊。詳細設計如下。</p><p> 5.1 系統(tǒng)運行平臺設置</p><p> 5.1.1、硬件環(huán)境:</p
57、><p> 處理器:Pentium Ⅳ800以上;</p><p> 內存:256M及以上;</p><p> 硬盤空間:1GB及以上;</p><p> 屏幕分辨率:1024*800</p><p> 5.1.2、軟件環(huán)境:Windows 2000 Professional 或 Windows 2000 Ser
58、ver操作系統(tǒng)。</p><p><b> 5.2 重要代碼</b></p><p><b> 學生機: </b></p><p> function GetPathFileofModule(ModuleName:String):String; //枚舉進程所調用的模塊及進程文件所在路徑</p>
59、<p><b> var </b></p><p> hProcSnap:THandle; //窗體句柄</p><p> pProcess:THandle;</p><p> pe32:TProcessEntry32; //Process32First 得到一個系統(tǒng)快照里第一個進程的信息</p>
60、;<p> buf:array[0..MAX_PATH] of char; //顯示模塊對應的文件名和路徑</p><p> hMod:HMODULE;</p><p> cbNeeded:DWORD; </p><p><b> begin</b></p><p> hProcSna
61、p:=CreateToolHelp32SnapShot(TH32CS_SNAPALL,0); //創(chuàng)建快照函數(shù)CreateToolhelp32Snapshot</p><p> if hProcSnap=INVALID_HANDLE_VALUE then Exit;</p><p> pe32.dwSize:=SizeOf(ProcessEntry32);
62、 //在調用Process32First前需要設置,否則將會失敗</p><p> if Process32First(hProcSnap,pe32)=True then //返回第一個進程是否調用成功</p><p> while Process32Next(hProcSnap,pe32)=True do //順序調用進程</p><p>&l
63、t;b> begin </b></p><p> if uppercase(pe32.szExeFile)=uppercase(ModuleName) then</p><p><b> begin</b></p><p> pProcess:=OpenProcess(PROCESS_QUERY_INFORMA
64、TION or</p><p> PROCESS_VM_READ,</p><p><b> FALSE,</b></p><p> pe32.th32ProcessID);</p><p> if pProcess<>0 then</p><p><b>
65、begin </b></p><p> if EnumProcessModules(pProcess,@hMod,sizeof(hMod),cbNeeded) then</p><p><b> begin</b></p><p> ZeroMemory(@buf,MAX_PATH+1);</p><
66、;p> GetModuleFileNameEx(pProcess,hMod,buf,MAX_PATH+1); </p><p> Result:=strpas(buf); </p><p><b> end; </b></p><p><b> end; </b></p><
67、;p><b> end; </b></p><p><b> end; </b></p><p> CloseHandle(hProcSnap);</p><p><b> end;</b></p><p> {$R *.dfm}</p>
68、<p> procedure TForm1.get();</p><p><b> var</b></p><p> ProcessList :Thandle;</p><p> pe :TPROCESSENTRY32;</p><p> found:boolean;</p><p
69、> Summ: Word;</p><p> NewItem: TListItem;</p><p> begin // ProcessEnum</p><p> ListView1.Items.Clear;</p><p> ProcessList:=CreateToolhelp32Snapshot(TH32CS_SNAPP
70、ROCESS,0); //創(chuàng)建快照函數(shù)CreateToolhelp32Snapshot</p><p> pe.dwSize:=sizeof(TPROCESSENTRY32); //在調用Process32First前需要設置,否則將會失敗</p><p> found := Process32First(ProcessList, pe); //Process32First 得到
71、一個系統(tǒng)快照里第一個進程的信息</p><p> Summ := 0;</p><p> while found do</p><p><b> begin</b></p><p> Summ := Summ + 1;</p><p> NewItem := ListView1.Item
72、s.Add; //在ListView1顯示</p><p> //NewItem.ImageIndex := -1;</p><p> temp1:=ExtractFileName(pe.szExeFile); //獲取進程名賦給一個變量</p><p> // temp1:='WINWORD.EXE';</p><p&
73、gt; Result1:=1;</p><p> Result1:=Search(temp1);</p><p> if(Result1=0) then</p><p><b> begin</b></p><p> temp2:=temp1;</p><p> MessageDlg(
74、'警告!您開啟了在這節(jié)課不被允許的程序,我們將在10秒后自動關閉該程序!',mtWarning,[mbOk],0);</p><p> //showMessage('警告!您開啟了在這節(jié)課不被允許的程序,我們將在10秒后自動關閉該程序!');</p><p> edit1.Text:='warning!'+temp1;</p>
75、<p><b> break;</b></p><p><b> end;</b></p><p> NewItem.Caption :=ExtractFileName(temp1);//返回進程名稱</p><p> NewItem.subItems.Add(FormatFloat('00&
76、#39;, Summ));//返回序號</p><p> NewItem.subItems.Add(IntToStr(pe.th32ProcessID));//返回進程ID</p><p> // NewItem.SubItems.Add((IntToStr(lppe.cntThreads))); //返回進程線程數(shù)</p><p> NewItem.SubI
77、tems.Add(GetPathFileofModule(ExtractFileName(pe.szExeFile))); //返回每個進程文件所在路徑</p><p> found := Process32Next(ProcessList, pe);</p><p> edit1.Text:='當前系統(tǒng)共有'+''+IntToStr(Summ)+
78、9;'+'個進程' ;</p><p><b> end;</b></p><p> CloseHandle(ProcessList);</p><p><b> end;</b></p><p> function TForm1.KillTask(ExeFileNa
79、me: string): Integer;</p><p><b> const </b></p><p> PROCESS_TERMINATE = $0001; </p><p><b> var </b></p><p> ContinueLoop: boolean; <
80、;/p><p> FSnapshotHandle: THandle; </p><p> FProcessEntry32: TProcessEntry32; </p><p><b> begin </b></p><p> Result := 0;</p><p> FSnaps
81、hotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); </p><p> FProcessEntry32.dwSize := SizeOf(FProcessEntry32); </p><p> ContinueLoop := Process32First(FSnapshotHandle, FProcessE
82、ntry32); </p><p> while Integer(ContinueLoop) <> 0 do</p><p><b> begin</b></p><p> if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = </p>
83、<p> UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = </p><p> UpperCase(ExeFileName))) then </p><p> Result := Integer(TerminateProcess( </p><p> Op
84、enProcess(PROCESS_TERMINATE,BOOL(0),FProcessEntry32.th32ProcessID),0));</p><p> ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); </p><p><b> end;</b></p>&
85、lt;p> CloseHandle(FSnapshotHandle);</p><p><b> end; </b></p><p> procedure TForm1.Timer3Timer(Sender: TObject);</p><p><b> begin</b></p><
86、p> Result:=KillTask(temp2);</p><p> if(Result<>0)then</p><p><b> begin</b></p><p> showMessage('自動shanchu成功');</p><p><b> end;&l
87、t;/b></p><p><b> end;</b></p><p> procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);</p><p><b> begin</b></p><p> M
88、essageDlg('上課期間該軟件不允許被關閉!',mtWarning,[mbOK],1);</p><p> //canClose:=false;</p><p><b> end;</b></p><p> function TForm1.Search(ExeFileName: string):Integer;<
89、;/p><p><b> var</b></p><p> rs:Integer;</p><p><b> begin</b></p><p> with adostoredproc1 do</p><p><b> begin</b></
90、p><p><b> close;</b></p><p> procedurename:='proc_tempprocess;1';</p><p> parameters.Refresh;</p><p> parameters.ParamByName('@proname').Va
91、lue:=ExeFileName;</p><p> parameters.ParamByName('@rs').Value:=rs;</p><p><b> ExecProc;</b></p><p><b> // open;</b></p><p><b>
92、 end;</b></p><p> Search:=adostoredproc1.Parameters.ParamValues['@rs'];</p><p><b> end;</b></p><p><b> end.</b></p><p><b&g
93、t; 教師機:</b></p><p><b> 教師添加:</b></p><p><b> begin</b></p><p> IF edit2.Text ='' then showmessage('教師姓名不能為空')</p><p>&l
94、t;b> else</b></p><p><b> begin</b></p><p> with AdoQuery1 do</p><p><b> BEGIN</b></p><p><b> close;</b></p>&
95、lt;p> SQL.clear;</p><p> SQL.Add('insert into teacher(usename,password,powers)');</p><p> SQL.Add('values(:name,:pass,:powers)');</p><p> Parameters.parambyna
96、me('name').value:=edit2.text;</p><p> if(edit3.text='') then</p><p> Parameters.Parambyname('pass').value:='001'</p><p><b> else</b>&l
97、t;/p><p> Parameters.Parambyname('pass').value:=edit3.text;</p><p> if(radiogroup1.ItemIndex=0) then</p><p> Parameters.parambyname('powers').value:='0'</
98、p><p> else Parameters.parambyname('powers').value:='1';</p><p><b> ExecSQL;</b></p><p><b> close;</b></p><p> SQL.Clear;&
99、lt;/p><p> SQL.Add('select * from teacher');</p><p><b> open;</b></p><p> label9.Caption :='記錄總數(shù):'+inttostr(recordcount);</p><p><b>
100、 end ;</b></p><p> Edit2.Text:='';</p><p> Edit3.Text:='';</p><p> showmessage('教師添加成功!');</p><p><b> end; </b></p>
101、<p><b> end;</b></p><p><b> 教師刪除:</b></p><p><b> begin</b></p><p> if edit4.Text='' then showmessage('先進行查找,再刪除')</
102、p><p><b> else</b></p><p> begin if adoquery1.recordcount<>0 then begin</p><p> if messagedlg('確定要刪除所有符合條件的記錄嗎?',mtconfirmation,mbokcancel,0)=mrok then<
103、;/p><p><b> begin</b></p><p> adoquery1.First ;</p><p> while not adoquery1.eof do begin</p><p> id:=adoquery1.FieldByName('useno').Asstring ;<
104、/p><p> with adoquery2 do begin</p><p><b> close;</b></p><p> sql.Clear ;</p><p> sql.Add('select * from link');</p><p> sql.add('
105、;where useno=:id') ;</p><p> parameters.ParamByName('id').Value:=id;</p><p><b> open ;</b></p><p><b> end;</b></p><p> if adoqu
106、ery2.recordcount>0 then begin</p><p> if messagedlg(id+'有課程安排,是否跳過該記錄繼續(xù)刪除?',mtconfirmation,mbokcancel,0)=mrok then</p><p> adoquery1.Next</p><p> else exit;end</
107、p><p> else begin adoquery1.delete;adoquery1.Next;end; end;</p><p> if messagedlg('已經(jīng)刪除記錄',mtinformation,[mbok],0)=mrok</p><p><b> then</b></p><p>
108、;<b> begin</b></p><p> adoquery1.close;</p><p> adoquery1.sql.Clear ;</p><p> adoquery1.sql.Add('select * from teacher');</p><p> adoquery1.ope
109、n ;</p><p> label10.Caption :='記錄總數(shù):'+inttostr(adoquery1.recordcount);</p><p> edit4.Text:='';</p><p><b> end;</b></p><p><b> end;
110、</b></p><p><b> end;</b></p><p><b> end;</b></p><p><b> end;</b></p><p> 教師查詢://模糊查詢</p><p><b> var<
111、;/b></p><p> tt:string;</p><p> i:shortint;</p><p><b> begin</b></p><p> if edit9.text='' then showmessage('請輸入搜索詞')</p><
112、p> else begin</p><p> tt:=edit9.Text;</p><p> for i:=0 to length(tt) do</p><p> if(tt[i]=chr(39)) then begin delete(tt,i,1);end;</p><p> edit9.Text:=tt;</
113、p><p> with adoquery1 do begin</p><p><b> close;</b></p><p> sql.Clear ;</p><p> sql.Add('select * from teacher');</p><p> sql.Add(
114、39;where usename+powers like ''%'+edit9.Text +'%''');</p><p><b> open ;</b></p><p> label9.Caption :='記錄總數(shù):'+inttostr(recordcount);</p>&
115、lt;p><b> end;</b></p><p><b> end;</b></p><p><b> end;</b></p><p><b> 進程搜索:</b></p><p><b> var</b><
116、;/p><p> tt:string;</p><p> i:shortint;</p><p><b> begin</b></p><p> if edit9.text='' then showmessage('請輸入搜索詞')</p><p> els
117、e begin</p><p> tt:=edit9.Text;</p><p> for i:=0 to length(tt) do</p><p> if(tt[i]=chr(39)) then begin delete(tt,i,1);end;</p><p> edit9.Text:=tt;</p><
118、;p> with adoquery1 do begin</p><p><b> close;</b></p><p> sql.Clear ;</p><p> sql.Add('select distinct proname,proztai,proshow from process');</p>
119、<p> sql.Add('where proname+proshow+proztai like ''%'+edit9.Text +'%''');</p><p><b> open ;</b></p><p> label10.Caption :='總數(shù):'+inttos
120、tr(recordcount);</p><p><b> end;</b></p><p><b> end;</b></p><p><b> end;</b></p><p><b> 進程刪除:</b></p><p&g
121、t; var id:string;</p><p><b> begin</b></p><p> if edit9.Text='' then showmessage('先進行查找,再刪除')</p><p><b> else</b></p><p>
122、begin if adoquery1.recordcount<>0 then begin</p><p> if messagedlg('確定要刪除所有符合條件的記錄嗎?',mtconfirmation,mbokcancel,0)=mrok then</p><p><b> begin</b></p><p>
123、; adoquery1.First ;</p><p> while not adoquery1.eof do begin</p><p> if adoquery1.FieldByName('proztai').AsString<>'AP' then begin</p><p> showmessage(
124、9;刪除停止,不能刪除系統(tǒng)進程!!!'); exit;end;</p><p> id:=adoquery1.FieldByName('proname').AsString ;</p><p> with adoquery2 do begin</p><p><b> close;</b></p>&
125、lt;p> sql.Clear ;</p><p> sql.Add('select * from link');</p><p> sql.add('where proname=:name') ;</p><p> parameters.ParamByName('name').Value:=id;<
126、;/p><p><b> open ;</b></p><p><b> end;</b></p><p> if adoquery2.RecordCount>0 then begin</p><p> if messagedlg(id+'該進程有課程安排,是否刪除該進程及相
127、關記錄?',mtconfirmation,mbokcancel,0)=mrcancel then</p><p> adoquery1.Next</p><p> else begin adoquery2.First;</p><p> while not adoquery2.Eof do begin</p><p> ad
128、oquery2.Delete;adoquery2.Next;end;</p><p> adoquery1.delete;adoquery1.Next;</p><p><b> end ;</b></p><p><b> end</b></p><p> else adoquery1.
129、delete;adoquery1.Next;</p><p><b> end;</b></p><p> if messagedlg('已經(jīng)刪除記錄',mtinformation,[mbok],0)=mrok</p><p><b> then</b></p><p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 實驗室設備管理系統(tǒng)畢業(yè)論文
- 畢業(yè)論文--研究生實驗室管理系統(tǒng)
- 畢業(yè)論文——基于web的實驗室管理系統(tǒng)
- 實驗室管理系統(tǒng)的研究與設計-畢業(yè)論文
- 畢業(yè)論文——實驗室預約系統(tǒng)的設計
- 畢業(yè)論文——實驗室預約系統(tǒng)的設計
- 實驗室排課系統(tǒng)畢業(yè)論文(含外文翻譯)
- 基于bs的實驗室預約系統(tǒng)畢業(yè)論文
- 畢業(yè)論文---中型實驗室的控制系統(tǒng)設計
- 計算機專業(yè)畢業(yè)論文---實驗室管理系統(tǒng)(含外文翻譯)
- 基于java的實驗室管理系統(tǒng)【開題報告+文獻綜述+畢業(yè)論文】
- 畢業(yè)論文實驗室使用登記表
- 計算機畢業(yè)論文--實驗室學生簽到考勤系統(tǒng)
- 畢業(yè)論文——基于bs結構的實驗室預約模型系統(tǒng)
- 實驗室管理系統(tǒng)畢業(yè)設計
- 畢業(yè)論文——基于web的實驗室管理系統(tǒng)-自動排課功能的實現(xiàn)
- 軟件工程畢業(yè)論文-實驗室預約管理系統(tǒng)的設計與實現(xiàn)
- 基于matlab webserver的數(shù)值計算遠程實驗室系統(tǒng)【畢業(yè)論文】
- 畢業(yè)論文——計算機實驗室教學管理系統(tǒng)的設計與實現(xiàn)
- 畢業(yè)論文——計算機實驗室教學管理系統(tǒng)的設計與實現(xiàn)
評論
0/150
提交評論