已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
課 程 設(shè) 計 報 告 書 專 用 紙1 引 言由于學生信息的冗長與繁瑣,所以它的管理問題帶來的麻煩和不方便也隨之而來。所以開發(fā)一個適合學校的、便于管理的學生信息管理系統(tǒng)是十分必要的。隨著計算機科學的發(fā)展,數(shù)據(jù)庫技術(shù)在internet中的應用越來越廣泛,為廣大網(wǎng)絡(luò)用戶提供了更加周到和人性化的服務(wù)。個性化已逐漸成為當今web應用的潮流。本課程設(shè)計研究了一種基于數(shù)據(jù)關(guān)聯(lián)規(guī)則的網(wǎng)絡(luò)學生信息管理系統(tǒng),此方案與現(xiàn)今網(wǎng)上已采用的一些方案相比,具有用戶使用更簡單、界面更直觀等優(yōu)點。11課題背景及意義由于高等學校的快速發(fā)展,高校的規(guī)模也越來越大,學生數(shù)量和課程量都迅速地增長,管理上的手工操作不僅僅會耗費學生與工作人員大量的時間和精力,效率以及準確性也很低。如何使同學們方便、快捷、準確地選課,以及老師們對學生的相關(guān)信息的管理,已經(jīng)成為一個重要的問題。利用計算機進行學生信息管理,不僅能夠保證準確、無誤、快速輸出,而且還可以利用計算機對有關(guān)信息進行查詢,檢索迅速、查找方便、可靠性高、存儲量大、保密性好。要科學地實現(xiàn)信息化管理,開發(fā)一個適合學校的,能夠進行信息存儲、查詢、修改等功能的信息管理系統(tǒng)是十分重要的。本課題就是針對便于學生信息管理的問題而設(shè)計的一個管理系統(tǒng)。12 課題開發(fā)技術(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)實世界模型的自然延伸。現(xiàn)實世界中任何實體都可以看作是對象。對象之間通過消息相互作用。另外,現(xiàn)實世界中任何實體都可歸屬于某類事物,任何對象都是某一類事物的實例。如果說傳統(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)在一起形成一個整體??梢哉f,對象是支持封裝的手段,是封裝的基本單位。java語言的封裝性較強,因為java無全程變量,無主函數(shù),在java中絕大部分成員是對象,只有簡單的數(shù)字類型、字符類型和布爾類型除外。而對于這些類型,java也提供了相應的對象類型以便與其他對象交互操作。 多態(tài)性就是多種表現(xiàn)形式,具體來說,可以用“一個對外接口,多個內(nèi)在實現(xiàn)方法”表示。舉一個例子,計算機中的堆??梢源鎯Ω鞣N格式的數(shù)據(jù),包括整型,浮點或字符。不管存儲的是何種數(shù)據(jù),堆棧的算法實現(xiàn)是一樣的。針對不同的數(shù)據(jù)類型,編程人員不必手工選擇,只需使用統(tǒng)一接口名,系統(tǒng)可自動選擇。運算符重載(operatoroverload)一直被認為是一種優(yōu)秀的多態(tài)機制體現(xiàn),但由于考慮到它會使程序變得難以理解,所以java最后還是把它取消了。 繼承是指一個對象直接使用另一對象的屬性和方法。事實上,我們遇到的很多實體都有繼承的含義。例如,若把汽車看成一個實體,它可以分成多個子實體,如:卡車、公共汽車等。這些子實體都具有汽車的特性,因此,汽車是它們的“父親”,而這些子實體則是汽車的“孩子”。java提供給用戶一系列類(class),java的類有層次結(jié)構(gòu),子類可以繼承父類的屬性和方法。與另外一些面向?qū)ο缶幊陶Z言不同,java只支持單一繼承。 平臺無關(guān)性 java是平臺無關(guān)的語言是指用java寫的應用程序不用修改就可在不同的軟硬件平臺上運行。平臺無關(guān)有兩種:源代碼級和目標代碼級。c和c+具有一定程度的源代碼級平臺無關(guān),表明用c或c+寫的應用程序不用修改只需重新編譯就可以在不同平臺上運行。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é)代碼。任何一臺機器只要配備了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ò)計算機”思想。如果大量常用的應用軟件(如字處理軟件等)都用java重新編寫,并且放在某個internet服務(wù)器上,那么具有nc的用戶將不需要占用大量空間安裝軟件,他們只需要一個java解釋器,每當需要使用某種應用軟件時,下載該軟件的字節(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ā)人員可以利用類庫進行網(wǎng)絡(luò)程序設(shè)計,方便得實現(xiàn)java的分布式特性。 可靠性和安全性 java最初設(shè)計目的是應用于電子類消費產(chǎn)品,因此要求較高的可靠性。java雖然源于c+,但它消除了許多c+不可靠因素,可以防止許多編程錯誤。首先,java是強類型的語言,要求顯式的方法聲明,這保證了編譯器可以發(fā)現(xiàn)方法調(diào)用錯誤,保證程序更加可靠;其次,java不支持指針,這杜絕了內(nèi)存的非法訪問;第三,java的自動單元收集防止了內(nèi)存丟失等動態(tài)內(nèi)存分配導致的問題;第四,java解釋器運行時實施檢查,可以發(fā)現(xiàn)數(shù)組和字符串訪問的越界,最后,java提供了異常處理機制,程序員可以把一組錯誤代碼放在一個地方,這樣可以簡化錯誤處理任務(wù)便于恢復。 由于java主要用于網(wǎng)絡(luò)應用程序開發(fā),因此對安全性有較高的要求。如果沒有安全保證,用戶從網(wǎng)絡(luò)下載程序執(zhí)行就非常危險。java通過自己的安全機制防止了病毒程序的產(chǎn)生和下載程序?qū)Ρ镜叵到y(tǒng)的威脅破壞。當java字節(jié)碼進入解釋器時,首先必須經(jīng)過字節(jié)碼校驗器的檢查,然后,java解釋器將決定程序中類的內(nèi)存布局,隨后,類裝載器負責把來自網(wǎng)絡(luò)的類裝載到單獨的內(nèi)存區(qū)域,避免應用程序之間相互干擾破壞。最后,客戶端用戶還可以限制從網(wǎng)絡(luò)上裝載的類只能訪問某些文件系統(tǒng)。 上述幾種機制結(jié)合起來,使得java成為安全的編程語言。 多線程 線程是操作系統(tǒng)的一種新概念,它又被稱作輕量進程,是比傳統(tǒng)進程更小的可并發(fā)執(zhí)行的單位。 c和c+采用單線程體系結(jié)構(gòu),而java卻提供了多線程支持。java在兩方面支持多線程。一方面,java環(huán)境本身就是多線程的。若干個系統(tǒng)線程運行負責必要的無用單元回收,系統(tǒng)維護等系統(tǒng)級操作;另一方面,java語言內(nèi)置多線程控制,可以大大簡化多線程應用程序開發(fā)。java提供了一個類thread,由它負責啟動運行,終止線程,并可檢查線程狀態(tài)。java的線程還包括一組同步原語。這些原語負責對線程實行并發(fā)控制。利用java的多線程編程接口,開發(fā)人員可以方便得寫出支持多線程的應用程序,提高程序執(zhí)行效率。必須注意地是,java的多線程支持在一定程度上受運行時支持平臺的限制。例如,如果操作系統(tǒng)本身不支持多線程,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)數(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ù)庫內(nèi)模支持多字節(jié)碼制,支持多種語言文字編碼。具有面向制造系統(tǒng)的管理信息系統(tǒng)和財務(wù)系統(tǒng)應用系統(tǒng)。綜上所述,選擇java作為開發(fā)語言,oracle作為數(shù)據(jù)庫開發(fā)工具是個不錯的選擇。java語言的面向?qū)ο?、平臺無關(guān)、分布式、多線程、可靠和安全等特性,使得開發(fā)出來的項目具有健壯性、可維護性、可移植性等特點。oracle是目前最具權(quán)威的數(shù)據(jù)庫產(chǎn)品,它具有的兼容性、可移植性、可聯(lián)結(jié)性、高生產(chǎn)率和開放性的特點,使它成為當今眾多的程序開發(fā)人員首選的數(shù)據(jù)庫開發(fā)工具。所以本課題選擇java和oracle作為開發(fā)技術(shù)是為今后開發(fā)更復雜的項目打下基礎(chǔ),以免到時候遇到相關(guān)的技術(shù)問題而不知所措。13 課題實現(xiàn)技術(shù)的簡要說明 本課題主要運用了java圖形編程和oracle數(shù)據(jù)庫的操作。java圖形編程給用戶提供了一個直觀、易于與用戶進行交互的圖形界面。在圖形編程中,運用了大量的java.swing包中的類,之所以選擇swing包中的類而不選java.awt包中的類,主要是swing包中的類能給用戶提供更好的觀感。oracle數(shù)據(jù)庫的操作這部分內(nèi)容分成三部分來實現(xiàn):首先,編寫對數(shù)據(jù)庫操作的類,包括:連接數(shù)據(jù)庫、執(zhí)行sql語句、關(guān)閉數(shù)據(jù)庫連接等。其次,編寫一個用于對學生信息進行數(shù)據(jù)庫操作的類,包括:學生信息的增加、修改、刪除和查詢等。最后,編寫一個用于對課程相關(guān)信息進行數(shù)據(jù)庫操作的類,包括:對課程信息的增加、修改、刪除、查詢等等。通過結(jié)合圖形編程和數(shù)據(jù)庫編程,從而基本上實現(xiàn)了學生信息管理的基本功能,由于本人技術(shù)上的不足,難免有些地方需要改進,這些存在的問題都將成為本人前進的動力,并在日后更加完善本課題的設(shè)計。14可行性分析 技術(shù)可行性 系統(tǒng)的性質(zhì)為管理軟件,因而數(shù)據(jù)庫的設(shè)計與操縱是系統(tǒng)設(shè)計的核心。這里從兩方面分析技術(shù)上的可行性。首先,對于java編程部分,java課已經(jīng)開過,本人基本上掌握了對java編程上技巧。加上暑假運用了大部分時間來對圖形編程的學習。因此在課題設(shè)計中,對java圖形編程方面的問題都能迎韌而解。其次,對于數(shù)據(jù)庫的有關(guān)知識,本人運用了大量的時間對相關(guān)書籍的閱讀以及上機實驗,基本上掌握了運用oracle數(shù)據(jù)庫技術(shù),具備一定的系統(tǒng)分析與設(shè)計能力,熟悉數(shù)據(jù)庫的設(shè)計與操縱;因而該系統(tǒng)的實現(xiàn)在技術(shù)上是可行的。 人員可行性 本人對該課程設(shè)計有足夠的技術(shù)上的準備,并且時間上也足夠充裕。所以在進行該課程設(shè)計中,不需要人員分工,整個設(shè)計過程都由本人完成,并且已經(jīng)較好的完成了該項目的開發(fā)工作。所有,在人員可行性方面是可行的。2 功能需求分析本課題根據(jù)學生信息管理綜合分析,便出于方便管理考慮,將學生信息管理系統(tǒng)的功能總結(jié)起來,共需要實現(xiàn)以下幾個方面功能:管理所有學生的基本信息,對學生信息的操作包括添加、修改、刪除等;可以根據(jù)各種條件查詢出需要的信息,比如修改,可以通過學生學號查詢出學生的基本信息,然后通過對需要修改項進行修改并保存修改后的結(jié)果存入數(shù)據(jù)庫的學生表中。3 學生信息管理系統(tǒng)設(shè)計31數(shù)據(jù)模型分析與設(shè)計數(shù)據(jù)庫模型描述了在數(shù)據(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ù)學概念的基礎(chǔ)上的。 關(guān)系模型的概念單一。無論實體還是實體之間的聯(lián)系都用關(guān)系表示。對數(shù)據(jù)的檢索結(jié)構(gòu)也是關(guān)系(即表)。所以其數(shù)據(jù)結(jié)構(gòu)簡單、清晰,擁護易懂易用。 關(guān)系模型的存取路徑對用戶透明,從而具有更高的數(shù)據(jù)獨立性、更好的安全保密性,也簡化了程序員的工作和數(shù)據(jù)庫開發(fā)建立的工作。所以,關(guān)系數(shù)據(jù)模型誕生以后發(fā)展迅速,深受擁護的喜愛,這也是本課題選取關(guān)系數(shù)據(jù)模型的原因。當然,關(guān)系數(shù)據(jù)模型也有缺點,其中最主要的缺點是,由于存取路件對用戶透明,查詢效率往往不如非關(guān)系數(shù)據(jù)模型。因此為了提高性能,必須對用戶的查詢請求進行優(yōu)化,增加了開發(fā)數(shù)據(jù)庫管理系統(tǒng)的難度。本課題的關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)可分為兩個表來表示:學生信息表(student)、課程信息表(course)。 學生信息表用于記錄學生的基本信息,如表1,表2。這兩個表對應的e-r圖是圖3和圖4:表1 學生信息表(student)名稱字段名稱數(shù)據(jù)類型主鍵非空學號snumnumber(10)yesyes學生姓名snamevarchar2noyes性別ssexchar(2)nono民族sminzuchar(2)nono籍貫shomevarchar2nono入學年份syearchar(4)nono專業(yè)smajorvarchar2nono學院scollegevarchar2nono出生日期sbirthchar(8)nono表2 課程信息表(course)名稱字段名稱數(shù)據(jù)類型主鍵非空課程編號cnumchar(4)yesyes課程名稱cnamevarchar2noyes授課教師cteachervarchar2nono上課地點cplacevarchar2nono課程類別ctypechar(1)nono學生出生日期學號學生姓名性別學院民族專業(yè)籍貫入學年份圖3 學生信息e-r圖課程課程編號上課地點課程名稱授課教師課程類別圖4 課程信息e-r圖32 結(jié)構(gòu)設(shè)計與結(jié)構(gòu)功能圖3.2.1 結(jié)構(gòu)設(shè)計根據(jù)對系統(tǒng)進行需求分析,本系統(tǒng)將分為4個模塊:學生管理課程管理成績管理信息查詢3.2.2 功能結(jié)構(gòu)圖學生管理系統(tǒng)功能結(jié)構(gòu)如圖5所示。學生管理系統(tǒng)學生管理課程管理成績管理信息查詢添加增加刪除學生查詢增加課程查詢修改修改修改刪除學生選課成績查詢按姓名查詢按學號查詢按性別查詢按專業(yè)查詢按學院查詢按課程名稱查詢查詢所有科目成績按授課老師查詢圖5 學生管理系統(tǒng)功能結(jié)構(gòu)圖4 系統(tǒng)實現(xiàn)該系統(tǒng)由4個模塊構(gòu)成,包括學生管理系統(tǒng)主界面模塊、學生信息管理模塊、信息查詢模塊和數(shù)據(jù)操作模塊。下面分別加以敘述:1. 學生管理系統(tǒng)主界面模塊學生管理系統(tǒng)主界面模塊包括stums.java和stumain.java兩個文件。stums是學生管理系統(tǒng)的主運行類,其中有運行整個程序的main方法,該文件生成了stumain類的一個實例,從而生成了學生管理系統(tǒng)的界面,如圖4.1所示。stumain類繼承自jframe類,實現(xiàn)了actionlistener接口,他有一個不帶參數(shù)的構(gòu)造方法stumain(),用來生成stumain的實例。stumain類將所有功能集中到菜單欄中,并通過調(diào)用其他模塊來實現(xiàn)學生管理系統(tǒng)的各個功能。2. 學生信息管理模塊學生信息管理模塊主要由stuinfo.java、addstuinfo.java、edistuinfo.java、delstuinfo.java、selectcourse.java和stuinfosearchsnum.java共計6個文件組成。3. 信息查詢模塊信息查詢模塊主要包括學生查詢、信息查詢2個部分。信息查詢的運行主截面如圖所示。查詢數(shù)據(jù),該部分是通過用戶輸入的欲查詢的學生學號來查詢該學生的詳細信息。用戶輸入學號后如果數(shù)據(jù)庫中不存在該學號的學生,系統(tǒng)將會提示該學生不存在信息。如果存在該學生系統(tǒng)將會輸出該學生的詳細信息,包括學生姓名、學號、性別,學生詳細信息。4. 數(shù)據(jù)操作模塊數(shù)據(jù)操作由stusearchsnum.java、stusearchssex.java、stusearchscollege.java、stusearchsmajor.java和resultstudent.java這6個文件組成,主要實現(xiàn)功能包括:修改學生信息,刪除學生信息,查詢信息等。5 詳細設(shè)計與測試51系統(tǒng)代碼設(shè)計詳細設(shè)計是在對軟件進行需求分析、設(shè)計規(guī)格說明后的編碼設(shè)計階段,是保證軟件系統(tǒng)的關(guān)鍵步驟。如果要給軟件測試下定義,可以這樣講,系統(tǒng)代碼設(shè)計是最直接實現(xiàn)使用者目的設(shè)計階段。根據(jù)對本系統(tǒng)的功能的詳細介紹及對模塊的劃分,將詳細代碼設(shè)計如下:主函數(shù):import javax.swing.uimanager;import java.awt.*;/* * 學生管理系統(tǒng)運行主類 */public class stums boolean packframe = false;/* 構(gòu)造函數(shù) */public stums() stumain frame = new stumain();if (packframe) frame.pack();else frame.validate();/設(shè)置運行時窗口的位置dimension screensize = toolkit.getdefaulttoolkit().getscreensize();dimension framesize = frame.getsize();if (framesize.height screensize.height) framesize.height = screensize.height;if (framesize.width screensize.width) framesize.width = screensize.width;frame.setlocation(screensize.width - framesize.width) / 2, (screensize.height - framesize.height) / 2);frame.setvisible(true);public static void main(string args) /設(shè)置運行風格try uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname();catch(exception e) e.printstacktrace();new stums();課程信息管理模塊,添加新的課程信息: */import java.awt.event.*;import java.awt.*;import javax.swing.*;/* * 課程信息管理模塊 * 添加新的課程信息 */public class addcourseinfo extends courseinfocrsbean getcnum = new crsbean();public addcourseinfo() this.settitle(添加課程信息);this.setresizable(false);cnum.seteditable(false);cnum.settext(+getcnum.getcrsid();cname.seteditable(true);cteacher.seteditable(true);ctype.seteditable(true);ctime.seteditable(true);cplace.seteditable(true);/設(shè)置運行位置,使對話框居中dimension screensize = toolkit.getdefaulttoolkit().getscreensize();this.setlocation( (int) (screensize.width - 400) / 2 ,(int) (screensize.height - 300) / 2 +45);public void downinit()addinfo.settext(增加);addinfo.setfont(new font(dialog,0,12);downpanel.add(addinfo);clearinfo.settext(清空);clearinfo.setfont(new font(dialog,0,12);downpanel.add(clearinfo);eixtinfo.settext(退出);eixtinfo.setfont(new font(dialog,0,12);downpanel.add(eixtinfo);this.contentpane.add(downpanel,borderlayout.south);/添加事件偵聽addinfo.addactionlistener(this);clearinfo.addactionlistener(this);eixtinfo.addactionlistener(this);/* * 事件處理 */public void actionperformed(actionevent e) object obj = e.getsource();if (obj = eixtinfo) /退出this.dispose();else if (obj = addinfo) /增加cnum.setenabled(false);cname.seteditable(false);cteacher.seteditable(false);ctype.seteditable(false);ctime.seteditable(false);cplace.seteditable(false);addinfo.setenabled(false);clearinfo.setenabled(false);eixtinfo.setenabled(false);crsbean addcrs = new crsbean();addcrs.crsadd(cname.gettext(), cteacher.gettext(), cplace.gettext(), ctype.gettext(), ctime.gettext();this.dispose();addcourseinfo aci = new addcourseinfo();aci.downinit();aci.pack();aci.setvisible(true);this.dispose();else if (obj = clearinfo) /清空setnull();cnum.settext(+getcnum.getcrsid();成績信息管理模塊,添加新的成績信息:import java.awt.event.*;import java.awt.*;import javax.swing.*;/* * 成績信息管理模塊 * 添加新的成績信息 */public class addgradeinfo extends gradeinfo implements actionlistenerpublic addgradeinfo() this.settitle(添加成績信息);this.setresizable(false);/設(shè)置運行位置,使對話框居中dimension screensize = toolkit.getdefaulttoolkit().getscreensize();this.setlocation( (int) (screensize.width - 400) / 2 ,(int) (screensize.height - 300) / 2 +45);public void downinit()addinfo.settext(增加);addinfo.setfont(new font(dialog,0,12);downpanel.add(addinfo);eixtinfo.settext(退出);eixtinfo.setfont(new font(dialog,0,12);downpanel.add(eixtinfo);this.contentpane.add(downpanel,borderlayout.south);snum.addactionlistener(this);addinfo.addactionlistener(this);eixtinfo.addactionlistener(this);/* 事件處理*/public void actionperformed(actionevent e) object obj = e.getsource();if (obj = addinfo) /增加cnum.setenabled(false);cname.seteditable(false);cteacher.seteditable(false);grade.seteditable(false);snum.seteditable(false);sname.seteditable(false);addinfo.setenabled(false);clearinfo.setenabled(false);eixtinfo.setenabled(false);csbean addgrade = new csbean();addgrade.csmodify(cnum.gettext(),(string)snum.getselecteditem(),grade.gettext();this.dispose();addgradeinfo agi = new addgradeinfo();agi.downinit();agi.pack();agi.setvisible(true);else if (obj = eixtinfo) /退出this.dispose();else if (obj = snum) /選擇學號stubean sn = new stubean();sname.settext(sn.stusearch(string)snum.getselecteditem()0);if(cname.getitemcount()0)cname.removeallitems();csbean cn = new csbean();creturn = cn.cnamesearch(string)snum.getselecteditem();if(creturn = null)cname.removeactionlistener(this);joptionpane.showmessagedialog(null,該學生沒有選擇課程!);addinfo.setenabled(false);cname.setenabled(false);elseint i = 0;for(i = 0; i (creturn.length); i+)cname.additem(creturni);cname.setenabled(true);snum.setenabled(false);cname.setselecteditem(null);cname.addactionlistener(this);else if (obj = cname) /選擇課程號crsbean csname = new crsbean();cnum.settext(csname.crsnamesearch(string)cname.getselecteditem(),(string)snum.getselecteditem()0);cteacher.settext(csname.crsnamesearch(string)cname.getselecteditem(),(string)snum.getselecteditem()1);addinfo.setenabled(true);cname.setenabled(false);cname.removeactionlistener(this);學生信息管理模塊,添加新的學生信息:import java.awt.event.*;import java.awt.*;import javax.swing.*;/* * 學生信息管理模塊 * 添加新的學生信息 */public class addstuinfo extends stuinfo stubean getsnum = new stubean();public addstuinfo() this.settitle(添加學生信息);this.setresizable(false);snum.seteditable(false);snum.settext(+getsnum.getstuid();sname.seteditable(true);ssex.seteditable(true);ssethnic.seteditable(true);sbirth.seteditable(true);syear.seteditable(true);smajor.seteditable(true);scollege.seteditable(true);shome.seteditable(true);/設(shè)置運行時窗口的位置dimension screensize = toolkit.getdefaulttoolkit().getscreensize();this.setlocation(screensize.width - 400) / 2, (screensize.height - 300) / 2 + 45);public void downinit()addinfo.settext(增加);addinfo.setfont(new font(dialog,0,12);downpanel.add(addinfo);clearinfo.settext(清空);clearinfo.setfont(new font(dialog,0,12);downpanel.add(clearinfo);eixtinfo.settext(退出);eixtinfo.setfont(new font(dialog,0,12);downpanel.add(eixtinfo);/添加事件偵聽addinfo.addactionlistener(this);clearinfo.addactionlistener(this);eixtinfo.addactionlistener(this);this.contentpane.add(downpanel,borderlayout.south);/* * 事件處理 */public void actionperformed(actionevent e) object obj = e.getsource();if (obj = eixtinfo) /退出this.dispose();else if (obj = addinfo) /增加snum.setenabled(false);sname.setenabled(false);ssex.setenabled(false);ssethnic.setenabled(false);sbirth.setenabled(false);syear.setenabled(false);smajor.setenabled(false);scollege.setenabled(false);shome.setenabled(false);addinfo.setenabled(false);clearinfo.setenabled(false);eixtinfo.setenabled(false);stubean addstu = new stubean();addstu.stuadd(sname.gettext(), ssex.gettext(), sbirth.gettext(), shome.gettext(), ssethnic.gettext(), syear.gettext(), smajor.gettext(), scollege.gettext();this.dispose();addstuinfo asi = new addstuinfo();asi.downinit();asi.pack();asi.setvisible(true);else if (obj = clearinfo) /清空setnull();snum.settext(+getsnum.getstuid();課程信息綜合管理類,提供主界面,供其他類繼承:mport javax.swing.*;import java.awt.*;import java.awt.event.*;import .*;/* * 課程信息綜合管理類 * 提供主界面,供其他類繼承 */public class courseinfo extends jframe implements actionlistenercontainer contentpane;jpanel centerpanel = new jpanel();jpanel uppanel = new jpanel();jpanel downpanel = new jpanel();/框架的大小dimension facesize = new dimension(800, 500);jlabel jlabel1 = new jlabel();jlabel jlabel2 = new jlabel();jlabel jlabel3 = new jlabel();jlabel jlabel4 = new jlabel();jlabel jlabel5 = new jlabel();jlabel jlabel6 = new jlabel();jtextfield cnum = new jtextfield(15);jtextfield cname = new jtextfield(15);jtextfield cteacher = new jtextfield(15);jtextfield ctype = new jtextfield(15);jtextfield ctime = new jtextfield(15);jtextfield cplace = new jtextfield(15);jbutton searchinfo = new jbutton();jbutton addinfo = new jbutton();jbutton modifyinfo = new jbutton();jbutton deleteinfo = new jbutton();jbutton clearinfo = new jbutton();jbutton saveinfo = new jbutton();jbutton eixtinfo = new jbutton();gridbaglayout girdbag = new gridbaglayout();gridbagconstraints girdbagcon;public courseinfo() this.setsize(facesize);/設(shè)置標題this.settitle(課程綜合信息管理); this.setresizable(false);/設(shè)置程序圖標this.seticonimage(getimage(icon.gif);tryinit();catch(exceptione) e.printstacktrace();public void init() throws exception contentpane = this.getcontentpane();contentpane.setlayout(new borderlayout();/中部面板的布局centerpanel.setlayout(girdbag);jlabel1.settext(課程編碼:);jlabel1.setfont(new font(dialog,0,12);girdbagcon = new gridbagconstraints();girdbagcon.gridx = 0;girdbagcon.gridy = 0;girdbagcon.insets = new insets(10,10,10,1);girdbag.setconstraints(jlabel1,girdbagcon);centerpanel.add(jlabel1);girdbagcon = new gridbagconstraints();girdbagcon.gridx = 1;girdbagcon.gridy = 0;girdbagcon.insets = new insets(10,1,10,15);girdbag.setconstraints(cnum,girdbagcon);centerpanel.add(cnum);jlabel2.settext(課程名稱:);jlabel2.setfont(new font(dialog,0,12);girdbagcon = new gridbagconstraints();girdbagcon.gridx = 2;girdbagcon.gridy = 0;girdbagcon.insets = new insets(10,15,10,1);girdbag.setconstraints(jlabel2,girdbagcon);centerpanel.add(jlabel2);girdbagcon = new gridbagconstraints();girdbagcon.gridx = 3;girdbagcon.gridy = 0;girdbagcon.insets = new insets(10,1,10,10);girdbag.setconstraints(cname,girdbagcon);centerpanel.add(cname);jlabel
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024物業(yè)資產(chǎn)讓與擔保合同 資產(chǎn)方與受讓方協(xié)議
- 二零二四年免租金科研機構(gòu)租賃合同規(guī)范文本3篇
- 2025年管道檢測與修復水管安裝合同樣本3篇
- 2025年酒店布草租賃與智能化管理服務(wù)合同2篇
- 二零二五年度草料種植基地土壤治理合同3篇
- 二零二五年度租賃房屋租賃保證金監(jiān)管服務(wù)合同范本3篇
- 2025年校園體育設(shè)施平整施工合同6篇
- 二零二五年度數(shù)據(jù)中心場地租賃合同及數(shù)據(jù)安全保障與服務(wù)標準3篇
- 二零二五惠州法務(wù)專員招聘與法律知識普及培訓合同3篇
- 2024金融機構(gòu)貸款擔保合同
- 《水下拋石基床振動夯實及整平施工規(guī)程》
- 化學-廣東省廣州市2024-2025學年高一上學期期末檢測卷(一)試題和答案
- 2025四川中煙招聘高頻重點提升(共500題)附帶答案詳解
- 2025年云南大理州工業(yè)投資(集團)限公司招聘31人管理單位筆試遴選500模擬題附帶答案詳解
- 風電危險源辨識及控制措施
- 《教師職業(yè)道德與政策法規(guī)》課程教學大綱
- EHS工程師招聘筆試題與參考答案(某大型央企)2024年
- 營銷策劃 -麗亭酒店品牌年度傳播規(guī)劃方案
- 兒童傳染病預防課件
- 護理組長年底述職報告
- 集裝箱活動房供需合同
評論
0/150
提交評論