当前位置: 首页 > article >正文

javaweb学生成绩管理系统java项目

文章目录

  • 学生成绩管理系统
    • 一、项目介绍
    • 二、系统部分功能截图
    • 三、部分代码展示
    • 四、底部获取项目

学生成绩管理系统

可用作javaweb项目、servlet项目、jsp项目的项目设计

一、项目介绍

语言:java
技术栈:jsp、jquery、servlet
数据库:MySQL

运行环境
Jdk8 + eclipse或者idea + Tomcat + mysql

用户角色:学生、教师、系统管理员

(一)、管理员功能菜单
1、学生信息管理
2、教师信息管理
3、班级信息管理(年级管理、班级管理)
4、课程信息管理(课程列表、成绩统计分析、考试列表)
5、系统管理
6、系统设置
(二)、学生功能菜单
1、班级信息
2、教学管理(成绩查询)
3、信息管理(个人信息、修改密码)
(三)、教师功能菜单
1、教师信息
2、教学管理(成绩登记、考试统计)
3、信息管理(个人信息、修改密码)

二、系统部分功能截图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三、部分代码展示

package com.lizhou.service;import java.sql.Connection;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;import com.lizhou.bean.Clazz;
import com.lizhou.bean.Grade;
import com.lizhou.bean.Page;
import com.lizhou.bean.Student;
import com.lizhou.dao.impl.BaseDaoImpl;
import com.lizhou.dao.impl.ClazzDaoImpl;
import com.lizhou.dao.inter.BaseDaoInter;
import com.lizhou.dao.inter.ClazzDaoInter;
import com.lizhou.tools.MysqlTool;
import com.lizhou.tools.StringTool;import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;/*** 年级服务层* @author bojiangzhou**/
public class ClazzService {ClazzDaoInter dao = new ClazzDaoImpl();/*** 获取指定年级下的班级* @param gid 年级ID* @return JSON格式的班级*/public String getClazzList(String gradeid){int id = Integer.parseInt(gradeid);//获取数据List<Object> list = dao.getList(Clazz.class, "SELECT * FROM clazz WHERE gradeid=?", new Object[]{id});//json化JsonConfig config = new JsonConfig();config.setExcludes(new String[]{"grade", "studentList"});String result = JSONArray.fromObject(list, config).toString();return result;}/*** 获取班级详细信息* @param gradeid* @param page* @return*/public String getClazzDetailList(String gradeid, Page page) {//获取数据List<Clazz> list = dao.getClazzDetailList(gradeid, page);//获取总记录数long total = 0;if(!StringTool.isEmpty(gradeid)){int gid = Integer.parseInt(gradeid);total = dao.count("SELECT COUNT(*) FROM clazz WHERE gradeid=?", new Object[]{gid});} else {total = dao.count("SELECT COUNT(*) FROM clazz", new Object[]{});}//定义MapMap<String, Object> jsonMap = new HashMap<String, Object>();  //total键 存放总记录数,必须的jsonMap.put("total", total);//rows键 存放每页记录 list jsonMap.put("rows", list); //格式化Map,以json格式返回数据String result = JSONObject.fromObject(jsonMap).toString();return result;}/*** 添加班级* @param name* @param gradeid*/public void addClazz(String name, String gradeid) {int gid = Integer.parseInt(gradeid);dao.insert("INSERT INTO clazz(name, gradeid) value(?,?)", new Object[]{name, gid});}/*** 删除班级* @param clazzid* @throws Exception */public void deleteClazz(int clazzid) throws Exception {//获取连接Connection conn = MysqlTool.getConnection();try {//开启事务MysqlTool.startTransaction();//删除成绩表dao.deleteTransaction(conn, "DELETE FROM escore WHERE clazzid=?", new Object[]{clazzid});//删除考试记录dao.deleteTransaction(conn, "DELETE FROM exam WHERE clazzid=?", new Object[]{clazzid});//删除用户List<Object> list = dao.getList(Student.class, "SELECT number FROM student WHERE clazzid=?",  new Object[]{clazzid});if(list.size() > 0){Object[] param = new Object[list.size()];for(int i = 0;i < list.size();i++){Student stu = (Student) list.get(i);param[i] = stu.getNumber();}String sql = "DELETE FROM user WHERE account IN ("+StringTool.getMark(list.size())+")";dao.deleteTransaction(conn, sql, param);//删除学生dao.deleteTransaction(conn, "DELETE FROM student WHERE clazzid=?", new Object[]{clazzid});}//删除班级的课程和老师的关联dao.deleteTransaction(conn, "DELETE FROM clazz_course_teacher WHERE clazzid=?", new Object[]{clazzid});//最后删除班级dao.deleteTransaction(conn, "DELETE FROM clazz WHERE id=?",  new Object[]{clazzid});//提交事务MysqlTool.commit();} catch (Exception e) {//回滚事务MysqlTool.rollback();e.printStackTrace();throw e;} finally {MysqlTool.closeConnection();}}}
package com.lizhou.service;import java.sql.Connection;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;import com.lizhou.bean.Clazz;
import com.lizhou.bean.Course;
import com.lizhou.bean.Grade;
import com.lizhou.bean.Page;
import com.lizhou.bean.Student;
import com.lizhou.dao.impl.BaseDaoImpl;
import com.lizhou.dao.impl.ClazzDaoImpl;
import com.lizhou.dao.inter.BaseDaoInter;
import com.lizhou.dao.inter.ClazzDaoInter;
import com.lizhou.tools.MysqlTool;
import com.lizhou.tools.StringTool;import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;/*** 课程服务层* @author bojiangzhou**/
public class CourseService {BaseDaoInter dao = new BaseDaoImpl();/*** 获取所有课程* @return*/public String getCourseList(String gradeid){List<Object> list;if(StringTool.isEmpty(gradeid)){list = dao.getList(Course.class, "SELECT * FROM course");} else{list = dao.getList(Course.class, "SELECT c.* FROM course c, grade_course gc WHERE c.id=gc.courseid AND gc.gradeid=?", new Object[]{Integer.parseInt(gradeid)});}//json化String result = JSONArray.fromObject(list).toString();return result;}/*** 添加课程* @param course*/public void addCourse(Course course) {dao.insert("INSERT INTO course(name) value(?)", new Object[]{course.getName()});}/*** 删除课程* @param courseid* @throws Exception */public void deleteClazz(int courseid) throws Exception {//获取连接Connection conn = MysqlTool.getConnection();try {//开启事务MysqlTool.startTransaction();//删除成绩表dao.deleteTransaction(conn, "DELETE FROM escore WHERE courseid=?", new Object[]{courseid});//删除班级的课程和老师的关联dao.deleteTransaction(conn, "DELETE FROM clazz_course_teacher WHERE courseid=?", new Object[]{courseid});//删除年级与课程关联dao.deleteTransaction(conn, "DELETE FROM grade_course WHERE courseid=?",  new Object[]{courseid});//最后删除课程dao.deleteTransaction(conn, "DELETE FROM course WHERE id=?",  new Object[]{courseid});//提交事务MysqlTool.commit();} catch (Exception e) {//回滚事务MysqlTool.rollback();e.printStackTrace();throw e;} finally {MysqlTool.closeConnection();}}}
package com.lizhou.service;import java.sql.Connection;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;import com.lizhou.bean.Course;
import com.lizhou.bean.CourseItem;
import com.lizhou.bean.Exam;
import com.lizhou.bean.Page;
import com.lizhou.bean.Student;
import com.lizhou.bean.Teacher;
import com.lizhou.bean.User;
import com.lizhou.dao.impl.BaseDaoImpl;
import com.lizhou.dao.impl.ExamDaoImpl;
import com.lizhou.dao.impl.StudentDaoImpl;
import com.lizhou.dao.impl.TeacherDaoImpl;
import com.lizhou.dao.inter.BaseDaoInter;
import com.lizhou.dao.inter.ExamDaoInter;
import com.lizhou.dao.inter.StudentDaoInter;
import com.lizhou.dao.inter.TeacherDaoInter;
import com.lizhou.tools.MysqlTool;
import com.lizhou.tools.StringTool;import net.sf.json.JSONArray;
import net.sf.json.JSONObject;/*** 教师类服务层* @author bojiangzhou**/
public class ExamService {private ExamDaoInter dao;public ExamService(){dao = new ExamDaoImpl();}/*** 获取考试信息* @param exam 参数* @param page 分页* @return*/public String getExamList(Exam exam, Page page) {//sql语句StringBuffer sb = new StringBuffer("SELECT * FROM exam ");//参数List<Object> param = new LinkedList<>();//判断条件if(exam != null){ if(exam.getGradeid() != 0){//条件:年级int gradeid = exam.getGradeid();param.add(gradeid);sb.append("AND gradeid=? ");}if(exam.getClazzid() != 0){int clazzid = exam.getClazzid();param.add(clazzid);sb.append("AND clazzid=? ");}}//添加排序sb.append("ORDER BY id DESC ");//分页if(page != null){param.add(page.getStart());param.add(page.getSize());sb.append("LIMIT ?,?");}String sql = sb.toString().replaceFirst("AND", "WHERE");//获取数据List<Exam> list = dao.getExamList(sql, param);//获取总记录数long total = getCount(exam);//定义MapMap<String, Object> jsonMap = new HashMap<String, Object>();  //total键 存放总记录数,必须的jsonMap.put("total", total);//rows键 存放每页记录 list jsonMap.put("rows", list); //格式化Map,以json格式返回数据String result = JSONObject.fromObject(jsonMap).toString();//返回return result;}/*** 获取记录数* @param exam* @return*/private long getCount(Exam exam){//sql语句StringBuffer sb = new StringBuffer("SELECT COUNT(*) FROM exam ");//参数List<Object> param = new LinkedList<>();//判断条件if(exam != null){ if(exam.getGrade() != null){//条件:年级int gradeid = exam.getGradeid();param.add(gradeid);sb.append("AND gradeid=? ");}if(exam.getClazz() != null){int clazzid = exam.getClazzid();param.add(clazzid);sb.append("AND clazzid=? ");}}String sql = sb.toString().replaceFirst("AND", "WHERE");long count = dao.count(sql, param).intValue();return count;}/*** 添加考试* @param exam* @throws Exception*/public void addExam(Exam exam) throws Exception {Connection conn = MysqlTool.getConnection();try {//开启事务MysqlTool.startTransaction();//添加考试信息int examid = dao.insertReturnKeysTransaction(conn, "INSERT INTO exam(name, time, remark, type, gradeid, clazzid, courseid) value(?,?,?,?,?,?,?)", new Object[]{exam.getName(), exam.getTime(),exam.getRemark(),exam.getType(),exam.getGradeid(),exam.getClazzid(),exam.getCourseid()});//添加学生成绩表String sql = "INSERT INTO escore(examid,clazzid,studentid,gradeid,courseid) value(?,?,?,?,?)";if(exam.getType() == Exam.EXAM_GRADE_TYPE){ //年级统考//查询该年级的课程List<Object> couObjList = dao.getList(Course.class, "SELECT courseid id FROM grade_course WHERE gradeid=?", new Object[]{exam.getGradeid()});//查询该年级下的学生List<Object> stuList = dao.getList(Student.class, "SELECT id, clazzid FROM student WHERE gradeid=?",new Object[]{exam.getGradeid()});//转换类型List<Course> couList = new LinkedList<>();for(Object obj : couObjList){Course course = (Course) obj;couList.add(course);}//批量参数Object[][] param = new Object[stuList.size()*couList.size()][5];int index = 0;for(int i = 0;i < stuList.size();i++){Student student = (Student) stuList.get(i);for(int j = 0;j < couList.size();j++){param[index][0] = examid;param[index][1] = student.getClazzid();param[index][2] = student.getId();param[index][3] = exam.getGradeid();param[index][4] = couList.get(j).getId();index++;}}//批量添加学生考试表dao.insertBatchTransaction(conn, sql, param);} else{  //平时考试//查询该班级下的学生List<Object> stuList = dao.getList(Student.class, "SELECT id FROM student WHERE clazzid=?",new Object[]{exam.getClazzid()});//批量参数Object[][] param = new Object[stuList.size()][5];for(int i = 0;i < stuList.size();i++){Student student = (Student) stuList.get(i);param[i][0] = examid;param[i][1] = exam.getClazzid();param[i][2] = student.getId();param[i][3] = exam.getGradeid();param[i][4] = exam.getCourseid();}//批量添加学生考试表dao.insertBatchTransaction(conn, sql, param);}//提交事务MysqlTool.commit();} catch (Exception e) {//回滚事务MysqlTool.rollback();e.printStackTrace();throw e;} finally {MysqlTool.closeConnection();}}/*** 删除考试* @param ids * @throws Exception */public void deleteExam(int id) throws Exception{//获取连接Connection conn = MysqlTool.getConnection();//开启事务MysqlTool.startTransaction();try {//删除成绩表dao.deleteTransaction(conn, "DELETE FROM escore WHERE examid=?", new Object[]{id});//删除考试dao.deleteTransaction(conn, "DELETE FROM exam WHERE id =?", new Object[]{id});//提交事务MysqlTool.commit();} catch (Exception e) {//回滚事务MysqlTool.rollback();e.printStackTrace();throw e;} finally {MysqlTool.closeConnection();}}/*** 获取某老师的考试* @param id* @return*/public String teacherExamList(String number) {//获取教师信息Teacher teacher = new TeacherService().getTeacher(number);List<CourseItem> itemList = teacher.getCourseList();if(itemList.size() == 0){return "";}StringBuffer g = new StringBuffer();StringBuffer c = new StringBuffer();for(CourseItem item : itemList){g.append(","+item.getGradeid());c.append(","+item.getCourseid());}StringBuffer sb = new StringBuffer("SELECT * FROM exam WHERE (gradeid IN (");sb.append(g.toString().replaceFirst(",", ""));sb.append(") AND type=1) OR (courseid IN (");sb.append(c.toString().replaceFirst(",", ""));sb.append(") AND type=2)");//sql语句String sql = sb.toString();//获取数据List<Exam> list = dao.getExamList(sql, null);//格式化Map,以json格式返回数据String result = JSONArray.fromObject(list).toString();//返回return result;}/*** 获取某个学生考试列表* @param number* @return*/public String studentExamList(String number) {//获取学生详细信息Student student = new StudentDaoImpl().getStudentList("SELECT * FROM student WHERE number="+number, null).get(0);String sql = "SELECT * FROM exam WHERE (gradeid=? AND type=1) OR (clazzid=? AND type=2)";List<Object> param = new LinkedList<>();param.add(student.getGradeid());param.add(student.getClazzid());//获取数据List<Exam> list = dao.getExamList(sql, param);//格式化Map,以json格式返回数据String result = JSONArray.fromObject(list).toString();return result;}}

四、底部获取项目

链接:https://pan.baidu.com/s/1qfxy0oiz1vHu74THhGApWw?pwd=h1et 
提取码:h1et 
--来自百度网盘超级会员V6的分享
http://www.lryc.cn/news/2414297.html

相关文章:

