新闻资讯CMS内容管理系统的设计与实现(一)

新闻资讯CMS内容管理系统的设计与实现(一)

目录:

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、项目规划:

下面的图是给自己订的小计划,望坚持。

新闻资讯CMS内容管理系统的设计与实现(一)_第1张图片
图2.1 项目规划表

3、系统结构图:

新闻资讯CMS内容管理系统的设计与实现(一)_第2张图片

图3.1 系统结构图

4、系统架构图:

新闻资讯CMS内容管理系统的设计与实现(一)_第3张图片

图4.1 技术架构图

5、系统用例图:

用例用于描述一个完整的系统事件流程,其重点在于参与者与系统之间的交互而不是内在的系统活动,并对系统参与者产生有价值的可观测结果。

(1)关系(Relationship):

A)关联关系:

①定义:所有关系中最通用同时也是语义最弱的关系。包括聚合关系和组合关系。

②使用:参与者与用例之间。

③表示符号:实线箭头,箭头指向消息接收方

B)实现关系:

①定义:用来规定接口和实现接口的类或组件之间的关系。

②使用:用例之间。

③表示符号:虚线箭头和三角形,箭头指向接口。

C)泛化关系:

①定义:描绘了从特殊事物到一般事物之间的关系,即子类到父类之间的关系。

②使用:参与者之间或者用例之间。

③表示符号:实线箭头和三角形,箭头指向父用例。

D)依赖关系:

①定义:表示两个或多个模型元素之间语义上的依赖关系,即源用例依赖于目标用例,包括使用依赖、抽象依赖、授权依赖和绑定依赖。

②使用:用例之间。

③表示符号:虚线箭头,箭头指向被依赖的用例

E)扩展关系:

①定义:表示一个用例扩展另一个用例的功能。

②使用:用例之间。

③表示符号:虚线箭头和字样,箭头指向基础用例。

(2)参与者(Actor):超级管理员用户、普通用户、讯息发布用户、游客用户

(3)用例(Use Case):

A)与超级管理员用户有关的用例:

文章管理:在系统中查看文章列表,审核发布的文章信息。

用户管理:在系统中查看用户信息列表,打印用户信息,审核讯息发布用户信息。

栏目管理:在系统中查看栏目列表,增加、修改、删除栏目信息。

广告管理:在系统中查看广告列表,增加、修改、删除广告信息。

B)与普通用户有关的用例:

栏目查看:在系统中查看栏目信息。

文章查看:在系统中查看文章具体内容信息。

广告查看:在系统中查看广告信息。

文章搜索:在系统中查询文章信息。

评论回复:在系统中对文章进行评论或对评论进行回复。

图片收藏:在系统中收藏新闻图片。

文章收藏:在系统中收藏文章

注册登录:在系统中进行登录注册,以验证其身份是否合法,是否具有相应权限。

C)与讯息发布用户有关的用例:

文章编辑:在系统中编辑文章信息。

注册登录:在系统中进行登录注册,以验证其身份是否合法,是否具有相应权限。

D)与游客用户有关的用例:

栏目查看:在系统中查看栏目信息。

文章查看:在系统中查看文章具体内容信息。

广告查看:在系统中查看广告信息。

文章搜索:在系统中查询文章信息。

新闻资讯CMS内容管理系统的设计与实现(一)_第4张图片

图5.1 系统用例图

6、业务流程图:

准备进行的项目设计包括两部分,一部分是前端的新闻展示页面,另一部分是用于超级管理员用户进行管理的后台管理页面。

新闻资讯CMS内容管理系统的设计与实现(一)_第5张图片

图6.1 前台展示系统业务流程图

新闻资讯CMS内容管理系统的设计与实现(一)_第6张图片

图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):表现数据对象之间的联系,用菱形来表示。

新闻资讯CMS内容管理系统的设计与实现(一)_第7张图片

图7.1 E-R图

8、领域模型:

领域模型由PowerDesigner进行绘制,在绘制时,其中P:主键 F:外键 M:非空。

新闻资讯CMS内容管理系统的设计与实现(一)_第8张图片

图8.1 领域模型

9、数据字典:

新闻资讯CMS内容管理系统的设计与实现(一)_第9张图片

图9.1 广告表数据字典

新闻资讯CMS内容管理系统的设计与实现(一)_第10张图片

图9.2 栏目表数据字典

新闻资讯CMS内容管理系统的设计与实现(一)_第11张图片

图9.3 评论表数据字典

新闻资讯CMS内容管理系统的设计与实现(一)_第12张图片

图9.4 用户表数据字典

新闻资讯CMS内容管理系统的设计与实现(一)_第13张图片

图9.5 新闻表数据字典

新闻资讯CMS内容管理系统的设计与实现(一)_第14张图片

图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内容管理系统顶层数据流图:

新闻资讯CMS内容管理系统的设计与实现(一)_第15张图片

图11.1 顶层数据流图

新闻资讯CMS内容管理系统的设计与实现(一)_第16张图片

图11.2 按用户细分的顶层数据流图

对于超级管理员用户来说,其下层数据流图包括:

新闻资讯CMS内容管理系统的设计与实现(一)_第17张图片

图11.3 超级管理员用户关于用户信息的数据流图

新闻资讯CMS内容管理系统的设计与实现(一)_第18张图片

图11.4 超级管理员用户关于栏目信息的数据流图

新闻资讯CMS内容管理系统的设计与实现(一)_第19张图片

图11.4 超级管理员用户关于新闻信息的数据流图

新闻资讯CMS内容管理系统的设计与实现(一)_第20张图片

图11.5 超级管理员用户关于广告信息的数据流图

对于讯息发布用户来说,其下层数据流图包括:

新闻资讯CMS内容管理系统的设计与实现(一)_第21张图片

图11.6 讯息发布用户关于登录注册信息的数据流图

新闻资讯CMS内容管理系统的设计与实现(一)_第22张图片

图11.7 讯息发布用户关于新闻信息的数据流图

对于普通用户来说,其下层数据流图包括:

新闻资讯CMS内容管理系统的设计与实现(一)_第23张图片

图11.8 普通用户关于广告信息的数据流图

新闻资讯CMS内容管理系统的设计与实现(一)_第24张图片

图11.9 普通用户关于栏目信息的数据流图

新闻资讯CMS内容管理系统的设计与实现(一)_第25张图片

图11.10 普通用户关于评论信息的数据流图

新闻资讯CMS内容管理系统的设计与实现(一)_第26张图片

图11.11 普通用户关于新闻及热闻信息的数据流图

新闻资讯CMS内容管理系统的设计与实现(一)_第27张图片

图11.12 普通用户关于登录注册信息的数据流图

对于游客用户来说,其下层数据流图包括:

新闻资讯CMS内容管理系统的设计与实现(一)_第28张图片

图11.13 游客用户关于新闻及热闻信息的数据流图

新闻资讯CMS内容管理系统的设计与实现(一)_第29张图片

图11.14 游客用户关于栏目信息的数据流图

新闻资讯CMS内容管理系统的设计与实现(一)_第30张图片

图11.15 游客用户关于广告信息的数据流图

新闻资讯CMS内容管理系统的设计与实现(一)_第31张图片

图11.16 游客用户关于评论信息的数据流图

你可能感兴趣的:(Java,Web)