學(xué)生選課系統(tǒng)課程設(shè)計(jì)報(bào)告_第1頁(yè)
已閱讀1頁(yè),還剩33頁(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)介

1、<p><b>  學(xué)生選課管理系統(tǒng)</b></p><p><b>  摘 要</b></p><p>  隨著社會(huì)的發(fā)展,學(xué)生的人數(shù)和課程的種類急速增加,傳統(tǒng)的選課管理模式已經(jīng)無(wú)法滿足當(dāng)前的實(shí)際需求,為此,我們開發(fā)了學(xué)生選課管理系統(tǒng)。</p><p>  本人結(jié)合學(xué)生選課管理的實(shí)際需要,完成了對(duì)學(xué)生選課管理

2、系統(tǒng)的需求分析、功能模塊劃分、數(shù)據(jù)庫(kù)模式分析等,并由此設(shè)計(jì)了后臺(tái)數(shù)據(jù)庫(kù)以及前臺(tái)應(yīng)用程序。</p><p>  文中首先對(duì)課題背景,數(shù)據(jù)庫(kù)基礎(chǔ)理論和SQL語(yǔ)言進(jìn)行了簡(jiǎn)單的討論;接著,對(duì)系統(tǒng)前臺(tái)開發(fā)工具PowerBuilder9.0,學(xué)生選課管理系統(tǒng)進(jìn)行了詳細(xì)分析,劃分了具體的功能模塊;最后,給出了學(xué)生選課系統(tǒng)應(yīng)用程序的設(shè)計(jì)過(guò)程,以及每個(gè)功能模塊的核心代碼。</p><p>  系統(tǒng)可以實(shí)現(xiàn)學(xué)

3、生選課的一些重要功能,如:課程的添加、刪除,信息查詢、選課、生成課表,以及學(xué)生選課管理人員、用戶個(gè)人信息的維護(hù)等。</p><p>  關(guān)鍵詞 管理系統(tǒng);數(shù)據(jù)庫(kù);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è)計(jì)2</p><p>  1.3 本文的結(jié)構(gòu)2</p>&

11、lt;p>  2 相關(guān)知識(shí)基礎(chǔ)3</p><p>  2.1 數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí)3</p><p>  2.2 關(guān)系型數(shù)據(jù)庫(kù)5</p><p>  2.3 PowerBuilder9.0開發(fā)工具簡(jiǎn)介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)實(shí)體E-R圖分析13</p><p>  3.2本章小

13、結(jié)14</p><p><b>  4 系統(tǒng)實(shí)現(xiàn)15</b></p><p>  4.1 創(chuàng)建一個(gè)工作空間和應(yīng)用程序?qū)ο?5</p><p>  4.2創(chuàng)建數(shù)據(jù)庫(kù)表15</p><p>  4.3創(chuàng)建主窗口16</p><p>  4.4 創(chuàng)建主菜單17</p><

14、p>  4.5系統(tǒng)管理模塊的實(shí)現(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)建個(gè)人信息窗口26</p><p>  4.5.5 生成課表窗口的設(shè)計(jì)

15、27</p><p>  4.5.6 創(chuàng)建登錄窗口29</p><p>  4.5.7 splash界面的實(shí)現(xiàn)30</p><p><b>  結(jié)束語(yǔ)32</b></p><p><b>  致 謝33</b></p><p><b>  參考文獻(xiàn)34&

16、lt;/b></p><p><b>  1 緒論</b></p><p>  數(shù)據(jù)庫(kù)是數(shù)據(jù)管理的最新技術(shù),是計(jì)算機(jī)科學(xué)的重要分支。今天,信息資源已成為各個(gè)部門的重要財(cái)富和資源。建立一個(gè)滿足各級(jí)部門信息處理要求的行之有效的信息系統(tǒng)也成為一個(gè)企業(yè)或組織生存和發(fā)展的重要條件。因此,作為信息系統(tǒng)核心和基礎(chǔ)的數(shù)據(jù)庫(kù)技術(shù)得到越來(lái)越廣泛的應(yīng)用。從小型單項(xiàng)事務(wù)處理系統(tǒng)到大型信

17、息系統(tǒng),從聯(lián)機(jī)事務(wù)處理到聯(lián)機(jī)分析處理,從一般企業(yè)管理到計(jì)算機(jī)輔助設(shè)計(jì)與制造 (CAD/CAM)、計(jì)算機(jī)集成制造系統(tǒng)(CIMS)、辦公信息系統(tǒng) (OIS)等,越來(lái)越多新的應(yīng)用領(lǐng)域采用數(shù)據(jù)庫(kù)存儲(chǔ)和處理他們的信息資源。</p><p><b>  1.1 課題的背景</b></p><p>  當(dāng)今時(shí)代是飛速發(fā)展的信息時(shí)代。在各行各業(yè)中離不開信息處理,這正是計(jì)算機(jī)被廣泛應(yīng)用

18、于信息管理系統(tǒng)的環(huán)境。計(jì)算機(jī)的最到好處在于利用它能夠進(jìn)行信息管理。使用計(jì)算機(jī)進(jìn)行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。</p><p>  尤其對(duì)于復(fù)雜的信息管理,計(jì)算機(jī)能夠充分發(fā)揮它的優(yōu)越性。計(jì)算機(jī)進(jìn)行信息管理與信息管理系統(tǒng)的開發(fā)密切相關(guān),系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。本系統(tǒng)就是為了管理好學(xué)生選課信息而設(shè)計(jì)的。</p><p>  學(xué)生選課作為一種信息資源的集散地,包含很

19、多的信息數(shù)據(jù)的管理。 由于數(shù)據(jù)繁多,容易丟失,且不易查找??偟膩?lái)說(shuō),缺乏系統(tǒng),規(guī)范的信息管理手段。盡管有的學(xué)校有計(jì)算機(jī),但是尚未用于信息管理,沒有發(fā)揮它的效力,資源閑置比較突出,這就是管理信息系統(tǒng)的開發(fā)基本環(huán)境。</p><p>  數(shù)據(jù)處理手工操作,工作量大,出錯(cuò)率高,出錯(cuò)后不易更改。造成了時(shí)間上的浪費(fèi)</p><p>  基于這個(gè)問題,我認(rèn)為有必要建立一個(gè)學(xué)生選課系統(tǒng),使學(xué)生選課信息管

