javaweb课程设计在线投稿系统.docx
《javaweb课程设计在线投稿系统.docx》由会员分享,可在线阅读,更多相关《javaweb课程设计在线投稿系统.docx(22页珍藏版)》请在冰点文库上搜索。
![javaweb课程设计在线投稿系统.docx](https://file1.bingdoc.com/fileroot1/2023-4/30/bbcb361b-3d09-448c-98c2-c06bed5f855d/bbcb361b-3d09-448c-98c2-c06bed5f855d1.gif)
《数据库应用系统》课程设计报告
题目:
某期刊的在线投稿审稿管理系统的设计与实现
院系名称:
信息科学与工程学院
指导教师:
唐建国教师职称:
讲师
2016年12月
目录
1 引言 3
2 需求分析 3
3 小组分工 5
4 数据库设计 5
4.1 ER图 5
4.2 关系模式 6
4.3 物理结构设计 6
4.4 Sql语句以及存储过程 8
5 概要设计 11
5.1 详细设计 12
6 测试分析 19
7 测试结果 20
8 心得体会 21
1引言
随着网络普及程度的提高,人们的办公观念和方式都发生了重大的改变,基于网络的无纸化办公也越来越深入人心。
一个好的在线投稿系统,也让杂志社给读者形成一个好的的印象。
许多杂志社、报社的编辑部都已意识到实现网上办公和在线处理稿件的重要性和紧迫性。
在线投稿和稿件处理系统有效地解决了传统模式下投递和送审的各种弊端,实现了作者的投稿、信息查询、信息反馈的便捷处理和编辑部规范高效化办公,从而节省了稿件处理的时间和流通费用,提高了稿件投递和投审的效率和安全性,同时也保证了杂志社所有的编辑能够在相同的业务平台进行业务处理,适应了集中管理的需要。
通过规范流程、强化内部管理,建立强大的数据库,为数据分析、人员管理等提供强大的支持,为用户、专家、编辑提供了安全的权限设置,使稿件分级处理,避免了处理流程的混乱,减低工作量、减少重复劳动。
利用在线投稿与稿件处理系统,作者只要进行注册,即可进行稿件的投递与查阅,编辑部和专家可以将传来的稿件存盘后即可在电脑上进行编辑加工即在线编辑,既简便又准确,又提高期刊编辑出版的效率。
开发此系统是为了提高办公效率,适应信息网络时代期刊发展的趋势,也为了满足人们对信息实时性、安全性及便捷性的需求
2需求分析
报投稿管理系统是一个典型的数据库开发应用程序,由投稿管理、审稿管理、稿件管理、审稿人管理、系统管理等部分组成,规划系统功能模块如下:
投稿人模块分为三小块:
(本人完成的投稿人模块)
投递稿件:
主要是将自己的稿件进行上传,以及其他信息
查看投稿状态:
查阅自己投递的稿件是否通过,以及稿费
修改个人信息:
主要是个人联系方式的修改
该模块主要功能是接收投稿人的基础信息,以便完成后续投稿工作。
包括投稿人的联系方式,以及电话等等
审稿人模块分为两个模块
审稿:
主要功能是对投稿人提交的稿件进行审核给出相应的审核意见,期间审稿人可以跟管理员进行相应得会话以提高稿件的审核进度,最后审稿人可以管理已经审核的稿件
修改个人信息:
主要是个人联系方式
管理员模块分为四个模块:
(本人完成分配稿件,管理版面费,稿费模块)
分配稿件任务:
管理员将上传的稿件进行分配给审稿人,让审稿人进行审查
管理审稿人:
主要是对审稿人的增加删除的管理
查看审查状态:
查看已经审阅通过的稿件
投稿管理系统
审稿人
管理员
投稿人
分配稿件任务
管理审稿人
查看审稿状态
管理版面费,稿费
个人设置
审稿
投递稿件
查看投稿状态
修改个人信息
管理版面费,稿费:
看到已经审阅过的稿件,输入相应的版面费,稿费
3小组分工
本人完成的模块包括:
投稿人模块的三个模块,以及管理员模块中的分配稿件,管理版面费,稿费模块,引言,数据库系统需求描述
共同完成部分:
存储过程,er图,数据库的设计,触发器,关系模式
4数据库设计
4.1ER图
说明:
投稿人与稿件是投稿关系,1:
n,生成投稿时间,审稿费,审稿费状态
审稿人与稿件是审稿关系,m:
n,生成审查状态,是否通过,评语
管理员与稿件是管理关系,m:
n,生成发表时间,稿费,稿费状态,版面费,版面费状态
4.2关系模式
关系模型:
投稿人:
(账号,密码,姓名,电话,地址,邮箱,银行卡号)
稿件:
(编号,标题,摘要,类型,字数,投稿时间,审稿费,审稿费状态,作者账号)
审稿人:
(账号,密码,姓名,电话)
管理员:
(账号,密码,姓名,电话)
审稿:
(审稿人账号,稿件编号,审查状态,是否通过,评语)
稿件管理:
(管理员账号,稿件编号,发表日期,稿费,稿费状态,版面费,版面费状态)
4.3物理结构设计
投稿人表:
writer
字段名称
字段类型
是否为空
字段描述
备注
writerId
int
Notnull
投稿人登录的账号
PK
password
Varchar(30)
Notnull
投稿人密码
name
Varchar(30)
Notnull
投稿人姓名
phone
Nchar(11)
Notnull
电话
address
Varchar(100)
Notnull
通信地址
email
Varchar(30)
Notnull
邮箱
cardID
Varchar(30)
Notnull
银行卡号
稿件表:
article
字段名称
字段类型
是否为空
字段描述
备注
articleId
int
Notnull
稿件编号
PK
title
Varchar(50)
Notnull
标题
abstract
Varchar(1000)
Notnull
摘要
type
Varchar(50)
Notnull
类型
length
int
Notnull
字数
time
Datetime
Notnull
投稿日期
reviewfee
float
Notnull
审稿费
reviewfeeStatus
Varchar(30)
Notnull
审稿费状态
writerId
int
Notnull
投稿人id
FK,对应writer表的writerid
审稿人:
(账号,密码,姓名,电话)
Reviewer
字段名称
字段类型
是否为空
字段描述
备注
reviewerID
int
Notnull
审稿人账号
PK
password
Varchar(30)
Notnull
密码
name
Varchar(30)
Notnull
姓名
phone
Nchar(11)
Notnull
电话
管理员:
(账号,密码,姓名,电话)
Administrator
字段名称
字段类型
是否为空
字段描述
备注
adminID
int
Notnull
管理员账号
PK
password
Varchar(30)
Notnull
密码
name
Varchar(30)
Notnull
姓名
phone
Nchar(11)
Notnull
电话
审稿:
(审稿人账号,稿件编号,审查状态,是否通过,评语)
Review
字段名称
字段类型
是否为空
字段描述
备注
reviewerID
int
Notnull
审稿人ID
PK联合主键
FKReviewer表的外键
articleID
Int
Notnull
稿件编号
PKFK
Article表的外键
reviewStatus
Varchar(30)
Notnull
审查状态
passed
Varchar(30)
记录稿件是否通过
comments
Varchar(1000)
审稿人的评语
稿件管理:
(管理员账号,稿件编号,发表日期,稿费,稿费状态,版面费,版面费状态)
articleManagement
字段名称
字段类型
是否为空
字段描述
备注
adminID
int
Notnull
审稿人ID
PK联合主键
FKadministrator表的外键
articleID
int
Notnull
已经通过的稿件编号
PK联合主键
FKarticle表的外键
date
datetime
Notnull
发表日期
articleFee
float
稿费
articleFeeStatus
Varchar(30)
Notnull
稿费发放状态
spaceFee
float
版面费
spaceFeeStatus
Varchar(30)
Notnull
版面费是否收到
4.4Sql语句以及存储过程
createdatabaseonlineSubmission;
useonlineSubmission;
CREATETABLEwriter(
writerId int Notnullprimarykey,
password Varchar(30) Notnull,
name Varchar(30) Notnull,
phone Nchar(11) Notnull,
address Varchar(100) Notnull,
email Varchar(30) Notnull,
cardID Varchar(30) Notnull
)
;
CREATETABLEarticle(
articleId int Notnullprimarykey,
title Varchar(50) Notnull,
abstract Varchar(1000) Notnull,
type Varchar(50) Notnull,
length int Notnull,
time datetime Notnull,
reviewfee float Notnull,
reviewfeeStatus Varchar(30) Notnull,
writerId int Notnull,
foreignkey(writerId)referenceswriter(writerID)
)
;
CREATETABLEreviewer(
reviewerID int Notnullprimarykey,
password Varchar(30) Notnull,
name Varchar(30) Notnull,
phone Nchar(11) Notnull,
)
;
CREATETABLEadministrator(
adminID int Notnullprimarykey,
password Varchar(30) Notnull,
name Varchar(30) Notnull,
phone Nchar(11) Notnull
)
;
CREATETABLEreview(
reviewerID int Notnull,
articleID int Notnull,
reviewStatus Varchar(30) Notnull,
passed Varchar(30) ,
comments Varchar(1000) ,
primarykey(reviewerID,articleID),
foreignkey(reviewerID)referencesreviewer(reviewerID),
foreignkey(articleID)referencesarticle(articleID)
)
;
CREATETABLEarticleManagement(
adminID int Notnull,
articleID int Notnull,
date datetime Notnull,
articleFee float ,
articleFeeStatus Varchar(30) Notnull,
spaceFee float ,
spaceFeeStatus Varchar(30) Notnull,
primarykey(adminID,articleID),
foreignkey(adminID)referencesadministrator(adminID),
foreignkey(articleID)referencesarticle(articleID)
)
CREATEPROCEDUREgetreviewerlist
@pageSizeINT,
@pageIndexINT
as
SELECTreviewerid,password,name,phone
FROM(SELECTTOP(@pageSize*@pageIndex)
ROW_NUMBER()OVER(ORDERBYrevieweridAsc)ASrownum,
*
FROMreviewer
)AStemp
WHEREtemp.rownum>(@pageSize*(@pageIndex-1))
ORDERBYtemp.reviewerid
USE[online]
GO
/******Object:
StoredProcedure[dbo].[getArticleBywriterIDPage]ScriptDate:
2017/1/216:
42:
34******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
ALTERPROCEDURE[dbo].[getArticleBywriterIDPage]
@pageSizeINT,
@pageIndexINT,
@writeridint
as
SELECTarticleid,title,abstract,type,length,time,reviewfee,reviewfeestatus,writerid
FROM(SELECTTOP(@pageSize*@pageIndex)
ROW_NUMBER()OVER(ORDERBYarticleIDAsc)ASrownum,
*
FROMarticlewherewriterid=@writerid
)AStemp
WHEREtemp.rownum>(@pageSize*(@pageIndex-1))
ORDERBYtemp.articleid
USE[online]
GO
/******Object:
StoredProcedure[dbo].[getreviewerlist]ScriptDate:
2017/1/216:
43:
06******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
ALTERPROCEDURE[dbo].[getreviewerlist]
@pageSizeINT,
@pageIndexINT
as
SELECTreviewerid,password,name,phone
FROM(SELECTTOP(@pageSize*@pageIndex)
ROW_NUMBER()OVER(ORDERBYrevieweridAsc)ASrownum,
*
FROMreviewer
)AStemp
WHEREtemp.rownum>(@pageSize*(@pageIndex-1))
ORDERBYtemp.reviewerid
5概要设计
该系统采取的是web开发模式,采用mvc架构,具体环境如下:
开发环境:
MyEclipse2015。
开发语言:
JSP+JAVA+servlet。
后台数据库:
mysql。
开发环境运行平台:
Windows10
浏览器:
FireFox。
投稿人:
管理员模块:
审稿人模块:
5.1详细设计
投稿人:
packagecom.online.web;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.sql.Date;
importjava.util.List;
importjava.util.UUID;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importmons.fileupload.FileItem;
importmons.fileupload.FileUploadException;
importmons.fileupload.disk.DiskFileItemFactory;
importmons.fileupload.servlet.ServletFileUpload;
publicclassuploadextendsHttpServlet{
/**
*ThedoGetmethodoftheservlet.
*
*Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget.
*
*@paramrequesttherequestsendbytheclienttotheserver
*@paramresponsetheresponsesendbytheservertotheclient
*@throwsServletExceptionifanerroroccurred
*@throwsIOExceptionifanerroroccurred
*/
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
Stringpath=this.getServletContext().getRealPath("/WEB-INF/down");
DiskFileItemFactorydis=newDiskFileItemFactory();
dis.setRepository(newFile(this.getServletContext().getRealPath("/WEB-INF/temp")));
ServletFileUploadupload=newServletFileUpload(dis);
upload.setHeaderEncoding("UTF-8");
Listlist=null;
try{
list=upload.parseRequest(request);
}catch(FileUploadExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
for(FileItemitem:
list){
if(item.isFormField()){
//fileitem中封装的是普通输入项的数据
Stringname=item.getFieldName();
Stringvalue=item.getString("UTF-8");
if(name.equals("time")){
longi=System.currentTimeMillis();
Dated=newDate(i);
java.sql.Timestampst=newjava.sql.Timestamp(d.getTime());
request.getSession(false).setAttribute(name+"1",st);
}
request.getSession().setAttribute(name,value);
//value=newString(value.getBytes("iso8859-1"),"UTF-8");
System.out.println(name+"="+value);
}else{
//fileitem中封装的是上传文件
Stringfilename=item.getName();//不同的浏览器提交的文件是不一样c:
\a\b\1.txt1.txt
System.out.println(filename);
if(filename==null||filename.trim().equals("")){
continue;
}