基于MVC模式的學(xué)生成績管理系統(tǒng)_第1頁
基于MVC模式的學(xué)生成績管理系統(tǒng)_第2頁
基于MVC模式的學(xué)生成績管理系統(tǒng)_第3頁
基于MVC模式的學(xué)生成績管理系統(tǒng)_第4頁
基于MVC模式的學(xué)生成績管理系統(tǒng)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄TOC o 1-5 h z HYPERLINK l bookmark2 o Current Document 第1章概述1 HYPERLINK l bookmark4 o Current Document 系統(tǒng)目的和意義1 HYPERLINK l bookmark6 o Current Document 系統(tǒng)開發(fā)環(huán)境1 HYPERLINK l bookmark8 o Current Document 系統(tǒng)開發(fā)模式及基本功能1 HYPERLINK l bookmark10 o Current Document 第2章系統(tǒng)設(shè)計3 HYPERLINK l bookmark12 o Current

2、 Document 系統(tǒng)的模塊劃分3 HYPERLINK l bookmark14 o Current Document 數(shù)據(jù)庫設(shè)計3 HYPERLINK l bookmark16 o Current Document 第3章系統(tǒng)的詳細設(shè)計及實現(xiàn)6 HYPERLINK l bookmark18 o Current Document 3.1數(shù)據(jù)庫底層訪問類6 HYPERLINK l bookmark20 o Current Document 登錄模塊9 HYPERLINK l bookmark22 o Current Document 系統(tǒng)首頁面導(dǎo)航11 HYPERLINK l bookmark

3、24 o Current Document 學(xué)生信息管理12 HYPERLINK l bookmark26 o Current Document 課程信息管理19 HYPERLINK l bookmark34 o Current Document 學(xué)生成績管理20結(jié)論22 HYPERLINK l bookmark44 o Current Document 參考文獻23 第1章概述系統(tǒng)目的和意義本次課程設(shè)計的題目是“基于MVC模式的學(xué)生成績管理系統(tǒng)”的設(shè)計與實現(xiàn),該設(shè)計是對本學(xué)期前八周所學(xué)的JSP程序設(shè)計課程的鞏固和深入應(yīng)用,同時結(jié)合Java語言、JSP技術(shù)進行Web程序設(shè)計,利用前面學(xué)過的知識

4、來解決實際問題,鍛煉解決問題的能力和動手編程的能力。鑒于近年來,企業(yè)級應(yīng)用系統(tǒng)大多數(shù)都部署到Web服務(wù)器上,早期的Web應(yīng)用程序開發(fā)技術(shù),已經(jīng)不能很好的勝任這個任務(wù),因此該課題項目可以提高學(xué)生對未來企業(yè)的適應(yīng)性,更好的理解軟件工程的意義。系統(tǒng)開發(fā)環(huán)境1本系統(tǒng)采用Browser/Server體系結(jié)構(gòu)。2系統(tǒng)開發(fā)環(huán)境1)開發(fā)平臺:MyEclipse5.5.1GA2)開發(fā)語言:JSP、Java3)數(shù)據(jù)庫:MicrosoftSQLServer20053系統(tǒng)運行環(huán)境客戶端:瀏覽器:IE6.0服務(wù)器端:數(shù)據(jù)庫:MicrosoftSQLServer2005應(yīng)用程序系統(tǒng)系統(tǒng)開發(fā)模式及基本功能本系統(tǒng)是基于MVC

5、模式設(shè)計和開發(fā)的,MVC(Model-View-Controller)模式是一個應(yīng)用的輸入、處理、輸出流程按照Model、View、Controller的方式進行分離,這樣一個應(yīng)用被分成三層一一模型層、視圖層、控制層。MVC是一種軟件設(shè)計典范,用于組織代碼用一種業(yè)務(wù)邏輯和數(shù)據(jù)顯示分離的方法,這個方法的假設(shè)前提是如果業(yè)務(wù)邏輯被聚集到一個部件里面,而且界面和用戶圍繞數(shù)據(jù)的交互能被改進和個性化定制而不需要重新編寫業(yè)務(wù)邏輯MVC被獨特的發(fā)展起來用于映射傳統(tǒng)的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結(jié)構(gòu)中?;贛VC模式的學(xué)生成績管理系統(tǒng)主要實現(xiàn)前臺和后臺兩部分功能設(shè)計,其中前臺主要實現(xiàn)按照學(xué)生

