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

下載本文檔

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

文檔簡(jiǎn)介

1、 浙江科技學(xué)院課 程 設(shè) 計(jì) 課程名稱數(shù)據(jù)庫(kù)原理題目名稱教學(xué)管理系統(tǒng)學(xué)生學(xué)院電子信息工程學(xué)院專業(yè)班級(jí) 軟件工程122學(xué) 號(hào)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ù)庫(kù)物理設(shè)計(jì)64.1建立索引64.2數(shù)據(jù)庫(kù)存放位置64.3系統(tǒng)配置74.4模塊設(shè)計(jì)75、 數(shù)據(jù)庫(kù)實(shí)施75.1創(chuàng)建數(shù)據(jù)庫(kù)及數(shù)據(jù)對(duì)象(括號(hào)中為對(duì)應(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 編寫(xiě)目的隨著知識(shí)經(jīng)濟(jì),科技的不斷發(fā)展以及科技在各領(lǐng)域的不斷深入,越來(lái)越多的行業(yè)和領(lǐng)域步入信息的智能化階段。信息自動(dòng)化處理也是提高效益,規(guī)范管理,迅速客觀審查的有效途徑。管理系統(tǒng)在當(dāng)今教育領(lǐng)域是一個(gè)不可缺少的工具軟件。然而,一個(gè)好的高質(zhì)量的軟件少只有少,并為根本實(shí)現(xiàn)智能化,也不利于科學(xué)的管理和審查。因此,在本軟件中心準(zhǔn)備開(kāi)發(fā)一個(gè)功能完善的成績(jī)管理系統(tǒng)。2 定義1 系統(tǒng)名稱:教師查詢管理系統(tǒng)2 數(shù)據(jù)庫(kù)管理軟件:navicat for MySQL3 數(shù)據(jù)庫(kù)設(shè)計(jì)人員:陸昌柱。4 數(shù)據(jù)庫(kù)設(shè)計(jì)采用軟件

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

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

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

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

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

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

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

10、e開(kāi)發(fā)環(huán)境5、 數(shù)據(jù)庫(kù)實(shí)施6.1 創(chuàng)建數(shù)據(jù)庫(kù)及數(shù)據(jù)對(duì)象(括號(hào)中為對(duì)應(yīng)的SQL腳本文件)1、 創(chuàng)建數(shù)據(jù)庫(kù)的對(duì)象:create database teach;2、 創(chuàng)建表的過(guò)程如下: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)自動(dòng)完成的,對(duì)用戶透明。系統(tǒng)故障的恢復(fù)由系統(tǒng)重新啟動(dòng)時(shí)自動(dòng)完成,不需要用戶干預(yù)。介質(zhì)故障的恢復(fù)則由人干預(yù)完成,方法為重裝數(shù)據(jù)庫(kù),然后重做已完成的事務(wù)。1、數(shù)據(jù)庫(kù)備份方案:<1>每月進(jìn)行一次數(shù)據(jù)庫(kù)的完整備份,包括所有的數(shù)據(jù)及數(shù)據(jù)庫(kù)對(duì)象。速度較慢,占用大量磁盤(pán)空間。應(yīng)該在整個(gè)數(shù)據(jù)庫(kù)不進(jìn)行其他事務(wù)操作的時(shí)候備份可以提高數(shù)據(jù)備份的速度。<2>每天進(jìn)行事務(wù)日志備份,事務(wù)日

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

15、的一些代碼。在MyAction中封裝的是主窗口里面的所有菜單事件。2在model包中主要處理的是模型層,對(duì)數(shù)據(jù)的操作封裝其中。3query一個(gè)類包含了對(duì)學(xué)生信息的查詢。4此外在util中包含的是對(duì)數(shù)據(jù)庫(kù)的所有操作。其中有對(duì)數(shù)據(jù)庫(kù)的更改,把數(shù)據(jù)庫(kù)的數(shù)據(jù)和表格模型相關(guān)聯(lián)起來(lái)的等操作。主界面如下所示:5關(guān)鍵代碼如下:由于代碼太多,以下只寫(xiě)出很少的一部分代碼1對(duì)數(shù)據(jù)庫(kù)的操作: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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論