

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 學生選課管理系統(tǒng)</b></p><p><b> 摘 要</b></p><p> 隨著社會的發(fā)展,學生的人數(shù)和課程的種類急速增加,傳統(tǒng)的選課管理模式已經無法滿足當前的實際需求,為此,我們開發(fā)了學生選課管理系統(tǒng)。</p><p> 本人結合學生選課管理的實際需要,完成了對學生選課管理
2、系統(tǒng)的需求分析、功能模塊劃分、數(shù)據庫模式分析等,并由此設計了后臺數(shù)據庫以及前臺應用程序。</p><p> 文中首先對課題背景,數(shù)據庫基礎理論和SQL語言進行了簡單的討論;接著,對系統(tǒng)前臺開發(fā)工具PowerBuilder9.0,學生選課管理系統(tǒng)進行了詳細分析,劃分了具體的功能模塊;最后,給出了學生選課系統(tǒng)應用程序的設計過程,以及每個功能模塊的核心代碼。</p><p> 系統(tǒng)可以實現(xiàn)學
3、生選課的一些重要功能,如:課程的添加、刪除,信息查詢、選課、生成課表,以及學生選課管理人員、用戶個人信息的維護等。</p><p> 關鍵詞 管理系統(tǒng);數(shù)據庫;PowerBuilder9.0;SQL Server 2000</p><p> Select Course </p><p> Management System of Students </
4、p><p><b> ABSTRECT</b></p><p> With the development of society, not only the student’s number but also the kinds of course increased rapidly, the traditional management mode has been
5、unable to adapt to actual need, so we develop the select course management system of students.</p><p> According to the actual need of select course, I analyzed the demand, divided function nodule, analyzed
6、 database mode of the system. Then, I designed database of backstage and application program of stage.</p><p> Firstly, I simply discussed the background of this subject and the basic theory of the database
7、 and SQL language in the article. Then I analyzed the development tool—PowerBuilder9.0,analyzed in detail to system and divided the concrete function module. Finally, I provided the design process of the system and the k
8、ey code of each function nodule.</p><p> The system accomplished some important functions of management system of books, such as: course’s input, output, information inquiry, select courses, create table of
9、 course, modify information of the administrators and students, etc.</p><p> KEY WORDS Management System,Database, PowerBuilder9.0, SQL </p><p><b> 目錄</b></p><p><
10、b> 摘 要I</b></p><p> ABSTRECTII</p><p><b> 1 緒論1</b></p><p> 1.1 課題的背景1</p><p> 1.2 課題的設計2</p><p> 1.3 本文的結構2</p>&
11、lt;p> 2 相關知識基礎3</p><p> 2.1 數(shù)據庫的基礎知識3</p><p> 2.2 關系型數(shù)據庫5</p><p> 2.3 PowerBuilder9.0開發(fā)工具簡介7</p><p> 2.4 SQL概述8</p><p> 2.5 本章小結11</p>
12、<p><b> 3 系統(tǒng)分析12</b></p><p> 3.1 系統(tǒng)分析12</p><p> 3.1.1 用戶要求12</p><p> 3.1.2 業(yè)務流程分析12</p><p> 3.1.3 系統(tǒng)實體E-R圖分析13</p><p> 3.2本章小
13、結14</p><p><b> 4 系統(tǒng)實現(xiàn)15</b></p><p> 4.1 創(chuàng)建一個工作空間和應用程序對象15</p><p> 4.2創(chuàng)建數(shù)據庫表15</p><p> 4.3創(chuàng)建主窗口16</p><p> 4.4 創(chuàng)建主菜單17</p><
14、p> 4.5系統(tǒng)管理模塊的實現(xiàn)18</p><p> 4.5.1創(chuàng)建課程查詢窗口18</p><p> 4.5.2 創(chuàng)建添加選課窗口20</p><p> 4.5.3 創(chuàng)建生成課表窗口24</p><p> 4.5.4 創(chuàng)建個人信息窗口26</p><p> 4.5.5 生成課表窗口的設計
15、27</p><p> 4.5.6 創(chuàng)建登錄窗口29</p><p> 4.5.7 splash界面的實現(xiàn)30</p><p><b> 結束語32</b></p><p><b> 致 謝33</b></p><p><b> 參考文獻34&
16、lt;/b></p><p><b> 1 緒論</b></p><p> 數(shù)據庫是數(shù)據管理的最新技術,是計算機科學的重要分支。今天,信息資源已成為各個部門的重要財富和資源。建立一個滿足各級部門信息處理要求的行之有效的信息系統(tǒng)也成為一個企業(yè)或組織生存和發(fā)展的重要條件。因此,作為信息系統(tǒng)核心和基礎的數(shù)據庫技術得到越來越廣泛的應用。從小型單項事務處理系統(tǒng)到大型信
17、息系統(tǒng),從聯(lián)機事務處理到聯(lián)機分析處理,從一般企業(yè)管理到計算機輔助設計與制造 (CAD/CAM)、計算機集成制造系統(tǒng)(CIMS)、辦公信息系統(tǒng) (OIS)等,越來越多新的應用領域采用數(shù)據庫存儲和處理他們的信息資源。</p><p><b> 1.1 課題的背景</b></p><p> 當今時代是飛速發(fā)展的信息時代。在各行各業(yè)中離不開信息處理,這正是計算機被廣泛應用
18、于信息管理系統(tǒng)的環(huán)境。計算機的最到好處在于利用它能夠進行信息管理。使用計算機進行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。</p><p> 尤其對于復雜的信息管理,計算機能夠充分發(fā)揮它的優(yōu)越性。計算機進行信息管理與信息管理系統(tǒng)的開發(fā)密切相關,系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。本系統(tǒng)就是為了管理好學生選課信息而設計的。</p><p> 學生選課作為一種信息資源的集散地,包含很
19、多的信息數(shù)據的管理。 由于數(shù)據繁多,容易丟失,且不易查找??偟膩碚f,缺乏系統(tǒng),規(guī)范的信息管理手段。盡管有的學校有計算機,但是尚未用于信息管理,沒有發(fā)揮它的效力,資源閑置比較突出,這就是管理信息系統(tǒng)的開發(fā)基本環(huán)境。</p><p> 數(shù)據處理手工操作,工作量大,出錯率高,出錯后不易更改。造成了時間上的浪費</p><p> 基于這個問題,我認為有必要建立一個學生選課系統(tǒng),使學生選課信息管
20、理工作規(guī)范化、系統(tǒng)化、程序化,避免學生選課管理的隨意性,提高信息處理的速度和準確性,能夠及時、準確、有效的查詢和修改選課情況。</p><p><b> 1.2 課題的設計</b></p><p> 本文就學生選課系統(tǒng)的設計與制作展開分析。學生選課系統(tǒng)主要應用數(shù)據庫技術開發(fā),先從數(shù)據庫的基本知識開始介紹, 數(shù)據庫的基本概念、數(shù)據庫的發(fā)展、數(shù)據庫的結構,還介紹了開發(fā)
21、工具PowerBuilder9.0和SQL語言。我主要是應用PowerBuilder9.0為前端開發(fā)工具,利用SQL語言實現(xiàn)數(shù)據查詢。設計系統(tǒng)時,先從系統(tǒng)的數(shù)據流程開始分析,設計系統(tǒng)的業(yè)務流程圖、系統(tǒng)的數(shù)據流程圖、系統(tǒng)的E-R圖。根據開題報告的設計要求開始進入系統(tǒng)的總體設計,接著制定系統(tǒng)的設計思想,分析系統(tǒng)的功能并設計系統(tǒng)的功能模塊,這些都是系統(tǒng)制作前的準備工作;準備工作完成后,開始系統(tǒng)數(shù)據庫的建立,主要有各個功能窗口的設計,將設計好的
22、窗口集中到主菜單上,通過用戶的用戶名和密碼的登錄可以進入到主窗口,這樣就完成系統(tǒng)的制作。最后,對系統(tǒng)進行調試,性能分析。</p><p><b> 1.3 本文的結構</b></p><p> 第2章,簡單介紹了相關的基礎知識(如:數(shù)據庫的基本概念、數(shù)據庫的類型、數(shù)據庫的結構、開發(fā)工具等),為系統(tǒng)的設計進行知識儲備。</p><p> 第
23、3章,詳細介紹了系統(tǒng)分析與設計。</p><p> 第4章,介紹了系統(tǒng)的制作過程,如:建立數(shù)據庫、設計制作窗口等。</p><p> 第5章,對系統(tǒng)進行運行、調試,對系統(tǒng)性能分析和評價。</p><p><b> 2 相關知識基礎</b></p><p> 2.1 數(shù)據庫的基礎知識</p><
24、p> 2.1.1 數(shù)據庫系統(tǒng)的發(fā)展</p><p> 數(shù)據庫系統(tǒng)是在文件系統(tǒng)的基礎之上發(fā)展而來的,經歷了層次數(shù)據庫、網狀數(shù)據庫和關系數(shù)據庫三個階段。由于關系型數(shù)據庫采用人們比較容易理解和接受的二維表格來組織數(shù)據,發(fā)展迅速,已成為數(shù)據庫產品的主流。這里介紹的數(shù)據庫知識都是指的關系數(shù)據庫。數(shù)據庫架構如圖2-1 所示。</p><p> 圖2-1 數(shù)據庫應用的架構</p>
25、<p> 2.1.2 基本概念</p><p> 數(shù)據庫(DataBase,簡稱DB)是按一定組織方式存儲在計算機存儲器中、相互關聯(lián)的數(shù)據集合,數(shù)據庫的建立獨立于程序。所謂關系數(shù)據庫就是將數(shù)據表示為表的集合,通過建立簡單表之間的關系來定義結構的一種數(shù)據庫。</p><p> 數(shù)據庫管理系統(tǒng)(DBMS)是一個管理數(shù)據庫的軟件系統(tǒng),為用戶提供了描述數(shù)據庫、操縱數(shù)據庫和維護數(shù)
26、據庫的方法和命令,并且能自動控制數(shù)據庫的安全以及數(shù)據完整。常見數(shù)據庫管理系統(tǒng)有:Oracle、Sybase、Microsoft SQL Server、Microsoft Access、Microsoft FoxPro、IBM DB2等。</p><p> 數(shù)據庫系統(tǒng)(DBS)是一個具有管理數(shù)據庫功能的計算機系統(tǒng),它包括應用軟件、數(shù)據庫(DB)、數(shù)據庫管理系統(tǒng)(DBMS)和數(shù)據庫管理人員(DBA)幾部分。圖
27、2-1直觀地表示了數(shù)據庫應用的架夠。數(shù)據庫管理人員(DBA)一般是針對大型的數(shù)據庫應用而言的,主要負責數(shù)據庫的日常運行和維護,如數(shù)據庫備份等工作。</p><p> 2.1.3 數(shù)據庫及數(shù)的研究領域</p><p> 數(shù)據庫學科的研究范圍十分廣泛的,概括地講可以包括以下三個領域:</p><p> (1)數(shù)據庫管理系統(tǒng)軟件的研制</p><
28、p> DBMS[3]是數(shù)據庫系統(tǒng)的基礎。DBMS的研制包括DBMS本身及以DBMS為核心的一組相互聯(lián)系的軟件系統(tǒng),包括工具軟件和中間件。研制的目標是提高系統(tǒng)的可用性、可靠性、可伸縮性;提高性能和提高用戶的生產率。</p><p> DBMS核心技術的研究和實現(xiàn)是三十余年來數(shù)據庫領域所取得的主要成就。DBMS是一個基礎軟件系統(tǒng),它提供了對數(shù)據庫中的數(shù)據進行存儲、檢索和管理的功能。</p>&
29、lt;p><b> ?。?)數(shù)據庫設計</b></p><p> 數(shù)據庫設計的主要任務是DBMS的支持下,按照應用的要求,為某一部門或組織設計一個結構合理、使用方便、效率較高的數(shù)據庫及其應用系統(tǒng)。其中主要的研究方向是數(shù)據庫設計方法學和設計工具,包括數(shù)據庫設計方法、設計工具和設計理論的研究,數(shù)據建模和數(shù)據建模的研究,計算機輔助數(shù)據庫設計方法及其軟件系統(tǒng)的研究。數(shù)據庫設計規(guī)范和標準的研究
30、等。</p><p><b> (3)數(shù)據庫理論</b></p><p> 數(shù)據庫理論的研究主要集中于關系的規(guī)范化理論、關系數(shù)據理論等。近年來,隨著人工智能與數(shù)據庫理論的結合、并行計算技術等的發(fā)展,數(shù)據庫邏輯演繹和知識推理、數(shù)據庫中的知識發(fā)現(xiàn)(Knowledge Discovery from Database,簡稱KDD[4])、并行算法等成為新的理論研究方向。&
31、lt;/p><p> 計算機領域中其他新興技術的發(fā)展對數(shù)據庫技術產生了重大影響。數(shù)據庫技術和其他計算機技術的互相結合、互相滲透,使數(shù)據庫中新的技術內容層出不窮。數(shù)據庫的許多概念、技術內容、應用領域,甚至某些原理都有了重大的發(fā)展和變化。建立和實現(xiàn)了一系列新型數(shù)據庫系統(tǒng),如分布式數(shù)據庫系統(tǒng)、并行數(shù)據庫系統(tǒng)、知識庫系統(tǒng)、多媒體數(shù)據庫系統(tǒng)等。它們共同構成了數(shù)據庫系統(tǒng)大家族,使數(shù)據庫技術不斷地涌現(xiàn)新的研究方向。</p&
32、gt;<p> 2.2 關系型數(shù)據庫</p><p> 關系數(shù)據庫由表組成。一個關系是由一個二維表來定義的:表的行保存事物的一組屬性數(shù)據,表的列定義了事物的屬性。</p><p> 以下是關系型數(shù)據庫系統(tǒng)[5]的一些特點:</p><p> ·幾乎當今所有的關系型數(shù)據庫系統(tǒng)都采用SQL語言來操縱數(shù)據庫中的數(shù)據。SQL語言是在20世紀7
33、0年代由IBM發(fā)展起來的,后來成為工業(yè)標準。</p><p> ·最重要的是必須保證數(shù)據的完整性。否則,存儲在數(shù)據庫中的數(shù)據就是毫無價值的。關系型數(shù)據庫系統(tǒng)包括許多特性,目的是阻止不符和要求的數(shù)據進入數(shù)據庫。</p><p> ·關系型數(shù)據庫系統(tǒng)被設計為一個便于修改的系統(tǒng),因為商業(yè)需求幾乎每天都在變化。</p><p> ·在文件
34、系統(tǒng)階段,相同的數(shù)據常常重復出現(xiàn)在許多記錄中,而關系型數(shù)據庫系統(tǒng)則會排除大多數(shù)的冗余數(shù)據。這就減少了對存儲空間的需求,加快了數(shù)據訪問的速度。</p><p> ·應用程序可以通過多級的安全檢查來限制對數(shù)據的訪問。</p><p> 2.2.1 數(shù)據模型</p><p> 模型是現(xiàn)實世界特征的模擬和抽象。數(shù)據模型(Data Modal[6])是對現(xiàn)實世
35、界中數(shù)據特征的抽象。</p><p> 存在于人們頭腦之外的客觀世界,稱為現(xiàn)實世界。數(shù)據庫系統(tǒng)中保存的數(shù)據實際上是對現(xiàn)實世界的一種描述,它是采用數(shù)據模型對現(xiàn)實世界進行描述的。數(shù)據模型是數(shù)據庫系統(tǒng)中用于提供信息表示和操作手段的形式框架,是數(shù)據庫系統(tǒng)的核心和基礎。</p><p> 數(shù)據模型分為兩種,一種是概念數(shù)據模型,它是用來描述現(xiàn)實世界中數(shù)據及數(shù)據之間關系的模型,跟計算機沒有關系。這種
36、模型主要描述高層次的概念,按照用戶的觀點對數(shù)據和信息進行建模,把現(xiàn)實世界中的客觀對象抽象為某種信息結構,如被描述對象的意義、相互關系等。另外一種就是實體數(shù)據模型,它是用來描述信息世界中數(shù)據及數(shù)據之間的關系及存儲、處理特征的模型,主要包括層次模型、網狀模型、關系模型,它是按照計算機的觀點對數(shù)據建模,主要用于DBMS的實現(xiàn)。</p><p> 在信息世界中,把客觀存在并可相互區(qū)別的事物稱為實體(Entity[7])
37、,同型實體的集合稱為實體集(Entity Set),實體所具有的某一特性稱為屬性(Attribute)。</p><p> 2.2.2 實體之間的聯(lián)系</p><p> 在現(xiàn)實世界中,各種事物之間往往有著各種各樣的聯(lián)系,這種聯(lián)系必然在信息世界中有所反映。實體之間的聯(lián)系可以分為兩類,一類是實體內部的聯(lián)系,如組成實體的屬性之間的聯(lián)系,這種聯(lián)系往往比較容易理解。另外一種聯(lián)系就是實體之間的聯(lián)系
38、,如學生和班級之間的聯(lián)系:一個學生屬于某一個班級,而另一個班級有多個學生。</p><p> 實體完整性規(guī)則規(guī)定基本關系的所有主屬性都不能去空值,而不僅是主碼整體不能取空值。</p><p> 對于實體完整性規(guī)則說明如下:</p><p> 1.實體完整性規(guī)則是針對基本關系而言的,一個基本表通常對應現(xiàn)實界的一個實體集。例如學生關系對應于學生的集合。</p
39、><p> 2.現(xiàn)實世界中的實體是可區(qū)分的,即它們具有某種唯一性標識。</p><p> 3.相應地,關系模型中以主碼作為唯一性標識。</p><p> 4.主碼中的屬性即主屬性不能取空值。所謂空值就是“不知道”或“無意義”的值。如果主屬性取空值,就說明存在某個不可標識的實體,即存在不可區(qū)分的實體,這與第2點相矛盾,因此這個規(guī)則稱為實體完整性。</p>
40、<p> 2.2.3 規(guī)范化設計方法</p><p> 構造數(shù)據庫時,必須遵循一定的規(guī)則。在關系數(shù)據庫中,這種規(guī)則就是范式(Normal Form)?;蛘哒f,滿足一定條件的關系模式,稱為范式。在1971年至1972年,E.F.Codd系統(tǒng)地提出了第一范式(1NF)、第二范式(2NF)和第三范式(3NF)的概念。1974年Codd和Boyce共同提出BCNF范式,為第三范式的改進。關系數(shù)據庫中的關
41、系必須滿足一定的要求,即需要滿足不同的范式。目前除了前面提到的三種范式,還有第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。</p><p> 2.3 PowerBuilder9.0開發(fā)工具簡介</p><p> PowerBuilder9.0是Sybase公司2003年推出的新一代4GL Plus數(shù)據庫開發(fā)工具,它不僅繼承了以往版本的各種先進技術,而且適應目前開放試軟件的
42、發(fā)展潮流,在快速集成開發(fā)環(huán)境中增加了構建Web Service、JSP Web、EJB的功能,滿足了在4GL RAD環(huán)境中創(chuàng)建完整應用和應用組件的需求,并使企業(yè)應用可以平滑過度到基于瀏覽器和Web的應用模式下。同時,PowerBuilder9.0卓越的應用開發(fā)效率及強大的Web功能為新版本增色不少。</p><p> 完整的應用系統(tǒng)有工作空間、目標、應用對象。窗口上的菜單對象。數(shù)據窗口對象和控件對象,以及這些對
43、象的事件處理程序構成。 </p><p> (1)工作空間和目標</p><p> 在以前的版本中,程序員一次只能開發(fā)一個應用程序,這樣使得應用程序無法取得多個可用的組件信息,因此在構件復雜應用時會大大增加難度。</p><p> PowerBuilder9.0提供了Workspace功能,這讓開發(fā)人員同時在多個應用或組件上進行開發(fā),同時PowerBuilde
44、r9.0用Target來描述加到Workspace中的應用或組件。[11] PowerBuilder中存在三類Target是:Window 客戶、EAServer組件和Web站點。在PowerBuilder中,只有打開Workspace才能更有效地工作,開發(fā)者可以在Workspace中定義一個新的Target或者加入一個已經存在的Target。因此,Workspace 已經變成了PowerBuilder中所有活動的中心。 </p&
45、gt;<p> (2)窗口、控件、事件和程序</p><p> 在PowerBuilder中,窗口(Window)是主要的用戶界面,軟件開發(fā)人員往往把各種控制功能(如錄入、查詢、打印、統(tǒng)計等)做成按扭或其它控件放在窗口上有用戶選擇。應用對象、窗口對象、菜單對象,窗口上的數(shù)據窗口控件和其他控件對象都對應著若干個可能發(fā)生的事件[12-13],如應用對象和窗口對象上有Open (打開),Close(關
46、閉)等事件,菜單項上有Clicked(鼠標左鍵單擊或按回車鍵)等事件,窗口上的控件有Clicked、Double Clicked(用鼠標左鍵雙擊)Getfocus(得到焦點),Edit Changed(數(shù)據被修改)等事件[14]。PowerBuilder的程序是嵌套在事件中的,也就是說由事件驅動的,一旦用戶選定了控件也就觸發(fā)了某個事件。軟件開發(fā)人員只需為各個控件的事件編寫事件處理程序,指定該事件被觸發(fā)時要進行的處理,應用系統(tǒng)就這樣構造出
47、來了。</p><p> 事件處理程序用PowerBuilder的專用語言PowerScript語言編寫。PowerScript語言是一種高水準。面向對象的語言,提供了豐富的內置函數(shù)供軟件開發(fā)人員使用。事件處理程序有PowerScript語句和函數(shù)組成,來響應被觸發(fā)的事件并做相應的處理。</p><p> 例如,菜單項上有Clicked事件此事件的處理程序可能是打開另一個窗口,用戶用鼠
48、標左鍵單擊此菜單時,Clicked事件被觸發(fā),指定的窗口被打開。又如窗口上有一個數(shù)據窗口和一些按扭,按扭上的文字為“錄入”、“刪除”、“存盤”等,這些按扭的功能分別為數(shù)據窗口中插入一行,刪除一行,將結果修改存盤,我們只需為這些按扭的Clicked事件編寫相應的程序完成這些功能。</p><p><b> (3)函數(shù)</b></p><p> 函數(shù)是PowerScr
49、ipt語言的重要組成部分,PowerBuilder為軟件開發(fā)人員提供了近800個內置函數(shù)[15-16],主要用于完成以下工作:訪問和操作數(shù)據,操縱對像的數(shù)字或文本,進行計算,字符串處理,數(shù)據類型轉換,處理日期和時間,文本文件的輸入和輸出,生成商務圖形,打印數(shù)據,與其他窗口的數(shù)據通信,處理郵件,Web應用,分布式應用等。此外,軟件開發(fā)人員還可以通過建立用戶自定義函數(shù)來滿足某個應用系統(tǒng)的特殊要求。需要時還可調用Windows的SDK函數(shù)和外
50、部DLL函數(shù)。</p><p><b> 2.4 SQL概述</b></p><p> 2.4.1 SQL Server 2000概述</p><p> SQL Server 2000是一個大型關系數(shù)據庫管理系統(tǒng),它是微軟公司推出的新一代數(shù)據庫產品。它是微軟公司在SQL Server 7.0版的基礎上經過改進和提高而推出的數(shù)據庫產品。它的
51、性能、可靠性、質量以及易用性都比以前的版本大有提高。它提供了許多提高系統(tǒng)運行性能的新功能,并使數(shù)據庫的管理工作變得更加輕松容易。把SQL Server 2000作為OLTP 、數(shù)據倉庫以及電子商務應用程序的后臺數(shù)據庫是一個不錯的選擇。在SQL Server 2000關系數(shù)據庫中,信息被存放在二維表格結構的表(TABLE)中。數(shù)據庫中的表之間可以是相互關聯(lián)的,表之間的這種關聯(lián)性是通過主健和外鍵所體現(xiàn)的參照關系來實現(xiàn)的。數(shù)據庫中不僅包括表,
52、還包括其他數(shù)據庫對象,如:視圖、存儲過程、索引等。</p><p> SQL Server 2000 采用了客戶/服務器計算模型,即中央服務器用來存放數(shù)據庫,該服務器可以被多臺客戶機訪問,數(shù)據庫應用的處理過程分布在客戶機和服務器上??蛻?服務器計算模型分為兩層的客戶/服務器結構。在兩層的客戶/服務器系統(tǒng)中,客戶機通過網絡與運行SQL Server 2000實例的服務器相連,客戶機用來完成數(shù)據表示和大部分業(yè)務邏輯
53、的實現(xiàn),服務器完成數(shù)據的存儲,這種客戶機被稱為“胖客戶機”(thick client)。在多層的客戶/服務器系統(tǒng)中,應用至少要經歷三個處理層,第一層仍是客戶機,但是它只負責數(shù)據的表示;第二層是業(yè)務邏輯服務器,負責業(yè)務邏輯的實現(xiàn),所有的客戶機都可以對它進行訪問;第三層是數(shù)據庫。這種多層結構中的客戶機被稱為“瘦客戶機”(thin client)。Internet應用就是三層結構的一個典型例子。</p><p> 數(shù)
54、據庫系統(tǒng)采用客戶/服務器結構的好處是,數(shù)據集中存儲在服務器上,而不是分開存儲在客戶機上,使所有用戶都可以訪問到相同的數(shù)據。業(yè)務邏輯和安全規(guī)則可以在服務器上定義一次,而后被所有的客戶使用。關系數(shù)據庫服務器僅返回應用程序所需要的數(shù)據,這樣可以減少網絡流量。節(jié)省硬件的開銷,因為數(shù)據都存儲在服務器上,不需在客戶機上存儲數(shù)據,所以客戶機硬件不需要具備存儲和處理大量的數(shù)據能力。同樣,服務器不需要具備數(shù)據表示的功能。由于數(shù)據集中存儲在服務器上,所以備
55、份和恢復起來很容易。</p><p> 2.4.2 SQL 語言介紹</p><p> SQL是英文Structured Query Language的縮寫,中文意思是結構化查詢語言。SQL是一種介于關系代數(shù)與關系演算之間的結構化查詢語言,它是一個通用的、功能極強的關系數(shù)據庫語言。SQL雖然名為查詢語言,但實際上具有定義、查詢、更新和控制等多種功能。從20世紀70年代末起,在推出的關系
56、數(shù)據庫系統(tǒng)產品ORACLE、SQL/DS、DB2、SYBASE上都實現(xiàn)了SQL語言。SQL語言是一種非過程化語言,它一次處理一個記錄集合,對數(shù)據提供自動導航。SQL語言允許用戶在高層的數(shù)據結構上工作,而不對單個記錄進行操作。SQL語言不要求用戶指定數(shù)據的存取方法,而是使用查詢優(yōu)化器,由系統(tǒng)決定對指定數(shù)據存取的最快手段。當設計者在關系表上定義了索引時,系統(tǒng)會自動利用索引進行快速檢索,用戶不需知道表上是否有索引或者有什么類型的索引等細節(jié)。&
57、lt;/p><p> SQL主要組成分成四個部分:數(shù)據定義、數(shù)據操縱、數(shù)據控制、制嵌入式SQL的使用規(guī)定。數(shù)據定義(DDL):用于定義SQL模式、基本表、視圖和索引[13-14]。</p><p> 數(shù)據操縱(DML):它分為數(shù)據查詢和數(shù)據更新兩類。其中數(shù)據更新又分成插入、刪除和修改三種操作。數(shù)據控制(DCL):包括對基本表和視圖的授權,完整性規(guī)則的描述,事務控制等內容。嵌入式SQL的使用
58、規(guī)定:其內容涉及到SQL語句嵌入在宿主語言程序中使用的規(guī)則。</p><p> ?。?)SQL的數(shù)據查詢</p><p> SELECT語句的語法如下:</p><p> SELECT 目標表的列名或列表達式序列</p><p> FROM 基本表或視圖</p><p> [WHERE行條件表達式]</
59、p><p> [GROUP BY列名序列</p><p> [HAVING分組條件表達式]</p><p> [ORDER BY列名[ASC|DESC]…]</p><p> 句法中[]表示該成分可有,也可無。</p><p> 整個語句的執(zhí)行過程如下:</p><p> (a)讀取FR
60、OM子句中基本表、視圖的數(shù)據,執(zhí)行笛卡爾積操作。</p><p> (b)讀取滿足WHERE子句中給出的條件表達式的元組。</p><p> (c)按GROUP子句中指定的列的值分組,同時提取滿足HAVING子句中分組條件表達式的那些分組。</p><p> (d)按SELECT子句中給出的列名或列表達式求值輸出。</p><p>
61、(e)ORDER子句對輸出的目標表進行排序,按附加說明ASC升序排列,或按DESC降序排列。</p><p> SELECT語句中,WHERE子句稱為“行條件子句”,GROUP子句稱為“分組子句”,HAVING子句稱為“分組條件子句”,ORDER子句稱為“排序子句”。</p><p><b> ?。?)數(shù)據插入</b></p><p><
62、;b> 數(shù)據插入語法如下:</b></p><p> INSERT INTO 基本表名(列名表)</p><p> VALUES(元組值)</p><p> 或者INSERT INTO 基本表名(列名表)</p><p> ?。╰able(元組值),</p><p><b> ?。ㄔ?/p>
63、組值),</b></p><p><b> ……)</b></p><p> 前一種格式只能插入一個元組,后一種格式可以插入多個元組。</p><p><b> ?。?)數(shù)據刪除</b></p><p> SQL的刪除操作是指從基本表刪除元組,其語法如下:</p>&
64、lt;p> DELETE FROM 基本表</p><p> [WHERE條件表達式]</p><p> 其語義是從基本表中刪除滿足條件表達式的元組。</p><p><b> ?。?)數(shù)據修改</b></p><p> 當需要修改基本表中元組的某些列的值時,可以用UPDATE語句實現(xiàn),其句法如下:<
65、/p><p> UPDATE 基本表</p><p> SET 列名=值表達式[,列名=值表達式…]</p><p> [WHERE條件表達式]</p><p> 其語義是:修改基本表中滿足條件表達式的那些元組中的列值,需要修改的列值在SET子句中指出。</p><p><b> 2.5 本章小結<
66、;/b></p><p> 本章闡述了數(shù)據庫系統(tǒng)的發(fā)展以及數(shù)據庫的一些基本概念。</p><p> 本章還詳細的介紹了關系數(shù)據庫的一些基本知識,其中包括數(shù)據模型、實體之間的關系以及規(guī)范化設計方法。并且介紹了數(shù)據庫應用程序的層次結構。包括單層結構、雙層結構以及多層結構。簡單介紹了關系數(shù)據庫標準語言SQL,并通過圖形形象的表述了SQL對關系數(shù)據庫模型的支持。</p>&
67、lt;p><b> 3 系統(tǒng)分析</b></p><p><b> 3.1 系統(tǒng)分析</b></p><p> 現(xiàn)代的社會是信息化的社會,信息無所不在。在生產領域、流通領域、各個部門每天都和信息打交道,如何處理如此多的信息成為了一個重要的課題。學生在學期開始選課是教學活動中的一個重要環(huán)節(jié),該環(huán)節(jié)如果能管理好,它不僅能加快學生的選課速度
68、,也提高了整個教學活動的效率。</p><p> 大學一般都有上千名學生,每學期開始學生都要選課,因而產生了大量的課程信息。考慮到用戶使用的方便和處理的信息量系統(tǒng)要完成錄入,保存,查詢,修改和刪除課程信息的各種過程,能打印出課程信息表。所以系統(tǒng)的基本體系結構采用C/S模式。</p><p> 3.1.1 用戶要求</p><p> 系統(tǒng)的主要使用對象是需要選課
69、的學生。學生在選課是要察看各個課程的詳細信息,還要選擇一些感興趣的課程,需要生成課表,在發(fā)現(xiàn)課程有沖突后能夠修改先前選擇的信息。需要隨學生選課的變化,計算相應的總學分。在全部選定后,打印報表。系統(tǒng)還需要管理員來查看和修改學生的總體選課情況,課程信息和學生信息。</p><p> 3.1.2 業(yè)務流程分析</p><p> 學生選課前要登錄系統(tǒng),查看所有課程的詳細信息,包括課程代號、授課
70、教師、教室、上課時間、學分、剩余名額等。根據課程代號,學生可以查詢相應的課程,并添加課程。查看課表,并能發(fā)現(xiàn)是否存在沖突課程,如果存在,可以刪除該課程,并重新選擇。打印課表,包含詳細的課程信息。最后,選課完畢。學生選課的數(shù)據基本流程如圖3-1所示:</p><p> 圖3-1 學生選課流程</p><p> 3.1.3 系統(tǒng)實體E-R圖分析</p><p>
71、經過上述系統(tǒng)功能分析和需求總結,設計如下所示的實體和屬性的定義:</p><p> 課程信息(課程代號,課程名稱,授課教師,教室,剩余名額,上課時間,學分)</p><p> 學生信息(學號,姓名,性別,班級,出生年月日,是否已選課)</p><p> 學生登錄信息(學號,用戶名,密碼,權限代號)</p><p> 學生選課信息(學號
72、,課程代號,學期,課程成績)</p><p> 用戶權限(權限名稱,權限代號)。</p><p> 本系統(tǒng)根據上面的設計規(guī)劃出的實體有:課程信息實體,學生信息實體,學生登錄信息實體,學生選課信息實體,用戶權限實體。</p><p> 實體之間關系的E-R圖如圖3-2所示。</p><p> 圖3-2系統(tǒng)E-R圖</p>
73、<p> 課程信息實體E-R圖,如圖3-3所示:</p><p> 圖3-3課程信息實體E-R圖</p><p> 學生選課實體E-R圖,如圖3-4所示:</p><p> 圖3-4 學生選課實體圖</p><p> 學生信息實體E-R圖,如圖3-5所示:</p><p> 圖3-5 學生信息實體
74、圖</p><p> 登錄信息實體E-R圖,如圖3-6所示:</p><p> 圖3-6 登錄信息實體圖</p><p> 用戶權限實體E-R圖,如圖3-7所示:</p><p> 圖3-7 用戶權限實體圖</p><p><b> 3.2本章小結</b></p><
75、p> 學生選課系統(tǒng)主要是為學生選課的管理提供全面、準確、科學的管理方法,方便快捷地處理選課的管理信息;避免了信息處理錯誤,提高了信息管理的工作效率,大大地節(jié)省人力和物力的開支。本章主要闡述了系統(tǒng)的業(yè)務流程,根據業(yè)務流程畫出繪制出了E-R圖。</p><p><b> 4 系統(tǒng)實現(xiàn)</b></p><p> 4.1 創(chuàng)建一個工作空間和應用程序對象</p
76、><p> 創(chuàng)建一個工作空間(WorkSpace)student,目標(Target)student和應用(Application)stu,在應用的open 事件中寫入如下的語句進行應用與數(shù)據庫的連接。</p><p> // Profile stu_select</p><p> SQLCA.DBMS = "ODBC"</p>
77、<p> SQLCA.AutoCommit = False</p><p> SQLCA.DBParm = "ConnectString='DSN=stu_select;UID=;PWD='"</p><p><b> connect;</b></p><p><b> 4.2創(chuàng)建
78、數(shù)據庫表</b></p><p> 為了保存學生信息、課程信息、學生選課信息、登錄信息、用戶權限信息,數(shù)據庫設計了學生信息表,課程信息表,學生選課信息表,登錄信息表和用戶權限信息表。這些表使得用戶對數(shù)據的增刪改變得非常方便,數(shù)據的冗余不是十分明顯。</p><p> 數(shù)據庫中的學生信息表結構如表4-1所示:</p><p> 表4-1 學生信息表(
79、stu_inform)</p><p> 數(shù)據庫中的課程信息表結構如表4-2所示:</p><p> 表4-2 課程信息表(course_inform)</p><p> 數(shù)據庫中的學生選課信息表如表4-3所示:</p><p> 表4-3學生選課信息表(stu_select)</p><p> 數(shù)據庫中的登
80、錄信息如表4-4所示:</p><p> 表4-4登錄信息表(stu_login)</p><p> 數(shù)據庫中的權限信息如表4-5所示:</p><p> 表4-5權限信息表(user_gl)</p><p><b> 4.3創(chuàng)建主窗口</b></p><p> 通過主窗口可以實現(xiàn)信息查
81、詢,選擇課程,修改選課打印課表等功能。其主要實現(xiàn)窗口如下圖4-1所示:</p><p><b> 圖4-1 主窗口</b></p><p><b> 4.4 創(chuàng)建主菜單</b></p><p> 創(chuàng)建主菜單主要是方便各種功能的實現(xiàn),從而實現(xiàn)更好的完成學生選課,查看課程信息等功能。如圖4-2所示:</p>
82、<p><b> 圖4-2 主菜單</b></p><p> 在“課程查詢”菜單項的clicked事件中編寫代碼:</p><p> open(w_course_select)</p><p> 在“選課”菜單項的click事件中編寫代碼:</p><p> open(w_course_add)&l
83、t;/p><p> 在“生成課表”菜單項的click事件中編寫代碼:</p><p> open(w_course_table)</p><p> 4.5系統(tǒng)管理模塊的實現(xiàn)</p><p> 4.5.1創(chuàng)建課程查詢窗口</p><p> 在主菜單窗口單擊“課程查詢”即可打開此窗口,使用者可以在此窗口實現(xiàn)對課程的查
84、詢。下圖4-3為“課程查詢窗口”的主界面。</p><p> 圖4-3 課程查詢窗口</p><p> 其中一些主要程序代碼如下:</p><p> (1)open事件代碼</p><p> dw_1.settransobject(sqlca)</p><p> dw_1.retrieve()</p&g
85、t;<p> ?。?)“查找”按鈕的click事件代碼</p><p> dw_1.setfilter("")</p><p> if sle_1.text= "" or sle_1.text ="請在此輸入查詢內容" then</p><p> messagebox("錯誤!
86、","請輸入查詢內容!")</p><p> sle_1.event getfocus( )</p><p><b> else</b></p><p> if rb_1.checked=true then</p><p><b> //精確查找</b><
87、/p><p> choose case ddlb_1.text</p><p> case "課程代號"</p><p> dw_1.setfilter("課程代號='"+sle_1.text+"'")</p><p> case "課程名稱"
88、</p><p> dw_1.setfilter("課程名稱='"+sle_1.text+"'")</p><p> case "授課教師"</p><p> dw_1.setfilter("授課教師='"+sle_1.text+"'&qu
89、ot;)</p><p> case "上課時間"</p><p> dw_1.setfilter("上課時間='"+sle_1.text+"'")</p><p> end choose</p><p><b> else</b><
90、;/p><p><b> //模糊查詢</b></p><p> choose case ddlb_1.text</p><p> case "課程代號"</p><p> dw_1.setfilter("課程代號 like"+"'%"+sle_1.
91、text+"%'")</p><p> case "課程名稱"</p><p> dw_1.setfilter("課程名稱 like"+"'%"+sle_1.text+"%'")</p><p> case "授課教師"
92、;</p><p> dw_1.setfilter("授課教師 like"+"'%"+sle_1.text+"%'")</p><p> case "上課時間"</p><p> dw_1.setfilter("上課時間 like"+"
93、'%"+sle_1.text+"%'")</p><p> end choose</p><p><b> end if</b></p><p><b> end if </b></p><p><b> //檢索數(shù)據</b>
94、;</p><p> dw_1.retrieve()</p><p> ?。?)“選課”按鈕click事件代碼</p><p> open(w_course_add)</p><p> ?。?)“查看課表”按鈕click事件代碼</p><p> open(w_course_table)</p>&
95、lt;p> 4.5.2 創(chuàng)建添加選課窗口</p><p> 單擊主窗口的“選課”即可打開此窗口界面,在此界面可以實現(xiàn)對課程信息的選擇查看,可以根據課程代號查詢相應課程的詳細信息,選擇此課程,并計算選課門數(shù)和課程總學分。下圖4-2為“添加選課窗口”的主界面。</p><p> 圖4-4 添加選課窗口</p><p> 其中一些主要程序代碼如下:</
96、p><p> ?。?)open事件代碼</p><p> dw_1.settransobject(sqlca)</p><p> dw_2.settransobject(sqlca)</p><p> string user_name, student_no</p><p><b> //檢索用戶的學號&
97、lt;/b></p><p> SELECT stu_login.學號, </p><p> stu_login.用戶名 </p><p> INTO :student_no, </p><p> :user_name </p><p> FROM stu_login </p&g
98、t;<p> WHERE stu_login.用戶名 = :login_name ; </p><p> //根據學號查詢用戶的詳細信息</p><p> dw_2.setfilter("")</p><p> dw_2.setfilter(" stu_select_學號='"+studen
99、t_no+"'")</p><p> dw_2.retrieve()</p><p> //顯示學生選擇課程數(shù),和其學分總數(shù)</p><p> real score</p><p><b> int m,n</b></p><p> m=dw_2.rowcou
100、nt()</p><p><b> score=0.0</b></p><p> for n=1 to m</p><p> score=score+real(dw_2.object.course_inform_學分[n])</p><p><b> next</b></p>
101、<p> st_3.text=string(m)</p><p> st_6.text=string(score)</p><p> ?。?)查找事件代碼如下:</p><p> if sle_1.text="" then</p><p> messagebox("錯誤!","
102、;請輸入查詢課程的代碼")</p><p> sle_1.event getfocus( )</p><p><b> else</b></p><p> dw_1.setfilter("")</p><p> dw_1.setfilter("課程代號='"
103、;+sle_1.text+"'")</p><p> dw_1.retrieve()</p><p> cb_1.default=false</p><p> cb_2.default=true </p><p><b> end if</b></p><p>
104、 (3)“確認選擇課程”按鈕click事件代碼</p><p> integer rnt</p><p> rnt=messagebox("注意!","你是否確定選擇該課程?",Information!,YesNo! )</p><p> string user_name,cour_no,student_no,cou
105、r_name,cour_sel_leastno</p><p> if rnt = 1 and sle_1.text<> "" then</p><p> //根據登錄的用戶名,檢索出用戶的學號</p><p> SELECT stu_inform.學號, </p><p> stu_login.用
106、戶名 </p><p> INTO :student_no, </p><p> :user_name </p><p> FROM stu_inform, </p><p> stu_login </p><p> WHERE ( stu_inform.學號 = stu_login.學號 )
107、and </p><p> ( ( stu_login.用戶名 = :login_name ) </p><p><b> ) ; </b></p><p> //查詢stu_select表,看是否此學生已經選擇這門課程</p><p> SELECT stu_select.課程代號 </p&g
108、t;<p> INTO :cour_no </p><p> FROM stu_select </p><p> WHERE ( stu_select.學號 = :stu_no ) AND </p><p> ( stu_select.課程代號 = :sle_1.text ) ; </p><p> SELEC
109、T course_inform.剩余名額 </p><p> INTO :cour_sel_leastno </p><p> FROM course_inform, </p><p> stu_select </p><p> WHERE ( course_inform.課程代號 = stu_select.課程代號 ) a
110、nd </p><p> ( ( course_inform.課程代號 = :sle_1.text ) </p><p><b> ) ;</b></p><p> if cour_no<>"" then</p><p> messagebox("提示&quo
111、t;,"你已經選擇過此門課程")</p><p> elseif cour_sel_leastno ="0" then </p><p> messagebox("提示","該課程的剩余名額為0,請選擇其他課程!")</p><p><b> else</b>
112、</p><p> //插入用戶選擇課程到stu_select表</p><p> INSERT INTO stu_select </p><p> ( 學號, 課程代號 ) </p><p> VALUES ( :student_no, </p><p> :sle_1.text); <
113、;/p><p> messagebox("提示","恭喜你,添加課程成功!");</p><p> //學生選定該課程后,在該課程的剩余名額中減少一人</p><p> UPDATE course_inform </p><p> SET 剩余名額 = '剩余名額 - 1' ;&
114、lt;/p><p> dw_2.retrieve( ) </p><p><b> end if</b></p><p> elseif sle_1.text= "" then </p><p> messagebox("提示","你還沒有選課!")<
115、/p><p><b> end if </b></p><p> dw_2.settransobject(sqlca)</p><p> string user_name1, student_no1</p><p><b> //檢索用戶的學號</b></p><p>
116、 SELECT stu_login.學號, </p><p> stu_login.用戶名 </p><p> INTO :student_no1, </p><p> :user_name1 </p><p> FROM stu_login </p><p> WHERE stu_logi
117、n.用戶名 = :login_name ; </p><p> //根據學號查詢用戶的詳細信息</p><p> dw_2.setfilter("")</p><p> dw_2.setfilter(" stu_select_學號='"+student_no1+"'")</
118、p><p> dw_2.retrieve()</p><p> //刷新學生選擇課程數(shù),和其學分總數(shù)</p><p> real score</p><p><b> int m,n</b></p><p> m=dw_2.rowcount()</p><p><
119、;b> score=0.0</b></p><p> for n=1 to m</p><p> score=score+real(dw_2.object.course_inform_學分[n])</p><p><b> next</b></p><p> st_3.text=string(
120、m)</p><p> st_6.text=string(score)</p><p> 4.5.3 創(chuàng)建生成課表窗口</p><p> 打開主窗口,單擊“生成課表”,即可打開本窗口的維護界面,在本窗口主要實現(xiàn)學生課程的編排和沖突課程的修改刪除,還可以打印課表。下圖為生成課表界面,如圖4-5所示</p><p> 圖4-5 生成課表主
121、窗口</p><p> 其中一些主要代碼如下:</p><p> ?。?)查看課表事件的代碼</p><p> dw_1.settransobject(sqlca)</p><p> dw_1.setfilter("stu_inform_學號='"+</p><p> trim(st
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學生選課系統(tǒng)-課程設計報告
- 學生選課系統(tǒng)課程設計報告
- 學生選課系統(tǒng)設計報告課程設計
- 學生選課管理系統(tǒng)課程設計報告
- 課程設計報告--學生選課管理系統(tǒng)
- 學生選課系統(tǒng)課程設計
- 學生選課系統(tǒng)課程設計
- 學生選課系統(tǒng)課程設計
- vfp課程設計報告--學生選課管理系統(tǒng)
- 學生選課系統(tǒng)課程設計
- 課程設計--學生選課系統(tǒng)
- 學生選課系統(tǒng)課程設計
- 學生選課信息管理系統(tǒng)課程設計報告
- 軟件工程課程設計報告--學生選課系統(tǒng)
- 數(shù)據結構課程設計報告---學生選課系統(tǒng)
- pb課程設計—學生選課系統(tǒng)
- 學生選課管理系統(tǒng)課程設計
- c#學生選課系統(tǒng)課程設計
- 面向對象程序設計學生選課系統(tǒng)課程設計報告
- c++課程設計--學生選課系統(tǒng)程序設計報告
評論
0/150
提交評論