數(shù)據(jù)庫課程設計說明書_第1頁
數(shù)據(jù)庫課程設計說明書_第2頁
數(shù)據(jù)庫課程設計說明書_第3頁
數(shù)據(jù)庫課程設計說明書_第4頁
數(shù)據(jù)庫課程設計說明書_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、華南理工大學廣州學院2015-2016學年度第一學期   課程名稱: 數(shù)據(jù)庫課程設計 項目題目:基于 Java EE的宿舍信息系統(tǒng)管理子模塊專業(yè)班級: 軟件工程4班 年級: 2013級 姓名: 學號: 201330098 13目錄一、 概述1. 開發(fā)環(huán)境及安裝配置 32. 項目需求分析 4二、 程序概要設計1. 程序功能模塊 42. 程序流程 53. 程序文件結構分析 64. 數(shù)據(jù)庫設計 7三、 程序詳細設計1. 關鍵代碼分析 72. 設計疑難問題解析 9四、 程序發(fā)布和測試 10五、 程序優(yōu)點和不足 12六、 參考目錄 13一、 概述1、開發(fā)環(huán)境 開發(fā)環(huán)境:wi

2、ndows 8.1作為開發(fā)平臺,用Struts2和Hibernate結構整合開發(fā)硬件配置:操作系統(tǒng) Microsoft Windows 8.1 (64位/Service Pack 1)CPU (英特爾)Intel(R) Core(TM) i5-4278U CPU 2.60GHz(2601 MHz)主板 蘋果 Mac-189A3D4F975D5FFC內存 8.00 GB ( 1600 MHz)主硬盤 250 GB ( S1K4NYBF784144 已使用時間: 431小時)顯卡 Intel(R) Iris(TM) Graphics 5100 (2112 MB)顯示器 蘋果 Color LCD 3

3、2位真彩色 60Hz聲卡 Cirrus Logic CS4208 (AB 93)網(wǎng)卡 Broadcom 802.11ac Network Adapter開發(fā)服務器:Tomcat開發(fā)工具:MyEclipse數(shù)據(jù)庫管理系統(tǒng):Microsoft SQL Server 2008 安裝配置、安裝JDK,配置系統(tǒng)變量path和classpath,用于Java標準編程。、安裝tomcat,Web服務器用于調試運行web項目。、安裝MyEclipse,集成開發(fā)環(huán)境,用于編碼和調試項目。、在MyEclipse中進行JDK和tomcat的配置。Hibernate和Struts2的整合流程1) 建立數(shù)據(jù)庫和數(shù)據(jù)表2

4、) 在Myeclipse的database explorer中創(chuàng)建SQL Server數(shù)據(jù)庫連接3) 創(chuàng)建Java web項目4) 右擊項目文件夾,在Myeclipse右鍵菜單中選擇“添加Hibernate開發(fā)能力”,先選擇所需要的類庫,然后單擊next,創(chuàng)建Hibernate配置文件Hibernate.cfg.xml放在src文件夾下,接著選擇數(shù)據(jù)庫連接,接著創(chuàng)建SessionFactory類,放在一個用戶自定義的包中。此步驟添加了Hibernate類庫,創(chuàng)建了一個配置文件和一個java類。5) 打開步驟2)中配置好的數(shù)據(jù)庫連接,找到要操作的數(shù)據(jù)表,右鍵選擇“Hibernate Revers

5、e Engineering”(Hibernate逆向工程),按照向導生成和數(shù)據(jù)表對應的Java類POJO以及對應的映射文件,Java類默認放在model包中,映射文件和Java類在同一個包中,映射文件的路徑信息被加入到Hibernate.cfg.xml配置文件。6) 創(chuàng)建Dao類,使用Hibernate功能去訪問數(shù)據(jù)庫。7) 為項目導入struts2的核心類庫8) 在web.xml文件中配置過濾器FilterDispatcher9) 編寫JSP頁面10) 編寫Action類,重載類中的excute方法,在Action的方法中調用Dao類的方法訪問數(shù)據(jù)庫。11) 新建struts.xml文件,配

