在线审稿投稿管理系统课程设计报告报告.doc

上传人:牧羊曲112 文档编号:4006862 上传时间:2023-03-31 格式:DOC 页数:29 大小:1.10MB
返回 下载 相关 举报
在线审稿投稿管理系统课程设计报告报告.doc_第1页
第1页 / 共29页
在线审稿投稿管理系统课程设计报告报告.doc_第2页
第2页 / 共29页
在线审稿投稿管理系统课程设计报告报告.doc_第3页
第3页 / 共29页
在线审稿投稿管理系统课程设计报告报告.doc_第4页
第4页 / 共29页
在线审稿投稿管理系统课程设计报告报告.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《在线审稿投稿管理系统课程设计报告报告.doc》由会员分享,可在线阅读,更多相关《在线审稿投稿管理系统课程设计报告报告.doc(29页珍藏版)》请在三一办公上搜索。

1、课程设计报告( 2015- 2016年度第1学期)实验名称: 数据库应用课程设计 题 目: 在线投稿审稿管理系统 院 系: 控制与计算机工程学院 班 级: 计算1302 学 号: 1131220207 学生姓名: 兰鑫玥 指导教师: 周长玉 设计周数: 1 周 成 绩: 日期:2016年1月17日一、 课程设计的目的与要求目的1. 学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析与设计,对数据库做进一步的了解,掌握相关知识;2. 进一步加强对数据库运用能力和熟练掌握数据库中的重要知识,了解如何从数据库中读写有关数据;3. 培养分析问题、解决问题的能力。要求1. 完成数据

2、库系统的安装与设置。2. 根据具体的课题完成需求分析。3. 完成数据库应用系统的逻辑设计。4. 创建数据库、数据表。5. 完成设计报告。二、设计正文1.需求分析1.1 调查用户需求在线投稿审稿管理系统最终用户为投稿人、审稿人和杂志社管理员,有效地解决了传统模式下投递和送审的各种弊端,实现了作者的投稿、信息查询、信息反馈的便捷处理和编辑部规范高效化办公,从而节省了稿件处理的时间和流通费用,提高了稿件投递和投审的效率和安全性,同时也保证了杂志社所有的编辑能够在相同的业务平台进行业务处理,适应了集中管理的需要。通过规范流程、强化内部管理,建立强大的数据库,为数据分析、人员管理等提供强大的支持,为用户

3、、编辑提供了安全的权限设置,使稿件分级处理,避免了处理流程的混乱,减低工作量、减少重复劳动,得出用户的下列实际要求:1.1.1基本功能需求出版社的在线投稿审稿管理系统包含以下几方面信息: 投稿人的基本信息 每个投稿人都有唯一的编号,有真实姓名,有笔名,有联系方式包括:电话号码、联系地址、Email等。 审稿人的基本信息审稿人负责审理投稿人的稿件且为管理员管理添加或删除,每个审稿人都有唯一的编号,有真实姓名,有联系电话。 管理员的基本信息管理员负责管理审稿人,统计稿件信息,指定审稿人去审理指定的稿件,每个管理员都有唯一的编号,有姓名,有联系电话。 稿件的基本信息每篇文章都有唯一的稿件编号,有稿件

4、名,有稿件类型,有稿件内容,发表日期,有审查标记来记录此篇文章是否已被审稿人审查,还要有此篇文章的作者。1.1.2用户对系统的要求 投稿人a.信息要求投稿人可以对自己的基本信息进行查看,可以查看自己的稿件状态。b.处理要求投稿人可以添加新的稿件进行提交,等待审稿人审理。投稿人可以修改自己的个人信息,但不能修改账号,账号一经注册,便不可更改。比如,某位作者可以对他的帐号密码进行更改。c安全性与完整性要求安全性要求n 登录系统设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用;n 系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容;n

5、 登录系统对不同用户设置不同的权限,区分不同的用户,如区分投稿人,审稿人,管理员。完整性要求n 各种信息记录的完整性,如账号和密码等信息记录内容不能为空;n 各种数据间相互的联系的正确性;n 相同的数据在不同记录中的一致性。 审稿人 a.信息要求审稿人可以对自己的基本信息进行查看,可以查看自己的审查任务安排。b.处理要求审稿人可以在线审查管理员给自己安排的要审查的稿件,查看稿件的相关信息及内容,并给出自己对这篇文章的评语。审稿人可以修改自己的个人信息,但不能修改账号。 管理员 a.信息要求管理员可以对自己的基本信息进行查看,可以查看统计出来的各个作者的稿件信息。b.处理要求管理员可以分配稿件审

