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

第十二章:会话控制

会话控制 文章目录 会话控制一、介绍二、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总线只有一对差分信号线,同一时间只能有一个设备操作总线发送数据,若多个设备同时有发送需求,该如何分配总线资源? 解决问题的思路:制定资源分配规则,依次满足多个设备的…

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

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

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

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

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

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

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

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

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

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

vite项目配置高德api定位功能

项目场景: 用vite项目集成了一个H5页面的小程序,需要调用高德的定位API,在浏览器中测试的时候,出现了一系列定位失败的情况。 问题1 Get ipLocation failed、Geolocation permission denied 本地http访问下,定位失败…

基于PHP的草莓种植信息管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的草莓种植管理系统 一 介绍 此草莓种植管理系统基于原生PHP开发,数据库mysql,前端采用jquery.js和kindeditor在线HTML编辑器。系统角色分为用户和管理员。 技术栈:phpmysqljquery.jsphpstudyvsco…

在评论区的小发现

大约是近期比较频率的缘故,今天收到了系统私信,说我入围了本市博主周榜top100名单。本着虚心学习的态度,我打开了榜单。发现前几名获赞、阅读、评论都比我高多了。于是打开人家的主页,想拜读一下人家的文章。从内容上看&#xff0…

压测怎么做?如何自动化?盘点各大公司全链路压测方案与实践

本文综合盘点各大公司团队的全链路压测技术方案和实践路径,供大家参考。 一、什么是全链路压测? 全链路压测指的是基于实际的生产业务场景、系统环境,模拟海量的用户请求和数据对整个业务链进行压力测试,并持续调优的过程。常用…

comfyui虚拟试衣、ai换装、电商换装源码

一、AI换装技术博客 1. 项目介绍 IDM-VTON 是一个虚拟试衣模型,可以在 ComfyUI 中进行部署。相比于其他虚拟试衣模型,如 OOTDiffusion,IDM-VTON 提升了图像保真度和细节保留,更强调真实感,而且就算是侧面的模特或者背面的模特都…

【Ubuntu】--- 创建用户 删除用户 及其他用户操作大全 持续更新中

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【Ubuntu】--- 创建用户 删除用户 及其他…

c++中string用法详解

目录 二、案例需求 三、案例实现 1.首先获取strData中的角色数量 2.创造结构体数组,定义两个索引值 3.循环遍历对结构体User中的Id和Exp进行赋值 4.对结构体数组userArr进行排序 5.展示结果以及最终代码 ​四、最后 一、前言 在C中,std::string …