6、置action及其result信息。12) 把項目發(fā)布到服務器,啟動tomcat,運行調試2、項目的需求分析學生住在宿舍樓中,每棟宿舍樓都會有若干名宿舍管理員負責本宿舍樓的日常管理。在管理宿舍時都會遇到以下需求:一、學生的基本信息:入校時,每位同學都有唯一的學號,并被分配到指定的宿舍樓和指定的宿舍,也會有一個宿舍號,其入校時間就是他的入住時間。另外,為了管理上的方便,同一院系的學生的宿舍一般在一起,相應地會有其所在的院系名稱。二、宿舍的基本信息:學校宿舍樓眾多,每棟宿舍樓的每間宿舍都有唯一的宿舍號。三、宿舍信息管理:除了每棟宿舍的宿舍管理員外學校生活注意負責部門則要對宿舍樓和宿舍號進行分配管理

7、,方便信息的查詢。四、宿舍財產的基本信息:每個宿舍的財產屬于學校,比如電燈,床鋪,柜子,桌椅等,為了對不同的財產進行區(qū)分,可以為每種財產分配不同的財產號。這樣有利于財產的報修和管理。五、違紀的基本信息:宿舍樓在指定的時間關門,若有同學晚于關門時間會宿舍,需通知宿舍樓管理員,同時應登記晚歸學生姓名,宿舍號和晚歸原因,以利于學校的管理。在這個需求下我設計了基于 Java EE的宿舍信息系統(tǒng)管理子模塊,用于記錄學生信息,宿舍樓信息以及備注信息,方便學校的宿舍管理。二、 程序概要設計1.程序功能模塊1)超級管理員模塊:主要實現(xiàn)系統(tǒng)中宿舍樓號的添加和查詢,每棟宿舍樓中宿舍號的添加、修改、查詢和刪除,并且

8、擁有普通管理員的所有功能,可以對學生的宿舍信息進行添加、修改、查詢和刪除,包括學號、姓名、樓號、宿舍號、專業(yè)以及備注信息,備注信息用于登記學生宿舍的財物情況以及違規(guī)情況。超級管理員需要賬號登陸,已設定賬號為:superuser 密碼為:superuser,不能另外進行超級管理員賬號的注冊。2)普通管理員模塊:可以對學生的宿舍信息進行添加、修改、查詢和刪除,包括學號、姓名、樓號、宿舍號、專業(yè)以及備注信息,備注信息用于登記學生宿舍的財物情況以及違規(guī)情況。超級管理員需要賬號登陸,已設定賬號為: user 密碼為: user,普通管理員的賬號可以進行注冊登記。3)普通用戶模塊:普通用戶(游客)無需進行

9、登陸既可以進入系統(tǒng),但只能進行學生宿舍信息的查詢2.程序流程宿舍管理系統(tǒng)直接進入登陸登陸,注冊學號姓名樓號宿舍號專業(yè)備注學號姓名樓號宿舍號專業(yè)備注學號姓名樓號宿舍號專業(yè)備注添加,刪除,修改,查詢添加,修改,查詢添加,查詢樓號樓號宿舍號添加,刪除,修改,查詢查詢學生信息學生信息學生信息宿舍信息宿舍樓信息普通管理員普通用戶(游客)超級管理員3.程序文件結構分析Org.action包里包含了Struts2框架的Action類,用于處理事務。還包含了Login(登陸)和Register(注冊)兩個Action類的數(shù)據(jù)驗證校驗器(最后兩個)。Org.dao包里面包含了數(shù)據(jù)庫的Dao類,用于處理數(shù)據(jù)庫的增

