基于Java和MySQL实现的大学生学籍管理系统(毕业设计附完整项目代码)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 基于Java和MySQL实现的大学生学籍管理系统(毕业设计附完整项目代码)

一、设计任务


本课题下的功能要求有:


  • 实现学生信息、班级、院系、专业等的管理
  • 实现课程、学生成绩信息管理
  • 实现学生的奖惩信息管理
  • 创建规则用于限制性别项只能输入“男”或“女”
  • 创建视图查询各个学生的学号、姓名、班级、专业、院系
  • 创建存储过程查询指定学生的成绩单
  • 创建触发器当增加、删除学生和修改学生班级信息时自动修改相应班级、学生人数
  • 建立数据库相关表之间的参照完整性约束

其中我主要负责设计存储过程,创建用于修改学生班级信息时自动修改相应班级的学生人数的触发器,选课管理模块(选课、退课及查课),成绩管理模块(增、删、改、查成绩),奖惩管理模块(增、删、改、查奖惩信息)。


其余模块有 ×× 负责设计表结构,设计主页面,院系管理模块(增、删、查院系信息),专业管理模块(增、删、查专业信息),班级管理模块(增、删班级信息,班级人数查询);××× 负责设计视图,检查数据库各表参照完整性,数据库 JDBC 连接,学生管理模块(增、删、改、查学生信息),课程管理模块(增、删、改、查课程信息)。


1.1 需求分析

1.2 功能需求


  • 学生管理模块:创建学生信息表(stu_inf)可以实现对学生信息的添加、查询、修改、删除操作
  • 课程管理模块:创建课程信息表(course)可以实现对课程信息的添加、查询、修改、删除操作
  • 院系管理模块:创建院系信息表(department)可以实现对院系信息的添加、查询、删除操作
  • 专业管理模块:创建专业信息表(major)可以实现对专业信息的添加、查询、删除操作
  • 班级管理模块:创建班级信息表(class)可以实现对班级信息的添加、删除、查询班级人数操作
  • 选课管理模块:创建选课信息表(stu_cou)可以实现对选课信息的添加、查询、删除操作
  • 成绩管理模块:对选课信息表(stu_cou)可以实现对成绩信息的添加、查询、修改、删除操作
  • 奖惩管理模块:创建奖惩信息表(stu_san)可以实现对奖惩信息的添加、查询、修改、删除操作


1.3 性能需求


  • 数据的完整性,准确性:录入数据采用表格方式,限制录入数据类型及取值范围以保证数据的完整性及准确性,系统具有部分反悔功能,系统备有的修改功能均可反悔
  • 数据完成的时间性:如成绩的录入,仅当选课料录资入后方可录入成绩


1.4 数据需求


  • 院系表(departname(Varchar))
  • 专业表(majorname(Varchar),departname(Varchar))专业信息的院系必须是院系表的院系
  • 班级表(majorname(Varchar),classnum(Int),classsum(Smallint))班级信息的专业必须是专业表的专业
  • 学生表(Sno(Varchar),Sname(Varchar),Ssex(Enum),Sbirth(Date),Snative(Varchar),Sclass(Int),Smajor(Varchar))学生信息的班级必须是班级表的班级
  • 课程表(Cno(Varchar),Cname(Varchar),Ccredit(Smallint),Cteacher(Varchar))
  • 选课表(Cno(Varchar),Sno(Varchar),GradeSmallint))选课信息的学号必须为学生表的学号,课程号必须为课程表的课程号
  • 奖惩信息表(id(Int),Sno(Varchar),Sname(Varchar),Reward(Varchar),Punish(Varchar))奖惩信息的学号、姓名必须为学生表的学号、姓名
  • 用户表(username(Varchar),password(Varchar))


1.5 运行需求


  • 用户界面:要求简单实用,操作方便
  • 软件接口:使用 JDBC 来连接 Java 和 MySQL 数据库

二、系统设计


总体功能框架


f5bbd2690b9bfb0d6d8c7968d1a521a0.png


