需求分析:
谁用软件
学生
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(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 = "";
%>
后台管理页面(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"%>
function check() {
if(https://www.doczj.com/doc/643363599.html,ername.value == "") {
alert("请输入用户名!");
return;
}
if(document.myform.password.value == "") {
alert("请输入密码!");
return;
}
document.myform.submit();
}
后台管理系统登录 |
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:成绩查看页面