Java经典基础项目——《学生教务系统》立项需求说明书

学生-班级: 多对一 外键列加在学生表 clazz_id

学生-小组: 多对一 外键列加在学生表 gropu_id

学生-就业城市: 多对一 外键列加在学生表 city_id

学生-标签: 多对多 中间表(关系表)

班级-标签: 多对一 外键列加在班级表 clazz_id

班级-小组: 一对多 外键列加在小组表 group_id

五、功能需求

=============================================================================

1、用户登录/注册板块

(1)用户/管理员表设计(t_user)

| 字段 | 类型 | 主键 | 约束 | 备注 |

| — | — | — | — | — |

| id | int | 是 | 自增 | ID |

| username | Varchar(40) | | not null unique | 用户名(唯一) 使用Ajax实现 |

| password | Varchar(40) | | not null | 密码,使用Md5进行加密 |

| role | int | | not null | 角色: 0管理员1用户 |

| code | Varchar(100) | | | 激活码 |

| email | Varchar(50) | | not null | 邮箱,不可重复 |

| status | int | | | 激活状态:0 未激活,1激活,2无效 |

注意:邮箱用户注册后向注册用户发送邮箱,激活后可以使用该账户进行登录,否则注册失效

–用户表

create table t_user(

id int primary key auto_increment,

– 其中用户名通过Ajax注册查询用户名是否重复进行判断

username varchar(40) not null unique,

password varchar(40) not null,

–‘用户 0 管理员 1’,

role int not null,

–用户的邮箱!用于激活使用!

email varchar(50) not null,

–‘邮件激活码’,

code Varchar(100),

– ‘用户的激活状态 0 未激活 1 激活’,

status int

)

(2)登录功能实现

  1. 用户登录之前用户名必须是在注册时通过邮箱激活 后的,否则不能登录, 返回提示信息:用户名输入错误~~

  2. 如果用户名输入错误 返回提示信息:用户名输入错误~~

  3. 如果验证码输错 返回提示信息: 验证码输入错误~~~

  4. 如果用户名,验证码正确 返回提示信息: 密码输入错误~~

(3)注册功能实现

1.由于原型模型,没有设计“邮箱字段”,特加到了用户上面,具体开发中,邮箱放在用户下

  1. 注册进行提交后,会跳转到请去邮箱激活用户页面

3.激活成功后会跳转到登录

注意:输入用户的时候会通过Ajax实现用户是否存在验证,

如果用户名存在,会提醒你:“用户已经存在,请重新输入”

(4)用户板块功能流程图

  1. 注册页面进行注册

  2. 跳转到请求激活页面

  3. 邮箱页面请求激活

  4. 激活后跳转到已经激活页面

  5. 激活后跳转到登录页面

2、城市管理板块

(1)城市管理数据库(t_city)

| 字段 | 类型 | 主键 | 约束 | 备注 |

| — | — | — | — | — |

| c_id | int | 是 | 自增 | 编号 |

| c_name | varchar(20) | | not null unique | 名称 |

注意:其中Studnet表中有t_city,所以我们建表时最好把城市表放在第一个建的表

create table t_city(

id int primary key auto_increment ,

name varchar(20) not null unique

)

(2)城市功能示意图

(3)城市功能详情
  1. 添加城市:只需要添加城市名称,使用Ajax确定城市唯一

  2. 删除城市: 删除"城市"字段之前我们一定得把选中当前城市就业的学生删除,

或者让该学生修改修改就业城市(使用Ajax判断是否删除)

3、标签管理板块

(1)标签管理数据库设计(t_mark)

| 字段 | 类型 | 主键 | 约束 | 序号 |

| — | — | — | — | — |

| m_id | int | 是 | 自增 | 编号 |

| m_name | Varchar(20) | | 非空 | 名称 |

| m_time | date | | 非空 | 创建时间 |

| m_type | Varchar(20) | | 非空 | 标签类型 |

注:其中学生表,班级表里面均有标签,我们建表之前最好在学生表,班级表之前建学生表

–标签表

create table t_mark(

m_id int primary key auto_increment,

m_name varchar(20) not null,

m_time date,

m_type varchar(20)

)

(2)标签功能示意图

(3)标签功能详情
  1. 添加标签: 添加标签注意添加标签名称,标签类型(标签类型包含:学生/班级两种类型 )

  2. 删除标签: 删除标签名字字段之前之前,我们得把对应的学生表,班级表中选中相关标签的班级和班级信息进行修改或者删除

(使用Ajax判断是否删除)

4、班级管理板块

(1)班级数据库表(t_clazz)

| 字段 | 类型 | 主键 | 约束 | 序号 |

| — | — | — | — | — |

| c_id | int | 是 | 自增 | 班级ID |

| c_name | Varchar(20) | | | 班级名 |

| c_logoPath | Varchar(300) | | | 班级LOGO |

| c_mark_id | Varchar(20) | | 外键 | 标签序号 |

注:其中班级标签id是标签表的外键,建表后添加数据时, 一定要保证标签中有数据

–班级表

create table t_clazz(

c_id int primary key auto_increment,

c_name varchar(20) not null,

c_logoPath varchar(50),

c_mark_id int

)

(2)班级页面图

(3)班级功能详情
  1. 添加班级:班级的id,班级的标签(依赖于标签表),班级名,班级Logo(其中班级的Logo 通过存储路径的形式进行存储 )

  2. 删除班级: 删除标签时,需要先删除,学生,和小组里面包含的该班级信息

(使用Ajax判断是否删除)

5、小组管理模块

(1)小组数据库设计(t_group)

| 字段 | 类型 | 主键 | 约束 | 序号 |

