1、.问题描述和分工情况 1.1 问题描述 Java试卷管理系统 类型:Web应用 要求: A. 使用JSP + Servlet+ sqlserver2005实现,Web服务器用tomcat。 B. 分为以下模块: a) 题库管理 i. 分科目建立题库 ii. 题目包括填空题、单选题、多选题和问答题。每道题有知识点和难度。 b) 试卷管理 i. 根据题库中的题目生成试卷,随机抽题,但可以规定每个知识点所占的比例和抽取题目的各种难度所占的比例。 ii. 对生成的试卷可以人为修改。 iii. 以Word的格式输出试卷。 1.2 分工情况 邓思铭(组长):负责整个系统的需
2、求分析,确定各功能模块,系统开发的分工及开发过程中的跟进,及整个系统的测试和调试工作;负责试题查询,试题修改等模块的实现。 李才运:负责应用程序写数据库连接,项目中登录,注册,抽取试题模板的实现。 蒋潇毅:负责数据库的设计,试题的收集,网页输出到word技术的实现。 2.系统总体设计 2.1开发环境描述 myeclipse8.5; tomcat 6.0.1; sql server 2005。 2.2 系统设计方案综述 本系统使用JSP + Servlet+ sqlserver2005实现,并通过tomcat5.0发布供外部测试及使用,系统的各主要功能流程如图1所示:
3、 图1 3.系统详细设计 3.1 数据库设计 1) 绘制E-R图,如图2所示: 图2 2) 将E-R图转换为关系模型: UserInfo(Unum,Utype,Uname,Upassword); QuestionInfo(Qnum,Qcontact,Qlevel,Qtype,Qsubject,Qanswer) 3) 使用sql server 2005 创建数据库: -----------------------创建数据库----------------------- if exists(select * fr
4、om sysdatabases where name='PaperManagerDB') drop database PaperManagerDB exec xp_cmdshell 'mkdir E:\accp\database\PaperManagerDB' create database PaperDB on( name='PaperManagerDB_data', filename='E:\accp\database\PaperDB\PaperManagerDB_data.mdf', size=10, filegrowth=1 ) log on ( na
5、me='PaperManagerDB_log', filename='E:\accp\database\PaperManager\PaperManagerDB_data.ldf', size=5, maxsize=20, filegrowth=1 ) go --------------------创建数据库表--------------------- /* Qnum:试题编号 Qsubject:科目 Qtype:题型 Qcontact:内容 Qpoint:知识点 Qlevel:难度 Qanswer 答案 */ use PaperManagerDB
6、 go if exists(select*from sysobjects where name='QuestionInfo') drop table QuestionInfo create table QuestionInfo ( Qnum int identity(1,1) primary key, Qsubject varchar(8) not null, Qtype varchar(10) not null, Qcontact text not null, Qpoint text not null, Qlevel varchar(10) not
7、 null, Qanswer text not null ) go 3.2 各模块设计 1) 数据库连接:通过编写DB类存储Web应用所用到常用数据库操作的方法,供Web调用; 代码:import java.sql.*; public class DBConn { Connection conn=null; Statement state=null; String sql=""; String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //加载JDB
8、C驱动 String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=PaperManagerDB"; //连接服务器和数据库sample String userName = "sa"; //默认用户名 String userPwd = ""; //密码 public static Connection getConnection(){ Connection conn=null; Statement state=null; String driverName = "com.microsoft.sql
9、server.jdbc.SQLServerDriver"; String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=PaperManagerDB"; String userName = "sa"; //默认用户名 String userPwd = ""; //密码 try { Class.forName(driverName); conn = DriverManager.getConnection(dbURL, userName, userPwd); //Syst
10、em.out.println("Connection Successful!"); //如果连接成功 控制台输出Connection Successful! } catch (Exception e) { e.printStackTrace(); } return conn; } public static void closeStatement(PreparedStatement pstate){ try{ if(pstate!=null){ pstate.close();
11、pstate=null; } }catch(SQLException e){ e.printStackTrace(); } } public static void closeConnection(Connection conn){ try{ if(conn !=null&&!conn.isClosed()){ conn.isClosed(); } }catch(SQLException e){ e.printStackTrace(); } } public static void closeRes
12、ultSet(ResultSet res){ try { if (res!=null) { res.close(); res=null; } } catch (SQLException e) { e.printStackTrace(); } } } 2) 登录模块: 接受用户输入,通过javascript判断输入的合法性,若合法,则提交到登录页的jsp处理,通过查询数据库,判断是否存在此用户,或存在,刚进入主功能页面,并保存登录信息; 代码:<%@ page
13、 contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
15、 content="text/html; charset=gb2312" />
22、" errorPage="" %>
27、
系统功能:
34、tContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
35、e
41、>
5) 修改试题:接受用户输入,通过javascript判断输入的合法性,若合法,则向数据库更新或删除一条试题数据;
代码:<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>
<%@ page import=" java.util.*, DB.* ,java.sql.*" %>
<%
String path = request.getContextPath();
String basePa
42、th = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%! int qid; String num=""; String page="1"; int result=0; %> <% page=request.getParameter("page"); num=request.getParameter("id"); //qid=Integer.getInteger(num); try{ String sql="dele
43、te * from QuestionInfo where Qnum=Qnum"; sql = "delete from QuestionInfo where Qnum=" + num; Connection conn=DBConn.getConnection(); PreparedStatement pst=conn.prepareStatement(sql); int result = pst.executeUpdate(); if(result !=1 ) { out.println("
44、
");
out.println("单击这里返回
");
out.println("
45、age language="java" import="java.util.*" pageEncoding="gb2312"%> <%@ page import="java.sql.*" %> <%@ page import="com.tool.*" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
46、HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">