6、信息、課程信息和成績信息進行瀏覽和查詢功能,后臺主要實現(xiàn)學(xué)生信息管理、課程信息管理和學(xué)生成績管理功能。在學(xué)生成績管理模塊中,管理員可以查詢、瀏覽已提交成績與未提交成績的課程,對于相應(yīng)的課程,可以逐條刪除或批量刪除或修改已提交的成績信息,教師可以對未提交成績進行成績錄入,學(xué)生只能夠查詢?yōu)g覽自己的已提交成績。所有的查詢?yōu)g覽功能均實現(xiàn)了分頁功能。第2章系統(tǒng)設(shè)計系統(tǒng)的模塊劃分學(xué)生成績管理系統(tǒng)可實現(xiàn)學(xué)生成績管理功能,管理員可以對學(xué)生信息和課程信息進行查詢、增加、刪除、修改。教師可以對學(xué)生成績進行錄入。學(xué)生可以對自己的成績進行查詢。1、學(xué)生信息管理模塊管理員可以對學(xué)生的信息進行查詢、增加、刪除、修改,可以

7、批量刪除。2、課程信息管理模塊管理員可以對課程的信息進行查詢、增加、刪除、修改,可以批量刪除。3、學(xué)生成績管理模塊教師可以對成績信息進行錄入。成績可批量增加。系統(tǒng)功能模塊圖如圖2-1所示。增加學(xué)生信息刪除學(xué)生信息修改學(xué)生信息查詢學(xué)生信息增加課程信息刪除課程信息修改課程信息查詢課程信息錄入學(xué)生成績查詢個人成績修改學(xué)生成績圖2-1系統(tǒng)功能模塊圖數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫管理系統(tǒng)是允許用戶在計算機上創(chuàng)建數(shù)據(jù)庫,增加、修改、刪除、排序和檢索數(shù)據(jù)庫中的數(shù)據(jù),并使用數(shù)據(jù)庫中的數(shù)據(jù)創(chuàng)建表格和報表的軟件系統(tǒng)。數(shù)據(jù)庫的設(shè)計是整個系統(tǒng)成敗的一個重要環(huán)節(jié)。合理的數(shù)據(jù)庫設(shè)計能夠給系統(tǒng)帶來很好的效率。而且能夠使得各個功能模塊的設(shè)

8、計變得非常簡單而且模塊間的關(guān)系特別明確本系統(tǒng)的數(shù)據(jù)庫是在SQLServer2005中創(chuàng)建的。經(jīng)過需求分析和初步設(shè)計,學(xué)生成績管理系統(tǒng)數(shù)據(jù)庫部分主要包含5個表,分別是學(xué)生信息表、教師信息表、用戶信息表、課程信息表和成績信息表表的結(jié)構(gòu)、表字段的數(shù)據(jù)類型及相關(guān)說明如下:1、學(xué)生信息表學(xué)生信息表包含了學(xué)生的學(xué)號、姓名、性別、出生年月、專業(yè)以及班級信息,表2-1所示是學(xué)生信息表結(jié)構(gòu)。表2-1學(xué)生信息表列名說明數(shù)據(jù)類型約束studentld學(xué)號nchar(lO)主鍵studentName姓名nchar(lO)非空gender性別char(2)“男”或“女”birthday出生年月nchar(lO)depa

9、rtment院系nchar(lO)非空major專業(yè)nchar(lO)非空class班級nchar(lO)非空2、教師信息表教師信息表包含了教師的教工號、姓名、性別、出生年月、院系信息,表2-2所示是教師信息表結(jié)構(gòu)。表2-2教師信息表列名說明數(shù)據(jù)類型約束teacherId教工號nchar(lO)主鍵teacherName姓名nchar(lO)非空gender性別char(2)“男”或“女”birthday出生年月nchar(lO)department院系nchar(lO)非空3、用戶信息表用戶信息表包含了用戶的用戶名、密碼及角色信息。表2-3所示是用戶信息表結(jié)構(gòu)。表2-3用戶信息表列名說明數(shù)據(jù)

