java聊天小程序课程设计_第1页
java聊天小程序课程设计_第2页
java聊天小程序课程设计_第3页
java聊天小程序课程设计_第4页
java聊天小程序课程设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

(完整word版)java聊天小程序课程设计亲爱的读者:本文内容由我和我的同事精心收集整理后编辑发布到文库,发布之前我们对文中内容进行详细的校对,但难免会有错误的地方,如果有错误的地方请您评论区留言,我们予以纠正,如果本文档对您有帮助,请您Y下载收藏以便随时调用。下面是本文详细内容。最后最您生活愉快~Q(n_n)Q~

Java语言程序设计课程设计题目聊天小程序(socket编程+多线程)学院商学院专业信息管理与信息系统班级信息111学号201152275118学生姓名张语轩指导教师余法红编写日期2013.12.25目录TOC\o"1-5"\h\z\o"CurrentDocument"一、需求分析4\o"CurrentDocument"二、系统概述4三、系统运行环境5四、功能需求描述6五、总体设计7六、系统模块结构图9七、程序模块设计(程序代码设计与分析、运行结果).....10八、设计体会37九、参考文献38一、需求分析当今主流的聊天工具有QQ,UC,MSNMessenger等,国内最热门的当属QQ,腾讯QQ(OICQ)是由深圳市腾讯计算机系统公司开发的,基于Internet的即时聊天工具。您可以使用QQ和好友用户进行交流,信息即时发送,即时回复,收发及时、功能全面。此外QQ还具有BP机网上寻呼、聊天室、传输文件、语音邮件、手机短讯服务等功能,QQ不仅仅是虚拟的网络寻呼机,更可与传统的无线寻呼网、GSM移动电话的短消息系统互联,目前QQ和全国多家寻呼台、移动通信公司有业务合作。是国内不可多得的中文网络寻呼机。QQ支持显示朋友在线信息、即时传送信息、即时交谈、即时发送文件和网址。QQ可以在Win95/98/NT/2000操作系统下运行,是十分灵活的网络寻呼工具。它会自动检查您是否已联网,如果您的电脑已连入Internet,可以搜索网友、显示在线网友,可以根据QQ号、昵称、姓名、email地址等关键词来查找,找到后可加入到通讯录中。当您的通讯录中的网友在线时,QQ中朋友的头像就会显示在线,根据提示就可以发送信息,如果对方登记了寻呼机或开通7GSM手机短消息,即使离线了,您也可及时将信息传递给您的好友。虽然以上这些软件是免费的,并且功能越来越强大。但是它们的唯一的不足就是必须要联网或者下载到它们的服务端,要不然是没法脱离Intenet使用的。为了能在一个没有连接到Intenet的局域网使用聊天工具,那就必须要有服务器端。本系统就是包括服务器端与客户端,可以在局域网聊天的一个工具。二、系统概述我们实现的是局域网中的聊天功能,运行服务程序后,服务器创建成功,然后使服务器对某一个设定的端口处于监听状态,当有客户端请求建立连接时,服务器就可接受请求,建立连接!这样服务器和客户端就可相互发送消息,实现聊天功能!系统的功能要求:服务器端主要功能如下:在特定端口上进行侦听,等待客户端连接。用户可以配置服务器端的侦听端口,默认端口为8888。向已经连接到服务器端的用户发送系统消息。统计在线人数。当停止服务时,断开所有的用户连接。客户端的主要功能如下:连接到已经开启聊天服务的服务器端。用户可以配置要连接的服务器端的IP地址和端口号。用户可以配置连接后显示的用户名。当服务器端开启的话,用户可以随时登录和注销。用户可以向所有人或某一个人发送消息。三、系统运行环境本程序基于java和Eclipse开发环境,可以在一般的装有windows系统的主机上运行。Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——EclipsePlatform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,EclipsePlatform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。、功能需求描述本系统针对局域网进行联机聊天。聊天室分为服务器端和客户端两部分,服务器端程序主要负责侦听客户端发来的信息,客户端需要登陆到服务器端才可以实现正常的聊天功能。本系统主要实现如下功能:其界面主要采用了java.awt包,java.swing包以及java.util包等。程序实现了聊天室的基本功能,其中有:1、启动服务器。2、进入客户端界面。3、登录聊天室。4、发送信息(实现按回车键发送消息)。5、关闭服务器。服务器:◊在特定端口上进行侦听,等待客户端连接。◊用户可以配置服务器端的IP地址,默认IP地址为◊向已经连接到服务器端的用户发送系统消息。◊当停止服务时,断开所有的用户连接。◊系统运行稳定、安全可靠。◊一台主机只能启动一个服务器。客户端:◊连接到已经开启聊天服务的服务器端。◊当服务器端开启后,用户可以发表聊天信息。◊用户可以向所有人或某一个人发送消息。◊系统运行稳定、安全可靠。五、总体设计聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。首先通过继承JFrame类构造服务器界面。设计客户端程序使其能够完成正常的通信功能设计侦听程序,使其显示登录的ip地址端口号,以及用户昵称,通过侦听按钮可以调用客户端程序,实现聊天功能。

