基于java的學(xué)生信息管理系統(tǒng)設(shè)計與實現(xiàn)_第1頁
基于java的學(xué)生信息管理系統(tǒng)設(shè)計與實現(xiàn)_第2頁
基于java的學(xué)生信息管理系統(tǒng)設(shè)計與實現(xiàn)_第3頁
基于java的學(xué)生信息管理系統(tǒng)設(shè)計與實現(xiàn)_第4頁
基于java的學(xué)生信息管理系統(tǒng)設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于java的學(xué)生信息管理系統(tǒng)設(shè)計與實現(xiàn)基于java的學(xué)生信息管理系統(tǒng)設(shè)計與實現(xiàn) 摘要:利用計算機進行學(xué)生信息管理,不僅能夠保證準確、無誤、快速輸出,而且還可以利用計算機對有關(guān)信息進行查詢,檢索迅速、查找方便、可靠性高、存儲量大、性好。本設(shè)計就是一個為實現(xiàn)信息化管理而開發(fā)的信息管理系統(tǒng),能夠進行信息存儲、查詢、修改等能功。該系統(tǒng)由六個模塊構(gòu)成,包括學(xué)生管理系統(tǒng)的主界面模塊、學(xué)生信息管理模塊、課程信息管理模塊、成績信息管理模塊、信息查詢模塊和數(shù)據(jù)庫操作模塊。通過這些模塊的有機結(jié)合,能方便的對學(xué)生信息進行綜合管理,從而實現(xiàn)了信息化管理的目的。由于本人的能力有限,設(shè)計過程中難免有不足之處,設(shè)計中的存

2、在問題本人將在日后進一步修改,以便讓程序的設(shè)計更加完善。 關(guān)鍵詞:oracle;異常處理;關(guān)系模型目錄1 引 言11.1背景與意義11.2 實驗技術(shù)選擇11.3 課題實現(xiàn)技術(shù)的簡要說明51.4可行性分析62系統(tǒng)需求分析63 學(xué)生信息管理系統(tǒng)設(shè)計73.1數(shù)據(jù)模型分析與設(shè)計83.2 結(jié)構(gòu)設(shè)計與結(jié)構(gòu)功能圖103.2.1 結(jié)構(gòu)設(shè)計103.2.2 功能結(jié)構(gòu)圖104 系統(tǒng)實現(xiàn)125 系統(tǒng)調(diào)試與測試175.1系統(tǒng)功能測試175.2系統(tǒng)調(diào)試常見錯誤176 實驗小結(jié)19參考文獻191 引 言1.1背景與意義學(xué)生信息管理系統(tǒng)是一個教育單位不可缺少的部分。一個功能齊全、簡單易用的信息管理系統(tǒng)不但能有效地減輕學(xué)校相關(guān)

3、工作人員的工作負擔(dān),它的容對于學(xué)校的決策者和管理者來說都至關(guān)重要。所以學(xué)生信息管理系統(tǒng)應(yīng)該能夠為用戶提供充足的信息和快捷的查詢手段。但一直以來人們使用傳統(tǒng)人工的方式管理文件檔案、統(tǒng)計和查詢數(shù)據(jù),這種管理方式存在著許多缺點,如:效率低、性差、人工的大量浪費;另外時間一長,將產(chǎn)生大量的文件和數(shù)據(jù),這對于查找、更新和維護都帶來了不少困難。隨著科學(xué)技術(shù)的不斷提高,計算機科學(xué)日漸成熟其強大的功能已為人們深刻認識,它已進入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用。作為計算機應(yīng)用的一部分,使用計算機對學(xué)校的各類信息進行管理,具有手工管理無法比擬的優(yōu)點。例如:檢索迅速、查詢方便、效率高、可靠性好、存儲量大、

4、性好、壽命長、成本低等。利用計算機進行學(xué)生信息管理,不僅能夠保證準確、無誤、快速輸出,而且還可以利用計算機對有關(guān)信息進行查詢,檢索迅速、查找方便、可靠性高、存儲量大、性好。要科學(xué)地實現(xiàn)信息化管理,開發(fā)一個適合學(xué)校的,能夠進行信息存儲、查詢、修改等功能的信息管理系統(tǒng)是十分重要的。這些優(yōu)點能夠極提高學(xué)校信息管理的效率,也是一個單位科學(xué)化、正規(guī)化管理,與世界接軌的重要條件。 本系統(tǒng)是將現(xiàn)代化的計算機技術(shù)和傳統(tǒng)的教學(xué)、教務(wù)工作相結(jié)合,按照學(xué)院的工作流 程設(shè)計完成的。通過一個簡化的學(xué)生信息管理系統(tǒng),使學(xué)生信息管理工作系統(tǒng)化、規(guī)化、自動化,從而達到提高學(xué)生信息管理效率的目的。本課題就是針對便于學(xué)生信息管理