10、刪改查事務。Org.model包用來存放與數(shù)據(jù)庫表對應的Java類,即POJO類。還有數(shù)據(jù)庫表的映射文件。org.til包用于存放HibernateSessionFactory工廠類。hibernate和struts2框架的配置文件WebRoot文件夾中存放了所有的jsp頁面文件,其中的image文件夾用于存放圖片文件。4.數(shù)據(jù)庫設計數(shù)據(jù)庫中一共有五個表,Lh表用于存放宿舍樓號Normaluser表用于存放普通管理員的賬號密碼信息SSh表用于存放宿舍號信息Student表用于存放學生信息Superuser表用于存放超級管理員的賬號密碼信息Lh表LhNormaluser表UidUsernameP

11、asswordSSh表IdLhSShStudent表IdXhXmLhSshZyBZSuperuser表UidUsernamePasswordLh表:lh(樓號)(主鍵)Normaluser表:uid(自增主鍵),username(賬號),password(密碼)Ssh表:id(自增主鍵),Lh(樓號),Ssh(宿舍號)Student表:id(自增主鍵),Xh(學號),Xm(姓名),Lh(樓號),SSh(宿舍號),Zy(專業(yè)),Bz(備注)。Superuser表:uid(自增主鍵),username(賬號),password(密碼)三、程序詳細設計1.關鍵代碼分析(1)登陸方法:LoginAct

