Java教务管理系统

介绍:

本项目采用MVC框架,对代码分层,分为Dao,Pojo,Service,Utils,View, swing的视图设计上我是参考了其他人的设置,功能上全由个人编写,第一版的实现可能会由有很多不足的地方,欢迎大家评论区讨论。

效果展示:

学生端

登陆功能,图片大家可以随意更换

首页

课程查询

选课系统

成绩查询

通知管理

个人中心

教师端

首页

教学安排

成绩录入

个人中心

管理员端

首页

老师管理

学生管理

通知管理

个人中心

技术实现:

swing ,maven ,mybatis

主要功能: 

  1. 不同用户的登录

  1. 用户菜单的绘制

  1. 学生用户选课功能,查看课程功能,成绩查询功能,个人信息展示功能

  1. 教师用户成绩录入功能,查看授课功能,个人信息展示功能

  1. 管理员用户管理学生功能,管理教师功能,管理通知功能,个人信息展示功能

数据库代码:

/*
 Navicat Premium Data Transfer

 Source Server         : mysql
 Source Server Type    : MySQL
 Source Server Version : 80030 (8.0.30)
 Source Host           : localhost:3306
 Source Schema         : EMS

 Target Server Type    : MySQL
 Target Server Version : 80030 (8.0.30)
 File Encoding         : 65001

 Date: 10/01/2023 22:19:02
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for academy
-- ----------------------------
DROP TABLE IF EXISTS `academy`;
CREATE TABLE `academy` (
  `a_id` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `a_name` char(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  PRIMARY KEY (`a_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of academy
-- ----------------------------
BEGIN;
INSERT INTO `academy` (`a_id`, `a_name`) VALUES ('a_001', '数学与大数据学院');
INSERT INTO `academy` (`a_id`, `a_name`) VALUES ('a_002', '经济管理学院');
INSERT INTO `academy` (`a_id`, `a_name`) VALUES ('a_003', '社会管理学院');
INSERT INTO `academy` (`a_id`, `a_name`) VALUES ('a_004', '马克思主义学院');
INSERT INTO `academy` (`a_id`, `a_name`) VALUES ('a_005', '法学与社会学学院');
INSERT INTO `academy` (`a_id`, `a_name`) VALUES ('a_006', '计算机科学学院');
INSERT INTO `academy` (`a_id`, `a_name`) VALUES ('a_007', '工业设计和陶瓷学院');
INSERT INTO `academy` (`a_id`, `a_name`) VALUES ('a_008', '计算机信息学院');
INSERT INTO `academy` (`a_id`, `a_name`) VALUES ('a_009', '生命科学学院');
INSERT INTO `academy` (`a_id`, `a_name`) VALUES ('a_010', '艺术和设计学院');
INSERT INTO `academy` (`a_id`, `a_name`) VALUES ('a_011', '人文科学学院');
COMMIT;

-- ----------------------------
-- Table structure for class
-- ----------------------------
DROP TABLE IF EXISTS `class`;
CREATE TABLE `class` (
  `c_id` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `c_name` char(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `c_num` int DEFAULT NULL,
  `d_id` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  PRIMARY KEY (`c_id`) USING BTREE,
  KEY `d.id` (`d_id`),
  CONSTRAINT `d.id` FOREIGN KEY (`d_id`) REFERENCES `department` (`d_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of class
-- ----------------------------
BEGIN;
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c101', '数创1', 30, 'd_01');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c102', '数传2', 30, 'd_01');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c103', '数创2', 30, 'd_01');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c104', '大数据技术1', 30, 'd_02');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c105', '大数据技术2', 30, 'd_02');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c106', '数师1', 30, 'd_03');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c107', '数师2', 30, 'd_03');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c108', '会计2', 30, 'd_04');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c109', '会计2', 30, 'd_04');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c110', '法学1', 30, 'd_05');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c111', '计科1', 30, 'd_06');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c112', '计科2', 30, 'd_06');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c113', '工业设计1', 30, 'd_07');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c114', '工业设计2', 30, 'd_07');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c115', '马哲1', 30, 'd_08');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c116', '马应1', 30, 'd_09');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c117', '法应1', 30, 'd_10');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c118', '律政1', 30, 'd_11');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c119', '计创2', 30, 'd_12');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c120', '计应1', 30, 'd_13');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c121', '工应1', 30, 'd_14');
INSERT INTO `class` (`c_id`, `c_name`, `c_num`, `d_id`) VALUES ('c122', '数媒1', 30, 'd_15');
COMMIT;

-- ----------------------------
-- Table structure for course
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (
  `course_id` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `curse_name` char(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `course_type` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `course_credit` int DEFAULT NULL,
  PRIMARY KEY (`course_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of course
-- ----------------------------
BEGIN;
INSERT INTO `course` (`course_id`, `curse_name`, `course_type`, `course_credit`) VALUES ('c001', '高等数学', '必修', 4);
INSERT INTO `course` (`course_id`, `curse_name`, `course_type`, `course_credit`) VALUES ('c002', '大学英语', '必修', 4);
INSERT INTO `course` (`course_id`, `curse_name`, `course_type`, `course_credit`) VALUES ('c003', '数据结构', '必修', 3);
INSERT INTO `course` (`course_id`, `curse_name`, `course_type`, `course_credit`) VALUES ('c004', '代数方程', '必修', 2);
INSERT INTO `course` (`course_id`, `curse_name`, `course_type`, `course_credit`) VALUES ('c005', '线性代数', '必修', 3);
INSERT INTO `course` (`course_id`, `curse_name`, `course_type`, `course_credit`) VALUES ('c006', 'Java web', '必修', 2);
INSERT INTO `course` (`course_id`, `curse_name`, `course_type`, `course_credit`) VALUES ('c007', 'Python', '必修', 2);
INSERT INTO `course` (`course_id`, `curse_name`, `course_type`, `course_credit`) VALUES ('c008', 'C/C++', '必修', 2);
COMMIT;

-- ----------------------------
-- Table structure for course_plan
-- ----------------------------
DROP TABLE IF EXISTS `course_plan`;
CREATE TABLE `course_plan` (
  `cp_year` char(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `cp_class` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `course_id` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `cp_week` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  PRIMARY KEY (`cp_year`,`cp_class`,`course_id`) USING BTREE,
  KEY `course.id` (`course_id`),
  CONSTRAINT `course.id` FOREIGN KEY (`course_id`) REFERENCES `course` (`course_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of course_plan
-- ----------------------------
BEGIN;
INSERT INTO `course_plan` (`cp_year`, `cp_class`, `course_id`, `cp_week`) VALUES ('2020-2021上', '10', 'c001', '18');
INSERT INTO `course_plan` (`cp_year`, `cp_class`, `course_id`, `cp_week`) VALUES ('2020-2021上', '10', 'c002', '8');
INSERT INTO `course_plan` (`cp_year`, `cp_class`, `course_id`, `cp_week`) VALUES ('2020-2021上', '10', 'c003', '18');
INSERT INTO `course_plan` (`cp_year`, `cp_class`, `course_id`, `cp_week`) VALUES ('2020-2021上', '10', 'c004', '9');
INSERT INTO `course_plan` (`cp_year`, `cp_class`, `course_id`, `cp_week`) VALUES ('2020-2021上', '10', 'c005', '10');
INSERT INTO `course_plan` (`cp_year`, `cp_class`, `course_id`, `cp_week`) VALUES ('2020-2021下', '10', 'c001', '8');
INSERT INTO `course_plan` (`cp_year`, `cp_class`, `course_id`, `cp_week`) VALUES ('2020-2021下', '10', 'c006', '12');
INSERT INTO `course_plan` (`cp_year`, `cp_class`, `course_id`, `cp_week`) VALUES ('2020-2021下', '10', 'c007', '12');
INSERT INTO `course_plan` (`cp_year`, `cp_class`, `course_id`, `cp_week`) VALUES ('2020-2021下', '10', 'c008', '8');
COMMIT;

-- ----------------------------
-- Table structure for department
-- ----------------------------
DROP TABLE IF EXISTS `department`;
CREATE TABLE `department` (
  `d_id` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `d_name` char(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `a_id` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  PRIMARY KEY (`d_id`) USING BTREE,
  KEY `a.id` (`a_id`),
  CONSTRAINT `a.id` FOREIGN KEY (`a_id`) REFERENCES `academy` (`a_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of department
-- ----------------------------
BEGIN;
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_01', '数学与应用数学', 'a_001');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_02', '大数据技术', 'a_001');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_03', '数学师范', 'a_001');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_04', '会计', 'a_002');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_05', '人力资源管理', 'a_002');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_06', '社会人文', 'a_003');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_07', '社会学', 'a_003');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_08', '马克思主义哲学', 'a_004');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_09', '马克思主义应用学', 'a_004');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_10', '法学应用', 'a_005');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_11', '律政', 'a_005');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_12', '计算机科学', 'a_006');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_13', '计算机应用', 'a_006');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_14', '工业设计', 'a_007');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_15', '数字媒体', 'a_007');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_16', '人工智能', 'a_008');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_17', '信息技术应用', 'a_008');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_18', '网络安全', 'a_008');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_19', '生命研究学', 'a_009');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_20', '生命科学', 'a_009');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_21', '艺画应用', 'a_010');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_22', '艺术学', 'a_010');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_23', '人文教育', 'a_011');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_24', '教育学', 'a_011');
INSERT INTO `department` (`d_id`, `d_name`, `a_id`) VALUES ('d_25', '社会政治学', 'a_011');
COMMIT;

-- ----------------------------
-- Table structure for grade
-- ----------------------------
DROP TABLE IF EXISTS `grade`;
CREATE TABLE `grade` (
  `tc_id` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `s_id` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `g_ordinary` float DEFAULT NULL,
  `g_exam` float DEFAULT NULL,
  `g_final` float DEFAULT NULL,
  PRIMARY KEY (`tc_id`,`s_id`) USING BTREE,
  KEY `s.id_s` (`s_id`),
  CONSTRAINT `s.id_s` FOREIGN KEY (`s_id`) REFERENCES `student` (`s_id`),
  CONSTRAINT `tc.id_tc` FOREIGN KEY (`tc_id`) REFERENCES `teaching_class` (`tc_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of grade
-- ----------------------------
BEGIN;
INSERT INTO `grade` (`tc_id`, `s_id`, `g_ordinary`, `g_exam`, `g_final`) VALUES ('tc1001', '20220101', 42, 40, 82);
INSERT INTO `grade` (`tc_id`, `s_id`, `g_ordinary`, `g_exam`, `g_final`) VALUES ('tc1002', '20220115', 45, 50, 95);
COMMIT;

-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `s_id` char(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '学生学号',
  `s_name` char(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `s_sex` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `c_id` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  PRIMARY KEY (`s_id`) USING BTREE,
  KEY `c.id` (`c_id`),
  CONSTRAINT `c.id` FOREIGN KEY (`c_id`) REFERENCES `class` (`c_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of student
-- ----------------------------
BEGIN;
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220101', '温如玉', '男', 'c101');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220102', '伍六七', '男', 'c101');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220103', '王法', '男', 'c101');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220104', '上官晴', '女', 'c102');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220105', '王琪', '女', 'c103');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220106', '张天赐', '男', 'c104');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220107', '张三', '男', 'c105');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220108', '李四', '男', 'c102');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220109', '诸葛慈', '女', 'c110');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220110', '练剑黄', '男', 'c111');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220111', '欧阳蓉儿', '女', 'c109');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220112', '唐三彩', '男', 'c116');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220113', '张艺得', '男', 'c113');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220114', '德古拉', '女', 'c102');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220115', '瑞克桑切斯', '男', 'c101');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220116', '莫蒂', '男', 'c101');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220117', '桑美', '女', 'c111');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220118', '杰瑞', '男', 'c122');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220119', '西米', '女', 'c111');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220120', '肖九', '男', 'c106');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220121', '六儿', '女', 'c107');
INSERT INTO `student` (`s_id`, `s_name`, `s_sex`, `c_id`) VALUES ('20220122', '李一', '男', 'c108');
COMMIT;

-- ----------------------------
-- Table structure for teacher
-- ----------------------------
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher` (
  `t_id` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '老师账号',
  `t_name` char(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `t_sex` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  PRIMARY KEY (`t_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of teacher
-- ----------------------------
BEGIN;
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101011', '东方芯源', '女');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101012', '小蝴蝶', '女');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101013', '天一案', '女');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101014', '麦克', '男');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101015', '闷油瓶', '男');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101016', '吴邪', '男');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101017', '风清扬', '男');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101018', '剑韭黄', '男');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101019', '黑棋', '女');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101020', 'Aniya', '女');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101021', '柒', '男');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101022', '小白', '女');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101023', '小黑', '女');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101024', '柯南', '男');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101025', '毛利小五郎', '男');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101026', '天下霸唱', '男');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101027', '黄大仙', '女');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101028', '狐仙儿', '女');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101029', '八重', '女');
INSERT INTO `teacher` (`t_id`, `t_name`, `t_sex`) VALUES ('101101030', '惊爆点', '男');
COMMIT;

-- ----------------------------
-- Table structure for teacher_techering_class
-- ----------------------------
DROP TABLE IF EXISTS `teacher_techering_class`;
CREATE TABLE `teacher_techering_class` (
  `t_id` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `tc_id` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  PRIMARY KEY (`t_id`,`tc_id`) USING BTREE,
  KEY `tc.id` (`tc_id`),
  CONSTRAINT `t.id_t` FOREIGN KEY (`t_id`) REFERENCES `teacher` (`t_id`),
  CONSTRAINT `tc.id_tclass` FOREIGN KEY (`tc_id`) REFERENCES `teaching_class` (`tc_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of teacher_techering_class
-- ----------------------------
BEGIN;
INSERT INTO `teacher_techering_class` (`t_id`, `tc_id`) VALUES ('101101020', 'tc1002');
INSERT INTO `teacher_techering_class` (`t_id`, `tc_id`) VALUES ('101101030', 'tc1003');
INSERT INTO `teacher_techering_class` (`t_id`, `tc_id`) VALUES ('101101011', 'tc1004');
INSERT INTO `teacher_techering_class` (`t_id`, `tc_id`) VALUES ('101101011', 'tc1005');
INSERT INTO `teacher_techering_class` (`t_id`, `tc_id`) VALUES ('101101023', 'tc1007');
INSERT INTO `teacher_techering_class` (`t_id`, `tc_id`) VALUES ('101101017', 'tc1010');
COMMIT;

-- ----------------------------
-- Table structure for teaching_class
-- ----------------------------
DROP TABLE IF EXISTS `teaching_class`;
CREATE TABLE `teaching_class` (
  `tc_id` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `tc_name` char(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `tc_num` int DEFAULT NULL,
  `tc_time` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `tc_point` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  PRIMARY KEY (`tc_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of teaching_class
-- ----------------------------
BEGIN;
INSERT INTO `teaching_class` (`tc_id`, `tc_name`, `tc_num`, `tc_time`, `tc_point`) VALUES ('tc1001', '高数1班', 30, '1-2 ', 'A栋101');
INSERT INTO `teaching_class` (`tc_id`, `tc_name`, `tc_num`, `tc_time`, `tc_point`) VALUES ('tc1002', '大英1班', 30, '2-3', 'B栋102');
INSERT INTO `teaching_class` (`tc_id`, `tc_name`, `tc_num`, `tc_time`, `tc_point`) VALUES ('tc1003', ' Java web1班', 30, '1-3', 'C栋102');
INSERT INTO `teaching_class` (`tc_id`, `tc_name`, `tc_num`, `tc_time`, `tc_point`) VALUES ('tc1004', 'Python1班', 30, '2-3', 'B栋001');
INSERT INTO `teaching_class` (`tc_id`, `tc_name`, `tc_num`, `tc_time`, `tc_point`) VALUES ('tc1005', 'C1班', 30, '2-3', 'A栋102');
INSERT INTO `teaching_class` (`tc_id`, `tc_name`, `tc_num`, `tc_time`, `tc_point`) VALUES ('tc1006', '线性代数1班', 30, '2-3', 'C栋102');
INSERT INTO `teaching_class` (`tc_id`, `tc_name`, `tc_num`, `tc_time`, `tc_point`) VALUES ('tc1007', '代数1班', 30, '2-3', 'D栋122');
INSERT INTO `teaching_class` (`tc_id`, `tc_name`, `tc_num`, `tc_time`, `tc_point`) VALUES ('tc1008', '大英2班', 30, '1-2', 'B栋012');
INSERT INTO `teaching_class` (`tc_id`, `tc_name`, `tc_num`, `tc_time`, `tc_point`) VALUES ('tc1009', '大英3班', 30, '3-4', 'B栋100');
INSERT INTO `teaching_class` (`tc_id`, `tc_name`, `tc_num`, `tc_time`, `tc_point`) VALUES ('tc1010', '高数2班', 30, '3-5', 'A栋111');
COMMIT;

-- ----------------------------
-- Table structure for teaching_programme
-- ----------------------------
DROP TABLE IF EXISTS `teaching_programme`;
CREATE TABLE `teaching_programme` (
  `cp_year` char(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `cp_class` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `tc_id` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `course_id` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  PRIMARY KEY (`cp_year`,`cp_class`,`tc_id`) USING BTREE,
  KEY `course.id_cp` (`course_id`),
  KEY `quote_course.plan` (`cp_year`,`cp_class`,`course_id`),
  KEY `quote_tc.id` (`tc_id`),
  CONSTRAINT `quote_course.plan` FOREIGN KEY (`cp_year`, `cp_class`, `course_id`) REFERENCES `course_plan` (`cp_year`, `cp_class`, `course_id`),
  CONSTRAINT `quote_tc.id` FOREIGN KEY (`tc_id`) REFERENCES `teaching_class` (`tc_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of teaching_programme
-- ----------------------------
BEGIN;
INSERT INTO `teaching_programme` (`cp_year`, `cp_class`, `tc_id`, `course_id`) VALUES ('2020-2021上', '10', 'tc1001', 'c001');
INSERT INTO `teaching_programme` (`cp_year`, `cp_class`, `tc_id`, `course_id`) VALUES ('2020-2021下', '10', 'tc1010', 'c001');
INSERT INTO `teaching_programme` (`cp_year`, `cp_class`, `tc_id`, `course_id`) VALUES ('2020-2021上', '10', 'tc1002', 'c002');
INSERT INTO `teaching_programme` (`cp_year`, `cp_class`, `tc_id`, `course_id`) VALUES ('2020-2021下', '10', 'tc1003', 'c006');
INSERT INTO `teaching_programme` (`cp_year`, `cp_class`, `tc_id`, `course_id`) VALUES ('2020-2021下', '10', 'tc1005', 'c008');
COMMIT;

-- ----------------------------
-- Table structure for thing
-- ----------------------------
DROP TABLE IF EXISTS `thing`;
CREATE TABLE `thing` (
  `thingtxt` text,
  `tine` datetime DEFAULT NULL,
  `id` int NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of thing
-- ----------------------------
BEGIN;
INSERT INTO `thing` (`thingtxt`, `tine`, `id`) VALUES ('2023年2月20正式开学', '2023-01-10 11:33:29', 1);
COMMIT;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `u_id` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `u_pwd` char(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `u_status` char(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  PRIMARY KEY (`u_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of user
-- ----------------------------
BEGIN;
INSERT INTO `user` (`u_id`, `u_pwd`, `u_status`) VALUES ('101101011', '000000', '老师');
INSERT INTO `user` (`u_id`, `u_pwd`, `u_status`) VALUES ('20220101', '123456', '学生');
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;

总体功能图:

总体流程图:

Maven设置:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>EMS</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <!--    导入依赖-->
    <dependencies>
        <!--        mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>
        <!--        mybatis驱动-->
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>
        <!--        junit单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

    </dependencies>
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.png</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>


</project>

Mybatis设置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
<!--        <setting name="mapUnderscoreToCamelCase" value="true"/>-->
    </settings>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/EMS"/>
                <property name="username" value="root"/>
                <property name="password" value="你自己的密码"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="com/dwz/Dao/UserMapper.xml"></mapper>
        <mapper resource="com/dwz/Dao/StudentsMapper.xml"></mapper>
        <mapper resource="com/dwz/Dao/TeacherMapper.xml"></mapper>
    </mappers>

</configuration>

Dao层实现:

StudentMapper

package com.dwz.Dao;

import com.dwz.Pojo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface StudentMapper {
//    查询学生
    Student getStudents_s_id(String id);

//    获得学生信息
    List<Student> getStudentList();

//    获得学生的学年信息
    List<String> getCp_year();

//    获得授课id
    List<String> getTeachingClassId(Map<String,Object> map);

//    获得教师班级
    Teacher_class getTeacherclass1(String tc_id);

//    获得教师班级列表
    List<Teacher_class> getTeacherclass2(Map map);

//    获得课程信息
    List<Seclet_Course> getSelectCourse(String cp_year);

//    获得授课名字
    String getTeachingclassIdbyName(String tc_name);

//    增加选课记录
    boolean addCourse(@Param("s_id")String s_id,@Param("tc_name")String tc_name);

    /*
    * 获得成绩列表
    * */
    List<Grade> GetGradeList(Map<String,Object> map);

    /*
    * 通过成绩的tc_id查找这门课程的名字
    * */
    String GetCourseName(String tc_id);

    /*
    * 学生修改密码功能
    * */
    String GetOldPassword(String Sid);
    boolean UpdatePassword(@Param("newPassword") String newPassword, @Param("Sid") String id);

    /*
    * 获得学院名称
    * */
    String GetAcademyName(String ClassId);

    /*
    * 获得通知信息
    * */
    List<Thing> GetInform();

}

