=========================================================================
1、功能划分
本系统总体功能上是B/S 结构的Windows应用程序!
2、项目整体功能框架
3、概念数据模型CMD
CMD是实体与实体之间关系的模型(使用PdShell 设计)
-
表的数量 和模块有关 6表
-
确认字段
用户表:id 用户名 密码 角色
城市表:id 地址名
标签表: id 标签名,标签创建时间,标签类型
班级表: id 班级名称,班级Logo(图片路径)
小组表: id 小组名称,创建时间
学生表: id 名字,生日,QQ,电话,星座,生肖
- 确认关系
关系:
学生-班级: 多对一 外键列加在学生表 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)登录功能实现
-
用户登录之前用户名必须是在注册时通过邮箱激活 后的,否则不能登录, 返回提示信息:用户名输入错误~~
-
如果用户名输入错误 返回提示信息:用户名输入错误~~
-
如果验证码输错 返回提示信息: 验证码输入错误~~~
-
如果用户名,验证码正确 返回提示信息: 密码输入错误~~
(3)注册功能实现
1.由于原型模型,没有设计“邮箱字段”,特加到了用户上面,具体开发中,邮箱放在用户下
- 注册进行提交后,会跳转到请去邮箱激活用户页面
3.激活成功后会跳转到登录
注意:输入用户的时候会通过Ajax实现用户是否存在验证,
如果用户名存在,会提醒你:“用户已经存在,请重新输入”
(4)用户板块功能流程图
-
注册页面进行注册
-
跳转到请求激活页面
-
邮箱页面请求激活
-
激活后跳转到已经激活页面
-
激活后跳转到登录页面
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)城市功能详情
-
添加城市:只需要添加城市名称,使用Ajax确定城市唯一
-
删除城市: 删除"城市"字段之前我们一定得把选中当前城市就业的学生删除,
或者让该学生修改修改就业城市(使用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)标签功能详情
-
添加标签: 添加标签注意添加标签名称,标签类型(标签类型包含:学生/班级两种类型 )
-
删除标签: 删除标签名字字段之前之前,我们得把对应的学生表,班级表中选中相关标签的班级和班级信息进行修改或者删除
(使用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)班级功能详情
-
添加班级:班级的id,班级的标签(依赖于标签表),班级名,班级Logo(其中班级的Logo 通过存储路径的形式进行存储 )
-
删除班级: 删除标签时,需要先删除,学生,和小组里面包含的该班级信息
(使用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)小组功能详情
- 添加小组功能:会添加组名称,然后选择班级(小组是班级的外键,需要先建班级表才能创建小组表 )
(其中包含student外键:添加组名称时:本组学生的标签会自动增加到小组标签上,并且统计本组学生人数 )
- 删除小组功能: 删除小组之前需要将本小组的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 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)学生信息功能详情
-
添加学生信息(城市表,班级表,标签表,小组表有数据之后才能添加 )
-
功能是修改学生,删除学生
-
展示内容(分页实现)
-
以Json形式下载信息
-
以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,
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
====================================================*/
create table t_group
(
g_id int not null auto_increment,
clazz_id int,
g_name varchar(20) not null,
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-yf9uiJSk-1715761616813)]
[外链图片转存中…(img-H64ceCz8-1715761616814)]
[外链图片转存中…(img-34ZjOky0-1715761616814)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!