版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 學(xué)生選課管理系統(tǒng)</b></p><p><b> 摘 要</b></p><p> 隨著社會的發(fā)展,學(xué)生的人數(shù)和課程的種類急速增加,傳統(tǒng)的選課管理模式已經(jīng)無法滿足當(dāng)前的實際需求,為此,我們開發(fā)了學(xué)生選課管理系統(tǒng)。</p><p> 本人結(jié)合學(xué)生選課管理的實際需要,完成了對學(xué)生選課管理
2、系統(tǒng)的需求分析、功能模塊劃分、數(shù)據(jù)庫模式分析等,并由此設(shè)計了后臺數(shù)據(jù)庫以及前臺應(yīng)用程序。</p><p> 文中首先對課題背景,數(shù)據(jù)庫基礎(chǔ)理論和SQL語言進行了簡單的討論;接著,對系統(tǒng)前臺開發(fā)工具PowerBuilder9.0,學(xué)生選課管理系統(tǒng)進行了詳細分析,劃分了具體的功能模塊;最后,給出了學(xué)生選課系統(tǒng)應(yīng)用程序的設(shè)計過程,以及每個功能模塊的核心代碼。</p><p> 系統(tǒng)可以實現(xiàn)學(xué)
3、生選課的一些重要功能,如:課程的添加、刪除,信息查詢、選課、生成課表,以及學(xué)生選課管理人員、用戶個人信息的維護等。</p><p> 關(guān)鍵詞 管理系統(tǒng);數(shù)據(jù)庫;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 課題的設(shè)計2</p><p> 1.3 本文的結(jié)構(gòu)2</p>&
11、lt;p> 2 相關(guān)知識基礎(chǔ)3</p><p> 2.1 數(shù)據(jù)庫的基礎(chǔ)知識3</p><p> 2.2 關(guān)系型數(shù)據(jù)庫5</p><p> 2.3 PowerBuilder9.0開發(fā)工具簡介7</p><p> 2.4 SQL概述8</p><p> 2.5 本章小結(jié)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è)務(wù)流程分析12</p><p> 3.1.3 系統(tǒng)實體E-R圖分析13</p><p> 3.2本章小
13、結(jié)14</p><p><b> 4 系統(tǒng)實現(xiàn)15</b></p><p> 4.1 創(chuàng)建一個工作空間和應(yīng)用程序?qū)ο?5</p><p> 4.2創(chuàng)建數(shù)據(jù)庫表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 生成課表窗口的設(shè)計
15、27</p><p> 4.5.6 創(chuàng)建登錄窗口29</p><p> 4.5.7 splash界面的實現(xiàn)30</p><p><b> 結(jié)束語32</b></p><p><b> 致 謝33</b></p><p><b> 參考文獻34&
16、lt;/b></p><p><b> 1 緒論</b></p><p> 數(shù)據(jù)庫是數(shù)據(jù)管理的最新技術(shù),是計算機科學(xué)的重要分支。今天,信息資源已成為各個部門的重要財富和資源。建立一個滿足各級部門信息處理要求的行之有效的信息系統(tǒng)也成為一個企業(yè)或組織生存和發(fā)展的重要條件。因此,作為信息系統(tǒng)核心和基礎(chǔ)的數(shù)據(jù)庫技術(shù)得到越來越廣泛的應(yīng)用。從小型單項事務(wù)處理系統(tǒng)到大型信
17、息系統(tǒng),從聯(lián)機事務(wù)處理到聯(lián)機分析處理,從一般企業(yè)管理到計算機輔助設(shè)計與制造 (CAD/CAM)、計算機集成制造系統(tǒng)(CIMS)、辦公信息系統(tǒng) (OIS)等,越來越多新的應(yīng)用領(lǐng)域采用數(shù)據(jù)庫存儲和處理他們的信息資源。</p><p><b> 1.1 課題的背景</b></p><p> 當(dāng)今時代是飛速發(fā)展的信息時代。在各行各業(yè)中離不開信息處理,這正是計算機被廣泛應(yīng)用
18、于信息管理系統(tǒng)的環(huán)境。計算機的最到好處在于利用它能夠進行信息管理。使用計算機進行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。</p><p> 尤其對于復(fù)雜的信息管理,計算機能夠充分發(fā)揮它的優(yōu)越性。計算機進行信息管理與信息管理系統(tǒng)的開發(fā)密切相關(guān),系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。本系統(tǒng)就是為了管理好學(xué)生選課信息而設(shè)計的。</p><p> 學(xué)生選課作為一種信息資源的集散地,包含很
19、多的信息數(shù)據(jù)的管理。 由于數(shù)據(jù)繁多,容易丟失,且不易查找??偟膩碚f,缺乏系統(tǒng),規(guī)范的信息管理手段。盡管有的學(xué)校有計算機,但是尚未用于信息管理,沒有發(fā)揮它的效力,資源閑置比較突出,這就是管理信息系統(tǒng)的開發(fā)基本環(huán)境。</p><p> 數(shù)據(jù)處理手工操作,工作量大,出錯率高,出錯后不易更改。造成了時間上的浪費</p><p> 基于這個問題,我認(rèn)為有必要建立一個學(xué)生選課系統(tǒng),使學(xué)生選課信息管
20、理工作規(guī)范化、系統(tǒng)化、程序化,避免學(xué)生選課管理的隨意性,提高信息處理的速度和準(zhǔn)確性,能夠及時、準(zhǔn)確、有效的查詢和修改選課情況。</p><p><b> 1.2 課題的設(shè)計</b></p><p> 本文就學(xué)生選課系統(tǒng)的設(shè)計與制作展開分析。學(xué)生選課系統(tǒng)主要應(yīng)用數(shù)據(jù)庫技術(shù)開發(fā),先從數(shù)據(jù)庫的基本知識開始介紹, 數(shù)據(jù)庫的基本概念、數(shù)據(jù)庫的發(fā)展、數(shù)據(jù)庫的結(jié)構(gòu),還介紹了開發(fā)
21、工具PowerBuilder9.0和SQL語言。我主要是應(yīng)用PowerBuilder9.0為前端開發(fā)工具,利用SQL語言實現(xiàn)數(shù)據(jù)查詢。設(shè)計系統(tǒng)時,先從系統(tǒng)的數(shù)據(jù)流程開始分析,設(shè)計系統(tǒng)的業(yè)務(wù)流程圖、系統(tǒng)的數(shù)據(jù)流程圖、系統(tǒng)的E-R圖。根據(jù)開題報告的設(shè)計要求開始進入系統(tǒng)的總體設(shè)計,接著制定系統(tǒng)的設(shè)計思想,分析系統(tǒng)的功能并設(shè)計系統(tǒng)的功能模塊,這些都是系統(tǒng)制作前的準(zhǔn)備工作;準(zhǔn)備工作完成后,開始系統(tǒng)數(shù)據(jù)庫的建立,主要有各個功能窗口的設(shè)計,將設(shè)計好的
22、窗口集中到主菜單上,通過用戶的用戶名和密碼的登錄可以進入到主窗口,這樣就完成系統(tǒng)的制作。最后,對系統(tǒng)進行調(diào)試,性能分析。</p><p><b> 1.3 本文的結(jié)構(gòu)</b></p><p> 第2章,簡單介紹了相關(guān)的基礎(chǔ)知識(如:數(shù)據(jù)庫的基本概念、數(shù)據(jù)庫的類型、數(shù)據(jù)庫的結(jié)構(gòu)、開發(fā)工具等),為系統(tǒng)的設(shè)計進行知識儲備。</p><p> 第
23、3章,詳細介紹了系統(tǒng)分析與設(shè)計。</p><p> 第4章,介紹了系統(tǒng)的制作過程,如:建立數(shù)據(jù)庫、設(shè)計制作窗口等。</p><p> 第5章,對系統(tǒng)進行運行、調(diào)試,對系統(tǒng)性能分析和評價。</p><p><b> 2 相關(guān)知識基礎(chǔ)</b></p><p> 2.1 數(shù)據(jù)庫的基礎(chǔ)知識</p><
24、p> 2.1.1 數(shù)據(jù)庫系統(tǒng)的發(fā)展</p><p> 數(shù)據(jù)庫系統(tǒng)是在文件系統(tǒng)的基礎(chǔ)之上發(fā)展而來的,經(jīng)歷了層次數(shù)據(jù)庫、網(wǎng)狀數(shù)據(jù)庫和關(guān)系數(shù)據(jù)庫三個階段。由于關(guān)系型數(shù)據(jù)庫采用人們比較容易理解和接受的二維表格來組織數(shù)據(jù),發(fā)展迅速,已成為數(shù)據(jù)庫產(chǎn)品的主流。這里介紹的數(shù)據(jù)庫知識都是指的關(guān)系數(shù)據(jù)庫。數(shù)據(jù)庫架構(gòu)如圖2-1 所示。</p><p> 圖2-1 數(shù)據(jù)庫應(yīng)用的架構(gòu)</p>
25、<p> 2.1.2 基本概念</p><p> 數(shù)據(jù)庫(DataBase,簡稱DB)是按一定組織方式存儲在計算機存儲器中、相互關(guān)聯(lián)的數(shù)據(jù)集合,數(shù)據(jù)庫的建立獨立于程序。所謂關(guān)系數(shù)據(jù)庫就是將數(shù)據(jù)表示為表的集合,通過建立簡單表之間的關(guān)系來定義結(jié)構(gòu)的一種數(shù)據(jù)庫。</p><p> 數(shù)據(jù)庫管理系統(tǒng)(DBMS)是一個管理數(shù)據(jù)庫的軟件系統(tǒng),為用戶提供了描述數(shù)據(jù)庫、操縱數(shù)據(jù)庫和維護數(shù)
26、據(jù)庫的方法和命令,并且能自動控制數(shù)據(jù)庫的安全以及數(shù)據(jù)完整。常見數(shù)據(jù)庫管理系統(tǒng)有:Oracle、Sybase、Microsoft SQL Server、Microsoft Access、Microsoft FoxPro、IBM DB2等。</p><p> 數(shù)據(jù)庫系統(tǒng)(DBS)是一個具有管理數(shù)據(jù)庫功能的計算機系統(tǒng),它包括應(yīng)用軟件、數(shù)據(jù)庫(DB)、數(shù)據(jù)庫管理系統(tǒng)(DBMS)和數(shù)據(jù)庫管理人員(DBA)幾部分。圖
27、2-1直觀地表示了數(shù)據(jù)庫應(yīng)用的架夠。數(shù)據(jù)庫管理人員(DBA)一般是針對大型的數(shù)據(jù)庫應(yīng)用而言的,主要負責(zé)數(shù)據(jù)庫的日常運行和維護,如數(shù)據(jù)庫備份等工作。</p><p> 2.1.3 數(shù)據(jù)庫及數(shù)的研究領(lǐng)域</p><p> 數(shù)據(jù)庫學(xué)科的研究范圍十分廣泛的,概括地講可以包括以下三個領(lǐng)域:</p><p> (1)數(shù)據(jù)庫管理系統(tǒng)軟件的研制</p><
28、p> DBMS[3]是數(shù)據(jù)庫系統(tǒng)的基礎(chǔ)。DBMS的研制包括DBMS本身及以DBMS為核心的一組相互聯(lián)系的軟件系統(tǒng),包括工具軟件和中間件。研制的目標(biāo)是提高系統(tǒng)的可用性、可靠性、可伸縮性;提高性能和提高用戶的生產(chǎn)率。</p><p> DBMS核心技術(shù)的研究和實現(xiàn)是三十余年來數(shù)據(jù)庫領(lǐng)域所取得的主要成就。DBMS是一個基礎(chǔ)軟件系統(tǒng),它提供了對數(shù)據(jù)庫中的數(shù)據(jù)進行存儲、檢索和管理的功能。</p>&
29、lt;p><b> (2)數(shù)據(jù)庫設(shè)計</b></p><p> 數(shù)據(jù)庫設(shè)計的主要任務(wù)是DBMS的支持下,按照應(yīng)用的要求,為某一部門或組織設(shè)計一個結(jié)構(gòu)合理、使用方便、效率較高的數(shù)據(jù)庫及其應(yīng)用系統(tǒng)。其中主要的研究方向是數(shù)據(jù)庫設(shè)計方法學(xué)和設(shè)計工具,包括數(shù)據(jù)庫設(shè)計方法、設(shè)計工具和設(shè)計理論的研究,數(shù)據(jù)建模和數(shù)據(jù)建模的研究,計算機輔助數(shù)據(jù)庫設(shè)計方法及其軟件系統(tǒng)的研究。數(shù)據(jù)庫設(shè)計規(guī)范和標(biāo)準(zhǔn)的研究
30、等。</p><p><b> ?。?)數(shù)據(jù)庫理論</b></p><p> 數(shù)據(jù)庫理論的研究主要集中于關(guān)系的規(guī)范化理論、關(guān)系數(shù)據(jù)理論等。近年來,隨著人工智能與數(shù)據(jù)庫理論的結(jié)合、并行計算技術(shù)等的發(fā)展,數(shù)據(jù)庫邏輯演繹和知識推理、數(shù)據(jù)庫中的知識發(fā)現(xiàn)(Knowledge Discovery from Database,簡稱KDD[4])、并行算法等成為新的理論研究方向。&
31、lt;/p><p> 計算機領(lǐng)域中其他新興技術(shù)的發(fā)展對數(shù)據(jù)庫技術(shù)產(chǎn)生了重大影響。數(shù)據(jù)庫技術(shù)和其他計算機技術(shù)的互相結(jié)合、互相滲透,使數(shù)據(jù)庫中新的技術(shù)內(nèi)容層出不窮。數(shù)據(jù)庫的許多概念、技術(shù)內(nèi)容、應(yīng)用領(lǐng)域,甚至某些原理都有了重大的發(fā)展和變化。建立和實現(xiàn)了一系列新型數(shù)據(jù)庫系統(tǒng),如分布式數(shù)據(jù)庫系統(tǒng)、并行數(shù)據(jù)庫系統(tǒng)、知識庫系統(tǒng)、多媒體數(shù)據(jù)庫系統(tǒng)等。它們共同構(gòu)成了數(shù)據(jù)庫系統(tǒng)大家族,使數(shù)據(jù)庫技術(shù)不斷地涌現(xiàn)新的研究方向。</p&
32、gt;<p> 2.2 關(guān)系型數(shù)據(jù)庫</p><p> 關(guān)系數(shù)據(jù)庫由表組成。一個關(guān)系是由一個二維表來定義的:表的行保存事物的一組屬性數(shù)據(jù),表的列定義了事物的屬性。</p><p> 以下是關(guān)系型數(shù)據(jù)庫系統(tǒng)[5]的一些特點:</p><p> ·幾乎當(dāng)今所有的關(guān)系型數(shù)據(jù)庫系統(tǒng)都采用SQL語言來操縱數(shù)據(jù)庫中的數(shù)據(jù)。SQL語言是在20世紀(jì)7
33、0年代由IBM發(fā)展起來的,后來成為工業(yè)標(biāo)準(zhǔn)。</p><p> ·最重要的是必須保證數(shù)據(jù)的完整性。否則,存儲在數(shù)據(jù)庫中的數(shù)據(jù)就是毫無價值的。關(guān)系型數(shù)據(jù)庫系統(tǒng)包括許多特性,目的是阻止不符和要求的數(shù)據(jù)進入數(shù)據(jù)庫。</p><p> ·關(guān)系型數(shù)據(jù)庫系統(tǒng)被設(shè)計為一個便于修改的系統(tǒng),因為商業(yè)需求幾乎每天都在變化。</p><p> ·在文件
34、系統(tǒng)階段,相同的數(shù)據(jù)常常重復(fù)出現(xiàn)在許多記錄中,而關(guān)系型數(shù)據(jù)庫系統(tǒng)則會排除大多數(shù)的冗余數(shù)據(jù)。這就減少了對存儲空間的需求,加快了數(shù)據(jù)訪問的速度。</p><p> ·應(yīng)用程序可以通過多級的安全檢查來限制對數(shù)據(jù)的訪問。</p><p> 2.2.1 數(shù)據(jù)模型</p><p> 模型是現(xiàn)實世界特征的模擬和抽象。數(shù)據(jù)模型(Data Modal[6])是對現(xiàn)實世
35、界中數(shù)據(jù)特征的抽象。</p><p> 存在于人們頭腦之外的客觀世界,稱為現(xiàn)實世界。數(shù)據(jù)庫系統(tǒng)中保存的數(shù)據(jù)實際上是對現(xiàn)實世界的一種描述,它是采用數(shù)據(jù)模型對現(xiàn)實世界進行描述的。數(shù)據(jù)模型是數(shù)據(jù)庫系統(tǒng)中用于提供信息表示和操作手段的形式框架,是數(shù)據(jù)庫系統(tǒng)的核心和基礎(chǔ)。</p><p> 數(shù)據(jù)模型分為兩種,一種是概念數(shù)據(jù)模型,它是用來描述現(xiàn)實世界中數(shù)據(jù)及數(shù)據(jù)之間關(guān)系的模型,跟計算機沒有關(guān)系。這種
36、模型主要描述高層次的概念,按照用戶的觀點對數(shù)據(jù)和信息進行建模,把現(xiàn)實世界中的客觀對象抽象為某種信息結(jié)構(gòu),如被描述對象的意義、相互關(guān)系等。另外一種就是實體數(shù)據(jù)模型,它是用來描述信息世界中數(shù)據(jù)及數(shù)據(jù)之間的關(guān)系及存儲、處理特征的模型,主要包括層次模型、網(wǎng)狀模型、關(guān)系模型,它是按照計算機的觀點對數(shù)據(jù)建模,主要用于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)系可以分為兩類,一類是實體內(nèi)部的聯(lián)系,如組成實體的屬性之間的聯(lián)系,這種聯(lián)系往往比較容易理解。另外一種聯(lián)系就是實體之間的聯(lián)系
38、,如學(xué)生和班級之間的聯(lián)系:一個學(xué)生屬于某一個班級,而另一個班級有多個學(xué)生。</p><p> 實體完整性規(guī)則規(guī)定基本關(guān)系的所有主屬性都不能去空值,而不僅是主碼整體不能取空值。</p><p> 對于實體完整性規(guī)則說明如下:</p><p> 1.實體完整性規(guī)則是針對基本關(guān)系而言的,一個基本表通常對應(yīng)現(xiàn)實界的一個實體集。例如學(xué)生關(guān)系對應(yīng)于學(xué)生的集合。</p
39、><p> 2.現(xiàn)實世界中的實體是可區(qū)分的,即它們具有某種唯一性標(biāo)識。</p><p> 3.相應(yīng)地,關(guān)系模型中以主碼作為唯一性標(biāo)識。</p><p> 4.主碼中的屬性即主屬性不能取空值。所謂空值就是“不知道”或“無意義”的值。如果主屬性取空值,就說明存在某個不可標(biāo)識的實體,即存在不可區(qū)分的實體,這與第2點相矛盾,因此這個規(guī)則稱為實體完整性。</p>
40、<p> 2.2.3 規(guī)范化設(shè)計方法</p><p> 構(gòu)造數(shù)據(jù)庫時,必須遵循一定的規(guī)則。在關(guān)系數(shù)據(jù)庫中,這種規(guī)則就是范式(Normal Form)。或者說,滿足一定條件的關(guān)系模式,稱為范式。在1971年至1972年,E.F.Codd系統(tǒng)地提出了第一范式(1NF)、第二范式(2NF)和第三范式(3NF)的概念。1974年Codd和Boyce共同提出BCNF范式,為第三范式的改進。關(guān)系數(shù)據(jù)庫中的關(guān)
41、系必須滿足一定的要求,即需要滿足不同的范式。目前除了前面提到的三種范式,還有第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。</p><p> 2.3 PowerBuilder9.0開發(fā)工具簡介</p><p> PowerBuilder9.0是Sybase公司2003年推出的新一代4GL Plus數(shù)據(jù)庫開發(fā)工具,它不僅繼承了以往版本的各種先進技術(shù),而且適應(yīng)目前開放試軟件的
42、發(fā)展潮流,在快速集成開發(fā)環(huán)境中增加了構(gòu)建Web Service、JSP Web、EJB的功能,滿足了在4GL RAD環(huán)境中創(chuàng)建完整應(yīng)用和應(yīng)用組件的需求,并使企業(yè)應(yīng)用可以平滑過度到基于瀏覽器和Web的應(yīng)用模式下。同時,PowerBuilder9.0卓越的應(yīng)用開發(fā)效率及強大的Web功能為新版本增色不少。</p><p> 完整的應(yīng)用系統(tǒng)有工作空間、目標(biāo)、應(yīng)用對象。窗口上的菜單對象。數(shù)據(jù)窗口對象和控件對象,以及這些對
43、象的事件處理程序構(gòu)成。 </p><p> (1)工作空間和目標(biāo)</p><p> 在以前的版本中,程序員一次只能開發(fā)一個應(yīng)用程序,這樣使得應(yīng)用程序無法取得多個可用的組件信息,因此在構(gòu)件復(fù)雜應(yīng)用時會大大增加難度。</p><p> PowerBuilder9.0提供了Workspace功能,這讓開發(fā)人員同時在多個應(yīng)用或組件上進行開發(fā),同時PowerBuilde
44、r9.0用Target來描述加到Workspace中的應(yīng)用或組件。[11] PowerBuilder中存在三類Target是:Window 客戶、EAServer組件和Web站點。在PowerBuilder中,只有打開Workspace才能更有效地工作,開發(fā)者可以在Workspace中定義一個新的Target或者加入一個已經(jīng)存在的Target。因此,Workspace 已經(jīng)變成了PowerBuilder中所有活動的中心。 </p&
45、gt;<p> (2)窗口、控件、事件和程序</p><p> 在PowerBuilder中,窗口(Window)是主要的用戶界面,軟件開發(fā)人員往往把各種控制功能(如錄入、查詢、打印、統(tǒng)計等)做成按扭或其它控件放在窗口上有用戶選擇。應(yīng)用對象、窗口對象、菜單對象,窗口上的數(shù)據(jù)窗口控件和其他控件對象都對應(yīng)著若干個可能發(fā)生的事件[12-13],如應(yīng)用對象和窗口對象上有Open (打開),Close(關(guān)
46、閉)等事件,菜單項上有Clicked(鼠標(biāo)左鍵單擊或按回車鍵)等事件,窗口上的控件有Clicked、Double Clicked(用鼠標(biāo)左鍵雙擊)Getfocus(得到焦點),Edit Changed(數(shù)據(jù)被修改)等事件[14]。PowerBuilder的程序是嵌套在事件中的,也就是說由事件驅(qū)動的,一旦用戶選定了控件也就觸發(fā)了某個事件。軟件開發(fā)人員只需為各個控件的事件編寫事件處理程序,指定該事件被觸發(fā)時要進行的處理,應(yīng)用系統(tǒng)就這樣構(gòu)造出
47、來了。</p><p> 事件處理程序用PowerBuilder的專用語言PowerScript語言編寫。PowerScript語言是一種高水準(zhǔn)。面向?qū)ο蟮恼Z言,提供了豐富的內(nèi)置函數(shù)供軟件開發(fā)人員使用。事件處理程序有PowerScript語句和函數(shù)組成,來響應(yīng)被觸發(fā)的事件并做相應(yīng)的處理。</p><p> 例如,菜單項上有Clicked事件此事件的處理程序可能是打開另一個窗口,用戶用鼠
48、標(biāo)左鍵單擊此菜單時,Clicked事件被觸發(fā),指定的窗口被打開。又如窗口上有一個數(shù)據(jù)窗口和一些按扭,按扭上的文字為“錄入”、“刪除”、“存盤”等,這些按扭的功能分別為數(shù)據(jù)窗口中插入一行,刪除一行,將結(jié)果修改存盤,我們只需為這些按扭的Clicked事件編寫相應(yīng)的程序完成這些功能。</p><p><b> (3)函數(shù)</b></p><p> 函數(shù)是PowerScr
49、ipt語言的重要組成部分,PowerBuilder為軟件開發(fā)人員提供了近800個內(nèi)置函數(shù)[15-16],主要用于完成以下工作:訪問和操作數(shù)據(jù),操縱對像的數(shù)字或文本,進行計算,字符串處理,數(shù)據(jù)類型轉(zhuǎn)換,處理日期和時間,文本文件的輸入和輸出,生成商務(wù)圖形,打印數(shù)據(jù),與其他窗口的數(shù)據(jù)通信,處理郵件,Web應(yīng)用,分布式應(yīng)用等。此外,軟件開發(fā)人員還可以通過建立用戶自定義函數(shù)來滿足某個應(yīng)用系統(tǒng)的特殊要求。需要時還可調(diào)用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是一個大型關(guān)系數(shù)據(jù)庫管理系統(tǒng),它是微軟公司推出的新一代數(shù)據(jù)庫產(chǎn)品。它是微軟公司在SQL Server 7.0版的基礎(chǔ)上經(jīng)過改進和提高而推出的數(shù)據(jù)庫產(chǎn)品。它的
51、性能、可靠性、質(zhì)量以及易用性都比以前的版本大有提高。它提供了許多提高系統(tǒng)運行性能的新功能,并使數(shù)據(jù)庫的管理工作變得更加輕松容易。把SQL Server 2000作為OLTP 、數(shù)據(jù)倉庫以及電子商務(wù)應(yīng)用程序的后臺數(shù)據(jù)庫是一個不錯的選擇。在SQL Server 2000關(guān)系數(shù)據(jù)庫中,信息被存放在二維表格結(jié)構(gòu)的表(TABLE)中。數(shù)據(jù)庫中的表之間可以是相互關(guān)聯(lián)的,表之間的這種關(guān)聯(lián)性是通過主健和外鍵所體現(xiàn)的參照關(guān)系來實現(xiàn)的。數(shù)據(jù)庫中不僅包括表,
52、還包括其他數(shù)據(jù)庫對象,如:視圖、存儲過程、索引等。</p><p> SQL Server 2000 采用了客戶/服務(wù)器計算模型,即中央服務(wù)器用來存放數(shù)據(jù)庫,該服務(wù)器可以被多臺客戶機訪問,數(shù)據(jù)庫應(yīng)用的處理過程分布在客戶機和服務(wù)器上??蛻?服務(wù)器計算模型分為兩層的客戶/服務(wù)器結(jié)構(gòu)。在兩層的客戶/服務(wù)器系統(tǒng)中,客戶機通過網(wǎng)絡(luò)與運行SQL Server 2000實例的服務(wù)器相連,客戶機用來完成數(shù)據(jù)表示和大部分業(yè)務(wù)邏輯
53、的實現(xiàn),服務(wù)器完成數(shù)據(jù)的存儲,這種客戶機被稱為“胖客戶機”(thick client)。在多層的客戶/服務(wù)器系統(tǒng)中,應(yīng)用至少要經(jīng)歷三個處理層,第一層仍是客戶機,但是它只負責(zé)數(shù)據(jù)的表示;第二層是業(yè)務(wù)邏輯服務(wù)器,負責(zé)業(yè)務(wù)邏輯的實現(xiàn),所有的客戶機都可以對它進行訪問;第三層是數(shù)據(jù)庫。這種多層結(jié)構(gòu)中的客戶機被稱為“瘦客戶機”(thin client)。Internet應(yīng)用就是三層結(jié)構(gòu)的一個典型例子。</p><p> 數(shù)
54、據(jù)庫系統(tǒng)采用客戶/服務(wù)器結(jié)構(gòu)的好處是,數(shù)據(jù)集中存儲在服務(wù)器上,而不是分開存儲在客戶機上,使所有用戶都可以訪問到相同的數(shù)據(jù)。業(yè)務(wù)邏輯和安全規(guī)則可以在服務(wù)器上定義一次,而后被所有的客戶使用。關(guān)系數(shù)據(jù)庫服務(wù)器僅返回應(yīng)用程序所需要的數(shù)據(jù),這樣可以減少網(wǎng)絡(luò)流量。節(jié)省硬件的開銷,因為數(shù)據(jù)都存儲在服務(wù)器上,不需在客戶機上存儲數(shù)據(jù),所以客戶機硬件不需要具備存儲和處理大量的數(shù)據(jù)能力。同樣,服務(wù)器不需要具備數(shù)據(jù)表示的功能。由于數(shù)據(jù)集中存儲在服務(wù)器上,所以備
55、份和恢復(fù)起來很容易。</p><p> 2.4.2 SQL 語言介紹</p><p> SQL是英文Structured Query Language的縮寫,中文意思是結(jié)構(gòu)化查詢語言。SQL是一種介于關(guān)系代數(shù)與關(guān)系演算之間的結(jié)構(gòu)化查詢語言,它是一個通用的、功能極強的關(guān)系數(shù)據(jù)庫語言。SQL雖然名為查詢語言,但實際上具有定義、查詢、更新和控制等多種功能。從20世紀(jì)70年代末起,在推出的關(guān)系
56、數(shù)據(jù)庫系統(tǒng)產(chǎn)品ORACLE、SQL/DS、DB2、SYBASE上都實現(xiàn)了SQL語言。SQL語言是一種非過程化語言,它一次處理一個記錄集合,對數(shù)據(jù)提供自動導(dǎo)航。SQL語言允許用戶在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對單個記錄進行操作。SQL語言不要求用戶指定數(shù)據(jù)的存取方法,而是使用查詢優(yōu)化器,由系統(tǒng)決定對指定數(shù)據(jù)存取的最快手段。當(dāng)設(shè)計者在關(guān)系表上定義了索引時,系統(tǒng)會自動利用索引進行快速檢索,用戶不需知道表上是否有索引或者有什么類型的索引等細節(jié)。&
57、lt;/p><p> SQL主要組成分成四個部分:數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)控制、制嵌入式SQL的使用規(guī)定。數(shù)據(jù)定義(DDL):用于定義SQL模式、基本表、視圖和索引[13-14]。</p><p> 數(shù)據(jù)操縱(DML):它分為數(shù)據(jù)查詢和數(shù)據(jù)更新兩類。其中數(shù)據(jù)更新又分成插入、刪除和修改三種操作。數(shù)據(jù)控制(DCL):包括對基本表和視圖的授權(quán),完整性規(guī)則的描述,事務(wù)控制等內(nèi)容。嵌入式SQL的使用
58、規(guī)定:其內(nèi)容涉及到SQL語句嵌入在宿主語言程序中使用的規(guī)則。</p><p> ?。?)SQL的數(shù)據(jù)查詢</p><p> SELECT語句的語法如下:</p><p> SELECT 目標(biāo)表的列名或列表達式序列</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ù)據(jù),執(zhí)行笛卡爾積操作。</p><p> (b)讀取滿足WHERE子句中給出的條件表達式的元組。</p><p> (c)按GROUP子句中指定的列的值分組,同時提取滿足HAVING子句中分組條件表達式的那些分組。</p><p> (d)按SELECT子句中給出的列名或列表達式求值輸出。</p><p>
61、(e)ORDER子句對輸出的目標(biāo)表進行排序,按附加說明ASC升序排列,或按DESC降序排列。</p><p> SELECT語句中,WHERE子句稱為“行條件子句”,GROUP子句稱為“分組子句”,HAVING子句稱為“分組條件子句”,ORDER子句稱為“排序子句”。</p><p><b> ?。?)數(shù)據(jù)插入</b></p><p><
62、;b> 數(shù)據(jù)插入語法如下:</b></p><p> INSERT INTO 基本表名(列名表)</p><p> VALUES(元組值)</p><p> 或者INSERT INTO 基本表名(列名表)</p><p> (table(元組值),</p><p><b> (元
63、組值),</b></p><p><b> ……)</b></p><p> 前一種格式只能插入一個元組,后一種格式可以插入多個元組。</p><p><b> (3)數(shù)據(jù)刪除</b></p><p> SQL的刪除操作是指從基本表刪除元組,其語法如下:</p>&
64、lt;p> DELETE FROM 基本表</p><p> [WHERE條件表達式]</p><p> 其語義是從基本表中刪除滿足條件表達式的元組。</p><p><b> ?。?)數(shù)據(jù)修改</b></p><p> 當(dāng)需要修改基本表中元組的某些列的值時,可以用UPDATE語句實現(xiàn),其句法如下:<
65、/p><p> UPDATE 基本表</p><p> SET 列名=值表達式[,列名=值表達式…]</p><p> [WHERE條件表達式]</p><p> 其語義是:修改基本表中滿足條件表達式的那些元組中的列值,需要修改的列值在SET子句中指出。</p><p><b> 2.5 本章小結(jié)<
66、;/b></p><p> 本章闡述了數(shù)據(jù)庫系統(tǒng)的發(fā)展以及數(shù)據(jù)庫的一些基本概念。</p><p> 本章還詳細的介紹了關(guān)系數(shù)據(jù)庫的一些基本知識,其中包括數(shù)據(jù)模型、實體之間的關(guān)系以及規(guī)范化設(shè)計方法。并且介紹了數(shù)據(jù)庫應(yīng)用程序的層次結(jié)構(gòu)。包括單層結(jié)構(gòu)、雙層結(jié)構(gòu)以及多層結(jié)構(gòu)。簡單介紹了關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL,并通過圖形形象的表述了SQL對關(guān)系數(shù)據(jù)庫模型的支持。</p>&
67、lt;p><b> 3 系統(tǒng)分析</b></p><p><b> 3.1 系統(tǒng)分析</b></p><p> 現(xiàn)代的社會是信息化的社會,信息無所不在。在生產(chǎn)領(lǐng)域、流通領(lǐng)域、各個部門每天都和信息打交道,如何處理如此多的信息成為了一個重要的課題。學(xué)生在學(xué)期開始選課是教學(xué)活動中的一個重要環(huán)節(jié),該環(huán)節(jié)如果能管理好,它不僅能加快學(xué)生的選課速度
68、,也提高了整個教學(xué)活動的效率。</p><p> 大學(xué)一般都有上千名學(xué)生,每學(xué)期開始學(xué)生都要選課,因而產(chǎn)生了大量的課程信息。考慮到用戶使用的方便和處理的信息量系統(tǒng)要完成錄入,保存,查詢,修改和刪除課程信息的各種過程,能打印出課程信息表。所以系統(tǒng)的基本體系結(jié)構(gòu)采用C/S模式。</p><p> 3.1.1 用戶要求</p><p> 系統(tǒng)的主要使用對象是需要選課
69、的學(xué)生。學(xué)生在選課是要察看各個課程的詳細信息,還要選擇一些感興趣的課程,需要生成課表,在發(fā)現(xiàn)課程有沖突后能夠修改先前選擇的信息。需要隨學(xué)生選課的變化,計算相應(yīng)的總學(xué)分。在全部選定后,打印報表。系統(tǒng)還需要管理員來查看和修改學(xué)生的總體選課情況,課程信息和學(xué)生信息。</p><p> 3.1.2 業(yè)務(wù)流程分析</p><p> 學(xué)生選課前要登錄系統(tǒng),查看所有課程的詳細信息,包括課程代號、授課
70、教師、教室、上課時間、學(xué)分、剩余名額等。根據(jù)課程代號,學(xué)生可以查詢相應(yīng)的課程,并添加課程。查看課表,并能發(fā)現(xiàn)是否存在沖突課程,如果存在,可以刪除該課程,并重新選擇。打印課表,包含詳細的課程信息。最后,選課完畢。學(xué)生選課的數(shù)據(jù)基本流程如圖3-1所示:</p><p> 圖3-1 學(xué)生選課流程</p><p> 3.1.3 系統(tǒng)實體E-R圖分析</p><p>
71、經(jīng)過上述系統(tǒng)功能分析和需求總結(jié),設(shè)計如下所示的實體和屬性的定義:</p><p> 課程信息(課程代號,課程名稱,授課教師,教室,剩余名額,上課時間,學(xué)分)</p><p> 學(xué)生信息(學(xué)號,姓名,性別,班級,出生年月日,是否已選課)</p><p> 學(xué)生登錄信息(學(xué)號,用戶名,密碼,權(quán)限代號)</p><p> 學(xué)生選課信息(學(xué)號
72、,課程代號,學(xué)期,課程成績)</p><p> 用戶權(quán)限(權(quán)限名稱,權(quán)限代號)。</p><p> 本系統(tǒng)根據(jù)上面的設(shè)計規(guī)劃出的實體有:課程信息實體,學(xué)生信息實體,學(xué)生登錄信息實體,學(xué)生選課信息實體,用戶權(quán)限實體。</p><p> 實體之間關(guān)系的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> 學(xué)生選課實體E-R圖,如圖3-4所示:</p><p> 圖3-4 學(xué)生選課實體圖</p><p> 學(xué)生信息實體E-R圖,如圖3-5所示:</p><p> 圖3-5 學(xué)生信息實體
74、圖</p><p> 登錄信息實體E-R圖,如圖3-6所示:</p><p> 圖3-6 登錄信息實體圖</p><p> 用戶權(quán)限實體E-R圖,如圖3-7所示:</p><p> 圖3-7 用戶權(quán)限實體圖</p><p><b> 3.2本章小結(jié)</b></p><
75、p> 學(xué)生選課系統(tǒng)主要是為學(xué)生選課的管理提供全面、準(zhǔn)確、科學(xué)的管理方法,方便快捷地處理選課的管理信息;避免了信息處理錯誤,提高了信息管理的工作效率,大大地節(jié)省人力和物力的開支。本章主要闡述了系統(tǒng)的業(yè)務(wù)流程,根據(jù)業(yè)務(wù)流程畫出繪制出了E-R圖。</p><p><b> 4 系統(tǒng)實現(xiàn)</b></p><p> 4.1 創(chuàng)建一個工作空間和應(yīng)用程序?qū)ο?lt;/p
76、><p> 創(chuàng)建一個工作空間(WorkSpace)student,目標(biāo)(Target)student和應(yīng)用(Application)stu,在應(yīng)用的open 事件中寫入如下的語句進行應(yīng)用與數(shù)據(jù)庫的連接。</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ù)據(jù)庫表</b></p><p> 為了保存學(xué)生信息、課程信息、學(xué)生選課信息、登錄信息、用戶權(quán)限信息,數(shù)據(jù)庫設(shè)計了學(xué)生信息表,課程信息表,學(xué)生選課信息表,登錄信息表和用戶權(quán)限信息表。這些表使得用戶對數(shù)據(jù)的增刪改變得非常方便,數(shù)據(jù)的冗余不是十分明顯。</p><p> 數(shù)據(jù)庫中的學(xué)生信息表結(jié)構(gòu)如表4-1所示:</p><p> 表4-1 學(xué)生信息表(
79、stu_inform)</p><p> 數(shù)據(jù)庫中的課程信息表結(jié)構(gòu)如表4-2所示:</p><p> 表4-2 課程信息表(course_inform)</p><p> 數(shù)據(jù)庫中的學(xué)生選課信息表如表4-3所示:</p><p> 表4-3學(xué)生選課信息表(stu_select)</p><p> 數(shù)據(jù)庫中的登
80、錄信息如表4-4所示:</p><p> 表4-4登錄信息表(stu_login)</p><p> 數(shù)據(jù)庫中的權(quán)限信息如表4-5所示:</p><p> 表4-5權(quán)限信息表(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)更好的完成學(xué)生選課,查看課程信息等功能。如圖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 ="請在此輸入查詢內(nèi)容" then</p><p> messagebox("錯誤!
86、","請輸入查詢內(nèi)容!")</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ù)據(jù)</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)對課程信息的選擇查看,可以根據(jù)課程代號查詢相應(yīng)課程的詳細信息,選擇此課程,并計算選課門數(shù)和課程總學(xué)分。下圖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> //檢索用戶的學(xué)號&
97、lt;/b></p><p> SELECT stu_login.學(xué)號, </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> //根據(jù)學(xué)號查詢用戶的詳細信息</p><p> dw_2.setfilter("")</p><p> dw_2.setfilter(" stu_select_學(xué)號='"+studen
99、t_no+"'")</p><p> dw_2.retrieve()</p><p> //顯示學(xué)生選擇課程數(shù),和其學(xué)分總數(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_學(xué)分[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)“確認(rèn)選擇課程”按鈕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> //根據(jù)登錄的用戶名,檢索出用戶的學(xué)號</p><p> SELECT stu_inform.學(xué)號, </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.學(xué)號 = stu_login.學(xué)號 )
107、and </p><p> ( ( stu_login.用戶名 = :login_name ) </p><p><b> ) ; </b></p><p> //查詢stu_select表,看是否此學(xué)生已經(jīng)選擇這門課程</p><p> SELECT stu_select.課程代號 </p&g
108、t;<p> INTO :cour_no </p><p> FROM stu_select </p><p> WHERE ( stu_select.學(xué)號 = :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;,"你已經(jīng)選擇過此門課程")</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> ( 學(xué)號, 課程代號 ) </p><p> VALUES ( :student_no, </p><p> :sle_1.text); <
113、;/p><p> messagebox("提示","恭喜你,添加課程成功!");</p><p> //學(xué)生選定該課程后,在該課程的剩余名額中減少一人</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> //檢索用戶的學(xué)號</b></p><p>
116、 SELECT stu_login.學(xué)號, </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> //根據(jù)學(xué)號查詢用戶的詳細信息</p><p> dw_2.setfilter("")</p><p> dw_2.setfilter(" stu_select_學(xué)號='"+student_no1+"'")</
118、p><p> dw_2.retrieve()</p><p> //刷新學(xué)生選擇課程數(shù),和其學(xué)分總數(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_學(xué)分[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)學(xué)生課程的編排和沖突課程的修改刪除,還可以打印課表。下圖為生成課表界面,如圖4-5所示</p><p> 圖4-5 生成課表主
121、窗口</p><p> 其中一些主要代碼如下:</p><p> ?。?)查看課表事件的代碼</p><p> dw_1.settransobject(sqlca)</p><p> dw_1.setfilter("stu_inform_學(xué)號='"+</p><p> trim(st
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生選課系統(tǒng)-課程設(shè)計報告
- 學(xué)生選課系統(tǒng)課程設(shè)計報告
- 學(xué)生選課系統(tǒng)設(shè)計報告課程設(shè)計
- 學(xué)生選課管理系統(tǒng)課程設(shè)計報告
- 課程設(shè)計報告--學(xué)生選課管理系統(tǒng)
- 學(xué)生選課系統(tǒng)課程設(shè)計
- 學(xué)生選課系統(tǒng)課程設(shè)計
- 學(xué)生選課系統(tǒng)課程設(shè)計
- vfp課程設(shè)計報告--學(xué)生選課管理系統(tǒng)
- 學(xué)生選課系統(tǒng)課程設(shè)計
- 課程設(shè)計--學(xué)生選課系統(tǒng)
- 學(xué)生選課系統(tǒng)課程設(shè)計
- 學(xué)生選課信息管理系統(tǒng)課程設(shè)計報告
- 軟件工程課程設(shè)計報告--學(xué)生選課系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告---學(xué)生選課系統(tǒng)
- pb課程設(shè)計—學(xué)生選課系統(tǒng)
- 學(xué)生選課管理系統(tǒng)課程設(shè)計
- c#學(xué)生選課系統(tǒng)課程設(shè)計
- 面向?qū)ο蟪绦蛟O(shè)計學(xué)生選課系統(tǒng)課程設(shè)計報告
- c++課程設(shè)計--學(xué)生選課系統(tǒng)程序設(shè)計報告
評論
0/150
提交評論