web课程设计说明书.docx
- 文档编号:8545120
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:28
- 大小:755.69KB
web课程设计说明书.docx
《web课程设计说明书.docx》由会员分享,可在线阅读,更多相关《web课程设计说明书.docx(28页珍藏版)》请在冰豆网上搜索。
web课程设计说明书
Web程序设计说明书
XXLL
专业计算机科学与技术
考号0901051319
1需求分析
1.1功能需求
本系统实现如下功能:
1.用户管理
a)用户分为管理员和普通用户
b)普通用户拥有创建并管理书架、上传并管理图书,评论、收藏、举报图书等功能。
c)管理员除了拥有普通用户的所有功能外,还可以管理系统图书分类、举报信息和用户信息。
d)管理员登录后,可以在管理中心中封锁、解锁用户。
2.分类管理
a)添加分类:
管理员可以添加小说分类,分类不可以重名。
b)修改分类:
管理员可以修改分类的名字,分类不可以重名。
c)删除分类:
管理员可以删除分类,当分类下有小说存在时,无法成功删除分类。
3.书架管理
a)添加书架:
用户登录后可以添加书架,书架的名字可以重名。
b)修改书架:
用户登录后可以修改自己创建的书架,书架名字可以重名。
c)删除书架:
用户登录后可以删除自己创建的书架,当书架下有小说存在时,无法成功删除书架。
d)订阅书架:
用户登录后可以订阅上的任意一个书架。
4.小说管理
a)上传小说:
用户登录后可以上传TXT格式的小说,小说不得大于5M,并且需要有固定格式的章节信息,比如“第X卷第X章XXXX”。
小说上传成功后会自动生成小说章节索引,方便用户按章节阅读小说。
如果上传小说时用户没有指定小说摘要,则会自动以小说前六章的章节标题组成摘要。
b)修改小说:
用户登录后可以修改自己上传的小说信息,更改小说的所属分类和书架等信息。
c)删除小说:
用户登录后可以删除自己上传的小说,小说删除时,会连带删除小说的评论等信息。
d)收藏小说:
用户登录后可以收藏上的任意一部小说。
e)举报小说:
用户可以举报自己认为有不良信息或者不合法信息的小说,管理员会及时处理举报信息。
f)评论小说:
用户登录后可以对上的任意一部小说发表评论。
5.统计信息
a)统计小说阅读量:
会对小说的阅读次数进行统计,以作为热门小说的排名依据。
b)统计小说评论量:
会对小说的评论次数进行统计,以作为热门小说的排名依据。
c)统计小说收藏量:
会对小说的收藏次数进行统计,以作为热门小说的排名依据。
d)统计书架小说数:
会对各个书架中小说的数量进行统计。
e)统计分类小说数:
会对各个分类中小说的数量进行统计。
1.2数据库需求分析
不管对数据库设计还是对系统设计来说,需求分析都是第一步。
需求的目的就是搞清楚用户要做什么,如果需求做的仔细,可以在后面的设计和实现中少做很多无用功,其重要性是不言自明的。
做需求分析需要有点心理学的知识,要能充分的跟客户进行交流,能抓住问题的关键所在,最终能够快速的搞清楚系统所要实现的业务。
需求分析的方法在软件工程中都有说明,不管哪种方法,最重要的都是与用户的沟通和交流,引导用户正确的确认问题。
用户需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。
根据用户的需求设计数据库如下:
用户:
编号,,昵称,密码,头像,角色,注册日期,状态,书架数,小说数。
分类:
编号,名称,小说数。
小说:
编号,书名,作者,大小,细节,状态,分类编号,书架编号,文件路径,上传日期,上传用户,阅读量,评论量,收藏量。
书架:
编号,名称,创建者,创建日期,小说数。
3数据库设计
3.1数据库概念结构设计
在需求分析的基础上,设计出能够满足用户需求的各种实体以及它们之间的关系,现将各实体及实体之间的E-R图描述如下:
(1)分类实体:
图3.2分类实体图
(2)用户实体:
图3.3用户实体图
(3)书架实体:
图3.4书架实体图
(4)小说实体:
、
图3.5小说实体图
(5)总体ER图:
图3-6ER图总图
3.2数据库逻辑结构设计
现在把数据库概念设计的E-R图转化为关系数据。
在关系数据库中,数据关系由数据表组成的,而表的结构体现在表的字段上。
具体为:
确定数据库中数据表的组成;确定数据表中字段的构成,主键字段和有关字段的约束条件;依据表中主键字段建立数据表之间的关系。
数据的合理性问题:
数据表内记录不重复;数据字段不可分割,具有最小数据单位的特点;数据表内字段或字段之间互不依赖。
具体结构如下图所示:
1.用户表
表3-1用户表
字段名
标识
字段类型
长度
约束条件
可否为空
user_id
用户编号
Integer
30
PK
N
user_email
用户
Varchar
199
唯一
N
user_name
用户昵称
Varchar
20
N
user_pass
用户密码
Varchar
64
N
user_devil
用户头像
Varchar
100
Y
user_role
用户角色
Enum
N
user_reg_date
用户注册日期
Timestamp
N
user_status
用户状态
Integer
10
N
user_shelf_count
用户书架数量
Integer
10
N
user_book_count
用户小说数量
Integer
10
N
2.分类表
表3-2小说分类表
字段名
标识
字段类型
长度
约束条件
可否为空
cate_id
类别编号
Integer
30
PK
N
cate_name
类别名称
Varchar
20
唯一
N
cate_book_count
小说数量
Integer
30
N
3.小说表
表3-3小说表
字段名
标识
字段类型
长度
约束条件
可否为空
book_id
小说编号
Integer
30
PK
N
book_name
小说名称
Varchar
100
N
book_author
小说作者
Varchar
20
N
book_size
小说大小
Integer
30
N
book_detail
小说细节
TEXT
Y
Book_desc
小说描述
Varchar
200
Y
book_status
小说状态
Integer
10
N
book_cate
小说分类
Integer
30
FK
N
book_shelf
所属书架
Integer
30
FK
N
book_upload_file
小说文件
Varchar
100
N
book_upload_date
上传日期
Timestamp
N
book_upload_user
上传者
Integer
30
FK
N
book_read_count
阅读量
Integer
30
N
book_ment_count
评论量
Integer
30
N
book_starred_count
收藏量
Integer
30
N
4.书架表
表3-4书架表
字段名
标识
字段类型
长度
约束条件
可否为空
shelf_id
书架编号
Integer
30
Pk
N
shelf_name
书架名称
Varchar
50
N
shelf_creation_user
创建者
Integer
30
FK
N
shelf_creation_date
创建日期
Timestamp
N
shelf_book_count
小说数
Integer
10
N
5.书架订阅表
表3-5书架订阅表
字段名
标识
字段类型
长度
约束条件
可否为空
id
订阅编号
Integer
30
PK
N
shelf_id
书架编号
Integer
30
FK
N
user_id
用户编号
Integer
30
FK
N
6.小说评论表
表3-6小说评论表
字段名
标识
字段类型
长度
约束条件
可否为空
ment_id
评论编号
Integer
30
PK
N
ment_ip
用户IP
Varchar
15
N
ment_book
小说编号
Integer
30
N
ment_parent
回复评论
Integer
30
FK
Y
ment_author
用户编号
Integer
30
FK
N
ment_content
评论内容
Varchar
1000
N
ment_date
评论时间
Timestamp
N
7.小说收藏表
表3-7小说收藏表
字段名
标识
字段类型
长度
约束条件
可否为空
Id
收藏编号
Integer
30
Pk
N
book_id_ip
小说编号
Integer
30
FK
N
user_id
用户编号
Integer
30
FK
N
8.小说举报表
表3-8小说举报表
字段名
标识
字段类型
长度
约束条件
可否为空
report_id
举报编号
Integer
30
PK
N
report_book
小说编号
Integer
30
FK
N
user_id
用户编号
Integer
30
FK
N
report_evidence
举报原因
Varchar
1000
N
report_date
举报日期
Timestamp
N
9小说阅读表
表3-9阅读表
字段名
标识
字段类型
长度
约束条件
可否为空
read_id
阅读编号
Integer
30
PK
N
read_book
小说编号
Integer
30
FK
N
read_user
用户编号
Integer
30
FK
N
read_detail
阅读进度
Varchar
1000
N
4界面描述和代码实现
4.1用户管理
用户管理模块主要包括用户注册、登录及信息修改。
(1)用户注册:
用户填写注册信息并通过校验后可以成功注册成为会员,其中作为登录名,不能重复。
图4-1用户注册页面
以Ajax的方式进行注册校验,成功后方才跳转页面,如果出错,则在不刷新的情况下在当前页面提示错误信息。
publicStringsignup()throwsException{
result=newHashMap
Map
//Validateemailaddress
if(!
ValidatorUtil.validEmail(user.getEmail())){
errors.put("user.email","格式不正确");
//Iftheemailhasbeentaken
}elseif(userDao.findByEmail(user.getEmail())!
=null){
errors.put("user.email","已经被占用");
}
//Validateusername
if(!
ValidatorUtil.validUsername(user.getName())){
errors.put("user.name","用户名格式不正确");
//Validatepassword
if(!
ValidatorUtil.validPassword(user.getPass()))
errors.put("user.pass","密码格式不正确");
}
logger.info(String.format("signingupuser[name=%s,email=%s]",
user.getName(),user.getEmail()));
//Addtheuser
if(!
errors.isEmpty()){
result.put("approved",false);
result.put("message","注册失败,请检查注册信息是否填写正确");
result.put("errors",errors);
}elseif(!
userDao.insert(user)){
result.put("approved",false);
result.put("message","注册失败,服务器正忙,请稍后再试");
}else{
result.put("approved",true);
result.put("message","注册成功,正在中转页面");
}
returnSUCCESS;
}
(2)用户登录:
用户填写登录信息后点击登录,进行Ajax校验,成功后跳转到个人页面。
图4-2用户登录页面
用户登录的前台相关代码:
/**
*Scripttoimplementuserrelatedworks,suchassignin,signup,validationand..
*
*authorGreatGhoul
*version1.02010-04-2522:
35
*require
*:
jquery.1.3.2.min.js
*:
status-1.0.3.js
*/
$(function(){
varsignupForm=$('#signup-form');
varsigninForm=$('#signin-form');
functionsignup(){
$.ajax({
url:
'dosignup.do',
data:
signupForm.serialize(),
type:
'POST',
dataType:
'json',
error:
function(){
signupForm.lock(false,'注册失败,请检查您的网络连接');
},
success:
function(data){
signupForm.lock(false,data.result.message);
if(data.result.approved){
setTimeout(function(){
window.location='signin.do';
},3000);
}else{
signupForm.errs(data.result.errors);
}
}
});
signupForm.lock(true,'正在提交注册信息...');
returnfalse;
}
functionsignin(){
$.ajax({
url:
'dosignin.do',
data:
signinForm.serialize(),
type:
'POST',
dataType:
'json',
error:
function(){
signinForm.lock(false,'登录失败,请检查您的网络连接');
},
success:
function(data){
signinForm.lock(false,data.result.message);
if(data.result.approved){
setTimeout(function(){
window.location='home.do';
},1000);
}
}
});
signinForm.lock(true,'正在提交注册信息...');
returnfalse;
}
signupForm.submit(signup);
signinForm.submit(signin);
});
(3)用户信息修改:
提供原始密码后,用户可以修改昵称或者使用新的密码。
图4.3用户信息修改页面
4.2分类管理
管理员有权利对系统的小说分类管理,小说的分类名不能重复。
管理员可以添加分类、修改分类、删除分类,要删除含有小说的分类,需要先转移分类中的小说,否则不能成功删除分类。
图4-4分类管理页面
以下这段代码用于更新分类,用于返回更新信息的JSON格式的结构是固定的,在书架,小说管理中都遵循这一格式,统一了操作接口。
publicStringupdate(){
logger.info(String.format("updatingcate[id=%d]==>cate[name=%s]",
cate.getId(),cate.getName()));
result=newHashMap
List
result.put("approved",false);
result.put("message","更新分类失败");
if(cate==null||cate.getId()==null){
errors.add("分类不存在");
}elseif(!
ValidatorUtil.validCateName(cate.getName())){
errors.add("分类名的长度应该在1到20个字体之间,不能含有空格");
}else{
Catecate1=cateDao.findById(cate.getId());
if(cate1==null){
errors.add("要修改的分类不存在");
}elseif(cate1.getName().equals(cate.getName())){
errors.add("分类名已经存在");
}elseif(!
cateDao.update(cate)){
errors.add("服务器正忙,请稍候再试");
}else{
result.put("approved",true);
result.put("message","更新分类成功");
}
}
result.put("errors",errors);
returnSUCCESS;
}
4.3书架管理
用户登录后可以创建书架,并可以编辑或删除自己创建的书架。
在“我的书架”页面会罗列当前用户的所有书架,如图:
图4-5书架列表页面
(1)添加书架:
点击书架列表中的“添加书架”,可以打开添加书架窗口,填写书架名称后点击确认按钮即可添加一个书架。
图4-6添加书架
(2)修改书架:
点击要修改的书架名后面的“修改”即可打开书架修改窗口,填写新的名称后点击确认按钮,即可修改书架的名称。
图4-7修改书架
(3)删除书架:
点击要删除的书架后面的“删除”会提示是否确认删除,如果点击“是”,且书架中书架数为0,则可以成功删除书架,否则不会删除书架。
删除书架的代码如下:
publicStringdelete(){
Useruser=(User)getSessionMap().get("curUser");
if(user==null)return"signin";
if(bookDao.findByShelf(shelf).size()>0){
addActionMessage("要删除书架,请先清空书架中的小说");
returnERROR;
}elseif(!
shelfDao.delete(shelf)){
addActionMessage("删除书架失败,服务器正忙,请稍候再试。
");
returnERROR;
}else{
returnSUCCESS;
}
}
4.4小说管理
用户可以上传小说,并对自己上传的小说进行管理。
在首页、个人页面、书架展示等页面会罗列出用户上传的小说,点击即可查看详情。
的首页会罗列出所有小说分类,热门的书架、小说等,点击即可查看相关条目。
图4-8首页
个人页面会罗列出用户最近上传的小说和创建的所有书架。
图4-9用户首页
(1)上传小说:
点击顶端导航中的“上传小说”,在打开的页面中填写相关信息,并选定要上传的文件(文件要求txt格式,小于5M,而且章节目录比较标准)。
其中小说简介可以选填,如果用户不填写,则自动以前6章的章节标题拼接成简介。
图4-10小说上传页面
上传小说的相关代码:
publicStringexecute()throwsIOException{
Useruser=(User)getSessionMap().get("curUser");
if(user==null){
return"signin";
}
if(book.getAuthor()==null||book.getAuthor().trim().isEmpty()){
book.setAuthor("未知");
}
if(book.getDesc()!
=null&&book.getAuthor().length()>200){
book.setDesc(book.getDesc().substring(0,199));
}
if(upload==null||!
upload.exists()){
addActionMessage("只能上传txt类型的文件,且文件不能超过5M。
");
returnERROR;
}else{
if(book.getName()==null||book.getName().trim().isEmpty()){
addActionMessage("请填写小说名称");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- web 课程设计 说明书