介绍:

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

效果展示:

学生端

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

首页

课程查询

选课系统

成绩查询

通知管理

个人中心

教师端

首页

教学安排

成绩录入

个人中心

管理员端

首页

老师管理

学生管理

通知管理

个人中心

技术实现:

swing ,maven ,mybatis

主要功能:

  1. 不同用户的登录

  1. 用户菜单的绘制

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

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

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

数据库代码:

/*Navicat Premium Data TransferSource Server         : mysqlSource Server Type    : MySQLSource Server Version : 80030 (8.0.30)Source Host           : localhost:3306Source Schema         : EMSTarget Server Type    : MySQLTarget Server Version : 80030 (8.0.30)File Encoding         : 65001Date: 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 configurationPUBLIC "-//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();//    获得授课idList<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 mapperPUBLIC "-//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_namefrom EMS.student join EMS.class on class.c_id = student.c_idwhere 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_programmeWHERE grade_f.tc_id = teaching_programme.tc_idAND 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_namefrom EMS.teaching_programme ,EMS.teaching_class, EMS.coursewhere EMS.teaching_class.tc_id = EMS.teaching_programme.tc_idand EMS.teaching_programme.course_id = EMS.course.course_idand 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_numFROM EMS.teaching_class,EMS.teaching_programme,EMS.courseWHERE teaching_class.tc_id = teaching_programme.tc_idANDteaching_programme.course_id = course.course_idAND<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_timefrom ((((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_nameFROM EMS.teaching_programmeJOIN EMS.grade_f ON teaching_programme.tc_id = grade_f.tc_idJOIN EMS.student ON grade_f.s_id = student.s_idJOIN EMS.course ON teaching_programme.course_id = course.course_idWHERE 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_nameFROM EMS.academy JOIN EMS.department ON academy.a_id = department.a_idJOIN EMS.class ON class.d_id = department.d_idWHERE 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 mapperPUBLIC "-//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_classJOIN EMS.teaching_class ON EMS.teacher_techering_class.tc_id = EMS.teaching_class.tc_idJOIN EMS.teaching_programme ON EMS.teacher_techering_class.tc_id = teaching_programme.tc_idwhere 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_nameFROM EMS.grade_fJOIN EMS.student ON grade_f.s_id = student.s_idJOIN EMS.teaching_class ON teaching_class.tc_id = grade_f.tc_idwhere 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 mapperPUBLIC "-//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_statusFROM EMS.`user` join EMS.teacher on user.u_id = teacher.t_idWHERE `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_statusFROM EMS.`user` join EMS.student on user.u_id = student.s_idWHERE `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;@Overridepublic 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;}@Overridepublic 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;}@Overridepublic 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;@Overridepublic 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;@Overridepublic 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() {}@Overridepublic 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() {}@Overridepublic 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() {}@Overridepublic 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;}@Overridepublic 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() {}@Overridepublic 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;}@Overridepublic 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;}@Overridepublic 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;}@Overridepublic 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() {@Overridepublic void actionPerformed(ActionEvent e) {new replacementPanel().replacement(mid ,getAdminhome1());}});Teacher.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new replacementPanel().replacement(mid,GetTeacherUser());}});Student.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new replacementPanel().replacement(mid,GetStudentUser());}});Inform.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new replacementPanel().replacement(mid,getInform());}});User.addActionListener(new ActionListener() {@Overridepublic 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() {@Overridepublic void actionPerformed(ActionEvent e) {tableModel.addRow(new Object[1]);}});jVerifyButton.addActionListener(new ActionListener() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic void actionPerformed(ActionEvent e) {tableModel.addRow(new Object[1]);}});jVerifyButton.addActionListener(new ActionListener() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic void actionPerformed(ActionEvent e) {tableModel.addRow(new Object[1]);}});VerifyjButton.addActionListener(new ActionListener() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic void actionPerformed(ActionEvent e) {new replacementPanel().replacement(mid,getStudenthome1());}});Course.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new replacementPanel().replacement(mid,getStudentCourse());}});Selectcourse.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new replacementPanel().replacement(mid,getSelectCourse());}});Grade.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new replacementPanel().replacement(mid,getStudentgrade());}});Inform.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new replacementPanel().replacement(mid,getInform());}});User.addActionListener(new ActionListener() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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);elseJOptionPane.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() {@Overridepublic 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();elsetableDate[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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic void actionPerformed(ActionEvent e) {new replacementPanel().replacement(mid,getTeacherhome1());}});jbtArrangement.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new replacementPanel().replacement(mid,getArrangement());}});jbtGradeinput.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new replacementPanel().replacement(mid,getGradeinput());}});jbtUser.addActionListener(new ActionListener() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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();elsetableDate[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() {@Overridepublic 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);} elsecontinue;}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();elsetableDate[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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic void keyPressed(KeyEvent pwd) {if(pwd.getKeyChar() == '\n')jbtLogin.doClick();}});jbtLogin.addActionListener(new ActionListener() {@Overridepublic 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);}
}

Java教务管理系统相关推荐

  1. 计算机毕业设计Java教务管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java教务管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java教务管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...

  2. Java教务管理系统学生端_Java 简易教务管理系统

    Main.java import java.util.Scanner; public class Main { public static void main(String[] args) { Sys ...

  3. java教务管理系统数据库设计_诚梦计算机毕业设计最新选题题目及程序

    计算机专业学位的有:本科专业主要包含有计算机软件工程,信息工程,计算机技术,数字媒体技术.智能科学与技术.空间信息与数字技术.电子信息与计算机工程等分类. 计算机系包含了很多开发程序语言: 如:比较流 ...

  4. java教务管理系统数据库设计_计算机毕业设计选题及代做定做流程

    毕业季马上到来,我相信很多人都已经在筹备毕业设计选题了,肯定有很多迷茫和不懂的学生,其实毕业设计并没有大家想的那么难,只要找对方法,方式,您可以很顺利的完成的自己的毕业设计作品, 1:先结合自身所学知 ...

  5. Java教务管理系统(含源码+论文+答辩PPT等)

    该项目采用技术JSP.strust2.Spring.Hibernate.Tomcat服务器.MySQL数据库 ,项目含有源码.论文.配套开发软件.软件安装教程.项目发布教程 教务管理是学校的主要日常管 ...

  6. java教务管理系统数据库设计_新手可以学习的教务管理系统详细设计(一)

    一.系统框架 设计流程 设计完成的工作台界面 系统部门角色和用户: 系统用户设置界面 二.学籍管理模块使用说明 学籍管理包含有四个基础信息的报表: (1)学生学籍档案表 其中数据项定义内容为: 学号自 ...

  7. 教务管理系统java源代码,教务管理系统 - WEB源码|JSP源码/Java|源代码 - 源码中国...

    教务管理系统\E-R图.doc 教务管理系统\UML图.doc 教务管理系统\代码注释\login\11.jpg 教务管理系统\代码注释\login\LoginFrame.java 教务管理系统\代码 ...

  8. Java项目: 基于SSM实现教务管理系统

    系统编号:BS-GX-020 后台技术:Spring+Springmvvc+mybatis+shiro 前端技术:Bootstrap+jquery+ajax 页面开发:JSP 开发工具:IDEA  或 ...

  9. java教务系统类设计_基于Java EE体系的高校教务管理系统的设计开发

    <基于Java EE体系的高校教务管理系统的设计开发>由会员分享,可在线阅读,更多相关<基于Java EE体系的高校教务管理系统的设计开发(3页珍藏版)>请在人人文库网上搜索. ...

最新文章

  1. linux who命令实现,linux下 who命令(3)(示例代码)
  2. ajax为什么有时候不行,为什么不能用ajax调用
  3. Python导入运行的当前模块报错
  4. 第六篇:Spring Boot 访问静态资源
  5. 【英语学习】【WOTD】gullible 释义/词源/示例
  6. 串口接收到的字符型数据如何转化成数字
  7. TCP的三次握手和四次挥手理解及面试题
  8. 20天通过中级软件设计师攻略(附资料)
  9. 你的工具包已到货「GitHub 热点速览 v.22.31」
  10. 由于应用universal link 校验不通过 ios应用升级SDK 更换Universal Links校验
  11. 如何更改xp计算机用户名和密码错误,XP更改开机密码提示“Windows不能更改密码”如何解决...
  12. 删除计算机用户时拒绝访问权限,c盘为什么拒绝访问 删除c盘文件需要管理员权限怎么办...
  13. 传感器课程实验:Pt100 铂电阻测温特性实验
  14. easypoi的excel导出单元格只能选下拉选项工具类
  15. Hibernate:DisjunctionConjunction构造复杂的查询条件
  16. mysql 中auto_mysql中的auto_increment
  17. 以CVPR顶会论文为例,探讨AI论文的阅读方法
  18. DropDownList 控件
  19. 转行程序员日记---2020-10-16【最近有点累】
  20. 【matlab学习笔记】安装

热门文章

  1. Vue2 带纵向合并的原生表格实现切割侧栏分页
  2. 在Excel数据最后一行下面写入数据的一种方法
  3. Flask报错:sqlite3.IntegrityError: NOT NULL constraint failed: step. date
  4. 微信有趣的“隐身”功能!关掉这几个开关,别人怎么都搜不到你
  5. 商城-商品规格管理-商品规格参数管理
  6. canvas实现漂亮的下雨效果
  7. JS ListBox动态加载数据
  8. linux shm open,undefined reference to \'shm_open\'解决办法-j_cle-ChinaUnix博客
  9. Tableau学习笔记⑦(数据分层、数据组、数据集)
  10. 一种LCD屏闪问题的调试