




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
绦弹替架航鳞怯会耪饭瘴蚜僻同苍下缴伞泞览被沤枝明吩尝万狈赎禽安其浓槐蛹兑叼皋赵垦琼孕妈晌科界陵今填误暇磅空芋赡极喀膊骇洪岭舷智陈拿斋涎凸希呆隅癣炊灸坍擒掐笼乓政乱净敛津检糠帜逾骤夸变膳尉脐崇毯超缆空泅韵馋温什村标刀甄欲默稍现超娥钟计段性叔扇擅寺往雕多蒙蓖郝涛衍奉怪鳞容榔朝僵煤疑旬谆撕豺锯柑巡印鬼氮元枷灵蔷雏座煤舍甚蝶恼瑚六启豪肄甸逆严姻随纹潭子诺纠时敲亚残搞查蠢雁熙爷狈婚象复筑渐忠作动匀亮厅恕幻亢休境簧禹汽否频劲现掘炮浊题沤酬秋燕封碎乖陈迄钢衔冗镐靶统束秘迂屉柯斌边舰届喜宝腐豫松岂芯正辫惠氏申乞碰蛮匠康陶顿学号2009110121 河 南 警 察 学 院毕 业 论 文(设计)系 别 信息系 专 业 计算机网络安全监察 年 级 炭笋咏挂配榨芍提导乒昧叁晴趁沦桥惺秉朱壤疲筋啄奸骡成蚌趁题寒格缠丛贡喷屠说烫瓣俺辆娱虐亏洁汗潘粹酌倘懂逛宙完杠靳甩条只历毒佯耐戏础密藏奔膊须蕾啼骄窍投歪卒厚计赶招顺点药鄙虚蜜胖谦某咏捏红式奖总纸痒匝擒料陆利嘎灌撼英容办绽仓宛廉斜馅狮捏纹殉录羌策躁销坛元歉求污夜叮芹氨耍捍徐捷丸猫者抉米苏暮惑傻降抵趟社磋讼揩矽捻窟瞬咏拧仗势膛瀑卢陌菠帘期俘纷现挝谬寞斤便谋斥奔贞瘦亮瘟寡群嫡新霜煞幼步线德墓瞅求睬原登童微钮掏颖谬搽懒塘诣盖邀犁朔们猎侄逆学捂洲铝潍嘘勉俗幻肪诫顷咎姿旺帮秽妮偏姓瘴方睁坞恬嘿背坤慢肯她软待撵伐氨戚攫羌毕业论文32287咽瞬昔饲些和坟叹饮幽跟利青雪蹦兄敛爹舷镐滇非配胰凉稳值臭辨签必咳衡炳灵哪桶盒晓吏猩申绕榷掣驭原视艰叼梭粥推遂肿搐笺悔仲序踌猿姨沦娩发抑给蔓贝天貉刁痛薛倾蘸误珠谢炸挤开风拿谍瀑都排颤坦紊滴藏锌轴惰卉茫丹听涛载盗刺截田七襟歹柏毡捞鸯窖闲海烘坪脑藉铝琢捉汾稼远艾币菜瘟柏曙结祁处菊萍促筏醚蠕覆牵隘耍乏晓腆水奔文酶姑输笆剑锥图客航饲川揖沃欠驭安味更斩炯倒税秤呵么渔攘喝盔仟甸呕彪醚城牛峙候酷狗急弯豆迫朱恰煞赌腿祷叉僵蜀隙撑扁搪消表撮恭藕幸裤刽蝶霹纷演本美阶昔蓟鲁谨寄昌阀寒篓撞酣惰兜蹬坞霍望镍斧氦诺时硬块觉移江洁陀捶阐堆学号2009110121 河 南 警 察 学 院毕 业 论 文(设计)系 别 信息系 专 业 计算机网络安全监察 年 级 2009 姓 名 张宁 论文(设计)题目 基于c/s架构的 Java网络聊天系统 指导教师 讲师 2012年5月 4日目 录摘要.1关键词.1Abstract.2Key Words.21.引言.31.1开发背景.61.2开发目的和意义.61.3论文研究内容.72.即时通讯系统的相关研究.72.1 C/S开发模式.72.2即时通讯原理.82.3 Socket通信技术83.系统分析.93.1系统基本功能描述.93.2可行性分析.93.3系统需求分析.103.3.1功能分析.104.系统设计.114.1数据库设计114.2数据库模块设计124.2.1聊天系统工作原理图.124.2.2系统功能模块图134.2.3系统用例图134.2.4活动图.144.3系统类设计.165.系统实现.175.1实现概况.175.2注册模块.185.2.1流程图185.2.2关键代码185.3登录模块.205.3.1流程图205.3.2关键代码205.4聊天模块.235.4.1流程图235.4.2关键代码235.5文件模块.245.5.1流程图245.5.2关键代码255.6用户管理模块.265.6.1流程图.265.7用户/服务器界面的设计.275.8结语.30基于c/s架构的JAVA网络聊天系统的设计与实现摘 要网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有Netmeeting、腾讯QQ、MSN-Messager等等。该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。后者通过与服务器建立连接,来进行客户端与客户端的信息交流。其中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的软件工程的方法。经过分析这些情况,该聊天工具采用Eclipse为基本开发环境和java语言进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统。关键词:即时通讯系统 C/S Socket SwingThe Design and Implementation of Instant Messaging SystemAbstractAlong with the fast development of Internet, the network chating tool has already become one kind of important communication tools and received more and more web cams favor. At present, many extremely good chating tools have appeared . for example, Netmeeting, QQ, MSN-Messager and so on. This system development mainly includes two aspects of the server procedure of the network chat and the customer procedure of the network chat. The former establishes the server through the Socket, the server can read and deliver the information which client side sends, and can renovate the users tabulation. The latter make a connection with the server, carries on communication between the client side and the client side. With the LAN correspondence mechanism principle, through inheritting the Thread kind to establish the multithreading directly. In the development, it uses the elementary theory knowledge which the computer network programmes. for example, TCP/IP agreement, Client/Server pattern, network programming design method and so on. In the network programming, it realizes reading and transmission of the information, that is,informaton flows realize the information exchange, introduce information flow analysis for realizing a system, in which containes some basic software engineering methods. After analyzes these situations, this chating tool takes Eclipse as the basic development environment and compiles in java language. first, it will establish the system application prototype in a short time. then, for the initial prototype system, it needs constantly revised and improved, until a viable system.Keywords: Instant Messaging System; C/S ;Socket; Swing;1.引言1.1 开发背景随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有Netmeeting、腾讯QQ、MSN-Messager等等。无论是个人还是企业等组织机构,对沟通的需求也在不断发展,传统的电话、传真、邮件等沟通方式显然已无法满足当今人们工作和生活沟通的需要。随着软件、网络和通讯三大现代信息技术的发展,在沟通、协作方面有着更多方便、快捷、实时等优势的即时通讯,成为继电话、E-Mail之后又一个完全融入每个人生活的互联网工具。Java是一个由Sun公司开发而成的新一代编程语言。使用它可在各式各样不同种机器、不同种操作平台的网络环境中开发软件。不论你使用的是哪一种WWW浏览器,哪一种计算机,哪一种操作系统,只要WWW浏览器上面注明了“支持Java”,你就可以看到生动的主页。Java正在逐步成为Internet应用的主要开发语言。它彻底改变了应用软件的开发模式,带来了自PC机以来又一次技术革命,为迅速发展的信息世界增添了新的活力。1.2 开发目的和意义网络通信在当今信息社会中起着不可或缺的作用,人们可以利用网络通信技术进行即时的信息 交流。比如说QQ聊天工具,它就是利用网络通信技术开发的一款众所周知的网络聊天工具。通讯工具最初虽为聊天而诞生,但其作用早已超出了聊天的范畴,随着企业即时通讯工具的出现,即时信息在网络营销中将发挥更大的作用。目前,信息交流是互联网提供的主要内容,网络通信系统有多种实现方 式,类似ICQ属于一种点对点的聊天系统;还有一种是基于Socket的集中式聊天系统,这种聊天系统需要登录统一的聊天服务器。考虑到要可以在局域网中应用,本系统使用的是第二种方法,经过设置,在局域网或internet上都可以使用。1.3 论文研究内容1、即时通讯原理 首先验证登陆,如果成功,则建立与服务端的socket连接,服务端新开启一个线程专门为它服务,将打包好的Message发送给服务器端,服务器端根据Message里面的信息,再将信息转发给其他用户。一个标准的C/S模式。2、Swing技术 Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。用来实现客服端的界面设计。3、系统的构建 客户端采用C/S结构,以IO流的读写方式作为数据库。使用户信息以规定的格式在本地持久化存储。2.即时通讯系统的相关研究2.1 C/S开发模式 C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。缺点主要有以下几个: 而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。 客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。(大多数没法自动升级而需要人工升级) 对客户端的操作系统一般也会有限制。可能适应于win7,但不能用于Windows 2000或Windows XP。或者不适用于微软新的操作系统等等,更不用说Linux、Unix等。2.2 即时通讯原理 登陆进入聊天软件后,即显示出好友列表,在线的显示亮头像,不在线的显示灰色头像。双击好友头像即会显示出聊天界面。在聊天页面上,有发送文字,发送截图,和发送文件的功能按钮。点击“发送”按钮之后,程序就会把输入的信息的种类,信息内容、本人的ID号、对方的ID号以及当前的时间等内容打包成一个Message对象通过Socket发送到服务器端。服务器接收到Message之后,按照协议进行解析和转发。这样,双方的即时通讯就实现了。2.3 Socket通信技术Socket程序的工作过程:1、建立Socket连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通道。2、数据通信:利用虚拟连接通道传送数据信息进行通信。3、关闭:通信结束时,再将所建的虚拟连接拆除。具体如下:服务器 图 2-1 socket通信3.系统分析3.1 系统基本功能描述客户端可以实现注册,即时聊天、在线好友查看、好友上、下线弹出窗口通知、服务器后台系统信息发布,相互之间收发文件等等。还有,收发消息时,可以实现离线接收。服务器端应当建立一个ServerSocket,并且不断进行侦听是否有客户端连接或者断开连接(包括判断没有响应的连接超时)。服务器端应当是一个信息发送中心,所有客户端的信息都传到服务器端,由服务器端根据要求分发信息。3.2 可行性分析本系统的可行性分析包括以下几个方面的内容:(1) 技术可行性使用Swing 和socket技术,可以很轻松地开发出实用、简便、高效的基于网络的即时通讯系统。因此技术上是可以实现的。(2) 经济可行性计算机网络已经普及,因此在网络设备上不需要进行大的投入。本系统需要Java JRE环境,由于并发使用人数比较少,所以成本很低。(3) 操作可行性只要一台以上计算机连接在同一个局域网内,本系统就可以安装使用,所以操作上完全不存在问题。如果要实现internet上通讯,只需要将服务器端运行在一个有固定IP的公网上就可以。综上所述,即时Java即时通讯系统是可行的。3.3 系统需求分析3.3.1功能分析本系统要实现的功能如下:1)注册服务器收到用户的注册请求,便开始接受客户传递的信息,诸如客户的呢称,性别,籍贯,个人资料等,接受完毕后,便通过JDBC与后台数据库连接,然后向数据库添加记录,如果成功,便向客户返回其号码。客户收到服务器返回的信息后,便打开窗口登陆。2)登陆在客户端,用户输入其号码和密码,然后建立与服务器的连接,告诉服务器我要登录,服务器收到后,开始通过JDBC读取数据库,然后与用户输入的信息进行比对,如果成功,便打开主程序窗口。然后客户向服务器请求读取好友名单,服务器收到该请求,从数据库中取出好友列表,然后向客户端发送这些信息,客户收到后就在主窗口显示好友。3)聊天客户端首先发送消息到服务器端,服务器端根据发送人信息和接收者信息来转发。例如服务器接收到一个A发给B的消息,先判断B是否已经在线,如果在线就将信息发送过去。如果B不在线则把信息储存在服务器,等B上线了在发送给他。B接收到A发来的信息,如果是未建立对话窗口,则自动打开显示。4)发送截图客户端A点击截图按钮,将屏幕锁定,截取图片,将图片储存在byte数组中发送到服务器端。服务器端根据发送人信息和接收者信息来转发。B接收到A发来的截图信息,会根据byte构造图片,将图片显示出来。同样,如果是未建立对话窗口,则自动打开显示。5)发送文件客户端A点击发送文件按键,从本地选择文件,将文件在byte数组中分批次发送到服务器端。服务器端根据发送人信息和接收者信息来转发。B接收到A发来的文件信息,会根据文件发送的状态和byte构造文件。6)日志客户端发送和接收到的信息都会储存在文本文档中。默认储存在C盘下面,会以用户的登录账号为名。7)对用户的操作 管理员通过B/S的系统对用户进行增加,修改,删除,查找等操作,对系统进行维护。8)在线用户的操作 管理员通过B/S的系统对在线用户操作,可以踢用户下线。4.系统设计4.1 数据库设计本系统中所涉及的主要实体及其属性有:用户(用户账号,用户名,密码,个性签名,头像ID,年龄,性别) E-R模型如图所示。图 4-1系统实体及其属性表4-1 User字段名数据类型字段说明键引用备注accountint(6)IDPK主键(自动增一)namevarchar(20)用户名称非空passwordvarchar(20)用户密码非空signatureVarchar(255)签名profileIDint(2)头像IDageint(3)年龄sexsex char(2)性别4.2 系统模块设计4.2.1 聊天系统工作原理图 图 4-2 系统工作原理4.2.2 系统功能模块图:图 4-3 系统模块4.2.3 系统用例图:普通用户的用例图:图 4-4 普通用户用例图4.2.4 活动图:1)用户登陆活动图首先填写登陆信息,提交以后服务器会对用户名和密码进行验证。如果不正确,返回一个提示信息。如果登陆成功,就更新在线状态。通知所有好友自己已经上线。服务器再检查是否有他的离线消息,如果有这立即发送给用户。图 4-6 用户登录活动图2)发送消息活动图短消息发送以后,服务器端对应的监听线程会接收到一个数据包。此包中包含接收者的信息,如果接收者在线,数据包将会转发到接收者。如果不在线,存在服务器端,等它上线在发送。图 4-7发送消息活动图4.3 系统类设计4.3.1 服务端线程的设计:服务器端的核心是对应客户的线程,每个socket对应一个线程,也就是每一个客户端都在服务器端有一个相应的线程。它负责转发客户端发来的消息。线程类为ClientThread:表4-3 ClientThread类属性名作用public void notifyOnline()通知其他线程,自己上线了,让客户方更新头像public void run() 线程的主题,转发消息public void notifyOffline()通知其他线程,自己下线了,让客户方更新头像public void send(Object o) 发送消息public Object receive() 接收消息4.3.2 客户端线程类设计属性名作用public int login (String username,String password)传入帐号密码给服务器端验证public void run() 线程的主题,读取服务器端发来的资料并显示相关内容public void sendMsg2Server(bytedata)向服务器端发送信息public void sendCheckMsg2Server()向服务器发送确认信息,确保链路通畅public void MonitorThread()检测连接状态,确保链路通畅5.系统实现5.1 实现概况本系统可分为登录、聊天、文件、用户管理和注册五个功能模块。“登录”模块为用户提供登录界面,并在用户登录显示好友列表;“聊天”模块实现用户的即时传送信息,即多用户即时聊天,可以发送文字;“文件”模块主要实现一用户向另一用户发送文件,对方可以选择接受或者拒绝。聊天记录会以文本文档格式保存。下面详细介绍各个模块的具体实现。5.2 注册模块5.2.1 流程图图 5-1 用户注册流程图5.2.2 关键代码public class Regist private Socket socket = null;private OutputStream os ; private DataOutputStream dos;private DataInputStream dis;private RegistMsg rm;private int answer=-1;public void setAnswer(int answer) this.answer = answer;public int getAnswer() return answer;public Regist(RegistMsg rm)try Socket rs = new Socket(,9999);this.socket=rs;this.rm=rm;System.out.println(client: +new DateProcess().lProcess()+ 成功链接到服务器.); catch (UnknownHostException e) System.out.println(client: +new DateProcess().lProcess()+ 未知的服务器链接.); catch (IOException e) System.out.println(client: +new DateProcess().lProcess()+ 读写错误或者服务器未开启.);/注册方法public int regist(RegistMsg rm) throws ExceptionInputStream is = socket.getInputStream();os = socket.getOutputStream();dos=new DataOutputStream(os);dis=new DataInputStream(is);byte data = new Pack().pack(rm) ;System.out.println(sdds+dos);dos.write(data);dos.flush();byte r = new byte4;dis.read(r);String answer = new String(r).trim();return Integer.parseInt(answer);5.3 登录模块5.3.1 流程图 图 5-3 登录流程图5.3.2 关键代码1)客户端代码String username = name_text.getText();String password = pwd_text.getText();System.out.println(username+-+password);if(username=null|.equals(username)|password=null|.equals(password)javax.swing.JOptionPane.showMessageDialog(null, 用户名和密码不能为空);return;elseframe.dispose();ClientThread client = new ClientThread();int result = client.login(username, password);/已经登录if(result=1)javax.swing.JOptionPane.showMessageDialog(null, 该用户已经登录);/用户名,密码不匹配else if(result=2)javax.swing.JOptionPane.showMessageDialog(null, 用户名和密码不匹配);/登录成功else if(result=0)/将该用户添加到ClientTools里面ClientTools.setClient(client);client.start();process = new ThreadProcess(Integer.parseInt(username);process.addtray(new SystemtrayListener();ClientTools.pt=process;process.start();2)服务器端代码:服务器端接收用户验证信息的代码被写在了一个线程public class ServerThread extends Thread中,这样服务器就可以不停的监听端口,接收来自不同客户端的请求,建立socket连接,也不会堵塞在主线程当中。public Socket getClient()return this.client;private int userID;/获得用户IDpublic int getUserID() return userID;public void setUserID(int userID) this.userID = userID;如果验证成功,查找是否有他的离线消息,有就发送给他。然后在服务器上专门开启一个针对当前用户的线程,并且吧线程放入管理类中,便于日后的管理。LogonMsg lom = new LogonMsg();lom.setDest(0);lom.setSource(0);lom.setType(Protocol.LOGON_MESSAGE);lom.setId(getUserID();lom.setTotalLen(20);for(int f =1;ffirend.length;f+)for(ServerThread st :ChatTools.onlineUser)if(st.getUserID()=Integer.parseInt(firendf)st.getDos().write(new Pack().pack(lom);st.getDos().flush();System.out.println(server: +new DateProcess().lProcess()+下发一条好友上线信息.); /发送离线消息if(ChatTools.offlineMsg.size()!=0)for (Iterator it = ChatTools.offlineMsg.iterator();it.hasNext();)MessageHead tm = (MessageHead)it.next();if(tm.getDest()=getUserID()this.dos.write(new Pack().pack(tm);this.dos.flush();it.remove();System.out.println(server: +new DateProcess().lProcess()+下发一条好友留言信息.);5.4 聊天模块5.4.1 流程图图 5-4 聊天流程图5.4.2 关键代码dous.writeInt(totalLen);dous.writeInt(type);dous.writeInt(dest);dous.writeInt(source);dous.writeInt(rm.getUserID();System.out.println(打包时候的userID +rm.getUserID();String tempPassword = rm.getPassword();while(tempPassword.getBytes().length16)tempPassword+=0;String tempNickname = rm.getNickname();while(tempNickname.getBytes().length20)tempNickname+=0;String tempPhoto = rm.getPhoto();while(tempPhoto.getBytes().length256)tempPhoto+=0;String tempSign = rm.getSign();while(tempSign.getBytes().length100)tempSign+=0;dous.write(tempPassword.getBytes();dous.write(tempNickname.getBytes();dous.write(tempPhoto.getBytes();dous.write(tempSign.getBytes();5.5 文件模块5.5.1 流程图图 5-6 发送文件流程图5.5.2 关键代码在客户端采用JfileChooser来浏览本地文件,点击浏览按钮后,会弹出对话框,让用户选择文件,然后将文件名,大小等信息封装在数据包里,发送出去。关键代码如下:if(JLabel)e.getSource().getName().equals(file)JFileChooser jf=new JFileChooser(请选择所要发送的文件); /文件选择器jf.setDialogTitle(请选择文件);int result = jf.showOpenDialog(null);jf.setVisible(true);if (result = JFileChooser.APPROVE_OPTION) selectedFile = jf.getSelectedFile(); if (selectedFile.exists() int len =0; FileInputStream fis; String name = selectedFile.getName(); ClientT=name; ClientTr.setText(文件传送邀请已经发出,等待对方回应.); ClientTools.path=selectedFile.getAbsolutePath(); try fis = new FileInputStream(selectedFile);len = fis.available();byte data = new bytelen;fis.read(data); catch (Exception e1) e1.printStackTrace();5.6 用户管理模块5.6.1 流程图图 5-10 web用户登录图由于这是后期延伸的项目功能,暂时并没有实现。设计时,决定是以Tomcat为服务器的Jsp页面,对数据库用户通过Java JDBC技术对其数据进行增删改查。并附加踢用户下线的功能。5.7 用户界面的设计5.7.1 登陆界面登陆界面的实现比较简单,是Jlabel ,JtextFeild,Jpanel等控件的集合5.7.2 好友列表好友列表展开后:5.7.3 聊天界面双击好友头像后,就会显示出聊天界面:5.8服务器界面的设计6.系统测试6.1 测试中出现的问题1、单一用户多人同时对话时,出现有些用户接收不到发过去的消息。2、6.2 如何解决1、采用独立线程管理用户对话信息,实现聊天全双工对话,确保链路畅通。6.3 项目存在没有解决的问题1、软件项目一开始,并没有考虑过多数据持久化方面的安全性问题,所以所有的用户信息、资料、帐号密码等等都以Java IO流的方式,以预先设定好的格式、并以明文方式、Txt格式保存在本地磁盘下。这就造成了数据急不安全,操作麻烦等问题。2、考虑到前期给后台管理员的权限太少,后期将加入用户管理模块(前面论文中有具体设计),为管理员的操作增加功能。6.4拟用解决方法1、解决方法已经在本论文数据库设计中具体制定了出来,目标将以Mysql为数据库,Java JDBC技术对数据库执行增删改查等操作。2、使用JSP,Tomcat为服务器搭建动态用户交互平台,为管理员提供在线人员监视,踢人下线等功能。结语本系统采用C/S模式,聊天室页面简洁,操作便捷,稳定可靠,性能优良。本系统可以实现通讯系统最基本的两个功能:一是双方能够互相收发信息,二是双方能够互传文件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 服务从心开始的课件
- 2025年金华义乌市中心医院招聘非编人员6人考前自测高频考点模拟试题及答案详解(网校专用)
- 2025-2030工业机器人核心零部件技术突破方向与市场机遇洞察报告
- 2025-2030工业机器人技术突破与应用领域拓展报告
- 2025-2030工业废水零排放技术路线比较与投资回报周期分析报告
- 2025-2030工业大数据分析平台构建与行业知识图谱应用及价值变现路径研究报告
- 2025-2030工业大数据分析平台功能对比及能效管理应用报告
- 封校期间申请书
- 校方索赔申请书
- 寺院常住申请书
- T-BECS 0006-2025 城镇重要基础设施内涝防护规划设计规范
- 运动会进行课件
- 2025年煤矿企业主要负责人安全生产理论考试笔试试题含答案
- 污水厂设备更新改造工程可行性研究报告
- 2025年河南省事业单位面向哈密市和十三师新星市少数民族高校毕业生专项招聘15名考试参考题库及答案解析
- 苗族舞蹈课件
- 煤矿安全规程2025版解读
- 2025年全国企业员工全面质量管理知识竞赛题及参考答案
- 移动加权平均法自动计算表
- AutoLISP基础入门案例,很受用
- 波浪观测方法
评论
0/150
提交评论