Java项目:JSP+Servlet开发学生选课系统(含简单说明文档)

作者主页:夜未央5788

 简介:Java领域优质创作者、Java项目、学习资料、技术互助

文末获取源码

项目介绍

学生选课系统,有学生、老师、管理员三种角色。
学生端权限

学生登录系统
选择课程并提交确认
各科成绩查询
总成绩查询
成绩排名、各科成绩排名

老师端权限

登录系统
课程管理(实现对课程的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

运行截图

管理员角色

 

 

 

 

 

 

教师角色

 

 

 

 

学生角色

 

 

相关代码 

CourseServlet

package com.hua.servlet;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.StringUtils;

import com.hua.dao.DaoFactory;
import com.hua.entity.Student;
import com.hua.entity.Teacher;
import com.hua.entity.Course;
import com.hua.utils.MD5;
import com.hua.utils.PageInfo;
import com.hua.utils.PathUtils;

@WebServlet("/course")
public class CourseServlet 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("v_add".equals(method)) {
			this.v_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().getCourseDao().delete(Integer.parseInt(id));
			//直接重定向到列表页面
			response.sendRedirect(PathUtils.getBasePath(request)+"course?method=list");
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
	private void editsubmit(HttpServletRequest request, HttpServletResponse response) {
		String cName = request.getParameter("cName");
		Integer cId = getIntParameter(request, "cId");
		//老师ID
		Integer tId = Integer.parseInt(request.getParameter("tId"));
		Course course = new Course();
		course.setcId(cId);
		course.setcName(cName);
		//new一个Teacher对象,然后设置ID,然后再设置course对象的setTeacher关联 一下即可
		Teacher teacher = new Teacher();
		teacher.settId(tId);
		course.setTeacher(teacher);
		try {
			DaoFactory.getInstance().getCourseDao().update(course);
			//直接重定向到列表页面
			response.sendRedirect(PathUtils.getBasePath(request)+"course?method=list");
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	private void findById(HttpServletRequest request, HttpServletResponse response) {
		String id = request.getParameter("id");
		PageInfo<Teacher> pageInfo = new PageInfo<>(1);
		pageInfo.setPageSize(1000);
		try {
			Course course = DaoFactory.getInstance().getCourseDao().findById(Integer.parseInt(id));
			pageInfo = DaoFactory.getInstance().getTeacherDao().list(null, pageInfo);
			request.setAttribute("course", course);
			request.setAttribute("teachers", pageInfo.getList());
			request.getRequestDispatcher("page/course/update.jsp").forward(request, response);
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
	
	private void v_add(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException  {
		PageInfo<Teacher> pageInfo = new PageInfo<>(1);
		pageInfo.setPageSize(1000);
		try {
			pageInfo = DaoFactory.getInstance().getTeacherDao().list(null, pageInfo);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		request.setAttribute("teachers", pageInfo.getList());
		request.getRequestDispatcher("page/course/add.jsp").forward(request, response);
	}
	
	private void add(HttpServletRequest request, HttpServletResponse response) {
		String cName = request.getParameter("cName");
		//老师ID
		Integer tId = Integer.parseInt(request.getParameter("tId"));
		Course course = new Course();
		course.setcName(cName);
		//new一个Teacher对象,然后设置ID,然后再设置course对象的setTeacher关联 一下即可
		Teacher teacher = new Teacher();
		teacher.settId(tId);
		course.setTeacher(teacher);
		try {
			DaoFactory.getInstance().getCourseDao().add(course);
			//直接重定向到列表页面
			response.sendRedirect(PathUtils.getBasePath(request)+"course?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 cId = getIntParameter(request, "cId");
		String cName = request.getParameter("cName");
		String tName = request.getParameter("tName");
		String userName = request.getParameter("userName");
		
		Course course = new Course();
		course.setcId(cId);
		course.setcName(cName);
		Teacher teacher = new Teacher();
		teacher.settName(tName);
		teacher.setUserName(userName);
		course.setTeacher(teacher);
		
		//构造了一个pageInfo对象
		PageInfo<Course> pageInfo = new PageInfo<>(pageNo);
		try {
			pageInfo = DaoFactory.getInstance().getCourseDao().list(course,pageInfo);
		} catch (SQLException e1) {
			e1.printStackTrace();
		}
		try {
			request.setAttribute("pageInfo", pageInfo);
			//回写到页面
			request.setAttribute("course", course);
			request.getRequestDispatcher("page/course/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;
		}
	}
}

LoginServlet

package com.hua.servlet;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.lang3.StringUtils;

import com.hua.dao.AdminDao;
import com.hua.dao.DaoFactory;
import com.hua.dao.StudentDao;
import com.hua.dao.TeacherDao;
import com.hua.entity.Admin;
import com.hua.entity.Student;
import com.hua.entity.Teacher;
import com.hua.utils.MD5;

@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 {
			
		}
	}
	
}

MainServlet

package com.hua.servlet;

import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.StringUtils;

import com.hua.dao.DaoFactory;
import com.hua.entity.Student;
import com.hua.entity.Teacher;
import com.hua.entity.Course;
import com.hua.entity.Sc;
import com.hua.utils.MD5;
import com.hua.utils.PageInfo;
import com.hua.utils.PathUtils;

@WebServlet("/main")
public class MainServlet 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 {
		try {
			List<Map<String, Object>> list = DaoFactory.getInstance().getScDao().query_jgl();
			request.setAttribute("list", list);
			List<Map<String, Object>> top5List = DaoFactory.getInstance().getScDao().top5();
			request.setAttribute("top5List", top5List);
			request.getRequestDispatcher("main.jsp").forward(request, response);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
}

如果也想学习本系统,下面领取。关注并回复:130jsp

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
采用eclipse和MySQL开发学生在线选课系统。功能如下: 1、权限控制:采用过滤器实现用户登录和权限的控制。同时,每个学生一个账户(学号)可以登录系统进行个人信息的管理,并完成选课操作;管理员(固定为admin用户)可以管理全部学生信息,查看每个学生的选课情况,并生成统计表。 2、数据库要求:包括学生基本信息表、课程信息表、学生选课信息表。 3、学生信息管理要求 (1)信息项:学号、姓名、身份证号码、班级、性别(男、女)、登录密码(加密存储,加密方法网上找一个)、籍贯(省份选择)、家庭住址、联系电话、兴趣爱好(运动、读书、音乐、旅游、社交); (2)学生信息管理:有显示学生基本信息的界面,每个学生只可以打开自己的信息界面;界面中,如果是学生身份,可以修改除了学号、姓名之外的全部信息。如果是管理员身份,可以全部管理,并提供学生信息的添加、修改和删除功能。 (3)学生信息列表:有列表显示学生信息的界面;如果是学生身份,列表只有本人一条信息;如果是管理员,列表可以有全部学生。可以按照学号、姓名快速查询功能。 4、选课中心要求: (1). 二级菜单:选课操作、选课列表 (2). 课程的信息项:课程编号、课程名称; (3). 学生选课操作:只有学生可用,管理员不可用。列表显示当前学生没有选中的课程名称,一次可以选取1个或者多个课程,点击保存即可完成选课。 (4). 学生选课列表:列表显示学生已经选中课程的信息;如果是学生身份,列表只有本人已经选中课程的列表;如果是管理员,列表可以已经有选课记录的学生。点击学生学号后,可以查看该学生的选课记录。 5、统计分析要求 (1). 二级菜单:学生信息统计、选课情况统计; (2).学生信息统计:统计每个学生的基本信息,包括学生籍贯统计(籍贯、学生数量)、爱好统计(爱好、学生数量)两个统计。 (3).选课情况统计:统计每个学生的选课数量,注意:没有选课的学生也要显示,按照选课数量倒序排列。 这个是我的JavaWeb课程设计作业,由于能力有限,这个系统的一些细节还不够完善,比如没有密码加密和分页,页面不够美观,以后会完善的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜未央5788

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值