5、的問題而設(shè)計的一個管理系統(tǒng)。1.2 實驗技術(shù)選擇 本課題設(shè)計主要運用的技術(shù)有兩個:java項目開發(fā)和oracle對數(shù)據(jù)庫的操作。這里主要介紹本課題為什么選用這兩個開發(fā)技術(shù):首先了解一下Java語言特點 Java是一種跨平臺,適合于分布式計算環(huán)境的面向?qū)ο缶幊陶Z言。具體來說,它具有如下特性: 簡單性、面向?qū)ο蟆⒎植际?、解釋型、可靠、安全、平臺無關(guān)、可移植、高性能、多線程、動態(tài)性等。 下面我們將重點介紹Java語言的面向?qū)ο?、平臺無關(guān)、分布式、多線程、可靠和安全等特性。 面向?qū)ο?面向?qū)ο笃鋵嵤乾F(xiàn)實世界模型的自然延伸?,F(xiàn)實世界中任何實體都可以看作是對象。對象之間通過消息相互作用。另外,現(xiàn)實世界中任

6、何實體都可歸屬于某類事物,任何對象都是某一類事物的實例。如果說傳統(tǒng)的過程式編程語言是以過程為中心以算法為驅(qū)動的話,面向?qū)ο蟮木幊陶Z言則是以對象為中心以消息為驅(qū)動。用公式表示,過程式編程語言為:程序=算法+數(shù)據(jù);面向?qū)ο缶幊陶Z言為:程序=對象+消息。 所有面向?qū)ο缶幊陶Z言都支持三個概念:封裝、多態(tài)性和繼承,Java也不例外?,F(xiàn)實世界中的對象均有屬性和行為,映射到計算機程序上,屬性則表示對象的數(shù)據(jù),行為表示對象的方法(其作用是處理數(shù)據(jù)或同外界交互)。所謂封裝,就是用一個自主式框架把對象的數(shù)據(jù)和方法聯(lián)在一起形成一個整體。可以說,對象是支持封裝的手段,是封裝的基本單位。Java語言的封裝性較強,因為J

7、ava無全程變量,無主函數(shù),在Java中絕大部分成員是對象,只有簡單的數(shù)字類型、字符類型和布爾類型除外。而對于這些類型,Java也提供了相應(yīng)的對象類型以便與其他對象交互操作。 多態(tài)性就是多種表現(xiàn)形式,具體來說,可以用“一個對外接口,多個在實現(xiàn)方法”表示。舉一個例子,計算機中的堆??梢源鎯Ω鞣N格式的數(shù)據(jù),包括整型,浮點或字符。不管存儲的是何種數(shù)據(jù),堆棧的算法實現(xiàn)是一樣的。針對不同的數(shù)據(jù)類型,編程人員不必手工選擇,只需使用統(tǒng)一接口名,系統(tǒng)可自動選擇。運算符重載(operatoroverload)一直被認為是一種優(yōu)秀的多態(tài)機制體現(xiàn),但由于考慮到它會使程序變得難以理解,所以Java最后還是把它取消了。

8、 繼承是指一個對象直接使用另一對象的屬性和方法。事實上,我們遇到的很多實體都有繼承的含義。例如,若把汽車看成一個實體,它可以分成多個子實體,如:卡車、公共汽車等。這些子實體都具有汽車的特性,因此,汽車是它們的“父親”,而這些子實體則是汽車的“孩子”。Java提供給用戶一系列類(class),Java的類有層次結(jié)構(gòu),子類可以繼承父類的屬性和方法。與另外一些面向?qū)ο缶幊陶Z言不同,Java只支持單一繼承。 平臺無關(guān)性 Java是平臺無關(guān)的語言是指用Java寫的應(yīng)用程序不用修改就可在不同的軟硬件平臺上運行。平臺無關(guān)有兩種:源代碼級和目標代碼級。C和C+具有一定程度的源代碼級平臺無關(guān),表明用C或C+寫的

9、應(yīng)用程序不用修改只需重新編譯就可以在不同平臺上運行。Java主要靠Java虛擬機(JVM)在目標碼級實現(xiàn)平臺無關(guān)性。JVM是一種抽象機器,它附著在具體操作系統(tǒng)之上,本身具有一套虛機器指令,并有自己的棧、寄存器組等。但JVM通常是在軟件上而不是在硬件上實現(xiàn)。(目前,SUN系統(tǒng)公司已經(jīng)設(shè)計實現(xiàn)了Java芯片,主要使用在網(wǎng)絡(luò)計算機NC上。 另外,Java芯片的出現(xiàn)也會使Java更容易嵌入到家用電器中。)JVM是Java平臺無關(guān)的基礎(chǔ),在JVM上,有一個Java解釋器用來解釋Java編譯器編譯后的程序。Java編程人員在編寫完程序后,通過Java編譯器將Java源程序編譯為JVM的字節(jié)代碼。任何一臺機

10、器只要配備了Java解釋器,就可以運行這個程序,而不管這種字節(jié)碼是在何種平臺上生成的。另外,Java采用的是基于IEEE標準的數(shù)據(jù)類型。通過JVM保證數(shù)據(jù)類型的一致性,也確保了Java的平臺無關(guān)性。 Java的平臺無關(guān)性具有深遠意義。首先,它使得編程人員所夢寐以求的事情(開發(fā)一次軟件在任意平臺上運行)變成事實,這將大大加快和促進軟件產(chǎn)品的開發(fā)。其次Java的平臺無關(guān)性正好迎合了“網(wǎng)絡(luò)計算機”思想。如果大量常用的應(yīng)用軟件(如字處理軟件等)都用Java重新編寫,并且放在某個Internet服務(wù)器上,那么具有NC的用戶將不需要占用大量空間安裝軟件,他們只需要一個Java解釋器,每當(dāng)需要使用某種應(yīng)用軟

