数据库课程设计——学生信息管理系统
Posted 易霭珞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库课程设计——学生信息管理系统相关的知识,希望对你有一定的参考价值。
学生信息管理系统
0 前言
需要完整代码请点赞,并评论区留言
0.1效果演示
演示视频
0.2 开发工具
- 开发语言:Java 、Java GUI、mysql
- 开发工具:IDEA、Navicat
0.3 创新点
- 采用MD5文本摘要算法对用户账号和密码进行加密存储
- 使用exe4j对系统代码进行打包成exe可执行文件
1.系统需求分析
学校每年都有新生入学、老生毕业,还有其他各种人事变动。如何有效地管理这些学生的信息,帮助学校和老师掌握学生的情况,这就是学生信息管理系统需要完成的功能。
1.1 系统功能分析
- 本系统主要的功能是收集学生的个人信息,以便向教师提供每个学生在校的情况。系统的主要功能有:
- 学生个人信息输入,包括:姓名、性别、院系、生日、籍贯、生源所在地等。
- 学生流动情况的输入,包括:转系、休学、复学、退学、毕业。
- 奖惩情况的输入。
- 学生个人情况查询和修改,包括流动情况和奖罚情况。
1.2 系统功能模块设计(划分)
根据系统功能要求可以将系统分解成几个模块来分别设计应用程序界面,如图1 所示。
1.3 与其它系统的关系
学生信息管理系统是校园信息管理系统的一个组成部分。它为其它系统,如班级信息管理系统、
教学管理系统、成绩单系统、宿舍分配系统等,提供学生的基本情况。同时需要其他系统提供的班级设置和院系设置等情况。这些系统可以使用同一个数据库,直接相互调用所需的数据。
1.4 数据流程图
学生信息管理系统的数据流程如图 2 所示。
2.数据库设计
2.1 数据库需求分析
- 根据上一节的数据流程图,可以列出以下记录学生信息所需的数据项和数据结构:
- 学生:学号、姓名、性别、生日、籍贯、所在院系、所在班级。
- 处罚记录:记录号、级别、处罚对象、记录时间、详细描述、是否生效。
- 奖励记录:记录号、级别、奖励对象、记录时间、详细描述。
- 学籍变更记录:记录号、变更情况、记录对象、记录时间、详细描述。
所需的外部数据支持:
- 班级:班级编号、班级名称、所属院系。
- 院系:代码、名称。
2.2 数据库概念结构设计
图 3 是本系统所需数据的E-R 模型图。
2.3数据库逻辑结构设计
根据系统 E-R 图,需要设计 4 个数据表来存放学生的信息。为了系统的完整,系统中包括了应用程序设计中所需的 2 个外部数据表。为了优化数据表结构,部分字段采用代码形
式,因此需要附加 3 个代码表。这 9 个数据表的结构如表 1 到表 9 所示。
表 1 STUDENT 学生个人信息表
字段名 | 数据类型 | 是否可空 | 说明 |
---|---|---|---|
STUDENTID | 学号(主关键字) | ||
NAME | 姓名 | ||
SEX | 性别(M、F) | ||
CLASS | 班级编号(外部关键字) | ||
DEPARTMENT | 所属院系编号(外部关键字) | ||
BIRTHDAY | 生日 | ||
NATIVE_PLACE | 籍贯 |
表 2 CHANGE 学籍变更信息表
字段名 | 数据类型 | 是否可空 | 说明 |
---|---|---|---|
ID | 记录号(主关键字) | ||
STUDENTID | 学号(外部关键字) | ||
CHANGE | 变更代码(外部关键字) | ||
REC_TIME | DATE | 记录时间 | |
DESCRIPTION | 描述 |
表 3 REWARD 奖励记录信息表
字段名 | 数据类型 | 是否可空 | 说明 |
---|---|---|---|
ID | 记录号(主关键字) | ||
STUDENTID | 学号(外部关键字) | ||
LEVELS | 级别代码(外部关键字) | ||
REC_TIME | 记录时间 | ||
DESCRIPTION | 描述 |
表 4 PUNISHMENT 处罚记录信息表
字段名 | 数据类型 | 是否可空 | 说明 |
---|---|---|---|
ID | 记录号(主关键字) | ||
STUDENTID | 学号(外部关键字) | ||
LEVELS | 级别代码(外部关键字) | ||
REC_TIME | 记录时间 | ||
ENABLE | 是否生效(T、F) | ||
DESCRIPTION | 描述 |
表 5 DEPARTMENT 院系信息表
字段名 | 数据类型 | 是否可空 | 说明 |
---|---|---|---|
ID | 编号(主关键字) | ||
NAME | 全称 |
表 6 CLASS 班级信息表
字段名 | 数据类型 | 是否可空 | 说明 |
---|---|---|---|
ID | 编号(主关键字) | ||
NAME | 全称 | ||
MONITOR | 班长学号(外部关键字) |
表 7 CHANGE_CODE 学籍变动代码表
字段名 | 数据类型 | 是否可空 | 说明 |
---|---|---|---|
CODE | 代码(主关键字) | ||
DESCRIPTION | 描述 |
表 8 REWARD_LEVELS 奖励等级代码表
字段名 | 数据类型 | 是否可空 | 说明 |
---|---|---|---|
CODE | 代码(主关键字) | ||
DESCRIPTION | 描述 |
表 9 PUNISH_LEVELS 处罚等级代码表
字段名 | 数据类型 | 是否可空 | 说明 |
---|---|---|---|
CODE | 代码(主关键字) | ||
DESCRIPTION | 描述 |
2.4 数据库的建立
2.4.1 数据库的建立(请设计者完成)
2.4.2 初始数据的输入
数据表创建成功后,数据库中还没有实际的数据。为了保证外部键能使用,数据需要提前输入,如院系编号、班级编号、学籍变更代码和奖惩级别等等。
学籍变更代码和奖惩级别的主关键字 CODE 从 0 开始用阿拉伯数字依次编号,便于程序设计时,采用单选按钮来选择。
本系统中所用到的学籍变更和奖惩级别代码如表 10 至表 12 所示(请设计者完成这些数据表的逻辑结构)。
表10 学籍变更代码表
代码 | 说明 |
---|---|
0 | 转系 |
1 | 休学 |
2 | 复学 |
3 | 退学 |
4 | 毕业 |
表11 奖励级别代码
代码 | 说明 |
---|---|
0 | 校特等奖学金 |
1 | 校一等奖学金 |
2 | 校二等奖学金 |
3 | 校三等奖学金 |
4 | 系一等奖学金 |
5 | 系二等奖学金 |
6 | 系三等奖学金 |
表12 处罚级别代码
代码 | 说明 |
---|---|
0 | 警告 |
1 | 严重警告 |
2 | 记过 |
3 | 记大过 |
4 | 开除 |
(以下各部分请设计者完成)。
3.各功能模块的设计与实现
3.1 功能说明
1、学生个人信息输入
2、学籍变更情况的输入
3、奖励情况的输入
4、处罚情况的输入
5、学生个人情况查询和修改
3.2 用户界面设计
完成数据库创建和功能说明以后,我们可以进行下一步工作,即设计用户界面。由于本系统管理内容比较简单,且为校园管理信息系统的一部分,因此使用一个窗体不同的标签页来完成系统要求的 5 项功能。
我们把学生信息管理系统的窗体分成____个主要部分,如图____所示。
1、应用程序主窗体的创建
2、学生个人信息输入界面
3、学籍变更情况输入界面
4、奖励情况输入界面
5、处罚情况输入界面
6、学生个人情况查询和修改界面
3.3 各功能模块的实现
1、学生个人信息输入
2、学籍变更情况输入
3、奖励情况输入
4、处罚情况输入
5、学生个人情况查询和修改
4.系统实现
4.0 数据库表的建立
/*
Navicat Premium Data Transfer
Source Server : conn-local
Source Server Type : MySQL
Source Server Version : 80025
Source Host : localhost:3306
Source Schema : mydb7
Target Server Type : MySQL
Target Server Version : 80025
File Encoding : 65001
Date: 02/12/2022 17:45:57
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for change_code
-- ----------------------------
DROP TABLE IF EXISTS `change_code`;
CREATE TABLE `change_code` (
`code` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '学籍变动代码(主键)',
`desc` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '描述',
PRIMARY KEY (`code`) USING BTREE,
INDEX `desc`(`desc`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of change_code
-- ----------------------------
INSERT INTO `change_code` VALUES ('1', '休学');
INSERT INTO `change_code` VALUES ('2', '复学');
INSERT INTO `change_code` VALUES ('4', '毕业');
INSERT INTO `change_code` VALUES ('0', '转系');
INSERT INTO `change_code` VALUES ('3', '退学');
-- ----------------------------
-- Table structure for class
-- ----------------------------
DROP TABLE IF EXISTS `class`;
CREATE TABLE `class` (
`class_id` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '编号(主关键字)',
`class_name` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '班级名称',
`monitor_id` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '班长学号',
PRIMARY KEY (`class_id`) USING BTREE,
INDEX `class_ibfk_1`(`monitor_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of class
-- ----------------------------
INSERT INTO `class` VALUES ('11', '计科一班', '');
INSERT INTO `class` VALUES ('12', '计科二班', NULL);
INSERT INTO `class` VALUES ('21', '计科三班', NULL);
INSERT INTO `class` VALUES ('22', '计科四班', '');
INSERT INTO `class` VALUES ('31', '计科五班', NULL);
INSERT INTO `class` VALUES ('32', '计科智能一班', '');
INSERT INTO `class` VALUES ('41', '计科智能二班', NULL);
INSERT INTO `class` VALUES ('42', '计科智能三班', NULL);
INSERT INTO `class` VALUES ('43', '大数据一班', '');
INSERT INTO `class` VALUES ('51', '大数据二班', '');
INSERT INTO `class` VALUES ('52', '大数据三班', NULL);
INSERT INTO `class` VALUES ('53', '软件一班', NULL);
-- ----------------------------
-- Table structure for dept
-- ----------------------------
DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept` (
`dept_id` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '编号(主关键字)',
`dept_name` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '专业名称',
PRIMARY KEY (`dept_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of dept
-- ----------------------------
INSERT INTO `dept` VALUES ('1', '计科');
INSERT INTO `dept` VALUES ('2', '软件');
INSERT INTO `dept` VALUES ('3', '信安');
INSERT INTO `dept` VALUES ('4', '物联网');
INSERT INTO `dept` VALUES ('5', '大数据');
-- ----------------------------
-- Table structure for punish
-- ----------------------------
DROP TABLE IF EXISTS `punish`;
CREATE TABLE `punish` (
`rec_id` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '记录号(主关键字)',
`stu_id` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '学号(外部关键字)',
`levels` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '级别代码(外部关键字)',
`rec_time` datetime(6) NULL DEFAULT NULL COMMENT '记录时间',
`enable` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否生效(T、F)',
`desc` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '描述',
PRIMARY KEY (`rec_id`) USING BTREE,
INDEX `punish_ibfk_1`(`stu_id`) USING BTREE,
INDEX `punish_ibfk_2`(`levels`) USING BTREE,
CONSTRAINT `punish_ibfk_1` FOREIGN KEY (`stu_id`) REFERENCES `student` (`stu_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `punish_ibfk_2` FOREIGN KEY (`levels`) REFERENCES `punish_levels` (`punish_code`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of punish
-- ----------------------------
INSERT INTO `punish` VALUES ('1', '44201', '0', '2022-06-01 00:00:00.000000', 'T', NULL);
INSERT INTO `punish` VALUES ('2', '55101', '1', '2022-06-01 00:00:00.000000', 'T', NULL);
-- ----------------------------
-- Table structure for punish_levels
-- ----------------------------
DROP TABLE IF EXISTS `punish_levels`;
CREATE TABLE `punish_levels` (
`punish_code` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`desc` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`punish_code`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of punish_levels
-- ----------------------------
INSERT INTO `punish_levels` VALUES ('0', '警告');
INSERT INTO `punish_levels` VALUES ('1', '严重警告');
INSERT INTO `punish_levels` VALUES ('2', '记过');
INSERT INTO `punish_levels` VALUES ('3', '记大过');
INSERT INTO `punish_levels` VALUES ('4', '开除');
-- ----------------------------
-- Table structure for reward
-- ----------------------------
DROP TABLE IF EXISTS `reward`;
CREATE TABLE `reward` (
`rec_id` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '记录号(主关键字)',
`stu_id` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '学号(外部关键字)',
`levels` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '级别代码(外部关键字)',
`rec_time` datetime(6) NULL DEFAULT NULL COMMENT '记录时间',
`enable` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否生效(T、F)',
`desc` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '描述',
PRIMARY KEY (`rec_id`) USING BTREE,
INDEX `reward_ibfk_1`(`stu_id`) USING BTREE,
INDEX `reward_ibfk_2`(`levels`) USING BTREE,
CONSTRAINT `reward_ibfk_1` FOREIGN KEY (`stu_id`) REFERENCES `student` (`stu_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `reward_ibfk_2` FOREIGN KEY (`levels`) REFERENCES `reward_levels` (`reward_code`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of reward
-- ----------------------------
INSERT INTO `reward` VALUES ('1', '11101', '0', '2022-05-13 00:00:00.000000', 'T', NULL);
INSERT INTO `reward` VALUES ('2', '33201', '6', '2022-05-13 00:00:00.000000', 'T', NULL);
-- ----------------------------
-- Table structure for reward_levels
-- ----------------------------
DROP TABLE IF EXISTS `reward_levels`;
CREATE TABLE `reward_levels` (
`reward_code` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`desc` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`reward_code`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of reward_levels
-- ----------------------------
INSERT
数据库设计:
课程:课程编号,开课系别,教师编号,上课时间,教室,容纳学生数,先决条件
教师:教师编号,教师信息
学生:学生编号,学生信息
教授课程:课程编号,教师编号
上课:学生编号,课程编号
类图: