学生选课系统(一个JavaWeb入门级项目)
链接: https://pan.baidu.com/s/1Cl9GH_rawlwxWLA1ITosug
提取码: vter
要求具备如下知识:
- Java基础
- 前端基础(Html、css、JavaScript、Jquery)
- mysql数据库
- Web容器(Tomcat)
- Jsp/Servlet
通过该项目可以掌握哪些知识:
- 掌握整个项目的流程
- 掌握开发中的简单权限控制
- 掌握前端页面如何与后端整合
- 宏观把握一个项目
- 掌握echarts图表技术
技术选型
- Web容器:Apache Tomcat8.5
- 编程语言:Java8
- 数据库:MySQL5.6
- 开发IDE:Eclipse
- 数据库连接池:DBCP
- 数据库操作:DBUtils
- 动态网页:JSP/Servlet3.1
- 静态网页:HTML+CSS+Jquery
- 数据库设计软件:Power Designer
- 操作系统:Window/Linux
需求描述
角色:学生、老师、管理员
1)学生:基本信息+课程信息
操作流程
- 学生登录系统
- 选择课程并提交确认(确认之后则不能修改了)
- 考试系统
- 各种查询(查询各科成绩、查询总成绩、查询排名等
操作功能
- 各科成绩查询
- 总成绩查询
- 成绩排名、各科成绩排名
2) 老师:基本信息+所教课程
- 登录系统
- 课程管理
- 考试成绩录入
- 各种查询(学生的单科成绩、总成绩、排名)
- 各种统计(统计及格率、统计>80分以上的同学等)
3) 管理员:维护学生和老师信息、查询统计
- 登录系统
- 实现对学生的CURD
- 实现对老师的CURD
- 实现各种查询、统计
数据库设计
详情查看pdm图
项目搭建
- 创建项目(dynamic Web project)sct
- 建包
- com.hua.entity(model\vo):student实体、课程实体等
- com.hua.dao(Data Access Object 数据访问对象)操作数据库
- com.hua.utils:工具包
- com.hua.servlet(web\action\controller):存放servlet项目的文件
- com.hua.service(biz):存放业务逻辑的
- 配置数据库连接文件db.properties
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/sct?useUnicode=true&characterEncoding=UTF-8 username=root password=123456 |
4.加载db.properties配置文件
5.建立数据库连接
项目界面
- 登录页面login.html
- 首页:index.html
- 列表页面:list.html
- 新增或修改页面:add.html/edit.html
项目界面与代码整合
项目界面与代码整合(详见视频)
登录
- 管理员角色登录
- 老师角色登录
- 学生角色登录:
1、假设:后端设计数据库中账号字段的时候,有规律可循:
管理员:1001开头 1001001、1001002
老师:2001开头 2001001、2001002
老师:3001开头 3001001、3001002
2、假设:后端设计数据库中账号字段没有规律,此时需要添加一个登录类型:
登录权限过滤
PermissionFilter可以过滤是否登录的权限
权限的功能设置
管理员:
- 学生管理:CURD
- 老师管理:CURD、(老师课程设置)
- 课程管理:CURD
- 统计查询:(及格率、每个科目等等统计)
老师:
- 登录
- 录入分数
- 先查询自己所教的课程(管理员已经设置过了)
- 查询所教课程下的学生(学生角色选课的过程,学生登录后做选课)
- 最后录入评分,提交即可(老师角色评分即可)
- 查询统计(统计及格率、所教科目统计等等)
学生:
- 登录
- 选课
- 查询所有的课程
- 选课其实就是选择老师(因为课程关联老师)
- 考试(考试系统…),老师录入分数后
- 查询考试成绩、查询排名等
学生管理
- 列表查询
- 新增
- 修改
- 先查询,跳转到待修改页面
- 修改信息,然后提交完成
- 组合条件查询
- 分页
解决乱码问题采用过滤器
分页技术实现
分页:数据库分页查询语句+掌握jsp+java等综合技术
常见第一种
常用分页技术:
内存分页:一次性将数据查询出来放入内存,然后进行分页,每页的数据都是在内存中存储,所以查询效率高。适用于小数据量,要求查询效率较高。
数据库分页:每次从数据库中查询出来一次的数据,然后放入内存,如果点击下一页,则重新从数据库查询下一页数据放入内存,上一页内存数据就被GC回收。适用于数据量较大的,查询效率较低。
分页技术特点
页面大小(PageSize):已知设置的10;
总记录条数(TotalCount)数据库查询而来;
总页数(totalPage):TotalCount /pageSize = 85;
如果:totalCount%pageSize!=0 +1
如果:totalCount%pageSize==0 +0
页码数(PageNo):默认为1,
下一页 pageNo+1(尾页的时候,不加1了),
上一页pageNo-1(首页的时候不减1)
尾页:pageNo = totalPage
首页:pageNo = 1
组合条件查询
组合条件:一个条件、两个条件、三个及其以上
输入几个条件,按照条件查询结果(满足查询的条件与)。
组合条件查询出来的结果是&&的关系
-- 按照ID查询
select * from student where stuId = 1
-- 当前端录入学生姓名的时候
select * from student where stuName like '%2%'
-- 当前端录入姓名与学号的时候 ,执行的如下SQL
select * from student where stuName like '%2%' and stuNO like '%1%'
-- 通常情况下:字符串都按照like 模糊查询较多,数字:(=或者范围居多)
老师管理
- 列表查询
- 新增
- 修改
- 先查询,跳转到待修改页面
- 修改信息,然后提交完成
- 组合条件查询
- 分页
课程管理
- 列表查询
- 新增
- 修改
- 先查询,跳转到待修改页面
- 修改信息,然后提交完成
- 组合条件查询
- 分页
查询统计
统计图表
- 数据录入
- 查询统计
- 管理员-成绩区间统计
科目 | <60) | [60-70] | (70-85] | (85-100] |
Java | 1 | 10 | 5 | 6 |
Html | 1 | 10 | 5 | 6 |
Javascript | 1 | 10 | 5 | 6 |
2. 管理员-及格率
科目 | 及格率 | 参加考试人数 |
Java | 72% | 10 |
Html | 75% | 10 |
Javascript | 84% | 10 |
3. 老师-成绩区间统计(所教科目)
科目 | <60 | 60-70 | 70-85 | 85-100 |
Java | 1 | 10 | 5 | 6 |
4. 及格率
科目 | 及格率 | 参加考试人数 |
Java | 72% | 10 |
报表统计
图表只是数据的一种更为直观的展示形式而已,一般要求及时没有图表,数据表格的统计也是要有的,图表都是给领导看的。
下载apache echarts 文件zip
拷贝dist目录到项目中
使用引入echarts.min.j