博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1500+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
更多项目地址 介绍 翰文编程CSDN博客 翰文编程-CSDN博客
文末下方有源码获取地址
4.1系统的总体设计
本系统的整体开发过程是采用B/S结构模式而开展的,通过使用Java语言、MySQL数据库等技术设计系统相关的功能,功能设计完成后,可以通过使用浏览器,运行和使用系统。通过需求分析的相关内容,可以基本上确定系统的主要功能设计。基于WEB的文学网的使用对象主要分为管理员角色和用户角色,主要的功能需求包括用户管理、小说信息管理、阅读记录管理等。系统总体功能设计图如图4-1所示。
图4-1系统总体功能设计图
4.2数据库设计
4.2.1概念设计
MySQL数据库是免费的面向使用对象,其源代码对外也是公开发布的,也就是说设计人员在经过源代码设计人员的同意之后,就可以根据自身的一定需求,对相关代码进行使用和修改,由此极大的节约了软件开发成本[15]。而且,MySQL数据库占用极少的内存资源,系统与用户之间的交互性强,响应速度和运行速度也比较快,非常适用于中小型系统的开发和设计。从一定意义上说,MySQL数据库的使用价值是非常高的,其相关的语法语义也比较容易理解和掌握,因此本人使用MySQL数据库完成对相关的系统数据的存储和管控。数据库设计过程主要有两个阶段,分为概念设计和逻辑设计。概念设计是逻辑设计的基础依据,逻辑设计又是概念设计的具体实现。
概念设计阶段主要目的是将真实世界的工作任务转化为抽象世界的概念模型,通过设计实体-联系图(E-R图)的方式,来表示实际生活中的工作功能中的实体和属性[16]。这样一来,在文学网站中,就可以对每一个工作流程进行设计,进而实现对相关的用户信息传递和共享,并由此构建出与系统有关的实体及其属性。本阶段的设计内容是将现实世界中用户对系统的相关功能需求,描述成为便于数据库设计人员理解的概念模型。系统的各实体E-R图设计如图4-2、图4-3、图4-4、图4-5、图4-6、图4-7、图4-8、图4-9、图4-10、图4-11所示,总体E-R图设计如图4-12所示。
图4-2管理员信息E-R图
图4-3用户信息E-R图
图4-4字典信息E-R图
图4-5小说信息E-R图
图4-6章节信息E-R图
图4-7作者信息E-R图
图4-8阅读记录信息E-R图
图4-9书架信息E-R图
图4-10小说留言信息E-R图
图4-11小说购买信息E-R图
图4-12系统的总体E-R图
4.2.2逻辑设计
逻辑设计阶段主要的目的是将概念设计中已经构建好的概念数据模型,转变成数据库能够识别和存储的二维数据表格的形式[17]。本阶段的设计内容是数据库设计人员将理解好的概念模型,描述成为MySQL数据库能够识别的数据表格。本阶段具体的实现方式是将上一阶段设计的E-R图转变成方便数据库进行存储和管理的数据表格,具体的数据表格设计如表4-1、表4-2、表4-3、表4-4、表4-5、4-6所示。
表4-1管理员信息表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
1 |
id |
Int |
编号 |
否 |
2 |
username |
String |
用户名 |
是 |
3 |
password |
String |
密码 |
是 |
4 |
role |
String |
角色 |
是 |
5 |
addtime |
Date |
新增时间 |
是 |
表4-2用户信息表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
1 |
id |
Int |
编号 |
否 |
2 |
username |
String |
账户 |
是 |
3 |
password |
String |
密码 |
是 |
4 |
yonghu_name |
String |
用户姓名 |
是 |
5 |
yonghu_phone |
String |
用户手机号 |
是 |
6 |
yonghu_id_number |
String |
用户身份证号 |
是 |
7 |
yonghu_photo |
String |
用户头像 |
是 |
8 |
sex_types |
Integer |
性别 |
是 |
9 |
yonghu_email |
String |
电子邮箱 |
是 |
10 |
new_money |
BigDecimal |
余额 |
是 |
11 |
create_time |
Date |
创建时间 |
是 |
表4-3字典信息表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
1 |
id |
Int |
编号 |
否 |
2 |
dic_code |
String |
字段 |
是 |
3 |
dic_name |
String |
字段名 |
是 |
4 |
code_index |
Integer |
编码 |
是 |
5 |
index_name |
String |
编码名字 |
是 |
6 |
super_id |
Integer |
父字段编号 |
是 |
7 |
beizhu |
String |
备注 |
是 |
8 |
create_time |
Date |
创建时间 |
是 |
表4-4小说信息表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
1 |
id |
Int |
编号 |
否 |
2 |
zuozhe_id |
Integer |
作者 |
是 |
3 |
xiaoshuo_name |
String |
小说名称 |
是 |
4 |
xiaoshuo_photo |
String |
小说照片 |
是 |
5 |
xiaoshuo_types |
Integer |
小说类型 |
是 |
6 |
xiaoshuo_old_money |
BigDecimal |
小说原价 |
是 |
7 |
xiaoshuo_new_ money |
BigDecimal |
现价/积分 |
是 |
8 |
xiaoshuo_clicknum |
Integer |
点击次数 |
是 |
9 |
zan_number |
Integer |
赞数量 |
是 |
10 |
cai_number |
Integer |
踩数量 |
是 |
11 |
xiaoshuo_content |
String |
小说介绍 |
是 |
12 |
shangxia_types |
Integer |
是否上架 |
是 |
13 |
xiaoshuo_delete |
Integer |
逻辑删除 |
是 |
14 |
create_time |
Date |
创建时间 |
是 |
表4-5章节信息表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
1 |
id |
Int |
编号 |
否 |
2 |
xiaoshuo_id |
Integer |
小说 |
是 |
3 |
zhangjie_name |
String |
章节名称 |
是 |
4 |
zhangjie_content |
String |
章节内容 |
是 |
5 |
zhangjie_delete |
Integer |
逻辑删除 |
是 |
6 |
create_time |
Date |
创建时间 |
是 |
表4-6作者信息表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
1 |
id |
Int |
编号 |
否 |
2 |
username |
String |
账户 |
是 |
3 |
password |
String |
密码 |
是 |
4 |
zuozhe_name |
String |
作者姓名 |
是 |
5 |
zuozhe_phone |
String |
作者手机号 |
是 |
6 |
zuozhe_photo |
String |
作者头像 |
是 |
7 |
sex_types |
Integer |
性别 |
是 |
8 |
zuozhe_email |
String |
电子邮箱 |
是 |
9 |
new_money |
BigDecimal |
余额 |
是 |
10 |
create_time |
Date |
创建时间 |
是 |
表4-7阅读记录信息表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
1 |
id |
Int |
编号 |
否 |
2 |
xiaoshuo_id |
Integer |
小说 |
是 |
3 |
yonghu_id |
Integer |
用户 |
是 |
4 |
yuedujilu_content |
String |
详情 |
是 |
5 |
insert_time |
Date |
阅读时间 |
是 |
6 |
create_time |
Date |
创建时间 |
是 |
表4-8书架信息表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
1 |
id |
Int |
编号 |
否 |
2 |
xiaoshuo_id |
Integer |
小说 |
是 |
3 |
yonghu_id |
Integer |
用户 |
是 |
4 |
xiaoshuo_collection_types |
Integer |
类型 |
是 |
5 |
insert_time |
Date |
加入时间 |
是 |
6 |
create_time |
Date |
创建时间 |
是 |
表4-9小说留言信息表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
1 |
id |
Int |
编号 |
否 |
2 |
xiaoshuo_id |
Integer |
小说 |
是 |
3 |
yonghu_id |
Integer |
用户 |
是 |
4 |
xiaoshuo_liuyan_text |
String |
留言内容 |
是 |
5 |
insert_time |
Date |
留言时间 |
是 |
6 |
reply_text |
String |
回复内容 |
是 |
7 |
update_time |
Date |
回复时间 |
是 |
8 |
create_time |
Date |
创建时间 |
是 |
表4-10小说购买信息表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
1 |
id |
Int |
编号 |
否 |
2 |
xiaoshuo_order_uuid_number |
String |
流水号 |
是 |
3 |
xiaoshuo_id |
Integer |
小说 |
是 |
4 |
yonghu_id |
Integer |
用户 |
是 |
5 |
insert_time |
Date |
购买时间 |
是 |
6 |
create_time |
Date |
创建时间 |
是 |
第五章 系统实现
5.1个人中心
个人中心模块设计的主要目的是方便用户对密码等个人信息进行管理,用户可以根据自己的实际需求,选择每隔一段时间,更新个人账户的用户名和密码,修改密码界面设计如图5-1所示,个人信息界面如图5-2所示。
图5-1修改密码界面
图5-2个人信息界面
5.2用户管理
用户管理模块设计的主要目的是方便管理用户对相关的用户信息进行管理,管理用户可以选择查看用户的联系电话,修改用户的真实姓名,用户管理界面设计如图5-3所示。
图5-3用户管理界面
5.3作者管理
作者管理模块设计的主要目的是方便管理用户对相关的作者信息进行管理,管理用户可以选择查看作者的详细内容,修改作者信息记录,删除失效的作者信息记录,作者管理界面设计如图5-4所示。
图5-4作者管理界面
5.4小说管理
小说管理模块设计的主要目的是方便管理用户对相关的小说、小说留言、书架、小说购买信息进行管理,管理用户可以选择查看小说、小说留言、书架、小说购买信息的详细内容,修改小说、小说留言、书架、小说购买信息记录,删除失效的小说、小说留言、书架、小说购买信息记录,小说管理界面设计如图5-5所示,小说留言管理界面设计如图5-6所示,书架管理界面设计如图5-7所示,小说购买管理界面设计如图5-8所示。
图5-5小说管理界面
主要代码
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
String role = String.valueOf(request.getSession().getAttribute("role"));
if(false)
return R.error(511,"永不会进入");
else if("用户".equals(role))
params.put("yonghuId",request.getSession().getAttribute("userId"));
else if("作者".equals(role))
params.put("zuozheId",request.getSession().getAttribute("userId"));
params.put("xiaoshuoDeleteStart",1);params.put("xiaoshuoDeleteEnd",1);
if(params.get("orderBy")==null || params.get("orderBy")==""){
params.put("orderBy","id");
}
PageUtils page = xiaoshuoService.queryPage(params);
//字典表数据转换
List<XiaoshuoView> list =(List<XiaoshuoView>)page.getList();
for(XiaoshuoView 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);
XiaoshuoEntity xiaoshuo = xiaoshuoService.selectById(id);
if(xiaoshuo !=null){
//entity转view
XiaoshuoView view = new XiaoshuoView();
BeanUtils.copyProperties( xiaoshuo , view );//把实体数据重构到view中
//级联表
ZuozheEntity zuozhe = zuozheService.selectById(xiaoshuo.getZuozheId());
if(zuozhe != null){
BeanUtils.copyProperties( zuozhe , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setZuozheId(zuozhe.getId());
}
//修改对应字典表字段
dictionaryService.dictionaryConvert(view, request);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody XiaoshuoEntity xiaoshuo, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,xiaoshuo:{}",this.getClass().getName(),xiaoshuo.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if(false)
return R.error(511,"永远不会进入");
else if("作者".equals(role))
xiaoshuo.setZuozheId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
Wrapper<XiaoshuoEntity> queryWrapper = new EntityWrapper<XiaoshuoEntity>()
.eq("zuozhe_id", xiaoshuo.getZuozheId())
.eq("xiaoshuo_name", xiaoshuo.getXiaoshuoName())
.eq("xiaoshuo_types", xiaoshuo.getXiaoshuoTypes())
.eq("xiaoshuo_clicknum", xiaoshuo.getXiaoshuoClicknum())
.eq("zan_number", xiaoshuo.getZanNumber())
.eq("cai_number", xiaoshuo.getCaiNumber())
.eq("shangxia_types", xiaoshuo.getShangxiaTypes())
.eq("xiaoshuo_delete", xiaoshuo.getXiaoshuoDelete())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
XiaoshuoEntity xiaoshuoEntity = xiaoshuoService.selectOne(queryWrapper);
if(xiaoshuoEntity==null){
xiaoshuo.setXiaoshuoClicknum(1);
xiaoshuo.setShangxiaTypes(1);
xiaoshuo.setXiaoshuoDelete(1);
xiaoshuo.setCreateTime(new Date());
xiaoshuoService.insert(xiaoshuo);
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
图5-6小说留言管理界面
图5-7书架管理界面
图5-8小说购买管理界面
大家点赞、收藏、关注、评论啦 其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者