范文一:机场净空分析工具详细设计
目 录
1 业务需求分析 . .......................................................................................................................... 2 1.1 净空障碍物限制面 . ...................................................................................................... 2 1.2 各类跑道对障碍物限制面的要求 . .............................................................................. 8
1.3 规避原则 . ...................................................................................................................... 9
2 算法详细设计 . .......................................................................................................................... 9 2.1.1 算法流程 . ................................................................................................................ 10 2.1.2 障碍物限制面几何模型 . ........................................................................................ 12 2.1.2.1 进近面 ............................................................................................................. 13 2.1.2.2 内水平面 . ........................................................................................................ 15 2.1.2.3 锥形面 ............................................................................................................. 16 2.1.2.4 过渡面 ............................................................................................................. 17 2.1.2.5 内进近面 . ........................................................................................................ 19 2.1.2.6 复飞面 ............................................................................................................. 20 2.1.2.7 内过渡面 . ........................................................................................................ 21 2.1.2.8 起飞爬升面 . .................................................................................................... 22 2.1.3 类结构设计 . ............................................................................................................ 24
1业务需求分析
机场净空是指机场现有的和规划的每条跑道的两端和两侧供飞机起飞、 爬升、下滑、着陆、目视所需的规定空间,用于分析机场周围及其相邻地 面上障碍物对机场运行安全的影响。
通过规定一些假想的平面或斜面作为净空障碍物限制面,用以限制机 场周围天然地形(山、高地等)及人工构筑物的高度。净空障碍物限制面 又称为净空面(附件 14面) 。
1.1净 空障碍物限制面
范文二:软件详细设计工具可分为3类
简答题
1. 在需求分析阶段常用的图形工具有__________、__________、__________三种。 2. 常见的软件概要设计方法有3大类:以数据流图为基础构造模块结构的____________,
以数据结构为基础构造模块的____________,以对象、类、继承和通信为基础的
____________。
3. 单元测试一般以________________为主,测试的依据是________________。 4. 软件详细设计工具可分为3类,即图示工具、设计语言和表格工具。 是
一种设计和描述程序的语言,它是一种面向人的语言。
5. 为把握软件各个环节的正确性和协调性,人们需要进行确认和验证工作。确认的目的是
想证实在一给定的外部环境中软件的逻辑正确性,它包括和 。验证则试
图证明在软件生存期各个阶段,以及阶段间的逻辑 、
和 。
6. 程序的,种基本控制结构是顺序、 和 。它们的共同点
是 。
7. 按软件的功能进行划分,可以划分为 、 和支撑软件应用软件。 8. 用户界面的 是用户界面设计最重要的也是最基本的目标。 9. 用户类型通常可以分为 、 、 和专家型四种类型。 10. 可行性研究主要集中在以下四个方面 、 、 和抉择。 11. 软件生存周期一般可分为__________、可行性研究、__________、设计编码、__________、
运行与维护阶段。
12. IPO图由__________、__________和__________三个框组成。
13. 软件,__________,__________。
14. 软件测试的方法有__________和__________(即黑盒法)。
15. Jackson图除了可以表达程序结构外,还可以表达__________。
16. 详细设计的工具有图形工具、__________和__________。
17. __________和__________共同构成系统的逻辑模型。
18. 成本估计方法主要有__________、__________和算法模型估计三种类型。
范文三:简易聊天工具详细设计报告
简易聊天工具总体设计报告
班级:网络工程 10-1班
姓名:
目 录
一、 引言 ..........................................1 1.1设计聊天工具的背景及意义 ............................... 1 1.2 课题现状 ..............................................1 1.3 开发平台介绍 ..........................................1二、需求分析 ......................................2
2.1编写目标 .............................................2 2.2 可行性分析 .......................................... 2 2.3分析需求 ............................................ 2 2.3.1 功能需求分析 ............ ..................................2 2.3.2 数据需求分析 ............ ..................................2 2.3.3 性能需求分析 ............ ..................................3 2.3.4系统运行需求 ............ ..................................3 2.4本系统的主要功能部分组成:................................ 3 2.4.1服务器端模块 ............ ..................................3 2.4.2客户端模块 ............ ....................................3 2.5 数据流图 .................................................... 4 2.5.1 顶层数据流图 ............ ..................................4 2.5.2一层数据流图 ............ ..................................4 2.5.3二层数据流图 ............ ................................. .5
三、概要设计 ......................................6
3.1系统总模块图 ................................................ 6 3.2模块功能之间的关系 ......................................... 7 3.2.1服务器端模块 ............ ..................................7 3.2.1.1用户上下线识别及显示模块 ............ ....................7 3.2.1.2信息识别转发模块 ........ ................................7
3.2.2客户端模块 ............ ....................................7 3.2.2.1用户注册模块 ..... .......................................7 3.2.2.2用户登陆模块 ..... .......................................7 3.2.2.3用户密码修改模块 ..... ...................................7 3.3两大模块工作流程 ..... .......................................8 3.4系统数据结构设计 ........................................... 9 3.4.1数据逻辑设计 ..............................................9 3.4.2数据字典 ..................................................9
四、详细设计与编码实现 ..........................10
4.1服务器端详细设计 ......................................... .10 4.1.1服务器界面设计 ...........................................10 4.1.2服务器程序类 .............................................11 4.1.3服务器端连接用户的线程设计 ...............................12 4.1.4服务器端线程的管理 .......................................13 4.2客户端的详细设计 ........................................ 13 4.2.1界面包的设计(view 包) ................................ 14 4.2.1.1用户登录界面 ...........................................14 4.2.1.2用户好友列表界面 .......................................15 4.2.1.3用户聊天界面 ...........................................18 4.2.2模块包的设计(model 包) ............................... 19 4.2.2.1客户端连接服务器类 .....................................19 4.2.2.2客户检查使用者类 .......................................20 4.2.3用户端工具包的设计(tools 包) ........................ 21 4.2.3.1客户端连接服务器线程类 .................................21 4.2.3.2管理客户端连接服务器线程类 .............................22 4.2.3.3管理用户的聊天界面的类 .................................23 4.2.3.4管理好友列表、黑名单界面类 .............................23 4.3公共包的详细设计 .......................................... 23 4.3.1User 类 ...................................................23 4.3.2包的种类定义类 ...........................................24 4.3.3传输包定义类 .............................................24
五、运行测试 ......................................26
1. 首先开启服务器 .............................................. 26
2. 进行用户登录 ................................................ 26
3. 用户之间聊天 ................................................ 28 六、结束语 ........................................29参考文献 ..........................................30
一、 引言
1.1设计聊天工具的背景及意义
随着计算机科学技术的飞速发展, 网络越来越深刻的改变着人们生活方方面面。 各种基 于网络的应用技术在人们的政治、 经济、 生活等的各个方面都发挥着重要的作用。 例如 QQ , MSN 等基于 Internet 的即时聊天工具。 这些工具通过网络这个新兴的媒介进行信息交流相比 其他传统媒介具有数据量大,实时性强, 操作简单, 成本低廉等优点。不仅如此即时聊工具 还具备许多传统媒介不具备的强大功能, 它们能传送文字、声音、 影像和文档,而且能更加 人性化的显示联络人的名单和通信状态。 因而它们在现实生活中受到了广泛的欢迎, 这是有 目共睹的。目前基于 Internet 的即时聊天工具已经做的非常完美,然而基于局域网的即时聊 天工具却不如人意。 而在高等教育方面, 网络展现出不可替代的作用。 为了适应现代信息化, 教学局域网就应运而生。 而教学局域网内的即时通信能力则显得尤为重要。 所以对于学校和 公司内部网络等机构, 局域网即时聊天的应用还是相当重要的。 一个好的局域网通信软件将 对学校和公司的运作产生积极的影响。
1.2 课题现状
基于局域网的即时通信软件的核心技术其实与基于 Internet 的即时通信软件的设计技 术是一样的,只是规模较小。基于 Internet 的通信工具一般是采用 UDP 或 TCP 协议来实现 的, 开发技术已经非常成熟。 比如 QQ 、 MSN 等等, 它们都是基于 Internet 的即时通信软件, 它们不仅实现了即时聊天、 文件传输等功能, 而且还能够实现网络即时视频、 语音聊天功能。 它们的功能正在不断扩充, 使其更加人性化, 满足人们更多的需求。 这类软件其实都是在下 层协议的基础之上, 通过网络通信接口进行设计的软件产品。 在局域网内, 这类软件的设计 比在 Internet 中设计更为简单。因为 Internet 是网络的网络,结构更为复杂,碰到的状况比 在局域网中要多。 而局域网中事情就简单的多了, 所以局域网聊天工具在实现即时通信时就 相对容易些了。
1.3 开发平台介绍
这次课题设计主要用 Java 语言,所以就选择相应的开发平台和工作、测试环境为 MyEclipse 。 MyEclipse 是一个十分优秀的用于开发 Java, J2EE 的 Eclipse 插件集合, MyEclipse 的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。 MyEclipse 目前支持 Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC数据库链 接工具等多项功能。可以说 MyEclipse 几乎囊括了目前所有主流开源产品的专属 eclipse 开 发工具。
二、需求分析
2.1编写目标
聊天工具大多数由客户端程序和服务器程序外加服务器端,本程序采用客服机 /服务器 架构模式,也就是通常所简称的 C/S模式。通过 Java 提供的 Socket 类来连接客户机和服务 器并使客户机与服务器之间相互通信。 由于聊天是多点对多点的而 Java 提供的多线程功能, 用多线程可完成多点对多点的聊天。
主要有两个应用程序,分别为服务器程序和客户端程序。服务器应用程序主要用于消 息转发, 以及向所有用户发送系统消息等; 客户端应用程序主要用于客户聊天记录的显示和 信息输入。采用 Client/Server(C/S)体系结构,即客户机 /服务器体系结构。聊天服务器专 门用于监控用户状态和转发消息,客户端负责接收消息的用户序列和消息文本发送到服务 器。该聊天系统实现私聊,一对多聊,用户登陆,退出聊天系统等功能。
2.2 可行性分析
经济可行性 : 由于本系统的主要背景是课程设计,不注重直接的经济效益和其后的发 展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台能运行 Java 软件的电脑便可,所以不用考虑到经济问题。
技术可行性 : 使用 Java 作为系统开发的开发环境 , 它提供完善的指令控制语句、 类与对 象的支持及丰富的数据类型 , 给开发高性能系统提供的保障为开发满足客户要求的系统 , 保证 了代码的模块化要求 , 而代码模块化的提高 , 非常有利于以后对新系统的扩展与修改。
运行可行性 : 本系统为一个小型的局域网聊天系统 , 所耗费的资源非常的小 , 现在一般 的电脑无论是硬件还是软件都能够满足条件 , 因此 , 本系统在运行上是可行的。
综上所述 , 本系统的设计与开发在技术上和硬件设备上的条件都是满足的 , 因此 , 它在 技术上是可行的
2.3分析需求
2.3.1 功能需求分析
程序要实现的功能:程序启动之后要能够知道局域网内哪些用户在线,并可以与之通 信;一旦某个网内用户上线或离线, 需要立即更新信息, 并通知所有在线用户;当双击用户
列表中某个列表项时,要能够弹出信息发送框,并可以编辑要发送的信息,然后发送。 2.3.2 数据需求分析
对于局域网内的用户需要具体的数据信息来表示,服务器则需要一个保存所有用户信 息数据表,其基本内容应包括用户 ID ,用户名,密码,状态,及 IP 地址。
2.3.3 性能需求分析
实用性:为局域网聊天提供方便,有效进行作业管理。
操作简单:本系统应该适用于不同水平的使用者, 包括事业单位和企业单位, 同时系统 不应太复杂和烦琐,因此要求系统的操作尽可能简单易行。
技术先进:产品的系统设计和开发应紧跟着整个计算机发展潮流, 采用当时最先进的设 计思想, 利用最新的开发技术和开发工具。 使系统能够无论在功能设计上, 还是在技术实现 上,都处于同行业的领先地位。
安装使用简便:服务器端的安装简洁明了, 客户机无需再装任何软件就可以直接注册登 陆聊天。
适应性:应该能广泛应用于不同类型的企事业单位。 系统采用模块化设计, 用户可以根 据自己的实际情况自行组合,使系统在不同的硬件环境下都能得以应用。
代码可读性好:文中的代码将尽可能简洁,易懂。
2.3.4系统运行需求
运行环境:Windows 9x、 2000、 xp 、 2003, Linux
必要环境:JDK 1.5 以上
硬件环境:CPU 400MHz以上 , 内存 64MB 以上
2.4本系统的主要功能部分组成:
2.4.1服务器端模块:
服务器启动,进行监听
功能:转发用户传播的信息
服务器自动更新用户状态信息
2.4.2客户端模块 :
登陆服务器
列出当前在线用户信息;
聊天好友的的选择;
发言:对输入的数据进行发送;
离开状态 ;
2.5 数据流图
2.5.1 顶层数据流图
顶层数据流图 2.5.2一层数据流图
用户信息数据库
一层数据流图
2.5.3二层数据流图
系统二层数据流图
三、概要设计 3.1系统总模块图
3.2模块功能之间的关系
3.2.1服务器端模块
3.2.1.1用户上下线识别及显示模块
功能:服务器开启使用设定的端口进行监听,识别并显示用户上下线信息。
目标:当有用户请求登陆时,服务器通过套接字获取用户端的 IP 地址以及用户名和对 应密码,识别是否一致,从而显示用户在线信息,当用户下线时,断开连接,显示用户下线 信息。基本实现用户状态与信息显示一致。
3.2.1.2信息识别转发模块
功能:服务器将用户发送的信息接收、分析、存储并转发到目标用户。
目标:服务器定义一个用 z 于存储要求请求连接用户的端口号以及该端口客户发送的 信息的数组,该数组服务器、客户端共享,服务器将发送端的基本信息存储,目的段可以读 取该信息,从而实现信息转发。
3.2.2客户端模块
3.2.2.1用户注册模块
功能:实现用户账号的注册
目标:通过用户端的一个线程与服务器数据库连接,用户输入创建的用户名、密码, 若通过合法性检测,则将该用户注册的信息写入后台数据库
3.2.2.2用户登陆模块
功能:实现用户登陆。
目标:用户输入用户名、密码并点击登陆,服务器端接收用户端登陆请求,存储请求 信息,并进行检验,如果通过合法性检测则进入聊天主界面。
(1)群聊模块
功能:能够进行类似于 qq 群聊的聊天功能。
目标:客户端点击“发送信息”按钮,该客户端的 ip 地址、端口号以及信息内容一起 打包写入服务器的存储数组,客户端通过线程可以读取该数组中的内容,从而实现群聊。 (2) 单聊模块
功能:能够进行点对点的聊天方式。
目标:客户端用户点击“开始私聊”按钮,输入对方的昵称以及 ip 地址,从而该用 户开启端口用于监听,同时定义输入、输出流文件,客户端延迟片刻, 然后与该端口取得连 接。当任意一方点击“发送信息”按钮时,和群聊同一机理,通过读取共享文件内容实现私 聊。
3.2.2.3用户密码修改模块
功能:用户能够修改自己账号的密码。
目标:用户输入用户名、旧密码、新密码,服务器端接收用户端密码修改请求,存储
修改信息,并进行检验,若通过合法性检测,则把修改后的信息重新写入后台数据库。 3.3两大模块工作流程
客户端工作流程图 服务器端工作流程图
3.4系统数据结构设计
3.4.1数据逻辑设计
组成(用户 qq ,状态,好友,分组)
用户 qq (qq 号码,昵称,密码,性别,年龄,好友名字,分组名称) 状态(qq 号码,是否在线, ip 地址,端口)
好友(好友 qq 号码,好友名字,所在分组名字)
分组(分组 ID ,分组名称,所属 qq 号码)
3.4.2数据字典
四、详细设计与编码实现
4.1服务器端详细设计
设 计 中 我 在 服 务 器 端 建 立 了 四 个 包 , 分 别 是 com.qq.server.view 包 , 666.qq.server.tools 包 , 666.qq.server.model 包以及公用 666.qq.common包;根据包的 名称就很容易理解各个包中所包含的类的功能。 View 包主要是存放服务器界面设计类的, model 包中包含的是服务器各个模块设计类, tools 包中包含的是服务器工作时所要用的工 具设计类, 最后 commo 包中包含的是服务器端和客户端所需共同使用的内容设计类。 其实还 有一个包 com.qq.server.db 包,是用来放置管理用户中号和密码的数据库设计类,但是最 终没有设计,只是偷懒的将用户是账号和密码在客户和服务器连接的程序代码中进行固化 了。
4.1.1服务器界面设计
服务器界面设计类的类名为 MyServerFrame ,是存放在 view 包中,主要是实现服务 器端的控制界面,其可以实现启动服务器、关闭服务器、管理和监控服务器等功能。通过 java 界面设计语句设计出服务器界面的布局:整体只是由一个 JPanel 放在中间, JPanel 主要是有两个 JButton 按钮组合而成, 分别为启动和关闭按钮, 至于服务器界面的监督管理 功能在此没有进行设计,以后会在加以补充。
此服务器界面涉及的变量如下
JPanel jpl;
JButton jbt1,jbt2;
其中对 jbt1做了一个监听,当点击这个按钮时就会执行 MyQqServer 类中的代码,从 而完成服务器开启功能。
public MyServerFrame()
{
jpl=new JPanel();
jbt1=new JButton(
jbt1.addActionListener(this);对 jbt1的监听
jbt2=new JButton(
jpl.add(jbt1);
jpl.add(jbt2);
this.add(jpl,
this.setSize(500,400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==jbt1)如果点击了 jbt1
{
new MyQqServer();跳转到 MyQqServer 继续执行程序
}
}
4.1.2服务器程序类
服务器程序类类名为 MyQqServer ,存放在 model 包中,它是真正的聊天工具服务器 程序,其目的是在 9999端口监听等待、监听是客户端否有客户发起连接,接受客户端发来 的连接请求并且检查客户输入信息的合法性, 当用户名和密码对应且正确时, 返回登陆成功 的信息包, 服务器为用户单开一个线程, 让线程与该客户端保持通讯, 启动客户端与服务器 间的线程,并通知其其他在线的好友;
try{
//在端口号为 9999处监听
System.out.printf(
ServerSocket ss=new ServerSocket(9999);
//阻塞,等待连接
while (true)
{
Socket s=ss.accept(); 定义套接字接受
//接受客服端发来的信息 是以对象流的方式
ObjectInputStream ois=new ObjectInputStream(s.getInputStream()); User u=(User)ois.readObject();
Message m=new Message();
ObjectOutputStream oos=new ObjectOutputStream(s.getOutputStream()); if(u.getPassword().equals(
{
//返回一个登陆成功包
m.setMesType(
oos.writeObject(m);
//里就单开一个线程 , 让该线程与该客户端保持通讯
SerConClientThread scct=new SerConClientThread(s);
MangeClientThread.addClientThread(u.getUserid(), scct);
//启动与该客户端通信的线程
scct.start();
//并通知其他在线用户
scct.notifyother(u.getUserid());
}else{
m.setMesType(
oos.writeObject(m);
//关闭链接
s.close();
}
在设计这个程序是要注意, 服务器接受用户的信息别且进行检验但是不能以以字节 读的方式接受读取, 因为以字节读取时遇到空格符或转行符会出现错误, 如账号 1234 密码 123 122中间有空格,那么服务器就不能正确识别,为改进这种读取方式,我们将服务器端
和客端的 io 流用 User 对象的方式传播, 传输和读取的都是对象的相应函数, 那么就不会出出 现上述情况, 除此之外, 客户端的发送和服务器端的监听都需要将内容序列化 (只是加上一 个 java 命令,让 java 内部实现) 。
序列化 :就是可以让一个对象可以在网络上或文件上传输,事实上就是把它序列了,是 他不乱
4.1.3服务器端连接用户的线程设计
服务器和客户的通信线程 SerConClientThread 存放在 model 包中,它的设计主要就 是为了实现在线用户一对多的聊天, 这样就不会发生套接字争抢的现象, 因为每一个在线用 户都开启了相应的一个线程用来存放其特定的套接字信息。其组要功能:
1. 得到所有在线人的线程取出在线人的 Id
//得到所有在线的人的线程
HashMap hm=MangeClientThread.hm;
定义一个 HashMap 用来存放所有用户线程 while(it.hasNext())
{
Message m=new Message();
m.setCon(iam);
m.setMesType(MessageType.message_ret_onlinefriend);
}
2. 判断用户发送的信息类型,如果是一般信息,则获取接受设的通信线程别且一会 将其转发出去
//对从客户端取得的消息进行类型判断 然后做出相应处理
if(m.getMesType().equals(MessageType.message_comm_mes))
{
//取得接受人的通信线程 一会转发
SerConClientThread sc=MangeClientThread.getCLientThread(m.getGetter()); ObjectOutputStream oos=new ObjectOutputStream(sc.s.getOutputStream()); oos.writeObject(m);}
如果是请求所有在线好友的信息,则给该用户返回服务器端的在线好友
else if(m.getMesType().equals(MessageType.message_get_onlinefriend))
{
//把在服务器断的好友给该客户端返回
String res=MangeClientThread.getAllOnlineUserid();
Message m2=new Message();
m2.setMesType(MessageType.message_ret_onlinefriend);
m2.setCon(res);
m2.setGetter(m.getSender());
ObjectOutputStream oos=new ObjectOutputStream(s.getOutputStream()); oos.writeObject(m2);
}
4.1.4服务器端线程的管理
服务器端线程的管理类 ManageClientThread 从命名上看就知道其主要作用就是管 理用户的线程,将这些线程同一的放在一个建立好的哈希表中
public class MangeClientThread {
public static HashMap hm=new HashMap //向 hm 中添加一个客户端通信线程 public static void addClientThread(String uid,SerConClientThread ct) { 这里加的就是用户的 id 以及其对应线程 } 这个类还有两个函数一个是 getCLientThread 函数, 主要就是返回在服务器端有线程的 用户的 id ,在服务器转发用户普通信息前就会先调用该函数获得接受者的 id ,对应于 4.1.3的情况 1。 public static SerConClientThread getCLientThread(String uid) { return (SerConClientThread)hm.get(uid);返回服务器端由线程的用户的 id } 还有一个函数 getAllOnlineUserid ,其作用就是为了返回所有在线用的情况,服务 器接到用户更新在线好友的命令后会调用,对应于 4.1.3的情况 2。 //返回当前在线的人的情况 public static String getAllOnlineUserid() { //使用迭代器完成 String res= while(it.hasNext()) { res+=it.next().toString()+ } return res; } 4.2客户端的详细设计 我 在 客 户 端 同 样 建 立 了 四 个 包 , 分 别 是 com.qq.client.view 包 , 666.qq. client.tools 包 , 666.qq. client.model 包以及公用 666.qq.common包; 与服务器端一样, 各个类根据功能目的会被放在不同的包中。 View 包主要是存放客户端多个界面设计类的, 在其中我总共设计了三个界面类:用户登录界面类 QQClientLogin 、用户好友列表界面类 Qqfrienlist 、用户聊天界面类 Qqchat 。 model 包中包含的是用户端各个模块设计类,用户 与服务器连接的实现类和用户客户端使用信息类都在其中。 tools 包中包含的是用户端工作 时所要用的工具设计类, 用户连接服务器的线程类和各个管理类都在其中。 最后 commo 包中 的类与服务器的 commo 包中的内容是一样的, 因为里面都是服务器端和客户端所需共同使用 的内容,所以要保持其一致性。 在设计编码实现时, 刚开始设计的界面编码类是独立的, 但是到后面就会将各个界面 类嵌套连接起来, 除此之外还会应时定义生成其他的类, 所以说各个类之间都是相互联系的, 绝非有独立的类存在。 4.2.1界面包的设计(view 包) 4.2.1.1用户登录界面 客户端用户登录界面设计类的类名为 QQClientLogin ,是存放在 view 包中,主要是 实现用户登录界面,其可以实现输入用户账号、密码进行登录功能。通过 java 界面设计语 句设计出服务器界面的布局:整体只是由三个部分组合而成,分别是将一个 JLabel 放在北 部。 一个 JPanel 放在中间, 中间的 JPanel 是由两个 JLabel 、 两个 JButton 、 一个 JTextField 、 一个 JPasswordField 、两个 JCheckBox 按钮组成,并且将这个 JPanel 设计成 3x3的网格布 局。最后是南边也是一个 JPanel ,由两个 JButton 组成的一个流布局结构。这个界面中主 要设计的按钮是“登录”按钮,因为要将其监听。 此用户登录界面涉及的变量如下 北部需要的变量 JLabel jbl1; 中部需要的变量 JPanel jp1; JLabel jp1_jbl1,jp1_jbl2; JButton jp1_jb1,jp1_jb2; JTextField jp1_jtf; JPasswordField jp1_jpf; JCheckBox jp1_jbx1,jp1_jbx2; 南部需要的组件 JPanel jp2; JButton jp2_jb1,jp2_jb2; 当用户点对于登录按钮的监听 jp2_jb1=new JButton( //响应用户点击 jp2_jb1.addActionListener(this);监听 当监听点击了用户登录按钮时,会自动跳转执行监听函数 public void actionPerformed(ActionEvent e) { //如果用户点击登录 if(e.getSource()==jp2_jb1) { QqClientUser qqclientuser=new QqClientUser();到 QqClientUser 类中执行 User u=new User(); 新建一个 User 对象 u.setUserid(jp1_jtf.getText().trim()); 获得 User 对象的用户账号,是 输入框中 jp1_jtf中输入的账号 u.setPassword(new String(jp1_jpf.getPassword()));获得 User 对象的用户 密码,就是输入框中 jp1_jpf中输入的内容 if(qqclientuser.checkUser(u)) { //发送一个要求返回在线好友的请求包 try { //把创建好友列表的语句提前 否则不能成功 Qqfrienlist qqlist=new Qqfrienlist(u.getUserid()); ManageQqFriendList.addQqfrienlist(u.getUserid(), qqlist); ObjectOutputStream oos=new ObjectOutputStream (ManagerClientServerThread.getClientConServerThread(u.getUserid()).getS().g etOutputStream()); 在这个类中,还提前加入了一个获取好友在线情况的函数,由于在用户登录时, 用户要知道哦自己的好友在线的情况,所以就会向服务器发送一个申请好友在线情况的申 请,同时会在服务器返回一个在线好友的数据流后在切换到好友列表界面。 //做一个 message Message m=new Message(); m.setMesType(MessageType.message_get_onlinefriend); //指明我要的是这个 qq 号的好友情况 oos.writeObject(m); } catch (Exception e2) { // TODO: handle exception e2.printStackTrace(); } 4.2.1.2用户好友列表界面 客户端用户好友界面设计类的类名为 Qqfrienlist ,是存放在 view 包中,主要是实 现用户好友界面的显示, 其可以该用户的所有好友以及好友的状态, 在线的头像就会使彩色, 不在线的图像就会是保持灰色。通过 java 界面设计语句设计出好友列表界面的布局是一个 BordeLayo 布局,在这个 BordeLayo 布局中在进行好友列表和陌生人列表的设计。这两个列 表设计是相同的, 就以好友列表界面举例来说; 整个界面是一个 BordeLayo 布局, 在这个整 体布局中,又分为三部分:最上方是一个只含有一个“好友列表” JButton 的 JPanel ,最下 方是含有两个 JButton 的 JPanel ,最主要的是中间的布局,它是一个 JScrollPanel 布局, 是可以上下滚动的。 此用户好友列表界面涉及的变量如下 JPanel jphy1,jphy2,jphy3; JButton jphy_jb1,jphy_jb2,jphy_jb3; JScrollPane jsp1; JLabel []list; JScrollPanel 布局的主要实现 //给 jphy2初始化 20个好友 list=new JLabel[20]; for(int i=0;i<> { list[i]=new JLabel(i+1+ if(list[i].getText().equals(ownerid)) { list[i].setEnabled(true); } list[i].addMouseListener(this); jphy2.add(list[i]); } jsp1为 JScrollPane 型变量 陌生人界面的设计方法和原理和用户列表是一样的,只是有一点点变化,但是要想显 示用户的陌生人列表则需要点击用户的“陌生人”按钮进行一个监听,主要代码实现: jphy_jb2=new JButton( jphy_jb2.addActionListener(this); 这个监听是在好友列表界面中实现的,因为只有在好友列表中点击 “陌生人”按钮,界 面才会切换到陌生人列表界面, 同样理由, 如果要继续增加列表界面的数量, 那么在每一个 列表中的 JButton “陌生人”这个变量下都要进行一个监听。所以最终设列表界面数位 n 那 么某一个界面的按钮监听数就为 n-1,即除了自己界面,其他的界面都要有连接到此界面的 监听。 监听的执行函数如下:用 if 函数,点击什么按钮就切换到相应界面 public void actionPerformed(ActionEvent e) { //点击陌生人按钮,就会显示陌生人卡片 点击陌生人按钮 { 显示陌生人卡片 } //点击好友列表按钮,就会显示好友列表卡片 else if(e.getSource()==jpmo_jb1) 点击好友列表按钮 { 显示好友列表卡片 } } 从上面函数中我们可以看见跳转各个卡片时,使用的是数字“ 1” “ 2”进行的编号, 按照总界面设计时的分界面上下顺序以及编码定义实现这些界面的顺序, 将这些界面的变量 进行编号定义: this.add(jphy1, this.add(jpmo1, 这样使用时想切换哪个界面就没有必要过多的使用所定义的变量, 从而会在一定的程 度上避免了调用时的错误的发生。 除了在设计界面是所要使用到行动监听 ActionListener, 还要使用一种监听就是鼠 标监听 MouseListener ,使用过大众聊天工具 QQ 的用户都知道,当用户登录成功后显示好 友列表界面时移动或点击鼠标就会出现相应的现象, 所以这里就需要进行鼠标监听, 主要监 听实现的功能有: 1. 在好友列表中,当鼠标移动到某一个好友上时,此好友头像变红,鼠标移走,头 像恢复原样 public void mouseEntered(MouseEvent e) { //鼠标放在好友头像上,头像灰变红 JLabel j1=(JLabel) e.getSource(); public void mouseExited(MouseEvent e) { //鼠标移走,头像恢复原样 JLabel j1=(JLabel) e.getSource(); 2.当鼠标移动到某个好友头像上,并且双击其头像,就会出现与该好友聊天的聊天 界面,聊天界面的设计下面会详细阐述,监听双击的响应函数如下: public void mouseClicked(MouseEvent e) { //响应用户双击的事件,并获得好友编号 if(e.getClickCount()==2) 鼠标双击 {JLabel j2=(JLabel) e.getSource(); j2是一个新的 JLabel 用来得到新的聊天界面资源 String frienNo=j2.getText(); Qqchat qqchat=new Qqchat(this.owner,frienNo);新建一个 qqchat 函数调用执行 Qqchat //把聊天界面加入到管理类 ManageQqChat.addQqchat(this.owner+ } } 在这个响应中有调用 QqChat 类, 也有调用 ManageQqChat 类, 这些类的功能在后面 会一一介绍 4.2.1.3用户聊天界面 用户聊天界面类的类名为 QqChat ,顾名思义,这个类就是用来定义关于用户聊天的 一切功能实现函数的类, 在这个类中, 主要实现的是用户聊天界面的设计, 还有就是聊天工 具中比较重要的聊天信息的发送, 在上面介绍服务器端的详细设计时, 就提到在服务器和客 户的通信线程类 SerConClientThread 中实现一个功能就是服务器接受到用户的发送过来的 包并且进行判断, 根据不同的包执行不同的代码, 实现不同的功能, 那是服务器独有也是必 须具备是转发功能,但是前提是服务器必须有包接受,那样才能判断。这里 QqChat 中第二 个功能就是向服务器发送信息包,以便服务器接收判断并且转发。 1. 首先实现用户聊天界面的设计, 这个设计很简单, 这是有基本的文本输入和显示框 架,还有一个发送按钮。 所使用的变量定义如下: JTextArea jta; 这是文本显示域用来显示对方发来的聊天信息 JTextField jtf; 这是聊天文本的输入框 JButton jbt; 发送按钮 JPanel jpl; 底部的布局为一个 JPanel 布局 那些基本的定义的编码在这你就不在这里过多的阐述,布局的设计如下: this.add(jta, this.add(jpl, this.setTitle(ownerid+ this.setIconImage(new ImageIcon( 为聊天界面设置一个小小的头像图片 this.setSize(400,300); 设置聊天界面大小 2. 用户与某好友聊天时, 在输入框中输入聊天内容, 并且点击发送按钮将其发送给服 务器, 让其转发; 还有就是接受服务器转发过来的聊天好友信息数据流后在聊天界面显示域 显示。 先写一个函数,让其实现显示聊天信息显示功能 public void showMessage(Message m) { String info=m.getSender()+ } 聊天信息显示函数写好后在实现聊天信息的发送,首先要与往常一样,在刚开始的发 送按钮处进行一个监听,当用户点击发送按钮时发送输入的信息 jbt=new JButton( jbt.addActionListener(this); 对发送按钮进行监听 响应发送按钮的监听,当用户点击了发送按钮时,就将用户在输入框中输入的内容进 谷歌管理员工具详细使用指南 利用Google网管工具诊断网站:上篇 诊断网站是每个SEO必须要掌握的课程之一,如何快速准确的诊断一个网站是需要技巧的,规划好按套路一步步的进行才不会杂而无章。 首先,我们需要用到的是Google网管工具,此软件非常强大又免费,SEO人员必备工具之一,可谓诊断网站的首选工具。下面针对逐个方向进行系统检测。 一、robots.txt文件 整个网站不能收录火某个目录下所有页面都不能收录,经常是因为robots.txt文件写错引起的,网管工具抓取工具权限部分显示出Google所抓取的robots文件内容可以让站长朋友一目了然,依据此功能可以判断出是否书写错误,并加以修改。而且里面有自动生成robots.txt文件的功能,可以按照他的方法逐一列出robots文件的内容。 二、设置首选域 一般情况网站会有带www和不带www的两个URL,想要利于SEO那么就需要做301重定向,也就是使其中一个URL自动跳转到另外一个URL上,在Google网管工具中有一个选项,那就是首选域设置,也就是说不用301转向设置首选域之后Google将会以此URL作为主URL进行收录,当然这个只是针对Google的做法,如果想要所有搜素引擎都只收录一个URL那就需要用到301重定向。 三、关键词排名 诊断一个网站不仅仅只是网站表面的工作,关键词的排名分析将带来很大收获,关键词的排名以为着网站优化的程度,关键词排名还决定着你这段时间努力的成果表现,所以针对关键词排名必须作详细分析,Google网管工具中有关键词查询此项,针对每个关键词都作了分析,让站长一目了然,各方面的数据,不紧紧只有排名,还有点击数,收录情况,点击率分析等等。 利用Google网管工具诊断网站:中篇 接着上篇讲的,如何快速准确的诊断一个网站是需要技巧的,规划好按套路一步步的进行才不会杂而无章,方法如下: 一、外部链接 外部链接是检验你工作质量的一个方面,另外有效的外链能够明显的提高你网站的排名,当然前提是外链需要广泛。网管工具中列出的外部链接可以让SEO人员一目了然的看到自己网站上哪些页面最受欢迎,吸引到最多的外部链接。 二、网站内容 网管工具关键词部分实际上列出的是Google在网站上抓取的最常见关键词。显然这些最常见的关键词就能够反映网站的内容主题。查看这里列出的关键词,对页面尤其是首页的文案撰写和修改有重要意义。 三、内部链接 站长从这里可以大致判断网站内部链接结构是否有重大缺陷。如 果全站主导航中出现分类首页内部链接数非常低,很可能说明导航系统有问题。 内部链接数的另外一个作用是反映出网站收录页面数。Google的site:指令也不太准确,而且现在越来越不准确,经常不能反映出收录数字。网管工具中内部链接部分列出的首页内部链接总数,大致上就相当于Google收录的页面总数,因为网站上每一个页面都应该有到首页的链接。 利用Google网管工具诊断网站:下篇 一、抓取错误及统计 抓取错误部分列出404错误、被robots文件禁止而不能收录的页面等。其中404错误对检查网站上是否存在错误链接很有用。对每个404错误,网管工具都列出了到这个网址的链接,让站长轻松解决404错误的链接。 如果到不存在页面的链接是网站内部发出的,说明这些链接页面上的链接地址有错误。如果链接向不存在页面的是其他网站,站长可以尝试联系对方更改错误链接到正确位置。 网管工具也列出抓取统计信息。根据统计信息可以查看网站被抓取的速度和抓取量,这样方便调整网站结构让优化更方便。 二、HTML建议 查看Google的HTML建议是寻找网站上可能出现的复制内容的最简便方法。如果检查出标题标签重复,那么标题标签重复实际上经常意味着这些页面本身内容重复,往往是网站结构造成的。要注意的 是,有时候哦网管工具中列出的数据并不完整,一般来说博客上的标题标签重复的页面绝不止两页。 三、模拟蜘蛛抓取 很强的一个工具,站长可以输入自己网站上任何一个网址,网管工具会发出Google蜘蛛,实时抓取页面内容,并显示抓取的HTML代码,包括服务器头信息和页面代码。这对站长确认转向设置和检查服务器是否正确返回内容很有帮助。 另外,这个工具也可以用来检查页面是否被黑。有的时候黑客放入的代码会检查浏览器类型,如果是用户使用的普通浏览器访问则返回正常内容,如果是搜索引擎蜘蛛访问,才返回黑客加上去的垃圾内容和垃圾链接。所以站长自己访问网站看不出异样,Google蜘蛛抓到的却不是站长自己看到的内容。这个工具可以帮助站长检查页面是否存在安全漏洞。 四、网站性能检测 网站速度现在越来越被重视,不仅可能对排名产生影响,对用户体验也有很大影响。网管工具网站性能部分显示网页平均载入时间。 网站打开的时间并不是Google蜘蛛抓取文件所要花的时间,而是Google工具条记录的普通用户打开页面要花的时间。所以网站服务器地理位置并不影响网站性能部分列出的数据。Google蜘蛛都是从美国发出的,但网站服务器放在中国不意味着比放在美国载入时间要长,因为Google记录的是普通用户访问网站的快慢 http://www.xjj528.com 。 罐详细设计 一、 储存环境 丁二烯 丁烯 - 1 - 乙腈 二、 储罐的选型 丁二烯容易自聚,生成丁二烯二聚物,进而引起其它危险。丁二烯二聚物的生成速度与丁二烯储存的压力、温度、停留时间有着密切关系,在压力低于0.35MPa ,温度低于18摄氏度,停留时间短能有效的减少二聚物的产生,有利于丁二烯的储存。目前丁二烯装置对丁二烯储存罐的压力规定0.25MPa-0.35MPa ,满足储罐内的丁二烯刚好处于饱和蒸汽压。保证丁二烯储存罐的温度处于18摄氏度以下。为了避免管线内死角长期不流动的丁二烯存在,将储罐物料泵一直处于运行状态,保证储罐各物料管线处于循环,故采用圆筒直立储罐。 乙腈需要储存在阴凉通风的库房。小心火源,远离火种。库温最好不要超过30摄氏度。并且需要保持容器的密封度。应该和氧化剂、还原剂、酸类、碱类、易(可)燃物、食用化学品分开存放,切忌混储。采用防爆型照明、通风设施。禁止使用易产生火花的机械设备和工具。储区应备有泄漏应急处理设备和合适的收容材料,选用圆筒直立储罐。 - 2 - 丁烯储存要求较前两者简单,为了便于管理和安装,其储罐也选用直立圆筒储罐。 三、 储罐体积确定 由于丁二烯储存要求最具代表性,下面对丁二烯进行详细设计。 由于需要确保整个流程生产的连续性,以应急上游原料供给量的变动,我们采用了3个容积为800m 3的圆柱形立式储罐来进行原料丁二烯的储存。 储罐直径D i =7. 2m ,高度H=20m 四、 存储时间的估算 当取储罐的装填系数为0.8时,存储时间: t = 0. 8V 0. 8×2400 ==109h L 17. 64 当储罐全部装满时,即最大存储时间: t = V 2400==136h L 17. 64 五、回流罐罐壁厚的确定 选用筒体材料为 Q345R,由于运行条件为T=15℃,p 1=0.35MPa 所以取设计温度T ' =30℃ 在此温度下 Q345R 钢材的许用应力为:[σ]=170MPa 设计压力: P=1.1p 1=0.385MPa 由于液柱静压力 P 2=ρgh =621. 1×9. 8×20=0. 12MPa 所以计算压力P C =P +P 2=0.1452MPa P c =P +P 2=0. 505MPa - 3 - 取双面焊对接接头 100%无损探伤,其焊接系数为:φ=1.0, 钢板厚度负偏差C 1=0.0mm,腐蚀余量C 2=2mm 计算厚度: P c D 0. 505×7. 2 =10.7mm d == 2[σ]t φ-P c 2×170×1-0.505 所以名义厚度: d n =d +C 1+C 2=12. 7 取d n =14mm 容器外径与内径之比为: K = D +2d n =1. 003<1. 2="">1.> 所以,因此该储罐为薄壁容器。 六、 储罐封头设计 采用标准椭圆形封头,其计算厚度: 取上下部计算压力:p c =1. 1p 1=0. 505MPa d = P c D 0. 505×7. 2 ==10.7mm 2[σ]t φ-0.5P c 2×170×1-0.5×0.505 所以其名义厚度:d n =d +C 1+C 2=12. 07mm , 所以取:d n =14mm 直边长L=0.4m 七、 开口补强 假设此储罐只有一个进口,一个出口,其进出流量都为 Q=160.7186m3/h,液体速度为u=3m/s,则各物流对应管径分别为D 1, D 2,, 其计算如下: D 1==138mm D 1= - 4 - 4Q =137.68mm πu 由于 D1=D2 所以:D2=137.68mm 考虑到管子的规格则选取 G20 管子其尺寸为 Φ159×5 用软件SW6-98 对其进行机械校核可知不需另行补强。所以进出口接管可选择。 D 1=159×5D 2=159×5 八、 强度校核 p c (D +d ε) 圆筒的校核: s = 2d ε t 其中有效厚度: d ε=d n -C 1-C 2=12mm 所以求得:s t =38.7926MPa ,s t =151. 75MPa 所以:s t <[s ]j="170MPa" ,符合要求。="" 封头的校核:d="" ε="d" n="" -c="" 1-c="" 2="">[s> 2[σ]t φd ε =0. 661MPa 此时封头的最大允许工作压力:[P w ]= D +0. 5d ε 而液压试验的压力:p =1. 1p c =0. 555MPa ,p ' <[p w="">[p> 合格 九、 设备设计参数归总 表1 储罐设计结果 - 5 - - 7 - - 8 - 转载请注明出处范文大全网 » 机场净空分析工具详细设计范文四:[设计]谷歌管理员工具详细使用指南
范文五:储罐的详细设计