StudentMapper.xml

StudentMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dwz.Dao.StudentMapper">


    <select id="getStudents_s_id" resultMap="Studentmapper" parameterType="String">
        select EMS.student.s_id, EMS.student.c_id,
               EMS.student.s_name,EMS.student.s_sex,
               EMS.class.c_name
        from EMS.student join EMS.class on class.c_id = student.c_id
        where EMS.student.s_id = #{id}
    </select>
    <resultMap id="Studentmapper" type="com.dwz.Pojo.Student">
        <result column="c_name" property="c_id"></result>
    </resultMap>


    <select id="getStudentList" resultType="com.dwz.Pojo.Student">
        select *from EMS.student s
    </select>



    <select id="getCp_year" resultType="String">
        select distinct EMS.course_plan.cp_year from EMS.course_plan
    </select>


    <select id="getTeachingClassId" resultType="String" parameterType="map">
        SELECT EMS.grade_f.tc_id FROM EMS.grade_f,EMS.teaching_programme
        WHERE grade_f.tc_id = teaching_programme.tc_id
          AND cp_year = #{cp_year}
          AND s_id = #{s_id};
    </select>


    <select id="getTeacherclass1" resultMap="TeachingClassMapper" parameterType="String" >
        select EMS.teaching_programme.tc_id ,EMS.teaching_class.tc_name,
               EMS.teaching_class.tc_point,EMS.teaching_class.tc_time,
               EMS.teaching_class.tc_num ,EMS.course.curse_name
        from EMS.teaching_programme ,EMS.teaching_class, EMS.course
        where EMS.teaching_class.tc_id = EMS.teaching_programme.tc_id
        and EMS.teaching_programme.course_id = EMS.course.course_id
        and teaching_programme.tc_id = #{tc_id}
    </select>
    <resultMap id="TeachingClassMapper" type="com.dwz.Pojo.Teacher_class">
        <result column="tc_id" property="tc_id"/>
        <result column="tc_name" property="tc_name"/>
        <result column="curse_name" property="curse_name"/>
        <result column="tc_time" property="tc_time"/>
        <result column="tc_point" property="tc_point"/>
        <result column="tc_num" property="tc_num"/>
    </resultMap>
    <select id="getTeacherclass2" parameterType="map" resultMap="TeachingClassMapper">
        SELECT EMS.teaching_programme.tc_id,
               EMS.teaching_class.tc_name,
               EMS.course.curse_name,
               EMS.teaching_class.tc_time,
               EMS.teaching_class.tc_point,
               EMS.teaching_class.tc_num
        FROM EMS.teaching_class,EMS.teaching_programme,EMS.course
        WHERE teaching_class.tc_id = teaching_programme.tc_id
        AND
        teaching_programme.course_id = course.course_id
        AND
        <foreach collection="teachingClassIdList" item="teachingClassId" open="(" close=")" separator="or">
            teaching_programme.tc_id = #{teachingClassId}
        </foreach>
    </select>


    <select id="getSelectCourse" parameterType="String" resultMap="SelectCourse">
        select EMS.teaching_programme.cp_year AS cp_year,
               EMS.teaching_programme.cp_class AS cp_class,
               EMS.course.curse_name AS course_name,
               EMS.teaching_programme.tc_id AS tc_id,
               EMS.teaching_class.tc_name AS tc_name,
               EMS.course.course_credit AS course_credit,
               EMS.teacher.t_name AS t_name,
               EMS.teaching_class.tc_point AS tc_point,
               EMS.teaching_class.tc_time AS tc_time
        from ((((EMS.teaching_programme join EMS.teaching_class) join EMS.course) join EMS.teacher_techering_class) join EMS.teacher)
        where ((teaching_programme.tc_id = teaching_class.tc_id)
            and (teaching_programme.course_id = course.course_id)
            and (teaching_programme.tc_id = teacher_techering_class.tc_id)
            and (teacher_techering_class.t_id = EMS.teacher.t_id)
            and (course.course_type = '必修'))
            and (cp_year = #{cp_year})
    </select>
    <resultMap id="SelectCourse" type="com.dwz.Pojo.Seclet_Course">
        <result column="tc_name" property="teacherClass"/>
        <result column="course_credit" property="credit"/>
        <result column="t_name" property="teacherName"/>
        <result column="tc_time" property="courseTime"/>
        <result column="tc_point" property="coursePoint"/>
        <result column="course_name" property="courseName"/>
        <result column="cp_class" property="cpClass"/>
    </resultMap>


    <select id="getTeachingclassIdbyName" parameterType="String" resultType="String">
        SELECT EMS.teaching_class.tc_id FROM EMS.teaching_class WHERE tc_name = #{tc_name}
    </select>


    <insert id="addCourse" parameterType="String">
        INSERT INTO `EMS`.`grade_f` VALUES (#{tc_name},#{s_id},NULL,NULL,NULL)
    </insert>


    <select id="GetGradeList" resultMap="GradeMapper" parameterType="map">
        select `grade_f`.`s_id` AS `s_id`,
               `student`.`s_name` AS `s_name`,
               `course`.`curse_name` AS `course_name`,
               `grade_f`.`g_ps` AS `g_ps`,
               `grade_f`.`g_exam` AS `g_exam`,
               `grade_f`.`g_final` AS `g_final`,
               `teaching_programme`.`cp_year` AS `cp_year`
        from (((EMS.`grade_f` join EMS.`teaching_programme`) join EMS.`student`) join EMS.`course`)
        where ((`grade_f`.`s_id` = `student`.`s_id`) and (`grade_f`.`tc_id` = `teaching_programme`.`tc_id`)
            and (`course`.`course_id` = `teaching_programme`.`course_id`))
            and(grade_f.s_id = #{sid} AND cp_year = #{cpYear})
    </select>
    <resultMap id="GradeMapper" type="com.dwz.Pojo.Grade">
        <result column="s_id" property="s_id"/>
        <result column="s_name" property="s_name"/>
        <result column="course_name" property="course_name"/>
        <result column="g_ps" property="g_ps"/>
        <result column="g_exam" property="g_exam"/>
        <result column="g_final" property="g_final"/>
    </resultMap>



    <select id="GetCourseName" parameterType="String" resultType="String">
        SELECT curse_name
        FROM EMS.teaching_programme
                 JOIN EMS.grade_f ON teaching_programme.tc_id = grade_f.tc_id
                 JOIN EMS.student ON grade_f.s_id = student.s_id
                 JOIN EMS.course ON teaching_programme.course_id = course.course_id
        WHERE grade_f.tc_id = #{tc_id}
    </select>


    <select id="GetOldPassword" parameterType="String" resultType="String">
        select u_pwd from EMS.user where u_id = #{Sid}
    </select>


    <update id="UpdatePassword" parameterType="String">
        UPDATE EMS.user SET u_pwd = #{newPassword} WHERE u_id = #{Sid}
    </update>


    <select id="GetAcademyName" parameterType="String" resultType="String">
        SELECT academy.a_name
        FROM EMS.academy JOIN EMS.department ON academy.a_id = department.a_id
                     JOIN EMS.class ON class.d_id = department.d_id
        WHERE class.c_name = #{ClassId}
    </select>
    
    <select id="GetInform"  resultType="com.dwz.Pojo.Thing">
        select * from EMS.thing
    </select>
</mapper>

TeacherMapper

package com.dwz.Dao;

import com.dwz.Pojo.Grade;
import com.dwz.Pojo.Teacher;
import com.dwz.Pojo.TeacherPlan;
import com.dwz.Pojo.Teaching_programme;

import java.util.List;
import java.util.Map;

public interface TeacherMapper {
    /*
    * 通过id获得教师用户
    * */
    Teacher getTeacher(String t_id);
    /*
    * 获得教师列表
    * */
    List<Teacher> getTeacherList();
    /*
    * 获得教师课程安排
    * */
    List<TeacherPlan> getTeacherProgramme(Map<String,Object> map);
    /*
    * 成绩录入
    * */
    List<Grade> GetGradeByClass(String tc_name);

    /*
    * 更新成绩
    * */
    String getTeachingclassIdbyName(String tc_name);
    boolean UpdateGrade(Map<String,Object> map);


}

TeacherMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dwz.Dao.TeacherMapper">


    <select id="getTeacher" parameterType="String" resultType="com.dwz.Pojo.Teacher">
        select *from EMS.teacher t where t_id = #{t_id}
    </select>



    <select id="getTeacherList" resultType="com.dwz.Pojo.Teacher">
        select *from EMS.teacher t
    </select>



    <select id="getTeacherProgramme" parameterType="map" resultMap="GetTeacherProgrammeMapper">
        SELECT t_id,tc_name,tc_time,tc_point,cp_year FROM EMS.teacher_techering_class
          JOIN EMS.teaching_class ON EMS.teacher_techering_class.tc_id = EMS.teaching_class.tc_id
          JOIN EMS.teaching_programme ON EMS.teacher_techering_class.tc_id = teaching_programme.tc_id
        where teacher_techering_class.t_id = #{t_id} and cp_year = #{cp_year}
    </select>
    <resultMap id="GetTeacherProgrammeMapper" type="com.dwz.Pojo.TeacherPlan">
        <result column="tc_name" property="tc_name"/>
        <result column="tc_time" property="tc_time"/>
        <result column="tc_point" property="tc_point"/>
    </resultMap>


    <select id="GetGradeByClass" parameterType="String" resultMap="GetGradeMapper">
        SELECT student.s_id,student.s_name,grade_f.g_ps,grade_f.g_exam,grade_f.g_final ,teaching_class.tc_name
        FROM EMS.grade_f
            JOIN EMS.student ON grade_f.s_id = student.s_id
            JOIN EMS.teaching_class ON teaching_class.tc_id = grade_f.tc_id
        where teaching_class.tc_name = #{tc_name}
    </select>
    <resultMap id="GetGradeMapper" type="com.dwz.Pojo.Grade">
        <result column="s_id" property="s_id"/>
        <result column="s_name" property="s_name"/>
        <result column="course_name" property="course_name"/>
        <result column="g_ps" property="g_ps"/>
        <result column="g_exam" property="g_exam"/>
        <result column="g_final" property="g_final"/>
    </resultMap>


    <update id="UpdateGrade" parameterType="map">
        UPDATE EMS.grade_f SET g_ps = #{ps},g_exam = #{exam},g_final = #{final}
        WHERE tc_id = #{tcId} AND s_id = #{sId}
    </update>

    <select id="getTeachingclassIdbyName" parameterType="String" resultType="String">
        SELECT tc_id FROM EMS.teaching_class WHERE tc_name = #{tc_name}
    </select>
</mapper>

UserMapper

package com.dwz.Dao;

import com.dwz.Pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface UserMapper {
    /*
    * 得到全部的用户,用户分为三部分,管理员,学生,账号
    * */
    List<User> getUserList();
    /*
    * 通过id获得用户
    * */
    User getUserById(String u_id);
    /*
    * 获得教师用户
    * */
    List<User> GetTeacherUser();
    /*
    * 修改教师密码
    * */
    boolean UpdateTeacherUserPwd(Map<String,Object> map);
    /*
    * 获得学生用户
    * */
    List<User> GetStudentUser();
    /*
    * 修改学生密码
    * */
    boolean UpdateStudentUserPwd(Map<String,Object> map);
    /*
    *增加学生用户
    * */
    boolean AddStudentUser(Map<String,Object> map);
    /*
    * 增加老师用户
    * */
    boolean AddTeacherUser(Map<String,Object> map);
    /*
    * 增加通知
    * */
    boolean AddInform(Map<String,Object> map);
    /*
    * 通知删除
    * */
    boolean DeleteInform(String id);
}

UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dwz.Dao.UserMapper">
    <select id="getUserList" resultType="com.dwz.Pojo.User">
        select *from EMS.user u
    </select>
    
    <select id="getUserById" parameterType="String" resultType="com.dwz.Pojo.User">
        select *from EMS.user u where u_id = #{u_id}
    </select>

    <select id="GetTeacherUser" resultType="com.dwz.Pojo.User">
        SELECT `user`.u_id ,teacher.t_name,`user`.u_pwd ,`user`.u_status
        FROM EMS.`user` join EMS.teacher on user.u_id = teacher.t_id
        WHERE `user`.u_status RLIKE '^老'
    </select>

    <update id="UpdateTeacherUserPwd" parameterType="map" >
        update EMS.user set u_pwd = #{pwd}
        where u_id = #{t_id}
    </update>

    <select id="GetStudentUser" resultType="com.dwz.Pojo.User">
        SELECT `user`.u_id ,student.s_name,`user`.u_pwd ,`user`.u_status
        FROM EMS.`user` join EMS.student on user.u_id = student.s_id
        WHERE `user`.u_status RLIKE '^学'
    </select>


    <update id="UpdateStudentUserPwd" parameterType="map" >
        update EMS.user set u_pwd = #{pwd}
        where u_id = #{t_id}
    </update>

    <insert id="AddStudentUser" parameterType="map" statementType="CALLABLE">
        call EMS.s_add(#{id,mode=IN},#{sname,mode=IN},#{ssex,mode=IN})
    </insert>

    <insert id="AddTeacherUser" parameterType="map" statementType="CALLABLE">
        call EMS.t_add(#{id,mode=IN},#{sname,mode=IN},#{ssex,mode=IN})
    </insert>

    <insert id="AddInform" parameterType="map">
        INSERT INTO EMS.thing(thingtxt,tine,id,`year`) VALUES(#{thingtxt}, NOW(), #{id}, #{year})
    </insert>

    <delete id="DeleteInform" parameterType="String" >
        delete from EMS.thing where id = #{id}
    </delete>
</mapper>

Pojo层实现

这里我是直接先将数据库的表全部作为实体类的,但是实际上没有这个必要,我是觉得比较省事,要什么方法直接拿就行了,不用再去临时加。

User

package com.dwz.Pojo;

public class User {
    private String u_id;
    private String u_pwd;
    private String u_status;
    private String t_name;
    private String s_name;
    private String ssex;


    @Override
    public String toString() {
        return "User{" +
                "u_id='" + u_id + '\'' +
                ", u_pwd='" + u_pwd + '\'' +
                ", u_status='" + u_status + '\'' +
                ", t_name='" + t_name + '\'' +
                ", s_name='" + s_name + '\'' +
                ", ssex='" + ssex + '\'' +
                '}';
    }

    public String getS_name() {
        return s_name;
    }

    public String getSsex() {
        return ssex;
    }

    public void setSsex(String ssex) {
        this.ssex = ssex;
    }

    public void setS_name(String s_name) {
        this.s_name = s_name;
    }

    public String getT_name() {
        return t_name;
    }

    public void setT_name(String t_name) {
        this.t_name = t_name;
    }

    public User() {
    }

    public User(String u_id, String u_pwd, String u_status) {
        this.u_id = u_id;
        this.u_pwd = u_pwd;
        this.u_status = u_status;
    }

    public String getU_id() {
        return u_id;
    }

    public void setU_id(String u_id) {
        this.u_id = u_id;
    }

    public String getU_pwd() {
        return u_pwd;
    }

    public void setU_pwd(String u_pwd) {
        this.u_pwd = u_pwd;
    }

    public String getU_status() {
        return u_status;
    }

    public void setU_status(String u_status) {
        this.u_status = u_status;
    }
}

Student

package com.dwz.Pojo;

public class Student {
    private String s_id;
    private String s_name;
    private String s_sex;
    private String c_id;

    public Student() {
    }

    public Student(String s_id, String s_name, String s_sex, String c_id) {
        this.s_id = s_id;
        this.s_name = s_name;
        this.s_sex = s_sex;
        this.c_id = c_id;
    }

    @Override
    public String toString() {
        return "Student{" +
                "s_id='" + s_id + '\'' +
                ", s_name='" + s_name + '\'' +
                ", s_sex='" + s_sex + '\'' +
                ", c_id='" + c_id + '\'' +
                '}';
    }

    public String getS_id() {
        return s_id;
    }

    public void setS_id(String s_id) {
        this.s_id = s_id;
    }

    public String getS_name() {
        return s_name;
    }

    public void setS_name(String s_name) {
        this.s_name = s_name;
    }

    public String getS_sex() {
        return s_sex;
    }

    public void setS_sex(String s_sex) {
        this.s_sex = s_sex;
    }

    public String getC_id() {
        return c_id;
    }

    public void setC_id(String c_id) {
        this.c_id = c_id;
    }
}

Teacher

package com.dwz.Pojo;

public class Teacher {
    private String t_id;
    private String t_name;
    private String t_sex;

    public Teacher() {
    }

    public Teacher(String t_id, String t_name, String t_sex) {
        this.t_id = t_id;
        this.t_name = t_name;
        this.t_sex = t_sex;
    }

    public String getT_id() {
        return t_id;
    }

    public void setT_id(String t_id) {
        this.t_id = t_id;
    }

    public String getT_name() {
        return t_name;
    }

    public void setT_name(String t_name) {
        this.t_name = t_name;
    }

    public String getT_sex() {
        return t_sex;
    }

    public void setT_sex(String t_sex) {
        this.t_sex = t_sex;
    }

    @Override
    public String toString() {
        return "Teacher{" +
                "t_id='" + t_id + '\'' +
                ", t_name='" + t_name + '\'' +
                ", t_sex='" + t_sex + '\'' +
                '}';
    }

}

Class

package com.dwz.Pojo;

public class Class {
    private String c_id;
    private String c_name;
    private int c_num;
    private String d_id;

    @Override
    public String toString() {
        return "Class{" +
                "c_id='" + c_id + '\'' +
                ", c_name='" + c_name + '\'' +
                ", c_num=" + c_num +
                ", d_id='" + d_id + '\'' +
                '}';
    }

    public Class() {
    }

    public Class(String c_id, String c_name, int c_num, String d_id) {
        this.c_id = c_id;
        this.c_name = c_name;
        this.c_num = c_num;
        this.d_id = d_id;
    }

    public String getC_id() {
        return c_id;
    }

    public void setC_id(String c_id) {
        this.c_id = c_id;
    }

    public String getC_name() {
        return c_name;
    }

    public void setC_name(String c_name) {
        this.c_name = c_name;
    }

    public int getC_num() {
        return c_num;
    }

    public void setC_num(int c_num) {
        this.c_num = c_num;
    }

    public String getD_id() {
        return d_id;
    }

    public void setD_id(String d_id) {
        this.d_id = d_id;
    }
}

Academy

package com.dwz.Pojo;

public class Academy {
    private String a_id;
    private String a_name;

    @Override
    public String toString() {
        return "Academy{" +
                "a_id='" + a_id + '\'' +
                ", a_name='" + a_name + '\'' +
                '}';
    }

    public Academy(String a_id, String a_name) {
        this.a_id = a_id;
        this.a_name = a_name;
    }

    public Academy() {
    }

    public String getA_id() {
        return a_id;
    }

    public void setA_id(String a_id) {
        this.a_id = a_id;
    }

    public String getA_name() {
        return a_name;
    }

    public void setA_name(String a_name) {
        this.a_name = a_name;
    }
}

Academy

package com.dwz.Pojo;

public class Course {
    private String course_id;
    private String curse_name;
    private String course_type;
    private int course_credit;

    public Course(String course_id, String curse_name, String course_type, int course_credit) {
        this.course_id = course_id;
        this.curse_name = curse_name;
        this.course_type = course_type;
        this.course_credit = course_credit;
    }
    public Course() {
    }

    @Override
    public String toString() {
        return "Course{" +
                "course_id='" + course_id + '\'' +
                ", curse_name='" + curse_name + '\'' +
                ", course_type='" + course_type + '\'' +
                ", course_credit=" + course_credit +
                '}';
    }

    public String getCourse_id() {
        return course_id;
    }

    public void setCourse_id(String course_id) {
        this.course_id = course_id;
    }

    public String getCurse_name() {
        return curse_name;
    }

    public void setCurse_name(String curse_name) {
        this.curse_name = curse_name;
    }

    public String getCourse_type() {
        return course_type;
    }

    public void setCourse_type(String course_type) {
        this.course_type = course_type;
    }

    public int getCourse_credit() {
        return course_credit;
    }

    public void setCourse_credit(int course_credit) {
        this.course_credit = course_credit;
    }
}

Course_plan

package com.dwz.Pojo;

public class Course_plan {
    private String cp_year;
    private String cp_class;
    private String course_id;
    private String cp_week;

    public Course_plan(String cp_year, String cp_class, String course_id, String cp_week) {
        this.cp_year = cp_year;
        this.cp_class = cp_class;
        this.course_id = course_id;
        this.cp_week = cp_week;
    }
    public Course_plan() {
    }
    @Override
    public String toString() {
        return "Course_plan{" +
                "cp_year='" + cp_year + '\'' +
                ", cp_class='" + cp_class + '\'' +
                ", course_id='" + course_id + '\'' +
                ", cp_week='" + cp_week + '\'' +
                '}';
    }

    public String getCp_year() {
        return cp_year;
    }

    public void setCp_year(String cp_year) {
        this.cp_year = cp_year;
    }

    public String getCp_class() {
        return cp_class;
    }

    public void setCp_class(String cp_class) {
        this.cp_class = cp_class;
    }

    public String getCourse_id() {
        return course_id;
    }

    public void setCourse_id(String course_id) {
        this.course_id = course_id;
    }

    public String getCp_week() {
        return cp_week;
    }

    public void setCp_week(String cp_week) {
        this.cp_week = cp_week;
    }
}

Department

package com.dwz.Pojo;

public class Department {
    private String d_id;
    private String d_name;
    private String a_id;

    public Department(String d_id, String d_name, String a_id) {
        this.d_id = d_id;
        this.d_name = d_name;
        this.a_id = a_id;
    }
    public Department() {
    }
    @Override
    public String toString() {
        return "Department{" +
                "d_id='" + d_id + '\'' +
                ", d_name='" + d_name + '\'' +
                ", a_id='" + a_id + '\'' +
                '}';
    }
    public String getD_id() {
        return d_id;
    }

    public void setD_id(String d_id) {
        this.d_id = d_id;
    }

    public String getD_name() {
        return d_name;
    }

    public void setD_name(String d_name) {
        this.d_name = d_name;
    }

    public String getA_id() {
        return a_id;
    }

    public void setA_id(String a_id) {
        this.a_id = a_id;
    }
}

Grade

package com.dwz.Pojo;

public class Grade {
    private String tc_id;
    private String s_id;
    private Double g_ps;
    private Double g_exam;
    private Double g_final;
    private String course_name;
    private String s_name;

    public Grade(String tc_id, String s_id, Double g_ps, Double g_exam, Double g_final) {
        this.tc_id = tc_id;
        this.s_id = s_id;
        this.g_ps = g_ps;
        this.g_exam = g_exam;
        this.g_final = g_final;
    }

    public String getS_name() {
        return s_name;
    }

    public void setS_name(String s_name) {
        this.s_name = s_name;
    }

    public String getCourse_name() {
        return course_name;
    }

    public void setCourse_name(String course_name) {
        this.course_name = course_name;
    }


    @Override
    public String toString() {
        return "Grade{" +
                "tc_id='" + tc_id + '\'' +
                ", s_id='" + s_id + '\'' +
                ", g_ps=" + g_ps +
                ", g_exam=" + g_exam +
                ", g_final=" + g_final +
                ", course_name='" + course_name + '\'' +
                ", s_name='" + s_name + '\'' +
                '}';
    }

    public Grade() {
    }

    public String getTc_id() {
        return tc_id;
    }

    public void setTc_id(String tc_id) {
        this.tc_id = tc_id;
    }

    public String getS_id() {
        return s_id;
    }

    public void setS_id(String s_id) {
        this.s_id = s_id;
    }

    public Double getG_ps() {
        return g_ps;
    }

    public void setG_ps(Double g_ps) {
        this.g_ps = g_ps;
    }

    public Double getG_exam() {
        return g_exam;
    }

    public void setG_exam(Double g_exam) {
        this.g_exam = g_exam;
    }

    public Double getG_final() {
        return g_final;
    }

    public void setG_final(Double g_final) {
        this.g_final = g_final;
    }
}

Seclet_Course

package com.dwz.Pojo;

public class Seclet_Course {
    private String courseName;
    private String teacherClass;
    private int credit;
    private String teacherName;
    private String courseTime;
    private String coursePoint;
    private String cpClass;

    public Seclet_Course() {
    }

    @Override
    public String toString() {
        return "Seclet_Course{" +
                "courseName='" + courseName + '\'' +
                ", teacherClass='" + teacherClass + '\'' +
                ", credit=" + credit +
                ", teacherName='" + teacherName + '\'' +
                ", courseTime='" + courseTime + '\'' +
                ", coursePoint='" + coursePoint + '\'' +
                ", cpClass='" + cpClass + '\'' +
                '}';
    }

    public Seclet_Course(String courseName, String teacherClass, int credit, String teacherName,
                         String courseTime, String coursePoint, String cpClass) {
        this.courseName = courseName;
        this.teacherClass = teacherClass;
        this.credit = credit;
        this.teacherName = teacherName;
        this.courseTime = courseTime;
        this.coursePoint = coursePoint;
        this.cpClass = cpClass;
    }

    public String getCourseName() {
        return courseName;
    }

    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }

    public String getTeacherClass() {
        return teacherClass;
    }

    public void setTeacherClass(String teacherClass) {
        this.teacherClass = teacherClass;
    }

    public int getCredit() {
        return credit;
    }

    public void setCredit(int credit) {
        this.credit = credit;
    }

    public String getTeacherName() {
        return teacherName;
    }

    public void setTeacherName(String teacherName) {
        this.teacherName = teacherName;
    }

    public String getCourseTime() {
        return courseTime;
    }

    public void setCourseTime(String courseTime) {
        this.courseTime = courseTime;
    }

    public String getCoursePoint() {
        return coursePoint;
    }

    public void setCoursePoint(String coursePoint) {
        this.coursePoint = coursePoint;
    }

    public String getCpClass() {
        return cpClass;
    }

    public void setCpClass(String cpClass) {
        this.cpClass = cpClass;
    }
}

Teacher_class

package com.dwz.Pojo;

public class Teacher_class {
    private String tc_id;
    private String tc_name;
    private String curse_name;
    private int tc_num;
    private String tc_time;
    private String tc_point;

    public Teacher_class(String tc_id, String tc_name, int tc_num, String tc_time, String tc_point) {
        this.tc_id = tc_id;
        this.tc_name = tc_name;
        this.tc_num = tc_num;
        this.tc_time = tc_time;
        this.tc_point = tc_point;
    }

    @Override
    public String toString() {
        return "Teacher_class{" +
                "tc_id='" + tc_id + '\'' +
                ", tc_name='" + tc_name + '\'' +
                ", course_name='" + curse_name + '\'' +
                ", tc_num=" + tc_num +
                ", tc_time='" + tc_time + '\'' +
                ", tc_point='" + tc_point + '\'' +
                '}';
    }

    public Teacher_class() {
    }

    public String getCurse_name() {
        return curse_name;
    }

    public void setCurse_name(String curse_name) {
        this.curse_name = curse_name;
    }

    public String getTc_id() {
        return tc_id;
    }

    public void setTc_id(String tc_id) {
        this.tc_id = tc_id;
    }

    public String getTc_name() {
        return tc_name;
    }

    public void setTc_name(String tc_name) {
        this.tc_name = tc_name;
    }

    public int getTc_num() {
        return tc_num;
    }

    public void setTc_num(int tc_num) {
        this.tc_num = tc_num;
    }

    public String getTc_time() {
        return tc_time;
    }

    public void setTc_time(String tc_time) {
        this.tc_time = tc_time;
    }

    public String getTc_point() {
        return tc_point;
    }

    public void setTc_point(String tc_point) {
        this.tc_point = tc_point;
    }
}

TeacherPlan

package com.dwz.Pojo;

public class TeacherPlan {
    private String tc_name;
    private String tc_time;
    private String tc_point;

    public TeacherPlan(String tc_name, String tc_time, String tc_point) {
        this.tc_name = tc_name;
        this.tc_time = tc_time;
        this.tc_point = tc_point;
    }

    @Override
    public String toString() {
        return "TeacherPlan{" +
                "tc_name='" + tc_name + '\'' +
                ", tc_time='" + tc_time + '\'' +
                ", tc_point='" + tc_point + '\'' +
                '}';
    }

    public String getTc_name() {
        return tc_name;
    }

    public void setTc_name(String tc_name) {
        this.tc_name = tc_name;
    }

    public String getTc_time() {
        return tc_time;
    }

    public void setTc_time(String tc_time) {
        this.tc_time = tc_time;
    }

    public String getTc_point() {
        return tc_point;
    }

    public void setTc_point(String tc_point) {
        this.tc_point = tc_point;
    }
}

Teaching_programme

package com.dwz.Pojo;

public class Teaching_programme {
    private String cp_year;
    private String cp_class;
    private String tc_id;
    private String course_id;

    public Teaching_programme(String cp_year, String cp_class, String tc_id, String course_id) {
        this.cp_year = cp_year;
        this.cp_class = cp_class;
        this.tc_id = tc_id;
        this.course_id = course_id;
    }


    @Override
    public String toString() {
        return "Teaching_programme{" +
                "cp_year='" + cp_year + '\'' +
                ", cp_class='" + cp_class + '\'' +
                ", tc_id='" + tc_id + '\'' +
                ", course_id='" + course_id + '\'' +
                '}';
    }

    public String getCp_year() {
        return cp_year;
    }

    public void setCp_year(String cp_year) {
        this.cp_year = cp_year;
    }

    public String getCp_class() {
        return cp_class;
    }

    public void setCp_class(String cp_class) {
        this.cp_class = cp_class;
    }

    public String getTc_id() {
        return tc_id;
    }

    public void setTc_id(String tc_id) {
        this.tc_id = tc_id;
    }

    public String getCourse_id() {
        return course_id;
    }

    public void setCourse_id(String course_id) {
        this.course_id = course_id;
    }
}

Thing

package com.dwz.Pojo;

public class Thing {
    private String thingtxt;
    private String tine;
    private String  id;
    private String year;

    public Thing(String thingtxt, String tine, String id, String year) {
        this.thingtxt = thingtxt;
        this.tine = tine;
        this.id = id;
        this.year = year;
    }

    public Thing() {
    }

    public String getThingtxt() {
        return thingtxt;
    }

    public void setThingtxt(String thingtxt) {
        this.thingtxt = thingtxt;
    }

    public String getTine() {
        return tine;
    }

    public void setTine(String tine) {
        this.tine = tine;
    }

    public String  getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getYear() {
        return year;
    }

    public void setYear(String year) {
        this.year = year;
    }
}

Service层实现

StudentService

package com.dwz.Service;

import com.dwz.Dao.StudentMapper;
import com.dwz.Pojo.*;
import com.dwz.Utlis.Mybatis;
import org.apache.ibatis.session.SqlSession;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class StudentService {

//    根据s_id获得Student用户
    public Student getStudent(String s_id){
        SqlSession sqlSession = Mybatis.getSqlSession();
        StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
        Student students = studentMapper.getStudents_s_id(s_id);
        sqlSession.close();
        return students;
    }
//    获得全部学生用户
    public List<Student> getStudentList(){
        SqlSession sqlSession = Mybatis.getSqlSession();
        StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
        List<Student> studentList = studentMapper.getStudentList();
        sqlSession.close();
        return studentList;
    }
//    获得年份列表
    public List<String> getYear(){
        SqlSession sqlSession = Mybatis.getSqlSession();
        StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
        List<String> cp_yearList = studentMapper.getCp_year();
        sqlSession.close();
        return cp_yearList;
    }

//    获得班级
    public List<Teacher_class> getTeachingclass(String id,String year){
        SqlSession sqlSession = Mybatis.getSqlSession();
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        Map<String, Object> map = new HashMap<>();
        map.put("s_id", id);
        map.put("cp_year", year);
        List<String> teachingClassId = mapper.getTeachingClassId(map);
        if (teachingClassId.size() == 0)
            return new ArrayList<>();
        map.put("teachingClassIdList",teachingClassId);
        List<Teacher_class> teachingClassList = mapper.getTeacherclass2(map);
        sqlSession.close();
        return teachingClassList;
    }

//    获得选课信息
    public List<Seclet_Course> getSelectcourse(String studentid,String cp_year){
        String id = studentid.substring(0, 2);
        SqlSession sqlSession = Mybatis.getSqlSession();
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        List<Seclet_Course> selectCourse = mapper.getSelectCourse(cp_year);
        return selectCourse;
    }
//    判断是否冲突
    public boolean isConflict(String id, String year, String course) {
        List<Teacher_class> teachingclass = getTeachingclass(id, year);
        String[] s = course.split(" ");
        for (int i = 0; i < teachingclass.size(); i++) {
            for (int j = 0; j < s.length; j++) {
                if (teachingclass.get(i).getTc_time().contains(s[j]))
                    return true;
            }
        }
        return false;
    }
//    增加选课记录
    public boolean courseAdd(String teachingClassname ,String studentId) {
        SqlSession sqlSession = Mybatis.getSqlSession();
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);

        String teachingclassId = mapper.getTeachingclassIdbyName(teachingClassname);
        System.out.println(studentId);
        System.out.println(teachingclassId);
        boolean res = mapper.addCourse(studentId,teachingclassId);
        sqlSession.commit();
        sqlSession.close();
        if (res) {
            return true;
        }
        return false;
    }

    /*
    * 实现成绩
    * */
    public List<Grade> getGrade(String id, String year) {
        SqlSession sqlSession = Mybatis.getSqlSession();
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        Map<String, Object> map = new HashMap();
        map.put("sid", id);
        map.put("cpYear", year);
        List<Grade> gradeList = mapper.GetGradeList(map);
        sqlSession.close();
        return gradeList;
    }
    /*
    * 根据成绩的tc_id去寻找课程的名字
    * */
    public String GetCourseByid(String tc_id){
        SqlSession sqlSession = Mybatis.getSqlSession();
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        String CourseName = mapper.GetCourseName(tc_id);
        sqlSession.close();
        return CourseName;
    }
    /*
    * 获得旧密码
    * */
    public String GetOldPassword(String StuedntId){
        SqlSession sqlSession = Mybatis.getSqlSession();
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        String OldPassword = mapper.GetOldPassword(StuedntId);
        sqlSession.close();
        return OldPassword;
    }
    public boolean updatePassword(String newPassword, String id) {
        SqlSession sqlSession = Mybatis.getSqlSession();
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        boolean b = mapper.UpdatePassword(newPassword,id);
        sqlSession.commit();
        if (b)
            return true;
        return false;
    }

    /*
    * 通过班级账号获得学院名称
    * */
    public String GetAcademyName(String ClassId){
        SqlSession sqlSession = Mybatis.getSqlSession();
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        String academyName = mapper.GetAcademyName(ClassId);
        System.out.println(academyName);
        sqlSession.close();
        return academyName;
    }

    public List<Thing> GetInform(){
        SqlSession sqlSession = Mybatis.getSqlSession();
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        List<Thing> things = mapper.GetInform();
        for (Thing thing: things){
            System.out.println(thing);
        }
        return things;
    }
}

TeacherService

package com.dwz.Service;

import com.dwz.Dao.StudentMapper;
import com.dwz.Dao.TeacherMapper;
import com.dwz.Pojo.Grade;
import com.dwz.Pojo.Student;
import com.dwz.Pojo.Teacher;
import com.dwz.Pojo.TeacherPlan;
import com.dwz.Utlis.Mybatis;
import org.apache.ibatis.session.SqlSession;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class TeacherService {
    //    根据s_id获得Student用户
    public Teacher getTeacher(String s_id){
        SqlSession sqlSession = Mybatis.getSqlSession();
        TeacherMapper teacherMapper = sqlSession.getMapper(TeacherMapper.class);
        Teacher teacher = teacherMapper.getTeacher(s_id);
        sqlSession.close();
        return teacher;
    }
    //    获得全部老师用户
    public List<Teacher> getTeacherList(){
        SqlSession sqlSession = Mybatis.getSqlSession();
        TeacherMapper teacherMapper = sqlSession.getMapper(TeacherMapper.class);
        List<Teacher> teacherList = teacherMapper.getTeacherList();
        sqlSession.close();
        return teacherList;
    }

    /*
    * 获得教学计划
    * */
    public List<TeacherPlan> GetTeacherPlan(String t_id , String cp_year){
        SqlSession sqlSession = Mybatis.getSqlSession();
        TeacherMapper teacherMapper = sqlSession.getMapper(TeacherMapper.class);
        Map<String, Object> map = new HashMap<>();
        map.put("t_id",t_id);
        map.put("cp_year",cp_year);
        List<TeacherPlan> planList = teacherMapper.getTeacherProgramme(map);
        sqlSession.close();
        return planList;
    }
    /*
    * 修改成绩
    * */
    public List<Grade> GetGradeByClass(String tc_name){
        SqlSession sqlSession = Mybatis.getSqlSession();
        TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);
        List<Grade> grades = mapper.GetGradeByClass(tc_name);
        sqlSession.close();
        return grades;
    }
    public boolean updateGrade(List<Grade> grades, String className) {
        SqlSession sqlSession = Mybatis.getSqlSession();
        TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);
        String teachingclassId = mapper.getTeachingclassIdbyName(className);

        Map<String, Object> map = new HashMap<>();
        map.put("tcId", teachingclassId);
        for (Grade grade : grades) {
            map.put("sId", grade.getS_id());
            map.put("ps", grade.getG_ps());
            map.put("exam", grade.getG_exam());
            map.put("final", grade.getG_final());
            mapper.UpdateGrade(map);
            sqlSession.commit();
        }
        sqlSession.close();
        return true;
    }

}

UserService

package com.dwz.Service;

import com.dwz.Dao.UserMapper;
import com.dwz.Pojo.Thing;
import com.dwz.Pojo.User;
import com.dwz.Utlis.Mybatis;
import org.apache.ibatis.session.SqlSession;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class UserService {
    public boolean judgeUser(User user){
        SqlSession sqlSession = Mybatis.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User userMapperUser = userMapper.getUserById(user.getU_id());
        /*
        * 代码解释
        * 这里不是传了一个user的用户嘛,我们拿到这个user的id,拿着这个id通过
        * Mybatis去数据库找到这个用户,然后关闭,在去数据库调出这个用户的密码,
        * 将这个密码和user自己传进来的密码进行比较即可*/
        sqlSession.close();
        if (userMapperUser != null){
            if (userMapperUser.getU_pwd().equals(user.getU_pwd())){
                user.setU_status(userMapperUser.getU_status());
                return true;
            }
        }
        return false;
    }
    /*获得User对象*/
    public User getUser(String u_id){
        SqlSession sqlSession = Mybatis.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user = userMapper.getUserById(u_id);
        sqlSession.close();
        return user;
    }

    /*
    * 获得教师用户信息
    * */
    public List<User> GetTeacherUser(){
        SqlSession sqlSession = Mybatis.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = userMapper.GetTeacherUser();
        for (User user : userList ){
            System.out.println(user);
        }
        sqlSession.close();
        return userList;
    }

    /*
    * 修改教师密码
    * */
    /*TeacherUpdateTest
    * */
    public boolean UpdateTeacherPwd(List<User> teacherUpdateTests){
        SqlSession sqlSession = Mybatis.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        Map<String,Object> map = new HashMap<>();
        for (User teacherUpdateTest : teacherUpdateTests){
            map.put("t_id",teacherUpdateTest.getU_id());
            map.put("pwd",teacherUpdateTest.getU_pwd());
            userMapper.UpdateTeacherUserPwd(map);
            sqlSession.commit();
        }
        sqlSession.close();
        return true;
    }

    /*
    * 获得学生用户
    * */
    public List<User> GetStudentUser(){
        SqlSession sqlSession = Mybatis.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = userMapper.GetStudentUser();
        for (User user : userList ){
            System.out.println(user);
        }
        sqlSession.close();
        return userList;
    }

    /*
    * 修改学生用户密码
    * */
    public boolean UpdateStudentPwd(List<User> StudentList){
        SqlSession sqlSession = Mybatis.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        Map<String,Object> map = new HashMap<>();
        for (User StudentUser : StudentList){
            map.put("t_id",StudentUser.getU_id());
            map.put("pwd",StudentUser.getU_pwd());
            userMapper.UpdateTeacherUserPwd(map);
            sqlSession.commit();
        }
        sqlSession.close();
        return true;
    }

    /*
    * 增加学生账户
    * */
    public boolean AddStudent(List<User> Studentslist){
        SqlSession sqlSession = Mybatis.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        Map<String,Object> map = new HashMap<>();
        for (User user:Studentslist){
            map.put("id",user.getU_id());
            map.put("sname",user.getS_name());
            map.put("ssex",user.getSsex());
            userMapper.AddStudentUser(map);
            sqlSession.commit();
        }
        sqlSession.close();
        return true;
    }

    /*
     * 增加老师账户
     * */
    public boolean AddTeacher(List<User> list){
        SqlSession sqlSession = Mybatis.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        Map<String,Object> map = new HashMap<>();
        for (User user:list){
            map.put("id",user.getU_id());
            map.put("sname",user.getT_name());
            map.put("ssex",user.getSsex());
            userMapper.AddTeacherUser(map);
            sqlSession.commit();
        }
        sqlSession.close();
        return true;
    }

    /*
    * 增加通知
    * */
    public boolean AddInform(List<Thing> thingList){
        SqlSession sqlSession = Mybatis.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        Map<String,Object> map = new HashMap<>();
        for (Thing thing:thingList){
            map.put("thingtxt",thing.getThingtxt());
            map.put("id",thing.getId());
            map.put("year",thing.getYear());
            mapper.AddInform(map);
            sqlSession.commit();
        }
        sqlSession.close();
        return true;
    }

    /*
    * 删除通知
    * */
    public boolean DeleteInform(String id){
        SqlSession sqlSession = Mybatis.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.DeleteInform(id);
        sqlSession.commit();
        sqlSession.close();
        return true;
    }
}

Utlis层实现

工具类其实就是将一样的代码提取出来,叫做工具

Button

package com.dwz.Utlis;

import javax.swing.*;
import java.awt.*;

public class Button extends JFrame {
    //设置导航栏的按钮
    public JButton getButton (String text,String img){
        ImageIcon imageIcon = new ImageIcon(ClassLoader.getSystemResource(img));
        imageIcon.setImage(imageIcon.getImage().getScaledInstance(28,28, Image.SCALE_DEFAULT));
        Font font = new Font("行书",Font.LAYOUT_LEFT_TO_RIGHT,16);
        JButton jbt1 = new JButton(text,imageIcon);
        jbt1.setFont(font);
        //无边框
        jbt1.setBorderPainted(false);
        //文字与图片垂直对齐
        jbt1.setVerticalTextPosition(SwingConstants.BOTTOM);
        //点击变成手型
        jbt1.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        return jbt1;
    }
}

Mybatis

package com.dwz.Utlis;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class Mybatis {
    private static SqlSessionFactory sqlSessionFactory;
    static {
        try {
//            使用Mybatis第一步,获取sqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
//   既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
//    SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
//    你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句
    public static SqlSession getSqlSession(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        return sqlSession;
    }
}

replacementPanel

package com.dwz.Utlis;

import java.awt.*;

public class replacementPanel {

    //刷新画板
    public void replacement(Container change, Container res) {
        change.removeAll();
        change.add(res);
        change.validate();
        change.repaint();
    }
}

Tool

package com.dwz.Utlis;

import javax.swing.*;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;

public class Tool {
    //设置列宽
    public static void setColumnSize(JTable table, int i, int preferedWidth, int maxWidth, int minWidth) {
        //表格的列模型
        TableColumnModel cm = table.getColumnModel();
        //得到第i个列对象
        TableColumn column = cm.getColumn(i);
        column.setPreferredWidth(preferedWidth);
        column.setMaxWidth(maxWidth);
        column.setMinWidth(minWidth);
    }

    //获取星期字符串
    public static String getWeek(char week) {
        switch (week) {
            case '1':
                return "周一";
            case '2':
                return "周二";
            case '3':
                return "周三";
            case '4':
                return "周四";
            case '5':
                return "周五";
        }
        return null;
    }

    public static String getPitch(char pitch) {
        switch (pitch) {
            case '1':
                return "[1-2]节";
            case '2':
                return "[3-4]节";
            case '3':
                return "[5-6]节";
            case '4':
                return "[7-8]节";
            case '5':
                return "[9-10]节";
        }
        return null;
    }
    //转换密码为字符串
    public static String transitionPassword(char[] password) {
        String res = "";
        for (char ch : password) {
            res += ch;
        }
        return res;
    }
}

View层实现

AdminView

package com.dwz.View;

import com.dwz.Pojo.Thing;
import com.dwz.Pojo.User;
import com.dwz.Service.StudentService;
import com.dwz.Service.UserService;
import com.dwz.Utlis.Button;
import com.dwz.Utlis.Tool;
import com.dwz.Utlis.replacementPanel;
import sun.swing.table.DefaultTableCellHeaderRenderer;

import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

public class AdminView extends JFrame {
    User user;
    public JPanel getAdminhome() {
        JPanel jpHome = new JPanel();
        JTextArea textArea = new JTextArea();
        String text = user.getU_id();
        text += "管理员:欢迎使用教务管理系统!";
        textArea.setText(text);
        textArea.setFont(new Font("黑体", 1, 30));
        ImageIcon imageIcon = new ImageIcon("src/main/resources/img/fd.png");
        JLabel jLabel = new JLabel(imageIcon);
        Dimension dimension = new Dimension(800, 500);
        jLabel.setPreferredSize(dimension);
        jpHome.add(jLabel,BorderLayout.CENTER);
        jpHome.add(textArea);
        return jpHome;
    }

    public JPanel getAdminhome1() {
        JPanel jpHome = new JPanel();
        JTextArea textArea = new JTextArea();
        String text = user.getU_id();
        text += "管理员:欢迎使用教务管理系统!";
        textArea.setText(text);
        textArea.setFont(new Font("黑体", 1, 30));
        jpHome.add(textArea);
        return jpHome;
    }

    public AdminView(User user){
        super("教务管理系统");
        this.user = user;
        Container cp = this.getContentPane();
        cp.setLayout(new BorderLayout());
        JButton Home = new com.dwz.Utlis.Button().getButton("首页", "img/shouyefill.png");
        JButton Teacher = new com.dwz.Utlis.Button().getButton("老师管理", "img/laoshiguanli.png");
        JButton Student = new com.dwz.Utlis.Button().getButton("学生管理", "img/xueshengguanli-01.png");
        JButton User = new com.dwz.Utlis.Button().getButton("个人中心", "img/yonghuguanli.png");
        JButton Inform = new Button().getButton("通知管理", "img/guoneizhengtongzhichaxun.png");
        JPanel bar = new JPanel();
        bar.add(Home);
        bar.add(Teacher);
        bar.add(Student);
        bar.add(Inform);
        bar.add(User);
        JPanel mid = getAdminhome();
        cp.add(bar, BorderLayout.NORTH);
        cp.add(mid, BorderLayout.CENTER);

        this.setSize(800, 650);
        //居中
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Home.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new replacementPanel().replacement(mid ,getAdminhome1());
            }
        });
        Teacher.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new replacementPanel().replacement(mid,GetTeacherUser());
            }
        });
        Student.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new replacementPanel().replacement(mid,GetStudentUser());
            }
        });
        Inform.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new replacementPanel().replacement(mid,getInform());
            }
        });
        User.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new replacementPanel().replacement(mid,getAdminuser());
            }
        });
    }

    /*
    * 教师用户管理
    * */
    public JPanel GetTeacherUser() {
        JPanel jpTeacherUser = new JPanel(new BorderLayout());
        JPanel top = new JPanel();
        JButton jbtUpdatepwd = new JButton("修改密码");
        JButton AddTeacher = new JButton("增加");
        JButton jVerifyButton = new JButton("确认");
        top.add(jbtUpdatepwd);
        top.add(AddTeacher);
        top.add(jVerifyButton);
        jpTeacherUser.add(top, BorderLayout.NORTH);
        JTable table = new JTable() {
            public boolean isCellEditable(int row, int column) {
                return true;
            }
        };
        JScrollPane tab = new JScrollPane(table);
        //表格内容居中
        DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();//单元格渲染器
        tcr.setHorizontalAlignment(JLabel.CENTER);
        table.setDefaultRenderer(Object.class, tcr);
        //表格表头居中
        DefaultTableCellHeaderRenderer hr = new DefaultTableCellHeaderRenderer();
        hr.setHorizontalAlignment(JLabel.CENTER);
        hr.setPreferredSize(new Dimension(25, 25));
        table.getTableHeader().setDefaultRenderer(hr);
        //设置面板大小
        tab.setPreferredSize(new Dimension(650, 500));
        //设置透明
        tab.setOpaque(false);
        tab.getViewport().setOpaque(false);
        jpTeacherUser.add(tab, BorderLayout.CENTER);
        List<User> teacherUser = new UserService().GetTeacherUser();
        Object[][] tableDate = new Object[teacherUser.size()][5];
        for (int i = 0; i < teacherUser.size(); i++) {
            for (int j = 0; j < 5; j++) {
                if (j == 0)
                    tableDate[i][j] = teacherUser.get(i).getU_id();
                else if (j == 1)
                    tableDate[i][j] = teacherUser.get(i).getT_name();
                else if (j == 2)
                    tableDate[i][j] = teacherUser.get(i).getU_pwd();
                else if (j==3)
                    tableDate[i][j] = teacherUser.get(i).getU_status();
            }
        }
        String[] name = {"ID","姓名","密码", "身份"};
        table.removeAll();
        DefaultTableModel tableModel = (DefaultTableModel) table.getModel();    //获得表格模型
        tableModel.setRowCount(0);    //清空表格中的数据
        tableModel.setColumnIdentifiers(name);    //设置表头
        Tool.setColumnSize(table,1,10,160,160);
        for (int i = 0; i < teacherUser.size(); i++) {
            tableModel.addRow(tableDate[i]);
        }
        table.setRowHeight(30);
        table.setModel(tableModel);    //应用表格模型
        JFrame jf = this;


        AddTeacher.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                tableModel.addRow(new Object[1]);
            }
        });
        jVerifyButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //重新进行表格渲染
                List<User> users = new ArrayList<>();
                User userTeacher = new User();
                for (int j = 0; j < table.getColumnCount(); j++) {
                    if (j == 0)
                        userTeacher.setU_id((String) table.getValueAt(table.getSelectedRow(), j));
                    else if (j == 1){
                        userTeacher.setT_name((String) table.getValueAt(table.getSelectedRow(),j));
                    }
                    else if (j == 3)
                        userTeacher.setSsex((String) table.getValueAt(table.getSelectedRow(),j));
                    users.add(userTeacher);
                }
                boolean addTeacher = new UserService().AddTeacher(users);
                System.out.println(addTeacher);
            }
        });

        jbtUpdatepwd.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                List<User> users = new ArrayList<>();
                for (int i = 0; i < table.getRowCount(); i++) {
                    User test = new User();
                    for (int j = 0; j < table.getColumnCount(); j++) {
                        if (j == 0)
                            test.setU_id((String) table.getValueAt(i, j));
                        else if (j == 2)
                            test.setU_pwd((String) table.getValueAt(i, j));
                    }
                    users.add(test);
                    System.out.println(users);
                }
                if (new UserService().UpdateTeacherPwd(users)) {
                    JOptionPane.showMessageDialog(jf, "密码修改成功", "提示", JOptionPane.PLAIN_MESSAGE);
                    //重新进行表格渲染
                    List<User> userList = new UserService().GetTeacherUser();
                    Object[][] tableDate = new Object[userList.size()][5];
                    for (int i = 0; i < userList.size(); i++) {
                        for (int j = 0; j < 5; j++) {
                            if (j == 0)
                                tableDate[i][j] = userList.get(i).getU_id();
                            else if (j == 1)
                                tableDate[i][j] = userList.get(i).getT_name();
                            else if (j == 2)
                                tableDate[i][j] = userList.get(i).getU_pwd();
                            else if (j == 3)
                                tableDate[i][j] = userList.get(i).getU_status();
                        }
                    }
                    String[] name = {"ID", "姓名", "密码", "状态"};
                    table.removeAll();
                    DefaultTableModel tableModel = (DefaultTableModel) table.getModel();    //获得表格模型
                    tableModel.setRowCount(0);    //清空表格中的数据
                    tableModel.setColumnIdentifiers(name);    //设置表头
                    for (int i = 0; i < userList.size(); i++) {
                        tableModel.addRow(tableDate[i]);
                    }
                    table.setRowHeight(30);
                    table.setModel(tableModel);    //应用表格模型
                }
            }
        });
        return jpTeacherUser;

    }

    /*
    * 学生用户管理
    * */
    public JPanel GetStudentUser(){
        JPanel jpStudentUser = new JPanel(new BorderLayout());
        JPanel top = new JPanel();
        JButton jbtUpdatepwd = new JButton("修改密码");
        JButton AddStudent = new JButton("增加");
        JButton jVerifyButton = new JButton("确认");
        top.add(jbtUpdatepwd);
        top.add(AddStudent);
        top.add(jVerifyButton);
        jpStudentUser.add(top, BorderLayout.NORTH);
        JTable table = new JTable() {
            public boolean isCellEditable(int row, int column) {
                return true;
            }
        };
        JScrollPane tab = new JScrollPane(table);
        //表格内容居中
        DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();//单元格渲染器
        tcr.setHorizontalAlignment(JLabel.CENTER);
        table.setDefaultRenderer(Object.class, tcr);
        //表格表头居中
        DefaultTableCellHeaderRenderer hr = new DefaultTableCellHeaderRenderer();
        hr.setHorizontalAlignment(JLabel.CENTER);
        hr.setPreferredSize(new Dimension(25, 25));
        table.getTableHeader().setDefaultRenderer(hr);
        //设置面板大小
        tab.setPreferredSize(new Dimension(650, 500));
        //设置透明
        tab.setOpaque(false);
        tab.getViewport().setOpaque(false);
        jpStudentUser.add(tab, BorderLayout.CENTER);
        List<User> studentUser = new UserService().GetStudentUser();
        Object[][] tableDate = new Object[studentUser.size()][5];
        for (int i = 0; i < studentUser.size(); i++) {
            for (int j = 0; j < 5; j++) {
                if (j == 0)
                    tableDate[i][j] = studentUser.get(i).getU_id();
                else if (j == 1)
                    tableDate[i][j] = studentUser.get(i).getS_name();
                else if (j == 2)
                    tableDate[i][j] = studentUser.get(i).getU_pwd();
                else if (j==3)
                    tableDate[i][j] = studentUser.get(i).getU_status();
            }
        }
        String[] name = {"ID","姓名","密码", "身份(可输入性别栏)"};
        table.removeAll();
        DefaultTableModel tableModel = (DefaultTableModel) table.getModel();    //获得表格模型
        tableModel.setRowCount(0);    //清空表格中的数据
        tableModel.setColumnIdentifiers(name);    //设置表头
        Tool.setColumnSize(table,1,10,160,160);
        for (int i = 0; i < studentUser.size(); i++) {
            tableModel.addRow(tableDate[i]);
        }
        table.setRowHeight(30);
        table.setModel(tableModel);    //应用表格模型
        JFrame jf = this;

        AddStudent.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                tableModel.addRow(new Object[1]);
            }
        });
        jVerifyButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //重新进行表格渲染
                List<User> users = new ArrayList<>();
                User userStudent = new User();
                for (int j = 0; j < table.getColumnCount(); j++) {
                    if (j == 0)
                        userStudent.setU_id((String) table.getValueAt(table.getSelectedRow(), j));
                    else if (j == 1){
                        userStudent.setS_name((String) table.getValueAt(table.getSelectedRow(),j));
                    }
                    else if (j == 3)
                        userStudent.setSsex((String) table.getValueAt(table.getSelectedRow(),j));
                users.add(userStudent);
                }
                boolean addStudent = new UserService().AddStudent(users);
                System.out.println(addStudent);
            }
        });
        jbtUpdatepwd.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                List<User> users = new ArrayList<>();
                for (int i = 0; i < table.getRowCount(); i++) {
                    User userStudent = new User();
                    for (int j = 0; j < table.getColumnCount(); j++) {
                        if (j == 0)
                            userStudent.setU_id((String) table.getValueAt(i, j));
                        else if (j == 2)
                            userStudent.setU_pwd((String) table.getValueAt(i, j));
                    }
                    users.add(userStudent);
                }
                if (new UserService().UpdateStudentPwd(users)) {
                    JOptionPane.showMessageDialog(jf, "密码修改成功", "提示", JOptionPane.PLAIN_MESSAGE);
                    //重新进行表格渲染
                    List<User> userList = new UserService().GetStudentUser();
                    Object[][] tableDate = new Object[userList.size()][5];
                    for (int i = 0; i < userList.size(); i++) {
                        for (int j = 0; j < 5; j++) {
                            if (j == 0)
                                tableDate[i][j] = userList.get(i).getU_id();
                            else if (j == 1)
                                tableDate[i][j] = userList.get(i).getS_name();
                            else if (j == 2)
                                tableDate[i][j] = userList.get(i).getU_pwd();
                            else if (j == 3)
                                tableDate[i][j] = userList.get(i).getU_status();
                        }
                    }
                    String[] name = {"ID", "姓名", "密码", "状态"};
                    table.removeAll();
                    DefaultTableModel tableModel = (DefaultTableModel) table.getModel();    //获得表格模型
                    tableModel.setRowCount(0);    //清空表格中的数据
                    tableModel.setColumnIdentifiers(name);    //设置表头
                    for (int i = 0; i < userList.size(); i++) {
                        tableModel.addRow(tableDate[i]);
                    }
                    table.setRowHeight(30);
                    table.setModel(tableModel);    //应用表格模型
                }
            }
        });
        return jpStudentUser;
    }

    /*
    * 通知管理
    * */
    public JPanel getInform() {
        JPanel jpGrade = new JPanel(new BorderLayout());
        JPanel top = new JPanel();
        List<Thing> things = new StudentService().GetInform();
        JButton AddjButton = new JButton("增加");
        JButton VerifyjButton = new JButton("确认");
        JButton jDeleteButton = new JButton("删除");
        top.add(AddjButton);
        top.add(VerifyjButton);
        top.add(jDeleteButton);
        jpGrade.add(top, BorderLayout.NORTH);
        JTable table = new JTable() {
            public boolean isCellEditable(int row, int column) {
                return true;
            }
        };
        JScrollPane tab = new JScrollPane(table);
        //表格内容居中
        DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();//单元格渲染器
        tcr.setHorizontalAlignment(JLabel.CENTER);
        table.setDefaultRenderer(Object.class, tcr);
        //表格表头居中
        DefaultTableCellHeaderRenderer hr = new DefaultTableCellHeaderRenderer();
        hr.setHorizontalAlignment(JLabel.CENTER);
        hr.setPreferredSize(new Dimension(25, 25));
        table.getTableHeader().setDefaultRenderer(hr);
        //设置面板大小
        tab.setPreferredSize(new Dimension(650, 500));
        //设置透明
        tab.setOpaque(false);
        tab.getViewport().setOpaque(false);
        jpGrade.add(tab, BorderLayout.CENTER);
        DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
        List<Thing> inform = new StudentService().GetInform();
        Object[][] tableDate = new Object[inform.size()][5];
        for (int i = 0; i < inform.size(); i++) {
            for (int j = 0; j < 5; j++) {
                if (j == 0)
                    tableDate[i][j] = inform.get(i).getThingtxt();
                else if (j == 1)
                    tableDate[i][j] = inform.get(i).getYear();
                else if (j == 2)
                    tableDate[i][j] = inform.get(i).getTine();
                else if (j==3){
                    tableDate[i][j] = inform.get(i).getId();
                }
            }
        }
        String[] name = {"通知", "年份", "时间","编号"};
        table.removeAll();
        tableModel.setRowCount(0);    //清空表格中的数据
        tableModel.setColumnIdentifiers(name);    //设置表头
        Tool.setColumnSize(table,1,10,160,160);
        for (int i = 0; i < inform.size(); i++) {
            tableModel.addRow(tableDate[i]);
        }
        table.setRowHeight(30);
        table.setModel(tableModel);    //应用表格模型
        jDeleteButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String id;
                id = (String) table.getValueAt(table.getSelectedRow(),3);
                boolean b = new UserService().DeleteInform(id);
                System.out.println(b);
            }
        });
        AddjButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                tableModel.addRow(new Object[1]);
            }
        });
        VerifyjButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                List<Thing> thingList = new ArrayList<>();
                Thing thing = new Thing();
                for (int j = 0; j < table.getColumnCount(); j++) {
                    if (j == 0)
                        thing.setThingtxt((String) table.getValueAt(table.getSelectedRow(), j));
                    else if (j == 1)
                        thing.setYear((String) table.getValueAt(table.getSelectedRow(),j));
                    else if (j == 3){
                        thing.setId((String) table.getValueAt(table.getSelectedRow(),j));
                    }
                    thingList.add(thing);
                }
                boolean addInform = new UserService().AddInform(thingList);
                System.out.println(addInform);
            }
        });
        return jpGrade;
    }

    /*
    * 管理员页面
    * */

    public JPanel getAdminuser() {
        JPanel jpStudentuser = new JPanel(new GridLayout(6, 2, 2, 2));
        JPanel jPanel = new JPanel(new BorderLayout());
        JFrame jf = this;
        JLabel jlId = new JLabel("账号:");
        JLabel jlPwd = new JLabel("密码:");
        JTextField jtfId = new JTextField(10);
        jtfId.setEditable(false);
        jtfId.setText(user.getU_id());
        JTextField jtfName = new JTextField(10);
        jtfName.setEditable(false);
        jtfName.setText(user.getU_pwd());
        JButton jbt = new JButton("修改密码");
        JButton jbtQuit = new JButton("退出");
        JPanel jpBottom = new JPanel();
        jpBottom.add(jbt);
        jpBottom.add(jbtQuit);
        jpStudentuser.add(jlId);
        jpStudentuser.add(jtfId);
        jpStudentuser.add(jlPwd);
        jpStudentuser.add(jtfName);
        jPanel.add(jpStudentuser, BorderLayout.NORTH);
        jPanel.add(jpBottom, BorderLayout.CENTER);
        //修改密码事件
        jbt.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JPasswordField jpOldPassword = new JPasswordField();
                JPasswordField jpPassword = new JPasswordField();
                JPasswordField jpRepassword = new JPasswordField();
                Object[] message = {
                        "旧密码:", jpOldPassword,
                        "新密码:", jpPassword,
                        "重复新密码:", jpRepassword
                };
                int option = JOptionPane.showConfirmDialog(jf, message, "修改密码", JOptionPane.YES_OPTION);
                if (option == JOptionPane.YES_OPTION) {
                    String oldPassword = new StudentService().GetOldPassword(user.getU_pwd());
                    if (!oldPassword.equals(Tool.transitionPassword(jpOldPassword.getPassword()))) {
                        JOptionPane.showMessageDialog(jf, "原密码输入错误", "错误 ", 0);
                    } else if (!Tool.transitionPassword(jpPassword.getPassword()).equals(Tool.transitionPassword(jpRepassword.getPassword()))) {
                        JOptionPane.showMessageDialog(jf, "两次密码输入不一致", "错误 ", 0);
                    } else {
                        if (new StudentService().updatePassword(Tool.transitionPassword(jpPassword.getPassword()), user.getU_id())) {
                            JOptionPane.showMessageDialog(jf, "密码修改成功!", "提示", JOptionPane.PLAIN_MESSAGE);
                            jf.dispose();
                            new Login().setVisible(true);
                        }
                    }
                }
            }
        });
        //退出事件
        jbtQuit.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                jf.dispose();
                new Login().setVisible(true);
            }
        });
        return jPanel;
    }
}

