新闻资讯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、项目规划:

下面的图是给自己订的小计划,望坚持。
图2.1 项目规划表
3、系统结构图:




图3.1 系统结构图

4、系统架构图:




图4.1 技术架构图

5、系统用例图:



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



(1)关系(Relationship):



A)关联关系:



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



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



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



B)实现关系:



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



②使用:用例之间。



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



C)泛化关系:



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



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



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



D)依赖关系:



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



②使用:用例之间。



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



E)扩展关系:



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



②使用:用例之间。



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



(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 游客用户关于评论信息的数据流图

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信