基于WEB的易语言论坛系统设计与实现_第1页
基于WEB的易语言论坛系统设计与实现_第2页
基于WEB的易语言论坛系统设计与实现_第3页
基于WEB的易语言论坛系统设计与实现_第4页
基于WEB的易语言论坛系统设计与实现_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计(论文)论文题目基于WEB的易语言论坛系统的设计与实现thesisTopicDesignandImplementationforBBSSystembasedonWEB学生姓名学号所在院系软件工程学院专业班级软件工程1102班导师姓名职称完成日期2015年5月18日2015年5月18日编号:__________毕业设计(论文)答辩许可证软件工程学院软件工程系软件工程专业学生所编写的毕业设计(论文)56页,字数22874,符合毕业设计(论文)大纲的要求。经审查:该生已学完教学计划规定的全部课程,成绩合格,毕业设计电子文档最后一稿已交,准予参加毕业设计(论文)答辩。相关材料材料名称数量毕业设计(论文)1册毕业论文缩写1册答辩汇报稿1份毕业设计(论文)电子版(最后一稿磁盘文件)1套指导教师:(签名)院长(系主任):(签名)年月日毕业设计(论文)任务书毕业设计(论文)题目:基于WEB的易语言论坛系统的设计与实现毕业设计(论文)要求及原始数据(资料):(1)综述国内JavaEEWEB应用开发技术的现状,了解JavaEEWEB项目开发的相关技术。(2)掌握JavaEEWEB项目开发的基础知识与基本能力,掌握SpringMVC与Hibernate两大框架技术,掌握使用框架技术开发JavaEEWEB项目的能力。(3)设计并实现一个基于WEB的论坛系统项目,总结通过此次项目实战在知识与技能方面的收获。(4)训练检索文件和利用文献资料的能力,训练撰写技术文档与学位论文的能力。(5)题目:应简洁、明确、有概括性,字数不宜超过20个字;(6)摘要:要有高度的概括力,语言精练、明确,中文摘要约300字;(7)关键词:从论文标题或正文中挑选3~5个,最能表达主要内容的词作为关键词(8)目录:写出目录,标明页码;(9)正文:本科毕业论文正文字数一般应在25000字以上,毕业论文正文:包括前言、本论、结论三个部分:

前言(引言)是论文的开头部分,主要说明论文写作的目的、现实意义、对所研究问题的认识,并提出论文的中心论点等。前言要写得简明扼要,篇幅不要太长。

本论是毕业论文的主体,包括相关需求分析,设计,编码,测试,界面体现,流程介绍等,主要是界面设计和代码的编写及效果体现。

结论是毕业论文的收尾部分,是围绕本论所作的结束语。其基本的要点就是总结全文,加深题意。

(10)谢辞:简述自己通过做毕业论文的体会,并应对指导教师和协助完成论文的有关人员表示谢意;

(11)参考文献:在毕业论文末尾要列出在论文中参考过的专著、论文及其他资料,所列参考文献应按文中参考或引证的先后顺序排列;