StudentsView

package com.dwz.View;

import com.dwz.Pojo.*;
import com.dwz.Pojo.Class;
import com.dwz.Service.StudentService;
import com.dwz.Utlis.Button;
import com.dwz.Utlis.Tool;
import com.dwz.Utlis.replacementPanel;
import sun.swing.table.DefaultTableCellHeaderRenderer;

import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.xml.bind.annotation.XmlAnyAttribute;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

public class StudentsView extends JFrame {
    Student student;

    /*首页面板*/
    public JPanel getStudenthome() {
        JPanel jpHome = new JPanel();
        JTextArea textArea = new JTextArea();
        String text = student.getS_name();
        text += "同学:欢迎使用教务管理系统!";
        textArea.setText(text);
        textArea.setFont(new Font("黑体", 1, 30));
        ImageIcon imageIcon = new ImageIcon("src/main/resources/img/fd.png");
        JLabel jLabel = new JLabel(imageIcon);
        Dimension dimension = new Dimension(800, 500);
        jLabel.setPreferredSize(dimension);
        jLabel.setVerticalAlignment(SwingUtilities.CENTER);
        jpHome.add(textArea);
        jpHome.add(jLabel,BorderLayout.CENTER);
        return jpHome;
    }
    /*主页面板*/
    public JPanel getStudenthome1() {
        JPanel jpHome = new JPanel();
        JTextArea textArea = new JTextArea();
        String text = student.getS_name();
        text += "同学:欢迎使用教务管理系统!";
        textArea.setText(text);
        textArea.setFont(new Font("黑体", 2, 30));
        jpHome.add(textArea);
        return jpHome;
    }
    /*视图*/
    public StudentsView(Student student){
        super("教务管理系统");
        this.student = student;
        Container cp = this.getContentPane();
        cp.setLayout(new BorderLayout());

        JButton Home = new Button().getButton("首页", "img/shouyefill.png");
        JButton Course = new Button().getButton("课程查询", "img/kechengchaxun.png");
        JButton Selectcourse = new Button().getButton("选课系统", "img/zizhuxuanke.png");
        JButton Grade = new Button().getButton("成绩查询", "img/chengjichaxun-.png");
        JButton User = new Button().getButton("个人中心", "img/yonghuguanli.png");
        JButton Inform = new Button().getButton("通知管理", "img/guoneizhengtongzhichaxun.png");

        JPanel bar = new JPanel();
        bar.add(Home);
        bar.add(Course);
        bar.add(Selectcourse);
        bar.add(Grade);
        bar.add(Inform);
        bar.add(User);

        JPanel mid = getStudenthome();
        cp.add(bar, BorderLayout.NORTH);
        cp.add(mid, BorderLayout.CENTER);
        this.setSize(800, 650);
        //居中
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Home.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new replacementPanel().replacement(mid,getStudenthome1());
            }
        });
        Course.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new replacementPanel().replacement(mid,getStudentCourse());
            }
        });
        Selectcourse.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new replacementPanel().replacement(mid,getSelectCourse());
            }
        });
        Grade.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new replacementPanel().replacement(mid,getStudentgrade());
            }
        });
        Inform.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new replacementPanel().replacement(mid,getInform());
            }
        });
        User.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new replacementPanel().replacement(mid,getStudentuser());
            }
        });

    }

    /*
    * 获得选课
    * */
    public JPanel getStudentCourse(){
        class TableViewRenderer extends JTextArea implements TableCellRenderer {
            public TableViewRenderer() {
                //将表格设为自动换行
                setLineWrap(true);
                //单词过长的时候是否把长单词移动到下一行
                setWrapStyleWord(true);
            }
            public Component getTableCellRendererComponent(JTable jtable, Object obj, //obj指的是单元格内容
                                                           boolean isSelected,
                                                           boolean hasFocus, int row, int column) {
                setText(obj == null ? "" : obj.toString()); //利用JTextArea的setText设置文本方法
                return this;
            }
        }
        JPanel jpCourse = new JPanel(new BorderLayout());
        JPanel top = new JPanel();
        JLabel jlYear = new JLabel("学年:");
        JComboBox<String> comboBox = new JComboBox<>();
        comboBox.addItem("--请选择--");    //向下拉列表中添加一项
        List<String> year = new StudentService().getYear();
        for (String str : year) {
            comboBox.addItem(str);
        }
        JButton jbtSelect = new JButton("查询");
        top.add(jlYear);
        top.add(comboBox);
        top.add(jbtSelect);
        jpCourse.add(top, BorderLayout.NORTH);
        //不可编辑表格内容
        JTable table = new JTable() {
            public boolean isCellEditable(int row, int column) {
                return false;
            }
        };
        JScrollPane tab = new JScrollPane(table);
        //表格内容居中且换行
        TableViewRenderer tableViewRenderer = new TableViewRenderer();          //自定义表格格式渲染器
        tableViewRenderer.setPreferredSize(new Dimension(50, 75));
        tableViewRenderer.setBackground(new Color(211, 211, 211));
        table.setDefaultRenderer(Object.class, tableViewRenderer);
        //表格表头居中
        DefaultTableCellHeaderRenderer hr = new DefaultTableCellHeaderRenderer();
        hr.setHorizontalAlignment(JLabel.CENTER);
        hr.setPreferredSize(new Dimension(50, 78));
        table.getTableHeader().setDefaultRenderer(hr);
        //设置面板大小
        tab.setPreferredSize(new Dimension(750, 472));
        //设置透明
        tab.setOpaque(false);
        tab.getViewport().setOpaque(false);
        jpCourse.add(tab, BorderLayout.CENTER);
        jbtSelect.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Object cp_year = comboBox.getSelectedItem();
                List<Teacher_class> teachingclass = new StudentService().getTeachingclass(student.getS_id(), (String) cp_year);
                Object[][] tableDate = new Object[5][6];
                tableDate[0][0] = "\n\n          1-2节";
                tableDate[1][0] = "\n\n          3-4节";
                tableDate[2][0] = "\n\n          5-6节";
                tableDate[3][0] = "\n\n          7-8节";
                tableDate[4][0] = "\n\n          9-10节";
                for (int i = 0; i < 5; i++) {
                    for (int j = 1; j < 6; j++) {
                        tableDate[i][j] = "";
                    }
                }
                String[] name = {" ", "周一", "周二", "周三", "周四", "周五"};
                for (int i = 0; i < teachingclass.size(); i++) {
                    String res;
                    String tc_time = teachingclass.get(i).getTc_time();
                    //获得最终上课时间与地点
                    String[] res_time = tc_time.split(" ");
                    for (int j = 0; j < res_time.length; j++) {
                        int week = res_time[j].charAt(0) - '0';
                        int section = res_time[j].charAt(2) - '0';
                        res = "\n  " + teachingclass.get(i).getTc_name() + "\n  " + teachingclass.get(i).getTc_point();
                        tableDate[section - 1][week] = res;
                    }
                }
                table.removeAll();
                DefaultTableModel tableModel = (DefaultTableModel) table.getModel();    //获得表格模型
                tableModel.setRowCount(0);    //清空表格中的数据
                tableModel.setColumnIdentifiers(name);    //设置表头
                for (int i = 0; i < 5; i++) {
                    tableModel.addRow(tableDate[i]);
                }
                table.setRowHeight(78);
                table.setModel(tableModel);    //应用表格模型
            }
        });
        return jpCourse;
    }

    /*
    * 选择课程
    * */
    public JPanel getSelectCourse(){
        JPanel jpSC = new JPanel(new BorderLayout());
        JPanel top = new JPanel();
        JLabel jlYear = new JLabel("学年:");
        JComboBox<String> comboBox = new JComboBox<>();
        comboBox.addItem("--请选择--");    //向下拉列表中添加一项
        List<String> year = new StudentService().getYear();
        for (String str : year) {
            comboBox.addItem(str);
        }
        JButton jbtSelect = new JButton("查询");
        JButton jbtAdd = new JButton("选择");
        top.add(jbtAdd);
        top.add(jlYear);
        top.add(comboBox);
        top.add(jbtSelect);
        jpSC.add(top, BorderLayout.NORTH);

        JTable table = new JTable() {
            public boolean isCellEditable(int row, int column) {
                return false;
            }
        };
        JScrollPane tab = new JScrollPane(table);
        //表格内容居中
        DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();//单元格渲染器
        tcr.setHorizontalAlignment(JLabel.CENTER);
        table.setDefaultRenderer(Object.class, tcr);
        //表格表头居中
        DefaultTableCellHeaderRenderer hr = new DefaultTableCellHeaderRenderer();
        hr.setHorizontalAlignment(JLabel.CENTER);
        hr.setPreferredSize(new Dimension(25, 25));
        table.getTableHeader().setDefaultRenderer(hr);
        //设置面板大小
        tab.setPreferredSize(new Dimension(750, 480));
        //设置透明
        tab.setOpaque(false);
        tab.getViewport().setOpaque(false);
        jpSC.add(tab, BorderLayout.CENTER);
        JFrame jf = this;
        //查询选课点击事件
        jbtSelect.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Object cp_year = comboBox.getSelectedItem();
                List<Seclet_Course> selectCourse = new StudentService().getSelectcourse(student.getS_id(), (String)cp_year);
                System.out.println(selectCourse);
                Object[][] tableDate = new Object[selectCourse.size()][5];
                for (int i = 0; i < selectCourse.size(); i++) {
                    for (int j = 0; j < 5; j++) {
                        if (j == 0)
                            tableDate[i][j] = selectCourse.get(i).getCourseName();
                        else if (j == 1)
                            tableDate[i][j] = selectCourse.get(i).getCredit();
                        else if (j == 2)
                            tableDate[i][j] = selectCourse.get(i).getTeacherClass();
                        else if (j == 3)
                            tableDate[i][j] = selectCourse.get(i).getTeacherName();
                        else {
                            String str = "";
                            str += selectCourse.get(i).getCoursePoint();
                            str += '/';
                            String[] s = selectCourse.get(i).getCourseTime().split(" ");
                            for (int k = 0; k < s.length; k++) {
                                str += Tool.getWeek(s[k].charAt(0));
                                str += Tool.getPitch(s[k].charAt(2));
                                if (k != s.length - 1)
                                    str += ',';
                            }
                            tableDate[i][j] = str;
                        }
                    }
                }
                String[] name = {"课程名", "课程学分", "课程班级", "教学教师", "上课地点/上课时间"};
                table.removeAll();
                DefaultTableModel tableModel = (DefaultTableModel) table.getModel();    //获得表格模型
                tableModel.setRowCount(0);    //清空表格中的数据
                tableModel.setColumnIdentifiers(name);    //设置表头
                for (int i = 0; i < selectCourse.size(); i++) {
                    tableModel.addRow(tableDate[i]);
                }
                Tool.setColumnSize(table, 0, 140, 140, 140);
                Tool.setColumnSize(table, 1, 80, 80, 80);
                Tool.setColumnSize(table, 2, 140, 140, 140);
                Tool.setColumnSize(table, 3, 80, 80, 80);
                table.setRowHeight(30);
                table.setModel(tableModel);    //应用表格模型
            }
        });
        //增加课程
        jbtAdd.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    int count = table.getSelectedRow();//获取你选中的行号(记录)
                    System.out.println(count);
                    String className = table.getValueAt(count, 2).toString();//读取你获取行号的某一列的值(也就是字段)
                    System.out.println(className);
                    Object cp_year = comboBox.getSelectedItem();
                    List<Seclet_Course> courses = new StudentService().getSelectcourse(student.getS_id(), (String) cp_year);
                    //选中的课程安排
                    String courseTime = courses.get(count).getCourseTime();
                    //判断是否与当前课程冲突
                    boolean conflict = new StudentService().isConflict(student.getS_id(), (String) cp_year, courseTime);
                    if (conflict) {
                        JOptionPane.showMessageDialog(jf, "请检查选择的课是否与已选的选课冲突!", "错误 ", JOptionPane.ERROR_MESSAGE);
                    } else {
                        boolean courseAdd = new StudentService().courseAdd(className, student.getS_id());
                        System.out.println(courseAdd);
                        if (courseAdd)
                            JOptionPane.showMessageDialog(jf, "选课成功!", "提示", JOptionPane.PLAIN_MESSAGE);
                        else
                            JOptionPane.showMessageDialog(jf, "请检查是否已选择该课", "错误 ", JOptionPane.ERROR_MESSAGE);
                    }
                } catch (Exception e1) {
                    JOptionPane.showMessageDialog(jf, "未选择要选修的课程!", "错误 ", JOptionPane.ERROR_MESSAGE);
                }
            }
        });
        return jpSC;
    }
    /*
    * 获取学生成绩
    * */
    public JPanel getStudentgrade() {
        JPanel jpGrade = new JPanel(new BorderLayout());
        JPanel top = new JPanel();
        JLabel jlYear = new JLabel("学年:");
        JComboBox<String> comboBox = new JComboBox<>();
        comboBox.addItem("--请选择--");    //向下拉列表中添加一项
        List<String> year = new StudentService().getYear();
        for (String str : year) {
            comboBox.addItem(str);
        }
        JButton jbtSelect = new JButton("查询");
        top.add(jlYear);
        top.add(comboBox);
        top.add(jbtSelect);
        jpGrade.add(top, BorderLayout.NORTH);
        JTable table = new JTable() {
            public boolean isCellEditable(int row, int column) {
                return false;
            }
        };
        JScrollPane tab = new JScrollPane(table);
        //表格内容居中
        DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();//单元格渲染器
        tcr.setHorizontalAlignment(JLabel.CENTER);
        table.setDefaultRenderer(Object.class, tcr);
        //表格表头居中
        DefaultTableCellHeaderRenderer hr = new DefaultTableCellHeaderRenderer();
        hr.setHorizontalAlignment(JLabel.CENTER);
        hr.setPreferredSize(new Dimension(25, 25));
        table.getTableHeader().setDefaultRenderer(hr);
        //设置面板大小
        tab.setPreferredSize(new Dimension(650, 500));
        //设置透明
        tab.setOpaque(false);
        tab.getViewport().setOpaque(false);
        jpGrade.add(tab, BorderLayout.CENTER);
        jbtSelect.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Object cp_year = comboBox.getSelectedItem();
                List<Grade> grade = new StudentService().getGrade(student.getS_id(), (String) cp_year);
                Object[][] tableDate = new Object[grade.size()][5];
                for (int i = 0; i < grade.size(); i++) {
                    for (int j = 0; j < 5; j++) {
                        if (j == 0)
                            tableDate[i][j] = grade.get(i).getS_id();
                        else if (j == 1)
                            tableDate[i][j] = grade.get(i).getCourse_name();
                        else if (j == 2)
                            tableDate[i][j] = grade.get(i).getG_ps();
                        else if (j == 3)
                            tableDate[i][j] = grade.get(i).getG_exam();
                        else
                            tableDate[i][j] = grade.get(i).getG_final();
                    }
                }
                String[] name = {"学号", "课程名", "平时性成绩", "考试成绩","总成绩"};
                table.removeAll();
                DefaultTableModel tableModel = (DefaultTableModel) table.getModel();    //获得表格模型
                tableModel.setRowCount(0);    //清空表格中的数据
                tableModel.setColumnIdentifiers(name);    //设置表头
                Tool.setColumnSize(table,1,10,160,160);
                for (int i = 0; i < grade.size(); i++) {
                    tableModel.addRow(tableDate[i]);
                }
                table.setRowHeight(30);
                table.setModel(tableModel);    //应用表格模型
            }
        });
        return jpGrade;
    }
    /*
    * 通知管理页面
    * */
    public JPanel getInform() {
        JPanel jpGrade = new JPanel(new BorderLayout());
        JPanel top = new JPanel();
        List<Thing> things = new StudentService().GetInform();
        jpGrade.add(top, BorderLayout.NORTH);
        JTable table = new JTable() {
            public boolean isCellEditable(int row, int column) {
                return false;
            }
        };
        JScrollPane tab = new JScrollPane(table);
        //表格内容居中
        DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();//单元格渲染器
        tcr.setHorizontalAlignment(JLabel.CENTER);
        table.setDefaultRenderer(Object.class, tcr);
        //表格表头居中
        DefaultTableCellHeaderRenderer hr = new DefaultTableCellHeaderRenderer();
        hr.setHorizontalAlignment(JLabel.CENTER);
        hr.setPreferredSize(new Dimension(25, 25));
        table.getTableHeader().setDefaultRenderer(hr);
        //设置面板大小
        tab.setPreferredSize(new Dimension(650, 500));
        //设置透明
        tab.setOpaque(false);
        tab.getViewport().setOpaque(false);
        jpGrade.add(tab, BorderLayout.CENTER);


        List<Thing> inform = new StudentService().GetInform();
        Object[][] tableDate = new Object[inform.size()][5];
        for (int i = 0; i < inform.size(); i++) {
            for (int j = 0; j < 5; j++) {
                if (j == 0)
                    tableDate[i][j] = inform.get(i).getThingtxt();
                else if (j == 1)
                    tableDate[i][j] = inform.get(i).getYear();
                else if (j == 2)
                    tableDate[i][j] = inform.get(i).getTine();
            }
        }
        String[] name = {"通知", "年份", "时间"};
        table.removeAll();
        DefaultTableModel tableModel = (DefaultTableModel) table.getModel();    //获得表格模型
        tableModel.setRowCount(0);    //清空表格中的数据
        tableModel.setColumnIdentifiers(name);    //设置表头
        Tool.setColumnSize(table,1,10,160,160);
        for (int i = 0; i < inform.size(); i++) {
            tableModel.addRow(tableDate[i]);
        }
        table.setRowHeight(30);
        table.setModel(tableModel);    //应用表格模型
//        jbtSelect.addActionListener(new ActionListener() {
//            @Override
//            public void actionPerformed(ActionEvent e) {
//                List<Thing> inform = new StudentService().GetInform();
//                Object[][] tableDate = new Object[inform.size()][5];
//                for (int i = 0; i < inform.size(); i++) {
//                    for (int j = 0; j < 5; j++) {
//                        if (j == 0)
//                            tableDate[i][j] = inform.get(i).getThingtxt();
//                        else if (j == 1)
//                            tableDate[i][j] = inform.get(i).getYear();
//                        else if (j == 2)
//                            tableDate[i][j] = inform.get(i).getTine();
//                    }
//                }
//                String[] name = {"通知", "年份", "时间"};
//                table.removeAll();
//                DefaultTableModel tableModel = (DefaultTableModel) table.getModel();    //获得表格模型
//                tableModel.setRowCount(0);    //清空表格中的数据
//                tableModel.setColumnIdentifiers(name);    //设置表头
//                Tool.setColumnSize(table,1,10,160,160);
//                for (int i = 0; i < inform.size(); i++) {
//                    tableModel.addRow(tableDate[i]);
//                }
//                table.setRowHeight(30);
//                table.setModel(tableModel);    //应用表格模型
//            }
//        });
        return jpGrade;
    }


    /*学生个人信息以及修改密码面板*/
    public JPanel getStudentuser() {
        JPanel jpStudentuser = new JPanel(new GridLayout(6, 2, 2, 2));
        JPanel jPanel = new JPanel(new BorderLayout());
        JFrame jf = this;
        JLabel jlId = new JLabel("学号:");
        JLabel jlName = new JLabel("姓名:");
        JLabel jlSex = new JLabel("性别:");
        JLabel jlAc = new JLabel("学院:");
        JLabel jlClass = new JLabel("行政班级:");
        JTextField jtfId = new JTextField(10);
        jtfId.setEditable(false);
        jtfId.setText(student.getS_id());
        JTextField jtfName = new JTextField(10);
        jtfName.setEditable(false);
        jtfName.setText(student.getS_name());
        JTextField jtfSex = new JTextField(10);
        jtfSex.setEditable(false);
        jtfSex.setText(student.getS_sex());
        JTextField jtfAc = new JTextField(10);
        jtfAc.setEditable(false);
        String ac = new StudentService().GetAcademyName(student.getC_id());
        jtfAc.setText(ac);
        JTextField jtfClass = new JTextField(10);
        jtfClass.setEditable(false);
        jtfClass.setText(student.getC_id());
        JButton jbt = new JButton("修改密码");
        JButton jbtQuit = new JButton("退出");
        JPanel jpBottom = new JPanel();
        jpBottom.add(jbt);
        jpBottom.add(jbtQuit);
        jpStudentuser.add(jlId);
        jpStudentuser.add(jtfId);
        jpStudentuser.add(jlName);
        jpStudentuser.add(jtfName);
        jpStudentuser.add(jlSex);
        jpStudentuser.add(jtfSex);
        jpStudentuser.add(jlAc);
        jpStudentuser.add(jtfAc);

        jpStudentuser.add(jlClass);
        jpStudentuser.add(jtfClass);
        jPanel.add(jpStudentuser, BorderLayout.NORTH);
        jPanel.add(jpBottom, BorderLayout.CENTER);
        //修改密码事件
        jbt.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JPasswordField jpOldPassword = new JPasswordField();
                JPasswordField jpPassword = new JPasswordField();
                JPasswordField jpRepassword = new JPasswordField();
                Object[] message = {
                        "旧密码:", jpOldPassword,
                        "新密码:", jpPassword,
                        "重复新密码:", jpRepassword
                };
                int option = JOptionPane.showConfirmDialog(jf, message, "修改密码", JOptionPane.YES_OPTION);
                if (option == JOptionPane.YES_OPTION) {
                    String oldPassword = new StudentService().GetOldPassword(student.getS_id());
                    if (!oldPassword.equals(Tool.transitionPassword(jpOldPassword.getPassword()))) {
                        JOptionPane.showMessageDialog(jf, "原密码输入错误", "错误 ", 0);
                    } else if (!Tool.transitionPassword(jpPassword.getPassword()).equals(Tool.transitionPassword(jpRepassword.getPassword()))) {
                        JOptionPane.showMessageDialog(jf, "两次密码输入不一致", "错误 ", 0);
                    } else {
                        if (new StudentService().updatePassword(Tool.transitionPassword(jpPassword.getPassword()), student.getS_id())) {
                            JOptionPane.showMessageDialog(jf, "密码修改成功!", "提示", JOptionPane.PLAIN_MESSAGE);
                            jf.dispose();
                            new Login().setVisible(true);
                        }
                    }
                }
            }
        });
        //退出事件
        jbtQuit.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                jf.dispose();
                new Login().setVisible(true);
            }
        });
        return jPanel;
    }

}