| — | — | — | — | — |

| g_id | int | 是 | 自增 | 小组编号 |

| g_name | Varchar(20) | | 非空 | 小组名 |

| g_createdate | date | | | 小组的创建时间 |

| g_clazz_id | int | | | 班级id |

注意:其中班级id依赖于班级表,添加小组数据之前我们需要先添加班级的数据

–小组表

create table t_group(

g_id int primary key auto_increment,

g_name varchar(20) not null,

g_createdate date,

g_clazz_id int

)

(2)小组功能示意图

(3)小组功能详情
  1. 添加小组功能:会添加组名称,然后选择班级(小组是班级的外键,需要先建班级表才能创建小组表 )

(其中包含student外键:添加组名称时:本组学生的标签会自动增加到小组标签上,并且统计本组学生人数 )

  1. 删除小组功能: 删除小组之前需要将本小组的studnet删除或者修改带其他组,否则无法删除

(使用Ajax判断是否删除)

3.页面展示功能中的学生标签和学生人数,将从外键Student中获取,班级名称名班级表中获取

6、学生管理板块

(1)学生表数据库设计(t_student)

| 字段 | 类型 | 主键 | 约束 | 备注 |

| — | — | — | — | — |

| s_id | int | 是 | 自增 | 学号 |

| s_name | Varchar(20) | | 非空 | 姓名 |

| s_phone | Varchar(20) | | 非空 | 电话 |

| s_qq | Varchar(20) | | 非空 | QQ |

| s_age | int | | 非空 | 年龄 |

| s_birthday | date | | 非空 | 生日 |

| s_starts | Varchar(20) | | | 星座,可以为空,如果不填,默认为空 |

| s_attr | Varchar(20) | | | 生肖,可以为空,如果不填,默认为空 |

| s_clazz_id | int | | 非空,外键 | 班级id(外键),关联班级表 |

| s_group_id | int | | 非空,外键 | 小组id(外键),关联小组表 |

| s_city_id | int | | 非空,外键 | 就业城市id(外键),关联城市表 |

注意:学生表一定要 最后建学生表依赖于 城市表,班级表,标签表,小组表 ,并且需要这四个表有数据之后,我们才能添加数据

  • 学生标签关系表 t_sm_relation( 因为学生和标签为多对多关系,产生中间表 )

| 字段 | 类型 | 主键 | 约束 | 备注 |

| — | — | — | — | — |

| r_id | int | 是 | 自增 | 关系id |

| s_id | int | | 外键,非空 | 学生id |

| mark_id | int | | 外键,非空 | 标签id |

  • t_studnet学生表

– 学生表

create table t_student(

– 学生 id 主键 自增

id int primary key auto_increment,

– 学生姓名

name varchar(20) not null,

–电话

phone varchar(20),

–QQ

qq varchar(20),

–年龄

age int,

– 生日

s_birthday date,

–星座

s_starts varchar(20),

–生肖

s_attr varchar(20),

–班级id

s_clazz_id int,

–小组id

s_group_id int,

–城市id

s_city_id int,

–学生标签关系表id

r_id int

)

–t_sm_relation 学生标签关系表

create table t_sm_relation(

r_id int primary key auto_increment,

m_id int not null,

s_id int not null

)

(2)学生管理操作图

(3)学生信息功能详情
  1. 添加学生信息(城市表,班级表,标签表,小组表有数据之后才能添加

  2. 功能是修改学生,删除学生

  3. 展示内容(分页实现)

  4. 以Json形式下载信息

  5. 以QQ或者姓名或者手机号查询学生信息

六、数据库表

=========================================================================

1、教务管理系统数据库表

/==============================================================/

/* DBMS name: MySQL 5.0 */

/* Created on: 2021/10/31 11:47:31 */

/==============================================================/

drop table if exists m_s_fk;

drop table if exists t_city;

drop table if exists t_group;

drop table if exists t_mark;

drop table if exists t_studnet;

drop table if exists user;

/==============================================================/

/* Table: m_s_fk */

/==============================================================/

create table m_s_fk

(

m_id int not null auto_increment,

s_id int not null,

primary key (m_id, s_id)

);

alter table m_s_fk comment ‘一个标签可以被多个学生选择,一个学生可以选择多个标签’;

/==============================================================/

/* Table: t_city */

/==============================================================/

create table t_city

(

c_id int not null auto_increment,

c_name varchar(20) not null,

primary key (c_id)

);

alter table t_city comment ‘用于存储城市信息的实体’;

/==============================================================/

/* Table: t_group */

/==============================================================/

create table t_group

(

g_id int not null auto_increment,

clazz_id int,

g_name varchar(20) not null,

g_createdate date not null,

primary key (g_id)

);

alter table t_group comment ‘用于存储小组信息的实体’;

/==============================================================/

/* Table: t_mark */

/==============================================================/

create table t_mark

(

m_id int not null auto_increment,

m_name varchar(20) not null,

m_time date not null,

m_type varchar(20) not null,

primary key (m_id)

);

alter table t_mark comment ‘用于存储标签的实体’;

/==============================================================/

/* Table: t_clazz */

/==============================================================/

create table t_clazz

(

clazz_id int not null auto_increment,

m_id int not null,

c_name varchar(20) not null,

c_logo_path varchar(300) not null,

primary key (clazz_id)

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
(

clazz_id int not null auto_increment,

m_id int not null,

c_name varchar(20) not null,

c_logo_path varchar(300) not null,

primary key (clazz_id)

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-VxaQrDfb-1715761646968)]

[外链图片转存中…(img-l4RXNTNN-1715761646968)]

[外链图片转存中…(img-pSI95hmg-1715761646969)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值