10、類型約束userName用戶名nchar(lO)主鍵password密碼nchar(10)非空actor角色nchar(10)非空4、課程信息表課程信息表包含了課程的課程號、課程名、開課時間、學(xué)分、考試性質(zhì)、開課專業(yè)及任課教師信息。表2-4所示是課程信息表結(jié)構(gòu)。表2-4課程信息表列名說明數(shù)據(jù)類型約束courseld課程號nchar(lO)主鍵courseName課程名nchar(lO)非空startTime開課時間nchar(lO)非空credit學(xué)分nchar(lO)非空character考試性質(zhì)nchar(lO)非空major開課專業(yè)nchar(lO)非空teacherId任課教師ncha

11、r(lO)非空5、成績信息表成績信息表包含了學(xué)生成績的學(xué)號、課程號、任課教師號、開課時間、及成績信息。表2-5所示是課程信息表結(jié)構(gòu)。表2-5成績信息表列名說明數(shù)據(jù)類型約束studentld學(xué)號nchar(lO)主鍵courseId課程號nchar(lO)主鍵teacherId任課教師號nchar(10)非空startTime開課時間nchar(10)非空Grade成績nchar(10)非空以上就是學(xué)生成績管理系統(tǒng)所需的數(shù)據(jù)表,按照這些表結(jié)構(gòu)設(shè)計,在MicrosoftSQLServer2005中創(chuàng)建數(shù)據(jù)庫GradeManage,并創(chuàng)建相應(yīng)的表。第3章系統(tǒng)的詳細設(shè)計及實現(xiàn)數(shù)據(jù)庫底層訪問類本系統(tǒng)的設(shè)

12、計使用基于Servlet的MVC架構(gòu)模式,將系統(tǒng)的各個功能的實現(xiàn)過程嚴格的劃分為視圖(View)、控制(Controller)、模型(Model),其中View負責(zé)界面的顯示,Controller負責(zé)請求的轉(zhuǎn)發(fā)和響應(yīng),Model負責(zé)邏輯業(yè)務(wù)對象實體和業(yè)務(wù)實體。由于本系統(tǒng)是一種信息管理系統(tǒng),在這三層之下,還要建立數(shù)據(jù)庫訪問層,該層完成數(shù)據(jù)庫的連接、SQL語句的具體執(zhí)行等操作。這一層由MVC模式中的Model層里的業(yè)務(wù)實體進行調(diào)用,從而完成邏輯業(yè)務(wù)的信息維護操作。3.1.1JDBC數(shù)據(jù)庫訪問技術(shù)JDBC(JavaDataBaseConnectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句

13、的JavaAPI,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。JDBC為工具/數(shù)據(jù)庫開發(fā)人員提供了一個標(biāo)準(zhǔn)的API,據(jù)此可以構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠用純JavaAPI編寫數(shù)據(jù)庫應(yīng)用程序。有了JDBC,向各種關(guān)系數(shù)據(jù)發(fā)送SQL語句就是一件很容易的事。換言之,有了JDBCAPI,就不必為訪問Sybase數(shù)據(jù)庫專門寫一個程序,為訪問Oracle數(shù)據(jù)庫又專門寫一個程序,或為訪問Informix數(shù)據(jù)庫又編寫另一個程序等等,程序員只需用JDBCAPI寫一個程序就夠了,它可向相應(yīng)數(shù)據(jù)庫發(fā)送SQL調(diào)用。同時,將Java語言和JDBC結(jié)合起來使程序員不必為不同

14、的平臺編寫不同的應(yīng)用程序,只須寫一遍程序就可以讓它在任何平臺上運行,這也是Java語言“編寫一次,處處運行”的優(yōu)勢。Java數(shù)據(jù)庫連接(JDBC)由一組用Java編程語言編寫的類和接口組成。JDBC為工具/數(shù)據(jù)庫開發(fā)人員提供了一個標(biāo)準(zhǔn)的API,使他們能夠用純JavaAPI來編寫數(shù)據(jù)庫應(yīng)用程序。然而各個開發(fā)商的接口并不完全相同,所以開發(fā)環(huán)境的變化會帶來一定的配置變化。本文主要集合了不同數(shù)據(jù)庫的連接方式。SQLSERVER連接方式:第一步:新建類DBManager.java第二步:導(dǎo)包操作第三步:編寫類代碼publicclassDBManager1、定義變量2、獲取連接方法getConnectio

15、n3、執(zhí)行查詢方法executeQuery或更新方法executeUpdate4、釋放資源的方法releaseSource然后把sqljdbc.jar導(dǎo)入到項目文件下的WEB-INF下的lib文件夾中。添加DBManager公共類首先創(chuàng)建包nepu.tools,在該包下創(chuàng)建名為DBManager的類,該類得職責(zé)用于提供訪問、操作數(shù)據(jù)庫的公共方法。添加公共類的方法和步驟如下:在工程中的包名上點右鍵,選擇【New】-【Class】菜單項,將彈出【NewJavaClass】對話框,保留默認的選擇,在Name文本框中輸入DBManager,點擊Finsih按鈕。編寫公共方法3.1.2小節(jié)為項目添加了一

16、個DBManager類,該類用于存放連接、操作數(shù)據(jù)庫的公共方法,本小節(jié)介紹如何編寫這些公共方法。首先為DBManager類聲明幾個公共變量,其中conn為數(shù)據(jù)庫連接對象,stmt用于發(fā)送SQL語句、接收SQL的執(zhí)行結(jié)果,rs為執(zhí)行查詢語句得到的結(jié)果集,uri表示要連接的數(shù)據(jù)庫的路徑,根據(jù)數(shù)據(jù)庫不同變化,user為登錄數(shù)據(jù)庫的用戶名,password為登錄數(shù)據(jù)庫的密碼。該類的變量聲明代碼如下:privateStringuri=jdbc:sqlserver:/localhost:1433;DatabaseName=GradeManage;privateStringuser=sa;privateSt

17、ringpassword=123456;privateConnectionconn=null;privateStatementstmt=null;privateResultSetrs=null;1、數(shù)據(jù)庫連接方法getConnection()該方法首先要在程序中加載驅(qū)動,Class是包java.lang中的一個類,該類調(diào)用靜態(tài)方法forName可以加載驅(qū)動,該方法拋ClassNotFoundException異常,因此需要捕獲異常。DriverManager類用于處理驅(qū)動的調(diào)入并且對產(chǎn)生新的數(shù)據(jù)庫連接,使用DriverManager類的方法getConnection創(chuàng)建連接對象,參數(shù)依次為前面

18、定義好的三個變量uri、user和password,變量conn獲取了數(shù)據(jù)庫連接對象。getConnection方法的關(guān)鍵代碼如下:publicConnectiongetConnection()tryClass.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);conn=DriverManager.getConnection(uri,user,password);if(conn!=null)System.out.println(數(shù)據(jù)庫鏈接獲取成功);catch(ClassNotFoundExceptione)System.out.pri