TeacherView

package com.dwz.View;

import com.dwz.Pojo.Grade;
import com.dwz.Pojo.Teacher;
import com.dwz.Pojo.TeacherPlan;
import com.dwz.Service.StudentService;
import com.dwz.Service.TeacherService;
import com.dwz.Utlis.Button;
import com.dwz.Utlis.Tool;
import com.dwz.Utlis.replacementPanel;
import sun.swing.table.DefaultTableCellHeaderRenderer;

import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

public class TeacherView extends JFrame {
    Teacher teacher;
    /*首页面板*/
    public JPanel getTeacherhome() {
        JPanel jpHome = new JPanel();
        JTextArea textArea = new JTextArea();
        String text = teacher.getT_name();
        text += "老师:欢迎使用教务管理系统!";
        ImageIcon imageIcon = new ImageIcon("src/main/resources/img/fd.png");
        JLabel jLabel = new JLabel(imageIcon);
        Dimension dimension = new Dimension(800, 500);
        jLabel.setPreferredSize(dimension);

        textArea.setText(text);
        textArea.setFont(new Font("黑体", 1, 30));
        jpHome.add(textArea);
        jpHome.add(jLabel,BorderLayout.NORTH);
        return jpHome;
    }
    /*主页面板*/
    public JPanel getTeacherhome1() {
        JPanel jpHome = new JPanel();
        JTextArea textArea = new JTextArea();
        String text = teacher.getT_name();
        text += "老师:欢迎使用教务管理系统!";
        textArea.setText(text);
        textArea.setFont(new Font("黑体", 1, 30));
        jpHome.add(textArea);
        return jpHome;
    }