  • Adapter—适配器模式
  • 【WordPress】如何更换自定义的主题
  • 物体识别
  • 动态发布站点的并发访问升级简易方案
  • java配置环境中jdk和jre
  • 强大的.NET反编译工具Reflector及插件
  • 亚马逊账户锁定无法登陆_如何保护您的亚马逊帐户
  • .NET面试题
  • SurfaceView、SurfaceHolder与Surface
  • 520了,教你如何制作自己的表白网站(附模板源码)
  • 【转】威胁建模的12种方法
  • 计算机网络基础技术:数据通信技术基本概念
  • 使用BULK INSERT高效导入大量数据到SQL Server数据库
  • 问题事件名称: APPCRASH(解决方法)
  • 分享86个jQuery特效,总有一款适合您
  • DFS概念介绍
  • 网络知识:电脑无线网连接不上问题汇总
  • 手把手教你提取WOW中的所有声音文件
  • Windows系统缺失wsock32.dll文件导致出现错误解决
  • NLP重要概念
  • 宽带的上行带宽和下行带宽是什么?
  • platform设备添加流程(转载)
  • libnet/libnids库函数介绍
  • STL算法 | std::max的使用方法总结,std::min 的使用方法与之相同。
  • 电脑缺失msvcr120.dll丢失的5种修复,轻松解决msvcr120.dll问题
  • win7怎么看电脑配置和型号参数
  • IIS错误:-2147467259 (0x80004005) 解决方法
  • AttributeSet api分析
  • 各国google网站
  • 【Linux篇】Linux操作系统各部分详解