19、ntln(”驅(qū)動程序加載異常);catch(SQLExceptione)System.out.println(”獲取連接異常);e.printStackTrace();/打印堆棧跟蹤returnconn;2、數(shù)據(jù)庫查詢方法executeQuery()該方法首先要調(diào)用Connection對象的createStatement方法,用來實例化Statement對象,然后用這個對象執(zhí)行SQL查詢語句,結(jié)果返回為ResultSet型的結(jié)果集,該方法拋SQLException異常。executeQuery方法的關(guān)鍵代碼如下:publicResultSetexecuteQuery(Stringsql)try

20、stmt=conn.createStatement();rs=stmt.executeQuery(sql);catch(SQLExceptione)System.out.println(SQL執(zhí)行錯誤);e.printStackTrace();/打印堆棧跟蹤returnrs;3、數(shù)據(jù)庫增刪改的操作方法executeUpdate()該方法首先要聲明一個整形變量count,用來記錄執(zhí)行更新操作后影響數(shù)據(jù)庫的條數(shù),然后調(diào)用Connection對象的createStatement方法,用來實例化Statement對象,然后用這個對象執(zhí)行SQL更新語句,可以是修改語句、刪除語句或者插入語句,結(jié)果返回為i

21、nt型的數(shù)字,表示數(shù)據(jù)庫中受影響的行數(shù),該方法拋SQLException異常。executeUpdate方法的關(guān)鍵代碼如下:publicintexecuteUpdate(Stringsql)intcount=0;trystmt=conn.createStatement();count=stmt.executeUpdate(sql);catch(SQLExceptione)System.out.println(SQL執(zhí)行錯誤);e.printStackTrace();/打印堆棧跟蹤returncount;登錄模塊登錄是每一個成功項目中不可缺少的模塊,好的登錄模塊可以保證系統(tǒng)的可靠性和安全性。本節(jié)

