版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、f文庫讓每個人平辱地提升自我!(此文檔為word格式,下載后您可任意編輯修改?。┱n程設計網(wǎng)絡聊天室院係)別 信電學院班 級計算102學號姓名指導教師時間_課程設計任務書題 目網(wǎng)絡聊天室課程設計系(部)信電學院計算機科學與技術(shù)計算102學生姓名學 號4月 18 日至 5 月 10 日共 4 周指導教師(簽字)系主任(簽字)4一. 設計內(nèi)容及要求二、設計原始資料1)電子工業(yè)出版社JSP實用教程,鄭阿奇編著2)電子工業(yè)出版社JAVA程序設計實用教程,葉核亞編著三、設計完成后提交的文件和圖表1. 計算說明書部分JSP界面設計2. 圖紙部分:程序流程圖四、進程安排百度文陣-讓每個人I我五. 主要參考資料
2、1)電子工業(yè)出版社JSP實用教程,鄭阿奇編著2)電子工業(yè)出版社JAVA程序設計實用教程,葉核亞編著考資料成績評定表作品成績報告成績口試(答辯)成績總評成績7課程設計概述31問題描述31.2功能需求分析31.3環(huán)境需求分析3學生信息管理系統(tǒng)軟件總體設計42整體思路42.2總體設計流程圖4學生信息管理軟件詳細設計43.1.界面設計43.2通信功能實現(xiàn)方法7設計體會及今后的改進意見40參考文獻40摘要私逹。実踐能力總高血召上的、學/uZf知識藝運用行。t更 創(chuàng)造0疋、學校肚特人2週間手配I.T、私逹広Visual C+0課程設計実習總行 水)it去C07 7 詳 説明(i Visual C+6.0
3、環(huán)境下疋、1 007 7 b x 70 過程總設計LT. C077各種個數(shù)總統(tǒng)計C07 7 b x 70機能(止、工一一(J: 1段文字總?cè)肓 7 7 b ? x / 肚文字中各類數(shù)總記録0疋、英文數(shù)、數(shù)字數(shù)、 空欄數(shù)七乞彳7a0T-0數(shù)藝含/1疋、f L明力、(C示 l r.以下、課程總通J疋説明總設計77 bx/0説明總統(tǒng)計I,疋、 /口 / 7 A(i説明總調(diào)整LT.総括0方面總開発L T.詳L < C07a "" 製作過程總説明LT.作用、各種実行卞召乙匕爪弋套召操作.1課程設計概述1.1問題描述'隨著計算機網(wǎng)絡日新月異的發(fā)展,人們的交流方式越來越多
4、,傳統(tǒng)的交流方式,如: 信件、電報、電話等己經(jīng)難以滿足人們的交流要求,在互聯(lián)網(wǎng)上即時的和好友取得聯(lián) 系,已經(jīng)成為當今社會人們主流的聯(lián)系方式。因此,兩臺計算機之間進行即時通訊、 發(fā)送文件等交流方式己經(jīng)成為必然潮流。因此出現(xiàn)了QQ等聊天工具,然而QQ等聊 天工具雖然方便、實用,但是,娛樂功能太多,有很多吸引人的娛樂功能,從一定程 度上來說,是一種娛樂工具,不能作為用于即時通訊、文件共享的專用工具。目前, 用于實現(xiàn)單一的即時通訊、文件共享的軟件實在太少,而II,它們中大部分都是絕對 的C/S模式,對遠程服務器有非常大的依賴性,沒有徹底實現(xiàn)點對點的交流。為此, 我決定開發(fā)一個專用于實現(xiàn)兩臺計算機之間即
5、時通訊、文件共享的軟件,以方便兩臺 計算機之間信息的交流。避免了服務器忙或與服務器無法連接時,浪費過多時間用于 和服務器建立連接。因此,這個軟件是極具適應性和實用性的即時通訊軟件。1.2功能需求分析實現(xiàn)網(wǎng)絡聊天的功能,采用Windows Socket (或JavaSocket)編程,服務器與客戶端 采用了 TCP/IP連接方式,在設計聊夭方案時,可將所有信息發(fā)往服務器端,再由服務 器進行處理,服務器端是所有信息的中心。服務器端要保存用戶信息,可利用數(shù)據(jù)庫 來實現(xiàn)這一功能,需要建立用戶信息數(shù)據(jù)庫。在客戶端可采用文件系統(tǒng)保存聊夭紀錄 和用戶號碼。可通過閃動托盤圖標和播放不同的音樂提示信息到來及好友
6、上線等信 息。可通過建立消息鏈表來保存用戶接收的各種消息。1.3環(huán)境需求分析運行環(huán)境:Windows 9xx 2000、XP Windows 7必要環(huán)境:JDK 1.6以上、eclipse開發(fā)環(huán)境硬件環(huán)境:CPU 400MHz以上,內(nèi)存512MB以上學生信息管理系統(tǒng)軟件總體設計2.1整體思路該C/S模式的聊夭系統(tǒng),就是服務器來提供服務端連接響應,客戶端主動的發(fā)起 連接請求。當多個用戶同時連接到服務器時,經(jīng)由服務器的接收與轉(zhuǎn)發(fā)便可以實現(xiàn)客 戶之間的通信。對于整體系統(tǒng)的流程,也是分為兩部分,即客戶端的發(fā)起請求,服務器響應請求。 首先是客戶端的登陸,客戶端在登陸時,必須設置所想耍連接的服務器,然后客
7、戶端 就會根據(jù)設置的服務器IP地址,向服務器發(fā)起建立連接請求。而服務器端是始終在監(jiān) 聽網(wǎng)絡狀態(tài)的,主要檢測到有一個連接請求,那么服務器就會給當前的發(fā)起端分配一 個服務線程,用于處理它的各種請求。對于客戶端的各種請求,實際上都是通過在客戶發(fā)往服務器的各種字符流區(qū)分的, 具體的方法就是在消息的頭部以及尾部添加特殊字符串,從而實現(xiàn)服務器對消息請求 的識別。比如對于登陸信息,消息的頭部就是“PEOPLO”,而對于私聊中的消息,頭 部就是“SEC”,其他的同理都添加了頭部。當然,對于客戶端來說,這些都是透明的, 用戶的操作并沒有受到任何影響。在服務器端,消息彼檢測分析后,變回根據(jù)具體的 目的進行處理,比
8、如是私聊消息,服務器便會根據(jù)其尾部的目的信息,向目標端轉(zhuǎn)發(fā) 該條消息。這里額外要說的是,該系統(tǒng)特別的對用戶發(fā)來的消息進行了加密處理,即用戶的 各種具體信息,不僅能夠防止向第三方的泄漏,而11即使服務器端出現(xiàn)異常,信息也 不會泄漏。對于私聊的方式,該系統(tǒng)所采用的方法類似丁-QQ的通信方式,由發(fā)起方主動連 接,當目的方接收到連接請求后,會主動建立一個私聊窗口,從而實現(xiàn)私聊。2.2總體設計流程圖學生信息管理軟件詳細設計3.1界面設計由丁這里界面設計源代碼比較簡單,這里不再列出。3.1.1服務器界而設計服務器界面3丄2客戶端界面設計登陸界面注冊界面2靭天室用戶:測試用戶【在線用戶列裘】在線人敎:0【聊
9、天信息】你對:所有人發(fā)送利聊淸屏傑存時鐘退出聊天室界面3.2通信功能實現(xiàn)方法列舉部分實現(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(lJ 1);/*創(chuàng)建服務器啟動服務監(jiān)聽1001端口7public static vo
10、id fail(Exception e, String str) System.out.pTintln(str + " 。 ” + e);/*監(jiān)聽客戶的請求,當有用戶請求時創(chuàng)建Connection線程*/public void ”un() try while (true) /監(jiān)聽并接受客戶的請求Socket client = serverSocketaccept();new Connectio n(sFrame, die nt, userOnLine, v); / 支持 多線程/ System.out.printIn("usenLength:"+userLengt
11、h); catch (IOException e) System, out. print In ("不能監(jiān)聽”);/*啟動服務器*/public static void main(String args) new AppServer();ServerFrame java 文件public class ServerFrame extends DFrame implements ActionListenen public JList list;/*/private static final long seriaLVersionUID = L;/服務器信息面板JPanel pnlServe
12、r pnlServerlnfo;JLabel lblStatus lblNumber lblMax lblServerName., lblProtocollbllP,lblPort lblLog;public DTextField txtStat us, txt Number, t xtMax t xtServerNametxtProtocol, txtIP,txtPort;JButton btnStop, btnSaveLog;public TextArea taLog;JTabbedPane tpServer;public TextArea taMessage;/用戶信息面板JPanel
13、pnlUser;public JLabel lblMessage? lblUser lblNotice lblUserCount;JList 1stUser;JScrollPane spUser;JTextField txtNotice;JButton btnSend btnKick;public String ti = 1111;public String serverMessage =,H;public ServerFrame() /服務器窗口super(" HappyChat服務器");setSize(550, 500);setDefaultClose0peratio
14、n(3Frame.JsetResizable(false);Dimension scr =Toolkit.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.
15、height) / 2);/ =服務器信息面板=pnlServer = new 3Panel();pnlServer.setLayout(null);pnlServerInfo = new JPanel(nQW GridLayout(14? 1);pnlServerInfo setBorder(BorderFactory createCompoundBorder(BorderFactorycreateTitLedBorder(uu), BorderFactony.createEmptyBorder(11, 1, 1);lblStatus = new 3Label("當前狀態(tài):&quo
16、t;);txtStatus = new 3TextField(10);txtStatus setEditable(falsQ);lblNumber = new JLabel("當前在線人數(shù):");txtNumber = new 3TextField("0 A11, 10);txtNumbec.setEditablelblMax = new J Label (H 最多在線人數(shù):”);txtMax = new JTextField(u50 A11, 10);txtMax.setEditable(false);lblServerName = new JLabel(M服務
17、器名稱:”);txtServerName = new JTextField(10);txtServerName setEditable(false);lblProtocol = new JLabelC1 訪問協(xié)議:");txtProtocol = new JTextFieldC'HTTP'' 10);txtProtocol setEditable(false);lbllP = new JLabelC*服務器IP:11); txtIP = new JTextField(10);txtIP.setEditable(false);lblPor t = new J L
18、abel (H 服務器端 口:");txtPort = new JTextField(H8000 10);txtPort setEditable(false);btnStop = new 3Button("關閉服務器(C)");btnStopaddActionListenen(nQW ActionListener() public void actionPerformed(ActionEvent arg0) closeServer(););lblLog = new 3Label("服務器日志”);taLog = new TextA“ea(20, 50);
19、btnSaveLog = new 3Button(11 保存日志(S)");btnSaveLog.addActionListener(rww ActionListener() public void actionPerformed(ActionEvent arg0) saveLog(););pnlServerInfo.add(lblStatus);pnlServerInfo add(txtStatus);pnlServerInfo.add(lblNumber);pnlServerInfo.add(txtNumber);pnlServerlnfo.add(lblMax); pnlSer
20、verInfo.add(txtMax);pnlServerInfo add(lblServerName);pnlServerInfo add(txtServerName);pnlServerInfo.add(lblProtocol);pnlServerInfo.add(txtProtocol); pnlServerlnfo.add(lbllP); pnlServerlnfo.add(txtlP); pnlServerlnfo.add(lblPort);pnlServerInfo.add(txtPort);pnlServerlnfo.setBoundsCS 5, 100 400); lblLog
21、.setBoundsCHO 5,10030);taLog. setBoundsCHO 35,400370);btnStop setBounds(200» 410 120? 30);btnSaveLog.setBounds(320 410 120 30); pnlServer add(pnlServerInfo);pnlServer add(lblLog);pnlServer add(taLog);pnlServer add(btnStop);pnlServeradd(btnSaveLog);/ =在線用戶面板=pnlUser = new JPanel();pnlUser setLay
22、out(null);lblMessage = new J Label (H用戶消息");taMessage = new TextArea(20 20); lblNotice = new 3Label("通知:");txtNotice = new 3TextField(20);btnSend = new 3Button(H發(fā)送(S)");btnSend.setEnabled(true);btnSendaddActionListenen(nQw ActionListener() public void actionPerformed(ActionEvent
23、arg0) serverMessage(););lblllserCount = new JLabel("在線總?cè)藬?shù) 0 人”);btnKick = new JButton("踢人(K)");btnKickaddActionListene“(nQW ActionListener() public void actionPerformed(ActionEvent arg0) tiRen(););lblUser = new J Label (M在線用戶列表”);1st User = new JListQ;lstllser. setVisibleRowCount(17);
24、lstllser.setFixedCellWidth(180);/指定的固定單元格寬度值,而不是從列表元素計算而來的寬度值lstllser. set FixedCellHeight( 18);spllser = new DScrollPane();spUser.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AL忖AYS);spllser getViewpont(). setViewClstUsen); lblMessage.setBoundsCS 5, 100 25); taMessage.setBounds(5 35 30
25、0, 360);lblUser.setBoundsCBlG 5, 100 25);spllsersetBounds(310» 35,220,360); lblNotice.setBoundsCS 410, 4025);txtNotice.setBounds(50? 410, 160 25); btnSend.setBounds(210> 410 80, 25); lblUserCount setBounds(?20,410100 25);btnKick.setBounds(440J 410, 80, 25);pnlllser add(lblMessage);pnlUser ad
26、d(taMessage);pnlUser add(lblllser);pnlUser add(spUsen);list = new JListQ;list.setListData(new String );spllser setViewpor tView( lis t);pnlUser.add(lblNotice);pnlUser add(txtNotice);pnlUser add(btnSend);pnlUser add(lblUse“Count);pnlUser.add(btnKick);/=主標簽面板= tpServer = new JTabbedPane(JTabbedPane.TO
27、P); tpServer.add("服務器管理J pnlServer); tpServer.add("用戶信息管理" pnlUser); this getContentPane() add(tpSeTven);setVisible(true);protected void serverMessage() / TODO 口動生成方法存根this senverMessage = txtNotice.getText(); txtNotice setText(HH);protected void closeServer() / TODO 口動生成方法存根this disp
28、ose();/this.resprotected void saveLog() / TODO 口動生成方法存根try FileOutputStream fileoutput 二 new FileOutputStream( "log.true);String temp = taMessagegetText();17fileoutputwrite(temp getBytes();fileoutput close();JOptionPane .shoMessageDia Log (null "記錄保存在 log.txt"); catch (Exception e) Sy
29、stem.out.println(e);protected void tiRen() / TODO 口動生成方法存根ti 二 list.getSelectedValue()toString();log("Ti:n+ti);private void log(Strying string) / TODO 口動生成方法存根String newta = taMessage.getText();newta += (,n,+str in g);taMessage.setText(newta);public void actionPerformed(ActionEvent evt) public
30、static void main(String args) new ServerFrame();Con necti on java 文件public class Connection extends Thread /*與客戶端通訊Socket*/private Socket netClient;/*在線用戶列表*/private VectorxCustomer> userOnline;/*聊夭信息*/private VectorxChat> userChat;/*從客戶到服務器輸入流*/private ObjectlnputStream fromClient;/*傳到客戶端打印流*
31、/private PnintStream toClient;/*注冊用戶列表*/private static Vector vList = new Vector();/*臨時對象*/private Object obj;/*服務器日志窗體*/private ServerFrame sFrame;SuppressWar nin gs( "unchecked11)/*創(chuàng)建與客戶端通訊*/Vector u.public Connection(SenveTFrame frame Socket dient, Vector c) netClient 二 client;userOnline = u
32、;userChat = c;sFrame = frame;try /發(fā)生雙向通信/檢索客戶輸入fromClient 二 newObjectinputst“eam(netClient getInputStream();/服務器寫到客戶toClient 二 new PintStream(netClientgetOutputStream(); catch (IOException e) try netClient.close(); catch (IOException el) System. out. print In (H 不能建立流"+ el);return;this stant();
33、/*處理與客戶端的通訊線程*/public void ”un() try / obj是Object類的對象obj = (Object) fromClierrtreadObject();if (obj .getClass() .getName(). equals(''Customer'1) /serverLogin();serverLoginDB();if (obj getClass()getName().equals("RegisteCustomer")22serverRegisteDB();if (obj .getClass() .getName(
34、). equals("Message11) serverMessage();if (obj .getClass() .getName() .equals(l,Chat") serverChat();if (obj .getClass() .getName() .equals(l,Exit") serverExit(); catch (IOException e) System.out.println(e); catch (ClassNotFoundException el) System.out.println("讀對象發(fā)生錯誤!" + el)
35、; finally try netClient.close(); catch (IOException e) System.out.println(e);*登錄處理*/SuppressWarnings("deprecation")public void serverLogin() try Cus to me” die ntM essage2 = (Customer) obj;/讀文件FilelnputStream file3 = new FilelnputStream("use”txt")ObjectlnputStream objlnputl = new
36、Objec tlnp utSvList = (Vector) objlnputl.readObject();int find = 0; /查找判斷標志/ System.out.println(find);for (int i = 0; i < vListsize(); i+) Register_Customer reg = (RegisvList elementAt(i);if (reg.custName.equals(clientMessage2custName) find = 1;if(!regcustPasswordequals(clientMessage2custPassword
37、) toClient. println("密碼不正確");break; else 25/判斷是否己經(jīng)登錄int loginlag = 0;for (int a = 0; a < userOnlinesize(); a+) / chenminString _custName = (Customen) userOnlineelementAt(a) custName;if(dientMessage2 custNameequals(_custName) login= 1;break;if (userOnline.size() >= 50) toClient.printl
38、n("登錄人數(shù)過多,請稍候再試“);break;if (login_flag = 0) dientMessage2.custHead = reg.head;/ getUserHeadByName(clientMessage2 custName);userOnline addElement(dientMessage2);Date t 二 new Date();log (11 用戶"+ clientMessage2. custName + "登錄成功,'+ "登錄時間:"+ t toLocam:“ng() +”n”);freshServer
39、UserList();break; else toClient. println("該用戶己登錄”); else continue;if (find = 0) toClient. printlnC沒有這個用戶,請先注冊”);file3close();objlnputl.close();fromClient close(); catch (ClassNotFoundException e) System.out.println(e); catch (IOException e) Systen.out printIn(e);28/*登錄處理* throws Exception*/Supp
40、ressWarnings("deprecation")public void serverLoginDB() try Customer dientMessage2 = (Customer) obj;String name = dientMessage2.custName;String pass = dientMessage2.custPassword;String sql = "select * from yonghu where custName='" + name ResultSet rs = DBexecuteQuery(sql);Syst
41、em.out.pnintln("sql:" + sql);boolean login 二 false;String head="while (rs.next() String ps=rs getString("custPassword").toString();System.out.printin("pass: ,+pass+H");System.out. printin("ps: ,+ps+"");30if (psequals(passtoStning() login 二 true;Syste
42、m out printIn(“l(fā)ogined:”);System.out.println("compareTo:H+ps compareTo(pass);head=rs getstring("head");System. out. printin(Hhead: "+rs.getString( ''head");System.out.printIn("login:H+login);if (!login) toClient. println("密碼不正確");return;/判斷是否己經(jīng)登錄int lo
43、gin_flag = 0;for (int a = 0; a < userOnline.size(); a+) String _custName = (Customer)userOnline.elementAt(a) custName;if (dientMessage2.custNameequal.s(_custName) login_flag = 1;break;32if (userOnline.size() >= 50) toClient. printing登錄人數(shù)過多,請稍候再試”);return;if (login_flag = 0) System out pnintin(
44、"head:"+head);dientMessage2.custHead 二head;/getllserHeadByName(clie ntMessage2 cus tName);userOnline.addElement(clientMessage2);toClient. println("登錄成功");Date t = new Date();log("用戶"+ clientMessage2.custName + "登錄成功,"+ 登錄時間:”+ t toLocaleStFing() + "n"
45、;);freshServerUserList();return; else toClient.println("該用戶已登錄”);fromClient close(); catch (Exception e) 33e printStackTrace();/*刷新服務器日志窗體在線列表*/private void freshServerllserList() String userList 二 new String50;Customer cus = null;for (int j = 0; j < userOnline.size(); j+) cus = (Customen) u
46、serOnline.get(j); userListj = cus.custName;sFrame1istsetListData(use“List);sFrametxtNumber.setTex+ userOnline.size();sFrame. lblUserCount. set Text (11 當前在線人數(shù):"+userOnline.size();/ System.out.printin("fresh ok”);/*注冊處理*/SuppressWarnings( "unchecked"deprecation" )34public voi
47、d serverRegiste() int flag = 0; /是否ill名判斷標志Regis 七"_351:01«0廣 die nt Message = (Regis ter_Customer) obj; File fList = new File(Huser.txt");if (fList.length() != 0)/判斷是否是第一個注冊用戶ObjectInputStream objlnput = new ObjectlnputStream( new FileInputStream(fList);vList = (Vector) objlnput.read
48、Object();/判斷是否有重名for (int i = 0; i < vListsize(); i+) Regis ter'Customer' reg = (Register_Cus to me”) vListelementAt(i);if (regcustName.equals(cl.ientMessage.custName) toClient. printin(“注冊名重復,請另外選擇“);flag = 1;break; else if (reg.custName.equals("所有人") toClient. printing禁止使用此注冊名
49、,請另外選擇”); flag = 1;break;35*注冊處理*/SuppressWarnings( "unchecked", "deprecation" )public void serverRegisteDB() try int flag = 0; /是否重名判斷標志Regisdie ntM essage = (Regis ter_Cus to men) obj;String sql = "select * from yonghu where custName='H+ clientMessage.custName + H'
50、ResultSet rs = DBexecuteQuery(sq1);System.out.println("sql:" + sql);boolean reg = false;while (rs.next() reg = true;ResultSetMetaData rsmd = rs.getMetaData();int numberOfColumns = rsmd.getColumnCount();for(int i=l;i<=numberOfColumns;i+)String me=rsmd.getColumnName(i);String v=rs.getStni
51、ng(i);System.out.println(me+":H+v);33System.out.println();System out printIn(” reg:H+reg);訐(reg) toClient. printin(“注冊名重復,請另外選擇”); return;if (clientMessage.custName.equals("所有人")toClient. printin(“禁止使用此注冊名,請另外選擇”); return;sql = "insert intoyonghu(custNamecustPasswordagesexemail,h
52、ead) values('"+ clientMessage.custName+ j 11+ die nt Message cus tPasswond+ clientMessage.age+ clientMessage.sex+ clientMessage.email+ ""Z11 + clientMessage. head + ,)u;System.out.printIn("c:"+sql);34DB executeUpdate(sql);toClient. print In (clientMes sage. custName + &q
53、uot;注冊成功”);Date t 二 new Date();log(u用戶"+ clientMessage.custName + "注冊成功,"+ "注冊 時間:”+ t toLocaleStping()+ 卵門H);fromClient close(); catch (Exception e) e printStackTrace();System.out println(e);/*發(fā)送信息處理*/public void serverMessage() try Message mess = new Message();mess.usenOnLine =
54、 userOnline;mess.chat 二 usenChat;messti 二 sFrame.ti;mess .serverMessage = ,H + sFrame serverMessage;ObjectOutputStream outputstream = newObjectOutputStream(netClientgetOutputStream();outputstream.writeObject(Message) mess);netClient close();outputstream close(); catch (IOException e) /*增加信息處理*/publi
55、c void serverChat() /將接收到的對象值賦給聊天信息的序列化對象Chat cObj = new Chat();cObj = (Chat) obj;/ chenmincObj.chatMessage = WordFilte”. fiLter(cObj.chatMessage); chatLog(cObj);/將聊夭信息的序列化對象填加到保存聊尺信息的欠量中userChat.addElement(Chat) cObj);return;*用戶退出處理*/SuppressWarnings("deprecation")public void serverExit() Exit exit = new Exit();exit = (Exit) obj;removeUser(exit);/ chenminif (sFrameti
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年分期付款信用協(xié)議
- 2025年衛(wèi)浴產(chǎn)品設計合同
- 中國阿奇霉素腸溶片市場全面調(diào)研及行業(yè)投資潛力預測報告
- 2025版木材認證機構(gòu)服務采購合同示范3篇
- 二零二五年度公司股權(quán)激勵項目財務規(guī)劃與預算合同3篇
- 2025年度儲煤場租賃與煤炭交易結(jié)算服務合同3篇
- 2025年度新能源行業(yè)競業(yè)限制解除通知
- 2025年度私人車位租賃與車位租賃期限續(xù)簽合同
- 2025年度車庫使用權(quán)轉(zhuǎn)讓及車位租賃權(quán)分配協(xié)議
- 2025年度百貨行業(yè)電商直播及銷售合作合同
- 2024多級AO工藝污水處理技術(shù)規(guī)程
- 2024年江蘇省鹽城市中考數(shù)學試卷真題(含答案)
- DZ∕T 0287-2015 礦山地質(zhì)環(huán)境監(jiān)測技術(shù)規(guī)程(正式版)
- 2024年合肥市廬陽區(qū)中考二模英語試題含答案
- 質(zhì)檢中心制度匯編討論版樣本
- 藥娘激素方案
- 提高靜脈留置使用率品管圈課件
- GB/T 10739-2023紙、紙板和紙漿試樣處理和試驗的標準大氣條件
- 《心態(tài)與思維模式》課件
- C語言程序設計(慕課版 第2版)PPT完整全套教學課件
- 危險化學品企業(yè)安全生產(chǎn)標準化課件
評論
0/150
提交評論