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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
Java 编译器
滚雪球学Java(36):玩转Java方法重载和可变参数,让你的代码更灵活
【5月更文挑战第11天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
5 0
滚雪球学Java(36):玩转Java方法重载和可变参数,让你的代码更灵活
|
1天前
|
监控 NoSQL Java
java云MES 系统源码Java+ springboot+ mysql 一款基于云计算技术的企业级生产管理系统
MES系统是生产企业对制造执行系统实施的重点在智能制造执行管理领域,而MES系统特点中的可伸缩、信息精确、开放、承接、安全等也传递出:MES在此管理领域中无可替代的“王者之尊”。MES制造执行系统特点集可伸缩性、精确性、开放性、承接性、经济性与安全性于一体,帮助企业解决生产中遇到的实际问题,降低运营成本,快速适应企业不断的制造执行管理需求,使得企业已有基础设施与一切可用资源实现高度集成,提升企业投资的有效性。
34 5
|
3天前
|
Java 测试技术
如何提高Java代码的可读性
Java是一种常用的编程语言,但是写出易懂且可读性高的代码却是一项挑战。本文将分享一些技巧和建议,帮助您提高Java代码的可读性和可维护性。
|
5天前
|
存储 关系型数据库 MySQL
《MySQL 入门教程》第 05 篇 账户和权限,Java高并发编程详解深入理解pdf
《MySQL 入门教程》第 05 篇 账户和权限,Java高并发编程详解深入理解pdf
|
5天前
|
存储 数据可视化 前端开发
Echarts+vue+java+mysql实现数据可视化
Echarts+vue+java+mysql实现数据可视化
|
5天前
|
Java 关系型数据库 MySQL
MySql数据库级别MD5加密java MD5加密解密工具包
MySql数据库级别MD5加密java MD5加密解密工具包
|
6天前
|
Java Kotlin
java调用kotlin代码编译报错“找不到符号”的问题
java调用kotlin代码编译报错“找不到符号”的问题
17 10
|
7天前
|
前端开发 Java Spring
Java Web ——MVC基础框架讲解及代码演示(下)
Java Web ——MVC基础框架讲解及代码演示
13 1
|
7天前
|
设计模式 前端开发 网络协议
Java Web ——MVC基础框架讲解及代码演示(上)
Java Web ——MVC基础框架讲解及代码演示
8 0
|
6天前
|
Java 数据挖掘 BI
Java医院绩效考核系统源码B/S+avue+MySQL助力医院实现精细化管理
医院绩效考核系统目标是实现对科室、病区财务指标、客户指标、流程指标、成长指标的全面考核、分析,并与奖金分配、学科建设水平评价挂钩。
34 0