    public TeacherView(Teacher teacher) {
        super("教务管理系统");
        this.teacher = teacher;
        Container cp = this.getContentPane();
        cp.setLayout(new BorderLayout());
        JButton jbtHome = new Button().getButton("首页", "img/shouyefill.png");
        JButton jbtArrangement = new Button().getButton("教学安排", "img/mianshoujiaoxueanpai.png");
        JButton jbtGradeinput = new Button().getButton("成绩录入", "img/chengjiluru.png");
        JButton jbtUser = new Button().getButton("个人中心", "img/laoshi.png");
        JPanel bar = new JPanel();
        bar.add(jbtHome);
        bar.add(jbtArrangement);
        bar.add(jbtGradeinput);
        bar.add(jbtUser);
        JPanel mid = getTeacherhome();
        cp.add(bar, BorderLayout.NORTH);
        cp.add(mid, BorderLayout.CENTER);
        this.setSize(800, 650);
        //居中
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jbtHome.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new replacementPanel().replacement(mid,getTeacherhome1());
            }
        });
        jbtArrangement.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new replacementPanel().replacement(mid,getArrangement());
            }
        });
        jbtGradeinput.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new replacementPanel().replacement(mid,getGradeinput());
            }
        });
        jbtUser.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new replacementPanel().replacement(mid,getUser());
            }
        });
    }
    /*
    * 得到教学计划
    * */
    public JPanel getArrangement() {
        JPanel arrangement = new JPanel(new BorderLayout());
        class TableViewRenderer extends JTextArea implements TableCellRenderer {
            public TableViewRenderer() {
                //将表格设为自动换行
                setLineWrap(true);
                setWrapStyleWord(true);
            }
            public Component getTableCellRendererComponent(JTable jtable, Object obj, //obj指的是单元格内容
                                                           boolean isSelected, boolean hasFocus, int row, int column) {
                setText(obj == null ? "" : obj.toString()); //利用JTextArea的setText设置文本方法
                return this;
            }
        }
        JPanel top = new JPanel();
        JLabel jlYear = new JLabel("学年:");
        JComboBox<String> comboBox = new JComboBox<>();
        comboBox.addItem("--请选择--");    //向下拉列表中添加一项
        java.util.List<String> year = new StudentService().getYear();
        for (String str : year) {
            comboBox.addItem(str);
        }
        JButton jbtSelect = new JButton("查询");
        top.add(jlYear);
        top.add(comboBox);
        top.add(jbtSelect);
        arrangement.add(top, BorderLayout.NORTH);
        //不可编辑表格内容
        JTable table = new JTable() {
            public boolean isCellEditable(int row, int column) {
                return false;
            }
        };
        JScrollPane tab = new JScrollPane(table);
        //表格内容居中
        DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();//单元格渲染器
        TableViewRenderer tableViewRenderer = new TableViewRenderer();
        tableViewRenderer.setPreferredSize(new Dimension(50, 75));
        tableViewRenderer.setBackground(new Color(211, 211, 211));
        table.setDefaultRenderer(Object.class, tableViewRenderer);
        //表格表头居中
        DefaultTableCellHeaderRenderer hr = new DefaultTableCellHeaderRenderer();
        hr.setHorizontalAlignment(JLabel.CENTER);
        hr.setPreferredSize(new Dimension(50, 78));
        table.getTableHeader().setDefaultRenderer(hr);
        //设置面板大小
        tab.setPreferredSize(new Dimension(750, 472));
        //设置透明
        tab.setOpaque(false);
        tab.getViewport().setOpaque(false);
        arrangement.add(tab, BorderLayout.CENTER);
        jbtSelect.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Object cp_year = comboBox.getSelectedItem();
                List<TeacherPlan> teachingplan = new TeacherService().GetTeacherPlan(teacher.getT_id(), (String) cp_year);
                Object[][] tableDate = new Object[5][6];
                tableDate[0][0] = "\n\n          1-2节";
                tableDate[1][0] = "\n\n          3-4节";
                tableDate[2][0] = "\n\n          5-6节";
                tableDate[3][0] = "\n\n          7-8节";
                tableDate[4][0] = "\n\n          9-10节";
                for (int i = 0; i < 5; i++) {
                    for (int j = 1; j < 6; j++) {
                        tableDate[i][j] = "";
                    }
                }
                String[] name = {" ", "周一", "周二", "周三", "周四", "周五"};
                for (int i = 0; i < teachingplan.size(); i++) {
                    String res;
                    String tc_time = teachingplan.get(i).getTc_time();
                    //获得最终上课时间与地点
                    String[] res_time = tc_time.split(" ");
                    for (int j = 0; j < res_time.length; j++) {
                        int week = res_time[j].charAt(0) - '0';
                        int section = res_time[j].charAt(2) - '0';
                        res = "\n  " + teachingplan.get(i).getTc_name() + "\n  " + teachingplan.get(i).getTc_point();
                        tableDate[section - 1][week] = res;
                    }
                }
                table.removeAll();
                DefaultTableModel tableModel = (DefaultTableModel) table.getModel();    //获得表格模型
                tableModel.setRowCount(0);    //清空表格中的数据
                tableModel.setColumnIdentifiers(name);    //设置表头
                for (int i = 0; i < 5; i++) {
                    tableModel.addRow(tableDate[i]);
                }
                table.setRowHeight(78);
                table.setModel(tableModel);    //应用表格模型
            }
        });
        return arrangement;
    }

    public JPanel getGradeinput() {
        JPanel gradeInput = new JPanel(new BorderLayout());
        JPanel top = new JPanel();
        JLabel jlYear = new JLabel("学年:");
        JComboBox<String> comboBox = new JComboBox<>();
        comboBox.addItem("--请选择--");    //向下拉列表中添加一项
        java.util.List<String> year = new StudentService().getYear();
        for (String str : year) {
            comboBox.addItem(str);
        }
        JLabel jlClass = new JLabel("教学班级:");
        JComboBox<String> cmbClass = new JComboBox<>();
        cmbClass.addItem("--请选择--");
        JButton jbtSelect = new JButton("查询");
        JButton jbtSubmit = new JButton("提交");
        top.add(jbtSubmit);
        top.add(jlYear);
        top.add(comboBox);
        top.add(jlClass);
        top.add(cmbClass);
        top.add(jbtSelect);
        gradeInput.add(top, BorderLayout.NORTH);
        JTable table = new JTable();
        JScrollPane tab = new JScrollPane(table);
        //表格内容居中
        DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();//单元格渲染器
        tcr.setHorizontalAlignment(JLabel.CENTER);
        table.setDefaultRenderer(Object.class, tcr);
        //表格表头居中
        DefaultTableCellHeaderRenderer hr = new DefaultTableCellHeaderRenderer();
        hr.setHorizontalAlignment(JLabel.CENTER);
        hr.setPreferredSize(new Dimension(25, 25));
        table.getTableHeader().setDefaultRenderer(hr);
        //设置面板大小
        tab.setPreferredSize(new Dimension(600, 500));
        //设置透明
        tab.setOpaque(false);
        tab.getViewport().setOpaque(false);
        gradeInput.add(tab, BorderLayout.CENTER);
        JPanel bottom = new JPanel();
//        JLabel jlOrd = new JLabel("平时成绩占比:");
//        JLabel jlF = new JLabel("考试成绩占比");
//        JTextField jtfOrd = new JTextField(4);
//        JTextField jtfF = new JTextField(4);
//        bottom.add(jlOrd);
//        bottom.add(jtfOrd);
//        bottom.add(jlF);
//        bottom.add(jtfF);
//        bottom.add(jbtSubmit);
        gradeInput.add(bottom, BorderLayout.SOUTH);
        comboBox.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Object cp_year = comboBox.getSelectedItem();
                List<TeacherPlan> teachingplan = new TeacherService().GetTeacherPlan(teacher.getT_id(), (String) cp_year);
                cmbClass.removeAllItems();
                if (teachingplan.size() == 0)
                    cmbClass.addItem("无对应教学班级");
                else {
                    for (int i = 0; i < teachingplan.size(); i++) {
                        cmbClass.addItem(teachingplan.get(i).getTc_name());
                    }
                }
            }
        });
        jbtSelect.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Object className = cmbClass.getSelectedItem();
                List<Grade> gradebyClass = new TeacherService().GetGradeByClass((String) className);
                Object[][] tableDate = new Object[gradebyClass.size()][5];
                for (int i = 0; i < gradebyClass.size(); i++) {
                    for (int j = 0; j < 5; j++) {
                        if (j == 0)
                            tableDate[i][j] = gradebyClass.get(i).getS_id();
                        else if (j == 1)
                            tableDate[i][j] = gradebyClass.get(i).getS_name();
                        else if (j == 2)
                            tableDate[i][j] = gradebyClass.get(i).getG_ps();
                        else if (j == 3)
                            tableDate[i][j] = gradebyClass.get(i).getG_exam();
                        else
                            tableDate[i][j] = gradebyClass.get(i).getG_final();
                    }
                }
                String[] name = {"学号", "姓名", "平时成绩", "考试成绩", "总成绩"};
                table.removeAll();

                DefaultTableModel tableModel = (DefaultTableModel) table.getModel();    //获得表格模型

                tableModel.setRowCount(0);    //清空表格中的数据

                tableModel.setColumnIdentifiers(name);    //设置表头
                for (int i = 0; i < gradebyClass.size(); i++) {
                    tableModel.addRow(tableDate[i]);
                }
                table.setRowHeight(30);
                table.setModel(tableModel);    //应用表格模型
            }
        });
        JFrame jf = this;

        jbtSubmit.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                List<Grade> grades = new ArrayList<>();
                Object className = cmbClass.getSelectedItem();
                for (int i = 0; i < table.getRowCount(); i++) {
                    Grade grade = new Grade();
                    for (int j = 0; j < table.getColumnCount(); j++) {
                        if (j == 0)
                            grade.setS_id((String) table.getValueAt(i, j));
                        else if (j == 2)
                            grade.setG_ps(Double.valueOf(table.getValueAt(i, j).toString()));
                        else if (j == 3)
                            grade.setG_exam(Double.valueOf(table.getValueAt(i, j).toString()));
                        else if (j == 4) {
                            Double res;
//                            res = Double.valueOf(jtfOrd.getText()) * Double.valueOf(table.getValueAt(i, 2).toString())+
//                                    Double.valueOf(jtfF.getText()) * Double.valueOf(table.getValueAt(i, 3).toString());;
//                            res += Double.valueOf(jtfF.getText()) * Double.valueOf(table.getValueAt(i, 3).toString());
                            res = Double.valueOf(table.getValueAt(i, 2).toString())+
                                    Double.valueOf(table.getValueAt(i, 3).toString());
                            grade.setG_final(res);
                        } else
                            continue;
                    }
                    grades.add(grade);
                }
                if (new TeacherService().updateGrade(grades, (String) className)) {
                    JOptionPane.showMessageDialog(jf, "成绩录入成功", "提示", JOptionPane.PLAIN_MESSAGE);
                    //重新进行表格渲染
                    List<Grade> gradebyClass = new TeacherService().GetGradeByClass((String) className);
                    Object[][] tableDate = new Object[gradebyClass.size()][5];
                    for (int i = 0; i < gradebyClass.size(); i++) {
                        for (int j = 0; j < 5; j++) {
                            if (j == 0)
                                tableDate[i][j] = gradebyClass.get(i).getS_id();
                            else if (j == 1)
                                tableDate[i][j] = gradebyClass.get(i).getS_name();
                            else if (j == 2)
                                tableDate[i][j] = gradebyClass.get(i).getG_ps();
                            else if (j == 3)
                                tableDate[i][j] = gradebyClass.get(i).getG_exam();
                            else
                                tableDate[i][j] = gradebyClass.get(i).getG_final();
                        }
                    }
                    String[] name = {"学号", "姓名", "平时性成绩", "考试成绩", "总成绩"};
                    table.removeAll();
                    DefaultTableModel tableModel = (DefaultTableModel) table.getModel();    //获得表格模型
                    tableModel.setRowCount(0);    //清空表格中的数据
                    tableModel.setColumnIdentifiers(name);    //设置表头
                    for (int i = 0; i < gradebyClass.size(); i++) {
                        tableModel.addRow(tableDate[i]);
                    }
                    table.setRowHeight(30);
                    table.setModel(tableModel);    //应用表格模型
                }
            }
        });
        return gradeInput;
    }

    /*用户管理面板*/
    public JPanel getUser() {
        JPanel jpTeacheruser = new JPanel(new GridLayout(6, 2, 2, 2));
        JPanel jPanel = new JPanel(new BorderLayout());
        JFrame jf = this;
        JLabel jlId = new JLabel("教师号:");
        JLabel jlName = new JLabel("姓名:");
        JLabel jlSex = new JLabel("性别:");
        JTextField jtfId = new JTextField(10);
        jtfId.setEditable(false);
        jtfId.setText(teacher.getT_id());
        JTextField jtfName = new JTextField(10);
        jtfName.setEditable(false);
        jtfName.setText(teacher.getT_name());
        JTextField jtfSex = new JTextField(10);
        jtfSex.setEditable(false);
        jtfSex.setText(teacher.getT_sex());
//        JTextField jtfDate = new JTextField(10);
//        jtfDate.setEditable(false);
//        jtfDate.setText(teacher.getT_date());
        JButton jbt = new JButton("修改密码");
        JButton jbtQuit = new JButton("退出");
        JPanel jpBottom = new JPanel();
        jpBottom.add(jbt);
        jpBottom.add(jbtQuit);
        jpTeacheruser.add(jlId);
        jpTeacheruser.add(jtfId);
        jpTeacheruser.add(jlName);
        jpTeacheruser.add(jtfName);
        jpTeacheruser.add(jlSex);
        jpTeacheruser.add(jtfSex);

//        jpTeacheruser.add(jtfDate);
        jPanel.add(jpTeacheruser, BorderLayout.NORTH);
        jPanel.add(jpBottom, BorderLayout.CENTER);
        //修改密码事件
        jbt.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JPasswordField jpOldPassword = new JPasswordField();
                JPasswordField jpPassword = new JPasswordField();
                JPasswordField jpRepassword = new JPasswordField();
                Object[] message = {
                        "旧密码:", jpOldPassword,
                        "新密码:", jpPassword,
                        "重复新密码:", jpRepassword
                };
                int option = JOptionPane.showConfirmDialog(jf, message, "修改密码", JOptionPane.YES_OPTION);
                if (option == JOptionPane.YES_OPTION) {
                    String oldPassword = new StudentService().GetOldPassword(teacher.getT_id());
                    if (!oldPassword.equals(Tool.transitionPassword(jpOldPassword.getPassword()))) {
                        JOptionPane.showMessageDialog(jf, "原密码输入错误", "错误 ", 0);
                    } else if (!Tool.transitionPassword(jpPassword.getPassword()).equals(Tool.transitionPassword(jpRepassword.getPassword()))) {
                        JOptionPane.showMessageDialog(jf, "两次密码输入不一致", "错误 ", 0);
                    } else {
                        if (new StudentService().updatePassword(Tool.transitionPassword(jpPassword.getPassword()), teacher.getT_id())) {
                            JOptionPane.showMessageDialog(jf, "密码修改成功!", "提示", JOptionPane.PLAIN_MESSAGE);
                            jf.dispose();
                            new Login().setVisible(true);
                        }
                    }
                }
            }
        });
        //退出事件
        jbtQuit.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                jf.dispose();
                new Login().setVisible(true);
            }
        });
        return jPanel;
    }
}

