數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告_第1頁
數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告_第2頁
數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告_第3頁
數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告_第4頁
數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 浙江科技學(xué)院課 程 設(shè) 計(jì) 課程名稱數(shù)據(jù)庫原理題目名稱教學(xué)管理系統(tǒng)學(xué)生學(xué)院電子信息工程學(xué)院專業(yè)班級 軟件工程122學(xué) 號1120290062學(xué)生姓名陸昌柱指導(dǎo)教師王老師 2015年6月26日目錄1、 需求分析2 1.1數(shù)據(jù)流圖2 1.2數(shù)據(jù)字典3 1.3安全性和完整性要求42、 概念結(jié)構(gòu)設(shè)計(jì)4 2.1 ER圖43、 邏輯結(jié)構(gòu)設(shè)計(jì)5 3.1關(guān)系模型5 3.2關(guān)系模型的設(shè)計(jì)5 3.3用戶子模式5 3.4系統(tǒng)結(jié)構(gòu)圖63.5安全性64、 數(shù)據(jù)庫物理設(shè)計(jì)64.1建立索引64.2數(shù)據(jù)庫存放位置64.3系統(tǒng)配置74.4模塊設(shè)計(jì)75、 數(shù)據(jù)庫實(shí)施75.1創(chuàng)建數(shù)據(jù)庫及數(shù)據(jù)對象(括號中為對應(yīng)的SQL腳本文件)7

2、5.2數(shù)據(jù)備份和恢復(fù)方案75.3用戶界面的設(shè)計(jì)和實(shí)現(xiàn)及相關(guān)應(yīng)用程序編碼7 教學(xué)管理系統(tǒng) 1 引言 1.1 編寫目的隨著知識經(jīng)濟(jì),科技的不斷發(fā)展以及科技在各領(lǐng)域的不斷深入,越來越多的行業(yè)和領(lǐng)域步入信息的智能化階段。信息自動化處理也是提高效益,規(guī)范管理,迅速客觀審查的有效途徑。管理系統(tǒng)在當(dāng)今教育領(lǐng)域是一個不可缺少的工具軟件。然而,一個好的高質(zhì)量的軟件少只有少,并為根本實(shí)現(xiàn)智能化,也不利于科學(xué)的管理和審查。因此,在本軟件中心準(zhǔn)備開發(fā)一個功能完善的成績管理系統(tǒng)。2 定義1 系統(tǒng)名稱:教師查詢管理系統(tǒng)2 數(shù)據(jù)庫管理軟件:navicat for MySQL3 數(shù)據(jù)庫設(shè)計(jì)人員:陸昌柱。4 數(shù)據(jù)庫設(shè)計(jì)采用軟件

3、:Microsoft Office Visio 20031、 需求分析2.1數(shù)據(jù)流圖學(xué)生或管理員等教學(xué)管理系統(tǒng)管理員增刪改信息取得信息取得信息選課教師取得信息管理成績說明:1、用戶請求包括:(1) 學(xué)生基本信息管理新生信息錄入。學(xué)生信息修改:按學(xué)號查詢出某學(xué)生的信息并做信息修改。(2) 系基本信息管理:系的基本信息輸入、修改、刪除(3) 課程信息管理:課程信息的輸入、修改、刪除(4) 教職工信息管理:教職工信息的輸入、修改、刪除(5) 選課管理: 每學(xué)期所選課程的學(xué)分不能超過15分。學(xué)生可以同時選修一門或多門課程。 可以同時為多個學(xué)生選修某一門或某幾門課程。刪除和修改選課信息。(6) 成績管理

4、按課程輸入和修改成績。按學(xué)生輸入和修改成績。(7) 信息查詢按學(xué)號、姓名、系號查詢學(xué)生基本信息。按職工號、姓名、系號查詢教職工基本信息。按系號、系名稱查詢系的基本信息。按課程號、課程名稱、上課教師姓名查詢課程基本信息。按學(xué)號、學(xué)生姓名、課程號、課程名稱、上課教師姓名、系號查詢學(xué)生成績,內(nèi)容包括課程基本情況。若查詢涉及多門課程,則按課程分組。每門課程按總評成績從高分到低分給出選修該門課程的所有學(xué)生的成績(平時成績、考試成績和總評成績)。(8) 統(tǒng)計(jì)報(bào)表成績登記表,內(nèi)容包括課程基本信息(課程號、課程名稱、任課教師號、學(xué)時、學(xué)分、上課時間、上課地點(diǎn)、考試時間)、選課學(xué)生名單(學(xué)號、姓名、性別),每個