11、件時,下載該軟件的字節(jié)代碼即可,運行結(jié)果也可以發(fā)回服務(wù)器。目前,已有數(shù)家公司開始使用這種新型的計算模式構(gòu)筑自己的企業(yè)信息系統(tǒng)。 分布式分布式包括數(shù)據(jù)分布和操作分布。數(shù)據(jù)分布是指數(shù)據(jù)可以分散在網(wǎng)絡(luò)的不同主機上,操作分布是指把一個計算分散在不同主機上處理。 Java支持WWW客戶機/服務(wù)器計算模式,因此,它支持這兩種分布性。對于前者,Java提供了一個叫作URL的對象,利用這個對象,你可以打開并訪問具有一樣URL地址上的對象,訪問方式與訪問本地文件系統(tǒng)一樣。對于后者,Java的applet小程序可以從服務(wù)器下載到客戶端,即部分計算在客戶端進行,提高系統(tǒng)執(zhí)行效率。 Java提供了一整套網(wǎng)絡(luò)類庫,開發(fā)

12、人員可以利用類庫進行網(wǎng)絡(luò)程序設(shè)計,方便得實現(xiàn)Java的分布式特性。 可靠性和安全性Java最初設(shè)計目的是應(yīng)用于電子類消費產(chǎn)品,因此要求較高的可靠性。Java雖然源于C+,但它消除了許多C+不可靠因素,可以防止許多編程錯誤。首先,Java是強類型的語言,要求顯式的方法聲明,這保證了編譯器可以發(fā)現(xiàn)方法調(diào)用錯誤,保證程序更加可靠;其次,Java不支持指針,這杜絕了存的非法訪問;第三,Java的自動單元收集防止了存丟失等動態(tài)存分配導(dǎo)致的問題;第四,Java解釋器運行時實施檢查,可以發(fā)現(xiàn)數(shù)組和字符串訪問的越界,最后,Java提供了異常處理機制,程序員可以把一組錯誤代碼放在一個地方,這樣可以簡化錯誤處理任

13、務(wù)便于恢復(fù)。 由于Java主要用于網(wǎng)絡(luò)應(yīng)用程序開發(fā),因此對安全性有較高的要求。如果沒有安全保證,用戶從網(wǎng)絡(luò)下載程序執(zhí)行就非常危險。Java通過自己的安全機制防止了病毒程序的產(chǎn)生和下載程序?qū)Ρ镜叵到y(tǒng)的威脅破壞。當(dāng)Java字節(jié)碼進入解釋器時,首先必須經(jīng)過字節(jié)碼校驗器的檢查,然后,Java解釋器將決定程序中類的存布局,隨后,類裝載器負責(zé)把來自網(wǎng)絡(luò)的類裝載到單獨的存區(qū)域,避免應(yīng)用程序之間相互干擾破壞。最后,客戶端用戶還可以限制從網(wǎng)絡(luò)上裝載的類只能訪問某些文件系統(tǒng)。 上述幾種機制結(jié)合起來,使得Java成為安全的編程語言。 多線程線程是操作系統(tǒng)的一種新概念,它又被稱作輕量進程,是比傳統(tǒng)進程更小的可并發(fā)執(zhí)行

14、的單位。 C和C+采用單線程體系結(jié)構(gòu),而Java卻提供了多線程支持。Java在兩方面支持多線程。一方面,Java環(huán)境本身就是多線程的。若干個系統(tǒng)線程運行負責(zé)必要的無用單元回收,系統(tǒng)維護等系統(tǒng)級操作;另一方面,Java語言置多線程控制,可以大大簡化多線程應(yīng)用程序開發(fā)。Java提供了一個類Thread,由它負責(zé)啟動運行,終止線程,并可檢查線程狀態(tài)。Java的線程還包括一組同步原語。這些原語負責(zé)對線程實行并發(fā)控制。利用Java的多線程編程接口,開發(fā)人員可以方便得寫出支持多線程的應(yīng)用程序,提高程序執(zhí)行效率。必須注意地是,Java的多線程支持在一定程度上受運行時支持平臺的限制。例如,如果操作系統(tǒng)本身不支

15、持多線程,Java的多線程特性可能就表現(xiàn)不出來。 oracle數(shù)據(jù)庫的特點無式要求,可根據(jù)實際系統(tǒng)需求構(gòu)造數(shù)據(jù)庫。 采用標準的SQL結(jié)構(gòu)化查詢語言。具有豐富的開發(fā)工具,覆蓋開發(fā)周期的各階段。支持大型數(shù)據(jù)庫,數(shù)據(jù)類型支持數(shù)字、字符、大至4GB的二進制數(shù)據(jù),為數(shù)據(jù)庫的面向存儲提供數(shù)據(jù)支持。具有第四代語言的開發(fā)工具(SQL*formS、SQL*REPORTS、SQL*MENU等)。具有字符界面和圖形界面,易于開發(fā)。通過SQL*DBA控制用戶權(quán)限,提供數(shù)據(jù)保護功能,監(jiān)控數(shù)據(jù)庫的 運行狀態(tài),調(diào)整數(shù)據(jù)緩沖區(qū)的大小。 分布優(yōu)化查詢功能。具有數(shù)據(jù)透明、網(wǎng)絡(luò)透明,支持異種網(wǎng)絡(luò)、異構(gòu)數(shù)據(jù)庫系統(tǒng)。并行 處理采用動態(tài)

