# 本人大三上期的数据库课程设计
## 基于MYSQL的学生信息管理系统javaWeb实现
耗时20天
数据库使用的是MySQL
使用了Druid连接池
前端使用了html、css、javascript(少量)、jsp页面、servlet和servlet过滤器, 页面包含大量的动画效果
后端使用的是java。service层:table包的所有类;dao层:data包的所有类、tools包的所有类。 使用了JDBC模板,大大降低了代码重复。所有的sql语句都不是拼接的(除了使用LIMIT关键字分页), 不要想到sql注入。
sql文件在sql文件夹里,sql文件夹里有两个文件,一个是只有表结构的,一个是有表结构和数据的。 绝大部分数据都是程序生成的,生成的类在io包里,Add类,执行添加的代码在text文件夹下(JUnit5)。
## 关于密码:
password表中存放的是密码对应的散列值,学生的是MD5,教师的是SHA256,管理员的是SHA3_512。 初始密码是身份证后六位,如果不是,那就是我改了,更改后的密码是111111, 我只更改了校长和部分学生的密码。
## 关于代码:
代码总共33403行。文件数量:241,字符总数:920648,有效字符总数:669192,空格数:218053。
其中:
.java文件:71个,10616行;
.jsp文件:100个,14096行;
.html文件:1个,470行;
.css文件:69个,8221行
## 关于数据库连接池测试:
说明:使用不同的连接池测试1000次查询和10000次查询的时间消耗。
测试对象:druid连接池、C3P0连接池、自定义连接池适配器设计模式、 自定义连接池动态代理方式、不使用数据库连接池。
测试的sql语句:select * from administrators where administrator_no=10001。
数据库:MYSQL。
### 测试结果:
### Druid:
* 1000次查询:480毫秒
* 10000次查询:2337毫秒
### C3P0:
* 1000次查询:748毫秒
* 10000次查询:2854毫秒
### 自定义连接池适配器设计模式:
* 1000次查询:662毫秒
* 10000次查询:3441毫秒
### 自定义连接池动态代理模式:
* 1000次查询:632毫秒
* 10000次查询:3608毫秒
### 不使用数据库连接池:
* 1000次查询:12198.45毫秒(只测试了一次)
* 10000次查询:115499.75毫秒(只测试了一次)
### 总结:
* 对于MYSQL,Druid连接池查询性能最好,因为Druid连接池对MySQL进行了特别优化,其它3个数据库连接池性能差不多。
* 不使用数据库连接池比使用数据库连接池查询性能慢了30倍左右,所以,不管什么场合,尽量使用数据库连接池。
* 此测试有很大的局限性。真正的环境比测试环境还要复杂...
### 测试示例代码(以Druid为例):
```java
public class druid
{
/**
* 查询方法,此方法用于将一条记录封装成一个自定义对象并返回,如果resultSetHandler中参数传人的是Student.class,
* 则返回的是一个Student类的对象
*
* @param sql sql查询语句,建议通过主键查找,如果查询的sql语句有多条记录,则返回第一条记录
* sql语句实例:select * from table where primaryKey=?
* @param resultSetHandler ResultSetHandler<T>对象,使用:new BeanHandler<>(自定义对象.class)
* @param objs sql中的问号占位符,数量和顺序一定要一致
* @param <T> 泛型,自定义对象
* @return 返回自定义对象
*/
public static <T> T queryForObject(String sql, ResultSetHandler<T> resultSetHandler, Object... objs)
{
//定义泛型变量
T object = null;
//连接对象
Connection connection = null;
//预编译执行者对象
PreparedStatement preparedStatement = null;
//结果集对象
ResultSet resultSet = null;
try
{
//获取连接对象(Druid连接池)
connection = Druid.getConnection();
//C3P0连接池
//connection=tools.test.C3P0.getConnection();
//或者(自定义数据库连接池):
//connection = connectionPool.getConnection();
//或者直接获取(自定义JDBC工具类):
//connection = JDBC.getConnection();
//预编译sql,返回执行者对象
preparedStatement = connection.prepareStatement(sql);
//获取参数的源信息对象
ParameterMetaData parameterMetaData = preparedStatement.getParameterMetaData();
//获取参数个数
int count = parameterMetaData.getParameterCount();
//判断参数是否一致,如果不一致,异常抛出
if (objs.length != count)
{
throw new RuntimeException("queryForObject方法中参数个数不一致!");
}
//为问号占位符赋值
for (int i = 0; i < count; i++)
{
preparedStatement.setObject(i + 1, objs[i]);
}
//执行sql语句,返回结果集
resultSet = preparedStatement.executeQuery();
//通过beanHandler类中的handler方法对结果集进行处理
object = resultSetHandler.handler(resultSet);
}
catch (Exception e)
{
e.printStackTrace();
// final Writer writer = new StringWriter();
// final PrintWriter printWriter = new PrintWriter(writer);
// e.printStackTrace(printWriter);
// String stackTraceStr = writer.toString();
// ErrorLog.write(stackTraceStr);
}
finally
{
//释放资源
Druid.close(connection, preparedStatement, resultSet);
//或者:
//JDBC.close(connection, preparedStatement);
}
//返回结果
return object;
}
/**
* 测试用的查询方法
* @return data.Administrators对象
*/
public static data.Administrators select()
{
//sql语句
String sql = "select * from administrators where administrator_no=10001";
//查询
Administrators administrator = queryForObject(sql, new BeanHandler<>(Administrators.class));
//返回
if (administrator.getAdministrator_idcard() == null)
{
return null;
}
return administrator;
}
@Test
void start()
{
//查询一次,启动,加载
Administrators result = select();
if (result == null)
{
throw new RuntimeException("异常");
}
//开始计时
//------------------------------------------------------
long startTime = System.nanoTime(); //获取开始时间
//------------------------------------------------------
for (int i = 0; i < 10000; i++)
{
select();
}
//------------------------------------------------------
long endTime = System.nanoTime(); //获取结束时间
if ((endTime - startTime) < 1000000)
{
double final_runtime;
final_runtime = (endTime - startTime);
final_runtime = final_runtime / 1000;
System.out.println("算法运行时间: " + final_runtime + "微秒");
}
else if ((endTime - startTime) >= 1000000 && (endTime - startTime) < 10000000000L)
{
double final_runtime;
final_runtime = (endTime - startTime) / 1000;
final_runtime = final_runtime / 1000;
System.out.println("算法运行时间: " + final_runtime + "毫秒");
}
else
{
double final_runtime;
final_runtime = (endTime - startTime) / 10000;
final_runtime = final_runtime / 100000;
System.out.println("算法运行时间: " + final_run
没有合适的资源?快使用搜索试试~ 我知道了~
JavaWeb数据库课程设计/期末大作业-学生信息管理系统+源代码+文档说明+运行截图+数据库sql
共693个文件
jsp:200个
css:140个
class:119个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 78 浏览量
2023-12-27
02:24:06
上传
评论 3
收藏 72.44MB ZIP 举报
温馨提示
- - 小白不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 -------- ------------------------------------
资源推荐
资源详情
资源评论
收起资源包目录
JavaWeb数据库课程设计/期末大作业-学生信息管理系统+源代码+文档说明+运行截图+数据库sql (693个子文件)
war包一键部署程序.7z 347KB
github.bat 35B
Add.class 16KB
Add.class 16KB
JDBCTemplate.class 12KB
JDBCTemplate.class 12KB
ConnectionAdapter.class 8KB
ConnectionAdapter.class 8KB
Student.class 7KB
Student.class 7KB
ErrorLog.class 6KB
ErrorLog.class 6KB
StudentTest.class 6KB
Score.class 6KB
Score.class 6KB
JDBC.class 5KB
JDBC.class 5KB
MD5.class 5KB
MD5.class 5KB
Druid.class 5KB
Druid.class 5KB
Student.class 5KB
Student.class 5KB
connection_adaptor.class 5KB
connection_proxy.class 5KB
noDataSource.class 4KB
News.class 4KB
News.class 4KB
C3P0.class 4KB
druid.class 4KB
ScoreTest.class 4KB
CheckCodeServlet.class 4KB
CheckCodeServlet.class 4KB
TeacherTest.class 4KB
Administrators.class 4KB
Administrators.class 4KB
Teacher.class 4KB
Teacher.class 4KB
Teach.class 3KB
Teach.class 3KB
ConnectionPool.class 3KB
ConnectionPool.class 3KB
LoginLog.class 3KB
LoginLog.class 3KB
Score.class 3KB
Score.class 3KB
Forum.class 3KB
Forum.class 3KB
Teacher.class 3KB
Teacher.class 3KB
Administrators.class 3KB
Administrators.class 3KB
AdministratorsTest.class 3KB
Course.class 3KB
Course.class 3KB
Course.class 3KB
Course.class 3KB
Class.class 3KB
Class.class 3KB
Forum.class 3KB
Forum.class 3KB
BeanListHandler.class 3KB
BeanListHandler.class 3KB
Configuration.class 3KB
Configuration.class 3KB
News.class 3KB
News.class 3KB
Teach.class 3KB
Teach.class 3KB
Class.class 3KB
Class.class 3KB
Customize.class 2KB
Customize.class 2KB
NewsTest.class 2KB
AdministratorsFilter.class 2KB
AdministratorsFilter.class 2KB
LoginLogTest.class 2KB
BeanHandler.class 2KB
BeanHandler.class 2KB
TeacherFilter.class 2KB
StudentFilter.class 2KB
TeacherFilter.class 2KB
StudentFilter.class 2KB
LoginLog.class 2KB
LoginLog.class 2KB
CourseTest.class 2KB
ClassTest.class 2KB
TeachTest.class 2KB
AdministratorsPassword.class 2KB
AdministratorsPassword.class 2KB
TeacherPassword.class 2KB
TeacherPassword.class 2KB
StudentPassword.class 2KB
StudentPassword.class 2KB
AdministratorsPassword.class 2KB
AdministratorsPassword.class 2KB
SHA3_512.class 2KB
SHA3_512.class 2KB
SHA256.class 2KB
SHA256.class 2KB
共 693 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
机器学习的喵
- 粉丝: 2026
- 资源: 1783
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- A4 彩机常见问题.pdf
- A3 机器常见问题.pdf
- 非表单形式文件上传和下载
- 500kW储能变流器(PCS) 采用T型三电平模块,结构三维、控制电路、驱动电路,全部的BOM,型式试验报告等全部资料 没有程序源码,本交付的资料与本描述一致,未提及的可能没有
- 免费拆解:快手无人直播,新手小白如何0基础上手,详细教程.mp4
- 大数据实验6数据和python源代码.7z
- 千川投流实操指南:付费基本功千川应用投放篇进阶篇素材创作问题诊断.mp4
- 千川投流实战课:0-1打品思路,涵盖思维打法、数据分析与人群包实操教学.mp4
- ctf攻防挑战赛基础工具包,基础必备,种类齐全
- 变频器资料:英威腾CHE100-2406变频器资料,应用文档 非常适合学习 资料属于文档
- 轻松制作创业类视频。一天被动加精准创业粉500+(附素材).mp4
- 基于自适应代理辅助的多目标进化算法框架(ASA-MOEA/D)求解昂贵约束优化问题
- 大数据(选修)期末复习资料.7z
- 非线性结构分析中的弧长法:原理、实现与应用
- 十年 一遇 市场机遇,明确指引方向,转换思维,坚定执行,方能不被时代....mp4
- 视频号【灵狐赛道2.0】一条视频三种收益 100%原创 小白三天收益破百.mp4
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功