12、ion的execute自動執(zhí)行方法public String execute() throws Exception if(power.equals("1")Map session = (Map)ActionContext.getContext().getSession();Normaluser shi = NormaluserDao.checkDlb(username,password);if(shi=null)return "error"elsesession.put("user", shi);return "user&q

13、uot;Power是從登陸界面的單選按鈕獲得的數(shù)據(jù)變量,當值為1時,即是普通管理員按鈕被選中,利用if語句判定后調用NormaluserDao類中的checkDlb方法,把獲得的賬號密碼傳過去進行判定,遍歷普通用戶Normaluser表后如果返回值不為空即登陸驗證通過返回“user”,由Sturts.xml跳轉到普通管理員界面,超級管理員的power值為2,執(zhí)行方法相同,普通用戶直接點擊我是游客按鈕即可直接登陸到游客界面。(2)添加信息方法:以AddAction類為例public String execute() throws Exception trySession session=org.

14、util.HibernateSessionFactory.getSession();Transaction ts=session.beginTransaction();session.save(xs);mit();HibernateSessionFactory.closeSession();return "success"catch(Exception e)e.printStackTrace();return "error"創(chuàng)建Student類的xs對象,利用get、set方法從添加學生信息界面獲取xs對象的值,利用hibernate自動處理添加事務,調

15、用session.save方法存儲。(3)刪除信息方法:try Session session=org.util.HibernateSessionFactory.getSession();Transaction ts=session.beginTransaction();Query query=session.createQuery("from Student where xh=?");query.setParameter(0,xh);List list=query.list();if(list!=null&&list.size()!=0)Student x

16、s1=(Student)list.get(0);session.delete(xs1);mit();return true;HibernateSessionFactory.closeSession();Xh為該方法的形參,調用hql語句利用學號查找學生信息表中的相關信息,遍歷后判定時候查找到,利用hibernate自動處理刪除事務,調用session.delete方法刪除。(4)修改信息方法:NormaluserDao xsb=new NormaluserDao();Student stu=new Student();Map session=(Map)ActionContext.getCont

17、ext().getSession();Student a=(Student)session.get("xgxs");a.setXh(xsxh);a.setXm(xsxm);a.setLh(xslh);a.setSsh(xsssh);a.setZy(xszy);a.setBz(xsbz);trySession session1=org.util.HibernateSessionFactory.getSession();Transaction ts=session1.beginTransaction();session1.update(a);mit();HibernateSes

18、sionFactory.closeSession();return "success"利用get、set方法取得頁面的修改后的學生信息然后利用Student 對象a的set方法重寫信息,a對象是由點擊修改頁面時已經(jīng)存儲到session中的Student類xgxs對象賦值,即是先從點擊修改的頁面獲得該項信息的對象,然后放到session中,再到這里調用出存儲到a對象中,然后利用hibernate自動處理更改事務,調用session.update方法修改。(5)查詢信息方法:public static Student getOneXs(String xh) trySession

19、 session=HibernateSessionFactory.getSession();Transaction ts=session.beginTransaction();Query query=session.createQuery("from Student where xh=?");query.setParameter(0, xh);query.setMaxResults(1);Student xs=(Student) query.uniqueResult();mit();session.clear();return xs;利用xh對Student進行hql語句查

20、詢,遍歷后把得到的對象存放到Student對象xs中,返回xs參數(shù),在jsp頁面顯示出xs參數(shù)的信息。2.設計疑難問題解析(1)設計到修改信息部分時,程序經(jīng)常出錯,hibernate返回錯誤信息沒有獲得主鍵的修改值,我的數(shù)據(jù)庫主鍵是設置了主鍵自增的,就很奇怪為什么還要修改主鍵,后來經(jīng)過上網(wǎng)研究,發(fā)現(xiàn)是自己在設置主鍵生成策略時忘記把映射文件設置為identity類型,這樣程序會讓數(shù)據(jù)庫進行主鍵自增,之前一直是默認的設置了assigned類型由用戶自己設置。(2)還是設計修改信息部分時,經(jīng)過前一步修改后數(shù)據(jù)庫已經(jīng)沒有出錯,但是我在調用update方法自動處理修改事務時還是出錯,原因是因為我一直把接

21、收到的信息存到一個新的對象中,然后進行update操作,數(shù)據(jù)庫里面沒有這個記錄所以一直報錯,后來經(jīng)過重復查看代碼發(fā)現(xiàn)我應該先把要修改的那一項存儲起來,再經(jīng)過賦值然后再放進update方法中進行修改。(3)登錄界面的設計,在判定單選按鈕信息中思考了一段時間,后來經(jīng)過考慮決定把不同的登錄用戶權限登錄到不同的界面。原本的設計是打算在同一個界面完成。(4)在添加宿舍號信息時要使用struts2的下拉列表來顯示數(shù)據(jù)庫中已經(jīng)存在的樓號,這一部分花了很多時間,因為一開始不知道怎樣把動態(tài)的數(shù)據(jù)庫數(shù)據(jù)存放到struts2下拉列表中,后來經(jīng)過上網(wǎng)進行查詢,利用HashMap map 對象在jsp頁面上存放查找到的

22、樓號信息,然后動態(tài)遍歷到下拉標簽中,雖然已經(jīng)實現(xiàn),但是還是不是很了解。四、 程序發(fā)布和測試登陸界面:注冊界面:注冊成功會彈框顯示校驗器:分別判定用戶和密碼是否為空,否則不能登陸普通管理員界面:分為三個部分左下邊控制調用那個功能右下邊負責顯示界面查看所有學生信息界面:可以直接點擊修改或者刪除連接對指定的信息行進行相關操作添加學生信息界面添加成功會有彈框提示查詢學生信息界面可分別對學號和姓名進行查詢查詢成功界面查詢成功后可以直接對該信息行做修改或者刪除比較方便超級管理員界面添加宿舍樓號信息界面添加對應樓號的宿舍號信息界面上面提到的動態(tài)分配下拉列表顯示宿舍信息界面修改或者刪除都有彈框提示而且普通用戶(游客)的登錄界面可以進行查詢操作,相對的修改刪除連接已經(jīng)刪除五、程序優(yōu)點和不足優(yōu)點:(1)整個系統(tǒng)做相關操作或者改動都會有彈框提示或者校驗器提示,例如登錄失敗時會提示你這樣的提示比較人性化,對于不了解系統(tǒng)的用戶會有比較強的適應性。(2)系統(tǒng)特意把各個登錄界面都放在同一個界面顯示,而不是每次都跳轉頁面,減少了等待時間和使用戶不會感到經(jīng)常跳轉而厭煩。(3)系統(tǒng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論