16、數(shù)據(jù)分片技術(shù)。支持客戶機/服務(wù)器體系結(jié)構(gòu)與混合的體系結(jié)構(gòu)(集中式、分布式、 客戶機/服務(wù)器)。實現(xiàn)了兩階段提交、多線索查詢手段。 支持多種系統(tǒng)平臺(HPUX、SUNOS、OSF/1、VMS、 WINDOWS、WINDOWS/NT、OS/2)。數(shù)據(jù)安全保護措施:沒有讀鎖,采取快照SNAP方式完全消除了分布讀寫沖突。自動檢測死鎖和沖突并解決。 數(shù)據(jù)安全級別為C2級(最高級)。 數(shù)據(jù)庫模支持多字節(jié)碼制,支持多種語言文字編碼。具有面向制造系統(tǒng)的管理信息系統(tǒng)和財務(wù)系統(tǒng)應(yīng)用系統(tǒng)。綜上所述,選擇java作為開發(fā)語言,oracle作為數(shù)據(jù)庫開發(fā)工具是個不錯的選擇。java語言的面向?qū)ο?、平臺無關(guān)、分布式、多線

17、程、可靠和安全等特性,使得開發(fā)出來的項目具有健壯性、可維護性、可移植性等特點。Oracle是目前最具權(quán)威的數(shù)據(jù)庫產(chǎn)品,它具有的兼容性、可移植性、可聯(lián)結(jié)性、高生產(chǎn)率和開放性的特點,使它成為當(dāng)今眾多的程序開發(fā)人員首選的數(shù)據(jù)庫開發(fā)工具。所以本課題選擇java和oracle作為開發(fā)技術(shù)是為今后開發(fā)更復(fù)雜的項目打下基礎(chǔ),以免到時候遇到相關(guān)的技術(shù)問題而不知所措。1.3 課題實現(xiàn)技術(shù)的簡要說明本課題主要運用了java圖形編程和oracle數(shù)據(jù)庫的操作。Java圖形編程給用戶提供了一個直觀、易于與用戶進行交互的圖形界面。在圖形編程中,運用了大量的java.swing包中的類,之所以選擇swing包中的類而不選

18、java.awt包中的類,主要是swing包中的類能給用戶提供更好的觀感。oracle數(shù)據(jù)庫的操作這部分容分成三部分來實現(xiàn):首先,編寫對數(shù)據(jù)庫操作的類,包括:連接數(shù)據(jù)庫、執(zhí)行sql語句、關(guān)閉數(shù)據(jù)庫連接等。其次,編寫一個用于對學(xué)生信息進行數(shù)據(jù)庫操作的類,包括:學(xué)生信息的增加、修改、刪除和查詢等。最后,編寫一個用于對課程相關(guān)信息進行數(shù)據(jù)庫操作的類,包括:對課程信息的增加、修改、刪除、查詢等等。通過結(jié)合圖形編程和數(shù)據(jù)庫編程,從而基本上實現(xiàn)了學(xué)生信息管理的基本功能,由于本人技術(shù)上的不足,難免有些地方需要改進,這些存在的問題都將成為本人前進的動力,并在日后更加完善本課題的設(shè)計。1.4可行性分析系統(tǒng)的性質(zhì)

19、為管理軟件,因而數(shù)據(jù)庫的設(shè)計與操縱是系統(tǒng)設(shè)計的核心。這里從兩方面分析技術(shù)上的可行性。首先,對于java編程部分,java課已經(jīng)開過。因此在課題設(shè)計中,對java圖形編程方面的問題都能迎韌而解。其次,對于數(shù)據(jù)庫的有關(guān)知識,本人運用了大量的時間對相關(guān)書籍的閱讀以與上機實驗,基本上掌握了運用oracle數(shù)據(jù)庫技術(shù),具備一定的系統(tǒng)分析與設(shè)計能力,熟悉數(shù)據(jù)庫的設(shè)計與操縱;因而該系統(tǒng)的實現(xiàn)在技術(shù)上是可行的。 2系統(tǒng)需求分析本課題根據(jù)學(xué)生信息管理綜合分析,便出于方便管理考慮,將學(xué)生信息管理系統(tǒng)的功能總結(jié)起來,共需要實現(xiàn)以下幾個方面功能:管理學(xué)生信息管理所有學(xué)生的基本信息,對學(xué)生信息的操作包括添加、修改、刪除

20、等;可以根據(jù)各種條件查詢出需要的信息,比如修改,可以通過學(xué)生學(xué)號查詢出學(xué)生的基本信息,然后通過對需要修改項進行修改并保存修改后的結(jié)果存入數(shù)據(jù)庫的學(xué)生表中。管理課程信息管理所有課程的基本信息,包括對課程信息的添加、修改、刪除等操作;可以根據(jù)各種條件查詢出需要的信息,并對相應(yīng)的信息進行操作。比如修改和刪除,可以通過學(xué)生的學(xué)號查詢出學(xué)生的相應(yīng)課程信息,對相應(yīng)的課程進行修改、刪除操作。學(xué)生選課與成績根據(jù)學(xué)生的學(xué)號進行選課,登記所選課程的成績;可以根據(jù)學(xué)號查詢出選課信息與成績。通過以上功能的設(shè)計與實現(xiàn),并實現(xiàn)學(xué)生信息管理系統(tǒng)的基本功能。3 學(xué)生信息管理系統(tǒng)設(shè)計3.1數(shù)據(jù)模型分析與設(shè)計數(shù)據(jù)庫模型描述了在數(shù)

