1泽腮,引言
1.1系統(tǒng)概述
本項目是通過開發(fā)一個學(xué)生學(xué)籍管理系統(tǒng)泊愧,進(jìn)一步了解使用Java語言進(jìn)行GUI設(shè)計和數(shù)據(jù)庫編程方面的知識。
學(xué)生學(xué)籍管理系統(tǒng)是學(xué)校管理的重要工具盛正,是學(xué)校不可或缺的部分删咱。學(xué)生管理是學(xué)校重要的內(nèi)容。隨著在校大學(xué)生人數(shù)不斷增加豪筝,教務(wù)系統(tǒng)的數(shù)量的也不斷上漲痰滋,學(xué)校工作繁瑣、資料眾多续崖,人工管理信息的難度越來越大敲街。因此一個學(xué)生學(xué)籍管理系統(tǒng)可以給學(xué)校帶來解決信息管理繁瑣、工程量大严望、效率低多艇、保密性差、難維護(hù)的問題像吻。
學(xué)生學(xué)籍管理系統(tǒng)會因?yàn)閷W(xué)生的數(shù)量峻黍、訪問者的身份等不同而具有不同的復(fù)雜度。學(xué)生基本信息維護(hù)拨匆、考試及成績的管理與安排等操作是學(xué)生學(xué)籍管理系統(tǒng)的基本功能姆涩。在規(guī)模較大、業(yè)務(wù)較多的學(xué)生管理中還需要對用戶進(jìn)行權(quán)限設(shè)置惭每、以及系統(tǒng)維護(hù)等更復(fù)雜的功能骨饿。
本項目將考慮學(xué)生學(xué)籍管理的四個模塊:學(xué)生信息管理、學(xué)生成績管理台腥、考試管理宏赘、用戶管理。分別對每個模塊分化其能實(shí)現(xiàn)的功能黎侈,又將每個模塊相互聯(lián)系在一起察署,最終實(shí)現(xiàn)該系統(tǒng)。
1.2需求分析?
知識爆炸的時代里蜓竹,求學(xué)的人數(shù)越來越多箕母,但學(xué)校的數(shù)量及學(xué)校所能提供的資源很有限储藐。為優(yōu)化管理學(xué)生的人力資源俱济,設(shè)計了這個系統(tǒng)。
學(xué)生學(xué)籍管理系統(tǒng)钙勃,可用于學(xué)校等機(jī)構(gòu)的學(xué)生學(xué)籍進(jìn)行查詢蛛碌、更新與維護(hù),使用方便辖源、易用性強(qiáng)蔚携、圖形界面清晰明了希太,讓使用者能簡單易懂的操作。通過這個系統(tǒng)酝蜒,可以做到信息的規(guī)范管理誊辉、科學(xué)統(tǒng)計和快速查詢,從而減少管理方面的工作量亡脑。毋庸置疑堕澄,切實(shí)有效的把計算機(jī)管理引入學(xué)校教務(wù)管理中,對于促進(jìn)學(xué)校管理制度提高學(xué)校教學(xué)質(zhì)量與辦學(xué)水平有著顯著意義霉咨。
在計算機(jī)網(wǎng)絡(luò)蛙紫,數(shù)據(jù)庫和先進(jìn)的開發(fā)平臺上,利用現(xiàn)有的軟件途戒、硬件資源坑傅,開發(fā)一個具有開放體系結(jié)構(gòu)的,易擴(kuò)充的喷斋,易維護(hù)的唁毒,具有良好人機(jī)交互界面的學(xué)生學(xué)籍管理系統(tǒng)。這個簡單的學(xué)生信息管理系統(tǒng)將考慮學(xué)校學(xué)生處星爪、教務(wù)處枉证、管理員三種用戶類型,為其分別提供不同的操作移必。
因此室谚,需求分析階段的最終結(jié)果是“需求分析說明書”,設(shè)計該系統(tǒng)將需要Java開發(fā)平臺崔泵、數(shù)據(jù)庫等工具秒赤。
1.3運(yùn)行環(huán)境?
????????操作系統(tǒng):Windows 10
????????數(shù)據(jù)庫系統(tǒng):MySQL 5.7
????????編程語言:Java 9.0
????????開發(fā)工具:Eclipse 4.3
2,概要設(shè)計
2.1設(shè)計思路?
學(xué)生學(xué)籍管理系統(tǒng)先將系統(tǒng)劃分為四個模塊憎瘸,又將每個模塊分成多個子模塊入篮,然后一一實(shí)現(xiàn)。將其劃分是能夠更好的理解各功能的實(shí)現(xiàn)以及組員分工幌甘。但各個模塊又是相互聯(lián)系潮售、密不可分的。
劃分模塊后锅风,思考數(shù)據(jù)庫設(shè)計酥诽,聯(lián)系各個模塊設(shè)計所需要的表及表中所需的字段,考慮各表中的聯(lián)系皱埠,并用MySQL實(shí)現(xiàn)數(shù)據(jù)庫及各表的創(chuàng)建且錄入一些信息方便操作測試肮帐。
將數(shù)據(jù)庫設(shè)計好后,將eclipse連接數(shù)據(jù)庫,并思考系統(tǒng)所需要的界面训枢,根據(jù)系統(tǒng)模塊的劃分托修,用戶使用是需要明確是以什么身份使用的,即實(shí)現(xiàn)一個界面中有三個按鈕分別有學(xué)生處恒界、教務(wù)處睦刃、管理員字樣,點(diǎn)擊學(xué)生處將調(diào)用學(xué)生信息管理的界面十酣,該界面可直接根據(jù)學(xué)號查詢學(xué)生信息眯勾,要進(jìn)行信息的其他操作,則要經(jīng)過該界面通過用戶名和密碼驗(yàn)證之后登錄才能使用婆誓;點(diǎn)擊教務(wù)處也根據(jù)同樣的思路設(shè)計吃环;管理員則直接進(jìn)入登錄界面。
通過登入界面之后將進(jìn)入學(xué)生學(xué)籍系統(tǒng)的主界面洋幻,即該系統(tǒng)所有功能操作的界面郁轻。首先設(shè)計好這些界面,并找一些符和內(nèi)容的圖片放入界面中文留,讓界面更加的美觀好唯,在稿紙上設(shè)計好各界面時候,就利用所學(xué)知識實(shí)現(xiàn)各界面燥翅。
完成前面所提到的界面之后將設(shè)計各個模塊的子模塊骑篙,并將其放入主界面中,編譯運(yùn)行然后一一測試各功能森书。
2.2模塊功能介紹?
2.2.1學(xué)生信息管理模塊
學(xué)生信息管理模塊主要是對學(xué)生信息如學(xué)號靶端、姓名、性別凛膏、家庭住址等進(jìn)行管理杨名。本模塊將實(shí)現(xiàn)以下功能:
◇學(xué)生信息錄入 ?◇學(xué)生信息查詢 ?◇學(xué)生信息修改/刪除
◇將查詢的學(xué)生信息實(shí)現(xiàn)另存文件
其中,學(xué)生信息查詢不需登錄即可使用猖毫,信息錄入和修改/刪除模塊則需要先登錄后才能使用台谍;
2.2.2學(xué)生成績管理模塊
學(xué)生成績管理模塊主要是對學(xué)生成績進(jìn)行管理。本模塊又分為五個子模塊:
◇學(xué)生成績錄入 ?◇學(xué)生成績查詢 ?◇學(xué)生成績修改/刪除 ?◇計算總分與排名 ?◇目標(biāo)分管理 ◇畢業(yè)管理
其中吁断,學(xué)生成績查詢不需登錄即可使用趁蕊,其他模塊則需要先登錄后才能使用;且除了查詢操作學(xué)生能訪問之外其余學(xué)生都不能訪問仔役。
2.2.3考試管理模塊
考試管理模塊主要對考試進(jìn)行如下管理:
◇添加新考試 ??◇對已有的考試信息進(jìn)行修改/刪除 ?◇對考試科目進(jìn)行添加/刪除 ?◇對考試科目查詢
本模塊需要先登錄后才能使用掷伙;其中除了查詢功能學(xué)生可使用,其余功能都由教務(wù)處操作骂因。
2.2.4用戶管理模塊
用戶管理模塊主要對使用本系統(tǒng)的用戶進(jìn)行如下管理:
◇添加新用戶 ??◇對已有的用戶進(jìn)行更改用戶名炎咖、密碼和權(quán)限(管理員或普通用戶)等操作 ?◇刪除用戶
本模塊只有管理員才能使用,普通用戶不能進(jìn)入寒波。
系統(tǒng)維護(hù):如數(shù)據(jù)安全管理(含備份與恢復(fù))乘盼、操作員管理、權(quán)限設(shè)置等俄烁。
權(quán)限:限定學(xué)生處绸栅、教務(wù)處、管理員所能訪問的模塊,即在用戶登錄時識別登入者的身份页屠,給予相關(guān)能訪問的權(quán)限粹胯。
2.3模塊結(jié)構(gòu)圖 ?
2.4程序流程圖?
2.4.1系統(tǒng)流程圖
2.4.2細(xì)分流程圖
3,詳細(xì)設(shè)計
3.1數(shù)據(jù)庫設(shè)計
????根據(jù)所有的模塊辰企,設(shè)計了相關(guān)數(shù)據(jù)庫student_management,其中信息管理與用戶管理分別用到了以下七張表:
????
其表結(jié)構(gòu)分別為:
3.2學(xué)生基本信息管理
根據(jù)模塊的功能利用Java的GUI設(shè)計系統(tǒng)的界面风纠,然后連接數(shù)據(jù)庫,寫相關(guān)的sql語句牢贸。
登錄中竹观,為了識別是學(xué)生登錄定義了一個變量identify來記錄,且在主界面的程序中借用setRights()方法來限制訪問權(quán)限潜索,用menu1.setEnabled(false);menu2.setEnabled(false);限定了學(xué)生不能基礎(chǔ)維護(hù)臭增、教務(wù)管理。學(xué)生的查詢中調(diào)用寫好的executeQuery()方法來連接數(shù)據(jù)庫實(shí)現(xiàn)查詢竹习,借助數(shù)組Object[][] studentq來存儲查詢到的信息誊抛,然后在顯示在JTable table里。其次整陌,借助字符輸出流FileWriter來將信息寫入文件拗窃。
所有操作都是設(shè)計了相應(yīng)的按鈕,給按鈕加監(jiān)聽器泌辫,在監(jiān)聽里完成各種任務(wù)并炮,且用JOptionPane.showMessageDialog來提示操作中是否操作成功或操作失敗,用SimpleDateFormat來限制輸入出生日期的格式甥郑。對數(shù)據(jù)庫操作select逃魄、insert into、update澜搅、delete分別實(shí)現(xiàn)查詢伍俘、增、修勉躺、刪操作癌瘾。程序里寫了clearAllTextfield()方法,起清空文本的作用饵溅,如在刪除操作中妨退,先將信息查詢顯示出來,刪除后,調(diào)用該模塊將會清空文本咬荷。
3.3用戶管理模塊
該模塊涉及了數(shù)據(jù)庫備份與恢復(fù)仅叫、權(quán)限設(shè)置筝野、用戶修改等,權(quán)限設(shè)置即設(shè)置不同訪問者的訪問權(quán)限,在主界面的程序中借用setRights()方法來限制訪問權(quán)限坏快。數(shù)據(jù)庫備份與恢復(fù)用Runtime r?= Runtime.getRuntime();來獲得與當(dāng)前應(yīng)用程序關(guān)聯(lián)的Runtime對象烹看,Process p?= r.exec(command);在單獨(dú)的進(jìn)程中執(zhí)行指定的字符串命令咨跌。教務(wù)處跟管理員的用戶增刪改大致跟學(xué)生信息一致庆锦,只是把所有的操作都放在了同一個界面,即在同一個程序中完成所有操作腔召。
4杆查,調(diào)試分析
4.1登入界面共用
該學(xué)生學(xué)籍管理系統(tǒng)考慮學(xué)生處、教務(wù)處臀蛛、管理員三種用戶使用亲桦,三個用戶訪問的權(quán)限各有不同,要共用同一個登錄界面掺栅,即在登錄時要知道用戶是以什么身份訪問的烙肺。用戶一開始是由界面的三個按鈕進(jìn)入登錄界面,即在記錄訪問者身份時使用getscoure()未能實(shí)現(xiàn)氧卧。
解決辦法:將監(jiān)聽的方式記錄改為定義一個公共靜態(tài)變量identify桃笙,即:public static String identify;在點(diǎn)擊按鈕調(diào)用另一個界面時,用該變量記錄用戶的身份沙绝,如:學(xué)生處搏明,教務(wù)處,管理員闪檬。
4.2實(shí)現(xiàn)另存功能
在登錄之后加了一個查詢信息后將所查到的信息存入一個文件星著,且文件保存的位置由使用者自行決定。調(diào)試時粗悯,只能實(shí)現(xiàn)在指定路徑創(chuàng)建一個文件虚循,而未能將所查詢的信息寫入文件中。
解決辦法:因所查的信息是存入一個數(shù)組的样傍,即將問題轉(zhuǎn)為如何將一個二維數(shù)組的信息寫入文件横缔,經(jīng)過查閱資料所知在IO中,即清空緩沖區(qū)數(shù)據(jù)衫哥,一般在讀寫流(stream)的時候茎刚,數(shù)據(jù)是先被讀到了內(nèi)存中,再把數(shù)據(jù)寫到文件中撤逢,當(dāng)你數(shù)據(jù)讀完的時候不代表你的數(shù)據(jù)已經(jīng)寫完了膛锭,因?yàn)檫€有一部分有可能會留在內(nèi)存這個緩沖區(qū)中粮坞。這時候如果你調(diào)用了close()方法關(guān)閉了讀寫流,那么這部分?jǐn)?shù)據(jù)就會丟失初狰,所以應(yīng)該在關(guān)閉讀寫流之前先flush()莫杈。且文件要寫入換行應(yīng)調(diào)用write("\r\n");
5,測試與小結(jié)
5.1首界面
整個系統(tǒng)都是以首界面的運(yùn)行運(yùn)行跷究,然后逐個程序相互關(guān)聯(lián)姓迅、調(diào)用:
5.2學(xué)生處敲霍、教務(wù)處
點(diǎn)擊后將分別進(jìn)入學(xué)生信息管理界面俊马、教務(wù)管理系統(tǒng)界面,不登錄可查詢信息肩杈、成績柴我,要進(jìn)行其他操作則需登錄:
5.3登入界面
學(xué)生處、教務(wù)處扩然、管理員共用一個登入界面艘儒,且登錄后進(jìn)入同一個主界面,但訪問權(quán)限是不相同的:
5.4.學(xué)生信息
學(xué)生信息的增刪改查在主界面都有相應(yīng)的實(shí)現(xiàn)菜單欄夫偶,且查詢可以將查詢到的信息存入文件界睁,測試效果如下:
成績管理模塊、考試管理模塊的相關(guān)操作都在同一個界面實(shí)現(xiàn)兵拢,如下
5.5成績管理
? ? 該系統(tǒng)將成績管理設(shè)為除學(xué)生處的權(quán)限翻斟,包括對成績的添加、刪除说铃、修改访惜。該操作進(jìn)行了對數(shù)據(jù)庫多個表的結(jié)合使用,在填寫添加腻扇、修改或刪除信息后债热,需查詢數(shù)據(jù)中是否有該學(xué)生及該課程,若不存在幼苛,則操作失敗窒篱。且系統(tǒng)將會提示用戶操作失誤的原因,如下:
如輸入信息正確舶沿,則各操作的界面如下:
5.6考試管理
? ? 該系統(tǒng)將考試管理的劃分類似于成績管理的劃分墙杯,將其歸于教務(wù)處、管理員的權(quán)限暑椰,同樣包括添加霍转、刪除、修改操作一汽,而將成績查詢放在學(xué)生管理下避消。各操作界面如下:
5.7畢業(yè)管理
5.8用戶管理
????該界面只能由管理員操作低滩,即對用戶的管理及權(quán)限的設(shè)置:
5.9數(shù)據(jù)備份與恢復(fù)
? 該功能是根據(jù)MySQL數(shù)據(jù)備份與恢復(fù)的相關(guān)知識由Java實(shí)現(xiàn):
6,程序清單
7岩喷,參考文獻(xiàn)
[1] 志宏.計算機(jī)網(wǎng)絡(luò)十二五規(guī)劃教程[M]. 北京:航空工業(yè)出 版社恕沫,2008年2月
[2] 蔡翠平等.Java程序設(shè)計[M].北京:?清華大學(xué)出版社,2002.10
[3] 陳丹丹. Java學(xué)習(xí)手冊[M]. 北京:電子工業(yè)出版社,2011年
[4] 陸昌輝. Java程序設(shè)計實(shí)用案例教程[M]. 北京:電子工業(yè)出 版社纱意,2008年
[5] 張桂珠劉麗陳愛國Java面向?qū)ο蟪绦蛟O(shè)計北京郵電大學(xué)
[6] 畢廣吉.Java程序設(shè)計實(shí)例編程[M].北京:?清華大學(xué)出版社
?[7] 王保羅Java面向?qū)ο蟪绦蛟O(shè)計[M].北京:?清華大學(xué)出版