




已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1 設計內容與要求11 設計題目 學籍管理系統(tǒng)12 設計目的與要求 隨著社會的發(fā)展,基本上所有的具有一定數(shù)量數(shù)據的企事業(yè)單位或機關部門都開始使用計算機數(shù)據庫來做管理。當然幾乎所有學校也都已經在使用計算機管理數(shù)據的機制,大大減少了學校學籍管理的工作量。該課程設計要求設計一個學籍管理的數(shù)據庫系統(tǒng),數(shù)據庫中要求包含學生的基本信息,學校所有專業(yè)信息,學校教師信息以及課程設置的信息。同時還要設計它們之間的關系,如學生與課程關系和學生的成績等,最后還要對一些數(shù)據進行查詢,如查詢學生成績的各種集合等。我們通過該課程設計,應該達到的目的是把數(shù)據庫理論知識更加的鞏固加深,加強動手能力與實踐能力,學以致用,與現(xiàn)實生活中的應用充分的結合起來。13 設計環(huán)境 在Windows 環(huán)境下利用My Eclipse和Tomcat作為概念模型設計與物理模型設計的工具,使用SqlServer2000作為數(shù)據庫管理系統(tǒng)對數(shù)據進行管理與維護。2 需求分析21 系統(tǒng)功能要求設計能對學生的學籍及成績進行基本管理,包括:學生基本信息和學科成績的存儲、輸入、刪除、修改、查詢,以及升留級管理。學生基本信息應包括:學號、姓名、出生年份、籍貫、性別、專業(yè)、班級、家庭住址、本校住址、個人聯(lián)系電話、家庭聯(lián)系電話;成績信息應包括:學號、課號、課名、成績、上課時間、教師號。查詢能夠按照:學號、課號、班級、時間等進行查詢。22 系統(tǒng)模塊設計 學籍管理系統(tǒng)大體可以分成四大模塊如下圖所示, 首先是學生的基本信息模塊,里面應該包含學生的各方面的基本信息;再者便是學生成績管理模塊, 在該模塊中應該包含有對學生成績信息的查詢和處理,如平均成績、最好成績、最差成績以及不及格學生的統(tǒng)計等功能模塊;再其次還有院系、教師、課程等相關信息的模塊;最后是系統(tǒng)模塊。圖 2-1 系統(tǒng)模塊圖23 數(shù)據字典2.3.1 數(shù)據項 數(shù)據項是數(shù)據庫的關系中不可再分的數(shù)據單位,下表分別列出了數(shù)據的名稱(即碼)、注釋、數(shù)據類型、長度、取值范圍和是否是主碼。表 2.1 數(shù)據項列表名稱注釋數(shù)據類型長度最小值最大值主要的班級varchar(16)16FALSE學號唯一標識學生的信息integerTRUE院系代號varchar(5)5FALSE專業(yè)號varchar(5)5FALSE姓名varchar(6)6FALSE性別varchar(2)2FALSE出生年月datetimeFALSE籍貫varchar(8)8FALSE民族varchar(2)2FALSE家庭住址varchar(20)20FALSE入學時間datetimeFALSE政治面貌varchar(6)6FALSE身份證號char(18)18FALSE聯(lián)系電話varchar(12)12FALSE備注varchar(14)14FALSE課程號varchar(5)5TRUE先行課smallintFALSE學分integerFALSE備注varchar(16)16FALSE院系代號varchar(5)5TRUE院系名varchar(10)10FALSE系主任varchar(8)8FALSE備注varchar(16)16FALSE教師號varchar(5)5TRUE院系代號varchar(5)5FALSE姓名varchar(6)6FALSE性別char(2)2FALSE年齡integerFALSE工齡integerFALSE備注varchar(16)16FALSE專業(yè)號varchar(5)5TRUE院系代號varchar(5)5FALSE專業(yè)名稱varchar(16)16FALSE備注varchar(16)16FALSE學號integerTRUE課程號varchar(5)5TRUE分數(shù)floatFALSE課程號varchar(5)5TRUE教師號varchar(5)5TRUE2.3.2 數(shù)據結構數(shù)據結構是為反映數(shù)據之間的組合關系,即 一個數(shù)據結構可以由若干個數(shù)據項組成,也可以由若干個數(shù)據結構組成,或由若干個數(shù)據項和數(shù)據結構組成。本學籍管理系統(tǒng)的數(shù)據組成可根據系統(tǒng)模塊(圖 1-1)的劃分來設計,即分為四個數(shù)據結構,分別如下表所示。表 2.2 數(shù)據結構清單數(shù)據結構名含義說明組成學生基本信息學生基本信息的描述班級+學號+院系代號+專業(yè)號+姓名+性別+出生年月+籍貫+民族+家庭住址+入學時間+政治面貌+身份證號+聯(lián)系電話+備注;成績管理學生成績的管理與查詢管理描述學號+課程號+分數(shù);平均分數(shù)+最高分+最低分;學生相關信息學校的院系、教師信息以及課程信息的描述課程號+課程名+先行課+學分+備注;院系代號+院系名+系主任+備注;教師號+院系代號+姓名+性別+年齡+工齡+備注;系統(tǒng)管理對系統(tǒng)中的所有表的更新、刪除、修改描述2.3.3數(shù)據流數(shù)據流是數(shù)據結構在系統(tǒng)內傳輸?shù)穆窂?。?-3是描述數(shù)據流的數(shù)據流定義表,其中包含了數(shù)據流名、說明、數(shù)據流組成、流量與備注等,表1-4是系統(tǒng)中的數(shù)據流描述,其中包括輸入數(shù)據流、輸出數(shù)據流等的描述。表 2.3 數(shù)據流定義表編號數(shù)據流名說明數(shù)據流組成流量備注L01學生基本信息學生的所有基本信息學生基本信息結構L02學生成績所有學生的成績成績管理結構 L03分類信息同班級學生名單部分學生基本信息結構L04各門成績學生的平均成績(包括所有學生和同班級學生的成績情況)成績管理結構L05科目成績學生的單科成績成績管理結構L06教師、專業(yè)、院系信息學生相關信息L07查詢結果L04 | L05L08統(tǒng)計分析L04+L05表 2.4 數(shù)據流表使用者名稱輸入數(shù)據流數(shù)輸出數(shù)據流數(shù)備注管理員L01+L02+L06L07+L08系統(tǒng)管理員擁有所有權限教務處人員L01+L02+L06L07+L08擁有對學生和教師的管理權限任課教師L02L07可對成績進行查詢與更新學生L01L07查詢成績與學生基本信息2.3.4 數(shù)據存儲數(shù)據存儲是數(shù)據結構停留或保存的地方,也是數(shù)據流的來源和去向之一。其主要包括數(shù)據存儲名、說明、編號、輸入的數(shù)據流與輸出的數(shù)據流、組成、數(shù)據量,存取頻度、存取方式。下表表示了該學籍管理系統(tǒng)中的數(shù)據存儲描述。表 2.5 數(shù)據存儲描述數(shù)據存儲名組成輸入數(shù)據流輸出數(shù)據流存取頻度存取方式學生基本信息表學生基本信息結構L01L01, L07大順序檢索、更新院系教師及專業(yè)表學生相關信息數(shù)據結構L06L06.L07小順序檢索、更新學生成績表成績管理結構L02L07一般順序檢索、更新2.3.5 處理過程 該學籍管理系統(tǒng)的處理過程比較少,主要包含了數(shù)據的追加,更新, 修改以及刪除,還有便是一些查詢處理,包括對學生成績的平均分、最高分最低分的查詢,以及一些分類處理。下圖顯示了這些最基本的處理以及其對應的數(shù)據流與說明。表2.6 處理過程列表處理名簡要說明輸入數(shù)據輸出數(shù)據備注添加數(shù)據L01, L06刪除數(shù)據L01,L06更改數(shù)據L01, L06,L02L01,L06,L02查詢數(shù)據L07統(tǒng)計分析L083 概念結構設計31 數(shù)據抽象與局部視圖設計3.1.1 學生基本信息與課程信息視圖 圖3-1 學生基本信息視圖 圖3-2 課程信息視圖根據學生與課程的關系可設計如下關系圖:圖3-3 學生與課程關系視圖3.1.2 專業(yè)、教師及院系信息視圖 圖3-4 專業(yè)、教師及院系信息視圖院系、教師以及專業(yè)的關系圖如下:圖3-5 院系教師以及專業(yè)關系圖32 系統(tǒng)數(shù)據流圖 系統(tǒng)的管理模塊里面包含教務部門(系統(tǒng)管理員和教務處管理人員)、教師以及學生,下圖為該學籍管理系統(tǒng)的系統(tǒng)流圖,教務部門擁有對所有表的查詢更新與刪除權利(分類信息屬于查詢結果除外);教師可對教師、專業(yè)以及院系信息,分類信息,學生情況進行查詢,對成績單進行查詢、更新以及刪除等所有操作;學生只可對所有模塊信息進行查詢,同時可對自己的部分學生情況進行一定的修改與更新。圖3-6系統(tǒng)數(shù)據流圖33 合并部分視圖生成E-R 圖 合并數(shù)據抽象與局部視圖設計中的各個局部視圖以及各個實體之間的關系生成E-R圖如下:圖3-7 系統(tǒng)E-R圖34 概念模型設計在生成了系統(tǒng)E-R圖后,可根據E-R圖中實體的各個屬性組成以及實體與實體之間的關系用PowerDesigner設計概念模型。最后生成概念模型如下圖所示:圖3-8 系統(tǒng)概念模型設計4 邏輯結構設計41 概念模型向物理模型的轉換 在概念模型設計好了之后,可直接在powerdesigner 中將設計好了的概念模型轉換成物理模型。其具體操作過程為 點擊主菜單的 ToolsGenerate Physical Data Model 便可以將當前的概念模型轉換為物理模型,轉換后的物理模型如下圖所示:圖4-1 物理模型圖 因為一個實體模型轉換為一個關系模型時遵循以下規(guī)則1.一個1:1聯(lián)系可轉換為一個獨立的關系模式,也可以與任意一端對應的關系模式合并;2.一個1:n聯(lián)系可以轉換為獨立的關系模式,也可以與n端對應的關系模式合并;3.一個m:n聯(lián)系轉換為一個關系模式。與該聯(lián)系相連的各實體的碼以及聯(lián)系本身的屬性均轉換為關系的屬性,各實體的碼組成關系的碼或關系碼的一部分;所以在轉換中院系與專業(yè)合并到學生基本信息關系中,院系與專業(yè)的主碼成為學生信息的外碼,同樣院系的主碼成為教師的外碼。學生與課程、教師與課程均是多對多的關系所以,單獨的生成了必修與教授兩個關系。42 數(shù)據庫物理模型設計在PowerDesigner中將概念模型轉換成物理模型之后,我們可以對物理模型進行設計,雙擊物理模型的關系,便彈出對其設置的對話框,在General選項卡中可以對該關系的名稱、注釋以及碼等信息進行設置。在Columns選項卡中可對該關系的屬性列進行設計,可分別設置其名稱、碼、數(shù)據類型以及主碼、是否為空等。下圖顯示了課程與院系兩個關系的物理設計其中課程號與院系代號分別為兩個關系的住碼: 圖4-2 課程與院系的物理設計 下圖是教師與專業(yè)兩個關系的物理設計,起中教師號與專業(yè)號分別為主碼,因為教師與專業(yè)均從屬于院系,所以院系代號分別是兩個關系的外碼: 圖4-3 教師與專業(yè)的物理設計SC與TC關系分別是學生基本信息與課程,教師與課程兩個多對多聯(lián)系合并生成的關系。SC關系描述了學生選擇什么課程以及該課程的分數(shù),其中來自兩個關系的主碼組成該關系的主碼同時也是外碼;TC關系是教師與課程的聯(lián)系,其描述了每個教師所教授的課程關系。 圖 4-4 SC與TC物理設計下面是學生基本信息的物理模型設計,學號作為主碼,因為學生基本信息與專業(yè)、院系的對應關系均是n:1的聯(lián)系,所以院系代號與專業(yè)號作為學生基本信息關系的外碼。圖4-5 學生基本信息物理設計5系統(tǒng)實現(xiàn)5.1 系統(tǒng)實現(xiàn)工具與支持平臺(1) 用戶界面本系統(tǒng)采用Eclipse設計,用戶交互界面采用的是基于Windows的窗口界面。(2) 硬件接口運行本系統(tǒng)的硬件基本要求如下:CPU:Intel P4及以上;內存:256MB及以上;硬盤:40GB及以上。(3) 軟件接口數(shù)據庫服務器:MySQL。5.2系統(tǒng)界面及其實現(xiàn)方法1.系統(tǒng)登錄界面圖: 登錄采用密碼驗證,用戶輸入帳號,密碼后,查詢數(shù)據庫看是不是由該用戶,如果有,看輸入信息是否正確,正確后才允許登陸,否則給出提示并取消登陸。查詢功能的實現(xiàn)采用多種查詢方法,但每次只能采用一種查詢,并且采用模糊查詢方法,用table將查詢內容顯示在視圖中。package severlet;import java.io.*;import java.util.Hashtable;import java.sql.*;import javax.servlet.*;import javax.servlet.http.*;public class Login extends Common HttpSession mySession=null; public void doGet ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException /設置提交表單的中文編碼 request.setCharacterEncoding(gb2312); mySession = request.getSession(true); /清空錯誤消息 mySession.setAttribute(errMsg,); /是否進入默認頁面 if ( !request.getParameterNames().hasMoreElements() ) response.sendRedirect(./AllLogin.jsp); return; /得到用戶輸入信息 String sUserid = request.getParameter(userid); String sPassword = request.getParameter(password); String sRole = request.getParameter(role); /如果用戶是提交表單 if ( sUserid != null & sUserid.length()=8 ) /校驗用戶輸入信息 String sRealname = getUserRealname( sUserid, sPassword, sRole ); if ( sRealname = null ) /出錯了設置變量并重新顯示 mySession.setAttribute( errMsg, 登錄失??!請重新輸入相關信息! ); mySession.setAttribute( userid, sUserid ); mySession.setAttribute( role, sRole ); response.sendRedirect(./AllLogin.jsp); return; else mySession.setAttribute( userid, sUserid ); mySession.setAttribute( realname, sRealname ); /根據用戶角色的不同決定遷移到哪個頁面 if ( sRole.equals( 0 ) ) /學生角色則遷移到選課一覽頁面 response.sendRedirect( ./StLogin.jsp ); else if(sRole.equals(1) /教師角色則遷移到選課結果一覽頁面 response.sendRedirect( ./TcLogin.jsp ); else if(sRole.equals(2) response.sendRedirect( ./AdLogin.jsp ); return; /如果用戶非法進入這個頁面 else response.sendRedirect(./AllLogin.jsp); return; public void doPost ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException doGet( request, response ); private String getUserRealname(String sUserid, String sPassword, String sRole) /獲得數(shù)據庫連接 Connection con = this.getDBConnection(); if ( con = null ) return null; Statement stm = null; ResultSet rs = null; String sql = null; String name=null; if(sRole.equals(0) sql = select * from Student where st_id= + sUserid + + and st_pwd= + sPassword + ; name=st_name; else if(sRole.equals(1) sql =new String( select * from Teacher where tc_id= + sUserid + and tc_pwd= + sPassword+ ); name=tc_name; else if(sRole.equals(2) sql = select * from Administrator where ad_id= + sUserid + and ad_pwd= + sPassword+ ; name=ad_name; try stm = con.createStatement(); /執(zhí)行SQL語句 rs=stm.executeQuery(sql); String sRealname = null; if (rs.next() sRealname=rs.getString(name); mySession.setAttribute(resultset,rs); return sRealname; catch(Exception e) e.printStackTrace(); return null; finally try rs.close(); stm.close(); con.close(); catch(Exception ex) 2學生個人成績查詢界面通過本界面,學生可以查詢本人一學期內的課程成績。此模塊實現(xiàn)功能如下:package severlet;import java.io.IOException;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Vector;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class SetMark extends CommonConnection con=null;Statement stm = null; ResultSet rs = null; String sql = null; public SetMark()try con=this.getDBConnection();stm=con.createStatement(); catch (SQLException e) e.printStackTrace();/public void doGet ( HttpServletRequest request, HttpServletResponse response )throws ServletException, IOExceptionHttpSession mySession=null;request.setCharacterEncoding(gb2312);mySession = request.getSession(true);if ( !request.getParameterNames().hasMoreElements() )response.sendRedirect(./login.jsp);return;String username=(String) mySession.getAttribute(realname);String ccid=null; String page=(String) mySession.getAttribute(page); if(page.equals(TcCourseMark.jsp) ccid=request.getParameter(ccid); mySession.setAttribute(ccid, ccid); try sql=select * from ChooseCourse where cc_id=+ccid+ and cc_teacher=+username+;rs=stm.executeQuery(sql);if(rs.next()Vector students=this.getStudent(ccid); mySession.setAttribute(students,students);response.sendRedirect(./TcSetCourseMark.jsp); return;elseresponse.sendRedirect(./Error.jsp); return; catch (SQLException e) e.printStackTrace(); else if(page.equals(TcSetCourseMark.jsp) Vector students=(Vector) mySession.getAttribute(students); String ccid1=(String)mySession.getAttribute(ccid); for(int i=0;istudents.size();i+) Student st=(Student)students.get(i); String stid=st.getStid(); String mark=request.getParameter(stid); System.out.println(ccid1+stid+mark); this.InsertMark(ccid1, stid, mark); Vector students2=this.getStudent(ccid1); mySession.setAttribute(students,students2);response.sendRedirect(./TcSetCourseMark.jsp); return; /public void InsertMark(String ccid,String stid,String mark)try sql=update tc+ccid+ set st_mark=+mark+ where st_id=+stid+;stm.executeUpdate(sql);sql=update st+stid+ set cc_mark=+mark+ where cc_id=+ccid+;stm.executeUpdate(sql); catch (SQLException e)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 往年經濟法試題及答案
- 系統(tǒng)架構設計師項目成功標準試題及答案
- 明確復習方向的護士資格證考試試題及答案
- 考試周期2025年計算機二級考試試題及答案
- 我與地壇節(jié)選試題及答案
- 系統(tǒng)架構設計師考試創(chuàng)新設計的方法與案例試題及答案
- 深入理解2024年系統(tǒng)規(guī)劃與管理師考試內容試題及答案
- 系統(tǒng)架構設計師考試相關工具使用試題及答案
- 藥物潛在風險的識別與評估試題及答案
- 文化產業(yè)管理證書考試內容全面
- 工程結構檢測鑒定與加固第1章工程結構檢測鑒定與加固概論課件
- 立體構成概述課件完整版
- 滬教牛津版小學三至六年級英語單詞表
- 采購談判的技巧案例
- 質量整改通知單(樣板)
- 公司董事會會議臺賬
- 西門子仿真數(shù)據與流程管理平臺介紹
- 短視頻:策劃+拍攝+制作+運營課件(完整版)
- 專業(yè)稅務顧問業(yè)務報告
- 2021-2022學年福建省廈門市第一中學高二下學期期中生物試題(原卷版)
- 學生宿舍樓建筑與結構設計畢業(yè)設計計算書
評論
0/150
提交評論