毕业设计(论文)-网络聊天室的设计.docx_第1页
毕业设计(论文)-网络聊天室的设计.docx_第2页
毕业设计(论文)-网络聊天室的设计.docx_第3页
毕业设计(论文)-网络聊天室的设计.docx_第4页
毕业设计(论文)-网络聊天室的设计.docx_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

辽宁财贸学院本科毕业调查报告(2017届本科毕业生)题目:网络聊天室的设计学生姓名: 学生学号: 系别: 经济系 专业名称: 信息管理与信息系统 指导教师: * 二一七年四月目录一、 引言1二、 需求分析12.1 系统运行环境需求12.2 模块功能分析12.3系统功能结构32.4系统数据流图32.4.1顶层数据流图32.4.2一层数据流图32.4.3二层数据流图42.5数据字典5三、 概要设计53.1系统总体结构设计53.1.1结构设计系统53.1.2系统功能模块结构63.2数据库设计83.2.1概念设计83.2.2逻辑设计83.2.3物理设计9四、 详细设计94.1流程图94.1.1用户注册登录94.1.2在线用户显示模块114.1.3用户交流聊天模块124.1.4聊天信息显示模块134.1.5系统消息显示模块144.1.6管理员管理用户模块144.1.7辅助功能154.2算法164.2.1用户对话存储算法164.2.2检测用户是否被踢算法164.2.3 检测当前用户是否有新消息算法174.3界面设计184.3.1登录首页18II4.3.2注册界面194.3.3聊天室界面204.4工程结构设计204.5各类功能设计214.5.1实体类224.5.2数据库操作Dao层234.5.3监听器234.5.4业务逻辑service层234.5.5工具箱Utils244.5.6 Actions24五、 系统实现245.1用户注册登录模块255.1.1用户注册255.1.2用户登录265.2在线用户显示模块285.3用户交流聊天模块295.4聊天信息显示模块305.5系统消息显示模块325.6管理员管理用户模块325.7辅助功能33六、 总结与体会356.1开发中遇到的问题356.2问题分析与解决方法356.3经验与教训35参考文献37附录381、全套设计加扣 3012250582IV2、 引言随着网络的大幅度普及,以及网络技术快速发展,人们通过网络进行交流的方式发生着巨大的变化,人们不再拘泥于移动电话的通话模式,越来越多的人通过网络聊天工具进行交流,网络聊天室便是非常典型的聊天工具之一。聊天室系统的即时交流方式满足了网络中人们同时与多人进行聊天交流的需要,使得较多的人在同一个聊天页面进行交流变得方便,简单。本设计所完成的网络聊天室具有常用聊天室的所有功能,包括使用账号登录聊天室、注册账号、显示在线用户列表、显示系统消息、两人之间进行私密聊天、消息提醒、发送表情、修改发送文字颜色;同时,为了管理聊天室中的用户使用语言的文明,赋予管理员踢出使用不文明语言的用户功能,显示全部聊天信息。该系统采用B/S(浏览器/服务器)结构进行开发,参考网络中正在使用的大型聊天室的架构、分析聊天室可实现功能,结合本次设计的相关要求,进行开发设计并写出需求分析说明书。该系统具体开发环境:使用Windows8.1专业版作为服务器运行平台,服务器开发语言使用Java语言,前台使用Jsp技术、JavaScript、Jquery语言,系统框架使用Struts2+Hibernate+Spring框架,后台数据库使用MySql数据库。3、 需求分析该系统采用B/S模式设计,开发目的主要是提供一个基于网络的安全文明的供多人聊天社交平台。2.1 系统运行环境需求该系统是在windows 8.1专业版操作系统下,搭建的运行平台,使用myEclipse作为开发工具,mySql作为数据库,Java语言作为系统后台开发语言。JSP技术作为前台开发语言,其中使用JavaScript以及Jquery作为脚本语言。工程框架使用Struts+Spring+Hibernate框架。(1) 服务器配置:配置apache-tomcat-7.0.39服务器。(2) 客户端要求配置:谷歌浏览器、狐火浏览器以及IE浏览器5.0以上版本。2.2 模块功能分析(1) 用户注册登录模块新用户在使用该聊天室系统时,必须先进行注册新用户操作,后台将注册信息添加到数据库中,用于胡勇登录验证;在注册成功之后再进行登录;当用户名与密码匹配成功,即可进入聊天室系统。(2) 在线用户显示模块当用户登录进入系统后,该页面实现在线用户的统计,并将在线用户依次显示出来。如果当前用户属于管理员角色,则在普通用户角色的右边显示“踢下线”链接,如果当前用户属于普通用户角色,则正常显示在线用户名。(3) 用户交流聊天模块该模块主要负责发送信息内容,选择聊天对象;除此之外,可以修改聊天内容的字体颜色以及发送的表情。发言的颜色和发言的表情通过下拉式组合框实现。发言内容书写完毕后。通过点击“发送”按钮,发送聊天内容。(4) 聊天信息显示模块当用户选择聊天对象并发送聊天内容后,显示出当前发送的内容以及之前的历史聊天内容,聊天的内容只有对话的两人可见,其他人不可见。当用户退出系统后,再次登录进入聊天室时,两人的对话记录依然存在。(5) 系统消息显示模块系统消息提示所有用户,聊天室的文明守则,以及当其他用户进入、离开或被管理员踢出聊天室的情况。(6) 管理员管理用户模块管理员用户可以与其他用户聊天,并且随时监督其他用户的言行,一旦出现不文明用语,即将改用户踢出聊天室。(7) 辅助功能辅助功能包括:显示全部聊天信息、退出聊天室、检测用户是否有新消息。显示全部信息是指当用户之间的聊天信息占满全屏的时候,点击显示全部信息,即可看到全部的聊天内容。退出聊天室是指用户离开聊天室。检测用户是否有新信息,当用户收到其他用户发来的消息时,提示用户。2.3系统功能结构图2-1 功能结构图2.4系统数据流图2.4.1顶层数据流图图2-2 顶层数据流图2.4.2一层数据流图图2-3 一层数据流图2.4.3二层数据流图图2-4 二层数据流图2.5数据字典数据项名称:用户名数据项别名:username说明:用户唯一标识类型:varchar长度:20取值范围及含义:用户登录聊天室的用户名长度在120之内不论数字、字符还是符号。表2-1 用户名数据字典数据项名称:密码数据项别名:password说明:用户登陆密码类型:varchar长度:20取值范围及含义:用户登录聊天室的密码长度在120之内不论数字、字母还是符号。表2-2 密码数据字典数据项名称:级别数据项别名:type说明:用户身份级别类型:varchar长度:20取值范围及含义:用户登录聊天室的角色,管理员(admin)或者普通用户(user)。表2-3 级别数据字典4、 概要设计3.1系统总体结构设计3.1.1结构设计系统图3-1 总体结构图3.1.2系统功能模块结构(1) 用户注册登录模块用户注册是添加用户到数据中,只能注册普通用户,当注册验证信息合格,即可登录进入聊天室。图3-2 用户注册登录H图(2) 在线用户显示模块当用户登录进入系统后,该页面实现在线用户的统计,并将在线用户依次显示出来。如果当前用户属于管理员角色,则在普通用户角色的右边显示“踢下线”链接,如果当前用户属于普通用户角色,则正常显示在线用户名。(3) 用户交流聊天模块交流包括选择聊天对象,选择发送表情,字体颜色。图3-3 用户聊天H图(4) 聊天信息显示模块聊天信息的显示,首先系统必须获得与当前用户正在进行聊天的对象,根据聊天对象的用户名,获得存储在系统中的聊天记录,传送到浏览器客户端,浏览器客户端进行1s刷新界面,从而获取两人之间的私密聊天记录并显示在界面上。图3-4 聊天信息显示H图(5) 系统消息显示模块系统信息包括:聊天室守则、系统公告。图3-5 系统信息显示H图(6) 管理员管理用户模块管理员用户可以与其他用户聊天,并且随时监督其他用户的言行,一旦出现不文明用语,即将改用户踢出聊天室。(7) 辅助功能辅助功能包括:显示全部聊天信息、退出聊天室。显示全部信息是指当用户之间的聊天信息占满全屏的时候,点击显示全部信息,即可看到全部的聊天内容。退出聊天室是指用户离开聊天室。3.2数据库设计3.2.1概念设计E-R图:该系统只存在用户一个实体,用户的属性包括:id、用户名、密码、级别。图3-6 E-R图3.2.2逻辑设计用户表字段名数据类型长度说明描述idint4不空用户iduserNamevarchar20不空用户名passwordvarchar20不空登录密码typevarchar20不空用户级别表3-1 用户表3.2.3物理设计数据库类型使用mySql数据库,用户表的主键为id。5、 详细设计4.1流程图4.1.1用户注册登录用户注册的时候,操作人员输入想取的用户民,输入自创密码与确认密码,点击注册;此时,系统会首先检测两次密码是有一致,若不一致,提示用户密码不一致,请重新输入。若一致,检测用户名是否已经被注册过,若已经被注册,提示是用户,已被注册。若为被注册,系统添加用户注册信息到数据库user表中。界面提示用户注册成功,并跳转到登录界面。注册的用户默认type是普通用户,即user。图4-1 注册流程图用户登录的时候,用户输入用户名,密码,点击进入按钮,系统获取用户所填写的用户名与密码,首先判断该用户名是否存在于数据库,若不存在,提示用户不存在该用户,请重新填写或注册,若该用户名存在,则判断密码与用户名是否匹配,若不匹配,提示用户密码错误,请重新填写,若匹配,进入聊天室界面。图4-2 登录流程图4.1.2在线用户显示模块当用户登录进入聊天室时,系统会将用户的信息存入application属性的userMap中,进入系统后,在jsp中获取userMap,将所有的用户信息中的用户名显示出来。图4-3 显示在线人数流程图4.1.3用户交流聊天模块用户实现找人聊天,点击聊天对象的用户名,获取聊天对象,填写发送内容,选择表情、与发送字体的颜色,点击发送即可进行聊天。在未选择聊天对象时,点击发送,提示用户选择聊天对象;在未填写发送的内容点击发送时,提示用户未填写发送内容。发送的表情默认为微笑着,字体颜色默认为黑色。图4-4 发送信息流程图4.1.4聊天信息显示模块聊天信息显示,首先必须保证聊天对象的用户名不为空,当不为空时,系统将获取用户名,在application作用域中获得,相应的聊天记录属性,返回到jsp中,并显示在界面中。图4-5 显示聊天记录流程图4.1.5系统消息显示模块在用户登录聊天室时,系统存储聊天室的聊天守则,并获取登录的用户名,存储系统公告(XXX进入聊天室!);当用户离开聊天室时,修改系统公告(XXX离开聊天室!);当用户被管理员踢出聊天室时,修改系统公告(XXX,被管理员踢出聊天室!)。图4-6 显示系统信息流程图4.1.6管理员管理用户模块当用户使用了不文明的语言,管理员有权利该用户踢出聊天室。获取用户名,在application中的userMap中获得相应的用户session,清除该session即可将用户踢下线。图4-7 管理员管理用户流程图4.1.7辅助功能显示与某人的全部聊天信息,当聊天的内容占满全屏,点击显示全部消息,即可显示全部信息。当用户离开聊天室时,系统获取当前用户名,并释放user的session。检测用户是否有新消息:图4-8 检测信息流程图4.2算法4.2.1用户对话存储算法首先获取进行对话双方的用户名以及id,再比较两者的id若id1id2,则messageName = userName1 + userName2;否则messageName = userName2 + userName1。图4-9 用户对话存储算法4.2.2检测用户是否被踢算法当用户登录进入聊天室时,向application中存储一个isKickedMap属性,将用户名添加到isKickedMap中并赋值为1(1表示在线,-1表示被踢)。当管理员将某个用户踢下线时,将isKickedMap属性中的改用户名修改成“*”符号,并赋值为-1。Jsp页面每秒刷新一次,当检测到isKickedMap属性中getAttribute(“*”)= -1 时,则该用户被踢下线,此时要在jsp页面中提示用户已被踢下线,并返回登陆界面。图4-10 检测用户是否被踢算法4.2.3 检测当前用户是否有新消息算法Jsp每隔1s就检测一次当前session中的call属性中是否有值,如果有值,返回到jsp中,在jsp中遍历出有个值,并且让id为该值的标签的背景色为红色。图4-11 检测当前用户是否有新消息算法4.3界面设计4.3.1登录首页登陆首页是写在index.jsp中的,前台主要运用jsp动态网页技术。并使用JavaScript语言判断用户是否正确输入用户名以及密码。在登录界面可以点击注册用户进入用户注册界面。图4-12 登录界面4.3.2注册界面图4-13 注册界面4.3.3聊天室界面聊天室界面:左侧是在线人员列表显示,和在线人数的统计;右侧是专门显示系统公告的地方;中间属于聊天内容的显示;下方是用户发送消息的模块,在该模块中,当用户点击聊天对象的用户名,下方的第一个input框将获取到聊天对象的用户名,还可以选择聊天的表情与字体的颜色,在最下角的input框可以编辑所要说的话,点击发送,即可发送聊天内容。图4-14 聊天室主界面4.4工程结构设计该系统采用SSH(struts2 + spring + hibernate)框架搭建工程。系统的基本业务流程是: 在表示层中,首先通过JSP页面实现交互界面,负责接收请求(Request)和传送响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的Spring IOC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。工程结构中其中:applicationContext.xml文件是关于配置spring的配置文件,主要是将各种POJO,JAVA,action配置到XML转交给beanfactory管理,降低耦合度。perties文件配置struts的属性值,程序员可以通过它来管理Struts 2 框架中定义的大量常量。perties 文件是一个标准的properties 文件。struts.xml 为Struts 2的核心配置文件。struts.xml文件主要负责管理应用中的Action映射,以及该Action包含的Result定义。图4-15 工程结构4.5各类功能设计4.5.1类图图4-16 工程类图4.5.2实体类User.java,属性包括:private int id;/idprivate String username;/用户名private String password;/密码private String type;/级别用于建立与数据库user表表的映射关系,管理用户。Message.java,属性包括:private static String comeIn = 走进聊天室!;private static String goOut = 离开聊天室!;private static String kicked = 被管理员踢出去!;用于获取系统公告。4.5.3数据库操作Dao层BaseHibernateDAO.java,方法:public List query(String hql, Object values,int firstResult, int maxResults)用于查询数据库。public Serializable save(Object obj) 用于添加用户到数据库中4.5.4监听器MyServletContextListener.java,实现了ServletContextListener接口。重写方法:public void contextInitialized(ServletContextEvent sce)用于监听:一旦创建servletContext对象,就添加用户和相应的session进去。使用此监听器可以得到所有登录的用户以及相应的session。监听器的配置:在WEB-INF下的web.xml中写上下面语句。com.cust.listener.MyServletContextListener实体类实现监听HttpSessionBindingListener接口,当当前用户session.setAttribute(“user”, user)时,运行public void valueBound(HttpSessionBindingEvent event)方法,当session.invalidate()时,运行public void valueUnbound(HttpSessionBindingEvent event)方法。4.5.5业务逻辑service层LoginSrvImpl.java,方法:public Map executeLogin(String username, String password)用于用户登录,返回值Map:当用户名不存在reMap.put(result, -1);reMap.put(msg, 用户不存在!); 当密码错误时,eMap.put(result, -2);reMap.put(msg, 密码错误!);登录成功时,reMap.put(result, 1);reMap.put(msg, 登录成功!);reMap.put(user, user);RegisterSrvImpl.java, 方法:public int executeRegister(String userName, String password)用于注册,添加用户到数据库。public int query(String userName)用于判断用户名是否已经被注册了。返回值为int,当用户被注册return -1;4.5.6工具箱UtilsUtils.java,方法:public static Map gainUserMap()/获取application里的userMappublic static Map gainSysMessageMap()/获取系统消息public static HttpSession gainToSession(String toId)/得到对方sessionpublic static HttpSession gainCurrentSession()/得到当前sessionpublic static ServletContext gainApplication()/得到applicationpublic static String gainMessageName(String from, String to, String fromId, String toId)/获得聊天消息的名称4.5.7 ActionsCheckNewMessageAction.java /检测当前用户是否有新消息CheckUserIsKickAction.java /检测当前用户是否被管理员踢出聊天室ExitAction.java /当前用户离开聊天室KickAction.java /管理员踢出语言不文明的用户LoginAction.java /用户登录RegisterAction.java /新用户注册SendMessageAction.java /发送聊天消息给指定用户ShowSendMessage.java /显示聊天信息SystemMessageAction.java /显示系统消息6、 系统实现聊天室的功能主要是实现用户的发言和观看大家发言的内容,发言界面和聊天内容需要显示在同一屏界面中,以方便发言和观看,另外,通常还需要显示当前在线的人数和用户列表,以方便选择对谁发言。用户书写发言的界面、聊天内容的显示、用户列表的显示均需要通过单独的页面来实现,为了能在同一屏界面中同时显示多个页面的内容,此时需要利用带框架集的页面来实现。框架集是多个框架的集合,每一个框架可显示一个页面的内容,在同一屏中需要显示多少个页面,就需要创建一个具有多少个框架的框架集来实现,整个框架集最后存盘形成一个页面,以后浏览该页面时,各框架集中的内容就会自动显示出来。7、 总结与体会6.1开发中遇到的问题我在聊天室系统程序设计过程中,遇到的问题大体可分为两类:A.知道但不会。这类问题往往是我知道应该怎么去设计,但却就是动不了手,要不就错误百出。B.完全不会。这类问题摆在面前,我只能束手无策,苦恼而又无奈。6.2问题分析与解决方法对于第一类问题,其实本质上不存在什么大的问题,都是因为自己平时学习功底不够,还有编程时不够谨慎,才造成的。人非完人,学过了,有点不懂或迷惑的地方也是很正常的,再说竟然知道怎么做,有希望,那就有信心去解决。我在精神上坚定了,就能耐下性子征服它。通过查阅书本,仔佃分析、思考,请教同学、老师,这类问题还是得到了很好的解决。对于第二类问题。造成的原因可分两种:一是明显的超过了我的能力范围;二是因为我对问题的认识、分析不够深入造成的假复杂现象。此类问题非要对症下药,效果方最好。如果没有找出原因而盲目努力,是不会有太大效果的。在这类问题出现后,人常常会感到烦躁、泄气,这时便不可能出现解决问题的可能。怎么办好?我想,最重要的是要能稳住心态,相信自己终究会取得胜利的,同时也必须清楚地认识到自己的能力是有限的。此时,你需要学习知识,更要多借鉴他人在相同问题上的处理方法,弄懂了,一切就都好办了,离解决问题也就不会太远了。6.3经验与教训由于能力及时间的关系,这个Java聊天室程

温馨提示

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

评论

0/150

提交评论