版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、-. z基于java的學生信息管理系統(tǒng)設(shè)計與實現(xiàn)基于java的學生信息管理系統(tǒng)設(shè)計與實現(xiàn) 摘要:利用計算機進展學生信息管理,不僅能夠保證準確、無誤、快速輸出,而且還可以利用計算機對有關(guān)信息進展查詢,檢索迅速、查找方便、可靠性高、存儲量大、性好。本設(shè)計就是一個為實現(xiàn)信息化管理而開發(fā)的信息管理系統(tǒng),能夠進展信息存儲、查詢、修改等能功。該系統(tǒng)由六個模塊構(gòu)成,包括學生管理系統(tǒng)的主界面模塊、學生信息管理模塊、課程信息管理模塊、成績信息管理模塊、信息查詢模塊和數(shù)據(jù)庫操作模塊。通過這些模塊的有機結(jié)合,能方便的對學生信息進展綜合管理,從而實現(xiàn)了信息化管理的目的。由于本人的能力有限,設(shè)計過程中難免有缺乏之處,設(shè)
2、計中的存在問題本人將在日后進一步修改,以便讓程序的設(shè)計更加完善。 關(guān)鍵詞:oracle;異常處理;關(guān)系模型目錄 TOC o 1-3 h z u HYPERLINK l _Toc2962896641 引 言 PAGEREF _Toc296289664 h 1HYPERLINK l _Toc2962896651.1背景及意義 PAGEREF _Toc296289665 h 1HYPERLINK l _Toc2962896661.2 實驗技術(shù)選擇 PAGEREF _Toc296289666 h 1HYPERLINK l _Toc2962896671.3 課題實現(xiàn)技術(shù)的簡要說明 PAGEREF _To
3、c296289667 h 5HYPERLINK l _Toc2962896681.4可行性分析 PAGEREF _Toc296289668 h 6HYPERLINK l _Toc2962896692系統(tǒng)需求分析 PAGEREF _Toc296289669 h 6HYPERLINK l _Toc2962896703 學生信息管理系統(tǒng)設(shè)計 PAGEREF _Toc296289670 h 7HYPERLINK l _Toc2962896713.1數(shù)據(jù)模型分析與設(shè)計 PAGEREF _Toc296289671 h 8HYPERLINK l _Toc2962896723.2 構(gòu)造設(shè)計與構(gòu)造功能圖 PAG
4、EREF _Toc296289672 h 10HYPERLINK l _Toc2962896733.2.1 構(gòu)造設(shè)計 PAGEREF _Toc296289673 h 10HYPERLINK l _Toc2962896743.2.2 功能構(gòu)造圖 PAGEREF _Toc296289674 h 10HYPERLINK l _Toc2962896754 系統(tǒng)實現(xiàn) PAGEREF _Toc296289675 h 12HYPERLINK l _Toc2962896765 系統(tǒng)調(diào)試與測試 PAGEREF _Toc296289676 h 17HYPERLINK l _Toc2962896775.1系統(tǒng)功能測
5、試 PAGEREF _Toc296289677 h 17HYPERLINK l _Toc2962896785.2系統(tǒng)調(diào)試常見錯誤 PAGEREF _Toc296289678 h 17HYPERLINK l _Toc2962896796 實驗小結(jié) PAGEREF _Toc296289679 h 19HYPERLINK l _Toc296289680參考文獻 PAGEREF _Toc296289680 h 191 引 言1.1背景及意義學生信息管理系統(tǒng)是一個教育單位不可缺少的局部。一個功能齊全、簡單易用的信息管理系統(tǒng)不但能有效地減輕學校相關(guān)工作人員的工作負擔,它的容對于學校的決策者和管理者來說都至
6、關(guān)重要。所以學生信息管理系統(tǒng)應(yīng)該能夠為用戶提供充足的信息和快捷的查詢手段。但一直以來人們使用傳統(tǒng)人工的方式管理文件檔案、統(tǒng)計和查詢數(shù)據(jù),這種管理方式存在著許多缺點,如:效率低、性差、人工的大量浪費;另外時間一長,將產(chǎn)生大量的文件和數(shù)據(jù),這對于查找、更新和維護都帶來了不少困難。隨著科學技術(shù)的不斷提高,計算機科學日漸成熟其強大的功能已為人們深刻認識,它已進入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用。作為計算機應(yīng)用的一局部,使用計算機對學校的各類信息進展管理,具有手工管理無法比較的優(yōu)點。例如:檢索迅速、查詢方便、效率高、可靠性好、存儲量大、性好、壽命長、本錢低等。利用計算機進展學生信息管理,不僅能
7、夠保證準確、無誤、快速輸出,而且還可以利用計算機對有關(guān)信息進展查詢,檢索迅速、查找方便、可靠性高、存儲量大、性好。要科學地實現(xiàn)信息化管理,開發(fā)一個適合學校的,能夠進展信息存儲、查詢、修改等功能的信息管理系統(tǒng)是十分重要的。這些優(yōu)點能夠極提高學校信息管理的效率,也是一個單位科學化、正規(guī)化管理,與世界接軌的重要條件。 本系統(tǒng)是將現(xiàn)代化的計算機技術(shù)和傳統(tǒng)的教學、教務(wù)工作相結(jié)合,按照學院的工作流 程設(shè)計完成的。通過一個簡化的學生信息管理系統(tǒng),使學生信息管理工作系統(tǒng)化、規(guī)化、自動化,從而到達提高學生信息管理效率的目的。本課題就是針對便于學生信息管理的問題而設(shè)計的一個管理系統(tǒng)。1.2 實驗技術(shù)選擇 本課題設(shè)
8、計主要運用的技術(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)實世界模型的自然延伸。現(xiàn)實世界中任何實體都可以看作是對象。對象之間通過消息相互作用。另外,現(xiàn)實世界中任何實體都可歸屬于*類事物,任何對象都是*一類事物的實例。如
9、果說傳統(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語言的封裝性較強,因為Java無全程變量,無主函數(shù),在Java中絕大局部成員是對象,只
10、有簡單的數(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)機制表達,但由于考慮到它會使程序變得難以理解,所以Java最后還是把它取消了。 繼承是指一個對象直接使用另一對象的屬性和方法。事實上,我們遇到的很
11、多實體都有繼承的含義。例如,假設(shè)把汽車看成一個實體,它可以分成多個子實體,如:卡車、公共汽車等。這些子實體都具有汽車的特性,因此,汽車是它們的父親,而這些子實體則是汽車的孩子。Java提供應(yīng)用戶一系列類class,Java的類有層次構(gòu)造,子類可以繼承父類的屬性和方法。與另外一些面向?qū)ο缶幊陶Z言不同,Java只支持單一繼承。 平臺無關(guān)性 Java是平臺無關(guān)的語言是指用Java寫的應(yīng)用程序不用修改就可在不同的軟硬件平臺上運行。平臺無關(guān)有兩種:源代碼級和目標代碼級。C和C+具有一定程度的源代碼級平臺無關(guān),說明用C或C+寫的應(yīng)用程序不用修改只需重新編譯就可以在不同平臺上運行。Java主要靠Java虛擬
12、機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)的根底,在JVM上,有一個Java解釋器用來解釋Java編譯器編譯后的程序。Java編程人員在編寫完程序后,通過Java編譯器將Java源程序編譯為JVM的字節(jié)代碼。任何一臺機器只要配備了Java解釋器,就可以運行這個程序,而不管這種字節(jié)碼是在何種平臺上生成的。
13、另外,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效勞器上,則具有NC的用戶將不需要占用大量空間安裝軟件,他們只需要一個Java解釋器,每當需要使用*種應(yīng)用軟件時,下載該軟件的字節(jié)代碼即可,運行結(jié)果也可以發(fā)回效勞器。目前,已有數(shù)家公司開場使用這種新型的計算模
14、式構(gòu)筑自己的企業(yè)信息系統(tǒng)。 分布式分布式包括數(shù)據(jù)分布和操作分布。數(shù)據(jù)分布是指數(shù)據(jù)可以分散在網(wǎng)絡(luò)的不同主機上,操作分布是指把一個計算分散在不同主機上處理。 Java支持客戶機/效勞器計算模式,因此,它支持這兩種分布性。對于前者,Java提供了一個叫作URL的對象,利用這個對象,你可以翻開并具有一樣URL地址上的對象,方式與本地文件系統(tǒng)一樣。對于后者,Java的applet小程序可以從效勞器下載到客戶端,即局部計算在客戶端進展,提高系統(tǒng)執(zhí)行效率。 Java提供了一整套網(wǎng)絡(luò)類庫,開發(fā)人員可以利用類庫進展網(wǎng)絡(luò)程序設(shè)計,方便得實現(xiàn)Java的分布式特性。 可靠性和平安性Java最初設(shè)計目的是應(yīng)用于電子類消
15、費產(chǎn)品,因此要求較高的可靠性。Java雖然源于C+,但它消除了許多C+不可靠因素,可以防止許多編程錯誤。首先,Java是強類型的語言,要求顯式的方法聲明,這保證了編譯器可以發(fā)現(xiàn)方法調(diào)用錯誤,保證程序更加可靠;其次,Java不支持指針,這杜絕了存的非法;第三,Java的自動單元收集防止了存喪失等動態(tài)存分配導致的問題;第四,Java解釋器運行時實施檢查,可以發(fā)現(xiàn)數(shù)組和字符串的越界,最后,Java提供了異常處理機制,程序員可以把一組錯誤代碼放在一個地方,這樣可以簡化錯誤處理任務(wù)便于恢復。 由于Java主要用于網(wǎng)絡(luò)應(yīng)用程序開發(fā),因此對平安性有較高的要求。如果沒有平安保證,用戶從網(wǎng)絡(luò)下載程序執(zhí)行就非常危
16、險。Java通過自己的平安機制防止了病毒程序的產(chǎn)生和下載程序?qū)Ρ镜叵到y(tǒng)的威脅破壞。當Java字節(jié)碼進入解釋器時,首先必須經(jīng)過字節(jié)碼校驗器的檢查,然后,Java解釋器將決定程序中類的存布局,隨后,類裝載器負責把來自網(wǎng)絡(luò)的類裝載到單獨的存區(qū)域,防止應(yīng)用程序之間相互干擾破壞。最后,客戶端用戶還可以限制從網(wǎng)絡(luò)上裝載的類只能*些文件系統(tǒng)。 上述幾種機制結(jié)合起來,使得Java成為平安的編程語言。 多線程線程是操作系統(tǒng)的一種新概念,它又被稱作輕量進程,是比傳統(tǒng)進程更小的可并發(fā)執(zhí)行的單位。 C和C+采用單線程體系構(gòu)造,而Java卻提供了多線程支持。Java在兩方面支持多線程。一方面,Java環(huán)境本身就是多線程
17、的。假設(shè)干個系統(tǒng)線程運行負責必要的無用單元回收,系統(tǒng)維護等系統(tǒng)級操作;另一方面,Java語言置多線程控制,可以大大簡化多線程應(yīng)用程序開發(fā)。Java提供了一個類Thread,由它負責啟動運行,終止線程,并可檢查線程狀態(tài)。Java的線程還包括一組同步原語。這些原語負責對線程實行并發(fā)控制。利用Java的多線程編程接口,開發(fā)人員可以方便得寫出支持多線程的應(yīng)用程序,提高程序執(zhí)行效率。必須注意地是,Java的多線程支持在一定程度上受運行時支持平臺的限制。例如,如果操作系統(tǒng)本身不支持多線程,Java的多線程特性可能就表現(xiàn)不出來。 oracle數(shù)據(jù)庫的特點無式要求,可根據(jù)實際系統(tǒng)需求構(gòu)造數(shù)據(jù)庫。 采用標準的S
18、QL構(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)數(shù)據(jù)分片技術(shù)。支持客戶機/效勞器體系構(gòu)造及混合的體系構(gòu)造集中式、分布式、 客戶機/效勞器。實現(xiàn)了兩階段提交、多線索查詢手段。 支持多
19、種系統(tǒng)平臺HPU*、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)、分布式、多線程、可靠和平安等特性,使得開發(fā)出來的工程具有強健性、可維護性、可移植性等特點。Oracle是目前最具權(quán)威的數(shù)據(jù)庫產(chǎn)品,它具有的兼容性、可移植性、
20、可聯(lián)結(jié)性、高生產(chǎn)率和開放性的特點,使它成為當今眾多的程序開發(fā)人員首選的數(shù)據(jù)庫開發(fā)工具。所以本課題選擇java和oracle作為開發(fā)技術(shù)是為今后開發(fā)更復雜的工程打下根底,以免到時候遇到相關(guān)的技術(shù)問題而不知所措。1.3 課題實現(xiàn)技術(shù)的簡要說明本課題主要運用了java圖形編程和oracle數(shù)據(jù)庫的操作。Java圖形編程給用戶提供了一個直觀、易于與用戶進展交互的圖形界面。在圖形編程中,運用了大量的java.swing包中的類,之所以選擇swing包中的類而不選java.awt包中的類,主要是swing包中的類能給用戶提供更好的觀感。oracle數(shù)據(jù)庫的操作這局部容分成三局部來實現(xiàn):首先,編寫對數(shù)據(jù)庫操
21、作的類,包括:連接數(shù)據(jù)庫、執(zhí)行sql語句、關(guān)閉數(shù)據(jù)庫連接等。其次,編寫一個用于對學生信息進展數(shù)據(jù)庫操作的類,包括:學生信息的增加、修改、刪除和查詢等。最后,編寫一個用于對課程相關(guān)信息進展數(shù)據(jù)庫操作的類,包括:對課程信息的增加、修改、刪除、查詢等等。通過結(jié)合圖形編程和數(shù)據(jù)庫編程,從而根本上實現(xiàn)了學生信息管理的根本功能,由于本人技術(shù)上的缺乏,難免有些地方需要改良,這些存在的問題都將成為本人前進的動力,并在日后更加完善本課題的設(shè)計。1.4可行性分析系統(tǒng)的性質(zhì)為管理軟件,因而數(shù)據(jù)庫的設(shè)計與操縱是系統(tǒng)設(shè)計的核心。這里從兩方面分析技術(shù)上的可行性。首先,對于java編程局部,java課已經(jīng)開過。因此在課題設(shè)
22、計中,對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ù)學生信息管理綜合分析,便出于方便管理考慮,將學生信息管理系統(tǒng)的功能總結(jié)起來,共需要實現(xiàn)以下幾個方面功能:管理學生信息管理所有學生的根本信息,對學生信息的操作包括添加、修改、刪除等;可以根據(jù)各種條件查詢出需要的信息,比方修改,可以通過學生*查詢出學生的根本信息,然后通過對需要修改項進展修改并保存修改后的結(jié)果存入數(shù)據(jù)庫的學
23、生表中。管理課程信息管理所有課程的根本信息,包括對課程信息的添加、修改、刪除等操作;可以根據(jù)各種條件查詢出需要的信息,并對相應(yīng)的信息進展操作。比方修改和刪除,可以通過學生的*查詢出學生的相應(yīng)課程信息,對相應(yīng)的課程進展修改、刪除操作。學生選課與成績根據(jù)學生的*進展選課,登記所選課程的成績;可以根據(jù)*查詢出選課信息與成績。通過以上功能的設(shè)計與實現(xiàn),并實現(xiàn)學生信息管理系統(tǒng)的根本功能。3 學生信息管理系統(tǒng)設(shè)計3.1數(shù)據(jù)模型分析與設(shè)計數(shù)據(jù)庫模型描述了在數(shù)據(jù)庫中構(gòu)造化和操縱數(shù)據(jù)的方法,模型的構(gòu)造局部規(guī)定了數(shù)據(jù)如何被描述例如樹、表等;模型的操縱局部規(guī)定了數(shù)據(jù)的添加、刪除、顯示、維護、打印、查找、選擇、排序和
24、更新等操作。數(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ù)學概念的根底上的。 關(guān)系模型的概念單一。無論實體還是實體之間的聯(lián)系都用關(guān)系表示。對數(shù)據(jù)的檢索構(gòu)造也是關(guān)系即表。所以其數(shù)據(jù)構(gòu)造簡單、清晰,擁護易懂易用。 關(guān)系模型的存取路徑對用戶透明,從而具有更高的數(shù)據(jù)獨立性、更好的平安性,也簡化了程序員的工作和數(shù)據(jù)庫開發(fā)建立的工作。所以,關(guān)系數(shù)據(jù)模型誕生以后開展迅速,深受擁護的喜愛,這也是本課題選取關(guān)系數(shù)據(jù)模型的原因。
25、當然,關(guān)系數(shù)據(jù)模型也有缺點,其中最主要的缺點是,由于存取路件對用戶透明,查詢效率往往不如非關(guān)系數(shù)據(jù)模型。因此為了提高性能,必須對用戶的查詢請求進展優(yōu)化,增加了開發(fā)數(shù)據(jù)庫管理系統(tǒng)的難度。本課題的關(guān)系數(shù)據(jù)模型的數(shù)據(jù)構(gòu)造可分為三個表來表示:學生信息表Student、課程信息表Course、學生選課表SC;學生信息表用于記錄學生的根本信息,如表3-1;課程信息表用于記錄課程的根本信息,如表3-2;學生選課表如下表3-3。這三個表對應(yīng)的E-R圖分別是:圖3.1 學生信息E-R圖;圖3.2 課程信息E-R圖;圖 3.3 學生選課E-R圖;如以下圖。表3-1 學生信息表Student名稱數(shù)據(jù)類型主鍵非空*N
26、umber(10)YesYes學生Varchar2NoYes性別Char(2)NoNo年齡Char(2)NoNo專業(yè)Varchar2NoNo學院Char(8)NoNo表3-2 課程信息表Course名稱數(shù)據(jù)類型主鍵非空課程編號Char(4)YesYes課程名稱Varchar2NoYes授課教師Varchar2NoNo上課地點Varchar2NoNo課程類別Char(1)NoNo表3-3 學生選課表SC名稱數(shù)據(jù)類型主鍵非空*Char(10)YesYes課程編號Char(4)YesYes成績Number(4,1)NoNo學生*學生*性別專業(yè)年級出生圖3.1 學生信息E-R圖課程課程編號上課地點課程
27、名稱授課教師課程類別圖3.2 課程信息E-R圖選課表*課程編號成績圖3.3 學生選課E-R圖3.2 構(gòu)造設(shè)計與構(gòu)造功能圖3.2.1 構(gòu)造設(shè)計根據(jù)對系統(tǒng)進展需求分析,本系統(tǒng)將分為4個模塊: 學生管理管理學生根本信息,包括個人信息的添加、修改、刪除以及選課信息的添加。課程管理管理課程的根本信息,包括課程信息的添加、修改和刪除。成績管理管理學生選課的成績信息,包括成績的登記與修改。信息查詢查詢已經(jīng)登記的信息,包括學生的根本信息、課程的根本信息與成績信息。3.2.2 功能構(gòu)造圖學生管理系統(tǒng)功能構(gòu)造如圖3.4所示。學生管理系統(tǒng)學生管理課程管理成績管理信息查詢添加增加刪除學生查詢增加課程查詢修改修改修改刪
28、除學生選課成績查詢按*查詢按*查詢按性別查詢按專業(yè)查詢按學院查詢按課程名稱查詢查詢所有科目成績按授課教師查詢圖3.4 學生管理系統(tǒng)功能構(gòu)造圖4 系統(tǒng)實現(xiàn)該系統(tǒng)由6個模塊構(gòu)成,包括學生管理系統(tǒng)主界面模塊、學生信息管理模塊、課程信息管理模塊、成績信息管理模塊、信息查詢模塊和數(shù)據(jù)操作模塊。下面分別加以表達: 學生管理系統(tǒng)主界面模塊學生管理系統(tǒng)主界面模塊包括StuMS.java和StuMain.java兩個文件。StuMS是學生管理系統(tǒng)的主運行類,其中有運行整個程序的main方法,該文件生成了StuMain類的一個實例,從而生成了學生管理系統(tǒng)的界面,如圖4.1所示。StuMain類繼承自JFrame類
29、,實現(xiàn)了ActionListener接口,他有一個不帶參數(shù)的構(gòu)造方法StuMain(),用來生成StuMain的實例。StuMain類將所有功能集中到菜單欄中,并通過調(diào)用其他模塊來實現(xiàn)學生管理系統(tǒng)的各個功能。圖4.1 學生管理系統(tǒng)主界面 學生信息管理模塊學生信息管理模塊主要由StuInfo.java、AddStuInfo.java、EdiStuInfo.java、DelStuInfo.java、SelectCourse.java和StuInfoSearchSnum.java共計6個文件組成,其構(gòu)成關(guān)系如圖4.2所示。學生信息超類StuInfo.java增加學生信息AddStuInfo.java
30、修改學生信息EdiStuInfo.java刪除學生信息DelStuInfo.java學生選課SelectCourse.java按*查詢StuInfoSearchSnum.java按*查詢StuInfoSearchSnum.java圖4.2 學生信息管理模塊功能構(gòu)造圖學生信息管理模塊的6個文件組成了主界面中的學生管理菜單的容,其中包括增加、修改、刪除和學生選課功能,如圖4.3所示。圖4.3 學生信息管理模塊的運行界面 課程信息管理模塊課程信息管理模塊主要由CourseInfo.java、AddCourseInfo.java、EditCourseInfo.java、DelCourseInfo.ja
31、va、CourseInfoSearchum.java這5個文件組成,其構(gòu)成關(guān)系如圖4.4所示。課程信息超類CourseInfo.java增加課程信息AddCourseInfo.java修改課程信息EditCourseInfo.java刪除課程信息DelCourseInfo.java按課程號查詢CourseInfoSearchum.java按課程號查詢CourseInfoSearchum.java圖4.4 課程信息管理模塊功能構(gòu)造圖課程信息管理模塊中的5個類文件組成了主界面中課程管理菜單的容,其中包括增加、修改和刪除功能,如圖4.5所示。圖4.5 課程信息管理模塊運行界面 成績信息管理模塊成績信
32、息管理模塊主要由GradeInfo.java、AddGradeInfo.java、EditGradeInfo.java這3個文件組成,其構(gòu)成關(guān)系如圖4.6所示。成績管理超類GradeInfo.java增加成績信息AddGradeInfo.java修改成績信息EditGradeInfo.java圖4.6 成績信息管理模塊功能構(gòu)造圖成績信息管理模塊中的3個類文件組成了主界面中的成績管理菜單的容,其中包括增加和修改功能,如圖4.7所示。圖4.7 成績信息管理模塊的運行界面 信息查詢模塊信息查詢模塊主要包括學生查詢、課程查詢和成績查詢3個局部。信息查詢的運行主截面如圖4.8所示。圖4.8 學生信息查詢
33、模塊的運行界面學生查詢由StuSearchSnum.java、StuSearchSse*.java、StuSearchScollege.java、StuSearchSmajor.java和ResultStudent.java這6個文件組成,主要實現(xiàn)功能包括:按*查詢、按學生查詢、按性別查詢、按學院查詢與按專業(yè)查詢。5 系統(tǒng)調(diào)試與測試5.1系統(tǒng)功能測試功能測試主要是測試程序模塊是否實現(xiàn)了設(shè)計中所要求的功能。功能測試中需要注意的有:(1)查詢功能中,有按單一查詢條件進展查詢的,也有按多個查詢條件組合查詢的。這里要注意的多個查詢條件之間的關(guān)系。還有一些常識性的問題,比方按月查詢,閏月中二月的天數(shù)。(
34、2)錄入功能中,需要注意的是前臺設(shè)置的數(shù)值長度是否大于后臺數(shù)值長度,以及前臺和后臺的數(shù)據(jù)構(gòu)造是否相符,很多時候錄入功能無法實現(xiàn)是由于這些原因。還有就是必須錄入的字段的設(shè)置時候有誤。(3)測試刪除功能中需要注意的是單擊刪除按鈕后,一般會出現(xiàn)提示信息,詢問是否確定刪除。通常情況下,我們單擊確認按鈕查看信息是否被刪除掉了,而忽略了單擊取消按鈕后程序的反響:這時有可能的是沒有刪除,還有一種可能是即便單擊了取消按鈕,也一樣刪除了數(shù)據(jù)。另外,在刪除多條記錄的時候,要注意連續(xù)選中的幾條記錄是否真正都被刪除掉了,即如果再按照這種查詢方式查詢,時候還能查詢出來。有的時候需要在數(shù)據(jù)庫中設(shè)立一個標志位,而不是真正的
35、物理刪除。所以在下一次查詢中,可能還會被查詢出來,這主要是因為在查詢條件中沒有將標志考慮在。(4)關(guān)于修改功能的測試主要是看修改確認后是否數(shù)據(jù)真正已被修改了。這是最根本的功能,需要注意的是看是否能把不應(yīng)該修改的數(shù)據(jù)也修改成功了。 5.2系統(tǒng)調(diào)試常見錯誤1.NullPointerE*ception異常一般是對一個為NULL值的變量進展操作引起的。為防止這種異常,最好在對變量操作之前檢查,看它是否為NULL值。2.SQLE*ception異常一般是由于SQL語句不正確引起的。為防止這種異常,最好在使用SQL語句的程序中捕獲此SQL異常。3.NumberFormatE*ception異常這是由于數(shù)字
36、的格式錯誤而出現(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() try If(getConn()!=null&!getConn().isClosed() rs.cloes(); stm.close(); conn.close(); catch(SQLE*ception e)6 實驗小
37、結(jié)經(jīng)過這次課題的設(shè)計并實現(xiàn),盡管會遇到很多難題,但是讓我更加受益的是在這次課題中得到的經(jīng)歷、心得和鍛煉。我發(fā)現(xiàn)做實驗的過程其實就是個不斷的解決問題的過程,從中也感覺到實驗成功的快樂,一個人永遠有學不玩的知識,就算是實驗中的知識點都學了,但在實際的應(yīng)用過程中仍然會遇到不少問題,遇到問題時要做到兩點:一個是查,一個是問。不懂的地方就得要自己找答案,可以從書本、網(wǎng)絡(luò)中查找解決的答案;再一個就是問周邊的同學。這次課程的設(shè)計給我所學的知識做了一個總結(jié),為我深入學習編程做了鋪墊。在本課題中存在的缺乏之處是在所難免的,本人將在日后加于改良。參考文獻1 王克宏、郝建文. Java技術(shù)教程 M. :清華大學,2
38、002年9月.2 蔡敏、*慧慧、黃炳強. UML根底與Rose建模教程 M. :人民郵電,2006年5月.3 薩師煊、王珊. 數(shù)據(jù)庫系統(tǒng)概論第三版M. :高等教育,2005年12月. 4齊治昌、譚慶平、寧洪.軟件工程第二版M.:高等教育,2004年,3月. 5周競濤、寒.Eclipse完全手冊M.:電子工業(yè),2006年,8月. 6CayS.Horstmann、GaryCornll.葉乃文等譯.Java核心技術(shù)M:機械工業(yè),2006年5月. 7蒙祖強、龔濤.Oracle10g數(shù)據(jù)庫Java開發(fā).:中國水利水電,2005年6月.附錄代碼/ AddStuInfo.javapackage .main;
39、import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java*.swing.utton;import java*.swing.oBo*;import java*.swing.JFrame;import java*.swing.JLabel;import java*.swing.JTe*tField;import java*.swing.JOptionPane;import .bean.Student;import .dao.Student
40、Dao;import .db.DB;import .main.DelteStudent.delAction;public class AddStuInfo e*tends JFrame StudentDao studao = new StudentDao();DB db = new DB();Connection conn = db.getConnection();JTe*tField snoTe*t = null;JTe*tField snameTe*t = null;oBo* se* = null;JTe*tField ageTe*t = null;oBo* class = null;oB
41、o* depart = null;public void init() / 窗體設(shè)計this.setLayout(null);this.setTitle(學生信息管理系統(tǒng));this.setSize(500, 400);JLabel title = new JLabel(學生信息維護模塊錄入數(shù)據(jù));title.setBounds(180, 20, 200, 30);this.add(title);JLabel snoLabel = new JLabel(*);snoTe*t = new JTe*tField();snoLabel.setBounds(20, 60, 40, 25);snoTe*
42、t.setBounds(60, 60, 120, 25);this.add(snoLabel);this.add(snoTe*t);JLabel snameLabel = new JLabel();snameTe*t = new JTe*tField();snameLabel.setBounds(220, 60, 40, 25);snameTe*t.setBounds(260, 60, 120, 25);this.add(snameLabel);this.add(snameTe*t);JLabel se*label = new JLabel(性別);String se* = 男, 女 ;se*
43、 = new oBo*(se*);se*label.setBounds(20, 90, 40, 25);se*.setBounds(60, 90, 120, 25);this.add(se*label);this.add(se*);JLabel ageLabel = new JLabel(年齡);ageTe*t = new JTe*tField();ageLabel.setBounds(220, 90, 40, 25);ageTe*t.setBounds(260, 90, 120, 25);this.add(ageLabel);this.add(ageTe*t);JLabel classlab
44、el = new JLabel(班級);String classes = 信息081, 信息082, 物流081 ;class = new oBo*(classes);classlabel.setBounds(20, 120, 40, 25);class.setBounds(60, 120, 120, 25);this.add(classlabel);this.add(class);JLabel departlabel = new JLabel(學院);String depart = 造紙, 理學院, 機電學院 ;depart = new oBo*(depart);departlabel.se
45、tBounds(220, 120, 40, 25);depart.setBounds(260, 120, 120, 25);this.add(departlabel);this.add(depart);/ 錄入數(shù)據(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);b
46、ackbtn.addActionListener(new BackAction ();this.add(backbtn);this.setLocationRelativeTo(null); / 使窗體居中this.setResizable(false);/ 固定窗體大小this.setVisible(true); / 設(shè)置窗體可見/this.setDefaultCloseOperation(JFrame.E*IT_ON_CLOSE); / 窗體關(guān)閉時,程序完畢/ 獲取文本框或選擇框的值public Student getStudent() Student stu = new Student()
47、;String sno = snoTe*t.getTe*t(); / 獲取輸入的*String sname = snameTe*t.getTe*t(); / 獲取String se* = (String) se*.getSelectedItem();/ 獲取性別int age = Integer.parseInt(ageTe*t.getTe*t().trim(); / 獲取年齡String className = (String) class.getSelectedItem(); / 獲取班級String depart = (String) depart.getSelectedItem();
48、/ 獲取學院/ 封裝信息stu.setSno(sno);stu.setName(sname);stu.setSe*(se*);stu.setAge(age);stu.setClassName(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 actionPerf
49、ormed(ActionEvent e) Student stu = getStudent();boolean b = studao.save(stu, conn);if (b) JOptionPane.showMessageDialog(null, 數(shù)據(jù)錄入成功!); else JOptionPane.showMessageDialog(null, *已存在,數(shù)據(jù)錄入失??!);class BackAction implements ActionListenerpublic void actionPerformed(ActionEvent e) MainFrame m=new MainFram
50、e (); m.init();/DelStuInfo.javapackage .main;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.SQLE*ception;import java.util.Vector;import java*.swing.utton;import java*.swing.oBo*;import java*.swing.JFrame;import java*.swing.JLabel;imp
51、ort java*.swing.JOptionPane;import .bean.Student;import .dao.StudentDao;import .db.DB;import .main.AddStudent.BackAction;/刪除學生信息public class DelStuInfo e*tends JFrame StudentDao studao = new StudentDao();DB db = new DB();Connection conn = db.getConnection();oBo* sno = null;public void init() / 窗體設(shè)計t
52、his.setLayout(null);this.setTitle(學生信息管理系統(tǒng));this.setSize(500, 400);JLabel title = new JLabel(學生信息維護模塊刪除數(shù)據(jù));title.setBounds(180, 20, 200, 30);this.add(title);/ 選擇*JLabel snoLabel = new JLabel(請選擇要刪除學生信息的*);snoLabel.setBounds(20, 60, 200,25);this.add(snoLabel);try Vector vec = studao.getSno();sno = ne
53、w oBo*(vec); / 將數(shù)據(jù)庫里的*信息裝入下拉框中sno.setBounds(30, 90, 150, 25); catch (SQLE*ception e) e.printStackTrace();this.add(sno);/ 刪除數(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(1
54、80, 180, 60, 30);backbtn.addActionListener(new BackAction ();this.add(backbtn);this.setLocationRelativeTo(null); / 使窗體居中this.setResizable(false);/ 固定窗體大小this.setVisible(true); / 設(shè)置窗體可見/this.setDefaultCloseOperation(JFrame.E*IT_ON_CLOSE); / 窗體關(guān)閉時,程序完畢public static void main(String args) DelteStudent
55、delstu = new DelteStudent();delstu.init();/ 刪除的監(jiān)聽器class delAction implements ActionListener public void actionPerformed(ActionEvent e) String delsno = (String) sno.getSelectedItem();boolean b = studao.delete(delsno, conn);if (b) JOptionPane.showMessageDialog(null, 刪除錄入成功!); else JOptionPane.showMess
56、ageDialog(null, 刪除錄入失?。?;class BackAction implements ActionListenerpublic void actionPerformed(ActionEvent e) MainFrame m=new MainFrame (); m.init();package .main;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.SQLE*ception;import jav
57、a.util.Vector;import java*.swing.utton;import java*.swing.oBo*;import java*.swing.JFrame;import java*.swing.JLabel;import java*.swing.JTe*tField;import java*.swing.JOptionPane;import .bean.Student;import .dao.StudentDao;import .db.DB;import .main.AddStudent.BackAction;import .main.DelteStudent.delAc
58、tion;public class EditFrame e*tends JFrame StudentDao studao = new StudentDao();DB db = new DB();Connection conn = db.getConnection();JTe*tField snameTe*t = null;oBo* se* = null;JTe*tField ageTe*t = null;oBo* class = null;oBo* depart = null;oBo* sno = null;public void init() / 窗體設(shè)計this.setLayout(nul
59、l);this.setTitle(學生信息管理系統(tǒng));this.setSize(500, 400);JLabel title = new JLabel(學生信息維護模塊修改數(shù)據(jù));title.setBounds(180, 20, 200, 30);this.add(title);JLabel snoLabel = new JLabel(*);snoLabel.setBounds(20, 60, 40, 25);this.add(snoLabel);try Vector vec = studao.getSno();sno = new oBo*(vec); / 將數(shù)據(jù)庫里的*信息裝入下拉框中sno
60、.setBounds(60, 60, 120, 25); catch (SQLE*ception e) e.printStackTrace();this.add(sno);JLabel snameLabel = new JLabel();snameTe*t = new JTe*tField();snameLabel.setBounds(220, 60, 40, 25);snameTe*t.setBounds(260, 60, 120, 25);this.add(snameLabel);this.add(snameTe*t);JLabel se*label = new JLabel(性別);St
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版移動辦公設(shè)備采購與網(wǎng)絡(luò)配置合同3篇
- 2025年度個人合伙藝術(shù)創(chuàng)作工作室合作協(xié)議4篇
- 2024石料礦山環(huán)境保護合同補充協(xié)議范本2篇
- 科技助力下的學生情緒管理策略
- 寵物教育全解析如何有效溝通與培訓
- 校園內(nèi)火災應(yīng)急預案的制定與實施
- 辦公室文員入職合同范本
- 2025年度智能交通系統(tǒng)個人勞務(wù)用工合同范本4篇
- 教育與科技的結(jié)合學校教學樓電氣優(yōu)化策略
- 教育科技視角下的小學科學實驗教學實踐案例分享與反思
- 2025屆河南省鄭州一中高三物理第一學期期末學業(yè)水平測試試題含解析
- 個體工商戶章程(標準版)
- 七年級英語閱讀理解55篇(含答案)
- 廢舊物資買賣合同極簡版
- 2024年正定縣國資產(chǎn)控股運營集團限公司面向社會公開招聘工作人員高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- 李克勤紅日標準粵語注音歌詞
- 教科版六年級下冊科學第一單元《小小工程師》教材分析及全部教案(定稿;共7課時)
- 中藥材產(chǎn)地加工技術(shù)規(guī)程 第1部分:黃草烏
- 危險化學品經(jīng)營單位安全生產(chǎn)考試題庫
- 案例分析:美國紐約高樓防火設(shè)計課件
- 移動商務(wù)內(nèi)容運營(吳洪貴)任務(wù)一 用戶定位與選題
評論
0/150
提交評論