基于Java + Swing + MySQL的学生选课及成绩管理系统(Java课程设计)

目录

  • 开发工具
  • 系统结构
  • 功能展示
    • 登录与注册界面(通用)
    • 主界面(通用)
    • 学生信息查询界面(学生用户)
    • 学生信息管理界面(教师用户 管理员用户)
    • 学生选课界面(学生用户)
    • 学生课程成绩查询界面(学生用户)
    • 学生课程成绩管理界面(教师用户 管理员用户)
    • 学生课程管理界面(管理员用户)
    • 修改密码界面(通用)
  • 数据库设置
    • 数据库E-R图
    • 创建和管理数据库的SQL命令
  • 源码及项目配置
  • 结尾


开发工具

工具说明
JDK 1.8Java环境
IDEA编译器
MySQL 8.0.36数据库
Navicat 16数据库图形化管理工具

系统结构

在这里插入图片描述


功能展示

登录与注册界面(通用)

在这里插入图片描述在这里插入图片描述


主界面(通用)

在这里插入图片描述

学生、教师和管理员的主界面相同,菜单栏里功能不同。


学生信息查询界面(学生用户)

在这里插入图片描述

采用数据库模糊搜索,支持关键词搜索。

选中表格中的一行数据后点击底部按钮,可以查看详细信息。

在这里插入图片描述


学生信息管理界面(教师用户 管理员用户)

在学生查询的基础上,增加了添加和删除的功能。由于学生的学号与选课联系的学号形成外键约束,当这里删除某个学生,对应该学生的所有课程成绩及选课都会删除。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


学生选课界面(学生用户)

在这里插入图片描述

在表里选中对应课程行,再填入学号,点击添加按钮,即可添加课程,学生添加好的课程,显示是无分数的,需要教师或管理员进行成绩管理,就会有分数。

在这里插入图片描述


学生课程成绩查询界面(学生用户)

学生刚选课完,课程成绩为空,需要教师或管理员进行成绩管理,就会有分数。

在这里插入图片描述


学生课程成绩管理界面(教师用户 管理员用户)

在这里插入图片描述

老规矩选中对应的一行的课程成绩,就能进行修改和删除。

在这里插入图片描述
在这里插入图片描述


学生课程管理界面(管理员用户)

可将学生的课程增加与删除。由于课程的课程号与选课联系的课程号形成外键约束,当这里删除某个课程,对应该课程的所有课程成绩及该选课都会删除。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


修改密码界面(通用)

在这里插入图片描述

在这里插入图片描述


数据库设置

数据库E-R图

在这里插入图片描述

创建和管理数据库的SQL命令