20、理工作規(guī)范化、系統(tǒng)化、程序化,避免學(xué)生選課管理的隨意性,提高信息處理的速度和準(zhǔn)確性,能夠及時(shí)、準(zhǔn)確、有效的查詢和修改選課情況。</p><p><b>  1.2 課題的設(shè)計(jì)</b></p><p>  本文就學(xué)生選課系統(tǒng)的設(shè)計(jì)與制作展開分析。學(xué)生選課系統(tǒng)主要應(yīng)用數(shù)據(jù)庫(kù)技術(shù)開發(fā),先從數(shù)據(jù)庫(kù)的基本知識(shí)開始介紹, 數(shù)據(jù)庫(kù)的基本概念、數(shù)據(jù)庫(kù)的發(fā)展、數(shù)據(jù)庫(kù)的結(jié)構(gòu),還介紹了開發(fā)

21、工具PowerBuilder9.0和SQL語(yǔ)言。我主要是應(yīng)用PowerBuilder9.0為前端開發(fā)工具,利用SQL語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)查詢。設(shè)計(jì)系統(tǒng)時(shí),先從系統(tǒng)的數(shù)據(jù)流程開始分析,設(shè)計(jì)系統(tǒng)的業(yè)務(wù)流程圖、系統(tǒng)的數(shù)據(jù)流程圖、系統(tǒng)的E-R圖。根據(jù)開題報(bào)告的設(shè)計(jì)要求開始進(jìn)入系統(tǒng)的總體設(shè)計(jì),接著制定系統(tǒng)的設(shè)計(jì)思想,分析系統(tǒng)的功能并設(shè)計(jì)系統(tǒng)的功能模塊,這些都是系統(tǒng)制作前的準(zhǔn)備工作;準(zhǔn)備工作完成后,開始系統(tǒng)數(shù)據(jù)庫(kù)的建立,主要有各個(gè)功能窗口的設(shè)計(jì),將設(shè)計(jì)好的

22、窗口集中到主菜單上,通過(guò)用戶的用戶名和密碼的登錄可以進(jìn)入到主窗口,這樣就完成系統(tǒng)的制作。最后,對(duì)系統(tǒng)進(jìn)行調(diào)試,性能分析。</p><p><b>  1.3 本文的結(jié)構(gòu)</b></p><p>  第2章,簡(jiǎn)單介紹了相關(guān)的基礎(chǔ)知識(shí)(如:數(shù)據(jù)庫(kù)的基本概念、數(shù)據(jù)庫(kù)的類型、數(shù)據(jù)庫(kù)的結(jié)構(gòu)、開發(fā)工具等),為系統(tǒng)的設(shè)計(jì)進(jìn)行知識(shí)儲(chǔ)備。</p><p>  第

23、3章,詳細(xì)介紹了系統(tǒng)分析與設(shè)計(jì)。</p><p>  第4章,介紹了系統(tǒng)的制作過(guò)程,如:建立數(shù)據(jù)庫(kù)、設(shè)計(jì)制作窗口等。</p><p>  第5章,對(duì)系統(tǒng)進(jìn)行運(yùn)行、調(diào)試,對(duì)系統(tǒng)性能分析和評(píng)價(jià)。</p><p><b>  2 相關(guān)知識(shí)基礎(chǔ)</b></p><p>  2.1 數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí)</p><

24、p>  2.1.1 數(shù)據(jù)庫(kù)系統(tǒng)的發(fā)展</p><p>  數(shù)據(jù)庫(kù)系統(tǒng)是在文件系統(tǒng)的基礎(chǔ)之上發(fā)展而來(lái)的,經(jīng)歷了層次數(shù)據(jù)庫(kù)、網(wǎng)狀數(shù)據(jù)庫(kù)和關(guān)系數(shù)據(jù)庫(kù)三個(gè)階段。由于關(guān)系型數(shù)據(jù)庫(kù)采用人們比較容易理解和接受的二維表格來(lái)組織數(shù)據(jù),發(fā)展迅速,已成為數(shù)據(jù)庫(kù)產(chǎn)品的主流。這里介紹的數(shù)據(jù)庫(kù)知識(shí)都是指的關(guān)系數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)架構(gòu)如圖2-1 所示。</p><p>  圖2-1 數(shù)據(jù)庫(kù)應(yīng)用的架構(gòu)</p>

25、<p>  2.1.2 基本概念</p><p>  數(shù)據(jù)庫(kù)(DataBase,簡(jiǎn)稱DB)是按一定組織方式存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)器中、相互關(guān)聯(lián)的數(shù)據(jù)集合,數(shù)據(jù)庫(kù)的建立獨(dú)立于程序。所謂關(guān)系數(shù)據(jù)庫(kù)就是將數(shù)據(jù)表示為表的集合,通過(guò)建立簡(jiǎn)單表之間的關(guān)系來(lái)定義結(jié)構(gòu)的一種數(shù)據(jù)庫(kù)。</p><p>  數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)是一個(gè)管理數(shù)據(jù)庫(kù)的軟件系統(tǒng),為用戶提供了描述數(shù)據(jù)庫(kù)、操縱數(shù)據(jù)庫(kù)和維護(hù)數(shù)

26、據(jù)庫(kù)的方法和命令,并且能自動(dòng)控制數(shù)據(jù)庫(kù)的安全以及數(shù)據(jù)完整。常見數(shù)據(jù)庫(kù)管理系統(tǒng)有:Oracle、Sybase、Microsoft SQL Server、Microsoft Access、Microsoft FoxPro、IBM DB2等。</p><p>  數(shù)據(jù)庫(kù)系統(tǒng)(DBS)是一個(gè)具有管理數(shù)據(jù)庫(kù)功能的計(jì)算機(jī)系統(tǒng),它包括應(yīng)用軟件、數(shù)據(jù)庫(kù)(DB)、數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)和數(shù)據(jù)庫(kù)管理人員(DBA)幾部分。圖

27、2-1直觀地表示了數(shù)據(jù)庫(kù)應(yīng)用的架夠。數(shù)據(jù)庫(kù)管理人員(DBA)一般是針對(duì)大型的數(shù)據(jù)庫(kù)應(yīng)用而言的,主要負(fù)責(zé)數(shù)據(jù)庫(kù)的日常運(yùn)行和維護(hù),如數(shù)據(jù)庫(kù)備份等工作。</p><p>  2.1.3 數(shù)據(jù)庫(kù)及數(shù)的研究領(lǐng)域</p><p>  數(shù)據(jù)庫(kù)學(xué)科的研究范圍十分廣泛的,概括地講可以包括以下三個(gè)領(lǐng)域:</p><p>  (1)數(shù)據(jù)庫(kù)管理系統(tǒng)軟件的研制</p><