22、首先嚴格按照MVC架構(gòu)模式為學(xué)生成績管理系統(tǒng)制作了一個簡單的登錄模塊,登錄成功后,應(yīng)當(dāng)進入該系統(tǒng)的管理系統(tǒng),因此本節(jié)還詳細介紹了主窗體的設(shè)計。按照MVC模式進行構(gòu)建登錄功能的開發(fā),對該模塊的文件構(gòu)建說明如下Model層:在nepu.model包中添加用戶的實體Javabean,類名為User。在nepu.DAO中添加業(yè)務(wù)Javabean,類名為UserDAO。其中User類包含2個屬性,分別是姓名和密碼,同時在該類中添加屬性的set、get方法,User類的屬性定義部分代碼如下:publicclassUserprivateStringuserName=;/用戶名privateStringpas

23、sword=;/密碼Ctroller層:在nepu.servlet中添加類UserServlet,該servlet主要負責(zé)參數(shù)的接收以及用戶相關(guān)操作的流程控制,例如,用戶登錄功能。View層:在Webroot/Admin文件夾下添加名為login.jsp的JSP文件。View層構(gòu)建首先在MyEclipse的項目的WebRoot目錄中建立admin文件夾,在其下建立JSP頁面,在該頁面中編寫表單代碼,其中注意表單的action屬性為該表單信息提交的服務(wù)端URL地址,method屬性為提交方式。在這里由于是按照MVC模式,將信息提交給Servlet,因此method必須post。同時為避免復(fù)雜的U

24、RL的路徑邏輯關(guān)系,統(tǒng)一使用絕對路徑。圖3-1登錄界面設(shè)計Model層構(gòu)建在業(yè)務(wù)Javabean類UserDAO中建立方法login(),該方法的主要功能是判斷用戶是否存在,并且密碼是否正確,該方法需要接收由servlet傳遞過來2個參數(shù),一個是用戶名userName,另一個是密碼password,調(diào)用DBManger數(shù)據(jù)庫底層操作類的executeQuery()方法實現(xiàn)sql查詢,sql語句如下:Stringsql=select*fromtb_userwhereuserName=+userName+andpassword=+password+;執(zhí)行該sql語句后,將返回一個結(jié)果集Result

25、Set,判斷該結(jié)果集中的記錄的條數(shù),并使用變量rowCount記錄,如果rowCount的值大于0,則表示用戶存在,登錄成功,返回一個布爾類型的值true,否則返回false。獲取結(jié)果集后方法的核心代碼如下:ResultSetrs=dbManager.executeQuery(sql);trywhile(rs.next()rowCount+;if(rowCount0)flag=true;Controller層構(gòu)建在UserServlet添加方法Login(),在該方法中完成登錄的邏輯判斷。首先需要通過方法request.getParameter()來接收由Login.jsp頁面?zhèn)鬟f過來的參數(shù)u

