博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1500+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
更多项目地址 介绍 翰文编程CSDN博客 翰文编程-CSDN博客
文末下方有源码获取地址
4.2功能模块设计
本小节运用功能结构图来描述管理员具备的详细的功能,对管理员的功能结构图绘制结果如图4.1所示。管理员对论坛帖子,包括发布的帖子以及回复的帖子内容等进行管理,审核媒体发布的新闻,管理用户对新闻发布的留言,管理系统公告,管理媒体等。
图4.1 管理员功能结构图
本小节运用功能结构图来描述媒体具备的详细的功能,对媒体的功能结构图绘制结果如图4.2所示。媒体主要就是发布新闻,查看管理员审核的新闻信息,修改新闻,删除新闻,回复新闻留言,通过论坛功能进行主题讨论等。
图4.2 媒体功能结构图
本小节运用功能结构图来描述用户具备的详细的功能,对用户的功能结构图绘制结果如图4.3所示。用户主要就是查看新闻信息,查看系统推荐的新闻,对新闻进行留言,可以查看系统公告,可以通过论坛功能进行信息交流与讨论。
图4.3 用户功能结构图
4.3数据库设计
在系统后台选择数据库的时候,首先第一条就是要满足使用需要,只要满足使用需要,再对数据库的使用友好度和性能上进行分析。选择当前分布最广发的关系型数据库是完全能满足需要的,并且在数据的设计上也有完美的设计顺序,最重要的是符合人们的直观要求。
4.3.1数据库E-R图
下面主要是描述E-R图模型的。对于用户的需求,要具体化,比如有个角色需要有登录,那么最基本的设定必须有账号和密码,那么像姓名,性别其他的对象关系,其实是有从属关系的,通过这样具体化分析,可以得到数据的格式要求,并且能得到数据之间的直接关系。然后可以通过专业的Visio工具来进行E-R图的创建,遵守约定的E-R图表达方式,就可以对数据进行图标形式的描述,并且之间的关系更容易理解。
(1)图4.4即为媒体这个实体所拥有的属性值。
图4.4 媒体实体属性图
(2)图4.5即为新闻信息这个实体所拥有的属性值。
图4.5 新闻信息实体属性图
(3)图4.6即为用户这个实体所拥有的属性值。
图4.6 用户实体属性图
- 图4.7即为新闻留言这个实体所拥有的属性值。
图4.7 新闻留言实体属性图
(5)图4.8即为上面介绍的实体中存在的联系。
图4.8 实体间关系E-R图
4.3.2 数据库表结构
在程序开发的过程中,系统设计里面包含有数据库的设计,一般都在功能设计的后面进行数据设计,为什么有这样的顺序呢?那是有原因的。数据库设计不能凭空想象,必须符合数据的定义,而数据只是在使用过程之中产生,其实并没有具体化的表现,所以要把数据进行结构的整理,字段的规划。比如用户账号可能是中文或者英文,以及数字形式存在,更或者可能包含一些符号,那么账号字段的设计就只能是文本形式存在,不能是数据形式或者是时间形式存在,以此类推,数据表结构的设计就是在对系统的具体实现数据进行描述规划的一种行为。所以在这个环节尤其要注意,否则可能使用过程中会发现很多不可预料的问题。
对本系统的数据库的要求就是,要严格遵循数据实现原则,符合数据定义范式。对每个表都要进行具体分析,并且表之间的关系更应该有逻辑性,如果违反前面的要求,那么数据很有可能出现问题,所以要把数据之间的关系用E-R图形式画出来,这样理解起来更直观,更不容易出错,效率也更高。
表4.1 论坛表
字段 | 注释 | 类型 | 空 |
id (主键) | 主键 | int(11) | 否 |
forum_name | 帖子标题 | varchar(200) | 是 |
yonghu_id | 用户 | int(11) | 是 |
meiti_id | 媒体 | int(11) | 是 |
users_id | 管理员 | int(11) | 是 |
forum_content | 发布内容 | text | 是 |
super_ids | 父id | int(11) | 是 |
forum_state_types | 帖子状态 | int(11) | 是 |
insert_time | 发帖时间 | timestamp | 是 |
update_time | 修改时间 | timestamp | 是 |
create_time | 创建时间 | timestamp | 是 |
表4.2 系统公告表
字段 | 注释 | 类型 | 空 |
id (主键) | 主键 | int(11) | 否 |
gonggao_name | 公告名称 | varchar(200) | 是 |
gonggao_photo | 公告图片 | varchar(200) | 是 |
gonggao_types | 公告类型 | int(11) | 否 |
insert_time | 公告发布时间 | timestamp | 是 |
gonggao_content | 公告详情 | text | 是 |
create_time | 创建时间 | timestamp | 是 |
表4.3 媒体表
字段 | 注释 | 类型 | 空 |
id (主键) | 主键 | int(11) | 否 |
username | 账户 | varchar(200) | 是 |
password | 密码 | varchar(200) | 是 |
meiti_name | 媒体姓名 | varchar(200) | 是 |
meiti_photo | 头像 | varchar(255) | 是 |
sex_types | 性别 | int(11) | 是 |
meiti_phone | 联系方式 | varchar(200) | 是 |
meiti_email | 邮箱 | varchar(200) | 是 |
meiti_delete | 假删 | int(11) | 是 |
create_time | 创建时间 | timestamp | 是 |
表4.4 新闻信息表
字段 | 注释 | 类型 | 空 |
id (主键) | 主键 | int(11) | 否 |
meiti_id | 媒体 | int(11) | 是 |
news_name | 新闻标题 | varchar(200) | 是 |
news_types | 新闻类型 | int(11) | 是 |
news_photo | 新闻图片 | varchar(200) | 是 |
insert_time | 添加时间 | timestamp | 是 |
news_yesno_types | 新闻审核 | int(11) | 是 |
news_yesno_text | 审核结果 | text | 是 |
news_content | 新闻详情 | text | 是 |
create_time | 创建时间 | timestamp | 是 |
表4.5 新闻留言表
字段 | 注释 | 类型 | 空 |
id (主键) | 主键 | int(11) | 否 |
news_id | 新闻 | int(11) | 是 |
yonghu_id | 用户 | int(11) | 是 |
news_liuyan_text | 新闻内容 | text | 是 |
insert_time | 新闻时间 | timestamp | 是 |
reply_text | 回复内容 | text | 是 |
update_time | 回复时间 | timestamp | 是 |
create_time | 创建时间 | timestamp | 是 |
表4.6 管理员表
字段 | 注释 | 类型 | 空 |
id (主键) | 主键 | bigint(20) | 否 |
username | 用户名 | varchar(100) | 否 |
password | 密码 | varchar(100) | 否 |
role | 角色 | varchar(100) | 是 |
addtime | 新增时间 | timestamp | 否 |
表4.7 用户表
字段 | 注释 | 类型 | 空 |
id (主键) | 主键 | int(11) | 否 |
username | 账户 | varchar(200) | 是 |
password | 密码 | varchar(200) | 是 |
yonghu_name | 用户姓名 | varchar(200) | 是 |
yonghu_photo | 头像 | varchar(255) | 是 |
sex_types | 性别 | int(11) | 是 |
yonghu_phone | 联系方式 | varchar(200) | 是 |
yonghu_email | 邮箱 | varchar(200) | 是 |
yonghu_delete | 假删 | int(11) | 是 |
create_time | 创建时间 | timestamp | 是 |
第五章 系统实现
程序开发人员对功能具体实现后,都要描述自己编写的功能实现,一般都通过文字描述功能,实现用图片截图的形式出现,通过这样的设定,可以让更多得人明白系统的实现结果,达到更容易理解程序操作的目的。
5.1 管理员功能实现
5.1.1 系统公告管理
管理员点击导航栏的系统公告管理链接就进入系统公告管理界面。系统公告管理界面如图5.1所示。本功能允许管理员对系统公告的基本资料进行修改,添加,查询,删除。
图5.1 系统公告管理界面
5.1.2 媒体管理
管理员点击导航栏的媒体管理链接就进入媒体管理界面。媒体管理界面如图5.2所示。本功能允许管理员对媒体信息基础资料进行修改,查询,添加,删除。
图5.2 媒体管理界面
5.1.3 论坛管理
管理员点击导航栏的论坛管理链接就进入论坛管理界面。论坛管理界面如图5.3所示。本功能允许管理员查看论坛的帖子回复,修改论坛信息,查询论坛的帖子。
图5.3 论坛管理界面
5.2 媒体功能实现
5.2.1 新闻信息管理
媒体在新闻信息管理界面可以对新闻的信息进行管理。新闻信息管理界面如图5.4所示。媒体需要添加新闻,查询新闻,修改新闻等操作。媒体发布的新闻需要管理员审核。
图5.4 新闻信息管理界面
5.2.2 新闻留言管理
媒体点击导航栏的新闻留言管理链接就进入新闻留言管理界面。新闻留言管理界面如图5.5所示。本功能允许媒体回复用户对新闻发布的留言,让媒体根据新闻标题实现对新闻留言的查询。
图5.5 新闻留言管理界面
5.2.3 论坛管理
媒体点击导航栏的论坛管理链接就进入论坛管理界面。论坛管理界面如图5.6所示。本功能允许媒体新增论坛帖子,对自己的帖子进行跟踪,包括查看帖子评论,媒体回复帖子评论信息,删除回复的帖子等。
图5.6 论坛管理界面
主要代码
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
if(params.get("orderBy")==null || params.get("orderBy")==""){
params.put("orderBy","id");
}
PageUtils page = forumService.queryPage(params);
//字典表数据转换
List<ForumView> list =(List<ForumView>)page.getList();
for(ForumView c:list){
//修改对应字典表字段
dictionaryService.dictionaryConvert(c, request);
}
return R.ok().put("data", page);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id, HttpServletRequest request){
logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
ForumEntity forum = forumService.selectById(id);
if(forum !=null){
//entity转view
ForumView view = new ForumView();
BeanUtils.copyProperties( forum , view );//把实体数据重构到view中
//级联表
MeitiEntity meiti = meitiService.selectById(forum.getMeitiId());
if(meiti != null){
BeanUtils.copyProperties( meiti , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setMeitiId(meiti.getId());
}
//级联表
YonghuEntity yonghu = yonghuService.selectById(forum.getYonghuId());
if(yonghu != null){
BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setYonghuId(yonghu.getId());
}
//管理员用户表做特殊处理,防止和用户表账户姓名字段冲突
UsersEntity users = usersService.selectById(forum.getUsersId());
if(users != null){
view.setUsersId(users.getId());
view.setUusername(users.getUsername());
view.setUpassword(users.getPassword());
view.setUrole(users.getRole());
view.setUaddtime(users.getAddtime());
}
//修改对应字典表字段
dictionaryService.dictionaryConvert(view, request);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody ForumEntity forum, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,forum:{}",this.getClass().getName(),forum.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if(false)
return R.error(511,"永远不会进入");
else if("用户".equals(role))
forum.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
else if("媒体".equals(role))
forum.setMeitiId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
else if("管理员".equals(role))
forum.setUsersId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
Wrapper<ForumEntity> queryWrapper = new EntityWrapper<ForumEntity>()
.eq("forum_name", forum.getForumName())
.eq("yonghu_id", forum.getYonghuId())
.eq("meiti_id", forum.getMeitiId())
.eq("users_id", forum.getUsersId())
.eq("super_ids", forum.getSuperIds())
.eq("forum_state_types", forum.getForumStateTypes())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
ForumEntity forumEntity = forumService.selectOne(queryWrapper);
if(forumEntity==null){
forum.setInsertTime(new Date());
forum.setCreateTime(new Date());
forumService.insert(forum);
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
5.3 用户功能实现
5.3.1 新闻信息
用户点击导航栏的新闻信息链接就进入新闻信息界面。新闻信息界面如图5.7所示。本功能允许用户查看系统推荐的新闻信息,查看新闻详情,可以在新闻信息界面的下方留言区域发布新闻方面的留言。
图5.7 新闻信息界面
5.3.2 系统公告
用户点击导航栏的系统公告链接就进入系统公告界面。系统公告界面如图5.8所示。本功能允许用户对系统公告进行查询,查看所有的系统公告的内容等。
图5.8 系统公告界面
大家点赞、收藏、关注、评论啦 其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者