5、學(xué)生的平時成績(空格)、考試成績(空格)和總評成績(空格),按學(xué)號排序:順序輸出所有課程的成績登記表。按課程號、課程名稱、教師姓名輸出對應(yīng)課程的成績登記表。2、以上的用戶請求經(jīng)應(yīng)用程序的轉(zhuǎn)化,化為對數(shù)據(jù)庫中的相應(yīng)的表或視圖的操作,數(shù)據(jù)庫再把處理的結(jié)果(或都是錯誤信息)返回結(jié)應(yīng)用程序。3、應(yīng)用程序把結(jié)果返回給用戶,該結(jié)果可能為一個對表操作的結(jié)果(如插入,刪除等),也可能為一個查詢的結(jié)果,甚至可能為一個錯誤的信息。2.2數(shù)據(jù)字典根據(jù)題目的需求,教學(xué)系統(tǒng)主要是對學(xué)生,教職工,學(xué)院,課程,成績等的管理。由此分析得到如下數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)庫的表結(jié)構(gòu)的設(shè)計(jì),數(shù)據(jù)項(xiàng)如下,表名分別為:users, score,

6、department, student, teach_job, course:2.3安全性和完整性要求安全性和完整性要求:通過設(shè)置外鍵,建立它們之間的關(guān)系,并使它們級聯(lián)更新相關(guān)的字段,級聯(lián)刪除相關(guān)的記錄。對于構(gòu)成了環(huán)的級聯(lián)更新或刪除,而不能建立級聯(lián)更新或刪除的,通過建立觸發(fā)器,使得它們保持?jǐn)?shù)據(jù)的完整性。通過不同權(quán)限的人登錄而設(shè)置其對數(shù)據(jù)的增刪改的權(quán)限增強(qiáng)數(shù)據(jù)的安全性。本系統(tǒng)的外鍵設(shè)置和級聯(lián)操作有:外鍵:stuent表的depth_id。course表的t_id。score表的stu_id和c_id等。由于score表的兩個鍵若都級聯(lián)操作會構(gòu)成環(huán),所以級聯(lián)不成功。所以在這里建立兩個觸發(fā)器取代級聯(lián)

7、操作,從而實(shí)現(xiàn)數(shù)據(jù)庫的完整性。2、 概念結(jié)構(gòu)設(shè)計(jì)3.1 ER圖系系號系名稱系的簡介屬于1m教 師職工號姓名性別生日系號職稱方向擁 有1學(xué) 生m學(xué)號姓名性別出生年月入學(xué)成績系號講 授mn課程課程號課程名職工號學(xué)時學(xué)分上課時間上課地點(diǎn)考試時間選修mn成績p學(xué)號課程號成績ER圖3、 邏輯結(jié)構(gòu)設(shè)計(jì)4.1 關(guān)系模型4.1.1 關(guān)系模型的設(shè)計(jì)學(xué)生(學(xué)號、姓名、性別、出生日期、入學(xué)成績、所在系號、密碼)教師(職工號、姓名、性別、出生年月、所在系號、職稱、專業(yè)及教學(xué)方向)系(系號、系名稱、系的簡介)課程(課程號、課程名稱、任課教師號、學(xué)時、學(xué)分、上課時間、上課地點(diǎn)、考試時間)成績(學(xué)號、課程號、平時成績、考試

8、成績、總評成績)擁有(學(xué)號、系號)屬于(職工號、系號)講授(職工號、課程號、上課時間)選修(學(xué)號、課程號、上課時間)4.2 用戶子模式成績視圖(學(xué)號、學(xué)生姓名、教師號、教師姓名、課程號、上課時間、課程名、 平時成績、考試成績、總評成績、)選課視圖(學(xué)號、課程號、上課時間、平時成績、考試成績、總評成績、課程名、學(xué)時、學(xué)分)統(tǒng)計(jì)視圖(課程號、上課時間、課程名稱、任課教師號、學(xué)時、學(xué)分、上課地點(diǎn)、考試時間、學(xué)號、學(xué)生姓名、學(xué)生性別、平時成績、考試成績、總評成績)歷史表學(xué)生表系表課程表教師表成績表學(xué)生號學(xué)生號教師號系 號課程號學(xué)生號上課時間課程號上課時間選課視圖成績視圖統(tǒng)計(jì)視圖4.3 安全性安全性的實(shí)