6、理,指定审稿人去审理指定的稿件。管理员可以确认发表哪篇稿件,以及发表日期。管理员可以对各个作者的稿件进行管理,可以进行删除处理。管理员可以添加和删除审稿人,可以查看和修改个人信息。1.2 系统功能的设计和划分根据如上得到的用户需求,我们将本系统按照所完成的功能分成以下几部分:第一部分:登录部分第二部分:投稿人管理部分第三部分:审稿人管理部分第四部分:管理员管理部分各部分完成的功能如下:1.2.1登录部分n 处理投稿人登录n 处理审稿人登录n 处理管理员登录1.2.2投稿人管理部分n 处理投稿人注册n 投稿人可以查询修改个人信息n 投稿人可以提交稿件并填写稿件的相关信息n 投稿人可以缴纳稿费n

7、投稿人可以查看稿件状态:未审和已审,已审稿件可以查看评语1.2.3审稿人管理部分n 审稿人可以查询修改个人信息。n 审稿人可以审理管理员指定分配的稿件,决定是否发表。n 审稿人可以在线审稿,给出评语。1.2.4管理员管理部分n 管理员可以查询修改管理员信息。n 管理员可以添加、删除审稿人。n 管理员分配审稿人审理哪篇稿件。n 管理员可以查询某一作者的全部稿件信息。n 管理员可以删除稿件。n 管理员可以确定哪篇稿件可以发表,以及发表的时间。图1.系统功能图1.3 数据流图图2.总数据流图1.4 数据字典 14.1数据项投稿人数据字典:投稿人=账号+密码+姓名+笔名+电话+地址+E-mail+备注

8、账号= 1数字20密码= 1数字20姓名= 1汉字20笔名= 1汉字20电话= 11数字11地址= 1汉字100E-mail=|地址= 1汉字100n 数据项:账号含义说明:唯一标识每个投稿人别名:投稿人编号类型:字符型长度:20n 数据项:密码含义说明:每个投稿人的登录密码类型:字符型长度:20n 数据项:姓名含义说明:每个投稿人的真实姓名类型:字符型长度:20n 数据项:电话含义说明:每个投稿人的联系电话类型:字符型长度:11n 数据项:E-mail含义说明:每个投稿人的电子邮箱类型:字符型长度:30稿件数据字典:稿件=编号+作者+标题+类型+关键词+摘要+内容+审查标记+缴费标记编号=

9、8数字8作者= 1汉字20标题= 1汉字20类型= 1数字10关键词= 1汉字50摘要= 1汉字100摘要= 1内容8000审查标记=0|1缴费标记=0|1n 数据项:编号含义说明:唯一标识每篇稿件别名:稿件编号类型:整型长度:8n 数据项:类型含义说明:记录稿件类型的编号类型:字符型长度:10n 数据项:摘要含义说明:每篇稿件的主要内容与中心主旨 类型:字符型长度:100n 数据项:内容含义说明:每篇稿件的正文内容 类型:字符型长度:8000n 数据项:审查标记含义说明:记录稿件是否审查的标记,0为未审查,1为已审查类型:整型长度:1n 数据项:缴费标记含义说明:记录稿件是否缴纳稿费的标记,

10、0为未审查,1为已审查类型:整型长度:11.4.2 数据结构数据结构名组成投稿人信息账号,密码,姓名,笔名,电话,地址,E-mail,备注审稿人信息账号,密码,姓名,电话 管理员信息账号,密码,姓名,电话 稿件信息编号,作者,标题,类型,关键词,摘要,内容,审查标记,缴费标记稿件类型信息编号,类型名1.4.3 数据流数据流名数据流来源数据流去向组成审稿人审查信息审稿人信息稿件信息审查信息管理员管理稿件信息稿件信息稿件信息发表信息1.4.4数据存储数据存储名输入的数据流输出的数据流组成投稿人信息表投稿人信息投稿人信息投稿人信息审稿人信息表审稿人信息审稿人信息审稿人信息管理员信息表管理员信息管理员

