当前位置:文档之家› 考试系统开发过程

考试系统开发过程

需求分析:

谁用软件

学生

1注册信息

2登陆系统

3选择科目

4考试

老师

1出题

2出卷

3查看学生信息

4查看学生成绩

5:维护课程信息

管理员

1创建用户

2:查看学生成绩

3: 查询学生密码

Student_info

学生信息表

编号id

姓名name

性别sex 年龄age 身份证编号certid

密码password

出生日期birthday

联系电话phone

邮件地址email

QQ号码qq

)

admin

管理员表+教师表

(

登陆名Username

密码Password

真实姓名trueName

等级grade

)

Class_info

课程表

(

课程编号classId

课程名称className

考试时间examTime

题目数目examNumber 试卷数目paperNumber )

Question_lib

试题表

(

试题编号questionID

题目类型questionType 课程编号classID

题目question

选项1 option1

选项2 option2

选项3 option4 选项4 option4

答案answer

Paper_lib

试卷表

试卷表项目编号(id)

试卷编号(papereID)

题目编号(questionID)

result

成绩表

(

考试结果编号resultID

学生编号studentID

课程编号classID

学生成绩studentSore

View

试卷详细视图

试卷编号

试卷编号

试题类型

课程编号

试题

选项1

选项2

选项3

选项4

答案

Create view paper_info

As

Select paper_lib.paperid, paper_lib.questionid,question_lib.questiontype,question_lib.classID, question_lib.question,question_lib.option1, question_lib.option2, question_lib.option3, question_lib.option4,

question_lib.answer from paper_lib,question_lib

Where paper_lib.questionid=question_lib.questionid

;

生成SQL语句

/* 学生基本信息*/

drop table sudent_info;

/* 考试结果信息*/

drop table result

/* 教师和管理员帐号*/

drop table admin;

/* 班级信息*/

drop table class_info;

/* 题库*/

drop table question_lib;

/* 试卷*/

drop table paper_lib;

学生表生成代码

create table student_info(

studentid int primary key auto_increment, name varchar(8),

sex varchar(2),

age int,

certid varchar(18),

password varchar(20),

birthday datetime,

phone varchar(60),

email varchar(40),

qq varchar(40)

)auto_increment=10000;

管理员表生成代码

create table admin(

username varchar(8) primary key, password varchar(8),

truename varchar(8),

grade int

课程表生成代码

create table class_info(

classid varchar(2) primary key,

classname varchar(30),

examtime int,

questionnumbers int,

papernumbers int

);

试题库表生成代码

create table question_lib(

questionid int primary key auto_increment , questiontype int,

classid varchar(2),

question varchar(2000),

option1 varchar(500),

option2 varchar(500),

option3 varchar(500),

option4 varchar(500),

answer varchar(4)

);

试卷表生成代码

create table paper_lib(

id int primary key auto_increment,

paperid int ,

questionid int

);

结果表生成代码:

create table result(

resultid int primary key auto_increment, studentid int,

classid varchar(2),

studentscore int

);

插入测试数据

import java.sql.*;

public class InsertTestData {

public static void main(String[] args) throws Exception{

String sql = "";

String classid[] = new String[3];

classid[0] = "20"; classid[1] = "30"; classid[2] = "40";

Connection conn=null;

PreparedStatement stmt=null;

try{

Class.forName("com.mysql.jdbc.Driver");

conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/exam","root","admin");

sql = "insert into question_lib(questiontype,classid,question,option1,option2,option3,option4,answer)

values(?,?,?,?,?,?,?,?)";

stmt=conn.prepareStatement( sql );

for(int i=0; i<500; i++) {

stmt.setInt(1,1);

stmt.setString(2,classid[(int)(Math.floor(3*Math.random()))]);

stmt.setString(3,"Test question " + i*i);

stmt.setString(4,"selection 1");

stmt.setString(5,"selection 2");

stmt.setString(6,"selection 3");

stmt.setString(7,"selection 4");

stmt.setString(8,"A");

stmt.executeUpdate();

}

}catch(SQLException e){

System.err.println(e);

}

stmt.close();

conn.close();

}

}

建立项目目录结构

Admin

Images

Public

Register

Test

配置Tomcat中的/config/server.xml

添加新的

添加mysql驱动到exam\web-inf\lib

错误处理页

<%@ page language="java" isErrorPage="true" contentType="text/html;charset=GBK"%>

在线考试系统



系统出错


<%if(exception!=null) out.println(exception.toString()); %>




请您及时和系统管理员联系




单击这里返回

教师登陆验证页面

<%

if(session.getAttribute("grade")==null || session.getAttribute("grade").equals("")) { response.sendRedirect("/test/admin");

}

%>

系统管理员登陆验证页面

<%

if(session.getAttribute("grade")==null || !session.getAttribute("grade").equals("8")) { response.sendRedirect("/test/admin");

}

%>

学生登录验证页面

<%

if(session.getAttribute("studentlogin")==null

|| !session.getAttribute("studentlogin").equals("ok")) {

response.sendRedirect("/test");

}

%>

数据库访问出错页面:

<%@ page language="java" isErrorPage="true" contentType="text/html;charset=GBK"%>

在线考试系统系统

<%!

String errmsg = "";

%>

<%

request.setCharacterEncoding("GBK");

errmsg = request.getParameter("errmsg");

if( errmsg == null) {

errmsg = "";

%>



数据库操作错误信息


<%= errmsg %>




返回

后台管理页面(test/admin)

1.访问数据库的JavaBean

package test;

import java.io.PrintStream;

import java.sql.*;

public class ConnDB

{

String serverName;

String sDBDriver;

String sConnStr;

Connection connect;

ResultSet rs;

public ConnOracle()

{

sDBDriver = ""com.mysql.jdbc.Driver ";

sConnStr = jdbc:mysql://localhost:3306/test";

connect = null;

rs = null;

try

{

Class.forName(sDBDriver);

}

catch(ClassNotFoundException classnotfoundexception)

{

System.err.println(classnotfoundexception.getMessage());

}

}

public ResultSet executeQuery(String s)

{

try

{

connect = DriverManager.getConnection(sConnStr, "root", "admin");

Statement statement = connect.createStatement();

rs = statement.executeQuery(s);

}

catch(SQLException sqlexception)

{

System.err.println(sqlexception.getMessage());

}

return rs;

}

public int executeUpdate(String s)

{

int i = 0;

try

{

connect = DriverManager.getConnection(sConnStr, "root", "admin");

Statement statement = connect.createStatement();

i = statement.executeUpdate(s);

}

catch(SQLException sqlexception)

{

System.err.println(sqlexception.getMessage());

}

return i;

}

}

2:后台登陆页面

<%@page contentType="text/html;charset=GBK"%>

后台管理系统登录











后台管理系统登录

<%

String msg = (String)request.getParameter("errmsg");

if(msg != null && !msg.equals("")) {

%>

<%

}

%>

用户名:
密码:

 

<%=msg%>

3:后台登陆验证页面

<%@page contentType="text/html;charset=GBK"%>

<%@page import="java.sql.*"%>

<%!

ResultSet rs = null; // 执行Sql语句返回的结果集

String username = "";

String password = "";

String sql = "";

int grade = 0;

%>

<%

username = request.getParameter("username");

password = request.getParameter("password");

if(username ==null || password == null || username.equals("") || password.equals("")) { out.println( "

" );

out.println( "

用户名或密码输入非法!请返回重新输入!



");

out.println("返回");

out.println( "

" );

return;

}

sql = "select * from admin where username='" + username;

sql+= "' and password='" + password + "'";

try {

rs = conn.executeQuery( sql );

// 如果是非法用户名或密码,回到登陆界面

if(!rs.next()) {

%>

<%

}

grade = rs.getInt("grade"); // 得到用户权限

}catch(Exception ee) { // 其他异常情况

System.out.println( ee.toString() );

%>

<%

}

session.setAttribute("grade", grade + ""); // 将权限信息保存到session中

session.setAttribute("adminname", username); // 将管理员登录信息保存到session中

session.setMaxInactiveInterval(60*60*24);

response.sendRedirect("/test/admin/manager.jsp");

%>

4:后台登陆总控制页面

<%@page contentType="text/html;charset=GBK"%>

<%@ include file="/public/checkvalidadmin.jsp"%>

系统管理

5:后台导航页面

<%@page contentType="text/html;charset=GBK"%>

<%@ include file="/public/checkvalidadmin.jsp"%>

<%!

String grade;

%>

<%

grade = (String)session.getAttribute("adminpriv");

if(grade.equals("8")) { // 管理员界面

%>

帐号管理    

查询学生密码    

课程信息管理    

题库管理    

动态组卷    

察看试卷    

考试成绩    

重新登陆    


<%} else if(grade.equals("1")) { // 教师面试界面

%>

帐号管理    

查询学生密码    

课程信息管理    

题库管理    

动态组卷    

察看试卷    

考试成绩    

重新登陆    

<%

}

%>

6:默认占位页面

系统管理










系统维护功能

7:账号管理首页

8:账号管理删除修改页面

9:账号管理添加处理页面

10:查询学生密码页面

11:课程信息管理页面

12:课程信息修改删除页面

13:课程信息添加页面

14:题库管理页面

15:显示试题详细页面

16:试题编辑页面

17:保存试题页面

18:试题删除页面

19:添加试题页面

20:试题添加处理也没见21:动态出卷首页

22:动态组卷组件

23:查看试卷页面首页24:查看试题详细信息25:删除某套试卷页面25:成绩查看页面

相关主题
文本预览
相关文档 最新文档