数据库课程设计 在线考试管理系统 大作业论文+源程序+数据库
Posted CSDN专家-小兔子编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库课程设计 在线考试管理系统 大作业论文+源程序+数据库相关的知识,希望对你有一定的参考价值。
一、在线考试管理系统
包含完整的论文(5000+字数)+源程序+数据库,可作为数据库相关课程的课程设计或者大作业。
二、目录
—————————————————————————————————
此处省略几千字
—————————————————————————————————
三、需求分析
功能需求
需求分析结果,明确了该系统的功能有:
学生管理:学生通过用户端可查询个人信息,可以选择老师,查询考试成绩
在线考试管理:学生参加考试,后台随机出一套试卷,学生进行考试
成绩查询:学生通过用户端查询成绩,老师通过教师端查询选择自己的学生成绩
教师管理:教师注册、查询、修改、删除试题,查看选择自己的学生以及该成绩
管理员管理:管理员通过管理员系统对用户、教师信息进行增删查
数据流图
顶层图
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将查询验证信息推送给数据库
}
—————————————————————————————————
此处省略几千字
—————————————————————————————————
资源下载
对应完整的论文+源程序+数据库下载:
以上是关于数据库课程设计 在线考试管理系统 大作业论文+源程序+数据库的主要内容,如果未能解决你的问题,请参考以下文章
数据库课程设计 C++实现实验设备管理系统 课程设计论文+源程序+数据库+使用说明
数据库课程设计C#+SQL实现楼盘销售管理系统 大作业源代码+数据库+论文+使用说明
数据库课程设计 java实现高校学生选课管理系统论文+源程序+数据库