11、信息管理员信息稿件信息表审稿人审查信息稿件信息稿件信息稿件信息1.4.5 处理过程处理过程名输入数据流输出数据流审稿人审查信息表审稿人信息稿件信息审稿人审查信息管理员管理稿件表稿件信息稿件信息2.概念设计根据需求分析说明书设计ER图,设计完成的ER图为:图3. 总ER图3.逻辑设计3.1 关系表设计将ER图转换为关系模式、要求设计出数据库所有关系表 表1. 投稿人信息表(Writer)属性名存储代码类型长度备注完整性约束账号W_LoginNumvarchar20投稿人登录账号主键密码W_Passwordvarchar20投稿人登录密码非空姓名W_RealNamevarchar20作者真实姓名非

12、空笔名W_PenNamevarchar20作者笔名电话W_PhoneNumchar11联系电话非空地址W_Addressvarchar100联系地址E-mailW_Emailvarchar30电子邮箱CHECK规则备注W_Remarkvarchar100作者备注信息表2. 稿件信息表(Article)属性名存储代码类型长度备注完整性约束编号A_IDint文章编号主键,自增作者A_WriterNumvarchar20投稿人账号主键标题A_Titlevarchar20文章标题非空类型A_TypeNumvarchar10文章类型非空关键词A_Keywordvarchar50文章关键词摘要A_Summ

13、aryvarchar100文章摘要内容A_Contentvarchar8000文章正文内容非空审查标记A_CheckFlagint是否经过审查CHECK(0或1)缴费标记A_PayFlagint是否缴纳稿费CHECK(0或1) 表3.、稿件类型表(ArticleType)属性名存储代码类型长度备注完整性约束编号AT_IDvarchar10文章类型编号主键名称AT_Namevarchar20文章类型名称名非空表4.审稿人信息表(Editor)属性名存储代码类型长度备注完整性约束账号E_LoginNumvarchar20审稿人登录账号主键密码E_Passwordvarchar20审稿人登录密码非空

14、姓名E_Namevarchar20审稿人姓名非空电话E_PhoneNumchar11联系电话非空 表5.审稿人审查表(CheckArticle)属性名存储代码类型长度备注完整性约束审查编号C_IDint主键,自增稿件编号C_ArticleIDint主键审稿人C_EditorNumvarchar20审稿人账号主键评语C_CommentVarchar1000审稿人评语审稿时间C_CheckDatedatetime8 表6.管理员信息表(Manager)属性名存储代码类型长度备注完整性约束账号M_LoginNumvarchar20管理员登录账号主键密码M_Passwordvarchar20管理员登录

15、密码非空姓名M_Namevarchar20管理员姓名非空电话M_PhoneNumchar11联系电话非空 表7.管理员管理稿件表(ManageArticle)属性名存储代码类型长度备注完整性约束稿件编号MA_ArticleIDint主键管理员编号MA_LoginNumvarchar20管理员登录密码主键发表标志MA_Publishint是否决定发表CHECK(0或1)发表日期MA_PublishDatedatetime8审查标记MA_CheckFlagint是否经过审查CHECK(0或1)缴费标记MA_PayFlagint是否缴纳稿费CHECK(0或1)以上关系模式均为BCNF。3.2视图设计

16、为了方便程序查询,建立了如下用户视图:1.投稿人登录信息视图(账号,密码)CREATE VIEW W_LOGIN(W_LoginNum,W_Password)ASSELECT W_LoginNum,W_PasswordFROM Writer;2.审稿人登录信息视图(账号,密码)CREATE VIEW E_LOGIN(E_LoginNum,E_Password)ASSELECT E_LoginNum,E_PasswordFROM Editor;3.管理员登录信息视图(账号,密码)CREATE VIEW M_LOGIN(M_LoginNum,M_Password)ASSELECT M_LoginN

17、um,M_PasswordFROM Manager;4.创建包含稿件所有信息的视图CREATE VIEW Check_Article_View(E_LoginNum,A_ID,A_Title,W_RealName,W_PenName,A_Keyword,A_Summary,A_Content,A_WriterNum,A_CheckFlag,A_PayFlag,AT_Name,C_Comment)AS SELECT E_LoginNum,A_ID,A_Title,W_RealName,W_PenName,A_Keyword,A_Summary,A_Content,A_WriterNum,A_Ch

18、eckFlag,A_PayFlag,AT_Name,C_CommentFROM Article,ArticleType,CheckArticle,Editor,Writerwhere A_TypeNum = AT_ID AND A_WriterNum = W_LoginNum AND A_ID = C_ArticleID AND C_EditorNum = E_LoginNum5.创建待审稿件信息视图CREATE VIEW notSee(A_WriterNum,A_ID,A_Title,AT_Name,A_CheckFlag,A_PayFlag)ASSELECT A_WriterNum,A_I