21、據(jù)庫中結(jié)構(gòu)化和操縱數(shù)據(jù)的方法,模型的結(jié)構(gòu)部分規(guī)定了數(shù)據(jù)如何被描述(例如樹、表等);模型的操縱部分規(guī)定了數(shù)據(jù)的添加、刪除、顯示、維護、打印、查找、選擇、排序和更新等操作。數(shù)據(jù)庫模型的分類:分層模型、關(guān)系模型、網(wǎng)絡(luò)模型和對象模型。本課題選擇的關(guān)系模型,關(guān)系模型是目前最重要的一種數(shù)據(jù)模型。關(guān)系數(shù)據(jù)庫系統(tǒng)采用關(guān)系模型作為數(shù)據(jù)的組織方式。關(guān)系數(shù)據(jù)模型具有下列優(yōu)點: 關(guān)系模型與非關(guān)系模型不同,它是建立在嚴格的數(shù)學(xué)概念的基礎(chǔ)上的。 關(guān)系模型的概念單一。無論實體還是實體之間的聯(lián)系都用關(guān)系表示。對數(shù)據(jù)的檢索結(jié)構(gòu)也是關(guān)系(即表)。所以其數(shù)據(jù)結(jié)構(gòu)簡單、清晰,擁護易懂易用。 關(guān)系模型的存取路徑對用戶透明,從而具有更高

22、的數(shù)據(jù)獨立性、更好的安全性,也簡化了程序員的工作和數(shù)據(jù)庫開發(fā)建立的工作。所以,關(guān)系數(shù)據(jù)模型誕生以后發(fā)展迅速,深受擁護的喜愛,這也是本課題選取關(guān)系數(shù)據(jù)模型的原因。當(dāng)然,關(guān)系數(shù)據(jù)模型也有缺點,其中最主要的缺點是,由于存取路件對用戶透明,查詢效率往往不如非關(guān)系數(shù)據(jù)模型。因此為了提高性能,必須對用戶的查詢請求進行優(yōu)化,增加了開發(fā)數(shù)據(jù)庫管理系統(tǒng)的難度。本課題的關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)可分為三個表來表示:學(xué)生信息表(Student)、課程信息表(Course)、學(xué)生選課表(SC);學(xué)生信息表用于記錄學(xué)生的基本信息,如表3-1;課程信息表用于記錄課程的基本信息,如表3-2;學(xué)生選課表如下表3-3。這三個表對應(yīng)

23、的E-R圖分別是:圖3.1 學(xué)生信息E-R圖;圖3.2 課程信息E-R圖;圖 3.3 學(xué)生選課E-R圖;如下圖。表3-1 學(xué)生信息表(Student)名稱數(shù)據(jù)類型主鍵非空學(xué)號Number(10)YesYes學(xué)生Varchar2NoYes性別Char(2)NoNo年齡Char(2)NoNo專業(yè)Varchar2NoNo學(xué)院Char(8)NoNo表3-2 課程信息表(Course)名稱數(shù)據(jù)類型主鍵非空課程編號Char(4)YesYes課程名稱Varchar2NoYes授課教師Varchar2NoNo上課地點Varchar2NoNo課程類別Char(1)NoNo表3-3 學(xué)生選課表(SC)名稱數(shù)據(jù)類型

24、主鍵非空學(xué)號Char(10)YesYes課程編號Char(4)YesYes成績Number(4,1)NoNo學(xué)生學(xué)號學(xué)生XX性別專業(yè)年級出生圖3.1 學(xué)生信息E-R圖課程課程編號上課地點課程名稱授課教師課程類別圖3.2 課程信息E-R圖選課表學(xué)號課程編號成績圖3.3 學(xué)生選課E-R圖3.2 結(jié)構(gòu)設(shè)計與結(jié)構(gòu)功能圖3.2.1 結(jié)構(gòu)設(shè)計根據(jù)對系統(tǒng)進行需求分析,本系統(tǒng)將分為4個模塊: 學(xué)生管理管理學(xué)生基本信息,包括個人信息的添加、修改、刪除以與選課信息的添加。課程管理管理課程的基本信息,包括課程信息的添加、修改和刪除。成績管理管理學(xué)生選課的成績信息,包括成績的登記與修改。信息查詢查詢已經(jīng)登記的信息,包

