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

news2024/7/6 18:36:26

目录

  • 开发工具
  • 系统结构
  • 功能展示
    • 登录与注册界面(通用)
    • 主界面(通用)
    • 学生信息查询界面(学生用户)
    • 学生信息管理界面(教师用户 管理员用户)
    • 学生选课界面(学生用户)
    • 学生课程成绩查询界面(学生用户)
    • 学生课程成绩管理界面(教师用户 管理员用户)
    • 学生课程管理界面(管理员用户)
    • 修改密码界面(通用)
  • 数据库设置
    • 数据库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.coloradmin.cn/o/1837140.html

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

相关文章

跟TED演讲学英文:A tale of mental illness -- from the inside by Elyn Saks

A tale of mental illness – from the inside Link: https://www.ted.com/talks/elyn_saks_a_tale_of_mental_illness_from_the_inside Speaker: Elyn Saks Date: June 2012 文章目录 A tale of mental illness -- from the insideIntroductionVocabularySummaryTranscriptA…

【C语言】数组参数和指针参数详解

在写代码的时候难免要把【数组】或者【指针】传给函数&#xff0c;那函数的参数该如何设计呢&#xff1f; 1 一维数组传参 #include <stdio.h> void test(int arr[])//ok? {} void test(int arr[10])//ok? {} void test(int* arr)//ok? {} void test2(int* arr[20])…

爬虫可以做什么?Python爬虫入门必看保姆级教程!(学习资源+学习路线)

一、什么是爬虫&#xff1f; Python爬虫&#xff0c;也称为Python网络爬虫或网页蜘蛛&#xff0c;是一种使用Python编程语言编写的程序&#xff0c;用于自动地抓取互联网上的信息。这种程序按照预设的规则&#xff0c;模拟浏览器请求站点的行为&#xff0c;从网站上抓取数据并…

【长春理工大学主办 | EI检索稳定 | SPIE出版 | 过往4届均检索 】第五届计算机视觉和数据挖掘国际学术会议(ICCVDM 2024)

第五届计算机视觉和数据挖掘国际学术会议&#xff08;ICCVDM 2024&#xff09; 2024 5th International Conference on Computer Vision and Data Mining 会议简介 第五届计算机视觉与数据挖掘国际学术会议&#xff08;ICCVDM 2024&#xff09;将于2024年7月19-21日在中国长春…

中国剩余定理——AcWing 204. 表达整数的奇怪方式

中国剩余定理 定义 中国剩余定理最早出自我国古代的《孙子算经》&#xff0c;是数论中的一个重要定理。它描述了这样一种情况&#xff1a;在模运算下&#xff0c;对于一组线性同余方程组&#xff0c;存在唯一解的条件和求解方法。 运用情况 常用于在一些涉及到按不同模的余…

ROS std_msgs消息包

ROS std_msgs消息包 基本概述 std_msgs 是 ROS&#xff08;Robot Operating System&#xff09;的一个核心消息包&#xff0c;包含了一系列基本的消息类型&#xff0c;这些类型用于节点之间的标准通信。std_msgs 中的消息类型设计得非常简单&#xff0c;以便用作更复杂消息的…

IO读取properties文件实现JDBC连接池实战

参考文章 Java中的池化思想 面试官&#xff1a;为什么数据库连接很消耗资源&#xff0c;资源都消耗在哪里&#xff1f; 池化思想是什么&#xff1f;连接池是什么&#xff1f; 在Java中&#xff0c;池化思想是一种通过创建和管理可重复使用的对象池来提高性能和资源利用率的编…

GitHub星标破千Star!Python游戏编程的初学者指南

Python 是一种高级程序设计语言&#xff0c;因其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言。 目前的编程书籍大多分为两种类型。第一种&#xff0c;与其说是教编程的书&#xff0c;倒不如说是在教“游戏制作软件”&#xff0c;或教授使用一种呆板的语言&#x…

深入解析纹理贴图——纹理压缩技术

by STANCH 标签&#xff1a;#纹理压缩 #纹理贴图 1.纹理压缩概述 3D计算机图形学离不开各种类型的纹理。纹理贴图可以极大地提高3D物体的视觉质量和细节水平,而不增加几何复杂度。简单的纹理是二维图像&#xff0c;该图像的单个像素称为纹素(texel)。事实上,纹理不仅可以存储…

