学完java web后,期末期间用所学知识写了一个简单的学生管理系统,现在有空整理分享下。
注意:本文章仅供参考和学习,源码和数据库设计在文章的底部,点击展开然后往下翻就可以找到,其实数据库就六张表,很简单,可以看尾部第11项 数据实例表 自己写。导入报异常可能是导包的问题,BUG千千万,原因很多种,自己复制下eclipse报的错误报告,然后百度一下,基本能解决,因为我们现在遇到的错误,很多前人已经遇到并解决了,或者找身边的大佬帮忙看看。我只偶尔上线,做课程设计应急的话请直接点击链接下载,想学到东西的建议跟着文章自己写一写。
2020-05-17更新:好多人私信我要代码,我以为传到CSDN的盘上你们都能拿到的,但看见CSDN的积分要求越来越高,我就知道大伙搞不定了。我比较讨厌不劳而获,直接拿着项目跑结果的行为,但考虑的部分人在复现时确实存在着些许问题,可能是我博客写的不够好的原因吧,所以现在我重新上传至百度网盘,供大家下载,希望大家能在这基础上做一些改进,比如说数据库写的很烂,你们可以写一些视图、存储过程等,功能上也可以作进一步的优化,前端也可以做的更精致……但别问我技术问题,这个课设项目做完后我没有去维护,一些原因下,我也不想去改bug。
链接:https://pan.baidu/s/1xRonKzSeIuEK7JEn6rvhzA
提取码:4pgr
复制这段内容后打开百度网盘手机App,操作更方便哦
1.简述
编写该系统的目的是为了对学生的成绩进行信息化管理,降低教师管理的成本,提高工作效率。该系统有六张数据表:学生表、教师(管理员)表、成绩表、课程表、班级表、登录表。学生表和教师表用来存储系统用户;成绩表用来存储学生成绩;课程表用来储存课程信息;班级表用来存储班级信息;登录表用来存储登录信息。该系统使用了MVC设计模式,实现了权限管理、登录登出、自动登录、验证码,成绩的增加、删除、修改、查询等功能。数据库使用的是mysql8.0,数据库的版本不同,那么连接驱动和连接方式也有所不同。
2.流程图
2.1登录
2.2管理员界面
2.3学生界面
3.项目目录
3.1项目目录图
3.2项目目录结构
- Controller(控制器)包下存放的是负责转发请求,对请求进行处理的Servlet类。其中有AddScoreServlet.java(添加成绩)、AutoLoginFilter.java(自动登录)、CheckServlet.java(生成验证码)、DelScoreServlet.java(删除成绩)、ExitServlet.java(返回)、FindScoreServlet.java(查询成绩)、LoginServlet.java(登陆)、LogoutServlet.java(登出)、UpdScoreServlet.java(更改删除成绩)。
- Dao(数据访问)包下存放的是负责进行数据库访问的类。其中有AdministratorDao.java(管理员)、ClassesDao.java(班级)、CourseDao(课程)、GradeDao(成绩)、StudentDao(学生)、UserDao(登陆信息)。
- Model(模型)包下存放的是JavaBean类。其中包括Administrator.java(管理员)、Classes.java(班级)、Course(课程)、Grade(成绩)、Student(学生)、User(登陆信息)。
- Util(多用途)包下存放的是工具类。其中包括JDBCUtil.java(数据连接)。
- Jsp(动态网页)包下存放的是动态网页界面。其中包括AddScore.jsp(添加成绩界面)、Admin.jsp(管理员界面)、FindScore.jsp(查询成绩界面)、Foot.jsp(公用界面)、Login.jsp(登录界面)、Student.jsp(学生界面)、UpdDelScore.jsp(更改删除界面)。
3.3MVC模式
4.技术说明
4.1 权限管理
本系统的使用者分为两种:学生和管理员(教师)。权限管理分为数据权限、页面权限、功能权限。数据权限是控制用户看那些数据;页面权限是控制用户可以进入哪些页面;功能权限是控制用户可以使用哪些功能。这些权限的实现通过:EequesDispatch接口中的forward()进行请求转发技术、HttpServletResponse接口中的sendRedirect()进行重定向技术、HttpSession接口进行传参技术、EL表达式中隐式对象PageContest和SessionScope、JSTL中Core标签库的<c:if>和<c:choose>和<c:when>。每个JSP页面在进行动态加载时,都会先在标签中对session域的user.identity属性进行判断,没有登陆或没有相关权限的,则不提供该界面的操作权限,并提供登录链接。
4.2 登录登出
登录登出功能的实现主要运用了Session、Cookie技术。登录操作:当JSP的From表单提交相关的数据后,Servlet类会对提交的账号、密码、验证码、身份进行判断,通过对数据库中相关表单查询的得出结果。如果结果正确,则会将用户的状态user存入session域,接着发送一个用户的Cookie给浏览器,最后自动跳转到首页,否则会提示相应的错误提示。登出操作:首先是session对象无效,然后删除自动登录的Cookie,最后跳转至登陆界面。
4.3自动登录
自动登录技术的实现,运用了Cookie会话、Filter过滤器等技术。单一的使用Cookie也可以实现自动登录,但这样做会造成每个Servlet类中出现大量重复的校验程序,所以加入Filter对服务器的所有请求进行拦截。Filter会对用户的访问请求进行拦截,判断请求是否包含用户自动登录的Cookie。如果包含,则获取Cookie中的用户名、密码、身份,并验证用户名、密码、身份是否正确。如果正确,则将用户的登录信息封装到User对象存入Session域中,完成自动登录,完成自动登录
4.4验证码
验证码技术的实现,主要运用了Session技术。先产生4位随机数和图片,然后将图像以字节流的形式输出至客户端,最后把随机数存储至Session域中。
4.5成绩的增删改查
增、删、查、改的实现,主要运用了Java数据库连接技术。我使用的是MySQL。在与数据库连接前,需要安装MySQL的连接驱动jar包,然后注册数据库驱动,最后通过DiverManager获取数据库Connection连接对象。连接成功后再获取Statement状态对象,然后就可以使用Statement对象进行数据库的操作。对于查询操作的结果,运用ResultSet对象进行存储。
5Controller包下的类
5.1AddScoreServlet类
package Controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import Dao.AdministratorDao;
import Dao.ClassesDao;
import Dao.CourseDao;
import Dao.GradeDao;
import Dao.StudentDao;
import Model.Administrator;
import Model.Classes;
import Model.Course;
import Model.Grade;
import Model.Student;
/**
* Servlet implementation class AddScoreServlet
*/
public class AddScoreServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
String stuId = request.getParameter("stuId");
String stuName = request.getParameter("stuName");
String courseId = request.getParameter("courseId");
String tcId = request.getParameter("tcId");
String courseGrade = request.getParameter("courseGrade");
String classId = request.getParameter("classId");
try{
StudentDao stuDao = new StudentDao();
CourseDao courseDao = new CourseDao();
AdministratorDao adminDao = new AdministratorDao();
ClassesDao classesDao = new ClassesDao();
GradeDao gradeDao = new GradeDao();
Student stu = stuDao.find(stuId);
Course course = courseDao.find(courseId);
Administrator admin = adminDao.find(tcId);
Classes classes = classesDao.find(classId);
Grade grade = new Grade();
grade.setStuId(stuId);
grade.setStuName(stuName);
grade.setCourseId(courseId);
grade.setTcId(tcId);
grade.setCourseGrade(courseGrade);
grade.setClassId(classId);
if (stu.getStuName() == null) {
request.setAttribute("errerMsg", "姓名为空");
request.getRequestDispatcher("/Jsp/AddScore.jsp").forward(request, response);
}
if(stu != null || stu.getStuName() == stuName){
if(course != null){
if(admin != null){
if(classes != null){
if(gradeDao.insert(grade)){
response.sendRedirect(request.getContextPath() + "/Jsp/AddScore.jsp");
}else{
request.setAttribute("errerMsg", "添加失败");
request.getRequestDispatcher("/Jsp/AddScore.jsp").forward(request, response);
}
}else{
request.setAttribute("errerMsg", "没有该班级");
request.getRequestDispatcher("/Jsp/AddScore.jsp").forward(request, response);
}
}else{
request.setAttribute("errerMsg", "没有该教师ID");
request.getRequestDispatcher("/Jsp/AddScore.jsp").forward(request, response);
}
} else {
request.setAttribute("errerMsg", "没有该课程ID");
request.getRequestDispatcher("/Jsp/AddScore.jsp").forward(request, response);
}
}
} catch (Exception ee) {
ee.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
5.2AutoLoginFilter类
package Controller;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import Dao.AdministratorDao;
import Dao.StudentDao;
import Model.Administrator;
import Model.Student;
import Model.User;
/**
* Servlet Filter implementation class AutoLoginFilter
*/
public class AutoLoginFilter implements Filter {
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest req, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
//获取一个名为autologin的cookie
Cookie[] cookies = request.getCookies();
String autologin = null;
for (int i=0; cookies != null && i<cookies.length; i++){
if("autologin".equals(cookies[i].getName())){
//找到了指定的cookie
autologin = cookies[i].getValue();
break;
}
}
if(autologin != null){
//做自动登陆
System.out.println("进入过滤器。");
String [] parts = autologin.split("-");
String username = parts[0];
String password = parts[1];
String num = parts[2];
User user = new User();
int flag = 0;
if(num == "1"){
AdministratorDao adminDao = new AdministratorDao();
Administrator admin = adminDao.find(username);
if(admin != null) {
if (admin.getTcPassword().equals(password)){
flag = 1;
user.setIdentity("admin");
}
}
} else {
StudentDao stuDao = new StudentDao();
Student stu = stuDao.find(username);
if (stu != null){
if (stu.getStuPassword().equals(password)){
flag = 1;
user.setIdentity("student");
}
}
}
//检查用户名和密码
if (flag == 1 ){
//登陆成功,将用户状态user对象存入session域
user.setUsername(username);
user.setPassword(password);
request.getSession().setAttribute("user", user);
}
}
//放行
chain.doFilter(request, response);
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
5.3CheckServlet类
package Controller;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.awt.*;
/**
* Servlet implementation class CheckServlet
*/
public class CheckServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static int WIDTH = 60;
private static int HEIGHT = 20;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
response.setContentType("image/jpeg");
ServletOutputStream sos = response.getOutputStream();
//设置浏览器不要缓存图片
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
//创建内存图像并获得其图形上下文
BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
//产生随机的认证码
char[] rands = generateCheckCode();
//产生图片
drawBackground(g);
drawRands(g, rands);
//结束图像的绘制过程,完成图像
g.dispose();
//将图像输出到客户端
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ImageIO.write(image, "JPEG", bos);
byte[] buf = bos.toByteArray();
response.setContentLength(buf.length);
//下面语句也可写成:bos.writeTo(sos);
sos.write(buf);
bos.close();
sos.close();
//将当前验证码存入到Session中
session.setAttribute("check_code", new String(rands));
//直接使用下面的代码将有问题,session对象在提交响应前获取
// request.getSession().setAttribute("check_code", new String(rands));
}
private void drawRands(Graphics g, char[] rands) {
g.setColor(Color.BLACK);
g.setFont(new Font(null, Font.ITALIC|Font.BOLD, 18));
//在不同的高度上输出验证码的每个字符
g.drawString("" + rands[0], 1, 17);
g.drawString("" + rands[1], 16, 15);
g.drawString("" + rands[2], 31, 18);
g.drawString("" + rands[3], 46, 16);
System.out.println(rands);
}
private void drawBackground(Graphics g) {
//画背景
g.setColor(new Color(0xDCDCDC));
g.fillRect(0, 0, WIDTH, HEIGHT);
//随机产生120个干扰点
for (int i=0; i<120; i++)
{
int x = (int)(Math.random() * WIDTH);
int y = (int)(Math.random() * HEIGHT);
int red = (int)(Math.random() * 255);
int green = (int)(Math.random() * 255);
int blue= (int)(Math.random() * 255);
g.setColor(new Color(red, green, blue));
g.drawOval(x, y, 1, 0);
}
}
//生成一个4字符的验证码
private char[] generateCheckCode() {
//定义验证码的字符表
String chars = "0123456789zxcvbnmasdfghjklqwertyuiop";
char [] rands = new char[4];
for(int i=0; i<4; i++)
{
int rand = (int)(Math.random() * 36);
rands[i] = chars.charAt(rand);
}
return rands;
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
5.4DelScoreServlet类
package Controller;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import Dao.GradeDao;
import Model.Grade;
/**
* Servlet implementation class DelScoreServlet
*/
public class DelScoreServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
String stuId = request.getParameter("stuId");
String stuName = request.getParameter("stuName");
String courseId = request.getParameter("courseId");
String tcId = request.getParameter("tcId");
String classId = request.getParameter("classId");
String grade = request.getParameter("grade");
Grade grades = new Grade();
grades.setStuId(stuId);
grades.setStuName(stuName);
grades.setCourseId(courseId);
grades.setTcId(tcId);
grades.setClassId(classId);
grades.setCourseGrade(grade);
HttpSession session = request.getSession();
ArrayList<Grade> list = (ArrayList<Grade>) session.getAttribute("grade");
try {
GradeDao gradeDao = new GradeDao();
if (gradeDao.delete(grades)) {
for(int j=0;j<list.size();j++){
if(list.get(j) == null){
list.remove(j);
}
if(list.get(j)!=null && list.get(j).getStuId().equals(stuId)
&& list.get(j).getCourseId().equals(courseId)
&& list.get(j).getStuName().equals(stuName)
&& list.get(j).getTcId().equals(tcId)
&& list.get(j).getCourseGrade().equals(grade)
&& list.get(j).getClassId().equals(classId)){
list.remove(j);
break;
}
}
response.sendRedirect(request.getContextPath() + "/Jsp/UpdDelScore.jsp");
} else {
request.setAttribute("errerMsg", "删除失败");
request.getRequestDispatcher("/Jsp/UpdDelScore.jsp").forward(request, response);
}
} catch (Exception ee) {
ee.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
5.5ExitServlet类
package Controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import Model.User;
/**
* Servlet implementation class ExitServlet
*/
public class ExitServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=utf-8");
HttpSession session = request.getSession();
User user = (User)session.getAttribute("user");
System.out.println(user.getIdentity());
if(user.getIdentity().equals("student")){
session.removeAttribute("grade");
response.sendRedirect(request.getContextPath() + "/Jsp/Student.jsp");
}else{
session.removeAttribute("grade");
response.sendRedirect(request.getContextPath() + "/Jsp/Admin.jsp");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
5.6FindScoreServlet类
package Controller;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import Dao.GradeDao;
import Dao.StudentDao;
import Model.Student;
import Model.User;
import Model.Grade;
/**
* Servlet implementation class FindScoreServlet
*/
public class FindScoreServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
HttpSession session = request.getSession();
User users = (User)request.getSession().getAttribute("user");
String id = null;
if (users.getIdentity() == "admin") {
id = request.getParameter("id");
} else if (users.getIdentity() == "student") {
id = users.getUsername();
}
String func = request.getParameter("func");
try {
StudentDao stuDao = new StudentDao();
Student student = stuDao.find(id);
if(student != null){
try {
GradeDao gradeDao = new GradeDao();
ArrayList<Grade> list = (ArrayList<Grade>) gradeDao.find(id);
session.setAttribute("grade", list);
if(func.equals("show")){
response.sendRedirect(request.getContextPath() + "/Jsp/FindScore.jsp");
}else{
response.sendRedirect(request.getContextPath() + "/Jsp/UpdDelScore.jsp");
}
} catch(Exception ee) {
ee.printStackTrace();
}
}else{
request.setAttribute("errerMsg", "没有该学生");
if(func.equals("show")){
request.getRequestDispatcher("/Jsp/FindScore.jsp").forward(request, response);
}else{
request.getRequestDispatcher("/Jsp/UpdDelScore.jsp").forward(request, response);
}
}
} catch (Exception ee) {
ee.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
5.7LoginServlet类
package Controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import Dao.AdministratorDao;
import Dao.StudentDao;
import Dao.UserDao;
import Model.Administrator;
import Model.Student;
import Model.User;
/**
* Servlet implementation class LoginServlet
*/
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
String identity = request.getParameter("identity");
String autoLogin = request.getParameter("autologin");
String checkCode = request.getParameter("check_code");
String savedCode = (String) request.getSession().getAttribute("check_code");
System.out.println(username + " " + password + " " + checkCode + " "
+ savedCode + " " + identity);
if(username != null && password != null){
System.out.println("账号密码不为空");
//账号密码不为空
if(checkCode.equals(savedCode)) {
//验证码正确
System.out.println("验证码正确");
if(identity !=null) {
if(identity.equals("admin")){ //教师
try{
System.out.println("进入教师");
AdministratorDao adminDao = new AdministratorDao();
Administrator admin = adminDao.find(username);
if (admin != null){
if (admin.getTcPassword().equals(password)) {
System.out.println("ok");
function1(username, password, autoLogin, 1, request, response);
}
} else {
request.setAttribute("errerMsg", "没有该教师");
request.getRequestDispatcher("/Jsp/Login.jsp").forward(request, response);
}
} catch (Exception ee) {
ee.printStackTrace();
}
} else if (identity.equals("student")){ //学生
try{
System.out.println("进入学生");
StudentDao stuDao = new StudentDao();
Student student = stuDao.find(username);
if (student != null) {
if (student.getStuPassword().equals(password)){
System.out.println("ok");
function1(username, password, autoLogin, 2, request, response);
}
} else {
request.setAttribute("errerMsg", "没有该学生");
request.getRequestDispatcher("/Jsp/Login.jsp").forward(request, response);
}
} catch (Exception ee) {
ee.printStackTrace();
}
}
} else {
request.setAttribute("errerMsg", "身份为空");
request.getRequestDispatcher("/Jsp/Login.jsp").forward(request, response);
}
} else {
//验证不正确
request.setAttribute("errerMsg", "验证码错误");
request.getRequestDispatcher("/Jsp/Login.jsp").forward(request, response);
}
} else {
//账号或密码为空
request.setAttribute("errerMsg", "用户名或密码不能为空");
request.getRequestDispatcher("/Jsp/Login.jsp").forward(request, response);
}
}
private void function1(String username, String password, String autoLogin, int num,
HttpServletRequest request, HttpServletResponse response) throws IOException{
//将用户状态user对象存入session域
User user = new User();
user.setUsername(username);
user.setPassword(password);
if (num == 1) {
user.setIdentity("admin");
} else if (num ==2) {
user.setIdentity("student");
}
request.getSession().setAttribute("user", user);
//登陆记录
UserDao userDao = new UserDao();
userDao.insert(user);
//发送自动登陆的cookie
if(autoLogin != null){
//注意cookie中的密码要加密
if(num == 1){
Cookie cookie = new Cookie("autologin", username + "-" + password + "-" + "1");
cookie.setMaxAge(Integer.parseInt(autoLogin));
cookie.setPath(request.getContextPath());
response.addCookie(cookie);
}else if (num == 2){
Cookie cookie = new Cookie("autologin", username + "-" + password + "-" + "2");
cookie.setMaxAge(Integer.parseInt(autoLogin));
cookie.setPath(request.getContextPath());
response.addCookie(cookie);
}
}
if (num == 1) { //教师
//跳转至首页
response.sendRedirect(request.getContextPath() + "/Jsp/Admin.jsp");
} else if (num == 2){ //学生
//跳转至首页
response.sendRedirect(request.getContextPath() + "/Jsp/Student.jsp");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
5.8LogoutServlet类
package Controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class LogoutServlet
*/
public class LogoutServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//用户注销
request.getSession().invalidate();
//从客户端删除自动登陆的cookie
Cookie cookie = new Cookie("autologin", "msg");
cookie.setPath(request.getContextPath());
cookie.setMaxAge(0);
response.addCookie(cookie);
response.sendRedirect(request.getContextPath() + "/Jsp/Login.jsp");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
5.9UpdScoreServlet类
package Controller;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import Dao.GradeDao;
import Model.Grade;
/**
* Servlet implementation class UpdScoreServlet
*/
public class UpdScoreServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charcet=utf-8");
String stuId = request.getParameter("stuId");
String stuName = request.getParameter("stuName");
String courseId = request.getParameter("courseId");
String tcId = request.getParameter("tcId");
String classId = request.getParameter("classId");
String grade = request.getParameter("grade");
Grade grades = new Grade();
grades.setStuId(stuId);
grades.setStuName(stuName);
grades.setCourseId(courseId);
grades.setTcId(tcId);
grades.setClassId(classId);
grades.setCourseGrade(grade);
HttpSession session = request.getSession();
try{
GradeDao gradeDao = new GradeDao();
if (gradeDao.update(grades)) {
ArrayList<Grade> list = (ArrayList<Grade>) gradeDao.find(stuId);
session.setAttribute("grade", list);
response.sendRedirect(request.getContextPath() + "/Jsp/UpdDelScore.jsp");
} else {
request.setAttribute("errerMsg", "更新失败");
request.getRequestDispatcher("/Jsp/UpdDelScore.jsp").forward(request, response);
}
} catch(Exception ee) {
ee.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
6.Dao包下的类
6.1AdministratorDao类
package Dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import Model.Administrator;
import Util.JDBCUtils;
public class AdministratorDao {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
//添加管理员操作
public boolean insert(Administrator admin){
try {
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "insert into administrator (tcId, tcName, tcClassId, tcSex, tcPassword) "
+ "values('"
+ admin.getTcId()
+ "','"
+ admin.getTcName()
+ "','"
+ admin.getTcClassId()
+ "','"
+ admin.getTcSex()
+ "','"
+ admin.getTcPassword()
+ "')";
System.out.println("添加SQL语句为:" + sql);
int num = stmt.executeUpdate(sql);
if (num > 0){
return true;
}
return false;
} catch (Exception ee) {
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return false;
}
//查询所有的Administrator对象
public ArrayList<Administrator> findAll(){
ArrayList<Administrator> list = new ArrayList<Administrator>();
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "select * from administrator";
System.out.println("查询所有的SQL语句:" + sql);
rs = stmt.executeQuery(sql);
while (rs.next()) {
Administrator admin = new Administrator();
admin.setTcId(rs.getString("tcId"));
admin.setTcName(rs.getString("tcName"));
admin.setTcSex(rs.getString("tcSex"));
admin.setTcClassId(rs.getString("tcClassId"));
admin.setTcPassword(rs.getString("tcPassword"));
list.add(admin);
}
return list;
} catch(Exception ee) {
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return null;
}
//根据ID查询
public Administrator find(String tcId){
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "select * from administrator where tcId = '" + tcId +"'";
System.out.println("单个查询SQL语句:" + sql);
rs = stmt.executeQuery(sql);
while (rs.next()) {
Administrator admin = new Administrator();
admin.setTcId(rs.getString("TcId"));
admin.setTcName(rs.getString("TcName"));
admin.setTcSex(rs.getString("TcSex"));
admin.setTcClassId(rs.getString("TcClassId"));
admin.setTcPassword(rs.getString("TcPassword"));
return admin;
}
return null;
}catch(Exception ee){
ee.printStackTrace();
}finally{
JDBCUtils.release(rs, stmt, conn);
}
return null;
}
//删除学生
public boolean delete(String tcId){
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "delete from administrator where tcId= '" + tcId + "'";
System.out.println("删除的SQL语句是:" + sql);
int num = stmt.executeUpdate(sql);
if (num > 0){
return true;
}
return false;
} catch (Exception ee){
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return false;
}
//修改用户
public boolean update(Administrator admin){
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "update administrator set tcName='" + admin.getTcName()
+ "',tcClassId='" + admin.getTcClassId()
+ "',tcSex='" + admin.getTcSex()
+ "',tcPassword='" + admin.getTcPassword()
+ "' where tcId='" + admin.getTcId() + "'";
System.out.println("修改的SQL语句是:" + sql);
int num = stmt.executeUpdate(sql);
if (num > 0){
return true;
}
return false;
} catch (Exception ee){
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return false;
}
}
6.2ClassDao类
package Dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import Model.Classes;
import Util.JDBCUtils;
public class ClassesDao {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
//添加班级操作
public boolean insert(Classes classes){
try {
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "insert into classes (classId, stuNum, className) "
+ "values('"
+ classes.getClassId()
+ "',"
+ classes.getStuNum()
+ ",'"
+ classes.getClassName()
+ "')";
System.out.println("添加SQL语句为:" + sql);
int num = stmt.executeUpdate(sql);
if (num > 0){
return true;
}
return false;
} catch (Exception ee) {
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return false;
}
//查询所有的classes对象
public ArrayList<Classes> findAll(){
ArrayList<Classes> list = new ArrayList<Classes>();
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "select * from classes";
System.out.println("查询所有的SQL语句:" + sql);
rs = stmt.executeQuery(sql);
while (rs.next()) {
Classes classes = new Classes();
classes.setClassId(rs.getString("classId"));
classes.setStuNum(rs.getInt("stuNum"));
classes.setClassName(rs.getString("className"));
list.add(classes);
}
return list;
} catch(Exception ee) {
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return null;
}
//根据ID查询
public Classes find(String classId){
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "select * from classes where classId = '" + classId + "'";
rs = stmt.executeQuery(sql);
System.out.println("单个查询SQL语句:" + sql);
while (rs.next()) {
Classes classes = new Classes();
classes.setClassId(rs.getString("classId"));
classes.setStuNum(rs.getInt("stuNum"));
classes.setClassName(rs.getString("className"));
return classes;
}
return null;
}catch(Exception ee){
ee.printStackTrace();
}finally{
JDBCUtils.release(rs, stmt, conn);
}
return null;
}
//删除班级
public boolean delete(String classId){
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "delete from classes where classId='" + classId + "'";
System.out.println("删除的SQL语句是:" + sql);
int num = stmt.executeUpdate(sql);
if (num > 0){
return true;
}
return false;
} catch (Exception ee){
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return false;
}
//修改班级
public boolean update(Classes classes){
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "update classes set stuNum=" + classes.getStuNum()
+ ",className='" + classes.getClassName()
+ "' where classId='" + classes.getClassId() +"'";
System.out.println("修改的SQL语句是:" + sql);
int num = stmt.executeUpdate(sql);
if (num > 0){
return true;
}
return false;
} catch (Exception ee){
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return false;
}
}
6.3CourseDao类
package Dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import Model.Course;
import Util.JDBCUtils;
public class CourseDao {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
//添加课程操作
public boolean insert(Course course){
try {
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "insert into course (courseId, courseTime, credit, courseName) "
+ "values('"
+ course.getCourseId()
+ "','"
+ course.getCourseTime()
+ "',"
+ course.getCredit()
+ ",'"
+ course.getCourseName()
+ "')";
System.out.println("添加SQL语句为:" + sql);
int num = stmt.executeUpdate(sql);
if (num > 0){
return true;
}
return false;
} catch (Exception ee) {
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return false;
}
//查询所有的course对象
public ArrayList<Course> findAll(){
ArrayList<Course> list = new ArrayList<Course>();
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "select * from course";
System.out.println("查询所有的SQL语句:" + sql);
rs = stmt.executeQuery(sql);
while (rs.next()) {
Course course = new Course();
course.setCourseId(rs.getString("courseId"));
course.setCourseName(rs.getString("courseName"));
course.setCredit(rs.getInt("credit"));
course.setCourseTime(rs.getString("CourseTime"));
list.add(course);
}
return list;
} catch(Exception ee) {
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return null;
}
//根据ID查询
public Course find(String courseId){
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "select * from course where courseId = '" + courseId + "'";
rs = stmt.executeQuery(sql);
System.out.println("单个查询SQL语句:" + sql);
while (rs.next()) {
Course course = new Course();
course.setCourseId(rs.getString("CourseId"));
course.setCourseName(rs.getString("CourseName"));
course.setCredit(rs.getInt("Credit"));
course.setCourseTime(rs.getString("CourseTime"));
return course;
}
return null;
}catch(Exception ee){
ee.printStackTrace();
}finally{
JDBCUtils.release(rs, stmt, conn);
}
return null;
}
//删除班级
public boolean delete(String courseId){
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "delete from course where courseId= '" + courseId + "'";
System.out.println("删除的SQL语句是:" + sql);
int num = stmt.executeUpdate(sql);
if (num > 0){
return true;
}
return false;
} catch (Exception ee){
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return false;
}
//修改班级
public boolean update(Course course){
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "update course set courseTime='" + course.getCourseTime()
+ "',credit=" + course.getCredit()
+ ",courseName='" + course.getCourseName()
+ "' where courseId='" + course.getCourseId() + "'";
System.out.println("修改的SQL语句是:" + sql);
int num = stmt.executeUpdate(sql);
if (num > 0){
return true;
}
return false;
} catch (Exception ee){
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return false;
}
}
6.4GradeDao类
package Dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import Model.Grade;
import Util.JDBCUtils;
public class GradeDao {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
//添加成绩操作
public boolean insert(Grade grade){
try {
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "insert into grade (stuId, stuName, courseId, tcId, courseGrade, classId) "
+ "values('"
+ grade.getStuId()
+ "','"
+ grade.getStuName()
+ "','"
+ grade.getCourseId()
+ "','"
+ grade.getTcId()
+ "','"
+ grade.getCourseGrade()
+ "','"
+ grade.getClassId()
+ "')";
System.out.println("添加SQL语句为:" + sql);
int num = stmt.executeUpdate(sql);
if (num > 0){
return true;
}
return false;
} catch (Exception ee) {
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return false;
}
//查询所有的grade对象
public ArrayList<Grade> findAll(){
ArrayList<Grade> list = new ArrayList<Grade>();
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "select * from grade";
System.out.println("查询所有的SQL语句:" + sql);
rs = stmt.executeQuery(sql);
while (rs.next()) {
Grade grade = new Grade();
grade.setCourseId(rs.getString("courseId"));
grade.setStuName(rs.getString("stuName"));
grade.setCourseGrade(rs.getString("courseGrade"));
grade.setStuId(rs.getString("stuId"));
grade.setTcId(rs.getString("tcId"));
grade.setClassId(rs.getString("classId"));
list.add(grade);
}
return list;
} catch(Exception ee) {
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return null;
}
//根据ID查询
public ArrayList<Grade> find(String stuId){
ArrayList<Grade> list = new ArrayList<Grade>();
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "select * from grade where stuId = '" + stuId + "'";
rs = stmt.executeQuery(sql);
System.out.println("单个查询SQL语句:" + sql);
while (rs.next()) {
Grade grade = new Grade();
grade.setCourseId(rs.getString("courseId"));
grade.setStuName(rs.getString("stuName"));
grade.setCourseGrade(rs.getString("courseGrade"));
grade.setStuId(rs.getString("stuId"));
grade.setTcId(rs.getString("tcId"));
grade.setClassId(rs.getString("classId"));
list.add(grade);
}
return list;
}catch(Exception ee){
ee.printStackTrace();
}finally{
JDBCUtils.release(rs, stmt, conn);
}
return null;
}
//删除成绩
public boolean delete(Grade grade){
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "delete from grade where stuId= '" + grade.getStuId()
+ "' and stuName = '" + grade.getStuName()
+ "' and courseId = '" + grade.getCourseId()
+ "' and tcId = '" + grade.getTcId()
+ "' and courseGrade = '" + grade.getCourseGrade()
+ "' and classId = '" + grade.getClassId()
+ "'";
System.out.println("删除的SQL语句是:" + sql);
int num = stmt.executeUpdate(sql);
if (num > 0){
return true;
}
return false;
} catch (Exception ee){
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return false;
}
//修改成绩
public boolean update(Grade grade){
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "update grade set "
+ "courseGrade='" + grade.getCourseGrade()
+ "' where stuId='" + grade.getStuId()
+"' and stuName= '" + grade.getStuName()
+"' and courseId='" + grade.getCourseId()
+"' and tcId='" + grade.getTcId()
+"' and classId='" + grade.getClassId()
+ "'";
System.out.println("修改的SQL语句是:" + sql);
int num = stmt.executeUpdate(sql);
if (num > 0){
return true;
}
return false;
} catch (Exception ee){
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return false;
}
}
6.5StudentDao类
package Dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import Model.Student;
import Util.JDBCUtils;
public class StudentDao {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
//添加学生操作
public boolean insert(Student student){
try {
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "insert into student (stuId, stuName, stuSex, stuClassId, stuPassword) "
+ "values('"
+ student.getStuId()
+ "','"
+ student.getStuName()
+ "','"
+ student.getStuSex()
+ "','"
+ student.getStuClassId()
+ "','"
+ student.getStuPassword()
+ "')";
System.out.println("添加SQL语句为:" + sql);
int num = stmt.executeUpdate(sql);
if (num > 0){
return true;
}
return false;
} catch (Exception ee) {
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return false;
}
//查询所有的student对象
public ArrayList<Student> findAll(){
ArrayList<Student> list = new ArrayList<Student>();
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "select * from student";
System.out.println("查询所有的SQL语句:" + sql);
rs = stmt.executeQuery(sql);
while (rs.next()) {
Student student = new Student();
student.setStuId(rs.getString("stuId"));
student.setStuName(rs.getString("stuName"));
student.setStuSex(rs.getString("stuSex"));
student.setStuClassId(rs.getString("stuClassId"));
student.setStuPassword(rs.getString("stuPassword"));
list.add(student);
}
return list;
} catch(Exception ee) {
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return null;
}
//根据ID查询
public Student find(String stuId){
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "select * from student where stuId = '" + stuId + "'";
rs = stmt.executeQuery(sql);
System.out.println("单个查询SQL语句:" + sql);
while (rs.next()) {
Student student = new Student();
student.setStuId(rs.getString("stuId"));
student.setStuName(rs.getString("stuName"));
student.setStuSex(rs.getString("stuSex"));
student.setStuClassId(rs.getString("stuClassId"));
student.setStuPassword(rs.getString("stuPassword"));
return student;
}
return null;
}catch(Exception ee){
ee.printStackTrace();
}finally{
JDBCUtils.release(rs, stmt, conn);
}
return null;
}
//删除学生
public boolean delete(String stuId){
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "delete from student where stuId='" + stuId + "'";
System.out.println("删除的SQL语句是:" + sql);
int num = stmt.executeUpdate(sql);
if (num > 0){
return true;
}
return false;
} catch (Exception ee){
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return false;
}
//修改用户
public boolean update(Student student){
try{
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "update student set stuName='" + student.getStuName()
+ "',stuSex='" + student.getStuSex()
+ "',stuClassId='" + student.getStuClassId()
+ "',stuPassword='"+ student.getStuPassword()
+ "' where stuId='" + student.getStuId() + "'";
System.out.println("修改的SQL语句是:" + sql);
int num = stmt.executeUpdate(sql);
if (num > 0){
return true;
}
return false;
} catch (Exception ee){
ee.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return false;
}
}
6.6UserDao类
package Dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import Model.User;
import Util.JDBCUtils;
public class UserDao {
//添加登录记录
public boolean insert(User user){
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try{
//获取数据的连接
conn = JDBCUtils.getConnection();
//获取Statement对象
stmt = conn.createStatement();
//发送SQL语句
String sql = "insert into user(username, password, identity)" +
"values('"
+ user.getUsername()
+ "','"
+ user.getPassword()
+ "','"
+ user.getIdentity()
+ "')";
int num = stmt.executeUpdate(sql);
if(num > 0){
return true;
}
return false;
} catch(Exception ee) {
ee.printStackTrace();
} finally{
JDBCUtils.release(rs, stmt, conn);
}
return false;
}
}
7.Model包下的类
7.1Administrator类
package Model;
public class Administrator {
private String tcId; //教师编号
private String tcName; //教师姓名
private String tcClassId; //班级编号
private String tcSex; //教师性别
private String tcPassword; //教师密码
public void setTcId(String tcId){
this.tcId = tcId;
}
public void setTcName(String tcName){
this.tcName = tcName;
}
public void setTcClassId(String tcClassId){
this.tcClassId = tcClassId;
}
public void setTcSex(String tcSex){
this.tcSex = tcSex;
}
public void setTcPassword(String tcPassWord){
this.tcPassword = tcPassWord;
}
public String getTcId(){
return tcId;
}
public String getTcName(){
return tcName;
}
public String getTcClassId(){
return tcClassId;
}
public String getTcSex(){
return tcSex;
}
public String getTcPassword(){
return tcPassword;
}
}
7.2Classes类
package Model;
public class Classes {
private String classId; //班级编号
private int stuNum; //学生数
private String className; //班级名
public void setClassId(String classId){
this.classId = classId;
}
public void setStuNum(int stuNum){
this.stuNum = stuNum;
}
public void setClassName(String className){
this.className = className;
}
public String getClassId(){
return classId;
}
public int getStuNum(){
return stuNum;
}
public String getClassName(){
return className;
}
}
7.3Course类
package Model;
public class Course {
private String courseId; //课程编号
private String courseTime; //课时
private int credit; //课程学分
private String courseName; //课程名
public void setCourseId(String courseId) {
this.courseId = courseId;
}
public void setCourseTime(String courseTime){
this.courseTime = courseTime;
}
public void setCredit(int credit){
this.credit = credit;
}
public void setCourseName(String courseName){
this.courseName = courseName;
}
public String getCourseId(){
return courseId;
}
public String getCourseTime(){
return courseTime;
}
public int getCredit(){
return credit;
}
public String getCourseName(){
return courseName;
}
}
7.4Grade类
package Model;
public class Grade {
private String stuId; //学生编号
private String stuName; //学生姓名
private String courseId; //课程编号
private String tcId; //教师
private String courseGrade; //课程分数
private String classId; //班级编号
public void setStuId(String stuId){
this.stuId = stuId;
}
public void setStuName(String stuName){
this.stuName = stuName;
}
public String getStuName(){
return stuName;
}
public void setCourseId(String courseId){
this.courseId = courseId;
}
public void setTcId(String tcId){
this.tcId = tcId;
}
public void setCourseGrade(String courseGrade){
this.courseGrade = courseGrade;
}
public void setClassId(String classId){
this.classId = classId;
}
public String getStuId(){
return stuId;
}
public String getCourseId(){
return courseId;
}
public String getTcId(){
return tcId;
}
public String getCourseGrade(){
return courseGrade;
}
public String getClassId(){
return classId;
}
}
7.5Student类
package Model;
public class Student {
private String stuId; //学生编号
private String stuName; //学生姓名
private String stuSex; //学生性别
private String stuClassId; //班级编号
private String stuPassword; //学生密码
public void setStuId(String stuId){
this.stuId = stuId;
}
public void setStuName(String stuName){
this.stuName = stuName;
}
public void setStuSex(String stuSex){
this.stuSex = stuSex;
}
public void setStuClassId(String stuClassId){
this.stuClassId = stuClassId;
}
public void setStuPassword(String stuPassword){
this.stuPassword = stuPassword;
}
public String getStuId(){
return stuId;
}
public String getStuName(){
return stuName;
}
public String getStuSex(){
return stuSex;
}
public String getStuClassId(){
return stuClassId;
}
public String getStuPassword(){
return stuPassword;
}
}
7.6User类
package Model;
public class User {
private String username; //账号
private String password; //密码
private String identity; //身份
public void setUsername(String username){
this.username = username;
}
public void setPassword(String password){
this.password = password;
}
public void setIdentity(String identity){
this.identity = identity;
}
public String getUsername(){
return username;
}
public String getPassword(){
return password;
}
public String getIdentity(){
return identity;
}
}
8.Utils包下的类
8.1JDBCUtils类
package Util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCUtils {
// 加载驱动,并建立数据库连接
public static Connection getConnection() throws SQLException,
ClassNotFoundException {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/grademanage?useSSL=FALSE&serverTimezone=UTC"; //注意:8.0的MySQL,所以连接方式不一样
String Name = "root";
String password = "你的密码";
Connection conn = DriverManager.getConnection(url, Name, password);
return conn;
}
// 关闭数据库连接,释放资源
public static void release(Statement stmt, Connection conn) {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
public static void release(ResultSet rs, Statement stmt,
Connection conn){
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
release(stmt, conn);
}
}
9.JSP
9.1 Login.jsp(登录界面)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生成绩管理系统</title>
</head>
<center><h3>用户登录</h3></center>
<body style="text-align: center;">
<form action="${pageContext.request.contextPath }/LoginServlet" method = "post">
<table border="1" width="600px" cellpadding="0" cellspacing="0" align="center">
<tr>
<td height="30" align="center">用户名: </td>
<td>
<input type="text" name="username" />${errerMsg }</td>
</tr>
<tr>
<td height="30" align="center">密 码: </td>
<td>
<input type="password" name="password" /></td>
</tr>
<tr>
<td height="30" align="center">验证码:</td>
<td >
<input type="text" name="check_code"/>
<img src="/GradeManage/CheckServlet"/><br/>
</td>
</tr>
<tr>
<td height="35" align="center">身份:</td>
<td><input type="radio" name="identity"
value="admin"/>管理员(老师 )
<input type="radio" name="identity"
value="student"/>学生
</td>
</tr>
<tr>
<td height="35" align="center">自动登录时间</td>
<td><input type="radio" name="autologin"
value="${60*60*24*31 }"/>一个月
<input type="radio" name="autologin"
value="${60*60*24*31*3 }"/>三个月
<input type="radio" name="autologin"
value="${60*60*24*31*6 }"/>半年
<input type="radio" name="autologin"
value="${60*60*24*31*12 }"/>一年
</td>
</tr>
<tr>
<td height="30" colspan="2" align="center">
<input type="submit" value="登陆">
<input type="reset" value="重置"/>
</td>
</tr>
</table>
</form>
</body>
</html>
9.2 Student.jsp(学生操作界面)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*" import="Model.User"%>
<%@ taglib prefix="c" uri="http://java.sun/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生成绩管理系统</title>
</head>
<body>
<body style="text-align: center;">
<c:choose>
<c:when test="${sessionScope.user==null }">
<a href="${pageContext.request.contextPath }/Jsp/Login.jsp">用户登录</a>
</c:when>
<c:otherwise>
<c:if test="${sessionScope.user.getIdentity() == 'student' }">
<h3>学生操作界面</h3>
欢迎 ${sessionScope.user.username }!
<div>
<a href="${pageContext.request.contextPath }/Jsp/FindScore.jsp">查询 成绩</a>
</div>
<br/>
<a href="${pageContext.request.contextPath }/LogoutServlet">注销</a>
</c:if>
<c:if test="${sessionScope.user.identity == 'admin'}">
<div>你无权访问!!!</div>
<a href="${pageContext.request.contextPath }/Jsp/Login.jsp">用户登录</a>
</c:if>
</c:otherwise>
</c:choose>
</body>
</body>
</html>
9.3 Foot.jsp(共有界面)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*" import="Model.User"%>
<%@ taglib prefix="c" uri="http://java.sun/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生成绩管理系统</title>
</head>
<body>
<br/>
<c:choose>
<c:when test="${sessionScope.user==null }">
<a href="${pageContext.request.contextPath }/Jsp/Login.jsp">用户登录</a>
</c:when>
<c:otherwise>
<form action="${pageContext.request.contextPath }/ExitServlet" method="post">
<input type="submit" value="返回">
</form>
欢迎你,${sessionScope.user.username }!
<a href="${pageContext.request.contextPath }/LogoutServlet">注销</a>
</c:otherwise>
</c:choose>
</body>
</html>
9.4 Admin.jsp (管理员操作界面)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*" import="Model.User"%>
<%@ taglib prefix="c" uri="http://java.sun/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生成绩管理系统</title>
</head>
<body style="text-align: center;">
<c:choose>
<c:when test="${sessionScope.user==null }">
<a href="${pageContext.request.contextPath }/Jsp/Login.jsp">用户登录</a>
</c:when>
<c:otherwise>
<c:if test="${sessionScope.user.identity == 'admin'}">
<h3>管理员操作界面</h3>
欢迎 ${sessionScope.user.username }!
<div>
<a href="${pageContext.request.contextPath }/Jsp/FindScore.jsp">查询 成绩</a>
</div>
<div>
<a href="${pageContext.request.contextPath }/Jsp/AddScore.jsp">录入 成绩</a>
</div>
<div>
<a href="${pageContext.request.contextPath }/Jsp/UpdDelScore.jsp">修改删除成绩</a>
</div>
<br/>
<a href="${pageContext.request.contextPath }/LogoutServlet">注销</a>
</c:if>
<c:if test="${sessionScope.user.identity == 'student'}">
<div>你无权访问!!!</div>
<a href="${pageContext.request.contextPath }/Jsp/Login.jsp">用户登录</a>
</c:if>
</c:otherwise>
</c:choose>
</body>
</html>
9.5 AddScore.jsp(添加界面)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*"%>
<%@ taglib prefix="c" uri="http://java.sun/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生成绩管理系统-录入成绩</title>
</head>
<body style="text-align: center;">
<c:choose>
<c:when test="${sessionScope.user.identity == 'admin'}">
<div>输入下列信息进行分数录入</div>
<br/>
<form action="${pageContext.request.contextPath }/AddScoreServlet" method="post">
<table align="center" cellpadding="0" cellspacing="0" border="1" width="600px">
<tr>
<td height="30" align="center">学生编号</td>
<td><input type="text" name="stuId">${errerMsg}</td>
</tr>
<tr>
<td height="30" align="center">学生姓名</td>
<td><input type="text" name="stuName"></td>
</tr>
<tr>
<td height="30" align="center">课程编号</td>
<td><input type="text" name="courseId"></td>
</tr>
<tr>
<td height="30" align="center">教师编号</td>
<td><input type="text" name="tcId"></td>
</tr>
<tr>
<td height="30" align="center">课程分数</td>
<td><input type="text" name="courseGrade"></td>
</tr>
<tr>
<td height="30" align="center">班级编号</td>
<td><input type="text" name="classId"></td>
</tr>
<tr>
<td height="30" colspan="2" align="center">
<input type="submit" value="添加"/>
<input type="reset" value="重置"/>
</td>
</tr>
</table>
</form>
<br/>
<%@ include file="Foot.jsp" %>
</c:when>
<c:otherwise>
<c:if test="${sessionScope.user != null}">
<div>你无权访问!!!</div><br/>
</c:if>
<a href="${pageContext.request.contextPath }/Jsp/Login.jsp">用户登录</a>
</c:otherwise>
</c:choose>
</body>
</html>
9.6 FindScore.jsp(查询界面)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*" import="Model.Grade"%>
<%@ taglib prefix="c" uri="http://java.sun/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生成绩管理系统-查询成绩</title>
</head>
<body style="text-align: center;">
<c:choose>
<c:when test="${sessionScope.user==null }">
<a href="${pageContext.request.contextPath }/Jsp/Login.jsp">用户登录</a>
</c:when>
<c:otherwise>
<div>
<form action="${pageContext.request.contextPath }/FindScoreServlet" method = "post">
<input name="func" type="hidden" value="show">成绩查询方式:学号查询<br/>
<c:if test="${sessionScope.user.identity == 'admin'}">
<input name="id" type="text">${errerMsg}
</c:if>
<input type="submit" value="查询">
</form>
</div><br/>
<table align="center" cellpadding="5" cellspacing="5" border="1">
<%
ArrayList<Grade> list=(ArrayList<Grade>) session.getAttribute("grade");
if(list!=null&&list.size()!=0){%>
<tr>
<td colspan="6" align="center">学号为<%=list.get(0).getStuId() %>的学生成绩如下</td>
</tr>
<tr>
<td>学生学号</td>
<td>学生姓名</td>
<td>课程编号</td>
<td>教师编号</td>
<td>课程分数</td>
<td>班级编号</td>
</tr>
<%
for(int j=0;j<list.size();j++){%>
<tr>
<td><%=list.get(j).getStuId()%></td>
<td><%=list.get(j).getStuName()%></td>
<td><%=list.get(j).getCourseId()%></td>
<td><%=list.get(j).getTcId()%></td>
<td><%=list.get(j).getCourseGrade()%></td>
<td><%=list.get(j).getClassId()%></td>
</tr>
<% }}%>
</table>
<%@ include file="Foot.jsp" %>
</c:otherwise>
</c:choose>
</body>
</html>
9.7 UpdScore.jsp(更新界面)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*" import="Model.Grade"%>
<%@ taglib prefix="c" uri="http://java.sun/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生成绩管理系统-修改删除成绩</title>
</head>
<body style="text-align: center;">
<c:choose>
<c:when test="${sessionScope.user.identity == 'admin'}">
<div >
<form action="${pageContext.request.contextPath }/FindScoreServlet" method = "post">
<input name="func" type="hidden" value="update">成绩查询方式:学号查询<br/>
<input name="id" type="text">${errerMsg}
<input type="submit" value="查询">
</form>
</div>
<br/>
<table align="center" cellpadding="5" cellspacing="5" border="1">
<%
ArrayList<Grade> list=(ArrayList<Grade>) session.getAttribute("grade");
if(list!=null&&list.size()!=0){%>
<tr>
<td colspan="8" align="center">学号为<%=list.get(0).getStuId() %>的学生成绩如下</td>
</tr>
<tr>
<td>学生学号</td>
<td>学生姓名</td>
<td>课程编号</td>
<td>教师编号</td>
<td>班级编号</td>
<td>课程分数</td>
<td>修改</td>
<td>是否删除</td>
</tr>
<%
for(int j=0;j<list.size();j++){%>
<tr>
<td><%=list.get(j).getStuId()%></td>
<td><%=list.get(j).getStuName()%></td>
<td><%=list.get(j).getCourseId()%></td>
<td><%=list.get(j).getTcId()%></td>
<td><%=list.get(j).getClassId()%></td>
<form action="${pageContext.request.contextPath }/UpdScoreServlet" method="post">
<input type="hidden" name="stuId" value="<%=list.get(j).getStuId() %>">
<input type="hidden" name="stuName" value="<%=list.get(j).getStuName() %>">
<input type="hidden" name="courseId" value="<%=list.get(j).getCourseId() %>">
<input type="hidden" name="tcId" value="<%=list.get(j).getTcId() %>">
<input type="hidden" name="classId" value="<%=list.get(j).getClassId() %>">
<td><input name="grade" type="text" value="<%=list.get(j).getCourseGrade()%>"></td>
<td><input type="submit" value="修改"></td>
</form>
<form action="${pageContext.request.contextPath }/DelScoreServlet" method="post">
<input type="hidden" name="stuId" value="<%=list.get(j).getStuId() %>">
<input type="hidden" name="stuName" value="<%=list.get(j).getStuName() %>">
<input type="hidden" name="courseId" value="<%=list.get(j).getCourseId() %>">
<input type="hidden" name="tcId" value="<%=list.get(j).getTcId() %>">
<input type="hidden" name="classId" value="<%=list.get(j).getClassId() %>">
<input type="hidden" name="grade" value="<%=list.get(j).getCourseGrade()%>">
<td><input type="submit" value="删除"></td>
</form>
</tr>
<% }}%>
</table>
<br/>
<%@ include file="Foot.jsp" %>
</c:when>
<c:otherwise>
<c:if test="${sessionScope.user != null}">
<div>你无权访问!!!</div><br/>
</c:if>
<a href="${pageContext.request.contextPath }/Jsp/Login.jsp">用户登录</a>
</c:otherwise>
</c:choose>
</body>
</html>
10.系统演示
10.1登陆界面
10.2管理员操作界面
10.3管理员查询成绩界面
10.4管理员录入成绩界面
10.5管理员修改删除界面
10.6学生操作界面
10.7学生查询成绩界面
11 数据实体表
- 课程表(Course)
字段名 | 字段类型 | 是否为主键 | 是否为空 | 备注 |
courseID | varchar(20) | 是 | 否 | 课程编号 |
courseTime | varchar(20) | 否 | 否 | 课时 |
courseGrade | int | 否 | 否 | 课程分数 |
courseName | varchar(50) | 否 | 否 | 课程名 |
- 成绩表(Grade)
字段名 | 字段类型 | 是否为主键 | 是否为空 | 备注 |
stuID | varchar(20) | 是 | 否 | 用户编号 |
courseID | varchar(20) | 否 | 否 | 课程编号 |
teacher | varchar(20) | 否 | 否 | 教师 |
courseGrade | varchar(20) | 否 | 否 | 课程分数 |
classID | varchar(20) | 否 | 否 | 班级编号 |
- 班级表(Class)
字段名 | 字段类型 | 是否为主键 | 是否为空 | 备注 |
classID | varchar (20) | 是 | 否 | 班级编号 |
stuNum | int | 否 | 否 | 学生数 |
className | varchar(20) | 否 | 否 | 班级名 |
- 管理员表(Admin)
字段 | 字段类型 | 是否为主键 | 是否为空 | 备注 |
tcID | varchar(20) | 是 | 否 | 教师编号 |
tcName | varchar(20) | 否 | 否 | 教师姓名 |
tcClassID | varchar(20) | 否 | 否 | 班级编号 |
tcSex | varchar(20) | 否 | 否 | 教师性别 |
tcPassword | varchar(20) | 否 | 否 | 教师密码 |
- 学生表(Student)
字段名 | 字段类型 | 是否为主键 | 是否为空 | 备注 |
stuID | varchar(20) | 是 | 否 | 学生编号 |
stuName | varchar(20) | 否 | 否 | 学生姓名 |
stuSex | varchar(50) | 否 | 否 | 学生性别 |
stuClassID | varchar(20) | 否 | 否 | 班级编号 |
stuPassword | Varchar(20) | 否 | 否 | 学生密码 |
- 用户表(User)
字段名 | 字段类型 | 是否为主键 | 是否为空 | 备注 |
username | varchar(20) | 是 | 否 | 学生或教师的编号 |
password | varchar(20) | 否 | 否 | 密码 |
identity | varchar(20) | 否 | 否 | 身份 |
源码
数据库设计
更多推荐
Java Web学生成绩管理系统(JSP+Servlet+JDBC+Dao)
发布评论