25、括學(xué)生的基本信息、課程的基本信息與成績信息。3.2.2 功能結(jié)構(gòu)圖學(xué)生管理系統(tǒng)功能結(jié)構(gòu)如圖3.4所示。學(xué)生管理系統(tǒng)學(xué)生管理課程管理成績管理信息查詢添加增加刪除學(xué)生查詢增加課程查詢修改修改修改刪除學(xué)生選課成績查詢按XX查詢按學(xué)號查詢按性別查詢按專業(yè)查詢按學(xué)院查詢按課程名稱查詢查詢所有科目成績按授課老師查詢圖3.4 學(xué)生管理系統(tǒng)功能結(jié)構(gòu)圖4 系統(tǒng)實現(xiàn)該系統(tǒng)由6個模塊構(gòu)成,包括學(xué)生管理系統(tǒng)主界面模塊、學(xué)生信息管理模塊、課程信息管理模塊、成績信息管理模塊、信息查詢模塊和數(shù)據(jù)操作模塊。下面分別加以敘述: 學(xué)生管理系統(tǒng)主界面模塊學(xué)生管理系統(tǒng)主界面模塊包括StuMS.java和StuMain.java兩個文

26、件。StuMS是學(xué)生管理系統(tǒng)的主運行類,其中有運行整個程序的main方法,該文件生成了StuMain類的一個實例,從而生成了學(xué)生管理系統(tǒng)的界面,如圖4.1所示。StuMain類繼承自JFrame類,實現(xiàn)了ActionListener接口,他有一個不帶參數(shù)的構(gòu)造方法StuMain(),用來生成StuMain的實例。StuMain類將所有功能集中到菜單欄中,并通過調(diào)用其他模塊來實現(xiàn)學(xué)生管理系統(tǒng)的各個功能。圖4.1 學(xué)生管理系統(tǒng)主界面 學(xué)生信息管理模塊學(xué)生信息管理模塊主要由StuInfo.java、AddStuInfo.java、EdiStuInfo.java、DelStuInfo.java、Sel

27、ectCourse.java和StuInfoSearchSnum.java共計6個文件組成,其構(gòu)成關(guān)系如圖4.2所示。學(xué)生信息超類StuInfo.java增加學(xué)生信息AddStuInfo.java修改學(xué)生信息EdiStuInfo.java刪除學(xué)生信息DelStuInfo.java學(xué)生選課SelectCourse.java按學(xué)號查詢StuInfoSearchSnum.java按學(xué)號查詢StuInfoSearchSnum.java圖4.2 學(xué)生信息管理模塊功能結(jié)構(gòu)圖學(xué)生信息管理模塊的6個文件組成了主界面中的“學(xué)生管理”菜單的容,其中包括增加、修改、刪除和學(xué)生選課功能,如圖4.3所示。圖4.3 學(xué)生

28、信息管理模塊的運行界面 課程信息管理模塊課程信息管理模塊主要由CourseInfo.java、AddCourseInfo.java、EditCourseInfo.java、DelCourseInfo.java、CourseInfoSearchCnum.java這5個文件組成,其構(gòu)成關(guān)系如圖4.4所示。課程信息超類CourseInfo.java增加課程信息AddCourseInfo.java修改課程信息EditCourseInfo.java刪除課程信息DelCourseInfo.java按課程號查詢CourseInfoSearchCnum.java按課程號查詢CourseInfoSearchCn

29、um.java圖4.4 課程信息管理模塊功能結(jié)構(gòu)圖課程信息管理模塊中的5個類文件組成了主界面中“課程管理”菜單的容,其中包括增加、修改和刪除功能,如圖4.5所示。圖4.5 課程信息管理模塊運行界面 成績信息管理模塊成績信息管理模塊主要由GradeInfo.java、AddGradeInfo.java、EditGradeInfo.java這3個文件組成,其構(gòu)成關(guān)系如圖4.6所示。成績管理超類GradeInfo.java增加成績信息AddGradeInfo.java修改成績信息EditGradeInfo.java圖4.6 成績信息管理模塊功能結(jié)構(gòu)圖成績信息管理模塊中的3個類文件組成了主界面中的“成

30、績管理”菜單的容,其中包括增加和修改功能,如圖4.7所示。圖4.7 成績信息管理模塊的運行界面 信息查詢模塊信息查詢模塊主要包括學(xué)生查詢、課程查詢和成績查詢3個部分。信息查詢的運行主截面如圖4.8所示。圖4.8 學(xué)生信息查詢模塊的運行界面學(xué)生查詢由StuSearchSnum.java、StuSearchSsex.java、StuSearchScollege.java、StuSearchSmajor.java和ResultStudent.java這6個文件組成,主要實現(xiàn)功能包括:按學(xué)號查詢、按學(xué)生查詢、按性別查詢、按學(xué)院查詢與按專業(yè)查詢。5 系統(tǒng)調(diào)試與測試5.1系統(tǒng)功能測試功能測試主要是測試程序

31、模塊是否實現(xiàn)了設(shè)計中所要求的功能。功能測試中需要注意的有:(1)查詢功能中,有按單一查詢條件進行查詢的,也有按多個查詢條件組合查詢的。這里要注意的多個查詢條件之間的關(guān)系。還有一些常識性的問題,比如按月查詢,閏月中二月的天數(shù)。(2)錄入功能中,需要注意的是前臺設(shè)置的數(shù)值長度是否大于后臺數(shù)值長度,以與前臺和后臺的數(shù)據(jù)結(jié)構(gòu)是否相符,很多時候錄入功能無法實現(xiàn)是由于這些原因。還有就是必須錄入的字段的設(shè)置時候有誤。(3)測試刪除功能中需要注意的是單擊刪除按鈕后,一般會出現(xiàn)提示信息,詢問是否確定刪除。通常情況下,我們單擊確認按鈕查看信息是否被刪除掉了,而忽略了單擊取消按鈕后程序的反應(yīng):這時有可能的是沒有刪除