26、serName和password,在進行必要的參數(shù)轉(zhuǎn)碼或合法性判定后調(diào)用Model層的業(yè)務(wù)javaBeanUserDAO的登錄方法實現(xiàn)登錄判定,登錄成功后需要注意將用戶名用session進行存儲,這樣,在用戶多次請求和響應(yīng)之后都可以由session中取出用戶名展示或判斷用戶是否登錄。最后,在servlet中使用response.sendRedirect()方法跳轉(zhuǎn)到管理后臺的首頁面。UserServelt中的Login()方法關(guān)鍵代碼如下:Stringname=request.getParameter(userName);Stringpassword=request.getParameter(

27、password);UserDAOuserDAO=newUserDAO();if(userDAO.login(name,password)HttpSessionsession=request.getSession();session.setAttribute(userName,userName);response.sendRedirect(admin/AdminIndex.jsp);3.3系統(tǒng)首頁面導(dǎo)航整個學(xué)生成績管理系統(tǒng)的界面設(shè)計是左側(cè)導(dǎo)航的結(jié)構(gòu),如圖3-2所示,系統(tǒng)幾乎所有的jsp頁面都具有大致類似的頁面結(jié)構(gòu)和風(fēng)格,例如,相同的頁面頭部、左側(cè)導(dǎo)航和頁腳,因此,為了頁面編碼的方便和代碼的可重

28、用性,系統(tǒng)設(shè)計了一些公用的頁面文件,主要包括AdminEnd.jsp、AdminTop.jsp、AdminLeft.jsp,其他的頁面如后臺管理的首頁面AdminIndex.jsp則直接通過include指令標(biāo)記將AdminEnd.jsp、AdminTop.jsp、AdminLeft.jsp包含到自身頁面的相應(yīng)位置即可,這樣,編碼工作將主要集中在左側(cè)導(dǎo)航AdminLeft.jsp和AdminIndex.jsp頁面。其他新增的功能頁面的設(shè)計思路類似,在這里就不再贅述了。AdminIndex.jsp界面的瀏覽效果如圖3-2所示:短船jT轂叮眥.學(xué)生俑凰:*汨:沖匸且All匚叩艸jghrmri-Hl

29、20L:不北石醮學(xué)軼怦爭民圖3-2后臺管理首頁面瀏覽效果3.4學(xué)生信息管理本節(jié)首先嚴格按照MVC架構(gòu)模式制作了一個學(xué)生信息管理模塊。按照MVC模式進行構(gòu)建登錄功能的開發(fā),對該模塊的文件構(gòu)建說明如下(1)Model層:在nepu.model包中添加用戶的實體Javabean,類名為Student。在nepu.DAO中添加業(yè)務(wù)Javabean,類名為StudentDAO。其中Student類包含7個屬性,分別是ID、姓名、性別、生日、院系、專業(yè)和班級,同時在該類中添加屬性的set、get方法,Student類的屬性定義部分代碼如下:publicclassStudentprivateStringst

30、udentId=;學(xué)生IDprivateStringstudentName=;學(xué)生姓名privateStringgender=;學(xué)生性別privateStringbirthday;學(xué)生牛日privateStringdepartment;學(xué)生院系privateStringmajor=;學(xué)生專業(yè)privateStringstudentClass=;學(xué)生班級(2)Ctroller層:在nepu.servlet中添加類StudentServlet,該servlet主要負責(zé)學(xué)生信息管理。(3)View層:在Webroot/Admin文件夾下添加名為AddStudent.jsp、StudentList.j

31、sp、UpdateStudent.jsp三個JSP頁面。3.4.1增加學(xué)生信息1、View層構(gòu)建用于添加學(xué)生信息的AddStudent.jsp設(shè)計如圖3-3所示,輸入學(xué)生編號,姓名,性別,生日,所在院系、專業(yè)和班級。點擊提交按鈕,即可完成學(xué)生信息的添加。紅1C-Fi中泌怙SIS圖3-3學(xué)生信息添加頁面瀏覽效果2、Model層構(gòu)建在業(yè)務(wù)Javabean的StudentDAO中添加方法addStudent(),該方法能夠根據(jù)傳來的參數(shù)生成sql語句,借助DBManager類來進行實現(xiàn)添加功能,此sql語句是插入有表單提交的學(xué)生的基本信息,sql語句為:Stringsql=insertintostu

32、dentvalues(+student.getStudentId()+,+student.getStudentName()+,+student.getGender()+,+student.getBirthday()+,+student.getDepartment()+,+student.getMajor()+,+student.getStudentClass()+);實例化db來執(zhí)行executeUpdate(sql)方法。執(zhí)行sql語句。DBManagerdb=newDBManager();intcount=db.executeUpdate(sql);if(count0)flag=true;

33、db.releaseSource();returnflag;3、Controller層構(gòu)建在StudentServlet中,負責(zé)學(xué)生信息的添加與維護。為StudentServlet添加方法doAddStudent(),在該方法中完成學(xué)生信息的添加。該方法的代碼主要是接收參數(shù),包括學(xué)生編號,姓名,性別,生日,所在院系、專業(yè)和班級。StringstudentId=request.getParameter(studentId);StringstudentName=request.getParameter(studentName);studentName=newString(studentName.g

34、etBytes(ISO-8859-1),GB2312);Stringgender=request.getParameter(gender);gender=newString(gender.getBytes(ISO-8859-1),GB2312);Stringyear=request.getParameter(year);Stringmonth=request.getParameter(month);Stringbirthday=year+month;Stringdepartment=request.getParameter(department);department=newString(de

35、partment.getBytes(ISO-8859-1),GB2312);System.out.println(addstudentdepartment=+department);Stringmajor=request.getParameter(major);major=newString(major.getBytes(ISO-8859-1),GB2312);System.out.println(addstudentmajor=+major);StringstudentClass=request.getParameter(studentClass);studentClass=newStrin

36、g(studentClass.getBytes(ISO-8859-1),GB2312);實例化StudentDAO,來執(zhí)行addStudent()方法,進行添加學(xué)生的信息,并判斷及處理各種添加異常。最后將信息封裝,代碼如下:tryintstudentId2=Integer.parseInt(studentId);student.setStudentId(studentId);student.setStudentName(studentName);student.setGender(gender);student.setBirthday(birthday);student.setDepartme

37、nt(department);student.setMajor(major);student.setStudentClass(studentClass);StudentDAOstudentDAO=newStudentDAO();if(studentName.equals()request.setAttribute(message,姓名不能為空!);RequestDispatcherrd=request.getRequestDispatcher(Admin/AddStudent.jsp);rd.forward(request,response);elseif(department.equals(

38、)request.setAttribute(message,請選擇院系!);RequestDispatcherrd=request.getRequestDispatcher(Admin/AddStudent.jsp);rd.forward(request,response);elseif(studentDAO.addStudent(student)request.setAttribute(message,添加學(xué)生成功!);this.doQueryStudent(request,response);elserequest.setAttribute(message,添加失敗!學(xué)生學(xué)號已存在!);R

39、equestDispatcherrd=request.getRequestDispatcher(Admin/AddStudent.jsp);rd.forward(request,response);catch(Exceptione)request.setAttribute(message,學(xué)號必須為數(shù)字!);傳參并跳轉(zhuǎn)頁面,代碼如下:RequestDispatcherrd=request.getRequestDispatcher(Admin/AddStudent.jsp);rd.forward(request,response);3.4.2修改學(xué)生信息1、View層構(gòu)建用于修改學(xué)生信息的Upd

40、ateStudent.jsp設(shè)計如圖3-4所示,更改學(xué)生編號,姓名,性別,生日,所在院系、專業(yè)和班級。點擊修改按鈕,即可完成學(xué)生信息的修改。I+-IU:|:畑i箕眾加JSi盲息學(xué)號DD1瑋可修茂王三H別.If-T?L19JOL1390巧年P(guān)b月聊腰糸.W=:幣-舷澤v_-諂近悻Vaf飯JEflIlf*All“pFLishWrai-uvi-12DJ2油人學(xué)駐啓學(xué)院圖3-4學(xué)生信息修改頁面瀏覽效果2、Model層構(gòu)建在業(yè)務(wù)Javabean的StudentDAO中添加方法updateStudentByld(),該方法能夠根據(jù)傳來的參數(shù)生成sql語句,借助DBManager類來進行實現(xiàn)修改功能,此sq

41、l語句是修改數(shù)據(jù)庫中兩個表的學(xué)生的基本信息,sql語句為:Stringsql=updatestudentsetstudentName=+student.getStudentName()+,gender=+student.getGender()+,birthday=+student.getBirthday()+,department=+student.getDepartment()+,major=+student.getMajor()+,studentClass=+student.getStudentClass()+wherestudentId=+studentId+;Stringsql1=up

42、dategradesetstudentName=+student.getStudentName()+wherestudentId=+studentId+;實例化db來執(zhí)行executeUpdate(sql)方法。執(zhí)行sql語句。DBManagerdb=newDBManager();intcount=db.executeUpdate(sql);db.executeUpdate(sql1);if(count0)flag=true;db.releaseSource();returnflag;3、Controller層構(gòu)建在StudentServlet中,負責(zé)學(xué)生信息的添加與維護。為StudentSe

43、rvlet添加方法doUpdateStudent(),在該方法中完成學(xué)生信息的修改。該方法的代碼主要是接收參數(shù),包括學(xué)生編號,姓名,性別,生日,所在院系、專業(yè)和班級。StringstudentId=request.getParameter(studentId);StringstudentName=request.getParameter(studentName);studentName=newString(studentName.getBytes(ISO-8859-1),GB2312);Stringgender=request.getParameter(gender);gender=newSt

44、ring(gender.getBytes(ISO-8859-1),GB2312);Stringyear=request.getParameter(year);Stringmonth=request.getParameter(month);Stringbirthday=year+month;Stringdepartment=request.getParameter(department);department=newString(department.getBytes(ISO-8859-1),GB2312);Stringmajor=request.getParameter(major);majo

45、r=newString(major.getBytes(ISO-8859-1),GB2312);StringstudentClass=request.getParameter(studentClass);studentClass=newString(studentClass.getBytes(ISO-8859-1),GB2312);實例化model中的Student,并實例化StudentDAO,來執(zhí)行updateStudentByld()方法,進行修改學(xué)生的信息,并判斷及處理各種修改異常。代碼如下:Studentstudent=newStudent();student.setStudentNa

46、me(studentName);student.setGender(gender);student.setBirthday(birthday);student.setDepartment(department);student.setMajor(major);student.setStudentClass(studentClass);StudentDAOstudentDAO=newStudentDAO();if(studentName.equals()request.setAttribute(message,姓名不能為空!);this.doShowUpdateStudent(request,r

47、esponse);elseif(department.equals()request.setAttribute(message,請選擇院系!);this.doShowUpdateStudent(request,response);判斷修改結(jié)果,并跳轉(zhuǎn)頁面。代碼如下:elseif(studentDAO.updateStudentById(student,studentld)request.setAttribute(message,修改成功!);this.doQueryStudent(request,response);elserequest.setAttribute(message,修改失??!)

48、;this.doQueryStudent(request,response);3.4.3瀏覽學(xué)生信息1、View層構(gòu)建用于瀏覽學(xué)生信息的StudentList.jsp設(shè)計如圖3-5所示,展示學(xué)生編號,姓名,性別,生日,所在院系、專業(yè)、班級和修改刪除按鈕。宇土忙息它程L.Si點耳學(xué)生信息瀏覽*汀B學(xué)生歯軾音饉詵樣號fl別出忖JrCCL王男L991DJ狀怦工程斑:rDCG張蟲Lasini計業(yè)51與伯慮掛腿子世息拜學(xué)與技豐除用rW3LOQDDJ計豆機與ra.&.K討且Bl科竽與低除廠COflL99201城件報辦工程Jl.:-JWr;|姑|DCS男L9930I計矍機與信息拽如網(wǎng)瓏:首更上一帀下一頁本帀

49、黑L頁F共Z頁AllCowfLiditszw皿車北右曲大辮件學(xué)陳圖3-4學(xué)生信息瀏覽頁面瀏覽效果2、Model層構(gòu)建在業(yè)務(wù)Javabean的StudentDAO中添加方法queryStudent(),該方法能夠根據(jù)傳來的參數(shù)生成sql語句,借助DBManager類來進行實現(xiàn)查詢所有學(xué)生功能,此sql語句是查詢數(shù)據(jù)庫中學(xué)生的基本信息,該模塊包含分頁功能,關(guān)鍵代碼是分頁。首先建立ArrayList類型的studentList,代碼如下:ArrayListstudentList=newArrayList();求出首頁和尾頁的數(shù)字,pageN和pageSize是傳遞過來的參數(shù),目的是求出首頁和尾頁,代

50、碼如下:intbeginNum=pageSize*(pageN-1)+1;l8intendNum=pageSize*pageN;sql語句為:Stringsql=SELECT*FROM(SELECT*,num=row_number()over(orderbystudentId)fromstudent)twherenumBETWEEN+beginNum+AND+endNum;實例化db來執(zhí)行executeQuery(sq1)方法。DBManagerdb=newDBManager();Resu1tSetrs=db.executeQuery(sq1);判斷rs.next中是否有內(nèi)容,如果有實例化St

51、udent,并取出基本信息,并放入實例化后的teacher中,代碼如下:whi1e(rs.next()Studentstudent=newStudent();student.setStudentId(rs.getString(1);student.setStudentName(rs.getString(2);student.setGender(rs.getString(3);student.setBirthday(rs.getString(4);student.setDepartment(rs.getString(5);student.setMajor(rs.getString(6);student.setStudentC1ass(rs.getString(7);把整個student中的信息放入studentList中,再進行循環(huán)添加,直到rs中沒有內(nèi)容為止,最后釋放數(shù)據(jù)庫資源,返回studentList,代碼如下:studentList.add(student);catch(SQLExceptione)e.printStackTrace();db.re1easeSource();returnstudentList;3、Controo1er層構(gòu)建StudentServle

溫馨提示

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

評論

0/150

提交評論