28、p>  DBMS[3]是數(shù)據(jù)庫(kù)系統(tǒng)的基礎(chǔ)。DBMS的研制包括DBMS本身及以DBMS為核心的一組相互聯(lián)系的軟件系統(tǒng),包括工具軟件和中間件。研制的目標(biāo)是提高系統(tǒng)的可用性、可靠性、可伸縮性;提高性能和提高用戶的生產(chǎn)率。</p><p>  DBMS核心技術(shù)的研究和實(shí)現(xiàn)是三十余年來(lái)數(shù)據(jù)庫(kù)領(lǐng)域所取得的主要成就。DBMS是一個(gè)基礎(chǔ)軟件系統(tǒng),它提供了對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行存儲(chǔ)、檢索和管理的功能。</p>&

29、lt;p><b> ?。?)數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p>  數(shù)據(jù)庫(kù)設(shè)計(jì)的主要任務(wù)是DBMS的支持下,按照應(yīng)用的要求,為某一部門或組織設(shè)計(jì)一個(gè)結(jié)構(gòu)合理、使用方便、效率較高的數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng)。其中主要的研究方向是數(shù)據(jù)庫(kù)設(shè)計(jì)方法學(xué)和設(shè)計(jì)工具,包括數(shù)據(jù)庫(kù)設(shè)計(jì)方法、設(shè)計(jì)工具和設(shè)計(jì)理論的研究,數(shù)據(jù)建模和數(shù)據(jù)建模的研究,計(jì)算機(jī)輔助數(shù)據(jù)庫(kù)設(shè)計(jì)方法及其軟件系統(tǒng)的研究。數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)范和標(biāo)準(zhǔn)的研究

30、等。</p><p><b> ?。?)數(shù)據(jù)庫(kù)理論</b></p><p>  數(shù)據(jù)庫(kù)理論的研究主要集中于關(guān)系的規(guī)范化理論、關(guān)系數(shù)據(jù)理論等。近年來(lái),隨著人工智能與數(shù)據(jù)庫(kù)理論的結(jié)合、并行計(jì)算技術(shù)等的發(fā)展,數(shù)據(jù)庫(kù)邏輯演繹和知識(shí)推理、數(shù)據(jù)庫(kù)中的知識(shí)發(fā)現(xiàn)(Knowledge Discovery from Database,簡(jiǎn)稱KDD[4])、并行算法等成為新的理論研究方向。&

31、lt;/p><p>  計(jì)算機(jī)領(lǐng)域中其他新興技術(shù)的發(fā)展對(duì)數(shù)據(jù)庫(kù)技術(shù)產(chǎn)生了重大影響。數(shù)據(jù)庫(kù)技術(shù)和其他計(jì)算機(jī)技術(shù)的互相結(jié)合、互相滲透,使數(shù)據(jù)庫(kù)中新的技術(shù)內(nèi)容層出不窮。數(shù)據(jù)庫(kù)的許多概念、技術(shù)內(nèi)容、應(yīng)用領(lǐng)域,甚至某些原理都有了重大的發(fā)展和變化。建立和實(shí)現(xiàn)了一系列新型數(shù)據(jù)庫(kù)系統(tǒng),如分布式數(shù)據(jù)庫(kù)系統(tǒng)、并行數(shù)據(jù)庫(kù)系統(tǒng)、知識(shí)庫(kù)系統(tǒng)、多媒體數(shù)據(jù)庫(kù)系統(tǒng)等。它們共同構(gòu)成了數(shù)據(jù)庫(kù)系統(tǒng)大家族,使數(shù)據(jù)庫(kù)技術(shù)不斷地涌現(xiàn)新的研究方向。</p&

32、gt;<p>  2.2 關(guān)系型數(shù)據(jù)庫(kù)</p><p>  關(guān)系數(shù)據(jù)庫(kù)由表組成。一個(gè)關(guān)系是由一個(gè)二維表來(lái)定義的:表的行保存事物的一組屬性數(shù)據(jù),表的列定義了事物的屬性。</p><p>  以下是關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)[5]的一些特點(diǎn):</p><p>  ·幾乎當(dāng)今所有的關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)都采用SQL語(yǔ)言來(lái)操縱數(shù)據(jù)庫(kù)中的數(shù)據(jù)。SQL語(yǔ)言是在20世紀(jì)7

33、0年代由IBM發(fā)展起來(lái)的,后來(lái)成為工業(yè)標(biāo)準(zhǔn)。</p><p>  ·最重要的是必須保證數(shù)據(jù)的完整性。否則,存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)就是毫無(wú)價(jià)值的。關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)包括許多特性,目的是阻止不符和要求的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)。</p><p>  ·關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)被設(shè)計(jì)為一個(gè)便于修改的系統(tǒng),因?yàn)樯虡I(yè)需求幾乎每天都在變化。</p><p>  ·在文件

34、系統(tǒng)階段,相同的數(shù)據(jù)常常重復(fù)出現(xiàn)在許多記錄中,而關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)則會(huì)排除大多數(shù)的冗余數(shù)據(jù)。這就減少了對(duì)存儲(chǔ)空間的需求,加快了數(shù)據(jù)訪問的速度。</p><p>  ·應(yīng)用程序可以通過(guò)多級(jí)的安全檢查來(lái)限制對(duì)數(shù)據(jù)的訪問。</p><p>  2.2.1 數(shù)據(jù)模型</p><p>  模型是現(xiàn)實(shí)世界特征的模擬和抽象。數(shù)據(jù)模型(Data Modal[6])是對(duì)現(xiàn)實(shí)世

35、界中數(shù)據(jù)特征的抽象。</p><p>  存在于人們頭腦之外的客觀世界,稱為現(xiàn)實(shí)世界。數(shù)據(jù)庫(kù)系統(tǒng)中保存的數(shù)據(jù)實(shí)際上是對(duì)現(xiàn)實(shí)世界的一種描述,它是采用數(shù)據(jù)模型對(duì)現(xiàn)實(shí)世界進(jìn)行描述的。數(shù)據(jù)模型是數(shù)據(jù)庫(kù)系統(tǒng)中用于提供信息表示和操作手段的形式框架,是數(shù)據(jù)庫(kù)系統(tǒng)的核心和基礎(chǔ)。</p><p>  數(shù)據(jù)模型分為兩種,一種是概念數(shù)據(jù)模型,它是用來(lái)描述現(xiàn)實(shí)世界中數(shù)據(jù)及數(shù)據(jù)之間關(guān)系的模型,跟計(jì)算機(jī)沒有關(guān)系。這種