32、,還有一種可能是即便單擊了取消按鈕,也一樣刪除了數(shù)據(jù)。另外,在刪除多條記錄的時候,要注意連續(xù)選中的幾條記錄是否真正都被刪除掉了,即如果再按照這種查詢方式查詢,時候還能查詢出來。有的時候需要在數(shù)據(jù)庫中設(shè)立一個標志位,而不是真正的物理刪除。所以在下一次查詢中,可能還會被查詢出來,這主要是因為在查詢條件中沒有將標志考慮在。(4)關(guān)于修改功能的測試主要是看修改確認后是否數(shù)據(jù)真正已被修改了。這是最基本的功能,需要注意的是看是否能把不應(yīng)該修改的數(shù)據(jù)也修改成功了。 5.2系統(tǒng)調(diào)試常見錯誤1.NullPointerException異常一般是對一個為NULL值的變量進行操作引起的。為避免這種異常,最好在對變量

33、操作之前檢查,看它是否為NULL值。2.SQLException異常一般是由于SQL語句不正確引起的。為避免這種異常,最好在使用SQL語句的程序中捕獲此SQL異常。3.NumberFormatException異常這是由于數(shù)字的格式錯誤而出現(xiàn)的例外。為了避免出現(xiàn)此類錯誤,一般必須保證數(shù)據(jù)格式輸入正確。4.數(shù)據(jù)庫連接垃圾回收在實際的開發(fā)應(yīng)用中,通常出現(xiàn)某一個對象未能關(guān)閉的情況,為了防止這種情況的發(fā)生,可以在有關(guān)對數(shù)據(jù)庫操作的Java類文件中增加自動回收函數(shù),在JVM自動地回收對象時,取出使用的連接對象,判斷是否關(guān)閉,如果沒有關(guān)閉則關(guān)掉。代碼如下所示:protected void finalize