Login

package com.dwz.View;

import com.dwz.Pojo.User;
import com.dwz.Service.StudentService;
import com.dwz.Service.TeacherService;
import com.dwz.Service.UserService;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class Login extends JFrame {
    JTextField jtfId = new JTextField(15);
    JPasswordField jpfPassword = new JPasswordField(15);
    JLabel jlId = new JLabel("账号:");
    JLabel jlPassword = new JLabel("密码:");
    JButton jbtLogin = new JButton("登录");

    public Login(){
        this.setTitle("教务管理系统");
        this.setLayout(new FlowLayout());

        ImageIcon imageIcon = new ImageIcon("src/main/resources/img/img.png");
        JLabel jLabel = new JLabel(imageIcon);
        Dimension dimension = new Dimension(308, 133);
        jLabel.setPreferredSize(dimension);
        this.add(jLabel);

        JPanel Jlogin = new JPanel();
        Jlogin.add(jlId);
        Jlogin.add(jtfId);

        JPanel jpPassword = new JPanel();
        jpPassword.add(jlPassword);
        jpPassword.add(jpfPassword);

        JPanel jpLogin = new JPanel();
        jpLogin.add(jbtLogin);

        this.add(Jlogin);
        this.add(jpPassword);
        this.add(jpLogin);
        /*this.pack(); //设置初始大小*/
        this.setSize(308, 290);
        //居中
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JFrame jf = this;
        jpfPassword.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent pwd) {
                if(pwd.getKeyChar() == '\n')
                    jbtLogin.doClick();
            }
        });
        jbtLogin.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String uId = jtfId.getText();
                String uPassword = "";
                char[] password = jpfPassword.getPassword();
                for (int i = 0; i < password.length; i++) {
                    uPassword += password[i];
                }
                User user = new User(uId, uPassword, null);
                UserService userService = new UserService();
                if (userService.judgeUser(user)) {
                    if (user.getU_status().equals("老师")) {
                        jf.dispose();
                        TeacherView teacherView = new TeacherView(new TeacherService().getTeacher(uId));
                        teacherView.setVisible(true);
                    } else if (user.getU_status().equals("学生")){
                        jf.dispose();
                        StudentsView studentsView = new StudentsView(new StudentService().getStudent(uId));
                        studentsView.setVisible(true);
                    }else {
                        jf.dispose();
                        AdminView adminView = new AdminView(new UserService().getUser(uId));
                        adminView.setVisible(true);
                    }
                }else {
                    JOptionPane.showMessageDialog(jf, "用户名密码输入有误,请重新输入", "错误", JOptionPane.WARNING_MESSAGE);
                }
            }
        });
    }
}