36、模型主要描述高層次的概念,按照用戶的觀點(diǎn)對(duì)數(shù)據(jù)和信息進(jìn)行建模,把現(xiàn)實(shí)世界中的客觀對(duì)象抽象為某種信息結(jié)構(gòu),如被描述對(duì)象的意義、相互關(guān)系等。另外一種就是實(shí)體數(shù)據(jù)模型,它是用來(lái)描述信息世界中數(shù)據(jù)及數(shù)據(jù)之間的關(guān)系及存儲(chǔ)、處理特征的模型,主要包括層次模型、網(wǎng)狀模型、關(guān)系模型,它是按照計(jì)算機(jī)的觀點(diǎn)對(duì)數(shù)據(jù)建模,主要用于DBMS的實(shí)現(xiàn)。</p><p>  在信息世界中,把客觀存在并可相互區(qū)別的事物稱為實(shí)體(Entity[7])

37、,同型實(shí)體的集合稱為實(shí)體集(Entity Set),實(shí)體所具有的某一特性稱為屬性(Attribute)。</p><p>  2.2.2 實(shí)體之間的聯(lián)系</p><p>  在現(xiàn)實(shí)世界中,各種事物之間往往有著各種各樣的聯(lián)系,這種聯(lián)系必然在信息世界中有所反映。實(shí)體之間的聯(lián)系可以分為兩類,一類是實(shí)體內(nèi)部的聯(lián)系,如組成實(shí)體的屬性之間的聯(lián)系,這種聯(lián)系往往比較容易理解。另外一種聯(lián)系就是實(shí)體之間的聯(lián)系

38、,如學(xué)生和班級(jí)之間的聯(lián)系:一個(gè)學(xué)生屬于某一個(gè)班級(jí),而另一個(gè)班級(jí)有多個(gè)學(xué)生。</p><p>  實(shí)體完整性規(guī)則規(guī)定基本關(guān)系的所有主屬性都不能去空值,而不僅是主碼整體不能取空值。</p><p>  對(duì)于實(shí)體完整性規(guī)則說(shuō)明如下:</p><p>  1.實(shí)體完整性規(guī)則是針對(duì)基本關(guān)系而言的,一個(gè)基本表通常對(duì)應(yīng)現(xiàn)實(shí)界的一個(gè)實(shí)體集。例如學(xué)生關(guān)系對(duì)應(yīng)于學(xué)生的集合。</p

39、><p>  2.現(xiàn)實(shí)世界中的實(shí)體是可區(qū)分的,即它們具有某種唯一性標(biāo)識(shí)。</p><p>  3.相應(yīng)地,關(guān)系模型中以主碼作為唯一性標(biāo)識(shí)。</p><p>  4.主碼中的屬性即主屬性不能取空值。所謂空值就是“不知道”或“無(wú)意義”的值。如果主屬性取空值,就說(shuō)明存在某個(gè)不可標(biāo)識(shí)的實(shí)體,即存在不可區(qū)分的實(shí)體,這與第2點(diǎn)相矛盾,因此這個(gè)規(guī)則稱為實(shí)體完整性。</p>

40、<p>  2.2.3 規(guī)范化設(shè)計(jì)方法</p><p>  構(gòu)造數(shù)據(jù)庫(kù)時(shí),必須遵循一定的規(guī)則。在關(guān)系數(shù)據(jù)庫(kù)中,這種規(guī)則就是范式(Normal Form)。或者說(shuō),滿足一定條件的關(guān)系模式,稱為范式。在1971年至1972年,E.F.Codd系統(tǒng)地提出了第一范式(1NF)、第二范式(2NF)和第三范式(3NF)的概念。1974年Codd和Boyce共同提出BCNF范式,為第三范式的改進(jìn)。關(guān)系數(shù)據(jù)庫(kù)中的關(guān)

41、系必須滿足一定的要求,即需要滿足不同的范式。目前除了前面提到的三種范式,還有第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。</p><p>  2.3 PowerBuilder9.0開發(fā)工具簡(jiǎn)介</p><p>  PowerBuilder9.0是Sybase公司2003年推出的新一代4GL Plus數(shù)據(jù)庫(kù)開發(fā)工具,它不僅繼承了以往版本的各種先進(jìn)技術(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)用可以平滑過(guò)度到基于瀏覽器和Web的應(yīng)用模式下。同時(shí),PowerBuilder9.0卓越的應(yīng)用開發(fā)效率及強(qiáng)大的Web功能為新版本增色不少。</p><p>  完整的應(yīng)用系統(tǒng)有工作空間、目標(biāo)、應(yīng)用對(duì)象。窗口上的菜單對(duì)象。數(shù)據(jù)窗口對(duì)象和控件對(duì)象,以及這些對(duì)

43、象的事件處理程序構(gòu)成。 </p><p>  (1)工作空間和目標(biāo)</p><p>  在以前的版本中,程序員一次只能開發(fā)一個(gè)應(yīng)用程序,這樣使得應(yīng)用程序無(wú)法取得多個(gè)可用的組件信息,因此在構(gòu)件復(fù)雜應(yīng)用時(shí)會(huì)大大增加難度。</p><p>  PowerBuilder9.0提供了Workspace功能,這讓開發(fā)人員同時(shí)在多個(gè)應(yīng)用或組件上進(jìn)行開發(fā),同時(shí)PowerBuilde

44、r9.0用Target來(lái)描述加到Workspace中的應(yīng)用或組件。[11] PowerBuilder中存在三類Target是:Window 客戶、EAServer組件和Web站點(diǎn)。在PowerBuilder中,只有打開Workspace才能更有效地工作,開發(fā)者可以在Workspace中定義一個(gè)新的Target或者加入一個(gè)已經(jīng)存在的Target。因此,Workspace 已經(jīng)變成了PowerBuilder中所有活動(dòng)的中心。 </p&

