版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于JAVA的网上社交系统的设计与实现在当下高校校园中,学生的学习生活缺乏交流,很多学生没有沟通的渠道。因此,设计了一个校园网上社交系统。本系统主要是校园个性化网络社交系统。该系统主要功能是可以在线发布主题帖、回复他人的帖子、搜索问题的答案、按时签到和上传头像等。编程语言用的大家熟知的Java,数据库采用了MySQL,技术开发上运用了JSP技术和SpringMVC框架。有了这个系统可以更方便满足学生用户之间的交流。关键字:高校校园,社交网络系统,个性化目录TOC\o"1-2"\h\u321891绪论 1绪论1.1研究背景时代在持续进步,互联网的更新换代更是无法预估,计算机早已随处可见。想当初,人们只能利用互联网发发电子邮件,增进人与人之间的关系或者提高在工作中的效率。但是,人们在温饱问题得以很好的解决的同时,精神空虚也随之而来。人们需要一个媒介来丰富自己的精神世界,网络论坛悄然出现了。网络论坛的出现不仅在生活中提供了一个非常方便交流的平台而且在工作和学习上也是受益匪浅。随着科技的不断换代更新,各种与互联网相关的产业如雨后春笋般蓬勃发展,网络论坛则是众多产业中长势最好的一个,论坛用户的数量井喷式上升,一直持续到现在。网络论坛带来的效益早已扩展到各行各业,成为了现代人生活中不可或缺的一部分。1.2研究现状如今,网络论坛在国内互联网中的地位已经是中流砥柱了。在以前,网络论坛就像是电子公告板,就是为了发出公告和通知等[1]。那时也就比电台或者广播先进一点点而已,由于国人对旧事物喜爱和对新事物的抵抗,网络论坛并没有的到很好的运用。随着时间的推移,互联网通信技术的快速发展,网络论坛才渐渐出现在人们的眼前,但是随之而来的是论坛用户的疯涨,人们在察觉到网络论坛的好处后,纷纷加入。因为网络论坛就像一个公共的电子白板,它的交互性强,内容丰富,每个用户都可以在上面发表看法或者获取信息。许多商家就可以利用论坛的超高人气和强大的聚众能力进行商业活动或者谋利。不仅仅是商家,论坛还被用来进行事件的炒作,引导舆论的方向进而引发新闻事件导致传播的连锁反应。在最近几年,中国的互联网产业发展势不可挡,把网络、媒体当做传播平台的互动方式在不断的变化和更新着。现在人们个个都是自媒体,抖音快手等软件层出不穷,在未来会变成什么样子谁都不知道。所以自媒体将成为中国一个非常重要的传达民意、展示生活形态的平台。在国外,网络论坛的直接研究不是主流,间接研究也仅仅集中在对网络社会、虚拟社区方面。BBS是网络论坛的前生,BBS诞生于20世纪70年代的美国[2],作用是成员之间互相联系传递信息。随着互联网不断发展,BBS的功能逐渐分裂开来,网络论坛就是其中之一[3]。因此,网络论坛在西方影响力逐渐减小,以美国为例大部分论坛主要用与提出和解决问题,集中表现为技术类区别于中国的注重的是人与人之间的交流。1.3研究的目的和意义本系统的目的在于给高校学生用户提供一个网络社交的平台。用户可以在平台上发表观点或者评论他人的帖子,也可以交流生活方面的种种,让有相同兴趣的用户彼此交流心得。1.4论文结构设计本文的具体结构如下:第一章主要介绍了研究背景和国内外现状,阐述了本课题研究的目的和意义。第二章主要介绍了研究过程中用到的开发环境和工具。第三章主要是进行需求分析,从操作、技术、经济三个方面对项目的可行性进行分析。它还包括功能要求和性能要求。第四章主要介绍了本系统研究过程中的体系结构和数据库表结构。第五章主要介绍了具体的系统功能,并对系统的相关功能进行了简要的描述和说明。第六章主要是对系统进行功能测试,确保系统能够正常运行。1.5本章小结本章主要介绍了本系统的研究背景、现状以及课题研究的目的和意义,最后简单描述了一下论文大致结构。2相关技术与开发工具为了完成本系统的研究和开发,采用了多种相关技术来实现,主要技术如下。2.1相关技术2.1.1Spring简介Spring框架是个轻量级的控制反转和面向切面的Java开放源代码的容器框架[4],RodJohnson创建出了它,其目的是为了解决企业应用开发的复杂性。因为在此之前,人们都是根据EJB规范来实现分布式开发,随着时代的发展,人们希望有一种技术能够弥补EJB的缺陷,Spring的出现就是恰到好处。2.1.2MyBatis技术Mybatis是一种优秀的持久层数据库管理框架。前身是Java开源框架ibatis,MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集[5],Mybatis本身很小且简单,很灵活易于使用,极大的简化了开发人员的工作,降低了开发难度。2.1.3Ajax简介AJAX在2005年被JesseJamesGarrett提出的新术语,用来描述一种使用现有技术集合的‘新’方法[6],是一个能够让Web界面转化成交互性的,用于HTML页面的异步JavaScript技术。这样能够减少与后台的数据交换,使网页从服务器请求少量的信息,实现网页的局部更新而不刷新整体的特性。2.1.4JSP技术JSP的具体流程如图2-1:图2-1JSP技术原理2.2开发工具2.2.1Tomcat简介Tomcat是一个免费的轻量级开放源代码的Web应用服务器,Tomcat虽属于Apache服务器的拓展,但他是一个独立的服务器,所以在运行Tomcat时,它实际上作为一个独立的进程单独运行的。2.2.2MySQL简介MySQL是属于Oracle公司由瑞典MySQLAB公司开发的关系型的数据库管理系统[7]。在众多的WEB应用软件中,该软件是最好的。MySQL将数据库中的数据分别保存在不同的表中,能够加快查询速度体现出高度的灵活性[8]。MySQL的SQL语言是最常用的标准化语言。2.2.3IntelliJIDEAIntelliJIDEA是业界被公认为最好的java开发工具,特点是:编码辅助、历史记录功能、动态语法检测、智能编辑、代码检查等。2.3本章小结本章主要介绍了本系统中所采用的相关技术和开发工具,包括Spring技术、MyBatis技术、Tomcat服务器、MySQL数据库和JSP技术等。3需求分析需求分析是研究系统之前不可缺少的一部分,需求分析的结果能够直接反映出市场与用户的需求。只有明确了用户真实的需求,才能够创造出真正符合市场满足各种用户的系统。3.1可行性分析3.1.1操作可行性本系统的用户大多是在校的大学生。对于高校学生用户来说,熟悉和使用本系统的难度不大。除此以外,每位用户在首页都看到每个模块的提示,便于用户使用。3.1.2技术可行性本系统在后台使用的主要编程语言是Java,前台使用的HTML语言。在硬件设备上面,系统开发只需要开发软件IntelliJIDEA、数据库服务器MySQL、应用服务器Tomcat。3.1.3经济可行性本系统开发过程中只需要一台计算机,且在研究系统的过程中所涉及到的软件方面都是开放性源代码,没有任何费用。3.2功能需求本系统一共有两种用户:普通用户和管理员。从结构上讲,系统可分成前台和后台。前台的主要用户为普通用户,普通用户可以注册新账号登录系统,可以编辑自己的资料如起昵称、换头像等等,还可以查看他人发布的主题帖并评论或者用户自己发布主题帖;管理员则是管理整个系统,保证系统正常运行并进行非正常言论的监督。以下分别阐述说明两种不同用户所具备的功能:普通用户(1)可以浏览论坛中各种帖子,可以通过搜索功能找寻自己感兴趣的帖子;(2)可以自由发布自己感兴趣的帖子;(3)可以评论他人发布的帖子;(4)可以提出疑问,他人可以回答相关问题,也可以回答他人的问题;管理员(1)可以管理用户信息,进行增删改查;(2)可以对论坛内的帖子进行查看、修改和删除;(3)可以查看问答区域的问题和答案,并进行相关操作;(4)可以通过公告,告知其他普通用户。3.3性能需求在整个系统的研究过程中,计算机的配置一般就可行,完全够项目开发以及数据的存储,所以本系统对性能需求要求不高。3.4业务角度本系统在业务层面上可以分为11个模块:登录注册、修改个人信息、查看搜索主题帖、发表主题帖、回复主题帖、提出问题、回答问题、用户管理、主题帖管理、问答管理以及通知公告管理,如表3-1:3.5业务流程分析本系统的业务流程主要是:管理员输入用户名和密码登录管理员用户,管理员可以查看系统中普通用户的各种帖子,查看和删除不符合社会主义核心价值观的言论;普通用户需要先用手机号码注册,输入个人的基本信息,系统验证信息,满足要求即完成注册,否则重新输入,注册后登录系统主页面可以修改具体的个人信息。系统的业务流程如图3-1:图3-1系统业务流程图3.6本章小结本章进行了需求分析与可行性分析,针对需求分析本系统划分了基础模块,同时对业务流程进行了简介。4总体设计通过上一章的需求分析,这一章节先对系统结构模块进行划分,之后介绍数据库表结构的设计。4.1系统整体架构设计4.1.1网络拓扑结构本系统是基于Web技术,采用B/S架构,通过互联网传输信息的方式。在系统拓扑设计过程中,将层次结构与模块化结构相结合,用户通过客户端浏览器进入系统进行相关业务操作,如图4-1所示。图4-1系统网络拓扑结构4.2功能模块划分本系统分为前台和后台两个部分,系统功能结构图如图4-2和4-3所示:图4-2系统前台功能结构图图4-3系统后台功能结构图如上图所示,系统主要分为六个模块,分别是:社区模块、系统设置模块、系统监控模块、邮件管理模块、通知公告模块和短信管理模块。(1)社区模块:社区模块的主要用户是前台的普通用户。该模块大致分为五个部分:我的主页、个人中心、基本设置、我的帖子和我的消息。其中,我的主页显示了与热门讨论和过往主题帖相关的内容,以及登录功能;个人中心显示当前用户体验和等级等相关信息;基本设置显示用户个人信息,用户也可以随时更改信息;我的帖子显示用户可以查看历史发布的帖子或历史收藏的帖子;我的消息显示用户可以随时查看回复信息,属于实时聊天功能。(2)系统设置模块:管理员可以在该模块中管理用户,并具有增加、删除、修改、查看用户的权限。(3)系统监控模块:管理员可以监控在线用户状态是否正常,数据库调用是否正常运行,各种意见是否健康。(4)邮件管理模块:管理员负责查看各种邮件并进行回复。(5)通知公告模块:管理员可以发布各种通告如系统更新信息或者故障信息,以便于用户了解并更好的使用。(6)短信管理模块:管理员负责接受和回复短信,以便于用户和管理员更好的沟通。4.3数据库设计4.3.1数据库概念设计本系统在设计数据库时,以E-R图和数据库表来展示,以下如图和表所示:主题帖图4-4主题帖实体属性图表4-1主题帖表用户图4-5用户实体属性图表4-2用户表站内信图4-6站内信实体属性图表4-3站内表用户签到图4-7用户签到实体属性图表4-4签到表4.4本章小结本章节主要叙述了各个模块的基本内容和作用以及数据库表和E-R图。下一章将对本系统进行详细设计与实现。5系统实现5.1用户登录注册模块用户输入用户名、密码、手机号、图形验证码等相关信息后点击注册。服务端接收相关数据并进行验证,全部认证通过后将保存用户的个人信息。具体流程如图5-1,界面展示如图5-2:图5-1用户登录流程图图5-2用户注册手机号码验证代码如下:@RestControllerpublicclassJCaptchaValidateController{@GetMapping(value="/jcaptcha/validate")publicResponsejqueryValidationEngineValidate(HttpServletRequestrequest,@RequestParam(value="fieldKey",required=false)StringfieldKey,@RequestParam(value="fieldValue",required=false)StringfieldValue){Responseresponse=null; if(JCaptcha.hasCaptcha(request,fieldValue)==false){ response=Response.error(MessageUtils.getMessage("jcaptcha.validate.error")); response.put("fieldKey",fieldKey); returnresponse;}else{response=Response.error(MessageUtils.getMessage("jcaptcha.validate.success")); response.put("fieldKey",fieldKey); }returnresponse; } @GetMapping(value="/jcaptcha.jpg") publicvoidjqueryValidationEngineValidate(HttpServletRequestrequest, HttpServletResponseresponse) throwsServletException,IOException{ response.setDateHeader("Expires",0L); response.setHeader("Cache-Control","no-store,no-cache,must-revalidate"); response.addHeader("Cache-Control","post-check=0,pre-check=0"); response.setHeader("Pragma","no-cache"); response.setContentType("image/jpeg"); Stringid=request.getSession().getId(); BufferedImagebi=JCaptcha.captchaService.getImageChallengeForID(id); ServletOutputStreamout=response.getOutputStream(); try{ ImageIO.write(bi,"jpg",out); out.flush(); }finally{ out.close(); } }}5.2后台用户管理模块管理员想要新增普通用户时,会有如图5-3的界面,管理员点击创建用户按钮后,将出现如图5-4的弹框,如果用户填写的相关信息不正确或不符合规格,将出现相关的警告信息,同时确定按钮无法点击。图5-3用户管理列表页面图5-4用户添加页面图5-4中,如果用户填写完正确的信息,那么管理员可以点击确定以后,服务端接收到相关信息。在保存用户相关信息之前,服务端会采取检测用户信息准确性的措施,主要方法体现为检测用户类的每一个字段是否为空。具体代码如下:publicclassWebInterceptorextendsHandlerInterceptorAdapter{privatestaticLoggerlogger=LoggerFactory.getLogger(WebInterceptor.class);@OverridepublicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException{Stringctx=request.getServletContext().getContextPath();request.setAttribute("ctx",ctx);request.setAttribute("adminPath",ctx+"/admin");request.setAttribute("theme",ThemeUtils.getTheme());request.setAttribute("staticPath",ctx+"/static");request.setAttribute("platformName",MessageUtils.getMessage(""));request.setAttribute("platformCopyright",MessageUtils.getMessage("platform.copyright"));request.setAttribute("platformVersion",MessageUtils.getMessage("platform.version"));UserRealm.Principalprincipal=UserUtils.getPrincipal();if(principal!=null){try{MenucurrentMenu=UserUtils.getCurrentMenu();if(currentMenu==null){currentMenu=newMenu();}Stringpmenuids=currentMenu.getParentIds();request.setAttribute("currentMenu",currentMenu);if(!StringUtils.isEmpty(pmenuids)){request.setAttribute("pmenuids",pmenuids);}else{request.setAttribute("pmenuids","");}List<MenuTreeHelper.MenuNode>menuNodes=MenuTreeHelper.create().sort(UserUtils.getMenuList());request.setAttribute("menus",menuNodes);}catch(Exceptione){}}request.setAttribute("loginUser",UserUtils.getUser());UrlUtils.recordRefererUrl();returntrue;}@OverridepublicvoidpostHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler,ModelAndViewmodelAndView)throwsException{super.postHandle(request,response,handler,modelAndView);}@OverridepublicvoidafterCompletion(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler,Exceptionex)throwsException{super.afterCompletion(request,response,handler,ex);}@OverridepublicvoidafterConcurrentHandlingStarted(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException{super.afterConcurrentHandlingStarted(request,response,handler);}}5.3我的主页模块当用户点击我的主页时,浏览器会展示出相关信息。具体实现效果如下图5-5所示:图5-5我的主页功能模块5.4我的帖子模块在用户界面,用户可以点击首页“我发表的贴”可以查看自己曾经发表过的帖子。具体实现效果如下图5-6:图5-6我的帖子界面设计在用户界面,用户点击“发表新帖”就可以发布新帖。具体实现效果如图5-7:图5-7发表新帖5.5签到活跃榜为了维持老用户的活跃度和吸纳更多的新用户,本系统新增了签到得飞吻的功能。同时用户可以累计签到,当飞吻累计到一定的数量可以提高自己的等级并有更多的特权。图5-8签到活跃榜5.6本章小结本章具体展示了系统的各个功能,对每个功能的界面进行了截图,选取较为重要的功能进行代码展示。6系统测试6.1测试目的在设计和实现整个系统时,并不能保证每个功能都能够正常运行,所以需要对系统进行测试,在测试中可以发现问题和漏洞并及时解决,更好的改进本系统。6.2单元测试6.2.1用户登录测试在测试用户的登陆时,需要填写用户的相关信息,经过系统的验证,填写的正确或错误时,应该有不同的反应,具体测试结果如表6-1:表6-1用户登录测试6.2.2用户注册测试在测试用户的注册功能时,用户填
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车零部件:未来视角-探寻行业趋势把握市场脉动
- 亲子活动安全方案
- 电子竞技的发展与未来-电子竞技行业分析师
- 2026五年级下《图形的变换》易错题解析
- 2026七年级道德与法治下册 正确对待异性好感
- 2026道德与法治三年级活动园 快乐分享
- 2026年电气照明技术考前冲刺练习题及完整答案详解【夺冠】
- 2026年质量员之设备安装质量基础知识题库检测试卷附参考答案详解(轻巧夺冠)
- 2026年中级经济师(人力)试题及答案
- 2026年治安管理业务试题及答案
- 2026年低空经济(eVTOL)载人项目商业计划书
- AI辅助麻醉深度监测的临床应用
- 大连理工大学《机器学习》2024 - 2025 学年第一学期期末试卷
- 下腔静脉阻塞的护理
- 广州市从化区卫生健康局所属事业单位招聘考试真题2025
- 2025年慢性非传染性疾病控制副高真题含答案
- 宫颈机能不全诊治中国专家共识2025版
- 充电桩施工技术方案范本
- 模具外借协议书
- 卫生体系学课件
- 《缺血性脑卒中静脉溶栓护理》解读2026
评论
0/150
提交评论