版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机与信息技术学院局域网即时通信软件编写:指导教师:可行性分析报告1引言需求规格说明书是需求分析的产物,它是软件系统生存期中软件定义阶段的最后一个步骤。作为整个软件开发过程的指南,它也是软件开发人员开发出符合用户要求的软件的基础。1.1编写目的软件需求说明书的编制目的是为了使用户和软件开发者双方对该软件的初始规定有一个共同的理解;使之成为整个开发工作的基础。本软件需求说明书的读者是系统开发人员或合同约定的人负。1.2背景a.软件系统名称:山西大学计算机科学与信息技术学院局域网即时通信软件b.本项目任务的提出者:计算机科学与信息技术学院2005级林真真、金鹏、王超、张拓c.本项目的开发者为:计
2、算机科学与信息技术学院2005级林真真、金鹏、王超、张拓d.该软件系统同其他系统或其他机构的基本的相互来往关系:该系统是一个局域网内部系统,独立于网络服务商和其他系统2.可行性研究的前提2.1要求功能:这是一个通信软件系统,主要负责本局域网内部人员之间进行便捷的互动交流,以便局域网内部的交流迅速、快捷,节省信息传递时间。2.2目标目前的通信软件绝大多数都依赖于通信软件服务商提供的软件质量和网络服务商提供的网络质量。只有在这些通信软件和网络服务提供商的提供服务时,才能进行局域网内部人员之间的网络通信。本通信软件可以满足局域网内部人员不依赖于网络服务提供商和其他软件服务商,来完成局域网内部人员的即
3、时通讯,实现数据发送,文件传输。2.3条件、假定和限制a.开发者的计算机性能不够稳定,对Mysql等数据库软件和Eclipse等开发工具有不利影响。b.可利用的信息和资源比较单一,客户的需求分析主要来自开发者在计算机科学与信息技术学院学习和生活过程中的交流学习带来很大的方便之处;而技术方面,对Mysql等数据库软件和Java、以及网络编程的掌握和应用还有待提高,不足之处靠借阅有关书籍和向老师请教进行补充,组内成员间相互讨论分析决定。c.经费不足d.进行系统方案选择比较的时间较短。e.系统投入使用的时间最晚为本学期末3.对现有系统的分析3.1处理流程和数据流程a.网络服务方面:由网络服务商提供网
4、络服务b.软件服务方面:由软件服务商提供软件;用户获得软件-注册-登陆-客户发送端发送信息-软件提供商服务器-客户接收端接受信息3.2工作负荷由于网络服务商提供网络服务、软件服务商提供软件服务,客户端只是使用软件,所以工作量几乎没有3.3费用开支由于需要网络服务商提供网络服务,所以需要承担网络服务费用3.4人员由于网络服务商提供网络服务、软件服务商提供软件服务,所以不需要人员来来维护服务器。3.5设备局域网服务器,个人主机。3.6局限性由于网络服务商提供网络服务、软件服务商提供软件服务,虽然这样使用起来很方便,并且省去了维护人员的维护费用和硬件设备费用,但是在这种模式下,软件使用时严重依赖于软
5、件服务提供商和网络服务提供商所提供的服务质量。假若任何一方出现问题,那么现有的客户端软件就不能使用。因此开发局域网内部使用的即时通信软件是非常有必要的。4.所建议的系统4.1对所建议系统的说明a.功能概括:(1)提供局域网内部即时文字信息传输,语音信息传输,文件传输(2)对用户信息进行增加、删除、更改b.系统环境以及工具系统运行环境:WINDOWS/LINUX和JVM编程语言:JAVA数据库:Mysql4.2处理流程和数据流程处理流程:客户请求登陆内部服务器接受请求-客户发送(接收)信息数据流程:客户请求登陆信息:客户内部服务器客户发送信息:客户内部服务器客户4.3改进之处本软件系统完全不依赖
6、外部网络服务提供商和软件服务提供商,能够在局域网内部提供便捷的通信服务。4.4影响4.4.1.对设备的影响运行该软件时,必须安装相应操作系统JVM。4.4.2.对软件的影响JAVA以及Mysql4.4.3.对用户单位机构的影响使用该系统,客户原有体系几乎不需要太大的变化,这是个即装即用的软件,对人员技术的要求不高,只要用户会简单的计算机操作即可4.4.4.对系统运行过程的影响该系统工作量小,一般情况下不会由于信息量大而造成麻烦。因为软件只是的服务只是在学院内部网络中使用,一般同一时间段的使用人数不会超过1000人,所以该系统的负担不会太大。4.4.5.对开发的影响影响开发进程,使工程停滞,在开
7、发过程中给程序员打来很大不便。4.4.6.对地点和设施的影响由于该系统专门服务给学院内部,所以需要在学院内部网络服务器上安装该系统的服务器端。4.5技术条件方面的可能性技术方面,我们选择的是JAVA和Mysql,都是组员熟悉的语言,即使遇到部分困难,也可以从丰富的参考书中找到解决方案。所以技术方面是绝对可行的。5.可选择的其他系统方案由于该系统的结构比较简单、开发时间仓促,故只使用这一个方案,无其他备用方案。6.社会因素方面的可能性使用方面的可行性:学院在没有使用我们这套系统前,都采用其他软件服务商提供的软件,相对而言服务质量难以得到保证。而根据现有的硬件条件,在办公室中,学院的老师和在实验室
8、的学生都配备电脑。而且电脑的系统软件都是WINDOWS98以上的,所以足够可以来运行我们的软件;从学院老师和学生的文化素质来看,我们的软件操作简单,运行方便,在用我们的软件来进行通信是没有什么困难的。7.结论经过了我们整个的可行性研究报告的研究,最终我们得出了一个研究的结论。结论是:我们可以立即执行我们的软件设计,来达到我们的预期目标。软件需求说明书1引言需求规格说明书是需求分析的产物,它是软件系统生存期中软件定义阶段的最后一个步骤。作为整个软件开发过程的指南,它也是软件开发人员开发出符合用户要求的软件的基础。1.1编写目的软件需求说明书的编制目的是为了使用户和软件开发者双方对该软件的初始规定
9、有一个共同的理解;使之成为整个开发工作的基础。本软件需求说明书的读者是系统开发人员或合同约定的人负。1.2背景(1)本系统的名称是:局域网即时通信软件。(2)本项目的任务提出者是计算机科学与信息技术学院2005级林真真、金鹏、王超、张拓,开发者是计算机科学与信息技术学院2005级林真真、金鹏、王超、张拓,用户是企业人事及相关部门,实现该软件的对象:企业及个人局域网内部使用。1.3定义数据字典:关于数据的信息的集合,也即是对数据流图中包含的元素的定义的集合。1.4参考资料引用资料计算机科学与信息技术学院通信系统软件说明书计算机科学与信息技术学院通信系统概要说明书计算机科学与信息技术学院通信系统数
10、据库设计说明书国家开发标准文档软件工程(第四版-张海藩)UML面向对象设计与分析(朱丽平等)2任务概述2.1目标局域网即时通信软件是现代网络通信技术的重要内容,也是万维网通信技术的基础性工作。局域网即时通信软件在开发过程中有很多不利于实现的地方,不适应现代的网络通信任务。局域网即时通信软件是局域网企业内部及个人局域网内部不实现信息化、规范化,使工作效率及重要信息的可靠传递。2.2用户的特点本软件的最终用户是局域网内部任何人员。局域网内有专门的服务器管理人员,具有一定的计算机操作知识;软件的维护人员是局域网内部的专业网络管理员,对网络和数据库的操作比较熟悉,同时对VB或Delphi,Java编程
11、有一定的经验。2.3假定和约束a.开发者的计算机性能不够稳定,对Mysql等数据库软件和Eclipse等开发工具有不利影响。b.可利用的信息和资源比较单一,客户的需求分析主要来自开发者在计算机科学与信息技术学院学习和生活过程中的一些问题;而技术方面,对Mysql等数据库软件和Java、以及网络编程的掌握和应用还有待提高,不足之处靠借阅有关书籍和向老师请教进行补充,组内成员间相互讨论分析决定。c.经费不足d.进行系统方案选择比较的时间较短。e.系统投入使用的时间最晚为本学期末3需求规定3.l对功能的规定3.l.1系统功能主要分为客户端发送接收消息和服务器数据库管理和处理.通信系统功能部分分为2类
12、:客户相关,管理员相关.从使用和操作功能上分,有三种用户:超级管理员用户(管理所有用户)管理员用户(管理普通用户信息)普通用户(接收发送信息,更改密码).为了便于整个系统组织管理,把各个相对独立的数据或功能组织到更大的系统中来,我们把各个相对独立的功能完全独立设计,编译成独立的目标(功能)模块,各功能模块最后被集成到一控制台模块中.相应的将系统分为一个控制台程序和两个子系统.客户子系统主要功能有发送接收信息和更改密码;管理员子系统主要功能是管理用户信息,在这里,某些模块都能用到的功能将不在重复解释,在每个模块中只列出每个子模块区别于其他子模块的功能实现.3.1.2数据流图详见局域网即时通信软件
13、详细设计说明书3.1.3E-R图3.2对性能的规定灵活性(l)操作方式上应该能够满足鼠标和键盘任意切换的需要;(2)能够支持Windows95、Windows98、Windows2000、WindowsMe和WindowsXP的运行环境;(3)留有与其他系统的接口。3.3输入输出要求输入:本即时通信软件所要求的字符格式与文件格式,否则无法传输文件及收发文字信息。输出:本软件提供用户打印聊天记录功能。3.4故障处理要求在输入不符合定义格式的数据时,软件应出现提示信息,而不是死机或删除已经输入的信息,然后再弹出输入界面重新开始。4运行环境规定4.1设备运行本软件要求处理器在奔腾III以上、内存在2
14、56MB以上的计算机。4.2支持软件A.windows2000以上的操作系统或RedHatLinuxAS5:这两个操作系统是主要的软件,此系统开发过程在除了文档的编写,其它的工作都在这两个操作系统中进行,这两个操作系统在开发过程中承担重要的开发任务B.Eclipse3.4编程工具:它作为一个集成开发工具,提供了部分的代码自动生成和可视化的资源编辑功能,在此系统开发过程中主要承担代码的编写任务C.MySQL5.1应用软件:Mysql数据库软件是一种使用极其方便的数据库软件,在处理少量数据是很好的,不但操作简单、效率高,而且适用于多种操作系统的适用,最重要的是它是一个免费的数据库软件,不会涉及版权
15、问题,节约了大量的开发资金4.3接口本软件通过若干个中间表实现与其他软件的通信。4.4控制本软件通过“昵称登入”模块进行用户登录的控制,根据不同用户的昵称调用不同的模块。其他模块控制情况照此描述。(l)验证软件需求需求分析阶段的工作结果是开发软件系统的重要基础,一旦对目标系统提出完整、具体的要求并写出了软件需求说明书之后,就必须严格验证这些需求的正确性。通常,从以下4个方面进行验证。一致性:所有需求必须是一致的,任何一条需求都不能和其他需求相矛盾。完整性:需求必须是完整的,软件需求说明书应该包含用户对软件产品的每一项要求。现实性:指定的需求应该用现有的硬件技术和软件技术可以实现。有效性:需求必
16、须是有效的,确实能解决用户所面临的问题,可以达到开发软件的目标。软件概要设计1引言软件概要设计主要是一个把软件需求转化为软件表示的过程,这种表示只是描述出软件总的概貌。1.1编写目的概要设计说明书编制的目的是:说明对程序系统的设计考虑,包括程序系统的基本处理I流程、程序系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为程序的详细设计提供基础。本软件概要说明书的读者是系统开发人员或合同约定的人员。1.2背景(1) 本系统的名称是:局域网即时通信软件。(2)本项目的任务提出者是计算机科学与信息技术学院2005级林真真、金鹏、王超、张拓,开发者是计算机科学与信息
17、技术学院2005级林真真、金鹏、王超、张拓,用户是企业人事及相关部门,实现该软件的对象:企业及个人局域网内部使用。1.3定义数据字典:关于数据的信息的集合,也即是对数据流图中包含的元素的定义的集合。VB:VisualBasic。1.4参考资料计算机科学与信息技术学院通信系统软件说明书计算机科学与信息技术学院通信系统概要说明书计算机科学与信息技术学院通信系统数据库设计说明书国家开发标准文档软件工程(第四版-张海藩)UML面向对象设计与分析(朱丽平等)2总体设计2.1需求规定主要分为客户端发送接收消息和服务器数据库管理和处理.通信系统功能部分分为2类:客户相关,管理员相关.从使用和操作功能上分,有
18、三种用户:超级管理员用户(管理所有用户)管理员用户(管理普通用户信息)普通用户(接收发送信息,更改密码).为了便于整个系统组织管理,把各个相对独立的数据或功能组织到更大的系统中来,我们把各个相对独立的功能完全独立设计,编译成独立的目标(功能)模块,各功能模块最后被集成到一控制台模块中.相应的将系统分为一个控制台程序和两个子系统.客户子系统主要功能有发送接收信息和更改密码;管理员子系统主要功能是管理用户信息,在这里,某些模块都能用到的功能将不在重复解释,在每个模块中只列出每个子模块区别于其他子模块的功能实现.2.2运行环境硬件环境:运行本软件要求处理器在奔腾III、内存在256MB以上的计算机。
19、软件环境:本系统支持的操作系统包括Windows95、Windows98、Windows2000、WindowsMe和WindowsXP;本系统的支持数据库为MySQL;本软件的开发工具为Java。2.3结构所有模块都必须调用“昵称等入”模块进行身份验证,只有合法用户才能使用系统。2.4功能需求与程序的关系用户必须输入昵称后,方能登入客户端,与服务器连接,程序正常运行。2.5人工处理过程本软件系统的工作过程中不需要人工处理数据。3接口设计3.1用户接口本系统采用典型的Windows风格作为人机接口,如使用窗口、菜单、对话框等。3.2外部接口本系统支持处理器在奔腾III以上、内存在256MB以上
20、的计算机;支持具有Windows的操作系统,如Windows95、Windows98、Windows2000、WindowsMe和WindowsXP支持MySQL关系数据库3.3内部接口“用户验证”模块:提供系统用户登录时的身份验证功能,用户进行角色切换时必裁用此模块进行身份验证。4运行设计4.l运行模块组合不同的用户登录此系统获得的系统功能是不同的,如超级用户具有系统的全部功能;一些用户只具有浏览数据但不具备更新数据的功能。4.2运行控制超级用户对系统的其他用户设置系统功能的访问权限,这样权限受限的用户就只能访问部分系统模块。4.3运行时间“用户验证”模块在完成用户登录的身份验证后立即退出运
21、行,释放占用的系统资源。5系统数据结构设计5.1逻辑结构设计要点逻辑设计是系统中数据库设计的的重要步骤之一,其中罗列了文档需求分析中各种功能实现之间的本质关系,通过E-R图描述实例化了的文字抽象概念。以下针对本系统的加以阐述其逻辑设计数据表中的基本数据结构:5.2物理结构设计要点数据库结构的物理设计是对一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程主要设计表的结构,一般的试题对应于表,实体的属性对应于列,实体之间的关系为表的约束,逻辑设计中的实体大部分可以转化为物理设计中的表,但它们并不是一一对应的。5.3数据结构与程序的关系输入登入昵称,若不匹配,返回结果到登录窗口,提示错误,
22、相反登录成功。6系统出错处理设计6.l出错信息当输入信息超出字符的标准时,软件将会弹出警戒窗口提示,不会死机或软件自动关闭。6.2补救措施本系统中,当用户没有输入非空字段而进行数据提交时,系统提示字段数据不得为空,请重新输入再提交。此时输入界面保留刚刚输入信息的界面,而不是清空全部输入界面上的所有数据;要求用户重新输入。本系统提供数据备份功能,方便用户对数据的备份。6.3系统维护设计详细编写各阶段的文档资料,以利于未来版本升级及移植等二次开发。详细设计说明书1引言1.1编写目的本文档为计算机科学与信息技术学院通信系统详细说明书,主要是为了实现系统的功能而进行的系统详细设计说明,详细系统各个软件
23、组成模块的实现流程、功能、接口、编译、测试要点等内容,便于对系统的编码进行指导和约束,本文档供全体组员和测试人员阅读。1.2参考资料计算机科学与信息技术学院通信系统软件说明书计算机科学与信息技术学院通信系统概要说明书计算机科学与信息技术学院通信系统数据库设计说明书国家开发标准文档软件工程(第四版-张海藩)UML面向对象设计与分析(朱丽平等)2系统功能实现从前面的需求分析可知,系统的功能不是很庞杂,主要分为客户端发送接收消息和服务器数据库管理和处理.通信系统功能部分分为2类:客户相关,管理员相关.从使用和操作功能上分,有三种用户:超级管理员用户(管理所有用户)管理员用户(管理普通用户信息)普通用
24、户(接收发送信息,更改密码).为了便于整个系统组织管理,把各个相对独立的数据或功能组织到更大的系统中来,我们把各个相对独立的功能完全独立设计,编译成独立的目标(功能)模块,各功能模块最后被集成到一控制台模块中.相应的将系统分为一个控制台程序和两个子系统.客户子系统主要功能有发送接收信息和更改密码;管理员子系统主要功能是管理用户信息,在这里,某些模块都能用到的功能将不在重复解释,在每个模块中只列出每个子模块区别于其他子模块的功能实现.3.1系统控制台模块功能:各个子功能之间的调用;统一的登录界面实现到数据库服务器的登陆设计:3.1.1登陆数据库输入用户账号(id),密码(pwd),以账号Mana
25、gerPerson_id和密码ManagerPerson_pwd登陆的用户拥有对普通用户管理的权限,以账号Manager_id和密码Manager_pwd登陆的用户拥有对所由用户进行管理的权限.检索系统权限表,根据权限设置相应的功能模块,a.无此用户或禁止权限Enable=false;Able=false;M=falseb.普通用户Enable=true;Able=false;M=falseb.可管理普通用户权限Enable=true;Able=true;M=falsec.可管理所有用户权限Enable=true;Able=true;M=true3.1.2程序组、程序项的原理组织各执行模块可执
26、行功能模块的调用执行,通过程序项名称获取可执行目标代码文件名,应用接口类Main开始执行,界面如下:部分程序代码JButtonbt=newJButton(登陆);JLabellabel=newJLabel(用户名);JPanelpanel=newJPanel();panel.add(label);panel.add(field);frame.add(panel,BorderLayout.NORTH);JPanelpane=newJPanel();JTextFieldfieldpwd=newJTextField(10);JLabellabe=newJLabel(密码);pane.add(labe
27、);pane.add(fieldpwd);frame.add(pane);frame.add(bt,BorderLayout.SOUTH);bt.addActionListener(this);field.addKeyListener(newKeyListener()publicvoidkeyPressed(KeyEvente)if(e.getKeyCode()=e.VK_ENTER&e.isControlDown()if(field=null)return;start();frame.dispose();publicvoidkeyReleased(KeyEvente)publicvoidke
28、yTyped(KeyEvente);privateJTextFieldfield=newJTextField(10);privateJFrameframe=newJFrame();3.2用户子系统总体功能设计:用户子系统包含用户信息管理用户之间数据的传递下面给出设计方案和实现方法3.2.1用户子系统包含用户信息管理超级管理员信息管理输入:用户ID、初始密码处理:将用户信息按相同的格式导入数据库输出:提示信息数据表:将Manager表中存放超级管理员数据,表存放在数据库DB中管理员信息和普通用户信息与超级管理员的信息管理方式基本相同,区别在于管理员信息存放在表personManager表中,而普
29、通用户的信息存放在person表中。功能:普通用户更改自己密码的功能(超级)管理员添加删除用户更改密码的界面如下:部分程序代码:JFrameframe=newJFrame(更改密码);JButtonbt=newJButton(确定);JLabellabel=newJLabel(旧密码);JLabellabe=newJLabel(新密码);JLabellabe1=newJLabel(确认密码);JPanelpanel=newJPanel();JPanelpane=newJPanel();JPanelpane1=newJPanel();JPaneljpanel=newJPanel(newGridL
30、ayout(2,1);JTextFieldfield=newJTextField(20);JTextFieldfieldpwd=newJTextField(20);JTextFieldfieldpwd1=newJTextField(20);panel.add(label);panel.add(field);pane.add(labe);pane.add(fieldpwd);pane1.add(labe1);pane1.add(fieldpwd1);jpanel.add(pane1);jpanel.add(bt);frame.add(pane);frame.add(panel,BorderLay
31、out.NORTH);frame.add(jpanel,BorderLayout.SOUTH);frame.pack();frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);部分数据库代码:/连接数据库代码Stringurl=jdbc:mysql:/:3306/test;Stringname=root;Stringpwd=1234567890;Connectioncon=null;con=DriverManager.getConnection(url,name,pwd);/更新
32、密码代码Statementstmt=con.createStatement();stmt.executeUpdate(updatepersonsetpwd=+temp+whereid=+id);/其中temp为新密码删除用户界面为部分界面代码:JButtonbt=newJButton(确定);JLabellabel=newJLabel(请输入你要删除的用户号码:);JPanelpanel=newJPanel();panel.add(label);panel.add(field);frame.add(panel);frame.add(bt,BorderLayout.SOUTH);.JOption
33、Pane.showMessageDialog(null,确定删除该用户,警告,JOptionPane.WARNING_MESSAGE);部分删除用户数据代码:stmt.executeUpdate(deletefrompersonwhereid=+id);3.2.2用户之间数据的传递数据传递间数据的管理输入:发送用户ID、用户所发送的信息以及信息类型,目的用户的ID处理:将用户所发信息传递给服务器输出:功能:给所有人发送信息以及接收在线用户给所有人发送的信息给某用户发送信息以及接受某个用户所给该用户发送的消息给某个发送文本文件给所有人发送信息的界面如下:部分代码如下:if(!ClientFace
34、.getSendText().getText().isEmpty()PrintWriterpw=null;trypw=newPrintWriter(ClientFace.getSocket().getOutputStream();Stringstr=ClientFace.getSendText().getText();pw.println(message:+(String)ClientFace.getUsers().getSelectedItem()+:+str);pw.flush();ClientFace.getSendText().setText();接收在线用户给所有人发送的信息界面如下
35、部分代码如下:booleanb=true;BufferedReaderbr=null;trybr=newBufferedReader(newInputStreamReader(s.getInputStream();catch(IOExceptione)e.printStackTrace();while(b)if(ClientFace.getSocket().isClosed()b=false;break;Stringstr=null;trystr=br.readLine();catch(IOExceptione)e.printStackTrace();if(str.startsWith(all
36、:)str=str.substring(4);StringTokenizerst=newStringTokenizer(str,/);ClientFace.getUsers().removeAllItems();ClientFace.getUsers().addItem(所有人);while(st.hasMoreTokens()Stringuser=st.nextToken();if(!user.equals(ClientFace.getName()ClientFace.getUsers().addItem(user);elseClientFace.getReceiveText().setTe
37、xt(ClientFace.getReceiveText().getText()+str+n);Pointp=newPoint();if(!ClientFace.getReceiveText().getScrollableTracksViewportHeight()p.setLocation(0,ClientFace.getReceiveText().getHeight();ClientFace.getSp().getViewport().setViewPosition(p);以上这部分代码应该是放在一个线程中的,使得客户端能够随时接收并显示服务器传递来的数据以下界面是用户给其他某个特定的用户
38、发送信息:其部分实现代码为:pw.println(message:+(String)ClientFace.getUsers().getSelectedItem()+:+str);接受某个用户所给该用户发送的消息:客户端会一直等待从服务器接收消息,至于接收消息的类型由服务器控制而不由客户端来控制,所以接受某个用户所给该用户发送的消息模块将会在服务器系统中说明3.3服务器子系统总体功能设计:接收客户端客户所发送的信息,并将其转发给合适的目的用户(为了便于测试,我们暂时给服务器增加了一个功能-查看所有用户所发送的所有信息,在真正的生产中,应当将此功能去掉)下面给出设计方案和设计方法在这里有一个辅助的
39、功能就是,当用户登陆是,用户会将自己的Socket和ID号发送给服务器,服务器会将该用户的信息存储在服务器中,同时服务器将该用户的id分发出去,使得所有用户直到此用户上线具体代码如下:ServerSocketserverSocket=newServerSocket(2046);while(true)StringclientName;Socketsocket=serverSocket.accept();ObjectInputStreamobj=null;obj=newObjectInputStream(socket.getInputStream();Stringname=(String)obj.
40、readObject();if(!.equals(name)clientName=name;elseclientName=猫熊+String.valueOf(NO+);Messagemess=newMessage(socket,clientName);clients.add(mess);PrintWriterpw=null;pw=newPrintWriter(mess.getSocket().getOutputStream();for(Messagemes:clients)pw=newPrintWriter(mes.getSocket().getOutputStream();pw.printl
41、n(clientName+来了.);pw.flush();ServerFace.getAreas().setText(ServerFace.getAreas().getText()+n+clientName+来了.);Pointp=newPoint();if(!ServerFace.getAreas().getScrollableTracksViewportHeight()p.setLocation(0,ServerFace.getAreas().getHeight();ServerFace.getArs().getViewport().setViewPosition(p);ServerFac
42、e.getArea().setText(ServerFace.getArea().getText()+n+clientName+来了.);p=newPoint();if(!ServerFace.getArea().getScrollableTracksViewportHeight()p.setLocation(0,ServerFace.getArea().getHeight();ServerFace.getAr().getViewport().setViewPosition(p);pw.flush();mess.setSocketName(clientName);StringallClient
43、s=;for(Messagemes:clients)allClients+=mes.getSocketName()+/;PrintWriterpww=null;for(Messagemes:clients)pww=newPrintWriter(mes.getSocket().getOutputStream();pww.println(all:+allClients);pww.flush();转发功能的部分代码:BufferedReaderbr=null;PrintWriterpw=null;Stringstr=null;Messagees;booleanb=true;while(b)trybr
44、=newBufferedReader(newInputStreamReader(s.getSocket().getInputStream();str=br.readLine();if(str.startsWith(message:)str=str.substring(8);StringtoUser=str.substring(0,str.indexOf(:);/用户发送的信息是给所有在线用户时,服务器的处理方式if(所有人.equals(toUser)for(Messagemes:clients)pw=newPrintWriter(mes.getSocket().getOutputStream
45、();pw.println(s.getSocketName()+对所有人说:+str.substring(str.indexOf(:)+1);pw.flush();ServerFace.getArea().setText(ServerFace.getArea().getText()+n+s.getSocketName()+对所有人说:+str.substring(str.indexOf(:)+1);Pointp=newPoint();if(!ServerFace.getArea().getScrollableTracksViewportHeight()p.setLocation(0,Serve
46、rFace.getArea().getHeight();ServerFace.getAr().getViewport().setViewPosition(p);/用户发送的信息是给某个特定的在线用户时,服务器的处理方式es=getUser(toUser);if(es.getSocket().isClosed()continue;pw=newPrintWriter(es.getSocket().getOutputStream();pw.println(s.getSocketName()+悄悄地说:+str.substring(str.indexOf(:)+1);pw.flush();pw=new
47、PrintWriter(s.getSocket().getOutputStream();pw.println(悄悄地对+es.getSocketName()+说:+str.substring(str.indexOf(:)+1);pw.flush();ServerFace.getArea().setText(ServerFace.getArea().getText()+n+s.getSocketName()+悄悄地对+getUser(toUser).getSocketName()+说:+str.substring(str.indexOf(:)+1);Pointp=newPoint();if(!S
48、erverFace.getArea().getScrollableTracksViewportHeight()p.setLocation(0,ServerFace.getArea().getHeight();ServerFace.getAr().getViewport().setViewPosition(p);查看所有用户的状态的设计原理:如果客户端上线,则记录用户上线,直到用户下线时,记录用户离线,其根据的也是用户端发送的消息,只不过是格式的不同而已,具体代码如下:if(str.startsWith(exit:)str=str.substring(5);clients.remove(getU
49、ser(str);for(Messagemes:clients)pw=newPrintWriter(mes.getSocket().getOutputStream();pw.println(str+走了.);pw.flush();ServerFace.getAreas().setText(ServerFace.getAreas().getText()+n+str+走了.);Pointp=newPoint();if(!ServerFace.getAreas().getScrollableTracksViewportHeight()p.setLocation(0,ServerFace.getAre
50、as().getHeight();ServerFace.getArs().getViewport().setViewPosition(p);b=false;break;catch(Exceptione)e.printStackTrace();ServerFace.getAreas().setText(ServerFace.getAreas().getText()+n+str+意外退出.);Pointp=newPoint();if(!ServerFace.getAreas().getScrollableTracksViewportHeight()p.setLocation(0,ServerFac
51、e.getAreas().getHeight();ServerFace.getArs().getViewport().setViewPosition(p);ServerFace.getArea().setText(ServerFace.getArea().getText()+n+s.getSocketName()+意外退出.);服务器端界面(暂时)如下数据库设计说明书1引言1.1编写目的通信系统在数据库管理系统的支持下,进行用户信息的添加、整理、存储、检索、更新等操作。对于数据库应用开发人员来说,如何利用数据库管理系统、系统软件和相关硬件系统,将用户信息转化成要有效的数据结构,并使数据库结构易于实现用户新的要求。确切的说,数据库设计是指对于一个给定的应用环境,提供一个确定最优数据模型与处理模式的逻辑设计,以及一个确定数据库存储结构与存取方法的物理设计,建立起既能反映现实世界信息和信息联系,满足用户数据要求和加工要求,有能被某个数据库管理系统所接受,同时能实现系统目标,并有效存取数据的数据库1.2背景a.待开发软件系统的名称:山西大学计算机科学与信息技术学院局域网即时通信软件b.本项目的任务提出者:计算机科学与信息技术学院2005级林真真、金鹏、王
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冷水机组维护保养规程
- 次氯酸钠项目环境影响报告书
- 一年级语文下册 课文 2 5 小公鸡和小鸭子第2课时教学设计 新人教版
- 人教版(新课标)选修2第2节变压器教学设计
- 综合复习与测试教学设计高中物理苏教版必修1-苏教版2014
- 高层建筑灌注桩质量保证措施
- 定期评估学习成效改进措施
- 人教版化学九年级下册11.1生活中常见的盐(2) 教学设计
- 集字练习:清泉石上流教学设计小学书法人美版五年级下册-人美版
- 人教版九年级历史上第四单元第12课美国的诞生教学设计
- 酒店贵重物品寄存室管理制度
- 企业管理咨询顾问合作协议样本
- 建筑节能与可再生能源利用规范培训
- 历届中国数学奥林匹克(CMO)试题集(1986-2019)
- 全国优质课一等奖小学一年级教科版科学《我们知道的植物》公开课课件(内嵌音频视频)
- 大数据处理与分析
- 新课标视域下的图形与几何教学
- 煤质化验工技能理论比备考试题库500题(含答案)
- 资本论的基本概述课件
- 小学数学课堂教学中有效提问策略的研究中期研究报告
- 冰柜冰箱设计计算书
评论
0/150
提交评论