45、gt;<p>  (2)窗口、控件、事件和程序</p><p>  在PowerBuilder中,窗口(Window)是主要的用戶界面,軟件開發(fā)人員往往把各種控制功能(如錄入、查詢、打印、統(tǒng)計(jì)等)做成按扭或其它控件放在窗口上有用戶選擇。應(yīng)用對(duì)象、窗口對(duì)象、菜單對(duì)象,窗口上的數(shù)據(jù)窗口控件和其他控件對(duì)象都對(duì)應(yīng)著若干個(gè)可能發(fā)生的事件[12-13],如應(yīng)用對(duì)象和窗口對(duì)象上有Open (打開),Close(關(guān)

46、閉)等事件,菜單項(xiàng)上有Clicked(鼠標(biāo)左鍵單擊或按回車鍵)等事件,窗口上的控件有Clicked、Double Clicked(用鼠標(biāo)左鍵雙擊)Getfocus(得到焦點(diǎn)),Edit Changed(數(shù)據(jù)被修改)等事件[14]。PowerBuilder的程序是嵌套在事件中的,也就是說(shuō)由事件驅(qū)動(dòng)的,一旦用戶選定了控件也就觸發(fā)了某個(gè)事件。軟件開發(fā)人員只需為各個(gè)控件的事件編寫事件處理程序,指定該事件被觸發(fā)時(shí)要進(jìn)行的處理,應(yīng)用系統(tǒng)就這樣構(gòu)造出

47、來(lái)了。</p><p>  事件處理程序用PowerBuilder的專用語(yǔ)言PowerScript語(yǔ)言編寫。PowerScript語(yǔ)言是一種高水準(zhǔn)。面向?qū)ο蟮恼Z(yǔ)言,提供了豐富的內(nèi)置函數(shù)供軟件開發(fā)人員使用。事件處理程序有PowerScript語(yǔ)句和函數(shù)組成,來(lái)響應(yīng)被觸發(fā)的事件并做相應(yīng)的處理。</p><p>  例如,菜單項(xiàng)上有Clicked事件此事件的處理程序可能是打開另一個(gè)窗口,用戶用鼠

48、標(biāo)左鍵單擊此菜單時(shí),Clicked事件被觸發(fā),指定的窗口被打開。又如窗口上有一個(gè)數(shù)據(jù)窗口和一些按扭,按扭上的文字為“錄入”、“刪除”、“存盤”等,這些按扭的功能分別為數(shù)據(jù)窗口中插入一行,刪除一行,將結(jié)果修改存盤,我們只需為這些按扭的Clicked事件編寫相應(yīng)的程序完成這些功能。</p><p><b>  (3)函數(shù)</b></p><p>  函數(shù)是PowerScr

49、ipt語(yǔ)言的重要組成部分,PowerBuilder為軟件開發(fā)人員提供了近800個(gè)內(nèi)置函數(shù)[15-16],主要用于完成以下工作:訪問和操作數(shù)據(jù),操縱對(duì)像的數(shù)字或文本,進(jìn)行計(jì)算,字符串處理,數(shù)據(jù)類型轉(zhuǎn)換,處理日期和時(shí)間,文本文件的輸入和輸出,生成商務(wù)圖形,打印數(shù)據(jù),與其他窗口的數(shù)據(jù)通信,處理郵件,Web應(yīng)用,分布式應(yīng)用等。此外,軟件開發(fā)人員還可以通過(guò)建立用戶自定義函數(shù)來(lái)滿足某個(gè)應(yīng)用系統(tǒng)的特殊要求。需要時(shí)還可調(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是一個(gè)大型關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),它是微軟公司推出的新一代數(shù)據(jù)庫(kù)產(chǎn)品。它是微軟公司在SQL Server 7.0版的基礎(chǔ)上經(jīng)過(guò)改進(jìn)和提高而推出的數(shù)據(jù)庫(kù)產(chǎn)品。它的

51、性能、可靠性、質(zhì)量以及易用性都比以前的版本大有提高。它提供了許多提高系統(tǒng)運(yùn)行性能的新功能,并使數(shù)據(jù)庫(kù)的管理工作變得更加輕松容易。把SQL Server 2000作為OLTP 、數(shù)據(jù)倉(cāng)庫(kù)以及電子商務(wù)應(yīng)用程序的后臺(tái)數(shù)據(jù)庫(kù)是一個(gè)不錯(cuò)的選擇。在SQL Server 2000關(guān)系數(shù)據(jù)庫(kù)中,信息被存放在二維表格結(jié)構(gòu)的表(TABLE)中。數(shù)據(jù)庫(kù)中的表之間可以是相互關(guān)聯(lián)的,表之間的這種關(guān)聯(lián)性是通過(guò)主健和外鍵所體現(xiàn)的參照關(guān)系來(lái)實(shí)現(xiàn)的。數(shù)據(jù)庫(kù)中不僅包括表,

52、還包括其他數(shù)據(jù)庫(kù)對(duì)象,如:視圖、存儲(chǔ)過(guò)程、索引等。</p><p>  SQL Server 2000 采用了客戶/服務(wù)器計(jì)算模型,即中央服務(wù)器用來(lái)存放數(shù)據(jù)庫(kù),該服務(wù)器可以被多臺(tái)客戶機(jī)訪問,數(shù)據(jù)庫(kù)應(yīng)用的處理過(guò)程分布在客戶機(jī)和服務(wù)器上??蛻?服務(wù)器計(jì)算模型分為兩層的客戶/服務(wù)器結(jié)構(gòu)。在兩層的客戶/服務(wù)器系統(tǒng)中,客戶機(jī)通過(guò)網(wǎng)絡(luò)與運(yùn)行SQL Server 2000實(shí)例的服務(wù)器相連,客戶機(jī)用來(lái)完成數(shù)據(jù)表示和大部分業(yè)務(wù)邏輯

53、的實(shí)現(xiàn),服務(wù)器完成數(shù)據(jù)的存儲(chǔ),這種客戶機(jī)被稱為“胖客戶機(jī)”(thick client)。在多層的客戶/服務(wù)器系統(tǒng)中,應(yīng)用至少要經(jīng)歷三個(gè)處理層,第一層仍是客戶機(jī),但是它只負(fù)責(zé)數(shù)據(jù)的表示;第二層是業(yè)務(wù)邏輯服務(wù)器,負(fù)責(zé)業(yè)務(wù)邏輯的實(shí)現(xiàn),所有的客戶機(jī)都可以對(duì)它進(jìn)行訪問;第三層是數(shù)據(jù)庫(kù)。這種多層結(jié)構(gòu)中的客戶機(jī)被稱為“瘦客戶機(jī)”(thin client)。Internet應(yīng)用就是三層結(jié)構(gòu)的一個(gè)典型例子。</p><p>  數(shù)

