摘 要:采用jsp/Servlet/JavaBean编程技术和SQL server数据库,进行学生成绩管理系统的设计和实现。该系统能够实现学生信息管理、课程信息管理、学生成绩信息管理、学生查询成绩等功能。这个系统是为了软件专业学生在学习Java Web软件项目而构建的教学案例。
关键词:MVC;SQL Server;学生成绩管理
0 引言
近年来随着国家对于高职高专院校政策的大幅转变,对于高职高专院校毕业生就业也提出了更多的机遇和挑战。毕业生能否寻得好的工作,能否顺利与企业需求接轨,将成为对高职高专院校进行评价时越来越重要的评价标准。
软件专业毕业生最终的评价标准,就是能不能做项目。一个真实完整独立的项目,综合了整个专业所有的知识和技能。如果能够在毕业之前安排这样的课程来锻炼学生的综合项目能力,对于就业将是一次重要的提升准备。
本系统就是基于这个需求进行设计和开发,模拟一个真实完整的项目,能够在网上完成学生基本信息管理、课程基本信息管理、学生成绩信息管理、学生查询成绩等功能。
1 需求分析
系统管理员:管理所有用户的用户等级、用户权限。
教务管理员:能够对学生基本信息进行增删改查、能够对课程基本信息进行增删改查、能够对学生成绩信息进行增删改查。
普通学生用户:能够对自己的基本进行查询和部分修改、能够对自己的成绩信息进行查询。
2 系统架构设计
2.1 采用B/S架构
C/S架构和B/S架构是现在软件领域主流的两种体系结构。C/S就是Client(客户端)/Server(服务器端),用户需要在自己的电脑上安装客户端才能够使用软件,例如QQ、大型3D网络游戏。B/S是Browser(浏览器端)/Server(服务器端),用户只需要浏览器即可使用软件,通过网络向服务器发送请求并接收响应。
现在80%以上的软件项目是采用B/S架构,用户只要在浏览器上打开网页即可进入学生成绩管理系统,不需要维护客户端,灵活性高,开发维护成本低。
B/S架构和C/S架构相比,有以下几个优点:
①用户的使用简单。软件的使用者绝大多数都不是软件专业人员,所以在使用时不能太复杂,网页的使用模式已经被现代社会所广泛接受,所以通过浏览器就可以使用的软件完全可以满足这个要求。而且使用浏览器就可以进入软件系统,而不需要考虑客户端的硬件软件环境,绝大部分功能以请求/响应的模式交给服务器端来处理。
②灵活性高。如果是C/S架构,要使用软件就必须先安装客户端,如果换一台终端、或者出差去外地,安装客户端就显得很不方便。如果是B/S架构,随便一台电脑甚至是手机,只要打开浏览器即可进入软件系统。
2.2 采用MVC三层架构
采用B/S架构,如果不分层次,将业务逻辑、数据模型、页面显示混合在一起,那么在后期进行测试调试时,程序员将面对一个一团乱麻、牵一发而动全身的项目。并且大多项目并不是一蹴而就的,投入使用后没过多久就会需要扩展升级、二次开发,如果不分层次,在这样一个项目基础上进行扩展修改,很多时候还不如完全推翻之后重新开发一个,大大浪费了时间,降低效率。
MVC模式的优点是耦合性低、重用性高、分工明确。
耦合性,是指软件项目各模块代码之间的互相依赖性,改变一处代码,需要连带一起改变其它几个地方的代码。MVC将业务逻辑、数据模型和数据显示完全分开,层与层之间只存在数据传递和方法调用,而不存在依赖性,在进行功能扩展和二次开发时,只需要根据需求对对应的层进行修改(例如如果需要改动数据库,则只需改变数据模型层的代码),而不会影响到别的层。
重用性,简单来说,是指同一段代码可以被不同的功能需求所调用。例如一个项目可能会有不同的View视图(Web浏览器、无线Wap浏览器、手机APP等),但是这些视图的功能需求基本是一致的,对数据库的访问更新操作也是一致的,那么就可以毫无障碍和差异地调用共同的Model模型。这种可以最大化地重用代码。
分工明确,在MVC模式下,程序员(Java开发)可以集中精力于Controller业务逻辑,View视图可以交给界面设计师,Model数据模型可以直接从已经设计好的数据库延续过来。分工明确之后的软件开发时间得到大幅缩减。
现在J2EE领域最流行的MVC框架是SSH(Struts/Spring/Hibernate),但在这里不使用框架,仅采用最基本的JSP/Servlet/JavaBean来实现MVC模式。
本系统使用开发工具MyEclipse 8.5、Tomcat服务器、sqljdbc4、SQL Server,前台采用HTML/CSS/Javascript网页布局显示,后台采用以jsp/Servlet/JavaBean为三层架构的MVC技术来完成。(图2)
3 系统详细设计
3.1 数据库设计
根据功能需求分析,学生与课程之间存在多对多关系,可以绘制出主要的关系E-R图如图3,再加上用户表,即可得到主要的4个数据库表:学生信息表、课程信息表、考试成绩表、用户表。其中学生表和课程表都与考试成绩表存在约束关系。
3.2 视图层实现
根据功能需求分析,本系统的业务流程大致可以划分成三大模块。
首先需要共同的主页、登录页面。
学生查询模块:学生登录成功后,可以浏览自己的个人信息页面、考试成绩信息页面。
教务管理模块:教务管理员登录成功后,需要学生信息列表页面、学生详细信息页面、课程信息列表页面、课程详细信息页面、考试成绩列表页面、考试成绩详细信息页面。 3.3 数据模型层实现
数据模型层与数据库一一对应,模型层中的JavaBean实体类与数据库中的表一致,类的属性对应于表中的字段。再由DAO类使用JDBC技术提供数据库访问的增删改查操作。
数据库连接单独创建一个专门的连接类来提供静态的连接方法:
/*提供用于驱动加载和创建连接、关闭连接的静态方法*/
/*四个静态常量,用于存储驱动类、连接地址、用户名、用户密码*/
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";
/*用于加载驱动并创建连接的方法,返回值为创建的连接*、
public static Connection getConn(){
Connection conn=null;
try{
Class.forName(CLASS_DRIVER); //1、加载驱动
conn=DriverManager.getConnection(URL); //2、创建连接
}catch(Exception e){
System.out.println(e.getMessage());
}
return conn;
}
3.4 业务逻辑层实现
Servlet是用于接收客户请求,并作出响应的Java程序,是中间件技术的重要部分,它控制着其他的组件,是整个项目的核心。
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");
/*接收用户在表单中输入的信息,调用用户DAO类中的登录验证方法,根据返回的结果,如果登录成功则根据用户类型跳转到不同的页面,如果登录失败则给出提示信息并返回登录页面。
4 结语
将MVC三层架构设计模式应用于基于B/S的软件系统中,这是现在软件行业的主流项目架构模式,降低软件模块之间的耦合性,提高代码的复用性、项目的可扩展性和二次开发可行性,实现软件开发的分工,有效降低维护成本。在软件专业学生毕业之前,能够独立完成这样一个真实完整的项目,那么对于他们所学的所有专业课程是一次综合和提升,对于应聘于软件企业也是大有帮助。