首页 > 编程语言 >Java实现学生、班级、年级管理系统

Java实现学生、班级、年级管理系统

时间:2024-08-28 17:51:19浏览次数:7  
标签:COMMENT 班级 Java grade 实体 time 年级 NULL id

分层思想

  • DAO层:主要做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此
  • Service层:主要负责业务模块的应用逻辑设计,设计接口、实现类等,Service层的业务层具体要调用已经定义的DAO层接口
  • Controller层:负责具体的业务模块流程的控制,要调用Service层的接口来控制业务流程

具体步骤

1、 设置MySQL数据库
2、 创建Java项目并配置MySQL JDBC
3、 分层设计Java类
4、 实现Console输入与数据库操作

设置MySQL数据库

一、数据表设计

1、E-R图:实体-联系图,提供了表示实体类型、属性和联系的方法,用来描述现实世界和概念模型。
(1)实体类型:具有相同属性的实体必然具有共同的特征和性质。用实体名及描述它的各属性名,可以刻画出全部同质实体的共同特征和性质,称为实体类型。例如,学生(学号,姓名,性别,出生年月,所在院系,入学时间)就是一个实体型。在E-R图中用矩形表示,矩形框内写明实体名
(2)属性:实体所具有的某一特性,一个实体可由若干个属性来刻画。属性不能脱离实体,属性是相对实体而言的。在E-R图中用椭圆形表示,并用无向边将其与相应的实体连接起来
(3)联系:也称关系,信息世界中反映实体内部或实体之间的关联。实体内部的联系通常是指组成实体的各属性之间的联系;实体之间的联系通常是指不同实体集之间的联系。在E-R图中用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)

  • 一对多的关系怎么标1和n:先假想是其中的的一个实体,把描述的关系放联系名对面的边,我是一个班级,那么我有n个学生,所以n放对边,我是一个学生是吧,我只有一个班级,所以1放我对边。然后就完成了。

2、数据表设计
(1)学生表t_student

字段名 字段类型 备注
id bigint 学生id,学生的唯一标识符
class_id bigint 班级id,外键,关联到班级表的id
grade_id bigint 年级id,外键,关联到年级表的id
name varchar 姓名
gender tinyint 性别,1代表男性,2代表女性
age int 年龄
update_time datetime 修改时间
create_time datetime 创建时间
delete_flag tinyint 删除标记,1代表正常,2代表已删除

(2)班级表t_class

字段名 字段类型 备注
id bigint 班级id,班级的唯一标识符
grade_id bigint 年级id,外键,关联到年级表的id
name varchar 班级名称
update_time datetime 修改时间
create_time datetime 创建时间
delete_flag tinyint 删除标记,1代表正常,2代表已删除

(3)年级表t_grade

字段名 字段类型 备注
id bigint 年级id,年级的唯一标识符
name varchar 年级名称
update_time datetime 修改时间
create_time datetime 创建时间
delete_flag tinyint 删除标记,1代表正常,2代表已删除

3、MySQL建表语句
(1)年级表

CREATE TABLE `studentmanagement`.`t_grade` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '年级id',
  `name` VARCHAR(255) NOT NULL,
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `delete_flag` TINYINT NOT NULL DEFAULT 1 COMMENT '删除标记',
  PRIMARY KEY (`id`))
COMMENT = '年级表';
  • AUTO_INCREMENT属性用于自动增长主键。
  • DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP用于自动设置update_time和create_time字段的值。
  • FOREIGN KEY用于定义外键约束,确保数据的完整性。
  • ON DELETE CASCADE确保当被引用的记录被删除时,相关联的记录也会被删除。

(2)班级表

CREATE TABLE `studentmanagement`.`t_class` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '班级id',
  `grade_id` BIGINT NOT NULL,
  `name` VARCHAR(255) NOT NULL COMMENT '班级名称',
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `delete_flag` TINYINT NOT NULL DEFAULT 1 COMMENT '删除标记',
  PRIMARY KEY (`id`),
  INDEX `grade_id_idx` (`grade_id` ASC) VISIBLE,
  CONSTRAINT `grade_id`
    FOREIGN KEY (`grade_id`)
    REFERENCES `studentmanagement`.`t_grade` (`id`)
    ON DELETE CASCADE
    ON UPDATE NO ACTION)
COMMENT = '班级表';

(3)学生表