EMSmain

package com.dwz.View;

public class EMSmain {
    public static void main(String[] args) {
        new Login().setVisible(true);
    }
}

  • 10
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 30
    评论
《SSM教学管理系统》该项目采用技术jsp、SpringMVC、Spring、Mybatis、tomcat服务器、mysql数据库 开发工具eclipse,项目含有源码、文档、配套开发软件、软件安装教程、项目发布教程    项目介绍:    系统管理:用户登录、用户退出等    学生管理:主要实现对学生的增加、删除、查询、修改以及批量删除相关操作    教师管理:主要实现对教师信息的增加、删除、查询、修改、批量删除等相关操作    课程管理:主要实现对课程的增加、删除、查询、修改、批量删除、排课等相关操作    班级管理:主要实现对班级的增加、删除、查询、修改、批量删除、查看本班学生信息等相关操作权限的控制等    1、学会各类开发软件安装、项目导入以及项目发布,含项目源码,需求文档,配套软件等     2、该项目主要功能完善,主要用于简历项目经验丰富,以及毕业设计或者二次开发    3、提供项目源码,设计文档、数据库sql文件以及所有配套软件,按照教程即可轻松实现项目安装部署项目实战课程:代码视频讲解版如下java项目实战之电商系统全套(前台和后台)(java毕业设计ssm框架项目)https://edu.csdn.net/course/detail/25771java项目之oa办公管理系统(java毕业设计)https://edu.csdn.net/course/detail/23008java项目之hrm人事管理项目(java毕业设计)https://edu.csdn.net/course/detail/23007JavaWeb项目实战之点餐系统前台https://edu.csdn.net/course/detail/20543JavaWeb项目实战之点餐系统后台https://edu.csdn.net/course/detail/19572JavaWeb项目实战之宿舍管理系统https://edu.csdn.net/course/detail/26721JavaWeb项目实战之点餐系统全套(前台和后台)https://edu.csdn.net/course/detail/20610java项目实战之电子商城后台(java毕业设计SSM框架项目)https://edu.csdn.net/course/detail/25770java美妆商城项目|在线购书系统(java毕业设计项目ssm版)https://edu.csdn.net/course/detail/23989系统学习课程:JavaSE基础全套视频(环境搭建 面向对象 正则表达式 IO流 多线程 网络编程 java10https://edu.csdn.net/course/detail/26941Java Web从入门到电商项目实战挑战万元高薪(javaweb教程)https://edu.csdn.net/course/detail/25976其他素材版(毕业设计或课程设计)项目:点击老师头像进行相关课程学习

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爷眼睛亮亮的

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

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

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

打赏作者

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

抵扣说明:

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

余额充值