校园软件科技有限公司专业实习报告.doc_第1页
校园软件科技有限公司专业实习报告.doc_第2页
校园软件科技有限公司专业实习报告.doc_第3页
校园软件科技有限公司专业实习报告.doc_第4页
校园软件科技有限公司专业实习报告.doc_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

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

文档简介

北京科技大学本科生专业实习报告目录引言11实习单位与工作内容21.1实习单位概况21.1.1公司理念21.1.2公司产品21.2实习工作31.2.1承担项目31.2.2工作任务31.2.3工作意义32实习工作内容和过程42.1工作内容42.1.1 SSH框架的认识42.1.2 JavaScript学习42.1.3 Qt应用程序的开发52.2工作过程53局域网聊天软件程序开发133.1开发技术133.1.1关键技术与理论133.1.2开发工具143.2可行性分析153.2.1业务可行性153.2.2 技术可行性153.2.3 操作可行性153.3 需求分析163.3.1 运行环境163.3.2 功能需求163.3.3性能需求193.3.4界面需求193.4 概要设计203.4.1总体设计203.4.2接口设计213.4.3系统出错设计223.5 详细设计223.5.1系统类设计223.5.2模块设计283.5.3界面设计353.6 系统测试373.6.1测试环境373.6.2 系统测试基本原则373.6.3 软件测试方法383.6.4 系统测试用例383.6.5 测试结论394实习总结40结 束 语42参 考 文 献43附 录44- 2 -北京科技大学本科生专业实习报告引言实习是每一个大学生必须拥有的一段经历,它使我们在实践中了解社会、在实践中巩固知识;实习又是对每一位大学生专业知识的一种检验。作为一名即将进入大四的学生,生产实习是一门主要实践性课程。是我们将理论知识同生产实践相结合的有效途径,是增强我们劳动观点、工程观点和建设有中国特色社会主义事业的责任心和使命感的过程。通过生产实习,可以使我们学习和了解市场经济下软件公司实际开发软件的流程和主流设计方法、思想和模型,培养学生树立理论联系实际的工作作风,以及生产现场中将科学的理论知识加以验证、深化、巩固和充实。并培养我们进行调查、研究、分析和解决工程实际问题的能力,为后继专业课的学习、课程设计和毕业设计打下坚实的基础。对于一名即将踏入社会迈向工作岗位的大四学生来说,熟悉了公司开发软件的流程和方法、认识自己所学知识体系的不足,通过生产实习来认识到自己平时学习的漏洞通过生产实习,可以拓宽我们的知识面,增加感性认识,把所学知识条理化系统化,学到从书本学不到的专业知识,从而对自己的知识体系进行完善,学习更多真正在工程实际中应用广泛的知识技能,为今后的学习和将从事的技术工作打下坚实的基础。1实习单位与工作内容1.1实习单位概况北京清元优软科技有限公司是北京市海淀区科技园内的高新技术企业、软件企业,位于北京市海淀区上地东路1号盈创动力大厦E座302,是清华大学计算机与信息管理中心数字校园软件研发和推广的唯一合作伙伴。公司专注于完成数字校园计划、大学生资源计划(URP,University Resource Planning)系统的建设、运行维护和用户服务的业务需求,面向国内高校提供数字校园解决方案和咨询服务、提供数字校园系列应用软件的开发服务、提供数字校园软件的集成服务。1.1.1公司理念清元优软由一支成长于教育信息化建设、热爱教育信息化事业的百余人队伍组成。是一个有理想、有追求、勇于开拓进取、朝气蓬勃又富于理性的团队。制定发展战略的核心领导层以及首席设计师,多年来一直从事数字校园与URP的理论研究和建设实践,承担了多所高校数字校园软件系统的设计研发,在业内享有盛誉。公司产品服务于全国200多所高校,在创造数字校园、构建信息化校园方面发挥了重大的作用,公司贯彻“求实创新、追求卓越、诚信协作”的理念,以推动高校信息化建设发展为己任,为客户提供最优的数字校园解决方案与全方位的技术支持服务,成为提升高校管理水平和工作效率的得力助手。1.1.2公司产品公司的主要产品包括:URP高校信息集成管理平台(信息标准、信息门户系统、数据交换平台、统一身份认证平台、综合信息服务系统(决策分析)、URP高校教务管理系统、URP高校研究生教务管理系统、URP高校协同办公系统、URP高校学生管理系统(URP高校招生管理系统、URP高校数字迎新系统、URP高校学工管理系统、URP高校就业管理系统、URP高校毕业离校系统、URP高校校友管理系统)、URP高校科研管理系统、URP高校网络教学系统、URP高校人事管理系统等。与国内外诸多软硬件厂商,如HP、Sun、Oracle、清华在线、致远协创、商邮等公司都建立了良好的合作伙伴关系,共同为高校提供优秀的集成服务。1.2实习工作1.2.1承担项目在为期五周的实习时间中,我的主要工作室负责公司7月20号即将上线的中国石油大学留学生管理系统中部分功能模块的实现以及局域网聊天室软件的开发工作。1.2.2工作任务实习中承担的是中国石油大学留学生管理系统前端页面功能的开发编写工作,主要负责的是系统参数设置模块功能的实现,目的是使用户参数模块的性能更加完善,操作更加简单明了,实现界面的人性化设计,人机交互性力求使用户满意。在完成了中国石油大学留学生管理系统的前端模块功能开发之后,又独立进行了Qt软件的学习,并利用C+程序设计语言在Qt环境下进行了局域网聊天软件的开发工作。其中主要涉及到了局域网群聊、私聊和文件传输等模块的实现编码工作。1.2.3工作意义留学生管理系统的开发是利用SSH(Struts+Spring+Hibernate)框架实现的。所谓SSH框架是基于MVC(Module、View、Control)软件开发模式的一种框架体系结构。对于传统的ASP和 PHP等脚本站点技术,将整个站点的业务逻辑和表现逻辑都混杂在ASP或PHP页面里,从而导致页面的可读性相当差,可维护性非常低。即使需要简单改变页面的按钮,也不得不打开页面文件,冒着破坏系统的风险。但采用严格分层J2EE架构,则可完全避免这个问题。对表现层的修改即使发生错误,也绝对不会将错 误扩展到业务逻辑层,更不会影响持久层。因而学习利用SSH框架进行基于B/S的软件系统开发更有助于了解MVC开发模式,使得开发过程更加清晰,便于对代码进行修改,提高代码的可读性和程序的清晰度。通过在公司学习SSH框架,进行留学生系统的开发,可以是我对Java有更深刻的理解和认识,明白现行市场中主流的开发方式和开发技术,对今后在校更有针对性的学习奠定了基础。局域网聊天开发软件是利用跨平台的C+图形界面库Qt进行开发。Qt拥有良好的面向对象性,支持了大量的API,并且拥有成熟完善的开发体系结构,也是嵌入式平台上应用广泛的图形化编程和多媒体编程工具。学习Qt编程可以为以后从事嵌入式开发奠定坚实的基础。2实习工作内容和过程2.1工作内容2.1.1 SSH框架的认识SSH(Struts+Spring+Hibernate)框架是基于MVC设计模式的一种框架体系结构。所谓MVC(Model-View-Controller),是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。1 用户与视图(View)进行交互,写入数据并进行提交,控制器(Controller)接收到来自视图的事件并对模型(Model)进行操作,根据用户操作改变更新模型,最后在显示在界面上。这样的设计模式实现了视图与业务逻辑层的分离,增加了代码的重利用率,减少数据表达,数据描述和应用操作的耦合度。而Struts架构则是典型的基于MVC框架的一种开发框架体系。SSH框架简单的来说就是指将开发系统分为表示层、业务逻辑层、数据持久层和域模块层4个部分。基于SSH框架的系统基本业务流程为,在表示层利用Struts框架实现页面交互,传送请求(request)和接受响应(response);在业务逻辑层,利用Spring技术向action提供业务模型组件(Module)和该组件的协作对象处理组件(DAO)完成的业务逻辑;在持久层依赖于Hibernate的对象化映射和数据库交互,处理DAO组件的请求并返回结果。结合具体实现留学生管理系统项目的程序代码来认识Struts框架,jsp页面相当于表示层,用来与用户进行交互;通过java类实现业务控制组件,最后通过中心配置文件Struts.xml实现java类与jsp页面的关联。2.1.2 JavaScript学习JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并且具有安全性能的脚本语言。它与Html超文本标记语言、Java脚本语言一起实现了Web页面中连接多个对象,与Web客户进行交互的作用。JavaScript语言可以做到响应请求事件,而不用任何网络来回传输资料,所以在进行数据输入时,不用经过传给服务器处理在传回来的过程,可以直接在客户端进行处理。22.1.3 Qt应用程序的开发Qt是跨平台的C+图形界面库要用于Windows、Mac-Os和Linux等环境下GUI的开发。Qt不但拥有了完善的C+图形库,而且新版本逐渐整合了数据库、OpenGL库、多媒体库、网络、脚本库、XML库、WebKit库等等,其核心库也加入了进程间通信、多线程等模块,极大的丰富了Qt开发大规模复杂跨平台应用程序的能力。在利用Qt进行局域网聊天软件的开发时,主要使用和学习的是提供网络程序设计的QtNetwork库。QtNetwork库支持通用协议如HTTP、FTP和DNS,在该库中可以利用QTcpSocket和QTcpServer实现TCP协议,利用QUdpSocket实现UDP协议。2.2工作过程在为期五周的实习工作中,我主要承担负责的是清元优软公司为中国石油大学所开发的留学生管理系统的系统参数设置模块的功能编写和界面实现,其中应用到了Struts框架和java程序设计的部分知识。在开发程序前,首先要进行系统环境的搭建。公司使用的是MyEclipse+Resin 3.0进行留学生系统的搭建。在MyEclipse中的菜单栏选择MyEclipse-Perference-MyEclipse-Server中的Resin3.X,选择配置Resin3.0的路径以及jdk路径,然后在MyEclipse下运行Resin3.0服务器。服务器运行成功后,需要对resin.conf进行如下配置: jdbc/OracleDB jdbc:oracle:thin::1521:jw lxsxt lxsxt 8 1800 30s 配置完成后保存resin.conf,然后再次运行服务器,然后打开IE浏览器在地址栏中输入:8082/即可打开如图2.1所示的登陆界面,留学生系统搭建完成。图2.1 留学生系统登录界面完成了系统的搭建,便开始进行系统参数设置模块的编写工作。利用公司提供的代码生成器Code Gen,对数据库中的Sys_param表自动生成相关表操作的java类和jsp页面代码文件和配置文件,然后将生成的jsp和java文件按照相应的路径导入到工程当中,并且修改工程中lxsxt-front.xml、lxsxt-end.xml和validator-lxsxt.xml三个配置文件,即完成了系统参数设置页面的基本配置。之后利用系统管理员账号登陆系统,在相应的系统菜单模块设置的对应路径一栏中填写bean的相对路径xtsz.sys_param.do并保存,即完成了模块页面代码的导入工作。图2.2 系统管理配置之后的工作是根据具体的需求对程序代码编写来使页面的操作更加人性化。在对detail.jsp和edit.jsp页面中的form进行了编写时使用了JSTL和EL标签技术,主要实现功能是,在选择编辑不同系统参数时,进入到不同的参数设置界面,对各个不同的参数进行配置,以此达到界面美观和操作简单易行的目的,因此借助JSTL条件标签来完成条件分支。其中在界面设计上还利用了下拉框。 -请选择-option value=开 selected开option value=关 selected关完成对edit.jsp页面的编写后,开始对index.jsp页面进行编写和功能实现。其中该页面主要工作是需要编写table中学校名称项和成绩录入开关项中操作栏对应的功能实现。通过对sys_paramContorller.java中一个方法public ModelAndView modify()以及index.jsp中一个javascript功能function doEdit()的编码,实现所需要的功能。主要修改代码如下所示:Java类:public ModelAndView modify(HttpServletRequest request, HttpServletResponse response) throws AppException,IOException String id = ServletRequestUtils.getStringParameter(request, id, -1); String mode = request.getParameter(p_param_mode); String value = request.getParameter(p_param_value); Sys_param sys_param = this.sys_paramService.queryTableById(id); try sys_param.setParam_mode(mode); sys_param.setParam_value(value); sys_param.setId(id); this.sys_paramService.update(sys_param); showMessage(request, 修改系统参数表成功); MirrorCacheTool.refresh(sys_param); catch(AppException e) logger.error(修改系统参数表 + sys_param + 失败, e); showMessage(request, 修改系统参数表失败: + e.getMessage(), e); return query(request, response); JavaScript :function doEdit() var frm = window.document.forms0; var menuDiv = window.document.getElementById(menuDiv); if(getCheckedCount(frm.p_id)=0) alert(请选择一条记录); else if(getCheckedCount(frm.p_id) 1) alert(每次只能修改一条记录); else if(getCheckedCount(frm.p_id) = 1) menuDiv.innerHTML = ; /点击提交以后将菜单设置为不可用,防止重复提交 frm.m.value = edit; frm.submit(); 最后在jsp页面中调用编写的javascript即可实现编写的功能。界面完成后如图2.3、2.4、2.5所示。图2.3 系统参数设置index.jsp页面图2.4 系统参数设置学校名称参数修改图2.5 系统参数设置成绩录入开关参数修改在完成了系统参数设置模块的代码编写和功能实现后,有进行了学校信息表和专业课程表两个页面模块的编写工作,编写的基本流程与系统参数设置基本相同,需要实现对表中数据的增加(add,jsp)、修改(edit,jsp)、删除等功能。实现页面如图2.62.9所示。图2.6 学校信息表index.jsp页面图2.7 学校信息表add.jsp界面图2.8 学校信息查询edit.jsp页面图2.9 专业课程表index.jsp页面完成了全部的代码编写后便将所编写的代码上传到CVS(Concurrent Version System)服务器上,完成了这段时间的工作。在进行留学生管理系统的部分模块的编写和实现时,同时我还进行这Qt的学习,利用Qt进行局域网聊天软件的编写和实现。3局域网聊天软件程序开发3.1开发技术3.1.1关键技术与理论(1) P2P技术:对等网络互联技术(Peer to Peer,P2P)是一种新型的网络技术,依赖网络中参与者的计算能力与带宽,在P2P构成的网络中,没有客户端和服务器的概念,对于每个节点,相对于网络中的其他节点来说,它既是客户端,又是服务器。该技术拥有较佳的并行处理能力和效率,并且易于维护3。(2) UDP协议:用户数据报协议(User Datagram Protocol, UDP),是一个简单的面向数据报的传输层协议。UDP协议只提供数据的不可靠传输,一旦将数据发送出去,就不保留数据备份。UDP协议的数据报头由4个域构成:源端口号、目标端口号、数据报长度、校验值。UDP协议是一个无连接协议传输数据之前源端和终端不建立连接,因而可以实现一台服务器向多个客户端发送消息的功能。(3) TCP协议:传输控制协议(Transmission Control Protocol,TCP),是一种面向连接的、可靠的、基于字节流运输层(Transport layer)的通信协议。相比较于UDP协议,TCP协议具有面向连接、有序数据传输、无错误数据传输等优势,因而在进行文件传输时可以保证传输文件的正确性,避免丢包现象的发生。(4) Socket网络编程接口:Socket套接字接口,是一个应用程序接口(API),使用一个Internet套接字的概念,使主机间或者一台计算机上的进程间可以通讯。Socket的连接过程可以分为三个步骤:服务器监听、客户端请求和确认连接。具体过程为客户端的套接字向处于等待连接状态的服务器发送连接请求,服务器接收并响应请求,然后把服务端的套接字描述发回给客户端,建立连接。而服务器端则继续处于等待状态,等待其他套接字的连接请求。因而利用socket可以实现单服务器多客户端的同是响应连接。图3.1 Socket工作流程图3.1.2开发工具(1) Qt libraries Qt libraries是一个由挪威Trolltech 公司开发的跨平台的C+图形界面库,主要用于Windows、Mac-Os和Linux等环境下GUI的开发。Qt采用面向对象的编程语言,学习简单、易于扩展、并且允许组件编程。诺基亚公司提供三种Qt授权方式,其中LGPL和GPL是免费发布的,而商业版需要收取授权费用。本程序开发所使用的是Qt libraries 4.8.2 for Windows是诺基亚公司于2012年5月22日发布的,其功能上融合了数据库、OpenGL、多媒体库、NetWorking、Webkit、XML等常用的库文件,核心库中也加入多进程和多线程间的通信模块,大大扩展和丰富了Qt开发大规模复杂平台应用程序的能力在真正意义上实现了“Code Less; Create More; Deploy Anywhere”的研发宗旨。(2) Qt Creator Qt Creator是实现Qt开发的轻量级跨平台集成开发环境(IDE)。Qt Creator内包含了用于开发和测试Qt应用程序的完整工具,其中包括C+代码编辑器、上下文代码感知器、可视化Debug、代码管理器、Qt Designer、项目和构建管理工具等。在进行Qt开发时使用Qt Creator一定程度上可以确保首次上手接触Qt框架的开发人员能够迅速上手操作编程。3.2可行性分析可行性分析的任务是从技术上、业务上、操作上分析所提出的项目是否可行。可行性研究的目的就是用最小的代价在尽可能短的时间内确定系统目标和规模是否可行,是否能够解决,是否值得解决。3.2.1业务可行性随着互联网的迅速发展,网上实时聊天和传输文件变成了很多用户的需求。而在各个公司、学校、乃至学生宿舍,局域网聊天室也成为了一个团队进行交流信息的主要工具之一。利用局域网聊天室,成员可以不受具体物理环境的限制,通过网络进行问题的探讨以及文件的传输。3.2.2 技术可行性随着计算机技术的发展,对于该局域网聊天室,很多语言和集成开发环境都是理想的选择。根据实际情况,我决定使用基于Qt的跨平台C+图形界面设计库来进行软件的开发。Qt在进行图形界面开发上提供了丰富的库和API接口,并且提供了Socket实现通信链句柄。3.2.3 操作可行性Qt实现的软件具有友好的界面和简单易懂的操作提示,很方便用户上手即用。在进行文件传输时,使用TCP协议进行传输也保证了数据的安全性以及准确性。3.3 需求分析需求分析是在可行性研究的基础上,将用户对系统的描述,通过开发人员的分析概括,抽象为完整的需求定义,再形成一系列文档的过程。可行性研究旨在评估目标系统是否值得去开发,问题是否能够解决,而需求分析旨在回答系统做什么的问题,通过需求分析明确开发软件的功能、性能和GUI界面,使软件开发人员清楚的明白用户的需求,确保将来开发出来的软件产品能够真正满足用户的需要。3.3.1 运行环境硬件环境:HDD 10G以上、内存 1G以上操作系统:Microsoft Windows XP及系统以后版本3.3.2 功能需求(1) 功能需求说明1) 局域网聊天室实时聊天功能:主要需要实现局域网多用户之间的实时聊天通信,并且用户可以直接看到所在局域网内其他用户的IP信息,用户在进行聊天时可以进行字体、字号、颜色、加粗、倾斜、下划线等设置,也可以保存聊天记录。2) 局域网内文件传输:实现局域网内两个用户之间文件的相互传输。当一个用户向另一个用户发送文件时,另一个用户可以选择接受文件或者拒绝接收。如果接收文件则开始进行文件传输,传输过程中显示文件传输的速度、用时、文件总大小、已接受文件大小和剩余时间。如果拒绝接收,则不发送文件,并返回发送端对方拒绝接收的消息。3) 局域网私聊功能:在用户信息栏中双击一个用户则可打开私聊窗口与该用户实现私聊通信。与局域网聊天室功能相同,可以实现字体、字号、颜色、加粗、倾斜、下划线的设置,可以 保存聊天记录。(2) 系统功能描述实现根据所提出的需求利用Rational Rose进行用例图的设计。利用用例图可以描述业务功能,指导以后软件的测试环节,并且在整个软件开发过程中对工作流起到指导作用。图3.2 系统用例图描述表3.1 chatroom用例说明表用例名:chatroom简要说明:局域网内用户进入聊天室进行聊天事件流:用户进入局域网聊天工具页面 在界面文本框中输入想要发送的信息 点击发送按钮发送信息 信息显示在输出信息文本框内前置条件:用户输入合法信息并提交后置条件:系统处理用户发出的信息并显示在输出信息文本框中活动图:图3.3 聊天室功能活动图描述表3.2 fileTransport用例描述用例名:fileTransport简要说明:局域网内用户进行文件传输事件流:用户进入局域网聊天工具 点击发送文件按钮,选择发送的文件 接收方给予响应 进行文件传输 前置条件:用户选择合法的文件、接收方选择确定接收文件后置条件:系统通过TCP协议进行文件传输活动图:图3.4 文件传输功能活动图描述表3.3 privateChat用例描述用例名:privateChat简要说明:局域网内两用户私聊事件流:用户进入局域网聊天工具 双击用户信息栏中的某个用户名打开私聊窗口 发送消息 对方接收消息前置条件:用户选择局域网中在线的某个用户并发送合法消息后置条件:系统处理用户发送的信息并在对方系统上打开私聊窗体,显示消息活动图:图3.5私聊功能活动图描述3.3.3性能需求支持网络通信,实现全方位多功能的点对点通信和文件传输功能。系统的局域网聊天功能要求及时性,还要求尽可能提高文件传输的安全性和传输效率,避免无效数据的传输。3.3.4界面需求界面设计要求美观,人机交互界面友好。本程序要求设计3个窗体实现软件功能,分别为聊天主程序窗体、发送文件窗体、接收文件窗体。根据已有的需求信息和功能分析,聊天主程序窗体需要有信息的输入框和显示框、需要能够现实局域网中各个用户的IP地址和用户名、能够对输入文字的字体、字号等进行设置,以及传输文件按键。发送文件和接收文件窗体需要能够选择设置需要发送和接受的文件路径,可以显示文件传输进度等。3.4 概要设计系统概要设计的目的就是根据需求分析结果确定系统是由哪些模块哪些功能组成的,这些模块之间又有怎样的关系,每个模块是如何实现的。模块化的依据是抽象、信息屏蔽和局部化、自顶向下逐步求精和模块的独立性,依照高内聚低耦合的原则对系统进行模块化设计。3.4.1总体设计(1) 系统实现原理聊天系统的设计最重要的就是系统实时性的保证。为了减少客户端-服务器这种方式在利用中继设备进行传输时消耗的时间,因此该局域网聊天软件采取P2P技术,实现点对点的连接,这样处在局域网聊天软件中的每个用户,相对于其他用户来说既是客户端,又是服务器,以此来避免多用户进入聊天室时服务器响应时间过长而导致的系统实时性过差的问题发生。在程序的网络通信数据传输上,即时聊天采取UDP协议进行数据报的传输。利用UDP无连接协议可以更快的实现数据报的传输,更好的实现聊天的实时性要求。而文件传输则采用TCP协议。TCP协议是面向连接的、可靠的通信协议,具有有序数据传输、无错误数据传输等优点,这样可以保证文件传输中传输文件的安全性和完整性,尽可能的避免出现坏包现象的发生。(2) 系统总体功能结构1) 系统主要的功能框架如图所示:图3.6 局域网聊天室软件功能结构2) 各个模块功能描述:局域网聊天:登录聊天界面,可以对输入的文字信息进行字体、字号、加粗、倾斜、下划线和文字颜色的设置,可以对聊天记录进行保存,也可以清除信息框中的聊天信息。通过聊天界面窗体可以显示聊天室内其他用户的用户名和IP。文件传输:可以在聊天室内用户之间进行文件的发送和接收。用户私聊:可以实现聊天室内任意两个用户私聊功能。也可以对输入的文字信息进行字体、字号、加粗、倾斜、下划线和文字颜色的设置,可以对聊天记录进行保存,也可以清除信息框中的聊天信息。3.4.2接口设计(1)用户接口:系统采用图形用户接口,以鼠标和键盘作为用户接口,方便用户对软件进行操作。用户:登录系统;系统:显示UI界面。用户:发送聊天信息;系统:显示聊天信息。用户:双击聊天室内其他用户;系统:显示私聊窗口(2)内部接口:UI界面与聊天接口:输入:聊天信息;输出:显示聊天信息。UI界面与传输文件接口:输入:传输文件路径;输出:传输操作。UI界面与显示信息接口:输入:登录信息;输出:显示用户登录名、登录IP。3.4.3系统出错设计(1) 出错信息1) 进行文件传输时若无法与所在网络中的其他节点连接,则应做出正确提示。2) 聊天时出现非法操作时,通过信息对话框给出相应提示。3) 传输文件出现非法操作时,通过对话框给予相应提示。(2) 补救措施当系统出现错误时,如果是严重错误如内存泄露等问题将直接关闭程序并提示用户;若为一般错误,则通过messageBox弹出对话框给予用户提示,让用户重新进行操作。3.5 详细设计详细设计阶段的根本目标是确定应该怎样具体的实现所要求的系统,换言之,经过这个阶段的设计工作,应该得出目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某总程序设计语言书写的程序。详细设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计的处理过程应该尽可能简明易懂,详细设计阶段的任务还不是具体的编写程序,而是要设计出程序的“蓝图”,以后根据这个蓝图编写出实际的程序代码。系统实现用于对程序具体设计的部分,根据详细设计的结果,把它翻译成符合某种语言的语法规则的代码。3.5.1系统类设计(1)系统类图总体设计图3.7 系统类图描述(2)Widget类1) 功能:Widget类主要用于局域网聊天系统中界面各部分按键功能的统一实现以及聊天室内利用UDP协议进行聊天的功能实现。2) 类图图3.8 Widget类图描述3) 类详细说明表3.4 Widget类方法详细说明函数名称返回值函数功能Widget(QWidget *parent = 0)无构造函数Widget( )无析构函数sendMessage(MessageType type,QString serverAddress = )void发送消息newparticipant(QString userName,QString localHostName,QString ipAddress)void新用户加入聊天室participantLeft(QString userName,QString localHostName,QString time)void用户离开聊天室saveFile(const QString &fileName)void保存文件receiveMessage( )void接收消息formatChange(const QTextCharFormat &format)void改变字体设置receiveFile(QString userName,QString serverAddress,QString clientAddress,QString fileName)void接收文件showChat(QString name,QString ip)void构造私聊窗体getFileName(Qstring fileName)void获取接收文件的文件名getUserName( )QString获取用户名getMessage( )QString获取文本框中信息getIP( )QString获取用户ipeventFilter(QObject *watched, QEvent *event)bool事件过滤器changeEvent(QEvent *e)void改变窗体响应closeEvent(QCloseEvent *evnet)void关闭窗体响应on_send_clicked( )void发送按键on_fontComboBox_currentFontChanged(QFont font)void字体设置on_fontsizeComboBox_currentIndexChanged(QString)void字号设置on_textbold_clicked(bool checked)void加粗设置on_textitalic_clicked(bool checked)void倾斜设置on_textUnderline_clicked(bool checked)void下划线设置on_textcolor_clicked( )void颜色设置on_sendfile_clicked( )void发送文件按键on_save_clicked( )void保存聊天记录on_clear_clicked( )void 清除聊天记录on_tableWidget_doubleClicked(QModelIndex index)void双击信息显示框(3)TcpServer类1) 功能TcpServer类继承了系统类QDialog,为局域网聊天室软件传送文件模块提供了发送文件的界面,并且利用QTcpServer类实现了传输文件中服务器端的功能。2) 类图图3.9 TcpServer类图描述3) 类详细说明表3.5 TcpServer类方法详细说明函数名称返回值函数功能TcpServer(QWidget *parent=0)无构造函数TcpServer( )无析构函数initServer( )void服务器初始化sendMessage( )void发送消息refused( )void拒绝接收updateProgress(qint64 numBytes)void更新进度条sendFileName(QString fileName)void发送文件名closeEvent(QCloseEvent *)void关闭窗体响应changeEvent(QEvent *)void改变窗体响应on_choose_clicked( )void选择按键on_send_clicked( )void发送按键on_quit_clicked( )void退出按键(4) TcpClient类1) 功能TcpClient继承了系统类QDialog,主要为局域网聊天室软件提供了接收文件的图形化界面,同时实现了传输文件模块中客户端的功能。2) 类图图3.10 TcpClient类图描述3) 类详细说明表3.6 TcpClient类方法详细说明函数名称返回值函数功能TcpClient(QWidget *parent=0)无构造函数TcpClient( )无析构函数setHostAddress(QHostAddress address)void设置主机地址setFileName(QString fileName)void获取文件名newConnect( )void建立新连接readMessage( )void读取传输信息displayError(QAbstractSocket:SocketError socketError)void传输错误处理changeEvent(QEvent *e)void窗体改变响应on_cancel_clicked( )void取消按键(4) chat类1) 功能chat类继承了系统类QDialog,与聊天室功能类似,利用系统类QUdpSocket进行了局域网中两个用户私聊功能的实现2) 类图图3.11 chat类图描述3) 类详细说明表3.6 chat类方法详细说明函数名称返回值函数功能chat(QString name, QString ip)无构造函数chat()无析构函数sendMessage(MessageType type,QString serverAddress=)void发送消息participantLeft(QString userName,QString localHostName,QString time)void用户退出私聊receiveMessage()void接收消息formatChange(const QTextCharFormat &format)void改变字体设置saveFile(const QString &fileName)bool保存文件getUserName()Qstring获取聊天室内用户名getMessage()Qstring获取文本框中信息getIP()Qstring获取聊天室内用户ipeventFilter(QObject *target, QEvent *event)bool事件过滤器on_send_clicked()void发送按键on_quit_clicked()void退出按键on_fontComboBox_currentFontChanged(QFont font)void字体设置on_fontsizeComboBox_currentIndexChanged(QString)void字号设置on_textbold_clicked(bool checked)void加粗设置on_textitalic_clicked(bool checked)void倾斜设置on_textUnderline_clicked(bool checked)void下划线设置on_textcolor_clicked()void颜色设置on_save_clicked()void保存聊天记录on_clear_clicked()void 清除聊天记录3.5.2模块设计(1) 聊天室模块 1) 聊天室模块程序流程图 图3.12 聊天室接收端程序流程图图3.13 聊天室发送端程序流程图2) 模块详细描述局域网群聊软件群聊功能的实现可以将局域网中的每个节点既当成客户端又当成服务器来考虑。当节点发送消息时,该节点相当于客户端,系统获取节点的登录ip、用户名和主机名,然后将聊天信息输入栏中的消息通过udp协议以数据报的形式发送到其他节点。当节点接收消息时,节点相当于服务器,系统通过UdpSocket绑定一个固定的端口,然后利用信号槽对网络进行监听。如果收到数据报,则根据数据报的消息类型(MessageType)确定处理方式。若是新用户加入聊天室,则更新用户列表并在聊天窗口上添加新用户的上线通知;若为用户离开聊天室,则删除用户列表中离开用户的具体信息并在聊天窗口中提示用户下线通知。若接收到聊天消息,则将收到的聊天消息显示在聊天窗口上。(2) 文件传输模块1) 文件传输模块程序流程图图3.14 文件传输模块发送端程序流程图图3.15 文件传输模块接收端程序流程图2) 文件传输模块详细描述文件传输模块利用TCP协议进行文件传输,同样对于局域网中的各个节点,每个节点既是服务器又是客户端。当需要进行文件传输时,发送端承担着服务器角色。选择需要发送的文件并且先通过udp协议将文件名传输到接收端,如果接收端拒绝接收则返回信息提示,若接收端同意接收则利用tcp进行文件的传输。而在文件传输的过程中,接收端承担着客户端的角色。当收到某个ip传送过来的文件接收信息时,若选择接收文件则从发送端处利用TCP协议接收文件并存放在指定路径。若拒绝接收则返回发送端拒绝信息。(3) 私聊模块1) 私聊模块程序流程图图3.16 私聊模块发送消息程序流程图图3.17 私聊模块接收消息程序流程图2) 私聊模块详细描述对于发送端,用户想与私聊对象进行私聊时,首先通过私聊对象的主机名和ip建立了privateChat类,然后绑定本地ip和私聊用的端口。私聊类建立以后,利用主群聊的udpSocket向通讯对方的ip和端口发送消息类型(xchat)、本地用户名、主机名、用户ip,完成后显示私聊窗体。然后即可通过私聊类建立的socket进行私聊。对于接收端,当接收到消息类型为xchar后接受对方的用户名、主机名和ip地址,并通过对方的用户名和ip地址建立私聊类privateChat,完成后显示私

温馨提示

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

评论

0/150

提交评论