JAVAWEB技术的校园原创网络小说平台系统的实现

在该系统的设计中,将大部分Java代码放在src文件夹中并且划分出多个不同的包,访问数据的控制类在control.action包中,单元测试在junit.test包中,工具类在util包中,视图模型放在model包中,接口类放在business.dao中,实现类放在business.impl包中。项目包结构如下图所示:

图5-1 用户端项目包结构图

表5-1 项目结构说明表

包名(结构层次)

说明

business.basic

数据连接、访问,管理数据库连接类和访问基类

business.dao

业务逻辑设计层,管理业务逻辑设计接口

business.impl

业务逻辑实现层,管理业务逻辑设计的实现类

business.factory

业务逻辑的工厂层,管理业务逻辑的组装工厂类

control.action

业务逻辑控制层,管理用于与页面进行交互的控制类

model

实体层,管理表实体类和视图实体类              

servlet.common

公共控制类:验证码、上传控制类

util

工具类包,管理系统中的工具类

common.properties

公共类包,管理公共类

junit.test

单元测试包,管理单元测试类

项目中的命名规则:

项目中的项目名称、类名采用驼峰命名法,使用与项目、类相关的英文单词命名。如项目名:NovelWeb,类名:LoginAction

项目中的类中的变量名和方法名若只有一个单词则采用小写,如:login;若由多个单词组成,除第一个单词外,其余单词首字母大写。如:addNovel

项目中的类中如果使用到常量,那么常量名全大写。如:SUCCESS

    1. 系统中的命名规范

5.2.1 数据库的命名规范

数据库的命名使用和项目名称相关的一个单词或多个单词,并且单词之间的首字母大写+“DB”完成,如NovelDB。

数据库中表的命名用“T_”+与表相关的单词首字母大写完成,如果有多个单词组成,则每个单词首字母大写,如T_User。

数据库中视图的命名采用“V_” +与视图相关的单词首字母大写完成,如果有多个单词组成,单词之间首字母大写,如V_NovelContent。

5.2.2 项目中文件的命名规范

项目中文件名命名规范如下表所示:

表5-2 文件命名规范表

标识符

说明

T实体类名

表实体类,如T_User表的实体类为TUser

V实体类名

视图实体类,如V_User视图的实体类为VUser

业务逻辑接口类名DAO

业务逻辑接口类,如UserDAO

业务逻辑类名Impl

业务逻辑实现类,如UserDAOImpl

控制类类名controller

业务控制类,如学生管理的控制类LoginController

Jsp文件

动态页面文件,如Login.jsp

    1. 数据库详细设计
      1. 术语定义

以“T_”定义表(table)

以“V_” 定义视图(view)

以“up_”定义存储过程(userprocedure)

以“utri_”定义触发器(usertrigger)

以“pk_”定义表中列的主键约束

以“fk_”定义表中列的外键约束

以“ck_”定义表中列的check约束

以“def_”定义表中列的默认约束

      1. 数据库设计中的标识符

表5-3 数据库设计中的标识符

标识符

说明

DBMS

数据库管理系统,本系统采用Microsoft的sqlserver 2012 企业版

表 Table

数据最小存储结构

字段

表中的列定义

主键

唯一约束性和非空约束性,和其他表中的数据进行关联

约束

确保数据符合某种数据完整性

自动编号

确保主键值不出现重复

视图

虚表,展现基本表中的数据,在一定程度上提供逻辑独立

存储过程

存储在数据库内,由应用程序调用执行,可声明变量和执行其他编程

触发器

管理数据库,为响应一个特殊表格中的某些事件而自动执行的程序代码

数据库用户

可对数据库创建对象,操作数据库,执行存储过程等

ER

实体联系图,提供了表示实体类型、属性和联系的方法,用图形符号表示

      1. 约定

对数据库中的设计约定如表5-4所示

表5-4 数据库中的设计约定

对象名

设计约定

数据库名

系统名称+ DB, 如:NovelDB

数据文件名

系统名称+ _data + 序号,如:UserManage_data1.mdf

表名

以T_作为开头,如T_User

字段名

小写字母开头,单词之间不大写,不允许使用包括”_”的一切符号

主键名