54、據(jù)庫(kù)系統(tǒng)采用客戶/服務(wù)器結(jié)構(gòu)的好處是,數(shù)據(jù)集中存儲(chǔ)在服務(wù)器上,而不是分開存儲(chǔ)在客戶機(jī)上,使所有用戶都可以訪問到相同的數(shù)據(jù)。業(yè)務(wù)邏輯和安全規(guī)則可以在服務(wù)器上定義一次,而后被所有的客戶使用。關(guān)系數(shù)據(jù)庫(kù)服務(wù)器僅返回應(yīng)用程序所需要的數(shù)據(jù),這樣可以減少網(wǎng)絡(luò)流量。節(jié)省硬件的開銷,因?yàn)閿?shù)據(jù)都存儲(chǔ)在服務(wù)器上,不需在客戶機(jī)上存儲(chǔ)數(shù)據(jù),所以客戶機(jī)硬件不需要具備存儲(chǔ)和處理大量的數(shù)據(jù)能力。同樣,服務(wù)器不需要具備數(shù)據(jù)表示的功能。由于數(shù)據(jù)集中存儲(chǔ)在服務(wù)器上,所以備

55、份和恢復(fù)起來(lái)很容易。</p><p>  2.4.2 SQL 語(yǔ)言介紹</p><p>  SQL是英文Structured Query Language的縮寫,中文意思是結(jié)構(gòu)化查詢語(yǔ)言。SQL是一種介于關(guān)系代數(shù)與關(guān)系演算之間的結(jié)構(gòu)化查詢語(yǔ)言,它是一個(gè)通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言。SQL雖然名為查詢語(yǔ)言,但實(shí)際上具有定義、查詢、更新和控制等多種功能。從20世紀(jì)70年代末起,在推出的關(guān)系

56、數(shù)據(jù)庫(kù)系統(tǒng)產(chǎn)品ORACLE、SQL/DS、DB2、SYBASE上都實(shí)現(xiàn)了SQL語(yǔ)言。SQL語(yǔ)言是一種非過(guò)程化語(yǔ)言,它一次處理一個(gè)記錄集合,對(duì)數(shù)據(jù)提供自動(dòng)導(dǎo)航。SQL語(yǔ)言允許用戶在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對(duì)單個(gè)記錄進(jìn)行操作。SQL語(yǔ)言不要求用戶指定數(shù)據(jù)的存取方法,而是使用查詢優(yōu)化器,由系統(tǒng)決定對(duì)指定數(shù)據(jù)存取的最快手段。當(dāng)設(shè)計(jì)者在關(guān)系表上定義了索引時(shí),系統(tǒng)會(huì)自動(dòng)利用索引進(jìn)行快速檢索,用戶不需知道表上是否有索引或者有什么類型的索引等細(xì)節(jié)。&

57、lt;/p><p>  SQL主要組成分成四個(gè)部分:數(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):包括對(duì)基本表和視圖的授權(quán),完整性規(guī)則的描述,事務(wù)控制等內(nèi)容。嵌入式SQL的使用

58、規(guī)定:其內(nèi)容涉及到SQL語(yǔ)句嵌入在宿主語(yǔ)言程序中使用的規(guī)則。</p><p>  (1)SQL的數(shù)據(jù)查詢</p><p>  SELECT語(yǔ)句的語(yǔ)法如下:</p><p>  SELECT 目標(biāo)表的列名或列表達(dá)式序列</p><p>  FROM 基本表或視圖</p><p>  [WHERE行條件表達(dá)式]</

59、p><p>  [GROUP BY列名序列</p><p>  [HAVING分組條件表達(dá)式]</p><p>  [ORDER BY列名[ASC|DESC]…]</p><p>  句法中[]表示該成分可有,也可無(wú)。</p><p>  整個(gè)語(yǔ)句的執(zhí)行過(guò)程如下:</p><p>  (a)讀取FR

60、OM子句中基本表、視圖的數(shù)據(jù),執(zhí)行笛卡爾積操作。</p><p>  (b)讀取滿足WHERE子句中給出的條件表達(dá)式的元組。</p><p>  (c)按GROUP子句中指定的列的值分組,同時(shí)提取滿足HAVING子句中分組條件表達(dá)式的那些分組。</p><p>  (d)按SELECT子句中給出的列名或列表達(dá)式求值輸出。</p><p>  

61、(e)ORDER子句對(duì)輸出的目標(biāo)表進(jìn)行排序,按附加說(shuō)明ASC升序排列,或按DESC降序排列。</p><p>  SELECT語(yǔ)句中,WHERE子句稱為“行條件子句”,GROUP子句稱為“分組子句”,HAVING子句稱為“分組條件子句”,ORDER子句稱為“排序子句”。</p><p><b>  (2)數(shù)據(jù)插入</b></p><p><

62、;b>  數(shù)據(jù)插入語(yǔ)法如下:</b></p><p>  INSERT INTO 基本表名(列名表)</p><p>  VALUES(元組值)</p><p>  或者INSERT INTO 基本表名(列名表)</p><p>  (table(元組值),</p><p><b> ?。ㄔ?/p>

63、組值),</b></p><p><b>  ……)</b></p><p>  前一種格式只能插入一個(gè)元組,后一種格式可以插入多個(gè)元組。</p><p><b> ?。?)數(shù)據(jù)刪除</b></p><p>  SQL的刪除操作是指從基本表刪除元組,其語(yǔ)法如下:</p>&

64、lt;p>  DELETE FROM 基本表</p><p>  [WHERE條件表達(dá)式]</p><p>  其語(yǔ)義是從基本表中刪除滿足條件表達(dá)式的元組。</p><p><b>  (4)數(shù)據(jù)修改</b></p><p>  當(dāng)需要修改基本表中元組的某些列的值時(shí),可以用UPDATE語(yǔ)句實(shí)現(xiàn),其句法如下:<

65、/p><p>  UPDATE 基本表</p><p>  SET 列名=值表達(dá)式[,列名=值表達(dá)式…]</p><p>  [WHERE條件表達(dá)式]</p><p>  其語(yǔ)義是:修改基本表中滿足條件表達(dá)式的那些元組中的列值,需要修改的列值在SET子句中指出。</p><p><b>  2.5 本章小結(jié)<

