ssm+vue基于WEB的文学网的设计与实现

博主介绍:专注于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小说购买管理界面

大家点赞、收藏、关注、评论啦  其他的定制服务  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

猜你喜欢

转载自blog.csdn.net/qq_41221322/article/details/143264320
今日推荐