目录:
1、项目背景:
2、项目规划:
3、系统结构图:
4、系统架构图:
5、系统用例图:
6、业务流程图:
7、E-R图:
8、领域模型:
9、数据字典:
10、DDL建表语句:
11、数据流图:
1、项目背景:
如标题,新闻资讯CMS内容管理系统的设计与实现,主要功能包括浏览新闻、编辑发布、用户管理、评论回复、文章收藏、广告管理、分栏管理等等。
后台框架:Spring + Spring MVC + Mybatis
前端框架:JQuery + Bootstrap
数据库管理系统:MySQL
项目构建工具:Maven
服务器:Apache Tomcat
项目开发IDE:IntelliJ IDEA
虽然时间很紧,还是决定整个系统从0到1的重头来过,最新消息5月21日要上交最终版的论文,这下事情开始变得有趣了。
2、项目规划:
下面的图是给自己订的小计划,望坚持。
3、系统结构图:
图3.1 系统结构图
4、系统架构图:
图4.1 技术架构图
5、系统用例图:
用例用于描述一个完整的系统事件流程,其重点在于参与者与系统之间的交互而不是内在的系统活动,并对系统参与者产生有价值的可观测结果。
(1)关系(Relationship):
A)关联关系:
①定义:所有关系中最通用同时也是语义最弱的关系。包括聚合关系和组合关系。
②使用:参与者与用例之间。
③表示符号:实线箭头,箭头指向消息接收方
B)实现关系:
①定义:用来规定接口和实现接口的类或组件之间的关系。
②使用:用例之间。
③表示符号:虚线箭头和三角形,箭头指向接口。
C)泛化关系:
①定义:描绘了从特殊事物到一般事物之间的关系,即子类到父类之间的关系。
②使用:参与者之间或者用例之间。
③表示符号:实线箭头和三角形,箭头指向父用例。
D)依赖关系:
①定义:表示两个或多个模型元素之间语义上的依赖关系,即源用例依赖于目标用例,包括使用依赖、抽象依赖、授权依赖和绑定依赖。
②使用:用例之间。
③表示符号:虚线箭头,箭头指向被依赖的用例
E)扩展关系:
①定义:表示一个用例扩展另一个用例的功能。
②使用:用例之间。
③表示符号:虚线箭头和
字样,箭头指向基础用例。
(2)参与者(Actor):超级管理员用户、普通用户、讯息发布用户、游客用户
(3)用例(Use Case):
A)与超级管理员用户有关的用例:
文章管理:在系统中查看文章列表,审核发布的文章信息。
用户管理:在系统中查看用户信息列表,打印用户信息,审核讯息发布用户信息。
栏目管理:在系统中查看栏目列表,增加、修改、删除栏目信息。
广告管理:在系统中查看广告列表,增加、修改、删除广告信息。
B)与普通用户有关的用例:
栏目查看:在系统中查看栏目信息。
文章查看:在系统中查看文章具体内容信息。
广告查看:在系统中查看广告信息。
文章搜索:在系统中查询文章信息。
评论回复:在系统中对文章进行评论或对评论进行回复。
图片收藏:在系统中收藏新闻图片。
文章收藏:在系统中收藏文章
注册登录:在系统中进行登录注册,以验证其身份是否合法,是否具有相应权限。
C)与讯息发布用户有关的用例:
文章编辑:在系统中编辑文章信息。
注册登录:在系统中进行登录注册,以验证其身份是否合法,是否具有相应权限。
D)与游客用户有关的用例:
栏目查看:在系统中查看栏目信息。
文章查看:在系统中查看文章具体内容信息。
广告查看:在系统中查看广告信息。
文章搜索:在系统中查询文章信息。
图5.1 系统用例图
6、业务流程图:
准备进行的项目设计包括两部分,一部分是前端的新闻展示页面,另一部分是用于超级管理员用户进行管理的后台管理页面。
图6.1 前台展示系统业务流程图
图6.2 后台管理系统业务流程图
7、E-R图:
(1)实体(entity):数据模型中的数据对象,用矩形来表示。
弱实体(weak entity):该实体必须依赖于另一个实体存在,用双线矩形来表示。
(2)属性(attribute):数据对象所具有的属性,用椭圆形来表示。
按唯一性划分:
唯一属性(unique attribute):加下划线
非唯一属性(non-unique attribute)
按类别划分:
复合属性(composite attribute):多个属性的组合。如学生实体有名字属性,姓名属性又包含姓属性和名字属性,用椭圆形来表示。
派生属性(derived attribute):非持久性属性,从别的属性值或数据派生出来,用虚椭圆来表示。
可选属性(optional attribute):可以为null的属性,在椭圆的文字后用(O)来表示。
联系属性(relational attribute):表示多个实体之间的联系所具有的属性,用椭圆形来表示。
多值属性(multi-valued attribute):一个实体的某个属性有多个不同的取值,用双线椭圆形来表示。
(3)关系(relationship):表现数据对象之间的联系,用菱形来表示。
图7.1 E-R图
8、领域模型:
领域模型由PowerDesigner进行绘制,在绘制时,其中P:主键 F:外键 M:非空。
图8.1 领域模型
9、数据字典:
图9.1 广告表数据字典
图9.2 栏目表数据字典
图9.3 评论表数据字典
图9.4 用户表数据字典
图9.5 新闻表数据字典
图9.6 热闻表数据字典
10、DDL建表语句:
drop table if exists t_advertisement;
drop table if exists t_category;
drop table if exists t_comment;
drop table if exists t_hotspots;
drop table if exists t_news;
drop table if exists t_user;
/*==============================================================*/
/* Table: t_advertisement */
/*==============================================================*/
create table t_advertisement
(
advertisement_id int not null auto_increment,
user_id varchar(128),
creator_id varchar(128) not null,
advertisement_img varchar(256) not null,
advertisement_url varchar(256) not null,
clicks_count int not null,
create_time datetime not null,
update_time datetime not null,
primary key (advertisement_id)
);
/*==============================================================*/
/* Table: t_category */
/*==============================================================*/
create table t_category
(
category_id int not null auto_increment,
user_id varchar(128),
category_name varchar(128) not null,
creator_id varchar(128) not null,
category_pid int not null,
create_time datetime not null,
update_time datetime not null,
primary key (category_id)
);
/*==============================================================*/
/* Table: t_comment */
/*==============================================================*/
create table t_comment
(
comment_id int not null auto_increment,
user_id varchar(128) not null,
comment_parent_id int not null,
comment_content varchar(500) not null,
comment_state int not null,
news_id int not null,
create_time datetime not null,
primary key (comment_id)
);
/*==============================================================*/
/* Table: t_hotspots */
/*==============================================================*/
create table t_hotspots
(
hotspots_id int not null auto_increment,
news_id int not null,
news_score decimal(5,2) not null,
news_publishTime datetime not null,
update_time datetime not null,
primary key (hotspots_id)
);
/*==============================================================*/
/* Table: t_news */
/*==============================================================*/
create table t_news
(
news_id int not null auto_increment,
news_title varchar(128) not null,
news_pic varchar(200),
news_content varchar(5000) not null,
news_publishTime datetime not null,
news_readingNumber int not null,
news_commentCount int not null,
category_id int not null,
user_id varchar(128) not null,
update_time datetime not null,
primary key (news_id)
);
/*==============================================================*/
/* Table: t_user */
/*==============================================================*/
create table t_user
(
user_id varchar(128) not null,
user_name varchar(128) not null,
user_email varchar(256) not null,
user_type int not null,
user_password varchar(128) not null,
user_headPortrait varchar(256),
create_time datetime not null,
update_time datetime not null,
primary key (user_id)
);
alter table t_advertisement add constraint FK_fk_user_advert foreign key (user_id)
references t_user (user_id) on delete cascade on update cascade;
alter table t_category add constraint FK_fk_user_category foreign key (user_id)
references t_user (user_id) on delete cascade on update cascade;
alter table t_comment add constraint FK_fk_news_comment foreign key (news_id)
references t_news (news_id) on delete cascade on update cascade;
alter table t_comment add constraint FK_fk_user_comment foreign key (user_id)
references t_user (user_id) on delete cascade on update cascade;
alter table t_hotspots add constraint FK_t_hotspots_news foreign key (news_id)
references t_news (news_id) on delete cascade on update cascade;
alter table t_news add constraint FK_fk_news_category foreign key (category_id)
references t_category (category_id) on delete cascade on update cascade;
alter table t_news add constraint FK_fk_news_user foreign key (user_id)
references t_user (user_id) on delete cascade on update cascade;
11、数据流图:
数据流图(DFD,Data Flow Diagram):
(1)数据流图的四种基本成分:
A)数据对象:用带箭头的实线表示,箭头指向数据流动的方向。在编号之首冠以字母L表示。
B)外部实体:用矩形表示,系统之外的人或事物,包括数据源(来源)和数据池(目的地)。在编号之首冠以字母S表示。
C)加工处理:用椭圆表示,反应的是数据对象的变换,要编号。在编号之首冠以字母P表示。
D)数据存储:用双线表示,可以是数据文件或记录。在编号之首冠以字母F表示。
(2)方法:
A)确定系统的输入输出。
B)由外向内画系统的顶层数据流图
C)自顶向下逐层分解,给出分层数据流图。
(3)数据流的流向:
A)P->P
B)S->P
C)P->D
D)P->F
F)F->P
(4)顶层数据流图:说明系统的功能,指出I/O数据流,由外部实体划定系统的边界。
逐层画出数据流的过程就是自顶向下,逐层对加工处理进行分解的过程。
命名:DFD/0(顶层)、DFD/1(一层)、DFD/2(二层)
通常顶层只含有一个加工处理,顶层和一层只有一张图。以下的各层可能有多张图。
(5)加工处理编号说明:
A)每一个加工处理要有加工编号,加工编号由图号加上加工的顺序号组成,图号和加工的顺序号之间用圆点隔开。
B)基本加工处理的加工编号前要打一个*号。
新闻资讯CMS内容管理系统顶层数据流图:
图11.1 顶层数据流图
图11.2 按用户细分的顶层数据流图
对于超级管理员用户来说,其下层数据流图包括:
图11.3 超级管理员用户关于用户信息的数据流图
图11.4 超级管理员用户关于栏目信息的数据流图
图11.4 超级管理员用户关于新闻信息的数据流图
图11.5 超级管理员用户关于广告信息的数据流图
对于讯息发布用户来说,其下层数据流图包括:
图11.6 讯息发布用户关于登录注册信息的数据流图
图11.7 讯息发布用户关于新闻信息的数据流图
对于普通用户来说,其下层数据流图包括:
图11.8 普通用户关于广告信息的数据流图
图11.9 普通用户关于栏目信息的数据流图
图11.10 普通用户关于评论信息的数据流图
图11.11 普通用户关于新闻及热闻信息的数据流图
图11.12 普通用户关于登录注册信息的数据流图
对于游客用户来说,其下层数据流图包括:
图11.13 游客用户关于新闻及热闻信息的数据流图
图11.14 游客用户关于栏目信息的数据流图
图11.15 游客用户关于广告信息的数据流图
图11.16 游客用户关于评论信息的数据流图