66、;/b></p><p>  本章闡述了數(shù)據(jù)庫(kù)系統(tǒng)的發(fā)展以及數(shù)據(jù)庫(kù)的一些基本概念。</p><p>  本章還詳細(xì)的介紹了關(guān)系數(shù)據(jù)庫(kù)的一些基本知識(shí),其中包括數(shù)據(jù)模型、實(shí)體之間的關(guān)系以及規(guī)范化設(shè)計(jì)方法。并且介紹了數(shù)據(jù)庫(kù)應(yīng)用程序的層次結(jié)構(gòu)。包括單層結(jié)構(gòu)、雙層結(jié)構(gòu)以及多層結(jié)構(gòu)。簡(jiǎn)單介紹了關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL,并通過(guò)圖形形象的表述了SQL對(duì)關(guān)系數(shù)據(jù)庫(kù)模型的支持。</p>&

67、lt;p><b>  3 系統(tǒng)分析</b></p><p><b>  3.1 系統(tǒng)分析</b></p><p>  現(xiàn)代的社會(huì)是信息化的社會(huì),信息無(wú)所不在。在生產(chǎn)領(lǐng)域、流通領(lǐng)域、各個(gè)部門每天都和信息打交道,如何處理如此多的信息成為了一個(gè)重要的課題。學(xué)生在學(xué)期開始選課是教學(xué)活動(dòng)中的一個(gè)重要環(huán)節(jié),該環(huán)節(jié)如果能管理好,它不僅能加快學(xué)生的選課速度

68、,也提高了整個(gè)教學(xué)活動(dòng)的效率。</p><p>  大學(xué)一般都有上千名學(xué)生,每學(xué)期開始學(xué)生都要選課,因而產(chǎn)生了大量的課程信息??紤]到用戶使用的方便和處理的信息量系統(tǒng)要完成錄入,保存,查詢,修改和刪除課程信息的各種過(guò)程,能打印出課程信息表。所以系統(tǒng)的基本體系結(jié)構(gòu)采用C/S模式。</p><p>  3.1.1 用戶要求</p><p>  系統(tǒng)的主要使用對(duì)象是需要選課

69、的學(xué)生。學(xué)生在選課是要察看各個(gè)課程的詳細(xì)信息,還要選擇一些感興趣的課程,需要生成課表,在發(fā)現(xiàn)課程有沖突后能夠修改先前選擇的信息。需要隨學(xué)生選課的變化,計(jì)算相應(yīng)的總學(xué)分。在全部選定后,打印報(bào)表。系統(tǒng)還需要管理員來(lái)查看和修改學(xué)生的總體選課情況,課程信息和學(xué)生信息。</p><p>  3.1.2 業(yè)務(wù)流程分析</p><p>  學(xué)生選課前要登錄系統(tǒng),查看所有課程的詳細(xì)信息,包括課程代號(hào)、授課

70、教師、教室、上課時(shí)間、學(xué)分、剩余名額等。根據(jù)課程代號(hào),學(xué)生可以查詢相應(yīng)的課程,并添加課程。查看課表,并能發(fā)現(xiàn)是否存在沖突課程,如果存在,可以刪除該課程,并重新選擇。打印課表,包含詳細(xì)的課程信息。最后,選課完畢。學(xué)生選課的數(shù)據(jù)基本流程如圖3-1所示:</p><p>  圖3-1 學(xué)生選課流程</p><p>  3.1.3 系統(tǒng)實(shí)體E-R圖分析</p><p>  

71、經(jīng)過(guò)上述系統(tǒng)功能分析和需求總結(jié),設(shè)計(jì)如下所示的實(shí)體和屬性的定義:</p><p>  課程信息(課程代號(hào),課程名稱,授課教師,教室,剩余名額,上課時(shí)間,學(xué)分)</p><p>  學(xué)生信息(學(xué)號(hào),姓名,性別,班級(jí),出生年月日,是否已選課)</p><p>  學(xué)生登錄信息(學(xué)號(hào),用戶名,密碼,權(quán)限代號(hào))</p><p>  學(xué)生選課信息(學(xué)號(hào)

72、,課程代號(hào),學(xué)期,課程成績(jī))</p><p>  用戶權(quán)限(權(quán)限名稱,權(quán)限代號(hào))。</p><p>  本系統(tǒng)根據(jù)上面的設(shè)計(jì)規(guī)劃出的實(shí)體有:課程信息實(shí)體,學(xué)生信息實(shí)體,學(xué)生登錄信息實(shí)體,學(xué)生選課信息實(shí)體,用戶權(quán)限實(shí)體。</p><p>  實(shí)體之間關(guān)系的E-R圖如圖3-2所示。</p><p>  圖3-2系統(tǒng)E-R圖</p>

73、<p>  課程信息實(shí)體E-R圖,如圖3-3所示:</p><p>  圖3-3課程信息實(shí)體E-R圖</p><p>  學(xué)生選課實(shí)體E-R圖,如圖3-4所示:</p><p>  圖3-4 學(xué)生選課實(shí)體圖</p><p>  學(xué)生信息實(shí)體E-R圖,如圖3-5所示:</p><p>  圖3-5 學(xué)生信息實(shí)體

74、圖</p><p>  登錄信息實(shí)體E-R圖,如圖3-6所示:</p><p>  圖3-6 登錄信息實(shí)體圖</p><p>  用戶權(quán)限實(shí)體E-R圖,如圖3-7所示:</p><p>  圖3-7 用戶權(quán)限實(shí)體圖</p><p><b>  3.2本章小結(jié)</b></p><

75、p>  學(xué)生選課系統(tǒng)主要是為學(xué)生選課的管理提供全面、準(zhǔn)確、科學(xué)的管理方法,方便快捷地處理選課的管理信息;避免了信息處理錯(cuò)誤,提高了信息管理的工作效率,大大地節(jié)省人力和物力的開支。本章主要闡述了系統(tǒng)的業(yè)務(wù)流程,根據(jù)業(yè)務(wù)流程畫出繪制出了E-R圖。</p><p><b>  4 系統(tǒng)實(shí)現(xiàn)</b></p><p>  4.1 創(chuàng)建一個(gè)工作空間和應(yīng)用程序?qū)ο?lt;/p

