数据库课程设计 在线考试管理系统 大作业论文+源程序+数据库

Posted CSDN专家-小兔子编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库课程设计 在线考试管理系统 大作业论文+源程序+数据库相关的知识,希望对你有一定的参考价值。

一、在线考试管理系统

包含完整的论文(5000+字数)+源程序+数据库,可作为数据库相关课程的课程设计或者大作业。

二、目录

一、背景及意义

二、需求分析

2.1 需求概述

2.2 功能需求

2.3 数据流图

2.4 数据字典

三、概念结构设计

3.2 全局E-R图

四、逻辑结构设计

4.1 E-R图对应的关系模式

4.2 优化后的关系模式

五、物理结构设计

5.1 创建环境

5.2 创建索引

六、数据库实施

6.1 user表-学生用户信息

6.2 teachers表-教师用户信息

6.3 admin表-管理员信息

6.4 question表-试题信息

6.5 grade表-成绩信息

6.6 触发器设计

6.7 数据关系图

、 关键程序代码及截图

7.1 后台连接数据库代码

7.2 登录验证代码

7.3 添加试题主要代码

7.4 选择老师主要代码

7.5 在线考试阅卷主要代码

八、系统运行情况及用户界面

九、总结

—————————————————————————————————
此处省略几千字
—————————————————————————————————

三、需求分析

功能需求

需求分析结果,明确了该系统的功能有:

学生管理:学生通过用户端可查询个人信息,可以选择老师,查询考试成绩

在线考试管理:学生参加考试,后台随机出一套试卷,学生进行考试

成绩查询:学生通过用户端查询成绩,老师通过教师端查询选择自己的学生成绩

教师管理:教师注册、查询、修改、删除试题,查看选择自己的学生以及该成绩

管理员管理:管理员通过管理员系统对用户、教师信息进行增删查

数据流图

顶层图

0层图

四、概念设计

全局ER图

  • 教师(教师编号,教师姓名,教师密码,学生账号,学生姓名,学生密码)
  • 学生(学生编号,学生姓名,学生密码,教师编号,教师姓名)
  • 管理员(学生总人数,教师总人数,教师编号,教师姓名,教师密码,学生编号,学生姓名,学生密码)
  • 试题(试题编号,试题信息,选项A,选项B,选项C,选项D,答案)
  • 成绩(成绩编号,用户编号,教师编号,成绩)

学生管理ER图

考试管理ER图

五、逻辑结构设计

E-R图对应的关系模式

(1)实体所对应的关系模式:

  • 教师(教师编号,教师姓名,教师密码)
  • 成绩(成绩编号,用户编号,教师编号,成绩)
  • 学生(学生编号,学生姓名,学生密码,教师编号)
  • 试题(试题编号,试题信息,选项A,选项B,选项C,选项D,答案)

(2)联系所对应的关系模式:

  • 成绩查询(学生编号,教师编号,成绩编号)
  • 在线考试管理(学生编号,试题编号,成绩编号)
  • 教师管理(教师编号,试题编号)
  • 管理员管理(学生编号,教师编号)
  • 学生管理(学生编号,成绩编号)

优化后的关系模式

  • 管理员(学生总人数,教师总人数,教师编号,教师姓名,教师密码,学生编号,学生姓名,学生密码)3NF
  • 学生(学生编号,学生姓名,学生密码,教师编号)3NF
  • 教师(教师编号,教师姓名,教师密码,学生账号,学生姓名,学生密码)3NF
  • 试题(试题编号,试题信息,选项A,选项B,选项C,选项D,答案)3NF
  • 成绩(成绩编号,用户编号,教师编号,成绩)3NF

六、数据库设计(部分)

学生用户信息