模块的详细设计


  • 选课:输入已有的学号和课程号,然后执行 insert 语句添加此信息到数据库 stu_cou 表中
  • 退课:输入已有的学号,先执行 select 语句查询出相应选课信息,选中想退的课的对应信息,然后执行 delete 语句在数据库 stu_cou 表中删除此信息;
  • 选课信息查询:输入已有学生的学号,然后执行 select 语句查询出此学生所有课程,或输入已有课程的课程号,然后执行 select 语句查询出此课程下的所有学生
  • 成绩添加及修改:输入已有课程号,先执行 select 语句查询出此课程所有学生,选中添加成绩的学生并输入此课程的成绩,然后执行 update 语句更新此信息到数据库 stu_cou 表中
  • 成绩删除:输入已有课程号,先执行 select 语句查询出此课程所有学生,选中该学生,然后执行 update 语句在数据库 stu_cou 表中删除此学生、此课程对应成绩
  • 成绩查询:
  • 按学号查询:输入已有学生的学号,然后执行 select 语句查询出此学生所有成绩,并列出该生总课程数、总学分、挂科课程数、已修学分和平均分
  • 按课程号查询:输入已有课程的课程号,然后执行 select 语句查询出此课程下已有成绩学生的成绩信息,并自动统计总人数、及格人数、不及格人数及此课程平均成绩
  • 奖惩信息添加:输入已有学生的学号和姓名,再输入奖惩信息,然后执行 insert 语句添加此信息到数据库 stu_san 表中
  • 奖惩信息删除:输入已添加过奖惩信息学生的学号,然后执行 delete 语句在数据库 stu_san 表中删除此信息
  • 奖惩信息修改:输入已添加过奖惩信息学生的学号,先执行 select 语句查询出所有奖惩信息,然后选中要修改的信息并输入修改后的奖惩信息,最后执行 update 语句在数据库 stu_san 表中修改此信息
  • 奖惩信息查询:输入已有学生的学号,然后执行 select 语句查询出所有奖惩信息


三、数据库设计


概念结构设计


6675b3869e1f1327a75eccc9115fbf2e.png

逻辑结构设计


  • 院系(院系名) 主键=院系名
  • 专业(院系名,专业名) 主键=专业名 外键=院系名
  • 班级(专业名,班级号,班级人数) 主键=专业名、班级号 外键=专业名
  • 学生(学号,姓名,性别,出生年月,籍贯,专业名,班级号)
  • 主键=学号 外键=专业名、班级号
  • 课程(课程号,课程名,学分,执教教师) 主键=课程号
  • 选课(学号,课程号,分数) 主键=学号、课程号 外键=学号、课程号
  • 奖惩信息(id,学号,姓名,奖励信息,惩罚信息) 主键=id 外键=学号、姓名
  • 用户(用户名,密码) 主键=用户名


物理结构设计

学生信息表(stu_inf)


image.png


外键


image.png


课程信息表(course)


image.png


院系信息表(department)

image.png


专业信息表(major)


image.png

外键

image.png


班级信息表(class)


image.png


外键

image.png


选课信息表(stu_cou)


image.png


外键


image.png

奖惩信息表(stu_san)

image.png


外键

image.png


用户信息表(login)


image.png


学生信息视图


CREATE ALGORITHM = UNDEFINED DEFINER = `root` @`localhost` SQL SECURITY DEFINER VIEW `studentview` AS SELECT
    `stu_inf`.`Sno` AS `Sno`,
    `stu_inf`.`Sname` AS `Sname`,
    `stu_inf`.`Sclass` AS `Sclass`,
    `stu_inf`.`Smajor` AS `Smajor`
FROM `stu_inf`

查询指定学生成绩单存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `pd_select_stu_cou_by_Sno`(S_no varchar(6))
    BEGIN
        select Sno,Cno,Grade from stu_cou where Sno=S_no;
    END

触发器

·添加学生时班级人数自动 +1