-- 创建数据库并使用 utf8mb4 字符集和排序规则
CREATE DATABASE studata CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE studata;-- 创建 user_stu 表
CREATE TABLE `user_stu` (`username` VARCHAR(30) PRIMARY KEY,`password` VARCHAR(30) NOT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;-- 创建 user_tch 表
CREATE TABLE `user_tch` (`username` VARCHAR(30) PRIMARY KEY,`password` VARCHAR(30) NOT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;-- 创建 user_admin 表
CREATE TABLE `user_admin` (`username` VARCHAR(30) PRIMARY KEY,`password` VARCHAR(30) NOT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;-- 创建 stu 表
CREATE TABLE `stu` (`name` VARCHAR(20) NOT NULL,`gender` CHAR(2) NOT NULL,`sno` CHAR(12) NOT NULL UNIQUE PRIMARY KEY,`major` VARCHAR(12) DEFAULT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;-- 创建 course 表
CREATE TABLE `course` (`cno` CHAR(4) NOT NULL,`cname` VARCHAR(20) DEFAULT NULL,`cteacher` VARCHAR(20) DEFAULT NULL,`credit` INT(11) DEFAULT NULL,PRIMARY KEY (`cno`) USING BTREE
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;-- 创建 sc 表
CREATE TABLE `sc` (`sno` CHAR(12) NOT NULL,`cno` CHAR(4) NOT NULL,`score` INT(11) DEFAULT NULL,PRIMARY KEY (`sno`, `cno`),CONSTRAINT `fk_sc_cno` FOREIGN KEY (`cno`) REFERENCES `course` (`cno`) ON DELETE CASCADE,CONSTRAINT `fk_sc_sno` FOREIGN KEY (`sno`) REFERENCES `stu` (`sno`) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;-- 插入 user_admin 表数据
INSERT INTO `user_admin` (`username`, `password`) VALUES ('admin', '123');
-- 插入 user_tch 表数据
INSERT INTO `user_tch` (`username`, `password`) VALUES ('tch', '123');
-- 插入 user_stu 表数据
INSERT INTO `user_stu` (`username`, `password`) VALUES ('stu', '123');-- 插入 course 表数据
INSERT INTO `course` (`cno`, `cname`, `cteacher`, `credit`) VALUES
('0001', '计算机应用基础', '张老师', 1),
('0002', 'C++程序设计', '李老师', 2),
('0003', '数据库', '王老师', 3),
('0004', '计算机操作系统', '赵老师', 2),
('0005', '英语', '陈老师', 2),
('0006', '高等数学', '刘老师', 1),
('0007', '软件工程', '孙老师', 2),
('0008', '算法导论', '周老师', 3),
('0009', 'Java面向对象程序设计', '吴老师', 4);-- 插入 stu 表数据
INSERT INTO `stu` (`name`, `gender`, `sno`, `major`) VALUES
('王大勇', '男', '202220010401', '计算机科学与技术'),
('李志成', '男', '202220010402', '软件工程'),
('赵小明', '男', '202220010403', '计算机科学与技术'),
('刘慧敏', '女', '202220010404', '物联网工程'),
('陈光明', '男', '202220010405', '智能科学与技术'),
('吴小丽', '女', '202220010406', '智能科学与技术'),
('林美玲', '女', '202220010407', '计算机科学与技术');-- 插入 sc 表数据
INSERT INTO `sc` (`sno`, `cno`, `score`) VALUES
('202220010401', '0001', 85),
('202220010401', '0002', 78),
('202220010401', '0003', 92),
('202220010402', '0001', 79),
('202220010402', '0004', 85),
('202220010403', '0002', 88),
('202220010403', '0005', 90),
('202220010404', '0003', 87),
('202220010404', '0006', 95),
('202220010405', '0002', 82),
('202220010405', '0007', 88),
('202220010406', '0003', 90),
('202220010406', '0008', 92),
('202220010407', '0003', 85),
('202220010407', '0009', 89);

源码及项目配置

源码已经上传到Github上,可以直接下载用IDEA打开项目。

Github项目链接: https://github.com/HongsCai/StuSystem

可在 src/com/service/JdbcConfig 中进行数据库账号配置,在项目中,我将数据库用户名设置为 root,数据库密码设置为 123456,可以根据需要自行修改。

另外数据库配置文件在 src/resources/sql/ 下。

初始在数据库中记录的登录账号:

管理员: 账号:admin 密码:123
教师: 账号:tch 密码:123
学生: 账号:stu 密码:123



结尾

Java期末课程设计,用时两三天简单设计实现了下学生选课及成绩管理系统(一点都不简单,界面改来改去折磨得狠,还得另学数据库)(下学期才学数据库,这学期课程设计就必须得用😨),界面不美观、单调,系统功能较少,还请多多见谅😭。前几个月开始学算法想卷竞赛,但是做题做不动,而且提升也慢😭,感觉脑袋笨笨的,被灵神群里的算法巨佬们吓晕😨,侥幸混了个传智杯国一和蓝桥杯国二,至于XCPC不敢碰瓷。不仅菜而且摆,现在收收心开始好好学Java😇🙏。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/29906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenAI新开放了这些好用的API功能(附AI学习指南)

OpenAI近期召开了开发者大会,同时也发布和开放了一些新的功能特性,比如新版本GPT-4 Turbo,支持128k上下文,知识截止更新到2023年4月,视觉能力、DALLE3,文字转语音TTS等等全都对API开放,GPTs商店…

反馈型振荡器

目录 反馈型振荡器分类 基本工作原理 启动过程 “心脏”LC振荡 起振条件 平衡条件 稳定条件 互感耦合振荡器 电感三端LC振荡器 电容三端LC振荡器 串联改进电容三端式振荡器 并联改进电容三端式振荡器 相位平衡条件的判断准则 反馈型振荡器分类 基本工作原理 启动过…

华为---RIP路由协议的汇总

8.3 RIP路由协议的汇总 8.3.1 原理概述 当网络中路由器的路由条目非常多时,可以通过路由汇总(又称路由汇聚或路由聚合)来减少路由条目数,加快路由收敛时间和增强网络稳定性。路由汇总的原理是,同一个自然网段内的不同子网的路由在向外(其他…

k8s解决java服务下载超时问题

问题描述: 我们在走ingress的java程序的时候,往往会有导出数据的功能,这个时候就会有因网络慢、后台处理时间过长导致下载超时,也有因下载文件太大,导致下载失败,综合解决办法如下 编辑ingress metadata:a…

第十二章:会话控制

会话控制 文章目录 会话控制一、介绍二、cookie2.1 cookie 是什么2.2 cookie 的特点2.3 cookie 的运行流程2.4 浏览器操作 cookie2.5 cookie 的代码操作(1)设置 cookie(2)读取 cookie(3)删除 cookie 三、se…

【1】、var、let、const 三者的区别

主要围绕一下五个方面 变量提升暂时性死区块级作用域重复声明修改声明的变量 1、变量的提升 【var】可以在声明前使用,即输出为undefined 【let】和【const】未声明不可使用,否则会报错 2、暂时性死区定义:在代码块内,如果引用…

港硕上岸鹅厂算法岗,谈谈感受和心得!

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、算法项目落地经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接如…

5个好用的AI绘画软件推荐,小白也能轻松上手

前言 随着人工智能技术的飞速发展,AI绘画软件已经成为艺术创作领域的新宠。这些软件不仅能够提供强大的绘画辅助功能,而且操作简便,即使是绘画新手也能轻松上手。本文将为您推荐5款好用的AI绘画软件,帮助您开启艺术创作的大门。 …

CAN总线仲裁(四)

​ 多设备同时发送遇到的问题 CAN总线只有一对差分信号线,同一时间只能有一个设备操作总线发送数据,若多个设备同时有发送需求,该如何分配总线资源? 解决问题的思路:制定资源分配规则,依次满足多个设备的…

Android开发lmageButton与Button控件区别

本文总结Android开发lmageButton与Button控件区别。 目录 lmageButton和Button之间的相同点: lmageButton和Button之间的区别有: lmageButton和Button之间的相同点: lmageButton与Button控件都可以作为一个按钮产生点击事件。 lmageButton和Button之…

列举几种常见的数据结构,以及线性数据结构

数据结构是计算机科学中用来组织、存储和管理数据的方式。它定义了数据元素之间的逻辑关系,以及如何对数据进行操作。数据结构的选择对于算法的效率至关重要,因为它直接影响到数据在计算机中的存储和访问方式。 以下是几种常见的数据结构: …

PLC通过Profibus协议转Modbus协议网关接LED大屏通讯

一、背景 Modbus协议和Profibus协议是两种常用于工业控制系统的通信协议,它们在自动化领域中起着重要的作用。Modbus是一种串行通信协议,被广泛应用于各种设备之间的通信,如传感器、执行器、PLC等。而Profibus则是一种现场总线通信协议&…

基于YOLOv5m的地面飞机及油罐的目标识别(附数据集和Coovally操作步骤)

本文主要内容:详细介绍了利用无人机拍摄的地面停靠的飞机机体以及油罐,进行识别,整个过程从创建数据集到训练模型再到预测结果全部可视化操作与分析。 文末有数据集获取方式,请先看检测效果 现状 飞机识别,在军事侦察、航空安全监…

Unity3D 如何做好版本控制

目前项目这样版本控制: 1、在unity里,应该只对Assets(包含,meta)和ProjectSettings这两个文件夹做版本控制,其他的文件都是unity或工具生成出来的。 2、设置project setting ->editor setting-> Asset seriali…

策略模式在springboot中的使用

策略模式定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换。策略模式使得算法可以独立于使用它的客户端变化。 策略模式通常由以下三个角色组成: 抽象策略(Strategy)角色:这是一个抽象角色&…

各国内AI大厂推进大模型的阶段

2022 年 11 月,美国 AI 公司 Open AI 发布旗下 AI 聊天机器人程序 ChatGPT,该程序基于大型语言模型(LLM,Large Language Model) GPT-3.5,使用指令微调 (Instruction Tuning)和基于人…

一招教你房间内灰尘多怎么处理?除粉尘好用的空气净化器分享

在你吸尘、扫地、擦家具的时候,你或许会奇怪,为什么灰尘每天擦,每天有?即使门窗关得好好的,过几天还是会落上一层薄薄的灰。它们究竟是什么?对我们的健康又有什么影响呢?我们每天生活在房屋中&a…

导入excel文档,并且做业务处理,然后返回包含导入结果的excel文档

一、依赖 <easyexcel.version>3.3.4</easyexcel.version> <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>${easyexcel.version}</version> </dependency> 二、编写接…

如何修改 json 对象中的值

在JavaScript中&#xff0c;修改JSON对象&#xff08;实际上是一个JavaScript对象&#xff0c;因为JSON是一种数据格式&#xff0c;而JavaScript对象是一种数据结构&#xff09;中的值非常简单。以下是一些步骤和示例&#xff0c;说明如何修改JavaScript对象&#xff08;通常从…

Gotchi 战士们准备好吧!稀有度挖矿第八季锦标赛即将开始!

我们很高兴地宣布稀有度挖矿第 8 赛季的比赛即将开始&#xff0c;比赛将设立 15 万 GHST 的巨额奖金池&#xff0c;同时还将进行新的更新&#xff0c;让您有更多的方式来制定战略并与您的小鬼好友们一较高下。 本赛季引入了双败淘汰赛&#xff0c;每支队伍可以有两名替补队员&a…