简洁且唯一,如id

check约束名

限制列中的值的范围,右键添加约束

默认约束名

在视图的相应字段中选择常规属性默认值设置

外键约束名

右键字段然后选择关系设计

索引名

加快检索表中数据

视图名

V_ +视图名 如V_User

存储过程名

 [拥有者.]存储过程名[;程序编号]

触发器名

短线连接,如 trigger_name

      1. 数据库表结构设计

T_User用户表

表5-5 用户表

列名

列注释

数据类型

非空约束

约束

userid

用户账号

Varchar(50)

not null

主键

pwd

用户密码

Varcahr(50)

not null

 

nickname

用户昵称

Varchar(50)

not null

 

usertype

用户类型

int

not null

外键

userphoto

用户头像

int

 

外键

signature

用户简介

Varcahr(1000)

 

 

realname

作者真实姓名

Varchar(50)

 

 

mobile

联系方式

Varchar(50)

 

 

agend

性别

varcahr(2)

 

 

bookbean

书豆

money

 

 

novelcount

小说发表数

int

 

 

novelscan

小说浏览量

int

 

 

status

停用/启用

bit

 

 

createtime

写作开始日期

datetime

 

 

isdelete

删除标志

bit

 

 

以userid作为用户表的主键约束

以usertype作为用户表的主键约束,与主表T_UserType中的字段id相对应

以userphoto作为用户表的主键约束,与主表T_Photo中的字段id相对应

 

T_Novel小说表

表5-6 小说表

列名

列注释

数据类型

非空约束

约束

novelid

小说编号

int

not null

主键

novelname

小说名称

varchar(50)

not null

 

novelphoto

封面图片

int

null

 

abstrac

简介

nvarchar(500)

not null

 

userid

发表作者

Varchar(20)

not null

外键

noveltype

小说分类

nvarchar(20)

not null

外键

novelstatus

状态(完本/连载)

int

 

 

createtime

小说创建时间

datetime

null

 

scancount

浏览量

int

null

 

reviewcount

评论数

int

null

 

auditstatus

审核状态

int

 

 

isdelete

删除标志

bit

null

 

以novelid作为小说表的主键约束

把novelid设置为Identity属性,种子标识1,种子增量1

以userid作为小说表的外键约束,与主表T_User中的字段 userid相对应

以noveltype作为小说表的外键约束,与主表T_NovelTyp中的字段typename相对应

 

T_NovelContent小说章节内容表

表5-7 小说章节内容表

列名

列注释

数据类型

非空约束

约束

chapterid

章节编号

int

not null

主键

novelid

所属小说编号

int

not null

外键

chaptername

章节名称

nvarchar(50)

not null

 

textcontent

内容

varchar(8000)

not null

 

charge

收/免费

bit

 

 

以chapterid作为小说章节内容表的主键约束

以novelid作为小说章节内容表的外键约束,与主表T_Novel中的字段novelid相对应

 

T_Review 评论内容表

表5-8 评论内容表

列名

列注释

数据类型

非空约束

约束

reviewid

评论编号

int

not null

主键

novelid

所属小说编号

int

not null

外键

chapterid

所属章节编号

int

not null

外键

userid

发表用户

varchar(20)

not noll

外键

reviewcontent

评论内容

nvarchar(2000)

not null

 

ipaddr

IP地址

Varchar(20)

 

 

createtime

发表评论时间

datetime

 

 

以reviewid 作为评论内容表的主键约束

以novelid 作为评论内容表的外键约束,与主表T_Novel中的字段novelid相对应

以chaptereid作为评论内容表的外键约束,与主表T_NovelContent中的字段chaptereid相对应

以userid作为评论内容表的外键约束,与主表T_User中的字段userid相对应

 

T_Usertype 用户类型表

表5-9 用户类型表

列名

列注释

数据类型

非空约束

约束

id

类型编号

int

not null

主键

name

类型

varchar(50)

not null

 

description

类型描述

nvarchar(20)

not null

 

以id 作为用户类型表的主键约束

把id设置为Identity属性,种子标识1,种子增量1

 

T_Photo 图片资源表

表5-10 图片资源表

列名

列注释

数据类型

非空约束

约束

id

