基于struts2的BBS论坛数据库课程设计报告.doc_第1页
基于struts2的BBS论坛数据库课程设计报告.doc_第2页
基于struts2的BBS论坛数据库课程设计报告.doc_第3页
基于struts2的BBS论坛数据库课程设计报告.doc_第4页
基于struts2的BBS论坛数据库课程设计报告.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

成绩课 程 设 计 课程名称_数据库系统概论_ 题目名称_基于struts2的bbs论坛_ 学生学院_计算机学院_ 专业班级_14级软件工程4班_ 学 号_ _ 学生姓名_ 指导教师_2016 年 12月 28日评价标准分数比例(%)成绩论文论文结构包含:1、相关技术介绍、需求分析、2、概念结构设计(涉及的实体至少三个以上)、3、逻辑结构设计(有完整性约束说明)、4、数据库物理设计、5、数据库完整性设计(违反实体、参照完整性时的解决办法,比如触发器、存储过程等)5、数据库安全性设计、6、数据库实施、系统测试方案和测试报告、7、系统的主要功能和使用说明、系统安装说明。要求论文完整、内容详细,格式规范。40程序1、 系统运行正确;2、功能完善:有增、删、改、查功能,输入、输出功能;3、有基本的统计、报表功能4、有多表连接查询、自身连接查询、字符串匹配查询、模糊查询、分组查询等。5、工作量饱满;6、系统实现技术的难度。30数据库设计E-R图设计正确,至少3个实体;数据库逻辑结构设计规范化;数据库物理设计合理。30总评成绩 优 良 中 及格 不及格总分目 录目录1 引言41.1课题来源41.2课题研究主要内容41.3主要工作41.4术语定义42 命名约定52.1物理命名约定52.2数据实体命名约定53 需求分析53.1信息要求分析53.3数据字典及安全性、完整性要求分析64 概念结构设计94.1数据实体描述及分ER图94.2整体ER图125 系统概要设计135.1数据库逻辑结构设计135.2数据库物理设计135.3系统总体框架136 系统详细设计156.1数据库实施156.2数据库的数据完整性设计176.3数据的安全设计176.4系统功能模块的设计与实现186.4.6我的留言256.6数据库性能检测与备份设计25备份:通过数据转储和登入日志文件实现对数据库的备份设计,256.7系统安装使用说明256.8如何运行257 回顾与展望26参考文献2641 引言1.1课题来源开发基于Struts2的BBS论坛系统,本人最近刚学完struts2,实现该系统能同时复习数据库和struts2的知识。1.2课题研究主要内容本文档主要是亚久个人信息管理系统1.3主要工作设计课题期间主要工作为:设计数据库,创建数据库,开发环境搭建,代码编写1.4术语定义JSP名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它1 是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。EL表达式$为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法。它是一种简单的语言,基于可用的命名空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型)的访问符、映射到 Java 类中静态方法的可扩展函数以及一组隐式对象。Struts2Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。Ognl表达式OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。一种比EL表达式更为强大的语言AJAXAJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。AJAX = 异步 JavaScript和XML(标准通用标记语言的子集)。AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面。2 命名约定2.1物理命名约定命名备注verifyCode验证码registerCode注册码pn页码2.2数据实体命名约定本系统数据库采用MySQL数据库,系统数据库名称db-librarySys,共包含5表,下面给出数据表概要说明及数据表树形结构图3 需求分析3.1信息要求分析BBS(BulletinBoardService,公告牌服务)是Internet上的一种电子信息服务系统,它提供一块公共电子白板,每个用户都可以在上面书写,并且可发布信息或提出看法。大部分BBS由教育机构、研究机构或商业机构管理,象日常生活中的黑板报一样,电子公告牌按不同的主题,分主题分成很多个布告栏。布告栏的设立的依据是大多数BBS使用者的要求和喜好,使用者可以阅读他人关于某个主题的最新看法,也可以将自己的想法毫无保留地贴到公告栏中。同样地,别人对你的观点的回应也是很快的。如果需要独下的交流,也可以将想说的话直接发到某个人的电子信箱中,如果想与正在使用的某个人聊天,可以启动聊天程序加人闲谈者的行列。虽然谈话的双方素不相识,却可以亲近地交谈。在BBS里,人们之间的交流打破了空间、时间的限制。在与别人进行交往时,无须考虑自身的年龄、学历、知识、社会地位、财富、外貌、健康状况,而这些条件往往是人们在其他交流形式中无可回避的。同样地,也无从知道交谈的对方的真实社会身份。这样,参与BBS的人可以处于一个平等的位置与其他人进行任何问题的探讨。这对于现有的所有其他交流方式来说是不可能的。3.2处理要求分析增:用户注册用户后,用户表增加一个用户。用户登录后发表帖子后,增加一篇帖子,用户发表回复后,增加一个回复,用户回复楼层后,增加一个楼中楼回复。删:用户能删除自己的帖子。查:用户能浏览帖子,及个人用户信息。改:用户能修改自己的个人信息。3.3数据字典及安全性、完整性要求分析该系统的数据库有下面五张表构成:用户表:user论坛板块表:forum帖子表:psot回复表:reply楼中楼回复表:inReply3.3.1论坛板块表:forum表中列名数据类型及长度约束Fid(论坛板块id)INT主键fname(板块名称)VARCHAR(20)非空Remark(板块备注)VARCHAR(30)非空url(板块图标地址)VARCHAR(50)非空PostCount(论坛帖子回复数)INT非空LastPostTime(论坛最后回复时间)DateTime非空3.3.2 用户表表中列名数据类型及长度约束Uid(用户id)INT主键Uname(用户名)VARCHAR(20)非空Password(用户名)VARCHAR(20)非空Nickname(用户昵称)VARCHAR(20)非空avaUrl(用户头像地址)VARCHAR(50)Email(用户邮箱)VARCHAR(50)非空,独一无二Gender(用户性别)VARCHAR(1)男或女,非空Birthday(用户生日)DatepostCount(用户发帖数)INT非空EX(用户经验)INT3.3.3 帖子表(post)表中列名数据类型及长度约束Pid(帖子id)INT主键Uid(发表的用户id)INT非空,外键Fid(板块id)INT非空,外键Title(标题)VARCHAR(30)非空Content(内容)VARCHAR(520)非空postTime(发表事件)DATETIME非空LastReplyTime(最后回复时间)DATETIME非空LastReplyId(最后回复id)INT非空lastReplyName(最后回复用户)INT非空replyCount(回复总数)INT非空readCount(查看总数)INT非空3.3.4 回复表(reply)表中列名数据类型及长度约束Rid(回复id)INT主键Uid(用户id)INT外键Pid(帖子id)INT外键inReplyCount(楼中楼回复总数)INT非空ContentVARCHAR(520)非空replyTime(回复时间)DATETIME非空3.3.4 楼中楼回复表(inreply)表中列名数据类型及长度约束irid (楼中楼回复id)INT主键Rid(回复id)INT非空,外键Uid(用户id)INT非空,外键Unickname(用户昵称)VARCHAR(20)非空uavaUrl(用户头像地址)VARCHAR(50)非空Ruid(被回复者id)INT非空,外键Runickname(被回复者昵称)VARCHAR(20)非空Content(回复内容)VARCHAR(520)非空replyTime(回复时间)DATETIME非空4 概念结构设计4.1数据实体描述及分ER图4.1.1个人信息实体经验发帖数邮箱头像地址用户id密码昵称性别出生日期用户4.1.2论坛板块回复数名称备注板块id论坛板块图标地址最后回复时间4.1.3帖子表用户id发表时间发表事件标题帖子id板块id标题帖子最后回复用户发表事件最后回复id 发表事件最后回复时间发表事件4.1.4回复表回复内容用户id回复id帖子id回复楼中楼回复总数4.1.5用户昵称回复id楼中楼回复表回复时间楼中楼回复id回复内容楼中楼回复表被回复者id用户头像地址4.2整体ER图论坛板块1用户表属于属于11属于帖子表mm1属于11属于属于mmm楼中楼回复回复m5 系统概要设计5.1数据库逻辑结构设计实体转换成的关系模式有:论坛板块(论坛板块id,板块名称,板块备注,板块图标地址,论坛帖子回复数,论坛最后回复时间);用户表(用户id,用户名,用户密码,用户昵称,用户头像地址,用户邮箱,用户性别,用户生日,用户发帖数,用户发帖数);用户表(帖子id,发表的用户id,板块id,标题,内容,发表时间,发表事件,最后回复id,最后回复用户,回复总数,回复总数);论坛板块(回复id,用户id,帖子id,楼中楼回复总数,回复内容,回复时间);论坛板块(楼中楼回复id,回复id,用户id,用户昵称,用户头像地址,被回复者id,被回复者昵称,回复内容,回复时间);字体为粗体的属性为各个模式的主码,带下划线的属性为各个属性的外码。5.2数据库物理设计5.1 物理设计阶段的目标和任务 数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在 这个阶段中要完成两大任务: 1) 确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构; 对物理结构进行评价,评价的重点是时间和空间效率。数据存储方面 5.3系统总体框架根据用户使用管理系统时管理的信息类别的不同可以分为以下几个模块:个人信息,备忘录,通信录,日记,财务管理。BBS论坛系统退出删除添加查看删除修改添加查看删除修改添加查看搜索查看查看添加修改删除退出论坛板块楼中楼回复回复用户贴6 系统详细设计6.1数据库实施6.1.1数据表设计论坛板块表设计用户表设计帖子表设计回复表设计楼中楼回复表设计6.2数据库的数据完整性设计数据完整性,从应用的层次来看,主要在于三个层次的数据验证,即数据库层,应用界面层和业务逻辑层。数据库层级中的数据完整性验证,是最基本的数据验证。数据库通过主键的唯一性保证实体的唯一;通过外键,保证引用完整性;通过数据类型,保证数据值正确;通过非空约束,保证数据不含无意义值;通过附加的约束(如:check等),保证数据值在范围之内;同时,触发器还可以保证简单的表之间的完整性。应用界面处理的数据完整性,主要是用户输入上的数据验证;通过界面的验证,让后面的业务逻辑和数据库接收比较正确的数据。业务逻辑中处理的完整性,主要是验证数据在业务方面的正确性,体现在多表间复杂关系的验证,有些资料中称作是业务规则。6.3数据的安全设计管理员可删除,修改所有用户信息,发表帖子回复用户能修改个人信息,发表帖子回复游客只能浏览6.4系统功能模块的设计与实现6.4.1.1静态页面设计主页论坛帖子展示页 帖子展示页个人信息主页6.4.1.2静态页面总结由于本人并不擅长于前段,所以前段页面花了较长时间,基本一个页面花了12天。整体页面主要参考rainmetrer社区,部分参考百度贴吧6.4.2用户注册本论坛不用即可浏览所有页面,但是只有注册用户才能使用大部分功能,以下是注册界面,页面采用JSP+AJAX+Struts2技术,可以在输入用户名,邮箱检测是否用户名,邮箱是否已经被使用,下图是因为,992975556这个用户已经在数据库中存在,所有提示用户名已经被使用。改功能实现的数据库代码为public int findUser(String username) throws SQLException String sql = select * from user where uname=?; QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource(); List rows = qr.query(sql,new ColumnListHandler(),username); return rows.size(); 。本人使用了DBUtils,可以简化查询操作。并且传入了preurl(即进入注册页面前一个页面的url地址),这样用户在注册完成后能立即回到,刚开始的页面。6.4.3展示论坛板块在进入网址的欢饮页是一个直接跳转的网页。因为进入主页需要查询数据库,把板块信息取出做展示。我在数据库中插入了4个板块(java,c+,c,php)。实现改功能的数据库代码为public List findAllForum() throws SQLException String sql = select * from forum order by fname; QueryRunner qr = new QueryRunner(); return qr.query(IndexAciton.connection.get(),sql,new BeanListHandler(Forum.class);将代码能将数据封装一个javaBean的List集合中。经过sevice,和action返回客户端做展示。6.4.4展示论坛帖子列表展示帖子列表的实现方法与展示板块相似,但做了分页处理,所以使用了limit一下是该功能实现的代码,public List showList(int fid,int pn) throws SQLException String sql = select * from post,user where post.uid=user.uid and fid=? order by lastReplyTime desc limit ?,?; QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource(); return qr.query(sql,newBeanListHandler(Post.class),fid,(pn-1)*10,10);6.4.5回复展示该功能和之前的也差不多但因为加入了楼中楼,其实这里复杂了很多,我也是潜心研究了一两天才把功能实现的。代码如下Sevice和dao代码:sevice代码:public List showPost(int pid,int pn) throws SQLException PostDao dao = new PostDao(); List posts = dao.showPost(pid,pn); for(int i=0;iposts.size();i+) Reply reply = posts.get(i); Page page = new Page(); page.setCurrentPage(1); int count = reply.getInReplyCount(); if(count%5 = 0) page.setTotalPage(reply.getInReplyCount()/5); else page.setTotalPage(reply.getInReplyCount()/5+1); ReplyDao dao2 = new ReplyDao(); List inReplies = dao2.listInReply(reply.getRid(),page.getCurrentPage(); reply.setPage(page); reply.setInReplies(inReplies); return posts; dao代码public List showPost(int pid,int pn) throws SQLException String sql = select * from reply,user where reply.uid=user.uid and pid=? limit ?,?; QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource(); return qr.query(sql,new BeanListHandler(Reply.class),pid,(pn-1)*10,10); public List listInReply(int rid, int pn) throws SQLException String sql = select * from inreply where rid=? limit ?,?;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论