【正文】
采用分模塊設(shè)計(jì),從而高效的實(shí)現(xiàn)了學(xué)生檔案信息的管理,為學(xué)校提供了一套強(qiáng)大的管理方案。學(xué)生檔案管理系統(tǒng)是一套功能完善而且操作簡(jiǎn)單實(shí)用的管理系統(tǒng)。從實(shí)際出發(fā),根據(jù)上述的用戶(hù)需求進(jìn)行分析,該系統(tǒng)具體應(yīng)包括以下若干功能:(1) 用戶(hù)的創(chuàng)建,管理員需要?jiǎng)?chuàng)建院系用戶(hù),而院系用戶(hù)又需要?jiǎng)?chuàng)建本院系的教師和學(xué)生用戶(hù)。(2) 用戶(hù)登錄,已經(jīng)創(chuàng)建的用戶(hù)應(yīng)該具有登錄系統(tǒng)的功能,其中系統(tǒng)應(yīng)包含對(duì)其身份進(jìn)行驗(yàn)證的功能。(3) 學(xué)生各種檔案信息的查詢(xún)與管理,管理員、院系以及教師等應(yīng)具有對(duì)學(xué)生相應(yīng)的信息的管理功能,從而實(shí)現(xiàn)該系統(tǒng)的分級(jí)化管理的思想;學(xué)生用戶(hù)應(yīng)該具有查詢(xún)個(gè)人相關(guān)信息的功能。(5) 用戶(hù)退出系統(tǒng)功能,當(dāng)用戶(hù)選擇選擇退出系統(tǒng)或者關(guān)閉客戶(hù)端的時(shí)候,應(yīng)該斷開(kāi)數(shù)據(jù)庫(kù)的鏈接。創(chuàng)建數(shù)據(jù)庫(kù)時(shí)需要設(shè)置數(shù)據(jù)庫(kù)文件存儲(chǔ)位置、備份位置、數(shù)據(jù)庫(kù)管理員及其密碼、日志文件數(shù)量及大小、存儲(chǔ)數(shù)據(jù)的字符集、默認(rèn)表空間、臨時(shí)表空間名稱(chēng)和文件位置以及撤銷(xiāo)表空間的位置和文件位置等。在用戶(hù)管理方面,Oracle數(shù)據(jù)庫(kù)提供了多種用戶(hù)類(lèi)型,包括數(shù)據(jù)庫(kù)管理員(DBA)、安全官員、網(wǎng)絡(luò)管理員、應(yīng)用程序開(kāi)發(fā)人員、應(yīng)用程序管理員和數(shù)據(jù)庫(kù)用戶(hù)等等。數(shù)據(jù)庫(kù)用戶(hù)即之前我們提到的4種用戶(hù)。在存儲(chǔ)管理方面,Oracle 10g版本對(duì)DBA的工作進(jìn)行了簡(jiǎn)化,提供了一種自動(dòng)存儲(chǔ)管理(ASM)的存儲(chǔ)機(jī)制,DBA只需進(jìn)行簡(jiǎn)單干預(yù)即可。在安全管理方面,數(shù)據(jù)庫(kù)管理員要做好Oracle的認(rèn)證、用戶(hù)管理以及角色管理。在備份與恢復(fù)方面,數(shù)據(jù)庫(kù)系統(tǒng)需要預(yù)防和避免由于人為或者自然災(zāi)害等不可抗力造成的數(shù)據(jù)損壞或者丟失。在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),需要根據(jù)實(shí)際需求,設(shè)計(jì)一系列表。 總體設(shè)計(jì) 用例分析在經(jīng)過(guò)了對(duì)系統(tǒng)的需求分析后,我們基本已經(jīng)知道了系統(tǒng)應(yīng)有的功能。圖 31用例圖 總體結(jié)構(gòu)設(shè)計(jì)根據(jù)上一小節(jié)的需求分析,我們?cè)O(shè)計(jì)系統(tǒng)總體結(jié)構(gòu)圖如圖32所示。 數(shù)據(jù)庫(kù)部分的設(shè)計(jì) ER(實(shí)體關(guān)系)圖設(shè)計(jì)根據(jù)需求分析與總體設(shè)計(jì),從實(shí)際出發(fā),本系統(tǒng)有如下幾個(gè)實(shí)體:(1) 院系:院系有院系編號(hào)、院系名稱(chēng)、辦公地點(diǎn)、聯(lián)系電話、登錄密碼以及備注等屬性,如圖41所示:圖41 院系實(shí)體屬性圖(2) 學(xué)生:學(xué)生有學(xué)生編號(hào)、姓名、性別、民族、入學(xué)日期、院系、班級(jí)、身份證號(hào)、聯(lián)系電話、登錄密碼、郵箱以及備注等屬性,如圖42所示:圖42學(xué)生實(shí)體屬性圖(3) 教師:教師有教師編號(hào)、姓名、性別、民族、入職日期、院系、職稱(chēng)、身份證號(hào)、聯(lián)系電話、登錄密碼、郵箱以及備注等屬性,如圖43所示:圖43教師實(shí)體屬性圖(4) 班級(jí):班級(jí)有班級(jí)編號(hào)、班級(jí)名稱(chēng)、歸屬院系、班主任、班長(zhǎng)以及備注等屬性,如圖44所示:圖44班級(jí)實(shí)體屬性圖(5) 課程:課程有課程編號(hào)、課程名、課程性質(zhì)、歸屬院系、學(xué)分、教材以及備注等屬性,如圖45所示:圖45課程實(shí)體屬性圖(6) 獎(jiǎng)懲信息:獎(jiǎng)懲信息有獎(jiǎng)懲編號(hào)、學(xué)生編號(hào)、獎(jiǎng)懲日期、獎(jiǎng)懲類(lèi)型以及獎(jiǎng)懲說(shuō)明等屬性,如圖46所示:圖46獎(jiǎng)懲信息實(shí)體屬性圖(7) 學(xué)籍變動(dòng):學(xué)籍變動(dòng)有變動(dòng)編號(hào)、學(xué)生編號(hào)、變動(dòng)日期、變動(dòng)類(lèi)型、轉(zhuǎn)入學(xué)校、轉(zhuǎn)入院系、轉(zhuǎn)入班級(jí)、變動(dòng)原因以及備注等屬性,如圖47所示:圖47學(xué)籍變動(dòng)實(shí)體屬性圖(8) 管理員:管理員的屬性有用戶(hù)名和登錄密碼,如圖48所示:圖48管理員實(shí)體屬性圖(9) 用戶(hù)登錄歷史記錄:用戶(hù)登錄歷史記錄的屬性有登錄用戶(hù)、登錄日期和登錄時(shí)間,如圖49所示:圖49用戶(hù)登錄歷史記錄實(shí)體屬性圖各實(shí)體之間的聯(lián)系如圖410所示:圖410系統(tǒng)ER圖根據(jù)上述ER圖,并結(jié)合關(guān)系模式設(shè)計(jì)的規(guī)范化要求,得出本系統(tǒng)的關(guān)系模式?,F(xiàn)將各個(gè)關(guān)系模式給出如下,其中關(guān)系的主碼用下劃線標(biāo)出,外碼用斜體標(biāo)出:院系信息(院系編號(hào),院系名稱(chēng),辦公地點(diǎn),聯(lián)系電話,備注,登錄密碼)學(xué)生信息(學(xué)生編號(hào),姓名,性別,民族,入學(xué)日期,院系,班級(jí),身份證號(hào),聯(lián)系電話,備注,登錄密碼,郵箱)教師信息(教師編號(hào),姓名,性別,民族,入職日期,院系,薪水,身份證號(hào),聯(lián)系電話,備注,登錄密碼,郵箱)班級(jí)信息(班級(jí)編號(hào),班級(jí)名稱(chēng),歸屬院系,班主任,班長(zhǎng),備注)課程信息(課程編號(hào),課程名,學(xué)分,課程性質(zhì),教材,歸屬院系,備注)教師授課信息(教師編號(hào),課程編號(hào),學(xué)年,學(xué)期,備注)學(xué)生選課信息(學(xué)生編號(hào),課程編號(hào),學(xué)年,學(xué)期,授課教師,成績(jī),備注)學(xué)生獎(jiǎng)懲信息(獎(jiǎng)懲編號(hào),學(xué)生編號(hào),獎(jiǎng)懲日期,獎(jiǎng)懲類(lèi)型,獎(jiǎng)懲說(shuō)明)學(xué)籍變動(dòng)信息(學(xué)籍變動(dòng)編號(hào),學(xué)生編號(hào),變動(dòng)日期,變動(dòng)類(lèi)型,轉(zhuǎn)入學(xué)校名稱(chēng),轉(zhuǎn)入院系編號(hào),轉(zhuǎn)入班級(jí)編號(hào),學(xué)籍變動(dòng)原因,備注)管理員用戶(hù)信息(用戶(hù)名,登錄密碼)用戶(hù)登錄信息(登錄用戶(hù),登錄日期,登錄時(shí)間)從上述的關(guān)系模式,結(jié)合實(shí)際需求選取每個(gè)關(guān)系各個(gè)屬性的數(shù)據(jù)類(lèi)型,設(shè)計(jì)出數(shù)據(jù)庫(kù)的各表如下:(1) 院系信息表的設(shè)計(jì)如表41所示:表41院系信息表(department)字段名類(lèi)型說(shuō)明dnovarchar2(20)院系編號(hào)dnamevarchar2(30)院系名稱(chēng)daarvarchar2(30)辦公地點(diǎn)dphonevarchar2(15)聯(lián)系電話dnotevarchar2(200)備注userpwvarchar2(20)登錄密碼說(shuō)明:本表用來(lái)存儲(chǔ)院系的基本信息。該表中dno、danme和userpw屬性不允許為空值。(2) 學(xué)生信息表的設(shè)計(jì)如表42所示:表42學(xué)生信息表(student)字段名類(lèi)型說(shuō)明snovarchar2(20)學(xué)生編號(hào)snamevarchar2(20)姓名ssexnumber性別snationnumber民族sesdvarchar2(12)入學(xué)日期sdeptvarchar2(20)院系scgvarchar2(20)班級(jí)sidnovarchar2(20)身份證號(hào)sphonevarchar2(15)聯(lián)系電話snotevarchar2(200)備注userpwvarchar2(20)登錄密碼varchar2(50)郵箱說(shuō)明:本表用來(lái)存儲(chǔ)學(xué)生的基本信息。該表中sno、sname、ssex、sesd、sdept、scg和userpw屬性不允許為空值。(3) 教師信息表的設(shè)計(jì)如表43所示:表43 教師信息表(teacher)字段名類(lèi)型說(shuō)明tnovarchar2(20)教師編號(hào)tnamevarchar2(20)姓名tsexnumber性別tnationnumber民族tesdvarchar2(12)入職日期tdeptvarchar2(20)院系ttitlevarchar2(50)職稱(chēng)tidnovarchar2(20)身份證號(hào)tphonevarchar2(15)聯(lián)系電話tnotevarchar2(200)備注userpwvarchar2(20)登錄密碼varchar2(50)郵箱說(shuō)明:本表用來(lái)存儲(chǔ)教師的基本信息。該表中tno、tname、tsex、tesd、tdept和userpw屬性不允許為空值。主鍵:cgno;外鍵:cgdept(引用院系信息表的dno字段),cgheadt(引用教師信息表的tno字段),cgmonitor(引用學(xué)生信息表的sno字段)。(5) 課程信息表的設(shè)計(jì)如表45所示:表45課程信息表(course)字段名類(lèi)型說(shuō)明ovarchar2(20)課程編號(hào)amevarchar2(30)課程名ccreditnumber學(xué)分ctypevarchar2(20)課程性質(zhì)cbookvarchar2(20)教材cdeptvarchar2(20)歸屬院系otevarchar2(200)備注說(shuō)明:本表用來(lái)存儲(chǔ)課程的基本信息。該表中o、ame、ccredit、ctype和cdept屬性不允許為空值。(6) 教師授課信息表的設(shè)計(jì)如表46所示:表46教師授課信息表 (tc)字段名類(lèi)型說(shuō)明tctnovarchar2(20)教師編號(hào)tcovarchar2(20)課程編號(hào)tcyearvarchar2(12)學(xué)年tctermvarchar2(5)學(xué)期totevarchar2(200)備注說(shuō)明:本表用來(lái)存儲(chǔ)教師授課的相關(guān)信息。該表中tctno、tco、tcyear和tcterm屬性不允許為空值。主鍵:scsno、sco、scyear、scterm和sctno;外鍵:scsno(引用學(xué)生信息表的sno字段),sco(引用課程信息表的o字段),sctno(引用教師信息表的tno字段)。(8) 學(xué)生獎(jiǎng)懲信息表的設(shè)計(jì)如表48所示:表48 學(xué)生獎(jiǎng)懲信息表 (evaluation)字段名類(lèi)型說(shuō)明enovarchar2(20)獎(jiǎng)懲編號(hào)esnovarchar2(20)學(xué)生編號(hào)edatevarchar2(12)獎(jiǎng)懲日期etypevarchar2(5)獎(jiǎng)懲類(lèi)型enotevarchar2(200)獎(jiǎng)懲說(shuō)明說(shuō)明:本表用來(lái)存儲(chǔ)學(xué)生獎(jiǎng)懲的相關(guān)信息。該表中eno、esno、edate和etype屬性不允許為空值。(9) 學(xué)籍變動(dòng)信息表的設(shè)計(jì)如表49所示:表49學(xué)籍變動(dòng)信息表(change)字段名類(lèi)型說(shuō)明chnovarchar2(20)學(xué)籍變動(dòng)編號(hào)chsnovarchar2(20)學(xué)生編號(hào)chdatevarchar2(12)變動(dòng)日期chtypevarchar2(10)變動(dòng)類(lèi)型chnewschoolvarchar2(30)轉(zhuǎn)入學(xué)校名稱(chēng)chdeptvarchar2(20)轉(zhuǎn)入院系編號(hào)chcgvarchar2(20)轉(zhuǎn)入班級(jí)編號(hào)chreasonvarchar2(200)學(xué)籍變動(dòng)原因chnotevarchar2(200)備注說(shuō)明:本表用來(lái)存儲(chǔ)學(xué)籍變動(dòng)的相關(guān)信息。該表中chno、chsno、chdate和chtype屬性不允許為空值。當(dāng)變動(dòng)類(lèi)型為退學(xué)和休學(xué)時(shí),chnewschool、chdept和chcg字段不填;當(dāng)變動(dòng)類(lèi)型為轉(zhuǎn)學(xué)時(shí),chnewschool、chdept和chcg字段中只需填寫(xiě)chnewschool字段;當(dāng)變動(dòng)類(lèi)型為調(diào)班時(shí),chnewschool、chdept和chcg字段中只需填寫(xiě)chdept和chcg字段。主鍵:adname。(11) 用戶(hù)登錄信息表的設(shè)計(jì)如表411所示:表411 用戶(hù)登錄信息表 (logininfo)字段名類(lèi)型說(shuō)明loginidvarchar2(20)登錄用戶(hù)logindatevarchar2(12)登錄日期logintimevarchar2(10)登錄時(shí)間說(shuō)明:本表用來(lái)存儲(chǔ)用戶(hù)登錄的信息。該表中各屬性均不允許為空值。為了簡(jiǎn)化開(kāi)發(fā)客戶(hù)端時(shí)創(chuàng)建用戶(hù)后的一系列授權(quán),我們可以先創(chuàng)建幾個(gè)角色,給不同角色授予不同的權(quán)限。經(jīng)過(guò)分析,系統(tǒng)所需要四個(gè)角色,分別對(duì)應(yīng)四種不同類(lèi)型的用戶(hù)。 grant connect, resource, select any table to sturole。 grant delete on to sturole。 grant insert on to sturole。 grant connect, resource, select any table to tearole。 grant update on to tearole。(3) 院系角色:院系角色是需要授予院系用戶(hù)的一個(gè)角色,根據(jù)院系用戶(hù)的需求,其應(yīng)具有連接數(shù)據(jù)庫(kù)的權(quán)限、對(duì)所有表進(jìn)行增刪改查的系統(tǒng)權(quán)限,另外,由于院系用戶(hù)需要?jiǎng)?chuàng)建教師和學(xué)生用戶(hù),因此其還應(yīng)具有將教師角色和學(xué)生角色授予其他用戶(hù)的權(quán)限。 grant connect, resource, select any table, delete any table, insert any table, update any table to deptrole。 grant sturole, tearole to deptrole with admin option。因此創(chuàng)建管理員角色并對(duì)其進(jìn)行相應(yīng)的授權(quán)如下: create role adminrole。 grant create user, drop user, alter user to adminrole。在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),好的觸發(fā)器設(shè)計(jì)會(huì)大大簡(jiǎn)化應(yīng)用程序的開(kāi)發(fā)。據(jù)此,我們?cè)O(shè)計(jì)觸發(fā)器:create or replace trigger del_teacherbefore delete on teacherfor each rowbegin update classandgrade set cgheadt=NULL where cgheadt=:。 delete from sc where sctno=:。end del_teacher。據(jù)此,我們?cè)O(shè)計(jì)觸發(fā)器:create or replace trigger del_coursebefore delete on coursefor each rowbegin delete from sc where sco=:。end del_course。據(jù)此,我們?cè)O(shè)計(jì)觸發(fā)器:create or replace trigge