毕业设计(论文)主要内容:1.描述国内网上论坛系统的现状;2.综述国内JavaEEWEB应用开发技术的概况;3.简单介绍JavaEEWEB项目开发的相关技术;4.描述框架技术在JavaEEWEB项目开发的重要性;5.描述本项目开发环境的配置与项目运行的部署;6.分析本项目需要的功能并做出相应的设计;7.实现本项目的所有功能并保证足够的健壮性;8.总结通过本项目所获得的知识与技能的提升;学生应交出的设计文件(论文):1.内容完整、层次清晰、叙述流畅、排版规范的毕业设计论文;2.包括毕业设计论文、源程序等内容在内的毕业设计电子文档及其它相关材料。主要参考文献(资料):[1]孙鑫.JavaWeb开发详解[M].电子工业出版社,2006[2]孙卫琴,李洪成.Tomcat与JavaWeb开发技术详解[M].电子工业出版社,2003[3]袁建洲.JavaScript编程宝典.人民邮电出版社,2007[4]李刚.基于J2EE的AJAX宝典.电子工业出版社,2007[5]耿祥义.JSP基础编程[M].清华大学出版社,2004[6]林信良.JSP&Servlet学习笔记[M].清华大学出版社,2012,5[7]孙卫琴.精通hibernate[M].电子工业出版社,2005,4[8]林寒超,张南平.Hibernate技术的研究[J].计算机技术与发展,2006,16(11)[9]毕建信.基于MVC设计模式的Web应用研究与实现[D].武汉理工大学,2006,5[10]威尔德,斯尼德等著,赵利通译.SpringFramework2入门经典[M].清华大学出版社,2009[11]CraigWalls,RyanBreidenBach.SpringInAction[M].ManningPublications,2006[12]AmuthanG.SpringMVC:Beginner'sGuide[M].PacktPublishing,2014[13]DataflowanalysisandtestingofJSP-basedWebapplications[J].Informationandsoftwaretechnology,2006.48(12)专业班级软件工程1102班学生姓名:要求设计(论文)工起止日期:2015年3月23日~2015年7月3日指导教师签字:日期:2015年3月23日教研室主任审查签字:日期:系主任批准签字:日期:基于WEB的易语言论坛系统的设计与实现摘要论坛,是Internet上的一种电子信息服务系统。它提供一块公共电子白板,每个用户都可以在上面书写,可发布信息或提出看法。它是一种交互性强,内容丰富而及时的Internet电子信息服务系统,用户在BBS站点上可以获得各种信息服务、发布信息、进行讨论、聊天等等。贴吧,是一种基于关键词的主题交流社区,它与搜索紧密结合,准确把握用户需求,为兴趣而生。贴吧的使命是让志同道合的人相聚。贴吧的组建依靠搜索引擎关键词,不论是大众话题还是小众话题,都能精准地聚集大批同好网友,它为人们提供了一个表达和交流思想的自由网络空间,并以此汇集志同道合的网友。本系统借鉴贴吧基于关键词交流的思想,扩大了论坛的现有功能,使之不仅仅局限于定义好的的关键词。用户可以创建原本不存在的关键词主题站,可以针对任何感兴趣的主题在相应的主题站里发表帖子,浏览帖子,参与讨论,扩宽了获取信息的渠道,真正做到了信息共享。系统采用了JSP、Ajax、Servlet以及SpringMVC与Hibernate两大框架技术实现,实现了预期的功能。关键词:论坛;贴吧;MVC;JSPDesignandImplementationforBBSSystembasedonWEBAbstractTheforum,isanelectronicinformationservicesystembasedonInternet.Itprovidesapublicelectronicwhiteboard,eachusercanwriteonandreleaseorviewsinformation.Itisakindofinteractiveinternetelectronicinformationservicesystemwithrichcontentandtimely,usersontheBBSsitecanobtainavarietyofinformationservices,releaseinformation,discussions,chatandsoontoget.ThePostBar,isaninternetcommunitybasedonkeysubject,itisrelatedtothesearchclosely,grasptheneedsofusersaccurately,bornininteresting.PostBar'smissionistomeetlike-mindedpeople.PostBarreliesonsearchenginekeywordsformation,whetheritisapopulartopicoranichetopic,itcangatheralargenumberofnetizensaccurately,itprovidesafreenetworkspaceforpeopletoexpressionandexchangeideas,andthusbringingtogetherlike-mindedfriends.ThissystemreferencesPostBarkeywordbasedontheideaofcommunication,expandtheexistingfunctionsoftheforum,Letitisnotlimitedtodefinedkeywords.Userscancreatekeywordssubjectstationwhichwasnotexistanduserscanbedirectedtoanyinterestingtopicthecorrespondingsubjectstation,publishandbrowseposts,participateinthediscussion,broadeningthechannelsforobtaininginformation,sharinginformationreally.SystemadoptedJSP、Ajax、ServlettechnologiesandSpringMVC、Hibernateframeworks,realizedtheexpectedfunction.Keywords:TheForum;ThePostBar;MVC;JSP目录TOC\o"1-3"\h\u74151绪论 .2技术可行性分析技术可行性是最难决断和最关键的问题。根据系统功能、性能及实现体统的各项约束条件,从技术的角度研究系统实现的可行性。本系统使用Java语言开发,同时采用了html,jsp,css,javascript,Ajax,servlet以及SpringMVC与Hibernate两大框架技术,在数据库上采用的是Oracle数据库,服务器采用的是Tomcat。本系统使用到了这些技术,但是涉及却不是很深,作者可凭借所学知识以及网络来解决所遇见的问题。2.3运行可行性分析运行可行性研究内容包括新系统规定的运行方式是否可行,如果新系统是建立在原来已担负起它任务的计算机系统上的,就不能要求它在实时在线状态下运行,以免与原有的任务相矛盾。另外就是用户是否可以熟练的运用它。本系统最终将会运行在本地计算机上,即使需要联网运行,也可以使用花生壳软件来映射内网,达到使用域名访问该系统的效果。本地计算机只负担该项目一个运行任务,而且本系统的用户量也很少,所以运行在本地计算机上没有任何问题。2.4法律可行性分析法律可行性是指研究在系统开发过程中可能涉及的各种合同、侵权、责任以及各种与法律相抵触的问题。本系统在开发过程中使用的都是免费的开源的软件以及代码,所参考的资料也是免费的或者是通过付费获得的,所以不会涉及任何法律相关的问题。2.5开发方案可行性提出系统实现的各种方案并进行评价之后,从中选择一种最优秀的方案。本系统经过了作者深思熟虑,结合作者之前在其他项目上的开发经验,最终确定下了一套开发方案,这套开发方案完全可行。3需求分析需求分析是在软件开发的初始阶段进行,它对于整个软件开发过程以及软件开发后质量是举足轻重的。随着软件系统复杂性的提高及规模的扩大,需求分析在软件开发中所处的地位愈加突出。所谓需求,是指用户对目标软件系统在功能、行为、性能设计约束等方面的要求。在需求分析的研究中,系统开发人员必须对用户的需求进行调查和分析,结合实际环境的特征,正确定义目标软件的特征。所谓需求分析,是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。可以说,在软件工程当中的“需求分析”就是确定要计算机“做什么”,要达到什么样的效果。可以说需求分析是做系统之前必做的。3.1需求采集在软件工程中,需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。需求分析是软件工程中的一个关键过程。在这个过程中,系统分析员和软件工程师确定顾客的需要。只有在确定了这些需要后,他们才能够分析和寻求新系统的解决方法。需求分析阶段的任务是确定软件系统功能。3.1.1功能需求就本系统来说,本系统属于BBS系统,而且结合了百度贴吧开放关键词的设计模式,应该具备如下功能,现在按照游客与会员(登录用户)来介绍。游客:是指一些访问本系统的时候没有进行过登录操作的用户。游客只有查询的权限,可以访问本系统包含的所有贴吧,可以浏览某个贴吧的所有的帖子,但是游客没有执行任何操作的权限,游客不能创建新的贴吧,不能发表新的帖子,不能回复已有的帖子。游客可以通过系统提供的注册页面来获得系统承认的账号,通过账号登录本系统,以获得与会员一致的权限。会员:会员是本系统的核心用户,他们参与在贴吧建设的方方面面。会员在拥有游客的所有权限的同时,还拥有更多与系统进行交互的权限。会员可以更新自己账号的信息,可以创建暂不存在的贴吧,可以在任何贴吧发表新的帖子,可以回复任何已存在的帖子。会员们可以通过帖子进行交流,当有会员与你发生信息交互时,系统会给出相对应的通知,而会员也可以通过查看通知来获得信息详情。管理员用户,即吧主,也是会员,是某一个贴吧的管理者,肩负着壮大该贴吧的责任。会员可以通过创建一个贴吧来成为该贴吧的吧主,拥有该贴吧的最高权限。可以修改该贴吧的信息,可以管理本吧的帖子。吧主仅仅在属于其自己的贴吧才是吧主,到了别的贴吧,其权限就会变成普通会员。此外,吧主还拥有着游客和会员的所有权限。3.1.2性能需求本系统是BBS论坛系统,为了给用户较好的体验,需要本系统响应快速,所以在此对硬件及软件做了需求分析。硬件环境:处理器:Inter酷睿i5或更高内存大小:4GB或更高硬盘空间:10GB或更高软件环境:操作系统:Win7或更高服务器:Tomcat6.0或更高数据库:OracleDatabase10G或更高3.2功能模块画出功能模块图是软件工程过程中的一个重要环节,它将显示出工程所要实现的各种功能,并分类,然后软件工程师根据功能模块图来通过代码具体实现这些功能。功能模块图就是讲系统的功能进行分解,按功能从属关系表示的图表。管理系统的各子系统可以看作是系统目标下层的功能,对其中每项功能可以继续分解为第三、第四,甚至更多的功能。图中的每一个框都称为一个功能模块,其功能根据实际情况分的大小不完全相同。图3-1贴吧系统用户类型及对应功能概览图3.2.1基本功能设计通过需求分析,论坛的基本功能可以从众多的需求中筛选出来。顾名思义,基本功能就是构成论坛系统的必要功能,具备这些功能的Web系统即是论坛。浏览帖子。发表了帖子,就要供他人浏览查看,与他人分享自己的想法和经验。发表帖子。论坛最初是为了相互讨论话题而诞生的,发表帖子就是表达自己的看法,与他人进行讨论,因此发帖是论坛首要的功能。回复帖子。浏览了他人发表的帖子,想要发表自己的想法,参与讨论,就可以回复这个帖子。其实,浏览帖子→发表帖子→回复帖子三大功能周而复始的循环进行,就构成论坛。每个参与论坛的人,主要目的就是发帖,查看已经发表的帖子,针对自己感兴趣的帖子进行回帖,参与讨论。三大基本功能的相互关系如图发表帖子帖子列表发表帖子帖子列表浏览帖子回复帖子浏览帖子回复帖子图3-2贴吧系统基本功能相互关系图3.2.2扩展功能设计除了基本功能之外,其他的论坛功能都是扩展功能。注册登录。用户登录系统之后,用户信息被系统读取到,用户执行操作的时候,系统直接获取这个信息,所以会员的权限比游客高。分板块浏览帖子。其实不同的贴吧就是不同的板块,在某一个主题为某关键词的贴吧里只讨论与该关键词相关的话题。这样,就使得对某一话题感兴趣的用户不会被其他帖子干扰,也有利于相同兴趣的用户相互间讨论,不易跑题。查看用户信息。每一个用户可以查看所有用户的信息。删除帖子。如果用户发表了不符合论坛规则的帖子,则需要管理员删除这些帖子,这就引出了删除帖子的扩展功能。置顶帖子。帖子一般是根据发表以及回复时间到序排列的,这样先发的帖子就慢慢排到后面,管理员如果需要强调某些帖子重要,又必看性,就要打乱默认的排列顺序,将这些帖子放在列表的最前端,不再按照时间进行顺序的变化,但是还要保证其他帖子按照时间变化顺序进行排列,这就引出了置顶帖子的扩展功能。精华帖子。如果管理员认为某个帖子的内容非常好,可以打上标记,推荐给看帖的用户,这就引出了指定精华帖的扩展功能。用户可以选择只看打上标记的精华帖。搜索帖子。论坛中的帖子越来越多,用户需要从大量的帖子中找到自己需要的内容,这就引出了搜索帖子的扩展功能。设置参数。论坛一般有一些初始化信息,比如论坛名称,每页显示帖子数量等参数信息,用户可以在页面底部设置这些信息。查看通知信息。比如说管理员删帖,删帖后系统会提醒发帖用户。查看回复信息。在用户发帖或回帖之后,被其它用户回帖,系统也会给出相应的提醒信息。查看提到情况。有时候别人发帖回特别提醒你一下(@用户),系统也会做出相应的提醒。4系统设计4.1数据库表设计数据库系统是在文件系统的基础上发展而来的,经历了层次数据库、网状数据库、关系数据库三个阶段。由于关系数据库采用人们比较容易理解和接受的二维表格来组织数据,发展迅速,已成为数据库产品的主流。本次系统设计所使用的数据库就是关系数据库Oracle。Oracle数据库管理系统是一项全面完整的数据库与分析产品。Oracle容易学习、使用,介绍、学习资料比较多,Oracle全面支持Web功能的数据库解决方案。与此同时,Oracle11g提供了高性能、伸展性、可用性和安全性,并能更方便地在低成本服务器和存储设备组成的网络上运行,相对过往版本而言,Oracle11g具有了于总不同的特性,这也是企业数据库系统在激烈市场竞争中克敌制胜的关键所在。正是由于Oracle和其它的大型数据库相比较,Oracle具有可靠的安全性、较快的存储速度、高度的兼容性和可扩展性、数据的大量性、数据保存的持久性、数据的共享性、简单易用等等一系列的特性。因此,我采用了Oracle11g作为后台的数据库。本系统的数据库暂时包含了7张表,分别为TABLE_MEMBER,TABLE_LEVEL,TABLE_TIEBA,TABLE_TIEZI,TABLE_FLOOR,TABLE_MESSAGE,TABLE_REMIND。他们之间存在一些依赖或包含的关系,系统可以有很多贴吧,每个贴吧下可以有很多帖子,每个帖子下可以有很多层楼,每层楼又可以包含很多个信息。下面将对这几张表作相应的介绍。4.1.1ER图分析E-R模型是对现实世界的一种抽象。它的主要成分是实体、联系和属性。使用这三种成分,我们可以建立许多应用环境的ER模型。本系统的实体和属性的定义如下:图4-1会员信息实体图图4-2贴吧信息实体图图4-3帖子信息实体图图4-4楼层信息实体图图4-5信息信息实体图图4-6提心信息实体图4.1.2数据库表设计TABLE_MEMBER会员表字段描述字段名类型说明id_memberNUMBER(17)主键,会员id,根据注册时间得到的17位数字usernameVARCHAR2(20)用户名passwordVARCHAR2(32)密码,MD5加密后为32位字符串phoneVARCHAR2(11)电话emailVARCHAR2(30)邮箱genderVARCHAR2(3)性别,只能为‘男’或‘女’birthdayVARCHAR2(10)生日,格式为‘yyyy-MM-dd’addressVARCHAR2(150)地址qqnumberVARCHAR2(11)QQ账号signatureVARCHAR2(150)个性签名experienceNUMBER(10)经验值roleNUMBER(1)角色,1.普通会员0.吧主,会员在每个吧的角色都不同,进入贴吧会自动更新statusNUMBER(1)状态,1.正常2.加黑3.封禁(有专门的加黑表,封禁表),会员在每个吧的这些状态不同,进入贴吧会自动更新表4-1TABLE_MEMBER会员表关键建表语句CONSTRAINTpk_member_1PRIMARYKEY(id_member)TABLE_TIEBA贴吧表字段描述字段名类型说明id_tiebaNUMBER(17)主键,贴吧id,根据创建时间得到的17位数字id_memberNUMBER(17)外键,吧主id,根据注册时间得到的17位数字nameVARCHAR2(30)贴吧名称signatureVARCHAR2(150)贴吧签名statusNUMBER(1)状态,1可视0不可视表4-2TABLE_TIEBA贴吧表关键建表语句CONSTRAINTpk_tieba_1PRIMARYKEY(id_tieba),CONSTRAINTfk_tieba_2FOREIGNKEY(id_member)REFERENCEStable_member(id_member)TABLE_TIEZI帖子表字段描述字段名类型说明id_tiebaNUMBER(17)主键,外键,贴吧id,根据创建时间得到的17位数字id_tieziNUMBER(17)主键,帖子id,根据发帖时间得到的17位数字id_memberNUMBER(17)外键,会员id,根据注册时间得到的17位数字name_memberVARCHAR2(20)会员用户名,发帖用户statusNUMBER(1)状态,1可视0不可视titleVARCHAR2(150)帖子标题表4-3TABLE_TIEZI帖子表关键建表语句 CONSTRAINTpk_tiezi_12PRIMARYKEY(id_tieba,id_tiezi), CONSTRAINTfk_tiezi_1FOREIGNKEY(id_tieba)REFERENCEStable_tieba(id_tieba), CONSTRAINTfk_tiezi_3FOREIGNKEY(id_member)REFERENCEStable_member(id_member)TABLE_FLOOR楼层表字段描述字段名类型说明id_tiebaNUMBER(17)主键,外键,贴吧id,根据创建时间得到的17位数字id_tieziNUMBER(17)主键,外键,帖子id,根据发帖时间得到的17位数字id_floorNUMBER(17)主键,楼层id,根据发帖时间得到的17位数字id_memberNUMBER(17)外键,会员id,根据注册时间得到的17位数字name_memberVARCHAR2(20)会员用户名,发楼用户statusNUMBER(1)状态,1可视0不可视表4-4TABLE_FLOOR楼层表关键建表语句 CONSTRAINTpk_floor_123PRIMARYKEY(id_tieba,id_tiezi,id_floor), CONSTRAINTfk_floor_12FOREIGNKEY(id_tieba,id_tiezi)REFERENCEStable_tiezi(id_tieba,id_tiezi), CONSTRAINTfk_floor_4FOREIGNKEY(id_member)REFERENCEStable_member(id_member)TABLE_MESSAGE信息表字段描述字段名类型说明id_tiebaNUMBER(17)主键,外键,贴吧id,根据创建时间得到的17位数字id_tieziNUMBER(17)主键,外键,帖子id,根据发帖时间得到的17位数字id_floorNUMBER(17)主键,外键,楼层id,根据发帖时间得到的17位数字id_messageNUMBER(17)主键,楼层id,根据发帖时间得到的17位数字id_fromNUMBER(17)外键,会员id,根据注册时间得到的17位数字name_fromVARCHAR2(20)会员用户名,信息发送人id_toNUMBER(17)外键,会员id,根据注册时间得到的17位数字name_toVARCHAR2(20)会员用户名,信息接收人statusNUMBER(1)状态,1可视0不可视contentVARCHAR2(3000)信息内容表4-5TABLE_MESSAGE信息表关键建表语句 CONSTRAINTpk_message_1234PRIMARYKEY(id_tieba,id_tiezi,id_floor,id_message), CONSTRAINTfk_message_123FOREIGNKEY(id_tieba,id_tiezi,id_floor)REFERENCEStable_floor(id_tieba,id_tiezi,id_floor), CONSTRAINTfk_message_5FOREIGNKEY(id_from)REFERENCEStable_member(id_member), CONSTRAINTfk_message_7FOREIGNKEY(id_to)REFERENCEStable_member(id_member)TABLE_REMIND提醒表字段描述字段名类型说明kindNUMBER(1)提醒类型,1.通知2.回复3.提到id_remindNUMBER(17)主键,提醒id,根据创建时间得到的17位数字id_tiebaNUMBER(17)贴吧id,根据创建时间得到的17位数字nameVARCHAR2(30)贴吧名称id_tieziNUMBER(17)帖子id,根据发帖时间得到的17位数字tieleVARCHAR2(150)帖子标题id_floorNUMBER(17)楼层id,根据发帖时间得到的17位数字id_messageNUMBER(17)信息id,根据创建时间得到的17位数字id_fromNUMBER(17)外键,会员id,根据注册时间得到的17位数字name_form会员用户名,提醒发送人id_toNUMBER(17)外键,会员id,根据注册时间得到的17位数字name_to会员用户名,提醒接收人statusNUMBER(1)状态,1.未读0.已读contentVARCHAR2(3000)提醒内容表4-6TABLE_REMIND提醒表关键建表语句 CONSTRAINTpk_remind_12PRIMARYKEY(kind,id_remind)4.2功能设计4.2.1登录注册登录与注册功能几乎是WEB项目里不可或缺的存在,当然本论坛系统也不例外。在本系统里,登录注册模块完全独立了出来,单独设置成了一个JSP页面,在其他所有页面里面调用该页面即可。系统会根据不同情况在session里面设置不同的参数以及相对应的数据,而本JSP页面则会根据参数是否为空来选择不同的显示方式。而且本JSP页面采用浮动技术,会一直固定在页面的最顶部,不会随着页面的滚动而移动。本JSP页面会显示贴吧名称以及贴吧签名信息,同时还兼具用户登录与注册功能。其通过JQuery与Ajax来做登录验证。登录成功后,会重新加载页面,这样很多游客不具备的权限都会随着用户的登录而变得可视或可操作。用户点击了注册按钮,系统会跳转到注册页面,用户只需要填写最关键的账号,密码,手机,邮箱,通过合法性验证,即可完成注册,其他信息可以在注册之后完善,账号一经注册不能修改。同时还会显示未读提醒的数量,点击之后会跳转到查看提醒页面,这个在下面的查看提醒信息里会介绍到。4.2.2查看贴吧列表系统会将已存在的贴吧显示在贴吧首页,用户可以通过点击每一个贴吧的“进入贴吧”按钮来跳转到对应贴吧的贴吧主页,也可以通过点击“查看贴吧信息”或“查看吧主信息”来查看用户感兴趣的信息。所有的贴吧按照创建时间从早到晚的顺序排列,创建的越早则显示的位置越靠前。用户也可以通过在贴吧搜索框里面输入贴吧名称的关键字(关键字可以有多个,中间使用空格来区分),来查找相应的贴吧,系统会把满足搜索条件的贴吧全都列出来,显示在贴吧列表之前,便于用户查看。若是用户没有找到自己想要找的贴吧,也可以通过点击“创建贴吧”按钮来创建一个新的贴吧。如果贴吧创建成功,那么该用户就会成为这个贴吧的吧主,拥有本吧里的最高权限,但是在其他非吧主的贴吧里,该用户仍然只是普通会员,受该吧吧主的管制。4.2.3查看帖子列表用户通过点击“进入贴吧”按钮,跳转到某一个贴吧的首页,该吧的所有的可视的帖子,都会被系统检索到,然后显示到这里。帖子的显示分两种,一种是置顶帖,一种是普通帖。置顶帖会优先显示到列表最顶端。两种类型的帖子都会按照时间顺序,较新的帖子会显示在靠前的位置。游客与会员的功能第一次显现差别,在这里登录用户可以直接发表新的帖子,可以删除自己发的帖子,但是游客则没有这样的权限,必须得通过登录系统才可以。4.2.4查看帖子详情用户通过点击帖子列表页面的任何一个帖子标题,即可进入查看该帖子的详情。同样,所有可视的信息都会被系统读取到,然后显示出来。在这里游客与登录用户的区别再一次体现了出来,游客只能浏览而不能回复,登录用户可以发表一个新的楼层,也可以在某个已有楼层下回复某一个用户,也可以只回复层主,回复的楼层会显示在当前帖子的最末楼,回复的信息会显示在某一楼的最末信息位置。在这里,系统会根据登录用户与帖子的关系以及登录用户的权限来显示不同的操作权限。首先是大前提,用户不能回复自己,如果信息是楼层的第一条信息,那么不能删除该信息,而只能删除该楼层。其次是小限制,吧主拥有大前提下的最高权限,用户(楼主)在自己发的贴子里拥有与吧主一致的权限,用户(层主)在自己发的楼层里拥有与吧主一致的权限。用户(发信息者)只对自己发的信息拥有与吧主一致的权限。4.2.5查看提醒信息提醒信息总共分为三种类型,通知提醒,回复提醒,提到提醒。通知提醒包括有管理员删帖,管理员置顶帖,管理员精华帖等。回复提醒就是有别人对你的发言进行了回复后系统发给你的提醒,提到提醒就是别人发帖或回帖是特地@到你后体统发给你的提醒。在本系统中,提醒模块所包含的内容有:系统通知,回复我的,提到我的,我回复的,我提到的共5部分。5系统实现5.1功能实现1.本系统的前台JSP页面使用如下代码重新设定了相对路径。<%Stringpath=request.getContextPath(); StringbasePath= request.getScheme()+"://"+ request.getServerName()+":"+ request.getServerPort()+path+"/";%><basehref="<%=basePath%>">这样把相对位置设置成了basePath,完美解决了相对位置发生改变导致页面找不到的问题。2.本系统的服务器使用了80端口,并配置了如下信息重新设置了访问地址。<ContextdocBase="Graduation"path=""reloadable="true" source="org.eclipse.jst.jee.server:Graduation"/>这样只需要一个域名或IP地址就可以访问到本项目了,不需要加端口号和项目名,设计比较人性化,测试也较为方便。5.1.1登录注册登录:Login_Servlet.javaMembermember=service.login(usernameOrPhoneOrEmail,password); if(member!=null){ out.print("√"); HttpSessionsession=request.getSession(); session.setAttribute("member_",member); Levellevel=service.findLevelByPoint(member.getExperience()); session.setAttribute("level_",level); }else{ out.print("×"); }注册:Controller_Member.java@RequestMapping(value="/insert",method=RequestMethod.GET)publicStringinsert(Modelmodel){ model.addAttribute("member",newMember()); return"/member/insert.jsp";}@RequestMapping(value="/insert",method=RequestMethod.POST)publicStringinsert(Membermember)throwsException{ service.register(member); return"redirect:/member/select/"+member.getId_member().toString();}MemberServiceImplement.javaif(dao.findMemberByUsername(member.getUsername())!=null){ thrownewException("该用户名已经被注册");}if(dao.findMemberByPhone(member.getPhone())!=null){ thrownewException("该手机号码已经被注册");}if(dao.findMemberByEmail(member.getEmail().toUpperCase())!=null){ thrownewException("该邮箱已经被注册");}Longid=DateTime.getDateTimeFormatLongWithSSS();while(dao.findMemberByMemberId(id)!=null){ id=DateTime.getDateTimeFormatLongWithSSS();}member.setId_member(id);member.setPassword(MD5.getMD5(member.getPassword()));member.setEmail(member.getEmail().toUpperCase());dao.saveMember(member);5.1.2查看贴吧列表 Controller_Tieba.java @RequestMapping(value={"","/"},method=RequestMethod.GET) publicStringlist(Modelmodel,HttpSessionsession)throwsException{ Tiebatieba=newTieba("十度贴吧","全球最大的中文社区",null); session.setAttribute("tieba_",tieba); List<Tieba>tiebas=service_tieba.findAllTiebas(); model.addAttribute("tiebas",tiebas); return"tieba/list.jsp"; } @RequestMapping(value="/search",method=RequestMethod.POST) publicStringsearch(Stringsearch,Modelmodel,HttpSessionsession)throwsException{ if(search.length()!=0){ String[]keywords=search.split(""); List<Tieba>result=service_tieba.findTiebasByKeywords(keywords); session.setAttribute("result",result); } return"redirect:/tieba"; }5.1.3查看帖子列表Controller_Tieba.java @RequestMapping(value="/home/{id_tieba}",method=RequestMethod.GET) publicStringhome(@PathVariableStringid_tieba,Modelmodel,HttpSessionsession) throwsException{ Tiebatieba=service_tieba.findTiebaByTiebaId(Long.parseLong(id_tieba)); session.setAttribute("tieba_",tieba); List<Tiezi>tiezis_top=service_tiezi.findAllTopTiezisByTiebaId( Long.parseLong(id_tieba)); List<Tiezi>tiezis_all=service_tiezi.findAllVisibleTiezisByTiebaId( Long.parseLong(id_tieba)); model.addAttribute("tiezis_top",tiezis_top); model.addAttribute("tiezis_all",tiezis_all); return"/tieba/home.jsp"; }5.1.4查看帖子详情Controller_Tieba.java @RequestMapping(value="/selecttiezi/{id_tieba}/{id_tiezi}",method=RequestMethod.GET) publicStringselectTiezi(@PathVariableStringid_tieba,@PathVariableStringid_tiezi, Modelmodel,HttpSessionsession)throwsException{ Tiebatieba=service_tieba.findTiebaByTiebaId(Long.parseLong(id_tieba)); model.addAttribute("tieba_",tieba); Datadata=service_tiezi.loadTieziByTiebaIdAndTieziId( Long.parseLong(id_tieba),Long.parseLong(id_tiezi)); model.addAttribute("data",data); return"/tieba/selecttiezi.jsp"; } @RequestMapping(value="/insertfloor/{id_tieba}/{id_tiezi}", method=RequestMethod.POST) publicStringinsertFloor(@PathVariableStringid_tieba,@PathVariableStringid_tiezi, Stringcontent,Modelmodel,HttpSessionsession)throwsException{ Membermember=(Member)session.getAttribute("member_"); member.setExperience(member.getExperience()+1L); member.setPassword(null); service_member.update(member); service_tiezi.sendFloor(Long.parseLong(id_tieba),Long.parseLong( id_tiezi),member.getId_member(),member.getUsername(),content); return"redirect:/tieba/selecttiezi/"+id_tieba+"/"+id_tiezi; } @RequestMapping(value="/insertmessage1/{id_tieba}/{id_tiezi}/{id_floor}/{id_to}/ {name_to}",method=RequestMethod.POST) publicStringinsertMessage(@PathVariableStringid_tieba,@PathVariableStringid_tiezi, @PathVariableStringid_floor,@PathVariableStringid_to, @PathVariableStringname_to,Stringcontent,Modelmodel, HttpSessionsession)throwsException{ Membermember=(Member)session.getAttribute("member_"); member.setExperience(member.getExperience()+1L); member.setPassword(null); service_member.update(member); session.setAttribute("member_",member); service_tiezi.sendMessage(Long.parseLong(id_tieba),Long.parseLong(id_tiezi), Long.parseLong(id_floor),member.getId_member(),member.getUsername(), Long.parseLong(id_to),name_to,content); return"redirect:/tieba/selecttiezi/"+id_tieba+"/"+id_tiezi; }5.1.5查看提醒信息Controller_Tieba.java @RequestMapping(value="/remind/inform",method=RequestMethod.GET) publicStringinform(Modelmodel,HttpSessionsession)throwsException{ Tiebatieab=(Tieba)session.getAttribute("tieba_"); model.addAttribute("tieba",tieab); Membermember=(Member)session.getAttribute("member_"); List<Remind>informs=service_remind.findInformRemindsByToId( member.getId_member()); model.addAttribute("informs",informs); model.addAttribute("flag","informs"); return"/tieba/remind.jsp"; } @RequestMapping(value="/remind/reply",method=RequestMethod.GET) publicStringreply(Modelmodel,HttpSessionsession)throwsException{ Tiebatieab=(Tieba)session.getAttribute("tieba_"); model.addAttribute("tieba",tieab); Membermember=(Member)session.getAttribute("member_"); List<Remind>replys=service_remind.findReplyRemindsByToId( member.getId_member()); model.addAttribute("replys",replys); model.addAttribute("flag","replys"); return"/tieba/remind.jsp"; } @RequestMapping(value="/remind/mention",method=RequestMethod.GET) publicStringmention(Modelmodel,HttpSessionsession)throwsException{ Tiebatieab=(Tieba)session.getAttribute("tieba_"); model.addAttribute("tieba",tieab); Membermember=(Member)session.getAttribute("member_"); List<Remind>mentions=service_remind.findMentionRemindsByToId( member.getId_member()); model.addAttribute("mentions",mentions); model.addAttribute("flag","mentions"); return"/tieba/remind.jsp"; } @RequestMapping(value="/remind/replyfromme",method=RequestMethod.GET) publicStringreplyfromme(Modelmodel,HttpSessionsession)throwsException{ Tiebatieab=(Tieba)session.getAttribute("tieba_"); model.addAttribute("tieba",tieab); Membermember=(Member)session.getAttribute("member_"); List<Remind>replysfromme=service_remind.findMentionRemindsByFromId( member.getId_member()); model.addAttribute("replysfromme",replysfromme); model.addAttribute("flag","replysfromme"); return"/tieba/remind.jsp"; } @RequestMapping(value="/remind/mentionfromme",method=RequestMethod.GET) publicStringmentionfromme(Modelmodel,HttpSessionsession)throwsException{ Tiebatieab=(Tieba)session.getAttribute("tieba_"); model.addAttribute("tieba",tieab); Membermember=(Member)session.getAttribute("member_"); List<Remind>mentionsfromme=service_remind.findMentionRemindsByFromId( member.getId_member()); model.addAttribute("mentionsfromme",mentionsfromme); model.addAttribute("flag","mentionsfromme"); return"/tieba/remind.jsp"; }5.2系统不足由于本人技术水平有限以及时间不足的原因,系统现在暂时还没有图片上传功能,在图片方面,我的设计初衷就是用户注册以及贴吧创建的时候,必须同时上传一张图片作为用户头像和贴吧Logo,还有用户发帖子的时候也可以上传图片,这个功能在接下来的时间里我还是会集成到现有系统里面去的。还有一点,就是分页设计功能,目前还处于研发之中。现在已经在测试项目里面实现了这个功能,但是代码比较分散,JSP页面里面有,后台Servlet里面也有,想要往本系统里面集成实在是不易。所以我将会在后续的修改中,继续加油,尽量把分页功能整合一下。一次实现,多次调用。把本系统里面涉及到分页功能的地方,全部替换掉。5.3相关技术本项目是一个动态WEB项目,系统采用SpringMVC框架实现了页面的切换和数据的传递,采用Hibernate框架实现了数据的持久化操作,前台页面采用JSP技术编写,其数据合法性采用了JavaScript,JQuery和Ajax技术,结合后台Sertlet进行验证。现在简单介绍一下这些技术以及系统详细设计。5.3.1JavaEEWEBJavaEE(JavaPlatform,EnterpriseEdition)是sun公司(2009年4月20日甲骨文将其收购)推出的企业级应用程序版本。这个版本以前称为J2EE。能够帮助我们开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。JavaEE是在JavaSE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(service-orientedarchitecture,SOA)和Web2.0应用程序。在当今网络时代,无论是因特网(Internet)、内联网、外联网都离不开Web技术的应用。随着网络技术尤其是Web应用技术的发展,企业级应用对系统各方面的性能要求越来越高,特别是速度、安全、可靠性以及分布式应用等方面,在一定程度上决定着系统能否成功。在这些要求的共同作用下,SUN的JavaEE(Java平台企业版)规范利用Java编程语言和企业API的强大功能,包括EJB技术,提供了一种业界领先的Web编程技术平台。JAVAEEWEB编程技术已成为计算机领域中最重要的的技术之一,它是软件学科中一个不可或缺的分支,是计算机专业和信息管理专业一门专业基础课,越来越多的人都开始学习JAVAEEWEB编程技术。5.3.2JSPJSP全名为JavaServerPages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1]是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。它实现了Html语法中的java扩张(以<%,%>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。JSP(JavaServerPages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。5.3.3ServletServlet是在服务器上运行的小程序。最早支持Servlet技术的是JavaSoft的JavaWebServer。此后,一些其它的基于Java的WebServer开始支持标准的ServletAPI。Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:1)客户端发送请求至服务器端;2)服务器将请求信息发送至Servlet;3)Servlet生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;4)服务器将响应返回给客户端。Servlet看起来像是通常的Java程序。Servlet导入特定的属于JavaServletAPI的包。因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就如同Applet对Client一样,但是,由于Servlet运行于Server中,它们并不需要一个图形用户界面。从这个角度讲,Servlet也被称为FacelessObject。一个Servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然Servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。5.3.4JavaScriptJavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。5.3.5AjaxAJAX即“AsynchronousJavascriptAndXML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。AJAX=异步JavaScript和XML(标准通用标记语言的子集)。AJAX是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用AJAX)如果需要更新内容,必须重载整个网页页面。5.3.6HibernateHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。5.3.7SpringSpring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由RodJohnson在其著作ExpertOne-On-OneJ2EEDevelopmentandDesign中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。5.3.8SpringMVCSpringMVC属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面。Spring框架提供了构建Web应用程序的全功能MVC模块。使用Spring可插入的MVC架构,可以选择是使用内置的SpringWeb框架还可以是Struts这样的Web框架。6系统测试图6-1系统首页图6-2未登录状态下位置为首页的头文件图6-3未登录状态下进入贴吧后的头文件图6-4已登录状态下进入贴吧后的头文件图6-5已登录状态下进入贴吧后的头文件图6-6系统首页-贴吧搜索图6-7用户注册图6-8查看用户信息图6-9修改用户信息图6-10创建贴吧图6-11查看贴吧信息图6-12修改贴吧信息图6-13进入新建的贴吧图6-14发表了一个新的帖子图6-15多个用户发表了多个帖子图6-16用户发表了信息图6-17查看系统提醒图6-18查看系统提醒对本系统功能进行的全面测试结果显示,本系统较为健壮,无明显BUG。任何一个系统的正确运行都是建立在多次测试的基础上的,只有经过多次测试才可以发现系统存在的漏洞或设计缺陷。本论坛系统在不断的调试过程中也或多或少地遇到一些问题,但最终基本一一解决,主要归纳为以下几点:实时性问题。由于本系统是B/S模式的,所以系统的响应速度是很重要的,当有大量的用户同时访问时,这样系统的响应速度必然下降。本系统在设计阶段就考虑了这方面的问题,其中最主要的解决方法就是尽量减少客户端和服务器间的通信,把一些能在客户端完成的验证都放在客户端验证,尽可能多的使用本地的脚本语言,这样客户端和服务器端的通信量就会大大减少,服务器的响应效率会提高很多。密码加密问题。如果数据库信息泄漏,可能造成很大的损失。所以对用户密码进行加密显得尤其重要,这里采用了MD5算法进行加密。存入数据库的用户密码都是经过加密后的密文,登录时验证输入密码加密后的密文与数据库密文的一致性。信息更新问题。由于系统是以对象的形式传递数据,所以一些不提供修改的属性将会被赋null值,导致传入后台提交操作后信息丢失。在Dao层更新信息的方法里查找相应信息并将其组成一个旧对象,把新对象的不为null的属性值赋给旧对象,再用旧对象取更新数据库,既可解决这个问题。提到判定问题。由于一开始的正则表达式选用不恰当,所以当用户发信息提到他人时,系统检测信息不准确,取不到被提到的用户,在显示信息时,同样加不上A标签。在修正了正则表达式后,问题得以解决。

