




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、網(wǎng)絡(luò)聊天程序?qū)嶒瀳蟾娼M長:xxx PB09210xxx其他組員:無實驗內(nèi)容用面向?qū)ο蟪绦蛟O(shè)計方法編寫一個網(wǎng)絡(luò)聊天程序。程序的功能是允許處在網(wǎng)絡(luò)上不同結(jié)點的多個用戶進行文字聊天。 最基本的要求是實現(xiàn)一對一的聊天, 即最多只允許兩個 人在線。也可以實現(xiàn)多人同時聊天, 即在線的任何一個用戶輸入的文字, 其他的人都能立即 收到。建議采用 Socket通訊方式。實驗實現(xiàn)(一)概要設(shè)計:GAGA聊天程序?qū)崿F(xiàn)結(jié)構(gòu)圖:服務器圖解:在客戶端著一端:每一個客戶端登錄時候,先向服務器發(fā)送一個登錄名的信息,向服務器注冊這個客戶端,然后進入群聊窗口, 可以直接在群聊窗口中發(fā)送群聊的信息,也可以點擊在線用戶,打開私聊窗口
2、,向相應用戶私聊。群聊,私聊的消息發(fā)送給服務器,服務器再把這些消息廣播給所有客戶端,每個客戶端對接受的消息進行識別:要是群聊消息則放到群聊窗口里面;要是私聊信息,檢查是不是給自己的私聊信息,要是給自己的,顯示到相應私聊窗口上,要是沒有相應私聊窗口則創(chuàng)建那個私聊窗口;要是不是自己的私聊消息則無視這個消息在服務器這一端:每一個客戶端與服務器建立連接時候,就為它建立一個CreatServerThread的線程類,用來專門處理這個客戶端。服務器每當接收到消息后就使用Broadcast線程類進行廣播,直到消息列表里面的消息發(fā)送完為止。 Broadcast是通過查找 CreatServerThread線程
3、類的數(shù)組, 找到每個CreatServerThread線程類,也就找到每個客戶端,再逐個發(fā)送消息(二)詳細設(shè)計:實驗實現(xiàn)代碼結(jié)構(gòu)客戶端:(每種顏色代表一個類)package Client;/ 主類 message frame,用來創(chuàng)建 message frame to 類public class message_framepublic static void main(String args口)/主函數(shù),創(chuàng)建message_frame_to類,調(diào)用其構(gòu)造函數(shù)message_frame_to m= new message_frame_to();/ 主類 message_frame 結(jié)束/文本域函
4、數(shù)public static void Text() /標簽域函數(shù)public static void Label() / 按鈕函數(shù)public void Button() /按鈕監(jiān)聽函數(shù)public void actionPerformed(ActionEvent e)/輸入框鍵盤監(jiān)聽函數(shù),支持 CTRL+ENTER捷鍵發(fā)送消息 public void keyReleased(KeyEvent e)/在線列表函數(shù)public void online users() /服務器建立連接與接收數(shù)據(jù)函數(shù)public int Client() /群聊信息發(fā)送函數(shù)public void send() /
5、延遲函數(shù),用來解決需要延遲執(zhí)行問題public static void deley( int ms) /抖屏函數(shù)public void shake() / 類 message_frame_to 結(jié)束/私聊窗口類(線程派生類),每點擊一個用戶進行私聊時候,就創(chuàng)建一個對應的私聊窗口 class frame extends Thread implements ActionListener/構(gòu)造函數(shù)public frame(String s)send_name= s;start();二| /構(gòu)造函數(shù)結(jié)束/ run 函數(shù),用來構(gòu)造私聊窗口public void run() /私聊窗口按鈕監(jiān)聽執(zhí)行器函數(shù)p
6、ublic void actionPerformed(ActionEvent e) /私聊消息發(fā)送函數(shù)public void send_one() /私聊窗口信息顯示函數(shù)public void write(String inn) /私聊窗口類結(jié)束/登錄界面類,用來構(gòu)造登錄界面class Dlog extends Frame implements ActionListener /構(gòu)造函數(shù),創(chuàng)建登錄窗口界面public Dlog() /登錄窗口按鈕監(jiān)聽執(zhí)行器函數(shù)public void actionPerformed(ActionEvent e) /登錄界面類結(jié)束/音樂播放類,可以播放wav格式音樂
7、class PlayWav/構(gòu)造函數(shù)public PlayWav(String soun) /播放函數(shù) public void play() /音樂播放類結(jié)束服務器:(Server為最大類,內(nèi)部包含兩個子類以用不同顏色表明)package Server;/主類Server ,是整個服務器的類public class Server extends ServerSocket implements ActionListener/主函數(shù)public static void main(String口 args) throws lOExceptionnew Server(); / 調(diào)用 Server 構(gòu)造
8、函數(shù)/ Sever函數(shù),用來監(jiān)聽客戶端連接public Server() throws IOException /服務器的界面設(shè)計window函數(shù)public void window() /服務器GUI上按鈕監(jiān)聽執(zhí)行器函數(shù)public void actionPerformed(ActionEvent e) /廣播類(線程派生類),用來廣播消息class Broadcast extends Threadpublic Broadcast。start();/ run 函數(shù),廣播消息public void run() /廣播類結(jié)束public void sendMessage(String msg)/
9、發(fā)送消息函數(shù),保證發(fā)送給這個線程對應的客戶端/ 線程類 CreateServerThread 結(jié)束 / 主類Server結(jié)束程序運行與使用說明(1)打開服務器運行Server.java ,輸入密碼0911001,按下start按鈕,文本域會出現(xiàn)紅色的 "The Server is working"字符串,表示服務器已經(jīng)開始工作,要是密碼輸入不正確會提示"The password is wrong ",重新輸入正確的密碼才能打開服務器,具體截圖如下:(2)登入客戶端sure運行 message_frame.java ,首先會跳出登錄界面,輸入用戶名,點擊按
10、鈕登錄:登錄之后就會進入主聊天窗口,它可以支持群聊,可以看到主窗口分為:輸入框InputArea , 信息框 Message Area ,當前客戶端用戶名User,在線用戶名列表 Online User ,發(fā)送按鈕Send,信息框清屏按鈕 Clear ,抖屏按鈕Shake群聊:在輸入框中輸入“你們好,我是卡卡”,按CTRL+ENTER鍵直接發(fā)送(也可以按Send按鈕發(fā)送)繼續(xù)群聊:2。口ClearFri Bec 2S 22:03:22 CST 忙艮 柞們好.我是忙卡Fri >c U3 瑞;04:455 C5T 浮出是臭:察比尼典是獨Fri Dec 23 22:04:E3 CST 勞爾:勞
11、爾你內(nèi)好201 i3Q I2011私聊nF:一F46»Bjg« AreaMe-ss3g« Are-Ji你fl好,戰(zhàn)是卡 fri Deg 23 如加;拈 C3T 現(xiàn)出尼具:冢比尼曇是我 Dec 23 22104:5a CST勞東保力好201120HFri Dec S3 22:C3:23 C5T 卡卡二怖怕好.我弄卡卡IFri Dec 23 22:04:43 CST罩比尼翼:軍比尼奧是我Vt-i 5>sCST第家:菊案你們好2011MlSend比如現(xiàn)在“卡卡”找“勞爾”私聊,可以直接點擊主窗口在線列表里面的“勞爾”的名字,會彈出私聊窗口"IDUser卡
12、卡Online User照比尼出電卡卡在私聊窗口輸入信息,點擊發(fā)送即可和“勞爾”私聊,此時勞爾也會跳出一個對“卡卡的私聊窗口Af«Message AreaInput AreaFri Dec 23 22:Oft:46 CST SOU 卡卡,稱好|Fri Dec 23 22:08:47 CST MilIf 7你好Sm?!皠跔枴币部梢詫Α翱ā边M行私聊然后在用戶退出時候會有在線列表更新,例如“羅比尼奧”退出:注:在用戶登入,退出時候都會有提示音提醒在線的所有用戶,在用戶有消息到來時候會 有消息提示音軟件特色:GAGA聊天軟件,支持群聊,私聊;支持CTRL + ENTER快捷鍵發(fā)送(群聊);
13、支持清屏,抖屏功能;界面清新 ;服務器管理便捷; 使用方便等許多優(yōu)點實驗總結(jié):本次的上機作業(yè),收獲頗大,以前對面向?qū)ο笳Z言只是只懂語法,沒有接受太多的編程訓練,這個實驗代碼量較大, 很好的訓練的面向?qū)ο缶幊谭绞降哪芰?,也自己摸索了很多過去沒有去看得東西,比如J a v a的音樂播放,s o c k e t聊天這些之前不太了解的東西另外在G UI設(shè)計上面也是花了很多功夫,界面布局,各種功能器件的使用諸如此類的東西,總之,通過這次實驗學習了很多新東西,也鍛煉了很多老知識代碼:/* 客戶端程序:message_frame.java* 創(chuàng)建者: xxx PB09210xxx* 創(chuàng)建時間:2011年11
14、月26日* 聯(lián)系方式 :xxx* 版本信息 :version 2.0* */package Client;import java.awt.*;import javax.swing.ImageIcon;import java.awt.event.*;import javax.swing.*;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener;import .*;import java.io.*;import java.util.*;import javax.sound
15、.sampled.AudioFormat;import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;import javax.sound.sampled.DataLine;import javax.sound.sampled.SourceDataLine;import java.io.File;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;/ 主類 message_framepublic class mes
16、sage_framepublic static void main(String args)/主函數(shù),創(chuàng)建 message_frame_to類,調(diào)用其構(gòu)造函數(shù)message_frame_to m=new message_frame_to() ;/ 主類 message_frame 結(jié)束 /*類發(fā)消息/*message_frame_to , 用 于 創(chuàng) 建 客 戶 端 窗 口 , 與 服 務 器 連 接 , 接*class message_frame_to extends KeyAdapter implements ActionListenerstatic JFrame f=new JFrame
17、("GAGA 2.0") ;static ImageIcon icon=new ImageIcon("C:scan5.jpg") ;/ 聊天窗口皮膚背景static public JLabel panel = new JLabel(icon) ;public static JTextArea text_input=new JTextArea() ;public static TextArea text_message= new TextArea() ;public static Label label_4= new Label("User :
18、") ;Button b= new Button("Send") ;Button bc=new Button("Clear") ;Button bl=new Button("Shake") ;public static DefaultListModel listModel = new DefaultListModel();public static JList User_List= new JList(listModel); / 顯示用戶列表,支持私聊public static String UserName= new St
19、ring(" ") ;/ 當前客戶端登陸賬戶public static Socket socket;public static BufferedReader in;public static PrintWriter out;public static ArrayList<frame> frame_Threader = new ArrayList<frame>(); / 私聊窗口 列表public static Calendar now ;/ 構(gòu)造函數(shù) ,調(diào)用其他所有函數(shù)public message_frame_to()Frame() ; / 建立主框
20、架Text() ;/ 建立文本域Label() ; / 建立標簽域Button() ; / 建立按鈕域online_users() ; / 建立在線用戶列表Dlog D=new Dlog() ;/ 建立登陸界面Client() ;/ 連接服務器函數(shù)/ 構(gòu)造函數(shù)結(jié)束/ 建立主框架函數(shù)public static void Frame()f.setLayout(null) ;f.setBounds(300,200,600,500) ;f.setBackground(Color.gray) ;f.setResizable(false) ;f.setVisible(false) ;panel.setBo
21、unds(0, 0, 600, 500) ;f.add(panel) ;f.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e) / 當點擊關(guān)閉按鈕時候,退出客戶端 out.println("#");System.exit(0);) ; / 主框架函數(shù)結(jié)束/ 文本域函數(shù)public static void Text()text_input.setBounds(10,400,400,100) ;text_input.setBackground(Color.white) ;te
22、xt_input.setVisible(true) ;text_input.setFont(new Font(" 宋體 ",Font.BOLD,22);text_input.setForeground(Color.blue);text_message.setBounds(10,70,400,300) ;text_message.setBackground(Color.white) ;text_message.setVisible(true) ;text_message.setFont(new Font("宋體",Font.BOLD,20);text_me
23、ssage.setForeground(Color.blue);text_message.setEditable(false) ;text_message.selectAll() ;panel.add(text_input) ; panel.add(text_message) ; / 文本域函數(shù)結(jié)束/ 標簽域函數(shù)public static void Label()Label label_1= new Label("Input Area") ;Label label_2= new Label("Message Area") ;Label label_3=
24、new Label("Online User") ;label_1.setBounds(10, 370, 360, 30) ;label_1.setBackground(Color.gray) ;label_1.setVisible(true) ;label_1.setFont(new Font(" 黑體 ",Font.BOLD , 20) ;label_1.setForeground(Color.black) ;label_2.setBounds(10, 40, 400, 30) ;label_2.setBackground(Color.gray) ;
25、label_2.setVisible(true) ;label_2.setFont(new Font(" 黑體 ",Font.BOLD , 16) ;label_2.setForeground(Color.black) ; label_3.setBounds(450, 85, 120, 30); label_3.setBackground(Color.gray) ;label_3.setVisible(true) ;label_3.setFont(new Font(" 黑體 ",Font.BOLD , 16) ;label_3.setForeground
26、(Color.black) ;label_4.setBounds(450, 40, 120, 30);label_4.setBackground(Color.gray) ;label_4.setVisible(true) ;label_4.setFont(new Font(" 黑體 ",Font.BOLD , 12) ;label_4.setForeground(Color.black) ;panel.add(label_1) ;panel.add(label_2) ;panel.add(label_3) ;panel.add(label_4) ;/ 標簽域函數(shù)結(jié)束/ 按鈕
27、函數(shù)public void Button()b.setBounds(450, 440,100, 30) ;b.setBackground(Color.LIGHT_GRAY) ;b.setVisible(true) ;b.setFont(new Font(" 隸書 ",Font.BOLD , 20) ;b.setForeground(Color.black);panel.add(b) ;b.addActionListener(this) ;bc.setBounds(450, 400,100, 30) ;bc.setBackground(Color.LIGHT_GRAY) ;b
28、c.setVisible(true) ;bc.setFont(new Font("隸書",Font.BOLD , 20);bc.setForeground(Color.black);panel.add(bc) ;bc.addActionListener(this) ;bl.setBounds(370, 370, 40, 30) ;bl.setBackground(Color.LIGHT_GRAY) ;bl.setVisible(true) ;bl.setFont(new Font(" 隸書 ",Font.BOLD , 10) ;bl.setForegro
29、und(Color.black);panel.add(bl) ;bl.addActionListener(this) ;text_input.addKeyListener(this); / 按鈕函數(shù)結(jié)束/ 按鈕監(jiān)聽函數(shù)public void actionPerformed(ActionEvent e)if(e.getSource()=b)send();text_input.setText("") ;if(e.getSource()=bc)text_message.setText("") ;if(e.getSource()=bl) shake() ;/ 按
30、鈕監(jiān)聽函數(shù)/ 輸入框鍵盤監(jiān)聽函數(shù),支持CTRL+ENTER 快捷鍵發(fā)送消息public void keyReleased(KeyEvent e)if (e.getKeyCode() = KeyEvent.VK_ENTER && e.isControlDown() send();text_input.setText("") ; / 輸入框鍵盤監(jiān)聽函數(shù)結(jié)束/ 在線列表函數(shù)public void online_users()User_List.setBounds(450,120,100,200) ;User_List.setBackground(Color.whi
31、te) ;User_List.setVisible(true) ;panel.add(User_List) ;User_List.addListSelectionListener(new ListSelectionListener() / 監(jiān)聽在線列表,用戶點擊列表上一個用戶時候,跳出窗口,進行私聊public void valueChanged(ListSelectionEvent e) String s = User_List.getSelectedValue().toString() ;new frame(s) ;/ 建立私聊窗口 ); / 在線列表函數(shù)結(jié)束/服務器建立連接與接收數(shù)據(jù)函數(shù)
32、public int Client()trysocket = new Socket("127.0.0.1", 10000);/ 與服務器建立連接in = new BufferedReader(new InputStreamReader(socket.getInputStream();out = new PrintWriter(socket.getOutputStream(),true);String inn ;while(true) / 一直保持監(jiān)聽服務器是否發(fā)送消息過來 if(!socket.isConnected() / 檢查是否與服務器斷開text_message.s
33、etText("服務器已經(jīng)斷開");break;inn=in.readLine() ;/ 讀取服務器發(fā)送過來的消息String old = message_frame_to.text_message.getText() ;if(inn.charAt(0)='!')/ “ ! “表現(xiàn)當前有用戶登錄或者下線,準備更新在線列表 message_frame_to.listModel.removeAllElements() ;/ 用戶上下線提示PlayWav login_music= new PlayWav("C:yue1.wav") ;音樂log
34、in_music.play() ;continue ;if(inn.charAt(0)='') / ” “表示當前接收到的是在線列表,更新在線列表 message_frame_to.listModel.addElement(inn) ; continue ;if(inn.charAt(0)='%') / ” %“ 表示當前接收的信息是私聊信息,要不是發(fā)給自己的信息則無視if(!inn.substring(1).equals(""+UserName) / 檢查是否是發(fā)給自己的私聊信 息inn = in.readLine();inn = in.r
35、eadLine(); continue ;inn = in.readLine();String name = inn ;if(name.equals(""+UserName) / 檢查是不是自己發(fā)送的私聊信息 inn=in.readLine() ;continue ;int j = 0 ;if(frame_Threader.isEmpty() / 檢查是否有私聊窗口,沒有則新建 String s = name ;new frame(s) ;deley(10000) ; else/ 在存在私聊窗口情形下,檢測私聊窗口是否匹配System.out.println(frame_T
36、hreader.get(j).send_name);while(j < frame_Threader.size()&&!frame_Threader.get(j).send_name.equals(name) j+;if(j=frame_Threader.size() / 不匹配,新建私聊窗口 String s = name ; new frame(s) ; deley(10000) ;/ 將接收的信息顯示到私聊窗口上inn=in.readLine() ;frame fram = frame_Threader.get(j) ;fram.write(inn.substrin
37、g(1) ;PlayWav msg_music= new PlayWav("C:yue2.wav") ;/ 消息提示聲音msg_music.play() ;continue ;/ 以上條件都不滿足就是群聊消息,將接收的消息顯示到群聊窗口上now = Calendar.getInstance();String str = now.getTime().toString() ;message_frame_to.text_message.setText(old+str+" "+"n"+inn.substring(1)+"n"
38、;) ; PlayWav msg_music= new PlayWav("C:yue2.wav") ;/ 消息提示聲音msg_music.play() ; / while 循環(huán)結(jié)束catch (IOException e)return 1 ;/ 服務器建立連接與接收數(shù)據(jù)函數(shù)結(jié)束/ 群聊信息發(fā)送函數(shù)public void send()if(!socket.isConnected()text_message.setText("服務器已經(jīng)斷開"); return ;String line = message_frame_to.text_input.getTex
39、t(); out.println("&"+UserName+" : "+" "+line);/ 群聊信息發(fā)送函數(shù)結(jié)束/延遲函數(shù),用來解決需要延遲執(zhí)行問題public static void deley(int ms)int killtime ;for(int i = 0 ; i < 10000 ; i+)for(int j = 0; j < ms ; j+)killtime = 0;killtime+; / 延遲函數(shù)結(jié)束/ 抖屏函數(shù)public void shake()f.setBounds(260, 160, 6
40、00, 500) ;deley(10000) ;f.setBounds(260, 240, 600, 500) ;deley(10000) ;f.setBounds(340, 240, 600, 500) ;deley(10000) ;f.setBounds(340, 240, 600, 500) ;deley(10000) ;f.setBounds(300, 200, 600, 500) ; / 抖屏函數(shù)結(jié)束/ 類 message_frame_to 結(jié)束/*/*私聊窗口類(線程派生類 ) ,每點擊一個用戶 進行私聊時候,就創(chuàng)建一個對應的私聊窗口*class frame extends Thr
41、ead implements ActionListenerstatic ImageIcon icon=new ImageIcon("C:scan5.jpg") public static JLabel panel = new JLabel(icon) ;public static JFrame f = new JFrame() ;public static JTextArea text_input= new JTextArea() ;public static TextArea text_message= new TextArea() ;Button b= new Butt
42、on("Send") ;public static String UserName= new String(" ") ;/ 當前客戶端的用戶名public static Socket socket;public static String send_name ;/ 當前私聊的用戶名public static int send_num ;public static Calendar now ;public static boolean tag = true;String old = new String() ;/ 構(gòu)造函數(shù)public frame(Stri
43、ng s)send_name = s;start() ;/ 構(gòu)造函數(shù)結(jié)束public void run()口標題f.setTitle(""+message_frame_to.UserName+" to "+send_name) ; / 設(shè)置私聊窗message_frame_to.frame_Threader.add(this) ;f.setLayout(null) ;f.setBounds(200,100,600,500) ;f.setBackground(Color.gray) ;f.setResizable(false) ;panel.setBoun
44、ds(0, 0, 600, 500) ;f.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)/ 私聊窗口關(guān)閉f.setVisible(false) ;message_frame_to.frame_Threader.remove(this) ; tag = false;) ;text_input.setBounds(10,400,400,100) ;text_input.setBackground(Color.white) ;text_input.setVisible(true) ;text
45、_input.setFont(new Font(" 宋體 ",Font.BOLD,22);text_input.setForeground(Color.blue);text_message.setBounds(10,70,400,300) ; text_message.setBackground(Color.white) ;text_message.setVisible(true) ;text_message.setFont(new Font("宋體",Font.BOLD,20);text_message.setForeground(Color.blue
46、);text_message.setEditable(false) ;text_message.selectAll() ;panel.add(text_input) ;panel.add(text_message) ;Label label_1= new Label("Input Area") ;Label label_2= new Label("Message Area") ;label_1.setBounds(10, 370, 400, 30) ;label_1.setBackground(Color.gray) ;label_1.setVisibl
47、e(true) ;label_1.setFont(new Font(" 黑體 ",Font.BOLD , 20) ;label_1.setForeground(Color.black) ;label_2.setBounds(10, 40, 400, 30) ;label_2.setBackground(Color.gray) ;label_2.setVisible(true) ;label_2.setFont(new Font(" 黑體 ",Font.BOLD , 16) ;label_2.setForeground(Color.black) ;pane
48、l.add(label_1) ;panel.add(label_2) ;b.setBounds(450, 440,100, 30) ;b.setBackground(Color.LIGHT_GRAY) ;b.setVisible(true) ;b.setFont(new Font(" 隸書 ",Font.BOLD , 20) ;b.setForeground(Color.black);b.addActionListener(this) ;panel.add(b) ;f.add(panel) ;f.setVisible(true) ;UserName = message_fr
49、ame_to.UserName ;String inn ;while(true) / 死循環(huán),用來保持私聊窗口的活性 / run 函數(shù)結(jié)束/ 私聊窗口按鈕監(jiān)聽執(zhí)行器函數(shù)public void actionPerformed(ActionEvent e)if(e.getSource()=b) / 點擊發(fā)送消息send_one();text_input.setText("") ; / 私聊窗口按鈕監(jiān)聽函數(shù)結(jié)束/私聊消息發(fā)送函數(shù)public void send_one()now = Calendar.getInstance();String str = now.getTime()
50、.toString() ;String line = text_input.getText();message_frame_to.out.println("%"+send_name);message_frame_to.out.println(""+UserName);message_frame_to.out.println("&"+UserName+" : "+" "+line);old = text_message.getText() ;text_message.setText(old
51、+str+" "+"n"+UserName+" : "+" "+line+"n") ; / 私聊消息發(fā)送函數(shù)結(jié)束/ 私聊窗口信息顯示函數(shù)public void write(String inn)now = Calendar.getInstance();String str = now.getTime().toString() ;String ol = text_message.getText() ;text_message.setText(ol+str+" "+"n"+inn+"n") ;/ 私聊窗口信息顯示函數(shù)結(jié)束 / 私聊窗口類結(jié)束/*/*class Dlog extends Frame implements ActionListenerFrame D=new Frame("Wellcome To GAGA Chatroom") ;TextArea t=new TextArea() ;Button sure= new Button("Sure") ;Label user_name= new Label("User Name ") ;st
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉儲智能化系統(tǒng)運維與數(shù)據(jù)安全保障協(xié)議
- 圖錄資料補充及維護服務協(xié)議
- 全渠道加盟商合作共贏協(xié)議
- 智能家居環(huán)境控制系統(tǒng)安裝與定期檢修合同
- 智能家居系統(tǒng)研發(fā)、生產(chǎn)、安裝及培訓合同
- 直播帶貨渠道補充服務合同
- 影視后期制作與技術(shù)支持與維護合同
- 銷售管理人員分析
- 森林防火安全教育
- 剖腹產(chǎn)產(chǎn)期護理
- 整套電子課件:液壓傳動與氣動技術(shù)(第二版)
- 《人類起源的演化過程》閱讀測試題及答案
- 2024年03月甘肅省文化和旅游廳直屬事業(yè)單位2024年公開招考11名人員筆試參考題庫附帶答案詳解
- 人教版一年級下冊七巧板作業(yè)設(shè)計
- 下肢動脈介入手術(shù)
- 任務2 聚酯合成的漿料配制-PTA的輸送與卸料
- 菟絲子的藥學研究進展
- 綠野仙蹤-英語話劇劇本
- 新教材 高中政治必修四《哲學與文化》知識點梳理
- 公積金擴面總結(jié)匯報
- 絲綢之路上的膜鳴樂器獲獎科研報告
評論
0/150
提交評論