用户设置连接设置用户得到处理用户处理监控保存用户发送信息接连保存i服务器日志数据通信信息通信内容客户端用户设置连接设置用户得到处理用户处理监控保存用户发送信息接连保存i服务器日志数据通信信息通信内容客户端服务器端用户六、系统模块结构图主要功能框架如下图所示:七、程序模块设计(程序代码设计与分析、运行结果)代码:ActionProcess.javapackagechat;importjava.awt.event.ActionEvent;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.IOException;.*;importjavax.swing.JOptionPane;publicclassActionProcessimplementsRunnable(privateChatClientclient;Stringname=〃〃;Stringsendtoname=〃〃;StringsendtoID;Stringfilename=〃〃;Stringfilepath=〃〃;publicActionProcess(ChatClientclient)(this.client=client;}publicvoidaction(ActionEvente)throwsException(if(e.getSource()==client.connection)(try(if(client.socket.isConnected()){}else(Stringaddr二JOptionPane.showInputDialog(〃请输入服务器IP:");InetAddressaddress=InetAddress.getByName(addr);InetSocketAddresssocketAddress二newInetSocketAddress(address,5555);client.socket.connect(socketAddress);client.in二newDataInputStream(client.socket.getInputStream());client.out二newDataOutputStream(client.socket.getOutputStream());name二client.inputName.getText();client.out.writeUTF(〃姓名为〃+name+〃的朋友风尘仆仆地上线了...〃);client.listen.setEnabled(true);client.filesend.setEnabled(true);client.sendtoall.setEnabled(true);client.sendtoone.setEnabled(true);client.emote.setEnabled(true);if(!(client.thread.isAlive()))client.thread二newThread(this);client.thread.start();}}catch(IOExceptionee)(}}if(e.getSource()==client.listen)(try(name二client.inputName.getText();client.out.writeUTF(〃姓名为〃+name+〃的朋友正在监听中...〃);filesendServerfilesendserver二newfilesendServer();filesendserver.filereceive();}catch(Exceptionee)(ee.printStackTrace();}}if(e.getSource()==client.filesend){if(client.socket.isConnected())try(filesendClientfilesendclient二newfilesendClient();filesendclient.filesend();client.out.writeUTF(〃成功发送文件!〃);}catch(Exceptionee)(}}if(e.getSource()==client.exit)(if(client.socket.isConnected())try(name二client.inputName.getText();client.out.writeUTF(〃姓名为〃+name+〃的朋友黯然下线了...〃);client.out.flush();client.out.close();client.socket.close();}catch(lOExceptionel)(e1.printStackTrace();}System.exit(0);}Stringem二client.emote.getSelectedItem().toString();if(em.equals(〃表情〃)){—〃〃em—;}else(em+—〃着〃;}if(e.getSource()——client.sendtoall)(if(client.socket.isConnected()){name—client.inputName.getText();Strings—client.inputContent.getText();if(s!—null)(tryclient.out.writeUTF(name+em+〃对大家说:〃+s);client.out.flush();client.inputContent.setText(〃〃);}catch(IOExceptione1){}}}}if(e.getSource()==client.sendtoone)(if(client.socket.isConnected()){sendtoID二JOptionPane.showInputDialog(〃请输入对方ID:");sendtoname二JOptionPane.showInputDialog("请输入对方姓名:");Strings=client.inputContent.getText();name二client.inputName.getText();if(s!=null)(try(client.out.writeUTF(name+"悄悄地"+em+"对<"+sendtoID+">"+sendtoname+"说:"+s);client.out.flush();client.inputContent.setText(〃〃);}catch(IOExceptione1)(}}}}}publicvoidrun()(Strings=null;while(true)(try(s=client.in.readUTF();client.chatResult.append(〃\n〃+s);}catch(IOExceptione)(client.chatResult.setText(〃与服务器断开连接〃);try(client.socket.close();}catch(Exceptionep){}break;}}}}Clicent.javapackagechat;importjava.awt.*;importjava.io.*;.*;importjava.awt.event.*;importjavax.swing.*;publicclassClient(publicstaticvoidmain(Stringargs[])(newChatClient();}classChatClientextendsFrameimplementsActionListener,Runnable(privatestaticfinallongserialVersionUID=-4149839042245330513L;publicButtonlisten,connection,sendtoall,sendtoone,exit,filesend;publicJComboBoxemote;publicTextFieldinputName,inputContent;publicTextAreachatResult;publicSocketsocket=null;publicDataInputStreamin=null;publicDataOutputStreamout=null;publicThreadthread;ChatClient()(socket=newSocket();Boxbox1二Box.createHorizontalBox();listen=newButton("作为服务器监听〃);connection=newButton("连接服务器〃);filesend=newButton(〃发送文件〃);exit=newButton(〃退出〃);sendtoall=newButton("群聊〃);sendtoone二newButton(〃私聊〃);listen.setEnabled(false);filesend.setEnabled(false);sendtoall.setEnabled(false);sendtoone.setEnabled(false);inputName二newTextField(6);inputName.setBackground(newColor(162,231,250));inputContent二newTextField(22);inputContent.setBackground(newColor(162,231,250));chatResult二newTextArea("17,20,TextArea.SCROLLBARS_VERTICAL_ONLY);chatResult.setBackground(newColor(162,231,250));JLabeljlname=newJLabel("输入昵称〃);box1.add(jlname);box1.add(inputName);box1.add(listen);box1.add(connection);box1.add(filesend);box1.add(exit);Boxbox2二Box.createHorizontalBox();emote=newJComboBox();emote.setModel(newDefaultComboBoxModel(newString]](〃表情〃,微笑〃,〃甜笑〃,〃惊喜〃,〃嘻嘻〃,〃扮酷〃,〃嘿嘿〃,〃傻笑〃,〃好奇〃,"媚眼〃,〃鬼脸〃,〃陶醉〃,〃害羞〃,〃生气〃,〃嚷嚷〃,〃发怒〃,〃伤心〃,〃高明〃,〃菜鸟〃,〃问号〃,〃狂笑〃,〃大哭〃,〃示爱〃,〃呻吟〃,〃想想〃}));emote.setEnabled(false);JLabeljlintput=newJLabel(〃输入聊天内容〃);box2.add(jlintput);box2.add(inputContent);box2.add(emote);box2.add(sendtoall);box2.add(sendtoone);listen.addActionListener(this);connection.addActionListener(this);filesend.addActionListener(this);exit.addActionListener(this);sendtoall.addActionListener(this);sendtoone.addActionListener(this);Boxbox3二Box.createHorizontalBox();box3.add(chatResult);thread二newThread(this);Boxbox0二Box.createVerticalBox();box0.add(Box.createVerticalStrut(10));boxO.add(boxl);box0.add(Box.createVerticalStrut(10));box0.add(box3);box0.add(Box.createVerticalStrut(10));box0.add(box2);box0.add(Box.createVerticalStrut(10));add(box0);setBounds(10,30,500,400);setBackground(newColor(80,212,248));setVisible(true);validate。;addWindowListener(newWindowAdapter()(publicvoidwindowClosing(WindowEvente)(System.exit(0);try(socket.close();}catch(IOExceptione1)(e1.printStackTrace();}}});}publicvoidactionPerformed(ActionEvente)(ActionProcessactionProcess二newActionProcess(this);try(actionProcess.action(e);}catch(Exceptionel)(e1.printStackTrace();}}publicvoidrun()(Strings=null;while(true)(try(s=in.readUTF();chatResult.append(〃\n〃+s);}catch(IOExceptione)(chatResult.setText("与服务器断开连接〃);try(socket.close();}catch(Exceptionep){}break;}}}}ChatServer.javapackagechat;.*;importjava.io.*;importjava.util.*;publicclassChatServer(publicstaticvoidmain(String[]args)throwsException(ServerSocketsvSocket=null;Vectorthreads=newVector();try(svSocket=newServerSocket(5555);System.out.println("listening...");}catch(Exceptionex)(System.out.println("ServercreateServerSocketfailed!");return;try{intnid=0;while(true){Socketsocket=svSocket.accept();System.out.println("acceptaclient");ServerThreadst=newServerThread(socket,threads);st.setID(nid++);threads.add(st);newThread(st).start();for(inti=0;i<threads.size();i++){ServerThreadtemp=(ServerThread)threads.elementAt(i);}System.out.println("Listenagain...");}}catch(Exceptionex)(System.out.println("serverisdown");}}}classServerThreadimplementsRunnable(privateVectorthreads;privateSocketsocket=null;privateDataInputStreamin=null;privateDataOutputStreamout=null;privateintnid;publicServerThread(Socketsocket,Vectorthreads)(this.socket=socket;this.threads=threads;try(in=newDataInputStream(socket.getInputStream());out=newDataOutputStream(socket.getOutputStream());}catch(Exceptionex)(}}publicvoidrun()(System.out.println("Threadisrunning");try(while(true)(Stringreceive=in.readUTF();if(receive==null)return;if(receive.contains("黯然下线了")){for(inti=0;i<threads.size();i++){ServerThreadst=(ServerThread)threads.elementAt(i);st.write(〃***〃+receive+〃***〃);}}elseif(receive.contains("上线了〃)){for(inti=0;i<threads.size();i++){ServerThreadst=(ServerThread)threads.elementAt(i);st.write(〃<〃+getID()+〃>:"+receive);}}elseif(receive.contains(〃监听中〃)){for(inti=0;i<threads.size();i++){ServerThreadst=(ServerThread)threads.elementAt(i);st.write(〃***〃+receive+〃***");}}elseif(receive.contains(〃说〃)){if(receive.contains(〃大家〃)){for(inti=0;i<threads.size();i++){ServerThreadst=(ServerThread)threads.elementAt(i);st.write(〃<〃+getID()+〃>:"+receive);}else(inttemp二receive.indexOf(〃<〃);inttempi二receive.indexOf(〃>〃);StringtempS二receive.substring(temp+1,temp1);inti=Integer.parseInt(tempS);ServerThreadst=(ServerThread)threads.elementAt(i);st.write(〃<〃+getID()+〃>:"+receive);st=(ServerThread)threads.elementAt(getID());st.write(〃<〃+getID()+〃>:"+receive);}}else(ServerThreadst=(ServerThread)threads.elementAt(getID());st.write(〃***〃+receive+〃***〃);}}}catch(Exceptionex)(threads.removeElement(this);ex.printStackTrace();}try{socket.close();}catch(Exceptionex)(ex.printStackTrace();}}publicvoidwrite(Stringmsg)(synchronized(out){try{out.writeUTF(msg);}catch(Exceptionex)(}}}publicintgetID()(returnthis.nid;}publicvoidsetID(intnid){this.nid=nid;}fliesendClient.javapackagechat;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.io.PrintStream;.Socket;importjavax.swing.JOptionPane;publicclassfilesendClient(publicvoidfilesend()throwsException(StringsendtoIP二JOptionPane.showInputDialog(〃请输入对方IP:");Socketsocket=newSocket(sendtoIP,1234);BufferedReaderbr=newBufferedReader(newInputStreamReader(socket.getInputStream()));PrintStreamps=newPrintStream(socket.getOutputStream());Filefile=getFile();ps.println(file.getName());ps.println(file.length());Stringmsg=br.readLine();if("已存在".equals(msg)){JOptionPane.showMessageDialog(null,"文件已存在,请不要重复上传!〃);return;}longfinishLen=Long.parseLong(msg);FileInputStreamfis=newFilelnputStream(file);OutputStreamout=socket.getOutputStream();byte[]buffer=newbyte[1024];intlen;fis.skip(finishLen);while((len=fis.read(buffer))!=-1)out.write(buffer,0,len);fis.close();socket.close();}publicFilegetFile()throwsException{Filefile=null;booleanflag二false;while(flag==false)(Stringfilepath二JOptionPane.showInputDialog(〃请输入要上传的路径:〃);file=newFile(filepath);if(!file.exists()){JOptionPane.showMessageDialog(null,〃您输入的路径不存在,请重新输入!〃);flag二false;}elseif(file.isDirectory()){JOptionPane.showMessageDialog(null,〃占不支持文件夹上传!请输入一个文件路径!〃);flag二false;}elseflag二true;}returnfile;}}filesendServer.javapackagechat;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.PrintStream;.ServerSocket;.Socket;importjava.text.SimpleDateFormat;importjava.util.Date;importjavax.swing.JOptionPane;publicclassfilesendServer{publicvoidfilereceive()throwsException(ServerSocketserverSocket=newServerSocket(1234);JOptionPane.showMessageDialog(null,〃服务已启动,绑定1234端口!");while(true)(Socketsocket=serverSocket.accept();newfileServerThread(socket).start();}}}classfileServerThreadextendsThread(Socketsocket;publicfileServerThread(Socketsocket)(this.socket=socket;}publicvoidrun()(FileOutputStreamfos=null;try(BufferedReaderbr=newBufferedReader(newInputStreamReader(socket.getInputStream()));PrintStreamps=newPrintStream(socket.getOutputStream());StringfileName=br.readLine();longfileLen=Long.parseLong(br.readLine());Filedir=newFile(〃upload〃);dir.mkdir();Filefile=newFile(dir,fileName);if(file.exists()&&file.length()==fileLen)(ps.println(〃已存在〃);return;}else(ps.println(file.length());}Stringtime=newSimpleDateFormat(〃yyyy-MM-ddHH:mm:ss〃).format(newDate());System.out.println(time+""+(file.exists()?"开始断点续传:”:"开始上传文件:〃)+file.getName());longstart=System.currentTimeMillis();InputStreamin=socket.getInputStream();fos=newFileOutputStream(file,true);byte[]buffer=newbyte[1024];intlen;while((len=in.read(buffer))!=-1)(fos.write(buffer,0,len);if(file.length()==fileLen)break;}fos.close();longend=System.currentTimeMillis();time=newSimpleDateFormat(〃yyyy-MM-ddHH:mm:ss〃).format(newDate());System.out.println(time+""+"上传文件结束:"+file.getName()+",耗时:〃+(end-start)+〃毫秒〃);ps.println(〃上传成功");socket.close();}catch(lOExceptione)(if(fos!=null)try(fos.close();}catch(lOExceptionel)(e1.printStackTrace();}}}}运行结果:将5个Java源文件:ActionProces.java、ChatServer.java、Client.java、filesendClient.java、filesendServer.java。分别编译这5个Java源文件,或运行“javac*.java”命令,编译全部的源文件,然后运行连接服务器的主类,即ActionProces.java。服务器启动成功结果分析:在进入聊天室之前必须先启动服务器,实现服务器端的连接。然后运行ChatServer.java

|n|x|<18>:姓名如的朋友乱尘仆仆地上线了.一.<1&>:以困大家说:gh.***姓名为fhi南朗发备秋下线了..<18>:姓名如的朋友乱尘仆仆地上线了.一.<1&>:以困大家说:gh.***姓名为fhi南朗发备秋下线了..一***<19>:姓名为Im的朋友风尘仆4卜地上批了.一.姓名为皿的朋友正在监听中.一***姓名为皿的朋芨黯然下线了.…树:*卜地上编了卜地上贱了卜地上螃了卜,上线了..卜地上姓名为并文琳的朋岌凤尘4姓名为方莹晓的朋衷风尘彳姓名为张语轩的朋度凤尘4一反风尘仆彳友鼠尘仆4大家说:明天我们去吃什么大富说;肉蟹煲吧<22>:张语轩对大家说:也不错啊徐菊对大盘说:甜点也不错啊孙尊对大京说:好的啊孙文描甜笑着对大家说;那就这么定了北"姓名为方莹晓的朋友黯然下姓了.一:特*姓名为张语轩的朋友黯然下戏了..***姓名为徐薇的朋哀黯然下阻了一..:+:**姓名为孙婷的朋衣黯然下聚了…***|<20>;<21>:3;<23>:<24>:<20>:到<21><23><24><20>姓名为徒藤的朋

姓名为动婷的朋』文琲甜笑着对

方莹晓好奇着对1表情群聊私聊输入聊天向舂结果分析:进行服务器监听,再运行Client.java。私聊11作为服备器监听连接服备器发送文件退出输入呃称

结果分析:进入聊天室,在输入框中输入聊天内容,点击私聊群聊娜恍顼J...牛•:R慝1ihOt嘟:我湍室骤*E现}:握瀚翻也瞰C娜恍顼J...牛•:R慝1ihOt嘟:我湍室骤*E现}:握瀚翻也瞰C三富技£卷嘶:脚状貌:翩婀浏』蛔时就:3W魏茫了.1联:.旭容关散…:二广…二.忙.次JH至二.」'心技藏痛础la茹|咽阚,龄融斛燃fl姐日H堕了...啊上-,身逐耕二龙:安IM-;••■IF>"F:馋^拒):舞制地醐Sfi嘟:鞘枷沽睡福fi梆漏耿?勤瞬泌敞n眼翻g蹴a■街土海H耙一•,:生.二■一]脚;打:廿::铲二舞砖御*1侧X在枷Sii:翩禽敞幡翻堀:融就逾3M霁瑁拌二了冬::‘渣二"’.竺•:蚣帝登用部:袖广一扣-...死mg网站:瑕瞄;:廓_泌massiit®Jt:W4£TJ文一四:,给}tffi瑚3牌U福:毗稀您:-妃福脉打,.鼠土节W蹄邮|飘灌■:御ft.•.瞄播结果分析:多个用户进入聊天室之后,在输入框中输入聊天内容,点击群聊运彳亍filesendClient.java、filesendServer.java文件。2SJ话输入要上往的略径:寸对象程序设计Ua侑建录盲口濯代码.cim|确定职消结果分析:进行文件传送Av设计体会这次设计经过几天的不懈努力,程序基本满足聊天的需要。完成后的程序实现了用户登陆聊天室、用户在线聊天、用户退出等功能。在这次程序设计中,我主要负责需求分析,功能需求描述,系统模块图等的撰写,程序设计期间,通过询问老师,同学和网上搜索相关解答等多种方式学习到很多课堂上没有的知识,还积累了一定的实践经验,增强了动手能力和解决实际问题的能力。在此之前

温馨提示

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

评论

0/150

提交评论