结束语在经历了三个月左右的时间后,本系统的开发工作基本算是结束了,在本系统里,其实还是有很多的缺陷与不足没有来得及修正。不过我在之后还是会针对这些不足作修改的。毕业设计就是对学生近四年来的学习成果在专业方面做了一次比较针对性的全面的测试。我学的专业以及方向是软件工程的WEB方向,我比较擅长使用Java进行WEB项目的开发。我见有好多人在做各种各样的购物系统,再加上我也做过购物系统了,再做的话没有什么新意,所以我选了一个BBS论坛系统。我平时接触百度贴吧比较多,对其功能等较为熟悉,而且百度贴吧其实也是一种新形态的论坛系统,其开放关键词的思想非常利于论坛的扩展,所以我本次毕业设计的目标就是模仿百度贴吧,做一个实现了其基本功能的贴吧系统。出于对百度贴吧设计者的敬意以及可能会造成的法律问题,所以我把系统起名为“十度贴吧”。现在比较先进和流行的开发框架中有一款非常优秀,那就是SpringMVC,我在实习公司里见到的很多项目也使用了这个框架,所以我借此机会学习一下它。经过简单的学习,我开始了这个项目的设计与开发。由于我现在能力有限,认识不足,对该框架的使用仅仅限于页面的跳转与传值。不过,在经过各种尝试与失败之后,我收获挺多的,在我心里真切的体会到了这个框架的人性化设计,以及它功能的强大,以后我会更多的使用它,深入的了解它,我已经爱上了它。在数据持久化方面,我使用的是Oracle数据库的XE快捷版,因为到目前为止,虽然接触使用过好几种数据库软件,但是我最熟悉的还是Oracle。在程序里,我使用的是Hibernate框架来做数据的持久化,本来我想试一试Mybatis的,但是考虑到这个框架一点都没接触过,而且简单学过的Hibernate框架还在一边半生不熟,掌握的不怎么样,所以我就决定使用Hibernate了。经过这次毕设,我对Hibernate又有了进一步的认识,了解了一些其他的使用方法,还想明白了很多使用习惯的原因,收获也是挺大的,我相信这一定能为我之后学习Mybatis提供借鉴。在真正进行功能模块设计开发的时候,也是由于考虑不是很周全,做过几次大翻工,各方面的翻工表明了一个事实,那就是我做分析与设计的时候还是不够重视,不够认真,虽然我明明知道分析与设计非常重要,但是结果却还是这样。我总结了一下,不够认真,经验不足,表面原因应该就是这样了。再进一步,其实我的心态有问题,当时确定下这个题目的时候,我就根据我的能力大概想了下,认为这个项目应该没多大问题,大的架构上没什么问题,但是我在小细节上自大了,思考的比较随便,考虑不周全,以后一定会注意。前台的页面设计问题不是很大,主要就是模仿百度贴吧的风格。但是,在开发的时候,实在是叫我头疼,各种问题频出,各种意外不断。我本人对前台技能掌握不好,不擅长开发前台。像div标签,JQuery等的使用都是只知皮毛,所以很多本来用这些能很容易解决的问题,到我这里可能绕很多弯路才能处理掉,最郁闷的是,不少问题得花很多时间,几个小时算是短的...以前做的项目前台页面都是已经做好的,我需要做的就是把后台得到的数据插入进去。这回叫我自己来做前台真是不容易,我打算在毕设结

温馨提示

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

评论

0/150

提交评论