34、() try If(getConn()!=null&!getConn().isClosed() rs.cloes(); stm.close(); conn.close(); catch(SQLException e)6 實驗小結(jié)經(jīng)過這次課題的設(shè)計并實現(xiàn),盡管會遇到很多難題,但是讓我更加受益的是在這次課題中得到的經(jīng)驗、心得和鍛煉。我發(fā)現(xiàn)做實驗的過程其實就是個不斷的解決問題的過程,從中也感覺到實驗成功的快樂,一個人永遠有學(xué)不玩的知識,就算是實驗中的知識點都學(xué)了,但在實際的應(yīng)用過程中仍然會遇到不少問題,遇到問題時要做到兩點:一個是“查”,一個是“問”。不懂的地方就得要自己找答案,可以從書本、網(wǎng)絡(luò)中查

35、找解決的答案;再一個就是問周邊的同學(xué)。這次課程的設(shè)計給我所學(xué)的知識做了一個總結(jié),為我深入學(xué)習(xí)編程做了鋪墊。在本課題中存在的不足之處是在所難免的,本人將在日后加于改進。參考文獻1 王克宏、郝建文. Java技術(shù)教程 M. :清華大學(xué),2002年9月.2 蔡敏、徐慧慧、黃炳強. UML基礎(chǔ)與Rose建模教程 M. :人民郵電,2006年5月.3 薩師煊、王珊. 數(shù)據(jù)庫系統(tǒng)概論(第三版)M. :高等教育,2005年12月. 4齊治昌、譚慶平、寧洪.軟件工程(第二版)M.:高等教育,2004年,3月. 5周競濤、寒.Eclipse完全手冊M.:電子工業(yè),2006年,8月. 6CayS.Horstman

36、n、GaryCornll.葉乃文等譯.Java核心技術(shù)M:機械工業(yè),2006年5月. 7蒙祖強、龔濤.Oracle10g數(shù)據(jù)庫Java開發(fā).:中國水利水電,2005年6月.附錄代碼/ AddStuInfo.javapackage .main;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import javax.swing.utton;import javax.swing.JComboBox;import javax.swing.JFrame;i

37、mport javax.swing.JLabel;import javax.swing.JTextField;import javax.swing.JOptionPane;import .bean.Student;import .dao.StudentDao;import .db.DB;import .main.DelteStudent.delAction;public class AddStuInfo extends JFrame StudentDao studao = new StudentDao();DB db = new DB();Connection conn = db.getCon

38、nection();JTextField snoText = null;JTextField snameText = null;JComboBox sexcom = null;JTextField ageText = null;JComboBox classcom = null;JComboBox departcom = null;public void init() / 窗體設(shè)計this.setLayout(null);this.setTitle(學(xué)生信息管理系統(tǒng));this.setSize(500, 400);JLabel title = new JLabel(學(xué)生信息維護模塊-錄入數(shù)據(jù))

39、;title.setBounds(180, 20, 200, 30);this.add(title);JLabel snoLabel = new JLabel(學(xué)號);snoText = new JTextField();snoLabel.setBounds(20, 60, 40, 25);snoText.setBounds(60, 60, 120, 25);this.add(snoLabel);this.add(snoText);JLabel snameLabel = new JLabel();snameText = new JTextField();snameLabel.setBounds

40、(220, 60, 40, 25);snameText.setBounds(260, 60, 120, 25);this.add(snameLabel);this.add(snameText);JLabel sexlabel = new JLabel(性別);String sex = 男, 女 ;sexcom = new JComboBox(sex);sexlabel.setBounds(20, 90, 40, 25);sexcom.setBounds(60, 90, 120, 25);this.add(sexlabel);this.add(sexcom);JLabel ageLabel =

41、new JLabel(年齡);ageText = new JTextField();ageLabel.setBounds(220, 90, 40, 25);ageText.setBounds(260, 90, 120, 25);this.add(ageLabel);this.add(ageText);JLabel classlabel = new JLabel(班級);String classes = 信息081, 信息082, 物流081 ;classcom = new JComboBox(classes);classlabel.setBounds(20, 120, 40, 25);clas

42、scom.setBounds(60, 120, 120, 25);this.add(classlabel);this.add(classcom);JLabel departlabel = new JLabel(學(xué)院);String depart = 造紙, 理學(xué)院, 機電學(xué)院 ;departcom = new JComboBox(depart);departlabel.setBounds(220, 120, 40, 25);departcom.setBounds(260, 120, 120, 25);this.add(departlabel);this.add(departcom);/ 錄入數(shù)

43、據(jù)utton addbtn = new utton(錄入);addbtn.setBounds(150, 180, 60, 30);addbtn.addActionListener(new addAction();this.add(addbtn);/ 返回utton backbtn = new utton(返回);backbtn.setBounds(230, 180, 60, 30);backbtn.addActionListener(new BackAction ();this.add(backbtn);this.setLocationRelativeTo(null); / 使窗體居中this

44、.setResizable(false);/ 固定窗體大小this.setVisible(true); / 設(shè)置窗體可見/this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); / 窗體關(guān)閉時,程序結(jié)束/ 獲取文本框或選擇框的值public Student getStudent() Student stu = new Student();String sno = snoText.getText(); / 獲取輸入的學(xué)號String sname = snameText.getText(); / 獲取String sex = (String) se

45、xcom.getSelectedItem();/ 獲取性別int age = Integer.parseInt(ageText.getText().trim(); / 獲取年齡String className = (String) classcom.getSelectedItem(); / 獲取班級String depart = (String) departcom.getSelectedItem(); / 獲取學(xué)院/ 封裝信息stu.setSno(sno);stu.setName(sname);stu.setSex(sex);stu.setAge(age);stu.setClassName(

46、className);stu.setDepart(depart);return stu;public static void main(String args) AddStudent addstu = new AddStudent();addstu.init();/ 錄入的監(jiān)聽器class addAction implements ActionListener public void actionPerformed(ActionEvent e) Student stu = getStudent();boolean b = studao.save(stu, conn);if (b) JOptio

47、nPane.showMessageDialog(null, 數(shù)據(jù)錄入成功!); else JOptionPane.showMessageDialog(null, 學(xué)號已存在,數(shù)據(jù)錄入失??!);class BackAction implements ActionListenerpublic void actionPerformed(ActionEvent e) MainFrame m=new MainFrame (); m.init();/DelStuInfo.javapackage .main;import java.awt.event.ActionEvent;import java.awt.

48、event.ActionListener;import java.sql.Connection;import java.sql.SQLException;import java.util.Vector;import javax.swing.utton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import .bean.Student;import .dao.StudentDao;import .db.DB;impo

49、rt .main.AddStudent.BackAction;/刪除學(xué)生信息public class DelStuInfo extends JFrame StudentDao studao = new StudentDao();DB db = new DB();Connection conn = db.getConnection();JComboBox snocom = null;public void init() / 窗體設(shè)計this.setLayout(null);this.setTitle(學(xué)生信息管理系統(tǒng));this.setSize(500, 400);JLabel title =

50、new JLabel(學(xué)生信息維護模塊-刪除數(shù)據(jù));title.setBounds(180, 20, 200, 30);this.add(title);/ 選擇學(xué)號JLabel snoLabel = new JLabel(請選擇要刪除學(xué)生信息的學(xué)號);snoLabel.setBounds(20, 60, 200,25);this.add(snoLabel);try Vector vec = studao.getSno();snocom = new JComboBox(vec); / 將數(shù)據(jù)庫里的學(xué)號信息裝入下拉框中snocom.setBounds(30, 90, 150, 25); catch

51、 (SQLException e) e.printStackTrace();this.add(snocom);/ 刪除數(shù)據(jù)utton delbtn = new utton(刪除);delbtn.setBounds(100, 180, 60, 30);delbtn.addActionListener(new delAction();this.add(delbtn);/ 返回utton backbtn = new utton(返回);backbtn.setBounds(180, 180, 60, 30);backbtn.addActionListener(new BackAction ();thi

52、s.add(backbtn);this.setLocationRelativeTo(null); / 使窗體居中this.setResizable(false);/ 固定窗體大小this.setVisible(true); / 設(shè)置窗體可見/this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); / 窗體關(guān)閉時,程序結(jié)束public static void main(String args) DelteStudent delstu = new DelteStudent();delstu.init();/ 刪除的監(jiān)聽器class delAction implements ActionListener public void actionPerformed(ActionEvent e) String delsno = (String) snocom.getSelectedItem();boolean b = studao.delete(delsno, conn);if (b) JOptionPane.showM

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論