摘 要:采用jsp/Servlet/JavaBean編程技術(shù)和SQL server數(shù)據(jù)庫,進(jìn)行學(xué)生成績管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)。該系統(tǒng)能夠?qū)崿F(xiàn)學(xué)生信息管理、課程信息管理、學(xué)生成績信息管理、學(xué)生查詢成績等功能。這個(gè)系統(tǒng)是為了軟件專業(yè)學(xué)生在學(xué)習(xí)Java Web軟件項(xiàng)目而構(gòu)建的教學(xué)案例。
關(guān)鍵詞:MVC;SQL Server;學(xué)生成績管理
0 引言
近年來隨著國家對(duì)于高職高專院校政策的大幅轉(zhuǎn)變,對(duì)于高職高專院校畢業(yè)生就業(yè)也提出了更多的機(jī)遇和挑戰(zhàn)。畢業(yè)生能否尋得好的工作,能否順利與企業(yè)需求接軌,將成為對(duì)高職高專院校進(jìn)行評(píng)價(jià)時(shí)越來越重要的評(píng)價(jià)標(biāo)準(zhǔn)。
軟件專業(yè)畢業(yè)生最終的評(píng)價(jià)標(biāo)準(zhǔn),就是能不能做項(xiàng)目。一個(gè)真實(shí)完整獨(dú)立的項(xiàng)目,綜合了整個(gè)專業(yè)所有的知識(shí)和技能。如果能夠在畢業(yè)之前安排這樣的課程來鍛煉學(xué)生的綜合項(xiàng)目能力,對(duì)于就業(yè)將是一次重要的提升準(zhǔn)備。
本系統(tǒng)就是基于這個(gè)需求進(jìn)行設(shè)計(jì)和開發(fā),模擬一個(gè)真實(shí)完整的項(xiàng)目,能夠在網(wǎng)上完成學(xué)生基本信息管理、課程基本信息管理、學(xué)生成績信息管理、學(xué)生查詢成績等功能。
1 需求分析
系統(tǒng)管理員:管理所有用戶的用戶等級(jí)、用戶權(quán)限。
教務(wù)管理員:能夠?qū)W(xué)生基本信息進(jìn)行增刪改查、能夠?qū)φn程基本信息進(jìn)行增刪改查、能夠?qū)W(xué)生成績信息進(jìn)行增刪改查。
普通學(xué)生用戶:能夠?qū)ψ约旱幕具M(jìn)行查詢和部分修改、能夠?qū)ψ约旱某煽冃畔⑦M(jìn)行查詢。
2 系統(tǒng)架構(gòu)設(shè)計(jì)
2.1 采用B/S架構(gòu)
C/S架構(gòu)和B/S架構(gòu)是現(xiàn)在軟件領(lǐng)域主流的兩種體系結(jié)構(gòu)。C/S就是Client(客戶端)/Server(服務(wù)器端),用戶需要在自己的電腦上安裝客戶端才能夠使用軟件,例如QQ、大型3D網(wǎng)絡(luò)游戲。B/S是Browser(瀏覽器端)/Server(服務(wù)器端),用戶只需要瀏覽器即可使用軟件,通過網(wǎng)絡(luò)向服務(wù)器發(fā)送請(qǐng)求并接收響應(yīng)。
現(xiàn)在80%以上的軟件項(xiàng)目是采用B/S架構(gòu),用戶只要在瀏覽器上打開網(wǎng)頁即可進(jìn)入學(xué)生成績管理系統(tǒng),不需要維護(hù)客戶端,靈活性高,開發(fā)維護(hù)成本低。
B/S架構(gòu)和C/S架構(gòu)相比,有以下幾個(gè)優(yōu)點(diǎn):
①用戶的使用簡單。軟件的使用者絕大多數(shù)都不是軟件專業(yè)人員,所以在使用時(shí)不能太復(fù)雜,網(wǎng)頁的使用模式已經(jīng)被現(xiàn)代社會(huì)所廣泛接受,所以通過瀏覽器就可以使用的軟件完全可以滿足這個(gè)要求。而且使用瀏覽器就可以進(jìn)入軟件系統(tǒng),而不需要考慮客戶端的硬件軟件環(huán)境,絕大部分功能以請(qǐng)求/響應(yīng)的模式交給服務(wù)器端來處理。
②靈活性高。如果是C/S架構(gòu),要使用軟件就必須先安裝客戶端,如果換一臺(tái)終端、或者出差去外地,安裝客戶端就顯得很不方便。如果是B/S架構(gòu),隨便一臺(tái)電腦甚至是手機(jī),只要打開瀏覽器即可進(jìn)入軟件系統(tǒng)。
2.2 采用MVC三層架構(gòu)
采用B/S架構(gòu),如果不分層次,將業(yè)務(wù)邏輯、數(shù)據(jù)模型、頁面顯示混合在一起,那么在后期進(jìn)行測試調(diào)試時(shí),程序員將面對(duì)一個(gè)一團(tuán)亂麻、牽一發(fā)而動(dòng)全身的項(xiàng)目。并且大多項(xiàng)目并不是一蹴而就的,投入使用后沒過多久就會(huì)需要擴(kuò)展升級(jí)、二次開發(fā),如果不分層次,在這樣一個(gè)項(xiàng)目基礎(chǔ)上進(jìn)行擴(kuò)展修改,很多時(shí)候還不如完全推翻之后重新開發(fā)一個(gè),大大浪費(fèi)了時(shí)間,降低效率。
MVC模式的優(yōu)點(diǎn)是耦合性低、重用性高、分工明確。
耦合性,是指軟件項(xiàng)目各模塊代碼之間的互相依賴性,改變一處代碼,需要連帶一起改變其它幾個(gè)地方的代碼。MVC將業(yè)務(wù)邏輯、數(shù)據(jù)模型和數(shù)據(jù)顯示完全分開,層與層之間只存在數(shù)據(jù)傳遞和方法調(diào)用,而不存在依賴性,在進(jìn)行功能擴(kuò)展和二次開發(fā)時(shí),只需要根據(jù)需求對(duì)對(duì)應(yīng)的層進(jìn)行修改(例如如果需要改動(dòng)數(shù)據(jù)庫,則只需改變數(shù)據(jù)模型層的代碼),而不會(huì)影響到別的層。
重用性,簡單來說,是指同一段代碼可以被不同的功能需求所調(diào)用。例如一個(gè)項(xiàng)目可能會(huì)有不同的View視圖(Web瀏覽器、無線Wap瀏覽器、手機(jī)APP等),但是這些視圖的功能需求基本是一致的,對(duì)數(shù)據(jù)庫的訪問更新操作也是一致的,那么就可以毫無障礙和差異地調(diào)用共同的Model模型。這種可以最大化地重用代碼。
分工明確,在MVC模式下,程序員(Java開發(fā))可以集中精力于Controller業(yè)務(wù)邏輯,View視圖可以交給界面設(shè)計(jì)師,Model數(shù)據(jù)模型可以直接從已經(jīng)設(shè)計(jì)好的數(shù)據(jù)庫延續(xù)過來。分工明確之后的軟件開發(fā)時(shí)間得到大幅縮減。
現(xiàn)在J2EE領(lǐng)域最流行的MVC框架是SSH(Struts/Spring/Hibernate),但在這里不使用框架,僅采用最基本的JSP/Servlet/JavaBean來實(shí)現(xiàn)MVC模式。
本系統(tǒng)使用開發(fā)工具M(jìn)yEclipse 8.5、Tomcat服務(wù)器、sqljdbc4、SQL Server,前臺(tái)采用HTML/CSS/Javascript網(wǎng)頁布局顯示,后臺(tái)采用以jsp/Servlet/JavaBean為三層架構(gòu)的MVC技術(shù)來完成。(圖2)
3 系統(tǒng)詳細(xì)設(shè)計(jì)
3.1 數(shù)據(jù)庫設(shè)計(jì)
根據(jù)功能需求分析,學(xué)生與課程之間存在多對(duì)多關(guān)系,可以繪制出主要的關(guān)系E-R圖如圖3,再加上用戶表,即可得到主要的4個(gè)數(shù)據(jù)庫表:學(xué)生信息表、課程信息表、考試成績表、用戶表。其中學(xué)生表和課程表都與考試成績表存在約束關(guān)系。
3.2 視圖層實(shí)現(xiàn)
根據(jù)功能需求分析,本系統(tǒng)的業(yè)務(wù)流程大致可以劃分成三大模塊。
首先需要共同的主頁、登錄頁面。
學(xué)生查詢模塊:學(xué)生登錄成功后,可以瀏覽自己的個(gè)人信息頁面、考試成績信息頁面。
教務(wù)管理模塊:教務(wù)管理員登錄成功后,需要學(xué)生信息列表頁面、學(xué)生詳細(xì)信息頁面、課程信息列表頁面、課程詳細(xì)信息頁面、考試成績列表頁面、考試成績?cè)敿?xì)信息頁面。
3.3 數(shù)據(jù)模型層實(shí)現(xiàn)
數(shù)據(jù)模型層與數(shù)據(jù)庫一一對(duì)應(yīng),模型層中的JavaBean實(shí)體類與數(shù)據(jù)庫中的表一致,類的屬性對(duì)應(yīng)于表中的字段。再由DAO類使用JDBC技術(shù)提供數(shù)據(jù)庫訪問的增刪改查操作。
數(shù)據(jù)庫連接單獨(dú)創(chuàng)建一個(gè)專門的連接類來提供靜態(tài)的連接方法:
/*提供用于驅(qū)動(dòng)加載和創(chuàng)建連接、關(guān)閉連接的靜態(tài)方法*/
/*四個(gè)靜態(tài)常量,用于存儲(chǔ)驅(qū)動(dòng)類、連接地址、用戶名、用戶密碼*/
private static final String CLASS_DRIVER="sun.jdbc.odbc.JdbcOdbcDriver";
private static final String URL="jdbc:odbc:stuent";
private static final String USER="sa";
private static final String PASSWORD="sa";
/*用于加載驅(qū)動(dòng)并創(chuàng)建連接的方法,返回值為創(chuàng)建的連接*、
public static Connection getConn(){
Connection conn=null;
try{
Class.forName(CLASS_DRIVER); //1、加載驅(qū)動(dòng)
conn=DriverManager.getConnection(URL); //2、創(chuàng)建連接
}catch(Exception e){
System.out.println(e.getMessage());
}
return conn;
}
3.4 業(yè)務(wù)邏輯層實(shí)現(xiàn)
Servlet是用于接收客戶請(qǐng)求,并作出響應(yīng)的Java程序,是中間件技術(shù)的重要部分,它控制著其他的組件,是整個(gè)項(xiàng)目的核心。
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
String userName = request.getParameter("userName");
String userPass = request.getParameter("userPass");
/*接收用戶在表單中輸入的信息,調(diào)用用戶DAO類中的登錄驗(yàn)證方法,根據(jù)返回的結(jié)果,如果登錄成功則根據(jù)用戶類型跳轉(zhuǎn)到不同的頁面,如果登錄失敗則給出提示信息并返回登錄頁面。*/
}
}
4 結(jié)語
將MVC三層架構(gòu)設(shè)計(jì)模式應(yīng)用于基于B/S的軟件系統(tǒng)中,這是現(xiàn)在軟件行業(yè)的主流項(xiàng)目架構(gòu)模式,降低軟件模塊之間的耦合性,提高代碼的復(fù)用性、項(xiàng)目的可擴(kuò)展性和二次開發(fā)可行性,實(shí)現(xiàn)軟件開發(fā)的分工,有效降低維護(hù)成本。在軟件專業(yè)學(xué)生畢業(yè)之前,能夠獨(dú)立完成這樣一個(gè)真實(shí)完整的項(xiàng)目,那么對(duì)于他們所學(xué)的所有專業(yè)課程是一次綜合和提升,對(duì)于應(yīng)聘于軟件企業(yè)也是大有幫助。
作者簡介:魏蓉,女,畢業(yè)于華中科技大學(xué),碩士,武漢商貿(mào)職業(yè)學(xué)院軟件專業(yè)教師。