19、D,A_Title,AT_Name,A_CheckFlag,A_PayFlagFROM ArticleType,Article left join CheckArticle on (A_ID = C_ArticleID)WHERE A_TypeNum = AT_ID6.创建已审稿件信息视图CREATE VIEW haveSeen(A_WriterNum,A_ID,A_Title,AT_Name,C_Comment,A_CheckFlag,A_PayFlag)ASSELECT A_WriterNum,A_ID,A_Title,AT_Name,C_Comment,A_CheckFlag,A_Pay

20、FlagFROM ArticleType,Article left join CheckArticle on (A_ID = C_ArticleID)WHERE A_TypeNum = AT_ID7.创建定稿管理视图CREATE VIEW Sure_Article_View(A_ID,A_Title,C_Comment,A_PayFlag,MA_Publish,MA_PublishDate)ASSELECT A_ID,A_Title,C_Comment,A_PayFlag,MA_Publish,MA_PublishDateFROM CheckArticle,Article left join

21、ManageArticle on (A_ID = MA_ArticleID)WHERE A_CheckFlag=1 and A_ID=C_ArticleID 8.创建审稿管理中的所有稿件视图CREATE VIEW All_Article_View(A_ID,A_Title,AT_Name,W_RealName,A_Keyword)AS SELECT A_ID,A_Title,AT_Name,W_RealName,A_KeywordFROM Article,ArticleType,WriterWHERE A_TypeNum = AT_ID AND A_WriterNum = W_LoginNum

22、3.3存储过程及触发器设计1.创建存储过程,统计指定作者的稿件信息CREATE PROCEDURE STASTICSA_WriterNum varchar(20)ASSELECT W_RealName,A_ID,A_Title,AT_Name,A_CheckFlag,A_PayFlag,C_Comment from Writer,ArticleType,Article LEFT join CheckArticle on (A_ID = C_ArticleID) WHERE A_WriterNum = A_WriterNum and W_LoginNum = A_WriterNum and A_

23、TypeNum=AT_ID;2.创建触发器,当Article表中A_PayFlag发生改变时,ManageArticle表中的MA_PayFlag也改变CREATE TRIGGER PayFLAG ON Article FOR UPDATE AS IF UPDATE(A_PayFlag) BEGIN UPDATE ManageArticle SET MA_PayFlag=i.A_PayFlag FROM ManageArticle br , Deleted d ,Inserted iWHERE br.MA_ArticleID=d.A_ID END; 3.创建触发器,当Article表中A_Ch

24、eckFlag发生改变时,ManageArticle表中的MA_CheckFlag也改变CREATE TRIGGER CheckFLAG ON Article FOR UPDATE AS IF UPDATE(A_CheckFlag) BEGIN UPDATE ManageArticle SET MA_CheckFlag=i.A_CheckFlag FROM ManageArticle br , Deleted d ,Inserted iWHERE br.MA_ArticleID=d.A_ID END; 4.创建触发器,当删除一片稿件时,同时删除CheckArticle中有关这篇文章的记录CRE

25、ATE TRIGGER DeleteCheckArticle ON Article AFTER DELETEAS DELETE CheckArticle FROM CheckArticle br , Deleted dWHERE br.C_ArticleID=d.A_ID5.创建触发器,当删除一片稿件时,同时删除ManageArticle中有关这篇文章的记录CREATE TRIGGER DeleteManageArticle ON Article AFTER DELETEAS DELETE ManageArticle FROM ManageArticle br , Deleted dWHERE

26、 br.MA_ArticleID=d.A_ID 6.创建触发器,当删除一个审稿人时,同时删除CheckArticle中由此审稿人审查的任务CREATE TRIGGER DeleteEditor ON Editor AFTER DELETEAS DELETE CheckArticle FROM CheckArticle br , Deleted dWHERE br.C_EditorNum=d.E_LoginNum4. 物理设计确定数据库物理结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、聚簇、日志、备份等的存储安排和存储结构,确定系统配置等。1、系统自动在每个表的主码上建立索引。5.

27、系统界面及代码实现包括以下几部分内容:1、 表间连接关系图图4.表连接关系样例图2、 CHECK约束设置图图5.CHECK约束设置样例图3、 系统实现界面图图6.用户登录界面图7.用户注册界面图8.投稿界面图9.查看待审稿件界面图10.查看已审稿件界面图10.投稿人修改个人资料界面图11.在线审稿界面图12.审稿人修改个人信息界面图13.管理员分派稿件界面图14.管理员发表稿件界面图15.管理员管理各个作者稿件界面图16.管理审稿人界面4、 关键代码 登录模块package 在线审稿投稿管理系统;import java.awt.*;import java.awt.event.*;import

