




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计(论文)任务书毕业设计(论文)题目:基于Web的易语言论坛系统的设计与实现毕业设计(论文)要求及原始数据(资料):1.综述国内JavaEEWEB应用开发技术的现状;2.了解JavaEEWEB项目开发的相关技术;3.掌握JavaEEWEB项目开发的基础知识与基本能力;4.掌握SpringMVC与Hibernate两大框架技术;5.掌握使用框架技术开发JavaEEWEB项目的能力;6.设计并实现一个基于WEB的论坛系统项目;7.总结通过此次项目实战在知识与技能方面的收获;8.训练检索文献资料和利用文献资料的能力;9.训练撰写技术文档与学位论文的能力。毕业设计(论文)主要内容: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\u195261绪论 1287091.1背景意义 1661.2设计目标 2175832开发环境和相关技术 385222.1开发环境 3136332.2相关技术 3178482.2.1JavaEEWEB 346552.2.2JSP 4190442.2.3Servlet 4172502.2.4JavaScript 5174762.2.5Ajax 5194522.2.6Hibernate 6276212.2.7Spring 693212.2.8SpringMVC 6148033需求分析 7260213.1需求采集 7253923.1.1功能需求 7225243.1.2性能需求 881963.2功能模块 8185813.2.1基本功能 9125603.2.2扩展功能 10257344系统设计 1223404.1数据库表设计 1233874.1.1ER图分析 12241434.1.2数据库表设计 15311024.2功能设计 20187814.2.1登录注册 20203284.2.2查看贴吧列表 2137164.2.3查看帖子列表 2117734.2.4查看帖子详情 22164264.2.5查看提醒信息 2286965系统实现 23136125.1功能实现 23282025.1.1登录注册 23220305.1.2查看贴吧列表 26260365.1.3查看帖子列表 2984445.1.4查看帖子详情 30122645.1.5查看提醒信息 326465.2系统不足 3519116系统测试 36208546.1登录测试 36152196.2注册测试 37282206.3使用测试 37270246.4总结 3719131结束语 3917207参考文献 411405致谢 421绪论1.1背景意义当今的社会是一个信息高速发展的社会,在信息的交流和传递当中,互联网占据着一个非常重要的位置。随着Internet技术的不断发展,以及用户群爆炸性地增长,网络不再仅仅是信息的被动获取来源,更成为人们探讨问题、交换观点的场所,各种网络应用应运而生。随着网络应用的兴起,人们交流的方式也发生了翻天覆地的变化。网络聊天、网络视频和邮箱系统等网络应用的出现正在改变着人们彼此之间沟通、交流的方式。此外,为了满足人们在某一特定主题下的知识获取和信息发布的需求,网上论坛顺势诞生了。随着时间的推移,论坛站点中积存了丰富的信息资源,不但有各类技术资料和新闻文档,还包含着用户的判断和评论,论坛站点己成为Web信息库的重要组成部分,自网上论坛诞生20多年以来,随着Web技术的发展,己经由原来简单的电子公告板系统发展为功能丰富的网上论坛和虚拟社区模式。随着网络的迅速发展,信息几乎充实在生活工作的方方面面,无论是政界、商界,还是娱乐界,都有各种各样的论坛。互联网正在融入我们的生活,网络提供给我们的不只是一个获取信息的来源,而且还是一个可以相互交流的空间,网上论坛正是一种供人们进行交流的网络空间,影响和改变着我们的生活。论坛是一个让人足不出户即可了解外界世界,了解他人所想的工具。给天下的网民都提供了交流的平台,为网络的互动性作出了巨大的贡献。人们根据自己的专业特长和兴趣爱好在论坛上提出自己的问题,即提出主题。而后其他人根据主题内容可以发表自己的意见和看法,即回复主题。一千个人有一千个哈姆雷特,论坛集大家之所长,所感,为每一个用户提供了丰富的知识矿藏。通过论坛,网民们能够更加方便的交流,更加便捷的发表自己的观点,同时发布信息都是通过能够被记录的文字来进行的,所以这样也能避免精华内容的流失。通过论坛来征得自己想要的信息,有更高的效率和时效性,也最节约成本和资源。在论坛的交流过程中,参与讨论的人可以处于一个平等的位置,且无论喜怒哀乐都是在虚拟的环境中进行,避免了正面的尴尬和冲突等。在论坛中,人们可以演变成任何角色,变换多种身份,因为网络的特征,使得人民更加依赖于论坛中的交流。1.2设计目标百度贴吧,是全球最大的主题中文社区,其基于搜索引擎和开放关键词的形态已变成一种通用的互联网产品模式,被中文网站广为学习采纳,产生了大量类似“贴吧”的平台。而本系统也正是借鉴了百度贴吧开放关键词的特点,在实现了论坛基本功能的基础上,扩展了论坛系统的现有功能。游客用户可以查询贴吧,浏览帖子,也可以通过注册功能获得系统账号,从而登录本系统,升级成为登录用户,获得对应的权限。登录用户不仅可以查询贴吧,浏览帖子,还可以发表帖子,回复帖子,查看通知,参与贴吧活动,创建贴吧,管理贴吧等,是本系统的核心用户。管理员用户不仅仅具有贴吧的所有权限,同时还肩负着发展贴吧的重任,是贴吧的核心人物。
2开发环境和相关技术2.1开发环境操作系统:MicrosoftWindows7Ultimate(64-bit)JDK:JavaSEDevelopmentKit7u75开发工具:EclipseLunaServiceRelease2(4.4.2)数据库:OracleDatabase11gRelease2ExpressEdition(11.0.2)服务器:ApacheTomcat7.0.592.2相关技术本项目是一个动态WEB项目,系统采用SpringMVC框架实现了页面的切换和数据的传递,采用Hibernate框架实现了数据的持久化操作,前台页面采用JSP技术编写,其数据合法性采用了JavaScript,JQuery和Ajax技术,结合后台Sertlet进行验证。现在简单介绍一下这些技术以及系统详细设计。2.2.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编程技术。2.2.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技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。2.2.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服务器的应用程序。2.2.4JavaScriptJavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。2.2.5AjaxAJAX即“AsynchronousJavascriptAndXML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。AJAX=异步JavaScript和XML(标准通用标记语言的子集)。AJAX是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用AJAX)如果需要更新内容,必须重载整个网页页面。2.2.6HibernateHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。2.2.7SpringSpring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由RodJohnson在其著作ExpertOne-On-OneJ2EEDevelopmentandDesign中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。2.2.8SpringMVCSpringMVC属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面。Spring框架提供了构建Web应用程序的全功能MVC模块。使用Spring可插入的MVC架构,可以选择是使用内置的SpringWeb框架还可以是Struts这样的Web框架。
3需求分析需求分析是在软件开发的初始阶段进行,它对于整个软件开发过程以及软件开发后质量是举足轻重的。随着软件系统复杂性的提高及规模的扩大,需求分析在软件开发中所处的地位愈加突出。所谓需求,是指用户对目标软件系统在功能、行为、性能设计约束等方面的要求。在需求分析的研究中,系统开发人员必须对用户的需求进行调查和分析,结合实际环境的特征,正确定义目标软件的特征。所谓需求分析,是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。可以说,在软件工程当中的“需求分析”就是确定要计算机“做什么”,要达到什么样的效果。可以说需求分析是做系统之前必做的。3.1需求采集在软件工程中,需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。需求分析是软件工程中的一个关键过程。在这个过程中,系统分析员和软件工程师确定顾客的需要。只有在确定了这些需要后,他们才能够分析和寻求新系统的解决方法。需求分析阶段的任务是确定软件系统功能。3.1.1功能需求就本系统来说,本系统属于BBS系统,而且结合了百度贴吧开放关键词的设计模式,应该具备如下功能,现在按照游客与会员(登录用户)来介绍。游客:是指一些访问本系统的时候没有进行过登录操作的用户。游客只有查询的权限,可以访问本系统包含的所有贴吧,可以浏览某个贴吧的所有的帖子,但是游客没有执行任何操作的权限,游客不能创建新的贴吧,不能发表新的帖子,不能回复已有的帖子。游客可以通过系统提供的注册页面来获得系统承认的账号,通过账号登录本系统,以获得与会员一致的权限。会员:会员是本系统的核心用户,他们参与在贴吧建设的方方面面。会员在拥有游客的所有权限的同时,还拥有更多与系统进行交互的权限。会员可以更新自己账号的信息,可以创建暂不存在的贴吧,可以在任何贴吧发表新的帖子,可以回复任何已存在的帖子。会员们可以通过帖子进行交流,当有会员与你发生信息交互时,系统会给出相对应的通知,而会员也可以通过查看通知来获得信息详情。管理员用户,即吧主,也是会员,是某一个贴吧的管理者,肩负着壮大该贴吧的责任。会员可以通过创建一个贴吧来成为该贴吧的吧主,拥有该贴吧的最高权限。可以修改该贴吧的信息,可以管理本吧的帖子。吧主仅仅在属于其自己的贴吧才是吧主,到了别的贴吧,其权限就会变成普通会员。此外,吧主还拥有着游客和会员的所有权限。3.1.2性能需求本系统是BBS论坛系统,为了给用户较好的体验,需要本系统响应快速,所以在此对硬件及软件做了需求分析。硬件环境:处理器:Inter酷睿i5或更高内存大小:4GB或更高硬盘空间:10GB或更高软件环境:操作系统:Win7或更高服务器:Tomcat6.0或更高数据库:OracleDatabase10G或更高3.2功能模块画功能模块图是软件开发过程中的一个非常重要的环节,它将能够显示出软件项目工程所要实现的各种功能,并且能够分类,然后软件工程师便能够根据画出来的功能模块图来编写代码实现具体的每一个功能。功能模块图就是将系统的功能进行分解,按功能从属关系表示的图表,具体如图3-1所示:图3-1贴吧系统用户类型及对应功能概览图3.2.1基本功能通过需求分析,论坛的基本功能可以从众多的需求中筛选出来。顾名思义,基本功能就是构成论坛系统的必要功能,具备这些功能的Web系统即是论坛。浏览帖子。用户发表了新的帖子,其他用户可以查看与回复,可以相互分享自己的经验和想法。发表帖子。论坛就是为了相互讨论话题而产生的,用户发表帖子就是为了表达自己的看法与想法,能够与他人进行讨论,因此发帖功能是论坛系统最重要的功能。回复帖子。用户可以浏览了他人发表的帖子,如果想要发表自己的看法,参与讨论,那么用户就就可以回复这个帖子。总体来说,浏览帖子-发表帖子-回复帖子这三大最主要的功能周而复始的循环进行,这就构成了论坛。参与论坛活动的用户,主要目的就是发表帖子,查看帖子,回复帖子,参与讨论。这三大基本功能之间的相互关系如图3-2所示:帖子列表发表帖子帖子列表发表帖子回复帖子浏览帖子回复帖子浏览帖子图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会员表TABLE_MEMBER表是系统用来记录注册用户信息的表,表中定义了用户对象所具有的各种属性,以及相对应的具体数据。在该表中,字段id_member是主键,是由用户注册的时间得来的长度为17的数字。具体信息如“表4-1TABLE_MEMBER”所示:表4-1TABLE_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.封禁(有专门的加黑表,封禁表),会员在每个吧的这些状态不同,进入贴吧会自动更新关键建表语句CONSTRAINTpk_member_1PRIMARYKEY(id_member)TABLE_TIEBA贴吧表TABLE_TIEBA表是系统用来记录创建贴吧信息的表,表中定义了贴吧对象所具有的各种属性,以及相对应的具体数据。在该表中,字段id_tieba是主键,是由创建贴吧的时间得来的长度为17的数字,字段id_member就是创建该吧的用户,也就是该吧的吧主,外键引用了TABLE_MEMBER表的id_member。具体信息如“表4-2TABLE_TIEBA”所示:表4-2TABLE_TIEBA贴吧表字段名类型说明id_tiebaNUMBER(17)主键,贴吧id,根据创建时间得到的17位数字id_memberNUMBER(17)外键,吧主id,根据注册时间得到的17位数字nameVARCHAR2(30)贴吧名称signatureVARCHAR2(150)贴吧签名statusNUMBER(1)状态,1可视0不可视关键建表语句CONSTRAINTpk_tieba_1PRIMARYKEY(id_tieba),CONSTRAINTfk_tieba_2FOREIGNKEY(id_member)REFERENCEStable_member(id_member)TABLE_TIEZI帖子表TABLE_TIEZI表是系统用来记录创建帖子信息的表,表中定义了帖子对象所具有的各种属性,以及相对应的具体数据。在该表中,字段id_tieba和id_tiezi构成了联合主键,分别由创建贴吧的时间和发表帖子的时间得来的长度为17的数字,字段id_member就是发表该贴的用户,也就是该贴的楼主,外键引用了TABLE_MEMBER表的id_member。具体信息如“表4-3TABLE_TIEZI”所示:表4-3TABLE_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)帖子标题关键建表语句 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楼层表TABLE_FLOOR表是系统用来记录创建楼层信息的表,表中定义了楼层对象所具有的各种属性,以及相对应的具体数据。在该表中,字段id_tieba、id_tiezi和id_floor构成了联合主键,分别由创建贴吧的时间、发表帖子的时间和发表楼层的时间得来的长度为17的数字,字段id_member就是发表该层的用户,也就是该层的层主,外键引用了TABLE_MEMBER表的id_member。具体信息如“表4-4TABLE_FLOOR”所示:表4-4TABLE_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不可视关键建表语句 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消息表TABLE_MESSAGE表是系统用来记录创建信息的表,表中定义了信息对象所具有的各种属性,以及相对应的具体数据。在该表中,字段id_tieba、id_tiezi、id_floor和id_message构成了联合主键,分别由创建贴吧的时间、发表帖子的时间、发表楼层的时间和发表消息的时间得来的长度为17的数字,字段id_from就是发表该信息的用户,字段id_to就是信息目标(该信息的接受者),外键引用了TABLE_MEMBER表的id_member。具体信息如“表4-5TABLE_MESSAGE”所示:表4-5TABLE_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)信息内容关键建表语句 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提醒表TABLE_REMIND表是系统用来记录创建提醒信息的表,表中定义了提醒对象所具有的各种属性,以及相对应的具体数据。在该表中,字段id_remind是主键,是创建提醒的时间得来的长度为17的数字,字段kind就是提醒的类型,可以为系统通知、用户回复和用户提到。具体信息如“表4-5TABLE_MESSAGE”所示:表4-6TABLE_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_formVARCHAR2(20)会员用户名,提醒发送人id_toNUMBER(17)外键,会员id,根据注册时间得到的17位数字name_toVARCHAR2(20)会员用户名,提醒接收人statusNUMBER(1)状态,1.未读0.已读contentVARCHAR2(3000)提醒内容关键建表语句 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登录注册登录:图5-1未登录状态下位置为首页的头文件图5-2未登录状态下进入贴吧后的头文件图5-3已登录状态下进入贴吧后的头文件图5-4已登录状态下进入贴吧后的头文件Login_Servlet.java Membermember=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("×"); }注册:图5-5注册部分效果展示图5-6查看用户信息图5-7修改用户信息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.java if(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查看贴吧列表图5-8系统首页图5-9系统首页-搜索图5-10创建贴吧图5-11查看贴吧信息图5-12修改贴吧信息 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查看帖子列表图5-13进入新建的贴吧图5-14发表了一个新的帖子图5-15多个用户发表了多个帖子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查看帖子详情图5-16用户发表了信息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查看提醒信息图5-17查看系统提醒图5-18查看系统提醒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里面也有,想要往本系统里面集成实在是不易。所以我将会在后续的修改中,继续加油,尽量把分页功能整合一下。一次实现,多次调用。把本系统里面涉及到分页功能的地方,全部替换掉。
6系统测试软件测试(SoftwareTesting),描述一种用来促进鉴定软件的完整性、安全性、正确性和质量的过程。总之,软件测试是一种预期输出与实际输出之间的对比或者审核的过程。软件测试的最经典的定义是:在事先规定的条件下对程序进行指定操作,用以发现程序的错
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 厂房店面出租合同范本
- 机台代工加工合同范本
- 蔬菜冷库收购合同范本
- 学校建设融资合同范本
- 中学禁毒教学设计
- 通过个性化定制增加产品销售
- 零花钱活动课
- 《模具设计与制造》专业2023年单独招生考试大纲及样卷
- 湖北孝感美珈职业学院《数据新闻制作》2023-2024学年第二学期期末试卷
- 南阳科技职业学院《学前儿童健康教育》2023-2024学年第二学期期末试卷
- 应用化学专课试题及答案
- 2025年全国国家版图知识竞赛(中小学组)题库及答案
- 课件-DeepSeek从入门到精通
- DL-T5394-2021电力工程地下金属构筑物防腐技术导则
- DB11-T 2000-2022建筑工程消防施工质量验收规范
- 小学生手抄报模板数学小报
- JJF 1211-2008 激光粒度分析仪校准规范-(高清现行)
- 独居老人计划书
- 农业信息技术与信息管理系统第六章地理信息系统课件1
- 静物产品摄影PPT课件(PPT 50页)
- (高清正版)T_CAGHP 060—2019地质灾害拦石墙工程设计规范(试行)
评论
0/150
提交评论