




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計(jì)網(wǎng)絡(luò)聊天室院(系) 別 信電學(xué)院 班 級(jí) 計(jì)算102 學(xué) 號(hào) 姓 名 指導(dǎo)教師 時(shí) 間 2013-4-182013-5-10 課 程 設(shè) 計(jì) 任 務(wù) 書題 目 網(wǎng)絡(luò)聊天室 課程設(shè)計(jì) 系 (部) 信電學(xué)院 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班 級(jí) 計(jì)算102 學(xué)生姓名 學(xué) 號(hào) 4 月 18 日至 5 月 10 日 共 4 周指導(dǎo)教師(簽字) 系 主 任(簽字) 年 月 日一、 設(shè)計(jì)內(nèi)容及要求二、設(shè)計(jì)原始資料1)電子工業(yè)出版社JSP實(shí)用教程,鄭阿奇編著2)電子工業(yè)出版社JAVA程序設(shè)計(jì)實(shí)用教程,葉核亞編著三、設(shè)計(jì)完成后提交的文件和圖表1計(jì)算說明書部分JSP界面設(shè)計(jì)2圖紙部分:程序流程圖四、進(jìn)程安排
2、五、主要參考資料1)電子工業(yè)出版社JSP實(shí)用教程,鄭阿奇編著2)電子工業(yè)出版社JAVA程序設(shè)計(jì)實(shí)用教程,葉核亞編著考資料成 績 評(píng) 定 表作品成績報(bào)告成績口試(答辯)成績總評(píng)成績目 錄課程設(shè)計(jì)概述41.1問題描述41.2功能需求分析41.3環(huán)境需求分析4學(xué)生信息管理系統(tǒng)軟件總體設(shè)計(jì)52.1整體思路52.2總體設(shè)計(jì)流程圖6學(xué)生信息管理軟件詳細(xì)設(shè)計(jì)73.1.界面設(shè)計(jì)73.2通信功能實(shí)現(xiàn)方法9參考文獻(xiàn)45課程設(shè)計(jì)概述1.1問題描述隨著計(jì)算機(jī)網(wǎng)絡(luò)日新月異的發(fā)展,人們的交流方式越來越多,傳統(tǒng)的交流方式,如:信件、電報(bào)、電話等已經(jīng)難以滿足人們的交流要求,在互聯(lián)網(wǎng)上即時(shí)的和好友取得聯(lián)系,已經(jīng)成為當(dāng)今社會(huì)人們
3、主流的聯(lián)系方式。因此,兩臺(tái)計(jì)算機(jī)之間進(jìn)行即時(shí)通訊、發(fā)送文件等交流方式已經(jīng)成為必然潮流。因此出現(xiàn)了等聊天工具,然而等聊天工具雖然方便、實(shí)用,但是,娛樂功能太多,有很多吸引人的娛樂功能,從一定程度上來說,是一種娛樂工具,不能作為用于即時(shí)通訊、文件共享的專用工具。目前,用于實(shí)現(xiàn)單一的即時(shí)通訊、文件共享的軟件實(shí)在太少,而且,它們中大部分都是絕對(duì)的C/S模式,對(duì)遠(yuǎn)程服務(wù)器有非常大的依賴性,沒有徹底實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的交流。為此,我決定開發(fā)一個(gè)專用于實(shí)現(xiàn)兩臺(tái)計(jì)算機(jī)之間即時(shí)通訊、文件共享的軟件,以方便兩臺(tái)計(jì)算機(jī)之間信息的交流。避免了服務(wù)器忙或與服務(wù)器無法連接時(shí),浪費(fèi)過多時(shí)間用于和服務(wù)器建立連接。因此,這個(gè)軟件是極具
4、適應(yīng)性和實(shí)用性的即時(shí)通訊軟件。1.2功能需求分析實(shí)現(xiàn)網(wǎng)絡(luò)聊天的功能,采用Windows Socket(或Java Socket)編程,服務(wù)器與客戶端采用了TCP/IP連接方式,在設(shè)計(jì)聊天方案時(shí),可將所有信息發(fā)往服務(wù)器端,再由服務(wù)器進(jìn)行處理,服務(wù)器端是所有信息的中心。服務(wù)器端要保存用戶信息,可利用數(shù)據(jù)庫來實(shí)現(xiàn)這一功能,需要建立用戶信息數(shù)據(jù)庫。在客戶端可采用文件系統(tǒng)保存聊天紀(jì)錄和用戶號(hào)碼??赏ㄟ^閃動(dòng)托盤圖標(biāo)和播放不同的音樂提示信息到來及好友上線等信息??赏ㄟ^建立消息鏈表來保存用戶接收的各種消息。1.3環(huán)境需求分析運(yùn)行環(huán)境:Windows 9x、2000、XP、Windows 7
5、必要環(huán)境:JDK 1.6以上、eclipse開發(fā)環(huán)境硬件環(huán)境:CPU 400MHz以上,內(nèi)存512MB以上學(xué)生信息管理系統(tǒng)軟件總體設(shè)計(jì)2.1整體思路該C/S模式的聊天系統(tǒng),就是服務(wù)器來提供服務(wù)端連接響應(yīng),客戶端主動(dòng)的發(fā)起連接請(qǐng)求。當(dāng)多個(gè)用戶同時(shí)連接到服務(wù)器時(shí),經(jīng)由服務(wù)器的接收與轉(zhuǎn)發(fā)便可以實(shí)現(xiàn)客戶之間的通信。對(duì)于整體系統(tǒng)的流程,也是分為兩部分,即客戶端的發(fā)起請(qǐng)求,服務(wù)器響應(yīng)請(qǐng)求。首先是客戶端的登陸,客戶端在登陸時(shí),必須設(shè)置所想要連接的服務(wù)器,然后客戶端就會(huì)根據(jù)設(shè)置的服務(wù)器IP地址,向服務(wù)器發(fā)起建立連接請(qǐng)求。而服務(wù)器端是始終在監(jiān)聽網(wǎng)絡(luò)狀態(tài)的,主要檢測(cè)到有一個(gè)連接請(qǐng)求,那么服務(wù)器就會(huì)給當(dāng)前的發(fā)起端分
6、配一個(gè)服務(wù)線程,用于處理它的各種請(qǐng)求。對(duì)于客戶端的各種請(qǐng)求,實(shí)際上都是通過在客戶發(fā)往服務(wù)器的各種字符流區(qū)分的,具體的方法就是在消息的頭部以及尾部添加特殊字符串,從而實(shí)現(xiàn)服務(wù)器對(duì)消息請(qǐng)求的識(shí)別。比如對(duì)于登陸信息,消息的頭部就是“PEOPLO”,而對(duì)于私聊中的消息,頭部就是“SEC”,其他的同理都添加了頭部。當(dāng)然,對(duì)于客戶端來說,這些都是透明的,用戶的操作并沒有受到任何影響。在服務(wù)器端,消息被檢測(cè)分析后,變回根據(jù)具體的目的進(jìn)行處理,比如是私聊消息,服務(wù)器便會(huì)根據(jù)其尾部的目的信息,向目標(biāo)端轉(zhuǎn)發(fā)該條消息。這里額外要說的是,該系統(tǒng)特別的對(duì)用戶發(fā)來的消息進(jìn)行了加密處理,即用戶的各種具體信息,不僅能夠防止向
7、第三方的泄漏,而且即使服務(wù)器端出現(xiàn)異常,信息也不會(huì)泄漏。對(duì)于私聊的方式,該系統(tǒng)所采用的方法類似于QQ的通信方式,由發(fā)起方主動(dòng)連接,當(dāng)目的方接收到連接請(qǐng)求后,會(huì)主動(dòng)建立一個(gè)私聊窗口,從而 實(shí)現(xiàn)私聊。2.2總體設(shè)計(jì)流程圖ServerClient建立服務(wù)器監(jiān)聽socket建立連接創(chuàng)建socket向服務(wù)器發(fā)請(qǐng)求等待并接收連接請(qǐng)求接收請(qǐng)求后創(chuàng)建socket連接InputStream開始通信InputStreamOutputStreamOutputStream關(guān)閉socket結(jié)束通信關(guān)閉socket學(xué)生信息管理軟件詳細(xì)設(shè)計(jì)3.1.界面設(shè)計(jì)由于這里界面設(shè)計(jì)源代碼比較簡單,這里不再列出。3.1.1 服務(wù)器界面
8、設(shè)計(jì)服務(wù)器界面3.1.2客戶端界面設(shè)計(jì)登陸界面注冊(cè)界面聊天室界面3.2通信功能實(shí)現(xiàn)方法列舉部分實(shí)現(xiàn)通信功能的主要代碼AppServer.java文件public class AppServer extends Thread private ServerSocket serverSocket;private ServerFrame sFrame;private static Vector userOnline = new Vector(1, 1);private static Vector v = new Vector(1, 1);/* * 創(chuàng)建服務(wù)器 啟動(dòng)服務(wù)監(jiān)聽1001端口 * */publ
9、ic AppServer() sFrame = new ServerFrame();try serverSocket = new ServerSocket(1001);/ 獲取服務(wù)器的主機(jī)名和IP地址InetAddress address = InetAddress.getLocalHost();sFrame.txtServerName.setText(address.getHostName();sFrame.txtIP.setText(address.getHostAddress();sFrame.txtPort.setText("1001"); catch (IOExc
10、eption e) fail(e, "不能啟動(dòng)服務(wù)!");sFrame.txtStatus.setText("已啟動(dòng).");this.start(); / 啟動(dòng)線程/* * 退出服務(wù)器 * * param e * 異常 * param str * 退出信息 */public static void fail(Exception e, String str) System.out.println(str + " 。" + e);/* * 監(jiān)聽客戶的請(qǐng)求,當(dāng)有用戶請(qǐng)求時(shí)創(chuàng)建 Connection線程 */public void run()
11、 try while (true) / 監(jiān)聽并接受客戶的請(qǐng)求Socket client = serverSocket.accept();new Connection(sFrame, client, userOnline, v); / 支持多線程/ System.out.println("userLength:"+userLength); catch (IOException e) System.out.println("不能監(jiān)聽");/* * 啟動(dòng)服務(wù)器 */public static void main(String args) new AppServ
12、er();ServerFrame.java文件public class ServerFrame extends JFrame implements ActionListener public JList list;/* * */private static final long serialVersionUID = -8936397327038098620L;/ 服務(wù)器信息面板JPanel pnlServer, pnlServerInfo;JLabel lblStatus, lblNumber, lblMax, lblServerName, lblProtocol, lblIP,lblPort
13、, lblLog;public JTextField txtStatus, txtNumber, txtMax, txtServerName, txtProtocol, txtIP,txtPort;JButton btnStop, btnSaveLog;public TextArea taLog;JTabbedPane tpServer;public TextArea taMessage;/ 用戶信息面板JPanel pnlUser;public JLabel lblMessage, lblUser, lblNotice, lblUserCount;JList lstUser;JScrollP
14、ane spUser;JTextField txtNotice;JButton btnSend, btnKick;public String ti = ""public String serverMessage =""public ServerFrame() / 服務(wù)器窗口super("HappyChat聊天服務(wù)器");setSize(550, 500);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setResizable(false);Dimension scr = Toolkit.
15、getDefaultToolkit().getScreenSize();/ 在屏幕居中顯示Dimension fra = this.getSize();if (fra.width > scr.width) fra.width = scr.width;if (fra.height > scr.height) fra.height = scr.height;this.setLocation(scr.width - fra.width) / 2,(scr.height - fra.height) / 2);/ =服務(wù)器信息面板=pnlServer = new JPanel();pnlSe
16、rver.setLayout(null);pnlServerInfo = new JPanel(new GridLayout(14, 1);pnlServerInfo.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(""), BorderFactory.createEmptyBorder(1, 1, 1, 1);lblStatus = new JLabel("當(dāng)前狀態(tài):");txtStatus = new JTextField(10);txtSta
17、tus.setEditable(false);lblNumber = new JLabel("當(dāng)前在線人數(shù):");txtNumber = new JTextField("0 人", 10);txtNumber.setEditable(false);lblMax = new JLabel("最多在線人數(shù):");txtMax = new JTextField("50 人", 10);txtMax.setEditable(false);lblServerName = new JLabel("服務(wù)器名稱:&quo
18、t;);txtServerName = new JTextField(10);txtServerName.setEditable(false);lblProtocol = new JLabel("訪問協(xié)議:");txtProtocol = new JTextField("HTTP", 10);txtProtocol.setEditable(false);lblIP = new JLabel("服務(wù)器IP:");txtIP = new JTextField(10);txtIP.setEditable(false);lblPort = n
19、ew JLabel("服務(wù)器端口:");txtPort = new JTextField("8000", 10);txtPort.setEditable(false);btnStop = new JButton("關(guān)閉服務(wù)器(C)");btnStop.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) closeServer(););lblLog = new JLabel("服務(wù)器日志");taLo
20、g = new TextArea(20, 50);btnSaveLog = new JButton("保存日志(S)");btnSaveLog.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) saveLog(););pnlServerInfo.add(lblStatus);pnlServerInfo.add(txtStatus);pnlServerInfo.add(lblNumber);pnlServerInfo.add(txtNumber);pnlSe
21、rverInfo.add(lblMax);pnlServerInfo.add(txtMax);pnlServerInfo.add(lblServerName);pnlServerInfo.add(txtServerName);pnlServerInfo.add(lblProtocol);pnlServerInfo.add(txtProtocol);pnlServerInfo.add(lblIP);pnlServerInfo.add(txtIP);pnlServerInfo.add(lblPort);pnlServerInfo.add(txtPort);pnlServerInfo.setBoun
22、ds(5, 5, 100, 400);lblLog.setBounds(110, 5, 100, 30);taLog.setBounds(110, 35, 400, 370);btnStop.setBounds(200, 410, 120, 30);btnSaveLog.setBounds(320, 410, 120, 30);pnlServer.add(pnlServerInfo);pnlServer.add(lblLog);pnlServer.add(taLog);pnlServer.add(btnStop);pnlServer.add(btnSaveLog);/ =在線用戶面板=pnlU
23、ser = new JPanel();pnlUser.setLayout(null);lblMessage = new JLabel("用戶消息");taMessage = new TextArea(20, 20);lblNotice = new JLabel("通知:");txtNotice = new JTextField(20);btnSend = new JButton("發(fā)送(S)");btnSend.setEnabled(true);btnSend.addActionListener(new ActionListener(
24、) public void actionPerformed(ActionEvent arg0) serverMessage(););lblUserCount = new JLabel("在線總?cè)藬?shù) 0 人");btnKick = new JButton("踢人(K)");btnKick.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) tiRen(););lblUser = new JLabel("在線用戶列表");
25、lstUser = new JList();lstUser.setVisibleRowCount(17);lstUser.setFixedCellWidth(180);/指定的固定單元格寬度值,而不是從列表元素計(jì)算而來的寬度值lstUser.setFixedCellHeight(18);spUser = new JScrollPane();spUser.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);spUser.getViewport().setView(lstUser);lblMessage.setBoun
26、ds(5, 5, 100, 25);taMessage.setBounds(5, 35, 300, 360);lblUser.setBounds(310, 5, 100, 25);spUser.setBounds(310, 35, 220, 360);lblNotice.setBounds(5, 410, 40, 25);txtNotice.setBounds(50, 410, 160, 25);btnSend.setBounds(210, 410, 80, 25);lblUserCount.setBounds(320, 410, 100, 25);btnKick.setBounds(440,
27、 410, 80, 25);pnlUser.add(lblMessage);pnlUser.add(taMessage);pnlUser.add(lblUser);pnlUser.add(spUser);list = new JList();list.setListData(new String "" );spUser.setViewportView(list);pnlUser.add(lblNotice);pnlUser.add(txtNotice);pnlUser.add(btnSend);pnlUser.add(lblUserCount);pnlUser.add(bt
28、nKick);/ =主標(biāo)簽面板=tpServer = new JTabbedPane(JTabbedPane.TOP);tpServer.add("服務(wù)器管理", pnlServer);tpServer.add("用戶信息管理", pnlUser);this.getContentPane().add(tpServer);setVisible(true);protected void serverMessage() / TODO 自動(dòng)生成方法存根this.serverMessage = txtNotice.getText();txtNotice.setTe
29、xt("");protected void closeServer() / TODO 自動(dòng)生成方法存根this.dispose();/this.resprotected void saveLog() / TODO 自動(dòng)生成方法存根try FileOutputStream fileoutput = new FileOutputStream("log.txt",true);String temp = taMessage.getText();fileoutput.write(temp.getBytes();fileoutput.close();JOptionP
30、ane.showMessageDialog(null, "記錄保存在log.txt"); catch (Exception e) System.out.println(e);protected void tiRen() / TODO 自動(dòng)生成方法存根ti = list.getSelectedValue().toString();log("Ti:"+ti);private void log(String string) / TODO 自動(dòng)生成方法存根String newta = taMessage.getText();newta += ("n&q
31、uot;+string);taMessage.setText(newta);public void actionPerformed(ActionEvent evt) public static void main(String args) new ServerFrame();Connection.java文件public class Connection extends Thread /* * 與客戶端通訊Socket */private Socket netClient;/* * 在線用戶列表 */private Vector<Customer> userOnline;/* *
32、聊天信息 */private Vector<Chat> userChat;/* * 從客戶到服務(wù)器 輸入流 */private ObjectInputStream fromClient;/* * 傳到客戶端 打印流 */private PrintStream toClient;/* * 注冊(cè)用戶列表 */private static Vector vList = new Vector();/* * 臨時(shí)對(duì)象 */private Object obj;/* * 服務(wù)器日志窗體 */private ServerFrame sFrame;SuppressWarnings("un
33、checked")/* * 創(chuàng)建與客戶端通訊 */public Connection(ServerFrame frame, Socket client, Vector u, Vector c) netClient = client;userOnline = u;userChat = c;sFrame = frame;try / 發(fā)生雙向通信/ 檢索客戶輸入fromClient = new ObjectInputStream(netClient.getInputStream();/ 服務(wù)器寫到客戶toClient = new PrintStream(netClient.getOutpu
34、tStream(); catch (IOException e) try netClient.close(); catch (IOException e1) System.out.println("不能建立流" + e1);return;this.start();/* * 處理與客戶端的通訊線程 */public void run() try / obj是Object類的對(duì)象obj = (Object) fromClient.readObject();if (obj.getClass().getName().equals("Customer") /ser
35、verLogin();serverLoginDB();if (obj.getClass().getName().equals("Register_Customer") /serverRegiste();serverRegisteDB();if (obj.getClass().getName().equals("Message") serverMessage();if (obj.getClass().getName().equals("Chat") serverChat();if (obj.getClass().getName().eq
36、uals("Exit") serverExit(); catch (IOException e) System.out.println(e); catch (ClassNotFoundException e1) System.out.println("讀對(duì)象發(fā)生錯(cuò)誤!" + e1); finally try netClient.close(); catch (IOException e) System.out.println(e);/* * * 登錄處理 */SuppressWarnings("deprecation")public
37、void serverLogin() try Customer clientMessage2 = (Customer) obj;/ 讀文件FileInputStream file3 = new FileInputStream("user.txt");ObjectInputStream objInput1 = new ObjectInputStream(file3);vList = (Vector) objInput1.readObject();int find = 0; / 查找判斷標(biāo)志/ System.out.println(find);for (int i = 0; i
38、 < vList.size(); i+) Register_Customer reg = (Register_Customer) vList.elementAt(i);if (reg.custName.equals(clientMessage2.custName) find = 1;if (!reg.custPassword.equals(clientMessage2.custPassword) toClient.println("密碼不正確");break; else / 判斷是否已經(jīng)登錄int login_flag = 0;for (int a = 0; a &l
39、t; userOnline.size(); a+) / chenminString _custName = (Customer) userOnline.elementAt(a).custName;if (clientMessage2.custName.equals(_custName) login_flag = 1;break;if (userOnline.size() >= 50) toClient.println("登錄人數(shù)過多,請(qǐng)稍候再試");break;if (login_flag = 0) clientMessage2.custHead = reg.head
40、;/ getUserHeadByName(clientMessage2.custName);userOnline.addElement(clientMessage2);toClient.println("登錄成功");Date t = new Date();log("用戶" + clientMessage2.custName + "登錄成功,"+ "登錄時(shí)間:" + t.toLocaleString() + "n");freshServerUserList();break; else toCli
41、ent.println("該用戶已登錄"); else continue;if (find = 0) toClient.println("沒有這個(gè)用戶,請(qǐng)先注冊(cè)");file3.close();objInput1.close();fromClient.close(); catch (ClassNotFoundException e) System.out.println(e); catch (IOException e) System.out.println(e);/* * * 登錄處理 * * throws Exception */SuppressWa
42、rnings("deprecation")public void serverLoginDB() try Customer clientMessage2 = (Customer) obj;String name = clientMessage2.custName;String pass = clientMessage2.custPassword;String sql = "select * from yonghu where custName='" + name + "'"ResultSet rs = DB.execu
43、teQuery(sql);System.out.println("sql:" + sql);boolean login = false;String head=""while (rs.next() String ps=rs.getString("custPassword").toString();System.out.println("ps:"+ps+"");System.out.println("pass:"+pass+"");if (ps.equals
44、(pass.toString() login = true;System.out.println("logined:");System.out.println("compareTo:"+pareTo(pass);head=rs.getString("head");System.out.println("head:"+rs.getString("head");System.out.println("login:"+login);if (!login) toClient.prin
45、tln("密碼不正確");return;/ 判斷是否已經(jīng)登錄int login_flag = 0;for (int a = 0; a < userOnline.size(); a+) String _custName = (Customer) userOnline.elementAt(a).custName;if (clientMessage2.custName.equals(_custName) login_flag = 1;break;if (userOnline.size() >= 50) toClient.println("登錄人數(shù)過多,請(qǐng)稍候
46、再試");return;if (login_flag = 0) System.out.println("head:"+head);clientMessage2.custHead =head;/ getUserHeadByName(clientMessage2.custName);userOnline.addElement(clientMessage2);toClient.println("登錄成功");Date t = new Date();log("用戶" + clientMessage2.custName + "
47、;登錄成功," + "登錄時(shí)間:"+ t.toLocaleString() + "n");freshServerUserList();return; else toClient.println("該用戶已登錄");fromClient.close(); catch (Exception e) e.printStackTrace();/* * 刷新服務(wù)器日志窗體在線列表 * */private void freshServerUserList() String userList = new String50;Customer
48、cus = null;for (int j = 0; j < userOnline.size(); j+) cus = (Customer) userOnline.get(j);userListj = cus.custName;sFrame.list.setListData(userList);sFrame.txtNumber.setText("" + userOnline.size();sFrame.lblUserCount.setText("當(dāng)前在線人數(shù):" + userOnline.size();/ System.out.println(&q
49、uot;fresh ok");/* * 注冊(cè)處理 */SuppressWarnings( "unchecked", "deprecation" )public void serverRegiste() try int flag = 0; / 是否重名判斷標(biāo)志Register_Customer clientMessage = (Register_Customer) obj;File fList = new File("user.txt");if (fList.length() != 0)/ 判斷是否是第一個(gè)注冊(cè)用戶Object
50、InputStream objInput = new ObjectInputStream(new FileInputStream(fList);vList = (Vector) objInput.readObject();/ 判斷是否有重名for (int i = 0; i < vList.size(); i+) Register_Customer reg = (Register_Customer) vList.elementAt(i);if (reg.custName.equals(clientMessage.custName) toClient.println("注冊(cè)名重復(fù),請(qǐng)另外選擇");flag = 1;break; else if (reg.custName.equals("所有人") toClient.println("禁止使用此注冊(cè)名,請(qǐng)另外選擇");flag = 1;break;if (flag = 0) / 添加新注冊(cè)用戶vList.addElement(clientMessage);/ 將向量中的類寫回文件FileOutputStream file = new FileOutputStream(fList);ObjectOutputStream objout =
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度投資理財(cái)代理服務(wù)合同
- 二零二五年度吊車安全操作規(guī)程制定及執(zhí)行合同
- 二零二五年度冬季勞務(wù)掃雪環(huán)境保護(hù)協(xié)議
- 2025年度正規(guī)貨車駕駛員勞動(dòng)合同及貨運(yùn)業(yè)務(wù)操作規(guī)范合同
- 二零二五年度扶貧項(xiàng)目風(fēng)險(xiǎn)防范與應(yīng)急處理合作協(xié)議
- 二零二五年度合同糾紛賠償調(diào)解服務(wù)協(xié)議
- 二零二五年度名人房產(chǎn)銷售代理合同范本
- 2025年度智能制造股權(quán)抵押貸款合同
- 2025年度電子商務(wù)平臺(tái)合作解除終止范本
- 二零二五年度企業(yè)勞動(dòng)合同解除與離職員工就業(yè)援助服務(wù)協(xié)議
- 2025年黑龍江交通職業(yè)技術(shù)學(xué)院單招職業(yè)技能測(cè)試題庫必考題
- 個(gè)人畫協(xié)議合同范本
- 2024-2025學(xué)年高一下學(xué)期開學(xué)第一節(jié)課(哪吒精神)主題班會(huì)課件
- 人教版2025-初中物理實(shí)驗(yàn)室實(shí)驗(yàn)課程安排
- 2024年無錫科技職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 舞蹈藝術(shù)賞析課件
- 2025江蘇泰州興化市陳堡鎮(zhèn)村級(jí)后備干部招聘10人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 重慶市2025屆高三第一次學(xué)業(yè)質(zhì)量調(diào)研抽測(cè)化學(xué)試題 (含答案)
- 隔物灸課件:2025年版
- 室外廣告安全生產(chǎn)培訓(xùn)
- 2025中冶建工集團(tuán)限公司校園招聘114人高頻重點(diǎn)提升(共500題)附帶答案詳解
評(píng)論
0/150
提交評(píng)論