CREATE DEFINER = `root` @`localhost` TRIGGER `stu_jia` AFTER INSERT ON `stu_inf` FOR EACH ROW
UPDATE class SET classsum = classsum + 1
WHERE new.Smajor = majorname AND new.sclass = classnum;

删除学生时班级人数自动-1

CREATE DEFINER = `root` @`localhost` TRIGGER `stu_shan` BEFORE DELETE ON `stu_inf` FOR EACH ROW
UPDATE class SET classsum = classsum - 1
WHERE old.Smajor = majorname AND old.sclass = classnum;;

修改学生班级时旧班级自动-1,新班级自动 +1

CREATE DEFINER = `root` @`localhost` TRIGGER `stu_geng` AFTER UPDATE ON `stu_inf` FOR EACH ROW
BEGIN
    UPDATE class SET classsum = classsum + 1
    WHERE new.Smajor = majorname AND new.sclass = classnum;
    UPDATE class SET classsum = classsum - 1
    WHERE old.Smajor = majorname AND old.sclass = classnum;
END;

四、运行结果和测试


运行界面及其效果图


8108855fea04d5df4dc9152bdcbaaa25.png

9d54ebf15bb5eb0bcce32f7df8e60590.png

fd556db94df3dceb426cb33813c36384.png

2b53f30f5bd2a3d5cb0ff85eb0b7dd0a.png

95f721c7a28db2d3d8996effb0b84269.pngf11689e027bb85c0bd5ab6fae8022ffb.png

653d97669dc98c9432d532aaeccaae65.png


8ed33e71647ccccfcea28cc183e55881.png


对在调试中发现的问题进行说明:


前期数据库设计时部分数据库用户自定义约束缺失,导致一些不符合逻辑,不正确的数据也能被写进数据库中;后来在程序中增加了相关的约束判断条件保证数据的正确性和一致性。


完整代码:https://download.csdn.net/download/qq_38735017/87394449

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
运维 自然语言处理 供应链
Java云HIS医院管理系统源码 病案管理、医保业务、门诊、住院、电子病历编辑器
通过门诊的申请,或者直接住院登记,通过”护士工作站“分配患者,完成后,进入医生患者列表,医生对应开具”长期医嘱“和”临时医嘱“,并在电子病历中,记录病情。病人出院时,停止长期医嘱,开具出院医嘱。进入出院审核,审核医嘱与住院通过后,病人结清缴费,完成出院。
20 3
|
8天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
11 1
|
9天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
12天前
|
移动开发 前端开发 JavaScript
java家政系统成品源码的关键特点和技术应用
家政系统成品源码是已开发完成的家政服务管理软件,支持用户注册、登录、管理个人资料,家政人员信息管理,服务项目分类,订单与预约管理,支付集成,评价与反馈,地图定位等功能。适用于各种规模的家政服务公司,采用uniapp、SpringBoot、MySQL等技术栈,确保高效管理和优质用户体验。
|
弹性计算 数据可视化 关系型数据库
阿里云服务器部署Java Web项目和连接MySQL数据库全流程
阿里云服务器部署Java Web项目和连接MySQL数据库全流程
5868 0
阿里云服务器部署Java Web项目和连接MySQL数据库全流程
|
3月前
|
Java 应用服务中间件 Windows
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
|
6月前
|
存储 Java Maven
使用 nohup 部署和后台运行Java 项目
使用 nohup 部署和后台运行Java 项目
413 1
使用 nohup 部署和后台运行Java 项目
|
3月前
|
Java 开发工具 git
【Azure 应用服务】本地Git部署Java项目到App Server,访问无效的原因
【Azure 应用服务】本地Git部署Java项目到App Server,访问无效的原因
|
3月前
|
JavaScript Java Python
【Azure 应用服务】在Azure App Service for Windows 中部署Java/NodeJS/Python项目时,web.config的配置模板内容
【Azure 应用服务】在Azure App Service for Windows 中部署Java/NodeJS/Python项目时,web.config的配置模板内容
|
6月前
|
Java 应用服务中间件 Docker
【Docker】部署启动java项目
【Docker】部署启动java项目
223 2