28、javax.swing.*;import javax.swing.border.EmptyBorder;import java.sql.*;import 在线审稿投稿管理系统.Register;import 在线审稿投稿管理系统.WriterSystem;public class Login extends JFrame implements ItemListener JFrame frame=this;Connection conn;Statement stm;ResultSet rs;String url = jdbc:sqlserver:/localhost:1433;DatabaseN

29、ame=Management;public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() try Login frame = new Login();frame.setVisible(true); catch (Exception e) System.err.print(e.getMessage(););public Login() throws Exception Class.forName(com.microsoft.sqlserver.jdbc.SQLServer

30、Driver);conn=DriverManager.getConnection(url,aa,aa);stm=conn.createStatement();loginBtn= new JButton(登录);loginBtn.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String passwordStr=new String(password.getPassword();if (yonghu.getText().equals()|passwordStr.equals()

31、JOptionPane.showConfirmDialog(frame, 账号或密码未填写!, 提示, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE); else if (RadioButton=manager) try rs=stm.executeQuery(select M_LoginNum,M_Password from M_LOGIN);while(rs.next()if(rs.getString(M_LoginNum).equals(yonghu.getText() & rs.getString(M_Password)

32、.equals(passwordStr) frame.dispose();new ManagerSystem(yonghu.getText().setVisible(true);rs.close();stm.close();conn.close();JOptionPane.showConfirmDialog(frame, 账号或密码错误,请重新输入!, 提示, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE); catch (Exception e1) System.err.print(e1.getMessage();if (Ra

33、dioButton=writer) try rs=stm.executeQuery(select W_LoginNum,W_Password from W_LOGIN);while(rs.next()if(rs.getString(W_LoginNum).equals(yonghu.getText() & rs.getString(W_Password).equals(passwordStr)frame.dispose();new WriterSystem(yonghu.getText().setVisible(true);rs.close();stm.close();conn.close()

34、;JOptionPane.showConfirmDialog(frame, 账号或密码错误,请重新输入!, 提示, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE); catch (Exception e1) System.err.print(e1.getMessage();else if (RadioButton=editor) try rs=stm.executeQuery(select E_LoginNum,E_Password from E_LOGIN);while(rs.next()if(rs.getString(E_L

35、oginNum).equals(yonghu.getText() &rs.getString(E_Password).equals(passwordStr) frame.dispose();new EditorSystem(yonghu.getText().setVisible(true);rs.close();stm.close();conn.close();JOptionPane.showConfirmDialog(frame, 账号或密码错误,请重新输入!, 提示, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE); cat

36、ch (Exception e1) System.err.print(e1.getMessage(););loginBtn.setForeground(new Color(0, 0, 139);loginBtn.setFont(new Font(微软雅黑, Font.PLAIN, 12);loginBtn.setBounds( 135, 200, 60, 20);loginBtn.setBackground(new Color(176, 224, 230);backgroundLabel.add(loginBtn);registerBtn= new JButton(注册);registerBt

37、n.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) new Register().setVisible(true); );public void itemStateChanged(ItemEvent e) if (manager.isSelected() RadioButton = manager;if(writer.isSelected()RadioButton = writer;else if(editor.isSelected()RadioButton =editor;if

38、(RadioButton=manager | RadioButton=editor)registerBtn.setVisible(false);registerBtn.setEnabled(false);else registerBtn.setVisible(true);registerBtn.setEnabled(true); 注册模块public void actionPerformed(ActionEvent e)if(userName.getText().equals()|password.getText().equals()|passwordAgain.getText().equal

39、s()|realName.getText().equals()|phoneNum.getText().equals()|EmailNum.getText().equals()JOptionPane.showConfirmDialog(this, 请将必填信息填写完整!, 提示, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE); else if(!passwordAgain.getText().equals(password.getText()JOptionPane.showConfirmDialog(this, 两次输入的密码不

40、一致,请重新输入!, 提示, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE); else try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);conn=DriverManager.getConnection(url,aa,aa);stm=conn.createStatement();rs=stm.executeQuery(select W_LoginNum from Writer where W_LoginNum=+userName.getText()+);if(rs.next()JOptionPane.showConfirmDialog(this, 此账号已存在,请重新输入!, 提示, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE);else String sql=insert in

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号