图片编号

int

not null

主键

photourl

图片资源地址

Varchar(500)

not null

 

status

图片状态

int

not null

 

以id 作为图片资源表的主键约束

把id设置为Identity属性,种子标识1,种子增量1

 

T_NovelType小说分类表

表5-11 小说分类表

列名

列注释

数据类型

非空约束

约束

id

类型编号

int

not null

主键

typename

类型名称

nvchar(50)

not null

 

parentid

父级id

int

not null

 

以id 作为小说分类表的主键约束

把id设置为Identity属性,种子标识1,种子增量1

 

T_BookCase小说书架表

表5-12 小说书架表

列名

列注释

数据类型

非空约束

约束

bookcaseid

书架编号

int

not null

主键

userid

用户

Varchar(20)

not null

外键

novelid

所属小说编号

int

not null

 

chapterid

所属章节编号

int

not null

 

以bookcaseid 作为小说书架表的主键约束

把bookcaseid设置为Identity属性,种子标识1,种子增量1

以userid作为小说书架表的外键约束,与主表T_User中的字段userid相对应

以novelid作为小说书架表的外键约束,与主表T_Novel中的字段novelid相对应

以chapterid作为小说书架表的外键约束,与主表T_NovelContent中的字chapterid相对应

      1. 系统中的视图

V_User用户视图

a 依赖表:用户表、用户类型表、图片资源表

b 视图中的字段:用户id、用户密码、用户昵称、用户名字、用户头像、作者简介、真实姓名、联系方式、性别、书豆、发表小说数量、小说浏览量、用户状态、写作日期、用户类型、删除标志、推荐票数量

 

V_Novel小说视图

a 依赖表:小说表,小说内容表,小说类型表、图片资源表

b 视图中的字段:小说id、小说名字、小说简介、小说类型、作者昵称、小说封面图片、小说状态、创建时间、浏览量、评论数、审核状态、删除标志、推荐票数量

 

V_NovelContent 小说内容视图

a 依赖表:小说表、小说内容表、用户表、图片资源表、小说类型表

b 视图中的字段:小说id、小说名字、小说简介、用户id、小说内容、章节id、付费情况、章节名称、小说分类名称、作者昵称、创建时间、审核状态

 

V_Review评论视图

a 依赖表: 用户表、评论内容表、图片资源表

b 视图中的字段:评论id、小说id、章节id、用户id、用户昵称、评论内容、IP地址、发表时间、回复内容

      1. 系统中的存储过程

(1)up_ addNovel  添加小说存储过程

a 依赖表:小说表,用户表

b 作用: 在小说表中添加一本新的小说,若小说添加成功,则在用户表中其发表作者的文章发表数量中加1 

c 返回:0为失败,1为成功

 

(2)up_ deleteNovel  删除小说存储过程

a 依赖表:小说表,用户表

b 作用:在小说表中按照小说编号查询出小说,首先删除该小说的评论内容,接着修改该小说的封面图片状态,然后删除小说的章节内容,最后删除整本小说。然后修改用户表中作者发表的小说数量,小说数量减1

c 返回:0为失败,1为成功

 

(3)up_ addReview  添加评论存储过程

a 依赖表:小说表,评论表

b 作用: 在评论表中添加一条评论,若评论发表成功,则在小说表中对应的小说中评论数量加1

c 返回:0为失败,1为成功

 

(4)up_ addNovelCountent  添加小说章节内容存储过程

a 依赖表:小说内容表

b 作用: 在小说内容表中添加一章新的章节内容,

c 返回:0为失败,1为成功

 

(5)up_ deleteNovelCountent  删除小说章节内容存储过程

a 依赖表:小说内容表

b 作用:在小说内容表中查询出改章节内容,接着删除小说的章节内容

c 返回:0为失败,1为成功

    1. 系统业务接口设计

系统业务接口设计如下表所示,表中各接口所需要实现的方法只举例部分。

表5-13 接口设计表

接口名称

接口说明

需要实现的方法

UserDAO

用户信息业务处理接口

login()  登陆方法

addNormolUser() 添加普通用户方法

modifyUserInfo() 修改用户信息方法

upgradeAuthor()  升级为作者用户方法

