项目介绍
学生选课系统,有学生、老师、管理员三种角色。
学生端权限
学生登录系统
选择课程并提交确认
各科成绩查询
总成绩查询
成绩排名、各科成绩排名
老师端权限
登录系统
课程管理(实现对课程的CURD)
考试成绩录入
各种查询(学生的单科成绩、总成绩、排名)
各种统计(统计及格率、统计80分以上的同学等)
管理端权限
登录系统
实现对学生的CURD
实现对老师的CURD
实现各种查询、统计
学完这个项目后的收获:
掌握项目开发的流程
掌握开发中的简单权限控制
掌握前端页面如何与后端整合
宏观把握一个项目
掌握echarts图表技术
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;
6.是否Maven项目: 否;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目
技术栈
前端基础(Html、css、JavaScript、Jquery)
mysql数据库
Web容器(Tomcat)
Jsp/Servlet
使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,然后运行;
3. 将项目中news.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,在浏览器中输入localhost:8080/jsp_zxmszssys
管理员账号/密码:admin/123456
老师账号/密码:zhangping/123456
学生账号/密码:0001/123456
学生管理控制层:
@WebServlet("/student")
public class StudentServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("======StudentServlet========");
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String method = request.getParameter("method");
if("list".equals(method)) {
this.list(request, response);
}else if("add".equals(method)) {
this.add(request, response);
}else if("edit".equals(method)) {
this.findById(request, response);
}else if("editsubmit".equals(method)) {
this.editsubmit(request, response);
}else if("delete".equals(method)) {
this.delete(request, response);
}else if("detail".equals(method)) {
this.detail(request, response);
}
}
private void delete(HttpServletRequest request, HttpServletResponse response) {
String id = request.getParameter("id");
try {
DaoFactory.getInstance().getStudentDao().delete(Integer.parseInt(id));
//直接重定向到列表页面
response.sendRedirect(PathUtils.getBasePath(request)+"student?method=list");
} catch (Exception e) {
e.printStackTrace();
}
}
private void editsubmit(HttpServletRequest request, HttpServletResponse response) {
Integer stuId = Integer.parseInt(request.getParameter("stuId"));
String stuNo = request.getParameter("stuNo");
String stuName = request.getParameter("stuName");
Student student = new Student();
student.setStuName(stuName);
student.setStuNo(stuNo);
student.setStuId(stuId);
try {
DaoFactory.getInstance().getStudentDao().update(student);
//直接重定向到列表页面
response.sendRedirect(PathUtils.getBasePath(request)+"student?method=list");
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void findById(HttpServletRequest request, HttpServletResponse response) {
String id = request.getParameter("id");
try {
Student student = DaoFactory.getInstance().getStudentDao().findById(Integer.parseInt(id));
request.setAttribute("student", student);
request.getRequestDispatcher("page/student/update.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
private void detail(HttpServletRequest request, HttpServletResponse response) {
Student entity = (Student)request.getSession().getAttribute("user");
try {
Student student = DaoFactory.getInstance().getStudentDao().findById(entity.getStuId());
List<Sc> list = DaoFactory.getInstance().getScDao().listByStuId(entity.getStuId());
request.setAttribute("student", student);
for(Sc sc:list) {
Course c = DaoFactory.getInstance().getCourseDao().findById(sc.getcId());
sc.setcName(c.getcName());
}
request.setAttribute("list", list);
request.getRequestDispatcher("page/student/detail.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
private void add(HttpServletRequest request, HttpServletResponse response) {
String stuNo = request.getParameter("stuNo");
String stuName = request.getParameter("stuName");
String stuPwd = request.getParameter("stuPwd");
Student student = new Student();
student.setStuName(stuName);
student.setStuNo(stuNo);
student.setStuPwd(MD5.encrypByMd5(MD5.encrypByMd5(stuPwd)));
try {
DaoFactory.getInstance().getStudentDao().add(student);
//直接重定向到列表页面
response.sendRedirect(PathUtils.getBasePath(request)+"student?method=list");
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void list(HttpServletRequest request, HttpServletResponse response) {
//当前页码
Integer pageNo = getIntParameter(request, "pageNo");
Integer stuId = getIntParameter(request, "stuId");
String stuName = request.getParameter("stuName");
String stuNo = request.getParameter("stuNo");
Student student = new Student();
student.setStuId(stuId);
student.setStuName(stuName);
student.setStuNo(stuNo);
//构造了一个pageInfo对象
PageInfo<Student> pageInfo = new PageInfo<>(pageNo);
try {
pageInfo = DaoFactory.getInstance().getStudentDao().list(student,pageInfo);
} catch (SQLException e1) {
e1.printStackTrace();
}
try {
request.setAttribute("pageInfo", pageInfo);
//回写到页面
request.setAttribute("student", student);
request.getRequestDispatcher("page/student/list.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
public Integer getIntParameter(HttpServletRequest request,String name) {
if(StringUtils.isNoneBlank(request.getParameter(name))) {
return Integer.parseInt(request.getParameter(name));
}else {
return null;
}
}
}
教师管理控制层:
@WebServlet("/teacher")
public class TeacherServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String method = request.getParameter("method");
if("list".equals(method)) {
this.list(request, response);
}else if("add".equals(method)) {
this.add(request, response);
}else if("edit".equals(method)) {
this.findById(request, response);
}else if("editsubmit".equals(method)) {
this.editsubmit(request, response);
}else if("delete".equals(method)) {
this.delete(request, response);
}
}
private void delete(HttpServletRequest request, HttpServletResponse response) {
String id = request.getParameter("id");
try {
DaoFactory.getInstance().getTeacherDao().delete(Integer.parseInt(id));
//直接重定向到列表页面
response.sendRedirect(PathUtils.getBasePath(request)+"teacher?method=list");
} catch (Exception e) {
e.printStackTrace();
}
}
private void editsubmit(HttpServletRequest request, HttpServletResponse response) {
Integer tId = Integer.parseInt(request.getParameter("tId"));
String tName = request.getParameter("tName");
String userName = request.getParameter("userName");
Teacher teacher = new Teacher();
teacher.settId(tId);
teacher.settName(tName);
teacher.setUserName(userName);
try {
DaoFactory.getInstance().getTeacherDao().update(teacher);
//直接重定向到列表页面
response.sendRedirect(PathUtils.getBasePath(request)+"teacher?method=list");
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void findById(HttpServletRequest request, HttpServletResponse response) {
String id = request.getParameter("id");
try {
Teacher teacher = DaoFactory.getInstance().getTeacherDao().findById(Integer.parseInt(id));
request.setAttribute("teacher", teacher);
request.getRequestDispatcher("page/teacher/update.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
private void add(HttpServletRequest request, HttpServletResponse response) {
String tName = request.getParameter("tName");
String userName = request.getParameter("userName");
String pwd = request.getParameter("pwd");
Teacher teacher = new Teacher();
teacher.setUserName(userName);
teacher.settName(tName);
teacher.setPwd(MD5.encrypByMd5(MD5.encrypByMd5(pwd)));
try {
DaoFactory.getInstance().getTeacherDao().add(teacher);
//直接重定向到列表页面
response.sendRedirect(PathUtils.getBasePath(request)+"teacher?method=list");
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void list(HttpServletRequest request, HttpServletResponse response) {
//当前页码
Integer pageNo = getIntParameter(request, "pageNo");
//查询条件
Integer tId = getIntParameter(request, "tId");
String tName = request.getParameter("tName");
String userName = request.getParameter("userName");
Teacher teacher = new Teacher();
teacher.setUserName(userName);
teacher.settName(tName);
teacher.settId(tId);
//构造了一个pageInfo对象
PageInfo<Teacher> pageInfo = new PageInfo<>(pageNo);
try {
pageInfo = DaoFactory.getInstance().getTeacherDao().list(teacher,pageInfo);
} catch (SQLException e1) {
e1.printStackTrace();
}
try {
request.setAttribute("pageInfo", pageInfo);
//回写到页面
request.setAttribute("teacher", teacher);
request.getRequestDispatcher("page/teacher/list.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
public Integer getIntParameter(HttpServletRequest request,String name) {
if(StringUtils.isNoneBlank(request.getParameter(name))) {
return Integer.parseInt(request.getParameter(name));
}else {
return null;
}
}
}
登录管理控制层:
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String userName = req.getParameter("userName");
String password = req.getParameter("password");
String type = req.getParameter("type");
if(StringUtils.isBlank(userName) || StringUtils.isBlank(password) || StringUtils.isBlank(type)) {
req.setAttribute("error", "录入信息不能为空!");
req.getRequestDispatcher("login.jsp").forward(req, resp);
return;
}
HttpSession session = req.getSession();
if(StringUtils.isNotBlank(type)) {
try {
if("0".equals(type)) {
//学生登录验证
Student student = DaoFactory.getInstance().getStudentDao().login(userName, MD5.encrypByMd5(MD5.encrypByMd5(password)));
if(student != null) {
session.setAttribute("user", student);
session.setAttribute("type", type);
resp.sendRedirect("index.jsp");
}else {
req.setAttribute("error", "用户名或密码错误!");
req.getRequestDispatcher("login.jsp").forward(req, resp);
}
}else if("1".equals(type)) {
//老师登录验证
Teacher teacher = DaoFactory.getInstance().getTeacherDao().login(userName, MD5.encrypByMd5(MD5.encrypByMd5(password)));
if(teacher != null) {
session.setAttribute("user", teacher);
session.setAttribute("type", type);
resp.sendRedirect("index.jsp");
}else {
req.setAttribute("error", "用户名或密码错误!");
req.getRequestDispatcher("login.jsp").forward(req, resp);
}
}else {
//管理员登录验证
Admin admin = new Admin();
admin.setUserName(userName);
admin.setPwd(MD5.encrypByMd5(MD5.encrypByMd5(password)));
Admin entity = DaoFactory.getInstance().getAdminDao().login(admin);
if(entity != null) {
//执行跳转
session.setAttribute("user", entity);
session.setAttribute("type", type);
resp.sendRedirect("index.jsp");
}else {
//用户或密码错误!!
req.setAttribute("error", "用户名或密码错误!");
req.getRequestDispatcher("login.jsp").forward(req, resp);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}else {
}
}
}