CREATE TABLE `users` (
  `userId` int NOT NULL AUTO_INCREMENT,
  `userName` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `teacherId` int DEFAULT NULL,
  PRIMARY KEY (`userId`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

教室用户信息

CREATE TABLE `teachers` (
  `teacherId` int NOT NULL AUTO_INCREMENT,
  `userName` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`teacherId`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

触发器设计

CREATE TRIGGER `user_insert`   //在users表中创建触发器
AFTER INSERT ON `users`       //后触发器
FOR EACH ROW

update num set usersNum=usersNum+1; //num表用户数加一


CREATE TRIGGER `user_delete` 
AFTER DELETE ON `users` 
FOR EACH ROW 

update num set usersNum=usersNum-1;//num用户数减一


CREATE TRIGGER `teachers_insert`  //teachers表中创建触发器
AFTER INSERT ON `teachers`  //后触发器
FOR EACH ROW 

updatenum set teachersNum=teachersNum+1;


CREATE TRIGGER `teachers_delete`
AFTER DELETE ON `teachers` 
FOR EACH ROW 

updatenum set teachersNum=teachersNum-1;

七、代码实现(部分)

连接数据库代码

public class JdbcUtil{
final String URL="jdbc:mysql://localhost:3306/hj?serverTimezone=UTC";
final String USERNAME="root";
final String PASSWORD="333";
PreparedStatementps= null;
Connection con = null;

static{
try {
Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundExceptione) {
e.printStackTrace();
        }
    }
//获取数据库连接对象
public Connection getCon(){
try {
con = DriverManager.getConnection(URL,USERNAME,PASSWORD);
        } catch (SQLExceptionthrowables) {
throwables.printStackTrace();
        }
return con;
    }
//获取交通工具创建细节
public PreparedStatementcreateStatement(String sql){
try {
ps= getCon().prepareStatement(sql);
        } catch (SQLExceptionthrowables) {
throwables.printStackTrace();
        }
return ps;
    }
}

登录验证代码

if ("teacher".equals(choose)) {
//2.1 是否有该教师
result = dao1.login(userName, password);
if (result == 1) {
teacher = dao1.find_userName(userName);
request.getSession().setAttribute("teacher",teacher);
//request.getRequestDispatcher("/myweb/index.html").forward(request , response);
response.sendRedirect("/myweb/index_t.jsp");
        } else {
//request.getRequestDispatcher("/myweb/login_error.html").forward(request , response);
response.sendRedirect("/myweb/login_error.html");
        }
    } else if("user".equals(choose)){
result = dao.login(userName, password);
if (result == 1) {
//后面要拿用户id,在这通过userName遍历拿到 该user对象(应该从数据库里拿)
user = dao.find_userName(userName);
System.out.println(user.getUserName());
request.getSession().setAttribute("user",user);
//request.getRequestDispatcher("/myweb/index.html").forward(request , response);
response.sendRedirect("/myweb/index.html");
        } else {
//request.getRequestDispatcher("/myweb/login_error.html").forward(request , response);
response.sendRedirect("/myweb/login_error.html");
        }
    } else if ("admin".equals(choose)){
result = dao2.login(userName, password);
System.out.println(result);
if (result == 1) {
//后面要拿用户id,在这通过userName遍历拿到 该user对象(应该从数据库里拿)

admin = dao2.find_userName(userName);
System.out.println(admin.getAdminName());
request.getSession().setAttribute("admin",admin);
//request.getRequestDispatcher("/myweb/index.html").forward(request , response);
response.sendRedirect("/myweb/index_a.jsp");
        } else {
//request.getRequestDispatcher("/myweb/login_error.html").forward(request , response);
response.sendRedirect("/myweb/login_error.html");
        }
    }
//2.调用dao将查询验证信息推送给数据库

}

—————————————————————————————————
此处省略几千字
—————————————————————————————————

资源下载

对应完整的论文+源程序+数据库下载:

https://download.csdn.net/download/frank2102/19824267

以上是关于数据库课程设计 在线考试管理系统 大作业论文+源程序+数据库的主要内容,如果未能解决你的问题,请参考以下文章

数据库课程设计 餐厅管理系统 大作业论文+源程序+数据库

数据库课程设计 C++实现实验设备管理系统 课程设计论文+源程序+数据库+使用说明

数据库课程设计C#+SQL实现楼盘销售管理系统 大作业源代码+数据库+论文+使用说明

数据库课程设计 java实现高校学生选课管理系统论文+源程序+数据库

数据库课程设计 基于C#和Sqlsever开发的教材管理系统论文+源程序+数据库

C语言程序设计大作业 车牌管理系统 课程设计源程序+报告