CMDB是什么实践案例分享

CMDB是什么&实践案例分享 腾讯蓝鲸CMDB通过集中化管理、自动化发现、灵活的模型定义和开放的API&#xff0c;帮助企业高效管理IT资产和配置项&#xff0c;提升运维效率和服务质量&#xff0c;同时支持与其他系统的无缝集成&#xff0c;适用于金融、制造、互联网等多个行业…

Airflow Dag中,某个多分支汇合的task不执行

之前才接触airflow的时候遇到这个问题&#xff0c;但是解决了没有记录&#xff0c;今天又遇到了想起来就记录下 就拿这个图举例&#xff0c;这是个典型的分支路最后汇合执行的task&#xff0c;用代码演示就是这种情况&#xff0c;有两条路可以执行&#xff0c;最后又回归同一个…

工业边缘计算网关在机械制造企业中的应用-天拓四方

随着信息技术的不断发展&#xff0c;工业领域对数据处理和分析的需求日益增长。工业边缘计算网关作为一种新型技术&#xff0c;正逐渐成为工业数字化转型的关键驱动力。本文将通过一个具体案例阐述工业边缘计算网关在工业中的应用&#xff0c;以及其为工业生产带来的显著效益。…

集体爆雷!突发中科院2区(Top) 被标记!新增10本期刊被“On Hold“

本周投稿推荐 SSCI • 中科院2区&#xff0c;6.0-7.0&#xff08;录用友好&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09; CNKI • 7天录用-检索&#xff08;急录友好&#xff09; SCI&EI • 4区生物医学类&#xff0c;0.5-1.0&#xff08;录用…

如何在宝塔中使用命令行执行命令

一、 进入宝塔&#xff0c;找到网站然后点击根目录 二、进入项目中&#xff0c;然后点击 终端 三、如果这里会弹出输入密码的框&#xff0c;那就是需要你输入一下你服务器的 账号密码&#xff0c;然后就登录进去了&#xff0c;可以在这里直接执行命令即可&#xff0c;比如我这…

Notes客户机开启事务日志

大家好&#xff0c;才是真的好。 了解过事务日志的人都知道——等等&#xff0c;你还不知道事务日志&#xff1f; 那我们先介绍一下&#xff0c;简单来说&#xff0c;Domino事务日志是捕获数据库更改并将其写入的记录&#xff0c;然后等服务器不繁忙或按计划更新到磁盘上的No…

【前端:HTML+CSS+JavaScript】HTML基础(下)

一、表格标签 1.1 表格的主要作用 表格主要用于显示、展示数据。因为她可以让数据显示的非常频繁&#xff0c;可读性非常好。特别是后台展示数据的时候&#xff0c;能够熟练运用表格就线程显得很重要。表格不是用来布局页面的。而是用来展示数据的。 1.2 表格的基本语法 <…

了解Nest.js

一直做前端开发&#xff0c;都会有成为全栈工程师的想法&#xff0c;而 Nest 就是一个很好的途径&#xff0c;它是 Node 最流行的企业级开发框架&#xff0c;提供了 IOC、AOP、微服务等架构特性。接下来就让我们一起来学习Nest.js Nest.js官网地址 一&#xff0c;了解Nest Cli …

Python安装失败,报0x80070643-安装时发生严重错误。

背景 之前安装了3.12.4&#xff0c;因为没用到&#xff0c;就用Revo Uninstaller Pro卸载了&#xff0c;连注册表都清理了。后面看到别人写的一个工具不符合预期&#xff0c;想对源码修改下&#xff0c;用到了Python,于是重新安装&#xff0c;出现上面报错。 解决方法尝试 因…

JS 实现树形结构的各种操作(2)

一 数据源 以下所有操作&#xff0c;都使用本数据做测试。 const oraData [{id: "1",name: "动物",children: [{id: "1-1",name: "哺乳类",children: [{id: "1-1-1",name: "小猫",children: []},{id: "1-1…

c++参考std::string自己设计类hstring

目录 一、前言 二、设计需求 三、设计思想 1.功能一 1.功能二 四、设计过程 1.类hstring搭建 2. 实现有参构造函数 3. 实现副本构造函数 4.完整代码 五、结束语 一、前言 在c中有很多的库&#xff0c;但是在有些时候呢&#xff0c;我们一定要学会自己去设计库&#…