基于javaweb+mysql的jsp+servlet选课管理系统(java+jsp+servlet+javascript+mysql)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的JSP+Servlet选课管理系统(java+jsp+servlet+javascript+mysql)
项目介绍
一款简单的Servlet + mysql + jsp的选课系统,主要有三大模块,管理员模块,教师模块,学生模块。管理员模块主要功能模块有系统管理,课程管理,教师管理,课表管理,学生管理;教师模块和学生模块的主要功能模块有个人信息和课表信息的查询,其中学生包括选课的功能。
软件架构
Servlet、mysql5.7、jsp、jdk1.8、tomcat8.0
安装教程
1.导入数据库xuanke.sql 2.导入项目,找到文件中util下的DB.java,修改你自己数据库的帐号和密码
public SelectKeBiao() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");//解决乱码
response.getWriter().append("Served at: ").append(request.getContextPath());
int id = Integer.parseInt(request.getParameter("id")); //获传过来的值,该id是课表的id
String oldName = java.net.URLEncoder.encode(request.getParameter("oldName"),"UTF-8");//给中文编码为UTF-8
int oldId = Integer.parseInt(request.getParameter("oldId"));//学生的id
//创建DB对象
DB db = new DB();
PreparedStatement ps;
ResultSet rs;
String sql;
//创建sql语句
//插入前要判断该学生之前是否有选过这门课
sql = "select * from xuekebiao where xuesheng_id=" + oldId + " and kebiao_id=" + id ;
//调用db的方法
ps = db.getPs(sql);
try {
rs = ps.executeQuery();//执行sql语句
if(rs.next()) {//返回的是布尔值,假如返回的是true,即有数据了,就不能选择该课程,跳到过渡页No
PrintWriter out = response.getWriter();
db.closed();// 关闭数据流
response.sendRedirect("xuesheng/no.jsp?oldName=" + oldName + "&oldId=" + oldId);
}else { //返回false,则可以选择
// 调用db中的方法
sql = "insert into xuekebiao(xuesheng_id,kebiao_id) values(?,?)";
ps = db.getPs(sql);
// 添加数据
ps.setInt(1, oldId);
ps.setInt(2, id);
ps.executeUpdate();// 执行sql语句
PrintWriter out = response.getWriter();
response.sendRedirect("xuesheng/ok.jsp?oldName=" + oldName + "&oldId=" + oldId);
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
rs = ps.executeQuery();// 执行sql语句,获得结果集
// 遍历以下结果,因为管理员的名称要传过去
while (rs.next()) {
id = rs.getInt("id");
xingming = rs.getString("xingming");
}
} catch (SQLException e) {
e.printStackTrace();
}
// userId > 0表示存在该用户
if (id > 0) {
request.setAttribute("id", id);
request.setAttribute("xingming", xingming);
db.closed();// 关闭数据库操作
RequestDispatcher dispatcher = request.getRequestDispatcher("laoshi/index.jsp"); // 跳转到老师首页
dispatcher.forward(request, response);
return;
} else { // 如果不存在,则提示用户错误信息
db.closed();// 关闭数据库操作
request.setAttribute("message", "请检查你的输入或选择是否正确,必要时可联系管理员!");
RequestDispatcher dispatcher = request.getRequestDispatcher("login.jsp"); // 使用req对象获取RequestDispatcher对象
dispatcher.forward(request, response);
return;
}
}
// 3为老师,3写前面的好处是防止空指针异常
if ("3".equals(chose)) {
int id = 0;
String xingming = "";
// 调用查找方法getPs(String sql),写入sql语句
String sql = "select * from xuesheng where loginname = '" + userName + "' and loginpw = '" + userPw + "'";
ps = db.getPs(sql);// 返回的是ps对象
try {
rs = ps.executeQuery();// 执行sql语句,获得结果集
// 遍历以下结果,因为管理员的名称要传过去
while (rs.next()) {
id = rs.getInt("id");
xingming = rs.getString("xingming");
}
} catch (SQLException e) {
e.printStackTrace();
}
// userId > 0表示存在该用户
if (id > 0) {
request.setAttribute("id", id);
request.setAttribute("xingming", xingming);
db.closed();// 关闭数据库操作
RequestDispatcher dispatcher = request.getRequestDispatcher("xuesheng/index.jsp"); // 跳转到老师首页
dispatcher.forward(request, response);
/**
* Servlet implementation class AddKeCheng
*/
@WebServlet("/AddKeCheng")
public class AddKeCheng extends HttpServlet {
private static final long serialVersionUID = 1L;
public AddKeCheng() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().append("Served at: ").append(request.getContextPath());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//添加课程操作
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
// 获取页面传过来的值
String bianhao = request.getParameter("bianhao");
String mingcheng = request.getParameter("mingcheng");
String keshi = request.getParameter("keshi");
String oldName = request.getParameter("oldName");
int oldId = Integer.parseInt(request.getParameter("oldId"));
// 创建数据库操作对象
DB db = new DB();
PreparedStatement ps;// 创建ps对象
String sql = "insert into kecheng(bianhao,mingcheng,keshi) values(?,?,?)";
// 调用db中的方法
ps = db.getPs(sql);
// 添加数据
try {
/**
* Servlet implementation class UpAdmin
*/
@WebServlet("/UpAdmin")
public class UpAdmin extends HttpServlet {
private static final long serialVersionUID = 1L;
public UpAdmin() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().append("Served at: ").append(request.getContextPath());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//更改密码操作
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
//获取页面传过来的值
int oldId = Integer.parseInt(request.getParameter("oldId"));//哪一个管理员的数据要更改
String oldName = request.getParameter("oldName");
String oldPw = request.getParameter("oldPw");
String newPw = request.getParameter("newPw");
//创建db对象
DB db = new DB();
//创建一个判断该管理员输入的旧密码是否一致的sql
/**
* Servlet implementation class UpLaoShi
*/
@WebServlet("/UpLaoShi")
public class UpLaoShi extends HttpServlet {
private static final long serialVersionUID = 1L;
public UpLaoShi() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().append("Served at: ").append(request.getContextPath());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//老师更改信息
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");//解决乱码
//获取页面传过来的值
int oldId = Integer.parseInt(request.getParameter("oldId"));//哪一个老师的数据要更改
String oldName = java.net.URLEncoder.encode(request.getParameter("oldName"),"UTF-8");//给中文编码为UTF-8
String oldPw = request.getParameter("oldPw");
String newPw = request.getParameter("newPw");
//创建db对象
DB db = new DB();
//创建一个判断该老师输入的旧密码是否一致的sql
String sql = "select * from laoshi where id='" + oldId + "' and loginpw='" + oldPw + "'";
//创建更新sql语句
String sql1 = "update laoshi set loginpw=? where id=?";
//创建一个rs结果集,ps对象
PreparedStatement ps;
ResultSet rs;
//调用db中的查询方法
ps = db.getPs(sql);
try {
rs = ps.executeQuery();//执行语句
//判断旧密码是否存在,rs.next()返回的是布尔值
if(rs.next()) {//存在,则执行更新操作
//调用更新操作
ps = db.getPs(sql1);
//要更新的数据
ps.setString(1, newPw);
ps.setInt(2, oldId);
ps.executeUpdate();//执行更新
//成功返回管理员信息页面,这里可以设置一个提示页面再跳,不设置也可以
//获取页面传过来的值
int oldId = Integer.parseInt(request.getParameter("oldId"));
String oldName = request.getParameter("oldName");
int id = Integer.parseInt(request.getParameter("id"));
String bianhao = request.getParameter("bianhao");
String xingming = request.getParameter("xingming");
String xingbie = request.getParameter("xingbie");
String nianling = request.getParameter("nianling");
String zhicheng = request.getParameter("zhicheng");
String loginname = request.getParameter("loginname");
String loginpw = request.getParameter("loginpw");
//创建db对象
DB db = new DB();
PreparedStatement ps;
//创建更新sql语句
String sql = "update laoshi set bianhao=?,xingming=?,xingbie=?,nianling=?,zhicheng=?,loginname=?,loginpw=? where id=?";
//调用更新操作
ps = db.getPs(sql);
//要更新的数据
try {
ps.setString(1, bianhao);
ps.setString(2, xingming);
ps.setString(3, xingbie);
ps.setString(4, nianling);
ps.setString(5, zhicheng);
ps.setString(6, loginname);
ps.setString(7, loginpw);
ps.setInt(8, id);
ps.executeUpdate();//执行更新
} catch (SQLException e) {
e.printStackTrace();
}
db.closed();//关闭数据流
//成功返回管理员信息页面,这里可以设置一个提示页面再跳,不设置也可以
PrintWriter out = response.getWriter();
response.sendRedirect("admin/laoshiMes.jsp?oldName=" + oldName + "&oldId=" + oldId);
doGet(request, response);
e.printStackTrace();
}
db.closed();//关闭数据流
//成功返回管理员信息页面,这里可以设置一个提示页面再跳,不设置也可以
PrintWriter out = response.getWriter();
response.sendRedirect("admin/laoshiMes.jsp?oldName=" + oldName + "&oldId=" + oldId);
doGet(request, response);
}
}
/**
* 选择课程
*/
@WebServlet("/SelectKeBiao")
public class SelectKeBiao extends HttpServlet {
private static final long serialVersionUID = 1L;
public SelectKeBiao() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");//解决乱码
response.getWriter().append("Served at: ").append(request.getContextPath());
int id = Integer.parseInt(request.getParameter("id")); //获传过来的值,该id是课表的id
String oldName = java.net.URLEncoder.encode(request.getParameter("oldName"),"UTF-8");//给中文编码为UTF-8
int oldId = Integer.parseInt(request.getParameter("oldId"));//学生的id
//创建DB对象
DB db = new DB();
PreparedStatement ps;
ResultSet rs;
//调用更新操作
ps = db.getPs(sql1);
//要更新的数据
ps.setString(1, newPw);
ps.setInt(2, oldId);
ps.executeUpdate();//执行更新
//成功返回管理员信息页面,这里可以设置一个提示页面再跳,不设置也可以
PrintWriter out = response.getWriter();
response.sendRedirect("xuesheng/xueshengMes.jsp?oldName=" + oldName + "&oldId=" + oldId);
}else {//不存在,则跳回修改页面,并提示错误
PrintWriter out = response.getWriter();
response.sendRedirect("xuesheng/xueshengEdi.jsp?oldName=" + oldName + "&oldId=" + oldId + "&message=" + "1");
}
} catch (SQLException e) {
e.printStackTrace();
}
doGet(request, response);
}
}
/**
* 修改老师密码
*/
/**
* Servlet implementation class UpLaoShi
*/
@WebServlet("/UpLaoShi")
public class UpLaoShi extends HttpServlet {
private static final long serialVersionUID = 1L;
public UpLaoShi() {
super();
}
}
/**
* 删除课表信息
*/
/**
* Servlet implementation class DeleKeBiao
*/
@WebServlet("/DeleKeBiao")
public class DeleKeBiao extends HttpServlet {
private static final long serialVersionUID = 1L;
public DeleKeBiao() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");//解决乱码
response.getWriter().append("Served at: ").append(request.getContextPath());
int id = Integer.parseInt(request.getParameter("id")); //获传过来的值
String oldName = request.getParameter("oldName");
int oldId = Integer.parseInt(request.getParameter("oldId"));
//创建DB对象
DB db = new DB();
String sql = "delete from kebiao where id=" + id;//创建sql语句
DB db = new DB();
PreparedStatement ps;
//创建更新sql语句
String sql = "update laoshi set bianhao=?,xingming=?,xingbie=?,nianling=?,zhicheng=?,loginname=?,loginpw=? where id=?";
//调用更新操作
ps = db.getPs(sql);
//要更新的数据
try {
ps.setString(1, bianhao);
ps.setString(2, xingming);
ps.setString(3, xingbie);
ps.setString(4, nianling);
ps.setString(5, zhicheng);
ps.setString(6, loginname);
ps.setString(7, loginpw);
ps.setInt(8, id);
ps.executeUpdate();//执行更新
} catch (SQLException e) {
e.printStackTrace();
}
db.closed();//关闭数据流
//成功返回管理员信息页面,这里可以设置一个提示页面再跳,不设置也可以
PrintWriter out = response.getWriter();
response.sendRedirect("admin/laoshiMes.jsp?oldName=" + oldName + "&oldId=" + oldId);
doGet(request, response);
}
}
/**
* 选择课程
*/
@WebServlet("/SelectKeBiao")
public class SelectKeBiao extends HttpServlet {
private static final long serialVersionUID = 1L;
}
/**
* 添加课表信息
*/
/**
* Servlet implementation class AddKeBiao
*/
@WebServlet("/AddKeBiao")
public class AddKeBiao extends HttpServlet {
private static final long serialVersionUID = 1L;
public AddKeBiao() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().append("Served at: ").append(request.getContextPath());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//添加课表记录
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
// 获取页面传过来的值
int kecheng_id = Integer.parseInt(request.getParameter("kecheng_id"));
String shijian = request.getParameter("shijian");
String jieci = request.getParameter("jieci");
String jiaoshi = request.getParameter("jiaoshi");
int laoshi_id = Integer.parseInt(request.getParameter("laoshi_id"));
String oldName = request.getParameter("oldName");
int oldId = Integer.parseInt(request.getParameter("oldId"));
// 创建数据库操作对象
String userPw = request.getParameter("userPw");
String chose = request.getParameter("chose");
//创建数据库操作对象
DB db = new DB();
PreparedStatement ps;//创建ps对象
ResultSet rs;//创建rs对象,结果集
//判断身份radio的值
//1为管理员,1写前面的好处是防止空指针异常
if("1".equals(chose)) {
int userId = 0;
//调用查找方法getPs(String sql),写入sql语句
String sql = "select * from admin where userName = '" + userName + "' and userPw = '" + userPw +"'";
ps = db.getPs(sql);//返回的是ps对象
try {
rs = ps.executeQuery();//执行sql语句,获得结果集
//遍历以下结果,因为管理员的名称要传过去
while(rs.next()) {
userId = rs.getInt("userId");
userName = rs.getString("userName");
}
} catch (SQLException e) {
e.printStackTrace();
}
//userId > 0表示存在该用户
if(userId > 0) {
request.setAttribute("userId", userId);
request.setAttribute("userName", userName);
db.closed();//关闭数据库操作
RequestDispatcher dispatcher = request.getRequestDispatcher("admin/index.jsp"); // 跳转到管理员首页
dispatcher.forward(request, response);
return;
}else { //如果不存在,则提示用户错误信息
db.closed();//关闭数据库操作
request.setAttribute("message", "请检查你的用户名或密码是否正确,必要时可练习管理员233333!");
RequestDispatcher dispatcher = request.getRequestDispatcher("login.jsp"); // 使用req对象获取RequestDispatcher对象
dispatcher.forward(request, response);
return;
}
}
/**
* Servlet implementation class DeleAdmin
*/
@WebServlet("/DeleAdmin")
public class DeleAdmin extends HttpServlet {
private static final long serialVersionUID = 1L;
public DeleAdmin() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");//解决乱码
response.getWriter().append("Served at: ").append(request.getContextPath());
int userId = Integer.parseInt(request.getParameter("userId")); //获传过来的值
String oldName = request.getParameter("oldName");
int oldId = Integer.parseInt(request.getParameter("oldId"));
//创建DB对象
DB db = new DB();
String sql = "delete from admin where userId = " + userId;//创建sql语句
//调用删除操作
db.del(sql);
//关闭数据流
db.closed();
PrintWriter out = response.getWriter();
response.sendRedirect("admin/adminMes.jsp?oldName=" + oldName + "&oldId=" + oldId);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//编辑老师信息
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
//获取页面传过来的值
int oldId = Integer.parseInt(request.getParameter("oldId"));
String oldName = request.getParameter("oldName");
int id = Integer.parseInt(request.getParameter("id"));
String bianhao = request.getParameter("bianhao");
String xingming = request.getParameter("xingming");
String xingbie = request.getParameter("xingbie");
String nianling = request.getParameter("nianling");
String zhicheng = request.getParameter("zhicheng");
String loginname = request.getParameter("loginname");
String loginpw = request.getParameter("loginpw");
//创建db对象
DB db = new DB();
PreparedStatement ps;
//创建更新sql语句
String sql = "update laoshi set bianhao=?,xingming=?,xingbie=?,nianling=?,zhicheng=?,loginname=?,loginpw=? where id=?";
//调用更新操作
ps = db.getPs(sql);
//要更新的数据
try {
ps.setString(1, bianhao);
ps.setString(2, xingming);
ps.setString(3, xingbie);
ps.setString(4, nianling);
ps.setString(5, zhicheng);
ps.setString(6, loginname);
ps.setString(7, loginpw);
ps.setInt(8, id);
ps.executeUpdate();//执行更新
} catch (SQLException e) {
e.printStackTrace();
}
db.closed();//关闭数据流
//成功返回管理员信息页面,这里可以设置一个提示页面再跳,不设置也可以
PrintWriter out = response.getWriter();
response.sendRedirect("admin/laoshiMes.jsp?oldName=" + oldName + "&oldId=" + oldId);
doGet(request, response);
}
}
int id = 0;
String xingming = "";
// 调用查找方法getPs(String sql),写入sql语句
String sql = "select * from xuesheng where loginname = '" + userName + "' and loginpw = '" + userPw + "'";
ps = db.getPs(sql);// 返回的是ps对象
try {
rs = ps.executeQuery();// 执行sql语句,获得结果集
// 遍历以下结果,因为管理员的名称要传过去
while (rs.next()) {
id = rs.getInt("id");
xingming = rs.getString("xingming");
}
} catch (SQLException e) {
e.printStackTrace();
}
// userId > 0表示存在该用户
if (id > 0) {
request.setAttribute("id", id);
request.setAttribute("xingming", xingming);
db.closed();// 关闭数据库操作
RequestDispatcher dispatcher = request.getRequestDispatcher("xuesheng/index.jsp"); // 跳转到老师首页
dispatcher.forward(request, response);
return;
} else { // 如果不存在,则提示用户错误信息
db.closed();// 关闭数据库操作
request.setAttribute("message", "请检查你的用户名或密码是否正确,必要时可练习管理员233333!");
RequestDispatcher dispatcher = request.getRequestDispatcher("login.jsp"); // 使用req对象获取RequestDispatcher对象
dispatcher.forward(request, response);
return;
}
}
doGet(request, response);
}
}
/**
* 学生更改密码
*/
/**
* Servlet implementation class DeleAdmin
*/
@WebServlet("/DeleAdmin")
public class DeleAdmin extends HttpServlet {
private static final long serialVersionUID = 1L;
public DeleAdmin() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");//解决乱码
response.getWriter().append("Served at: ").append(request.getContextPath());
int userId = Integer.parseInt(request.getParameter("userId")); //获传过来的值
String oldName = request.getParameter("oldName");
int oldId = Integer.parseInt(request.getParameter("oldId"));
//创建DB对象
DB db = new DB();
String sql = "delete from admin where userId = " + userId;//创建sql语句
//调用删除操作
db.del(sql);
//关闭数据流
db.closed();
PrintWriter out = response.getWriter();
response.sendRedirect("admin/adminMes.jsp?oldName=" + oldName + "&oldId=" + oldId);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
/**
* 删除学生信息
*/
/**
* Servlet implementation class AddXueSheng
*/
@WebServlet("/AddXueSheng")
public class AddXueSheng extends HttpServlet {
private static final long serialVersionUID = 1L;
public AddXueSheng() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().append("Served at: ").append(request.getContextPath());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//添加学生
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
// 获取页面传过来的值
String xuehao = request.getParameter("xuehao");
String xingming = request.getParameter("xingming");
String xingbie = request.getParameter("xingbie");
String nianling = request.getParameter("nianling");
String banji = request.getParameter("banji");
String loginname = request.getParameter("loginname");
String loginpw = request.getParameter("loginpw");
String oldName = request.getParameter("oldName");
int oldId = Integer.parseInt(request.getParameter("oldId"));
// 创建数据库操作对象
DB db = new DB();
PreparedStatement ps;// 创建ps对象
String sql = "insert into xuesheng(xuehao,xingming,xingbie,nianling,banji,loginname,loginpw) values(?,?,?,?,?,?,?)";
// 调用db中的方法
ps = db.getPs(sql);
// 添加数据