NovelDAO

小说业务处理接口

addNovel() 创建小说方法

deleteNovel() 删除小说方法

updateNovel() 修改小说方法

NovelContentDAO

小说章节业务处理接口

addContent () 创建小说章节方法

deleteContent () 删除小说章节方法

updateNovelContent() 修改小说章节方法

ReviewDAO

评论信息业务处理接口

addReview() 添加评论方法

deleteReview() 删除评论方法

delReviewChapter() 删除整个章节评论方法

PhotoDAO

图片资源业务处理接口

getPhotoById() 获取图片方法

addPhoto() 添加图片方法

deletePhoto() 删除图片方法

BookCaseDAO

书架业务处理接口

getBookCase() 查询书架方法

insertBook()加入书架方法

deleteBook()移除书架方法

用户信息业务处理接口类:基于用户操作的业务方法接口类。包含有用户账号注册、用户登录、修改用户信息、升级为作者用户等方法。

小说业务处理接口类:基于用户对小说操作的业务方法接口类。包含有创建小说、删除小说、更新小说信息等方法。

小说章节业务处理接口类:基于用户对小说章节操作的业务方法接口类。包含有创建小说章节、删除小说章节、更新小说章节信息等方法。

评论信息业务处理接口类:基于用户对评论操作的业务方法接口类。包含有添加评论信息、删除评论信息、删除所有章节评论信息等方法。

图片资源业务处理接口类:基于用户头像或小说封面图片操作的业务方法接口类。包含有查询图片、添加图片、删除图片等方法。

书架业务处理接口类:基于小说书架操作的业务接口类。包含有加入书架、查询书架信息、删除藏书等方法。

    1. 系统交互控制类设计

网站端交互控制类采用Struts2(Action)实现,只举例部分,如下表所示:

表5-14 用户端交互控制类设计表

类名

说明

需要传入的参数

请求URL设计

LoginAction

登录

userid , pwd

/login

NovelAction

获取小说信息

novelid

/novel

AddNormaluserAction

普通用户注册

userid,pwd,nickname,confirpwd

/addnormaluser

CreateNovelAction

创建小说

novelid,novelname,abstrac,noveltype,userid

/createnovel

CreateChapterAction

创建小说中章节

novelid,textcontent,chaptername,charge

/createchapter

AddReviewAction

发表评论

Chapterid,novelid,userid,reviewtext

/addreview

 

系统后台管理端采用了SpringMVC的架构模式,以请求为驱动,将请求到的内容转换为json格式传递到前端,通过模型对象将请求结果渲染为视图。该模式定义了控制类接口,声明访问接口,在前端通过ajax直接请求访问接口,传递相对应的参数。其原理和action一样。下面举例一个控制类(Controller)接口:

以UserController为例:

表5-15 后台管理端交互控制类设计表

访问接口

说明

需要传入的参数

            请求URL设计

getNormalUserList()

查询普通用户

userid , nickname

/getnourmaluserlist

addNormalUser()

添加普通用户

userid,nickname,pwd

/addnormaluser

modifyNormalUserInfo()

修改用户信息

userid,pwd,nickname

/modifyinfo

deleteUser()

删除用户

userid

/deleteuser

addAuthorUser

添加作者用户

userid,pwd,realname,mobile,userphoto,agend,signature,nickname

/addauthoruser

      1. 请求接口中的数据交换格式设计

表5-16 数据交换格式设计表

方法及说明

参数

返回值

案例

login

(管理员用户登录)

userid 账号

pwd 密码

成功: 返回
{code:1101,msg:登录成功}

失败:返回

{code:1102,msg:登录失败}

http://localhost:8080/systemnovel/login

addadminuser

(添加管理员用户)

usesrid 账号

realname 真实姓名

pwd 密码

mobile 联系方式

成功: 返回
{code:1101,msg:用户添加成功}

失败:返回

{code:1102,msg:用户添加失败}

 

http://localhost:8080/systemnovel/addadminuser

deleteadminuser

(删除管理员用户)

userid 账号

成功: 返回
{code:1101,msg:删除成功}

失败:返回

{code:1102,msg:删除失败}

http://localhost:8080/systemnovel/deleteuser

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值