9、現(xiàn)主要是通過應(yīng)用程序來實(shí)現(xiàn),在程序中設(shè)定一個檢查用戶名和密碼的機(jī)構(gòu),用戶要進(jìn)入系統(tǒng)就先要輸入授權(quán)了的用戶名和密碼方能進(jìn)入。4、 數(shù)據(jù)庫物理設(shè)計(jì)5.1 建立索引為各個表的主碼建立索引。學(xué)生(學(xué)號)教師(職工號)系(系號)課程(課程號、上課時間)成績(學(xué)號、課程號)5.2 數(shù)據(jù)庫存放位置數(shù)據(jù)的存儲和數(shù)據(jù)處理在綜合考慮存取時間,存儲空間的利用率,維護(hù)的代價(jià)3個方面的因素,進(jìn)行權(quán)衡,選擇折中的方案。將易變部分與穩(wěn)定部分、經(jīng)常存取部分和存取頻率較低部分分開存放。5.3 系統(tǒng)配置(1) Windows XP(2) MicorSoft SQL Server 2000 (必需升級到SP3)(3) Eclips

10、e開發(fā)環(huán)境5、 數(shù)據(jù)庫實(shí)施6.1 創(chuàng)建數(shù)據(jù)庫及數(shù)據(jù)對象(括號中為對應(yīng)的SQL腳本文件)1、 創(chuàng)建數(shù)據(jù)庫的對象:create database teach;2、 創(chuàng)建表的過程如下:create table users(user_name varchar(15) not null,password varchar(15),popedom tinyint not null); create table department(depth_id smallint primary key,depth_name char(14),discription varchar(50);create table te

11、ach_job(t_id int primary key,t_name char(8),sex char(2),birthday smalldatetime,depth_id smallint foreign key references department(depth_id),job char(10),speciality char(16),direction char(16);create table course(c_id smallint primary key,c_name char(16) not null,t_id int foreign key references teac

12、h_job(t_id),credit smallint,period smallint,class_time smalldatetime,class_area char(10),exam_time smalldatetime);create table student(stu_id char(6) primary key,s_name char(8),birthday smalldatetime,score int,depth_id smallint foreign key references department(depth_id);create table score(stu_id ch

13、ar(6),c_id smallint,u_score int,exam_score int,total int,primary key(stu_id,c_id);6.2 數(shù)據(jù)備份和恢復(fù)方案事務(wù)故障的恢復(fù)是由系統(tǒng)自動完成的,對用戶透明。系統(tǒng)故障的恢復(fù)由系統(tǒng)重新啟動時自動完成,不需要用戶干預(yù)。介質(zhì)故障的恢復(fù)則由人干預(yù)完成,方法為重裝數(shù)據(jù)庫,然后重做已完成的事務(wù)。1、數(shù)據(jù)庫備份方案:<1>每月進(jìn)行一次數(shù)據(jù)庫的完整備份,包括所有的數(shù)據(jù)及數(shù)據(jù)庫對象。速度較慢,占用大量磁盤空間。應(yīng)該在整個數(shù)據(jù)庫不進(jìn)行其他事務(wù)操作的時候備份可以提高數(shù)據(jù)備份的速度。<2>每天進(jìn)行事務(wù)日志備份,事務(wù)日

14、志備份是指對數(shù)據(jù)庫發(fā)生的事務(wù)進(jìn)行備份,包括上次進(jìn)行事務(wù)日志備份,差異備份和數(shù)據(jù)庫完全備份之后所有已經(jīng)完成的事務(wù)。所需的時間和磁盤空間要求較少<3>每小時進(jìn)行差異備份,是備份一次數(shù)據(jù)備份以來的數(shù)據(jù)變化。a) 恢復(fù)解決方案:先恢復(fù)最近一次的數(shù)據(jù)庫備份,接著進(jìn)行差異備份的恢復(fù),最后進(jìn)行事務(wù)日志血仇的恢復(fù)。6.3 用戶界面的設(shè)計(jì)和實(shí)現(xiàn)及相關(guān)應(yīng)用程序編碼本系統(tǒng)的程序代碼結(jié)構(gòu)如下圖所示:主要是四個包:1其中中frame包中包含一個layout包。frame包主要是視圖層的代碼,主界面,登錄界面,各種操作的界面都在其中。此外包含一個包layout,在其中有一個類,用于網(wǎng)格組布局的封裝了網(wǎng)格組布局

15、的一些代碼。在MyAction中封裝的是主窗口里面的所有菜單事件。2在model包中主要處理的是模型層,對數(shù)據(jù)的操作封裝其中。3query一個類包含了對學(xué)生信息的查詢。4此外在util中包含的是對數(shù)據(jù)庫的所有操作。其中有對數(shù)據(jù)庫的更改,把數(shù)據(jù)庫的數(shù)據(jù)和表格模型相關(guān)聯(lián)起來的等操作。主界面如下所示:5關(guān)鍵代碼如下:由于代碼太多,以下只寫出很少的一部分代碼1對數(shù)據(jù)庫的操作:public class ConneJdbc protected static Connection connection = null;private Connection con = null; private ResultS

16、et rs = null; private ResultSetMetaData rsmd = null;public ConneJdbc() try Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");connection = DriverManager.getConnection("jdbc:microsoft:sqlserver:/127.0.0.1:1433;DatabaseName=teaching ","sa", ""); catch

17、 (java.lang.ClassNotFoundException classnotfound) classnotfound.printStackTrace(); catch (java.sql.SQLException sql) sql.printStackTrace();public Connection getCon() return connection;public Vector selectSql(String sql) Vector vdata = new Vector();try rs = connection.prepareStatement(sql).executeQue

18、ry();rsmd = rs.getMetaData();while (rs.next()vdata.addElement(rs.getObject(1); catch (SQLException e) e.printStackTrace();return vdata;public String selectOne(String sql) ResultSet rs = null; ResultSetMetaData rsmd = null;try rs = connection.prepareStatement(sql).executeQuery();rsmd = rs.getMetaData

19、();if (rs.next()return (String)rs.getObject(1); catch (SQLException e) e.printStackTrace();return null;public boolean inTable(String user, String pa) throws SQLException Statement stmt = null;PreparedStatement pstmt = null;ResultSet rs = null;String sql = "select password from users " +&qu

20、ot;where user_name='" + user +"' and password='"+ pa + "'"rs = connection.prepareStatement(sql).executeQuery();if(rs.next()return true;else return false;2表格模型的處理:public class SqlTableModel extends DefaultTableModel private Connection con = null; private Resul

21、tSet rs = null; private ResultSetMetaData rsmd = null;public SqlTableModel(String sqlStr, String name) con = new ConneJdbc().getCon(); try rs = con.prepareStatement(sqlStr).executeQuery(); rsmd = rs.getMetaData(); for(int i=0; i<rsmd.getColumnCount(); i+) addColumn(namei); while(rs.next() Vector

22、vdata = new Vector(); for ( int i = 1 ; i <= rsmd.getColumnCount() ; i +) vdata.addElement(rs.getObject(i); addRow(vdata); catch(java.sql.SQLException sql) sql.printStackTrace(); finally try con.close(); catch (SQLException e) e.printStackTrace(); 3)Updatabase的一部分代碼:public class UpdateDatebase ex

23、tends ConneJdbc private Statement stmt = null;private PreparedStatement pstmt = null;private String infoStr = null;private String sql;public UpdateDatebase() public boolean insert(DepData data) throws SQLException String sql = "insert into department (depth_name,discription) values ('"

24、+ data.getDepth_name() + "','" + data.getDiscription() + "')"pstmt = connection.prepareStatement(sql); pstmt.execute();return true;public boolean insert(StuData data) throws SQLException sql = "insert into student values ('"+ data.getStu_id() + "

25、9;,'" + data.getS_name() + "','" + data.getSex() + "','" + data.getBirthday() + "',"+ data.getScore() +"," + data.getDepth_id() + ")"pstmt = connection.prepareStatement(sql); pstmt.execute();return true;public boolean ins

26、ert(Teadata data) throws SQLException sql = "insert into teach_job values ("+ data.getT_id() + ",'" + data.getT_name() + "','" + data.getSex() + "','" + data.getBirthday() + "',"+ data.getDepth_id() +",'" + data.getJob() + "','"+data.getSpeciality() + "','"+ data.getDirection() + "')"pstmt = connection.prepareStatement(sql);

溫馨提示

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

評論

0/150

提交評論