76、><p>  創(chuàng)建一個(gè)工作空間(WorkSpace)student,目標(biāo)(Target)student和應(yīng)用(Application)stu,在應(yīng)用的open 事件中寫入如下的語(yǔ)句進(jìn)行應(yīng)用與數(shù)據(jù)庫(kù)的連接。</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ù)庫(kù)表</b></p><p>  為了保存學(xué)生信息、課程信息、學(xué)生選課信息、登錄信息、用戶權(quán)限信息,數(shù)據(jù)庫(kù)設(shè)計(jì)了學(xué)生信息表,課程信息表,學(xué)生選課信息表,登錄信息表和用戶權(quán)限信息表。這些表使得用戶對(duì)數(shù)據(jù)的增刪改變得非常方便,數(shù)據(jù)的冗余不是十分明顯。</p><p>  數(shù)據(jù)庫(kù)中的學(xué)生信息表結(jié)構(gòu)如表4-1所示:</p><p>  表4-1 學(xué)生信息表(

79、stu_inform)</p><p>  數(shù)據(jù)庫(kù)中的課程信息表結(jié)構(gòu)如表4-2所示:</p><p>  表4-2 課程信息表(course_inform)</p><p>  數(shù)據(jù)庫(kù)中的學(xué)生選課信息表如表4-3所示:</p><p>  表4-3學(xué)生選課信息表(stu_select)</p><p>  數(shù)據(jù)庫(kù)中的登

80、錄信息如表4-4所示:</p><p>  表4-4登錄信息表(stu_login)</p><p>  數(shù)據(jù)庫(kù)中的權(quán)限信息如表4-5所示:</p><p>  表4-5權(quán)限信息表(user_gl)</p><p><b>  4.3創(chuàng)建主窗口</b></p><p>  通過(guò)主窗口可以實(shí)現(xiàn)信息查

81、詢,選擇課程,修改選課打印課表等功能。其主要實(shí)現(xiàn)窗口如下圖4-1所示:</p><p><b>  圖4-1 主窗口</b></p><p><b>  4.4 創(chuàng)建主菜單</b></p><p>  創(chuàng)建主菜單主要是方便各種功能的實(shí)現(xiàn),從而實(shí)現(xiàn)更好的完成學(xué)生選課,查看課程信息等功能。如圖4-2所示:</p>

82、<p><b>  圖4-2 主菜單</b></p><p>  在“課程查詢”菜單項(xiàng)的clicked事件中編寫代碼:</p><p>  open(w_course_select)</p><p>  在“選課”菜單項(xiàng)的click事件中編寫代碼:</p><p>  open(w_course_add)&l

83、t;/p><p>  在“生成課表”菜單項(xiàng)的click事件中編寫代碼:</p><p>  open(w_course_table)</p><p>  4.5系統(tǒng)管理模塊的實(shí)現(xiàn)</p><p>  4.5.1創(chuàng)建課程查詢窗口</p><p>  在主菜單窗口單擊“課程查詢”即可打開此窗口,使用者可以在此窗口實(shí)現(xiàn)對(duì)課程的查

84、詢。下圖4-3為“課程查詢窗口”的主界面。</p><p>  圖4-3 課程查詢窗口</p><p>  其中一些主要程序代碼如下:</p><p> ?。?)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 ="請(qǐng)?jiān)诖溯斎氩樵儍?nèi)容" then</p><p>  messagebox("錯(cuò)誤!

86、","請(qǐng)輸入查詢內(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 "課程代號(hào)"</p><p>  dw_1.setfilter("課程代號(hào)='"+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 "上課時(shí)間"</p><p>  dw_1.setfilter("上課時(shí)間='"+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 "課程代號(hào)"</p><p>  dw_1.setfilter("課程代號(hào) 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 "上課時(shí)間"</p><p>  dw_1.setfilter("上課時(shí)間 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>  (4)“查看課表”按鈕click事件代碼</p><p>  open(w_course_table)</p>&

95、lt;p>  4.5.2 創(chuàng)建添加選課窗口</p><p>  單擊主窗口的“選課”即可打開此窗口界面,在此界面可以實(shí)現(xiàn)對(duì)課程信息的選擇查看,可以根據(jù)課程代號(hào)查詢相應(yīng)課程的詳細(xì)信息,選擇此課程,并計(jì)算選課門數(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é)號(hào)&

97、lt;/b></p><p>  SELECT stu_login.學(xué)號(hào), </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é)號(hào)查詢用戶的詳細(xì)信息</p><p>  dw_2.setfilter("")</p><p>  dw_2.setfilter(" stu_select_學(xué)號(hào)='"+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("錯(cuò)誤!","

102、;請(qǐng)輸入查詢課程的代碼")</p><p>  sle_1.event getfocus( )</p><p><b>  else</b></p><p>  dw_1.setfilter("")</p><p>  dw_1.setfilter("課程代號(hào)='"

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、 ?。?)“確認(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é)號(hào)</p><p>  SELECT stu_inform.學(xué)號(hào), </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é)號(hào) = stu_login.學(xué)號(hào) )

107、and </p><p>  ( ( stu_login.用戶名 = :login_name ) </p><p><b>  ) ; </b></p><p>  //查詢stu_select表,看是否此學(xué)生已經(jīng)選擇這門課程</p><p>  SELECT stu_select.課程代號(hào) </p&g

108、t;<p>  INTO :cour_no </p><p>  FROM stu_select </p><p>  WHERE ( stu_select.學(xué)號(hào) = :stu_no ) AND </p><p>  ( stu_select.課程代號(hào) = :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.課程代號(hào) = stu_select.課程代號(hào) ) a

110、nd </p><p>  ( ( course_inform.課程代號(hào) = :sle_1.text ) </p><p><b>  ) ;</b></p><p>  if cour_no<>"" then</p><p>  messagebox("提示&quo

111、t;,"你已經(jīng)選擇過(guò)此門課程")</p><p>  elseif cour_sel_leastno ="0" then </p><p>  messagebox("提示","該課程的剩余名額為0,請(qǐng)選擇其他課程!")</p><p><b>  else</b>

112、</p><p>  //插入用戶選擇課程到stu_select表</p><p>  INSERT INTO stu_select </p><p>  ( 學(xué)號(hào), 課程代號(hào) ) </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é)號(hào)</b></p><p> 

116、 SELECT stu_login.學(xué)號(hào), </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é)號(hào)查詢用戶的詳細(xì)信息</p><p>  dw_2.setfilter("")</p><p>  dw_2.setfilter(" stu_select_學(xué)號(hào)='"+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>  打開主窗口,單擊“生成課表”,即可打開本窗口的維護(hù)界面,在本窗口主要實(shí)現(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é)號(hào)='"+</p><p>  trim(st

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論