CREATE TABLE `studentmanagement`.`t_student` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '学生id',
  `class_id` BIGINT NOT NULL COMMENT '班级id',
  `grade_id` BIGINT NOT NULL COMMENT '年级id',
  `name` VARCHAR(255) NOT NULL COMMENT '学生姓名',
  `gender` TINYINT NOT NULL COMMENT '性别',
  `age` INT NOT NULL COMMENT '年龄',
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `delete_flag` TINYINT NOT NULL DEFAULT 1 COMMENT '删除标记',
  PRIMARY KEY (`id`),
  INDEX `grade_id_idx_2` (`grade_id` ASC) VISIBLE,
  INDEX `class_id_idx` (`class_id` ASC) VISIBLE,
  CONSTRAINT `class_id`
    FOREIGN KEY (`class_id`)
    REFERENCES `studentmanagement`.`t_class` (`id`)
    ON DELETE CASCADE
    ON UPDATE NO ACTION,
  CONSTRAINT `grade_id_2`
    FOREIGN KEY (`grade_id`)
    REFERENCES `studentmanagement`.`t_grade` (`id`)
    ON DELETE CASCADE
    ON UPDATE NO ACTION)
COMMENT = '学生表';
  • 遇到的问题:Error 1826: Duplicate foreign key constraint 错误,在一个数据库中建了若干张表,其中的外键索引重复了
  • 解决方法:设置新的索引名和外键名

DAO层

MySQLConnection类

  • 遇到的问题:找不到JDBC驱动类
  • 解决方法:新建的项目需要将驱动mysql-connector-java.jar包导入IDEA。在项目下新建文件夹lib,将jar粘贴到该目录下,右击该目录,点击Add as Library,导入成功。

标签:COMMENT,班级,Java,grade,实体,time,年级,NULL,id
From: https://www.cnblogs.com/shihongpin/p/18372119

相关文章

  • java.util.UUID
    概述Aclassthatrepresentsanimmutableuniversallyuniqueidentifier(UUID).一个不可变的通用的唯一标识符的classAUUIDrepresentsa128-bitvalue.一个uuid代表一个128位的值 UUID的版本UUID有多个版本,每个版本有不同的生成方式。常用的......
  • 【Java】多线程创建与管理 (实操图解)
    Java系列文章目录补充内容Windows通过SSH连接Linux第一章Linux基本命令的学习与Linux历史文章目录Java系列文章目录一、前言二、学习内容:三、问题描述四、解决方案:4.1Thread4.2Runnable五、总结:一、前言多线程入门二、学习内容:实现多线程效果三、问题......
  • Java基础-学习笔记15
    15泛型1.泛型泛型的好处编译时,检查添加元素的类型,提高了安全性减少了类型转换的次数,提高效率比如:ArrayListarr=newArrayList();在放入时,如果添加Dog类到arr里,编译器发现添加的类型不满足要求,就会报错;在取出时,直接取出Person类,就不用再转型使用。泛型的......
  • java增加注解实现异步执行任务
    1.首先启动类增加注解@EnableAsync2.增加configpackagecom.xxx.config;importorg.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;importorg.springframework.context.annotation.Configuration;importorg.springframework.scheduling.annotation.A......
  • Effective Java理解笔记系列-第1条-何时考虑用静态工厂方法替代构造器?
    为什么写这系列博客?在阅读《EffectiveJava》这本书时,我发现有许多地方需要仔细认真地慢慢阅读并且在必要时查阅相关资料才能彻底搞懂,相信有些读者在阅读此书时也有类似感受;同时,在解决疑惑的过程中,还存在着有些内容不容易查找、查找到的解答质量不高等问题,于是我决定把我阅读此书......
  • Java后端微服务架构下的配置动态刷新:Spring Cloud Bus
    Java后端微服务架构下的配置动态刷新:SpringCloudBus大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在微服务架构中,服务的配置管理是一个挑战,尤其是当配置需要动态更新时。SpringCloudBus提供了一种基于消息总线的配置刷新机制,允许配置更改在服务......
  • Java后端分布式系统的服务健康检查:Spring Boot Health
    Java后端分布式系统的服务健康检查:SpringBootHealth大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在分布式系统中,服务的健康检查是确保服务可用性和稳定性的关键环节。SpringBootHealth提供了一种标准化的方式来检查和管理服务的健康状态。服......
  • Java后端微服务架构下的服务依赖注入:Spring Cloud Context
    Java后端微服务架构下的服务依赖注入:SpringCloudContext大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在微服务架构中,服务间的依赖关系错综复杂,服务依赖注入是实现服务解耦和动态管理的关键技术。SpringCloudContext提供了一种机制,允许在Spring......
  • Java后端微服务架构下的服务链路追踪:Dapper与Pinpoint
    Java后端微服务架构下的服务链路追踪:Dapper与Pinpoint大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在微服务架构中,服务链路追踪是一种关键技术,用于监控和诊断服务间的调用关系和性能问题。Dapper和Pinpoint是两种流行的服务链路追踪系统。服务链......
  • Java后端分布式系统的服务发现:Consul与Eureka的比较
    Java后端分布式系统的服务发现:Consul与Eureka的比较大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在微服务架构中,服务发现是实现服务间通信的关键机制。Consul和Eureka是两个流行的服务发现工具,它们提供了不同的服务注册与发现机制。服务发现概述......