# 学生选课管理系统 **Repository Path**: Airsku/StudentCourseManagement ## Basic Information - **Project Name**: 学生选课管理系统 - **Description**: 基于SSM框架实现的学生选课系统 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 41 - **Forks**: 2 - **Created**: 2022-11-11 - **Last Updated**: 2025-07-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 学生选课管理系统 项目地址:https://gitee.com/Airsku/StudentCourseManagement 目录结构1246 - 快速上手 - 版本迭代 - 设计过程 # 一、快速上手 ## 1 环境 ``` win11 idea2019.2 maven3.8.4 mysql8.0.30 jdk11 ``` ## 2 配置文件 #### resources/application.properties ```mysql # 以下有注释部分改成自己的 server.port=8088 spring.datasource.url = jdbc:mysql://localhost:3306/dev # 数据库位置和名称,我的数据库叫dev spring.datasource.driver-Class-Name = com.mysql.cj.jdbc.Driver spring.datasource.username = root # 本地mysql登录用户名 spring.datasource.password = 111111 # 本地mysql登录密码 ``` ## 3 数据库构建 ``` 先在navicat里创建数据库dev,再通过dev运行我的sql文件(sql/dev.sql)。 ``` ## 4 运行 理论上完成上述步骤就可以直接跑了。 # 二、版本迭代 ## v2.0概述 2022-11-22 #### 1、已实现功能和待实现功能 已实现功能: 1. 学生登录,学生选课,学生查看所有课程 2. 教师登录,教师查看自己的学生,教师修改学生成绩 3. 管理员登录,管理员管理(增删改查)学生、教师、课程 待实现功能: 2. 优化ui界面 3. 添加一些查询功能 4. 管理员管理选课 #### 2、结果展示 ###### 登录界面 ![](asserts/v2/ssm_login.png) ###### 管理员界面 教师管理:实现了教师的增删改,查询全部,按名字模糊查询,按院系/性别查询 ![](asserts/v2/manage_teacher.png) 学生管理:实现了学生的增删改,查询全部,按名字模糊查询,按院系/性别查询 ![](asserts/v2/manage_student.png) 课程管理:实现了课程的增删改,实现全部查询 ![](asserts/v2/manage_course.png) ###### 学生登录界面 我的选课:实现了按选课号选课,退选功能 ![](asserts/v2/student_mySC.png) 选课中心:实现了显示所有课程信息 ![](asserts/v2/student_course.png) ###### 教师登录界面 我的学生:实现了对学生成绩的修改 ![](asserts/v2/teacher_student.png) ## v1.0概述 2022-11-11 #### 1、已实现功能 本项目使用SSM框架和MySQL实现后端功能,使用JSP+CSS+JavaScript+JQuery实现前端。在后端中,我使用了Spring中的IOC容器存放数据层和业务层对象,用SpringMVC中的控制器Controller来进行处理前端请求,同时用Mybatis连接MySQL数据库。在前端中,我使用前述几种前端语言简单实现了前端界面以及前端异步请求功能。前端页面是用JSP实现的,原因在于tomcat服务器比较适合用JSP写页面,用HTML写界面容易出问题。 在项目中的具体实现的表现: - 首先,我实现了数据库的设计,并给出Monitor、Teacher的数据层类MonitorDao、TeacherDao以访问数据库。 - 其次,我写了业务层类,LoginService提供登录时访问数据库的服务功能,MonitorService提供管理者管理整个数据库系统的服务。 - 再者,我写了控制层类,LoginController用于登录控制,处理前后端登录数据传输,TeacherController用于控制对教师数据的访问。 - 最后,我写了前端页面以及使用ajax异步刷新界面。 本项目中,SSM、JSP+CSS+JavaScript+JQuery、Java都是我没学过的技能,而SQL和计算机网络我正在学,所以在学习开发技能方面占了我较多的时间,因此,本项目我还没有全部实现,但基本掌握了SSM开发的知识,剩下的部分只是时间问题。 已实现功能: - 管理员登录 - 插入和删除教师 待实现功能: - 学生/教师的登录与注册 - 学生/课程的增删改查 - 学生选课功能 #### 2、结果展示 ###### 登录界面 ![](asserts/login.png) ###### 教师管理界面 ![](asserts/teacher-manage.png) **添加数据** 添加王昭君 ![](asserts/teacher-manage-insert.png) **删除数据** 删除妲己 ![](asserts/teacher-manage-delete.png) **在数据库中验证结果** 可以看到之前删除的妲己不在数据库中,而之前添加的王昭君在数据库中 ![](asserts/teacher-manage-验证.png) # 三、设计过程 ## 一 环境搭建 - jdk配置与IDEL安装 安装配置:[IDEA安装教程](https://blog.csdn.net/qq_43554335/article/details/121928344?ops_request_misc=%7B%22request%5Fid%22%3A%22166357518316782417042176%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=166357518316782417042176&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-121928344-null-null.142^v47^pc_rank_34_2,201^v3^add_ask&utm_term=idea安装教程&spm=1018.2226.3001.4187) jdk安装检测:`java -version` [idea官方下载](https://www.jetbrains.com/idea/download/other.html) - maven配置 安装配置: [maven安装及配置](https://blog.csdn.net/weixin_43811057/article/details/108235117?ops_request_misc=&request_id=&biz_id=102&utm_term=maven安装与配置&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-108235117.142^v47^pc_rank_34_2,201^v3^add_ask&spm=1018.2226.3001.4187) 安装检测:`mvn -v # 使用时需要注意切换至mvn安装目录下的bin文件夹中,否则一般找不到指令` 使用教程:[Maven使用教程](https://blog.csdn.net/lovequanquqn/article/details/81627807?ops_request_misc=%7B%22request%5Fid%22%3A%22166357550516800192222860%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=166357550516800192222860&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-3-81627807-null-null.142^v47^pc_rank_34_2,201^v3^add_ask&utm_term=maven&spm=1018.2226.3001.4187) - mysql安装配置 安装配置:[MySQL安装配置教程](https://blog.csdn.net/weixin_52270997/article/details/120066948?ops_request_misc=%7B%22request%5Fid%22%3A%22166366934516782414966949%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=166366934516782414966949&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-3-120066948-null-null.142^v48^pc_rank_34_2,201^v3^add_ask&utm_term=mysql安装配置教程&spm=1018.2226.3001.4187) 账号:`root` ;密码:`111111` ## 二 数据库设计 #### 2.1 需求分析 - 1、实现相关数据的存储,即学生数据,课程数据,选课关系数据,教师数据,管理员数据。 思路:为每个实体设计一个Dao对象,以进行管理其数据。 #### 2.2 概念结构设计 ![](asserts/E-R图.png) #### 2.3 逻辑结构设计 ```mysql SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for manage_user -- ---------------------------- DROP TABLE IF EXISTS `Monitor`; CREATE TABLE `Monitor` ( Mno CHAR(9) PRIMARY KEY, Mpassword CHAR(11) ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '管理用户' ROW_FORMAT = Dynamic; INSERT INTO `Monitor` VALUES ('admin', 'admin'); -- ---------------------------- -- Table structure for student -- ---------------------------- DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( Sno CHAR(9) PRIMARY KEY, Spassword CHAR(11), Sname CHAR(20) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '学生表' ROW_FORMAT = Dynamic; INSERT INTO Student VALUES ('1001','12345','赵云','男',20,'计算机科学与技术'), ('1002','12345','黄忠','男',19,'计算机科学与技术'), ('2001','12345','诸葛亮','男',20,'工商管理'), ('2002','12345','刘备','男',19,'工商管理'), ('2003','12345','武则天','女',21,'工商管理'), ('3001','12345','小乔','女',20,'信息管理'); -- ---------------------------- -- Table structure for teacher -- ---------------------------- DROP TABLE IF EXISTS `teacher`; CREATE TABLE `teacher` ( Tno CHAR(9) PRIMARY KEY, Tpassword CHAR(11), Tname CHAR(20) NOT NULL, Tsex CHAR(2), Tage SMALLINT, Tdept CHAR(20) ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '教师表' ROW_FORMAT = Dynamic; INSERT INTO Teacher VALUES ("01001","12345","狄仁杰","男",33,"计算机科学与技术"), ("01002","12345","程咬金","男",34,"计算机科学与技术"), ("01003","12345","马可波罗","男",33,"计算机科学与技术"), ("02001","12345","貂蝉","女",36,"工商管理"), ("03001","12345","妲己","女",43,"信息管理"), ("03002","12345","西施","女",31,"信息管理"); -- ---------------------------- -- Table structure for course -- ---------------------------- DROP TABLE IF EXISTS `course`; CREATE TABLE `course` ( Cno CHAR(4), Tno CHAR(9), Cname CHAR(40) NOT NULL, Cpno CHAR(4) DEFAULT NULL, Ccredit SMALLINT, PRIMARY KEY (Cno, Tno), FOREIGN KEY (Cpno) REFERENCES Course(Cno) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (Tno) REFERENCES Teacher(Tno) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '课程' ROW_FORMAT = Dynamic; INSERT INTO Course(Cno,Tno,Cname,Ccredit) VALUES ("101","01001","C语言",2), ("102","01002","离散数学",2), ("201","02001","工商管理",4); INSERT INTO Course VALUES ("103","01003","Java","101",2), ("104","01001","数据结构","102",4), ("105","01003","数据库","104",4), ("301","03001","信息论","102",4); -- ---------------------------- -- Table structure for SC -- ---------------------------- DROP TABLE IF EXISTS `SC`; CREATE TABLE `SC` ( Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (Cno) REFERENCES Course(Cno) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '学生课程关联表' ROW_FORMAT = Dynamic; INSERT INTO SC VALUES ("1001","101",88), ("1001","102",89), ("1001","103",92), ("1001","104",93), ("1002","101",84), ("2001","201",88), ("3001","102",77), ("3001","301",92); SET FOREIGN_KEY_CHECKS = 1; ``` #### 2.4 数据库实施与运行测试 详见代码。