




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 . . . 課程設(shè)計(jì)說明書 名稱_手持移動(dòng)設(shè)備應(yīng)用開發(fā)課程設(shè)計(jì)_2011年12月27日 至 2011年12月29日 共1 周院 系_計(jì)算機(jī)工程系_班 級(jí)_07計(jì)算機(jī)應(yīng)用(對(duì)口)_姓 名_系主任_ _教研室主任_ _ 指導(dǎo)教師_23 / 25目錄一、課程設(shè)計(jì)目的與要求11.1 設(shè)計(jì)目的11.2 設(shè)計(jì)要求11.3 設(shè)計(jì)容簡(jiǎn)介1二、開發(fā)環(huán)境與系統(tǒng)流程22.1開發(fā)平臺(tái)構(gòu)建22.1.1環(huán)境簡(jiǎn)介22.1.2安裝步驟22.2系統(tǒng)流程圖5三、詳細(xì)設(shè)計(jì)與分析63.1主界面程序設(shè)計(jì)63.1.1 SocketMIDlet功能簡(jiǎn)介63.1.2界面截圖63.1.3界面關(guān)鍵代碼和描述63.2服務(wù)器端界面程序設(shè)計(jì)73.2
2、.1Server功能簡(jiǎn)介73.2.2界面截圖73.2.3界面關(guān)鍵代碼和描述83.3服務(wù)器端接收信息程序設(shè)計(jì)83.3.1功能簡(jiǎn)介83.3.2界面截圖83.3.3界面關(guān)鍵代碼和描述93.4客戶端主界面設(shè)計(jì)103.4.1功能簡(jiǎn)介103.4.2界面截圖113.4.3界面關(guān)鍵代碼和描述113.5客戶端發(fā)送/接收信息設(shè)計(jì)113.5.1功能簡(jiǎn)介113.5.2界面截圖123.5.3界面關(guān)鍵代碼和描述12四、課程設(shè)計(jì)總結(jié)14五、參考文獻(xiàn)14附錄(源程序代碼)15一、課程設(shè)計(jì)目的與要求1.1 設(shè)計(jì)目的本課程設(shè)計(jì)課題是為配合手持設(shè)備移動(dòng)應(yīng)用開發(fā)課程教學(xué)所開設(shè)的實(shí)踐性環(huán)節(jié)課程,旨在要求學(xué)生綜合掌握Eclipse集成開
3、發(fā)環(huán)境中基于J2ME技術(shù)的手持移動(dòng)設(shè)備應(yīng)用開發(fā)的完整過程,特別是掌握用戶界面設(shè)計(jì)、基于Socket網(wǎng)絡(luò)連接的程序設(shè)計(jì)方法,進(jìn)一步熟悉WTK文檔的使用,強(qiáng)化學(xué)生面向職業(yè)應(yīng)用的綜合程序設(shè)計(jì)能力。1.2 設(shè)計(jì)要求(一)掌握Eclipse集成開發(fā)環(huán)境中基于J2ME技術(shù)的手持移動(dòng)設(shè)備應(yīng)用開發(fā)的完整開發(fā)流程;(二)掌握課程設(shè)計(jì)課題的工作原理,完成系統(tǒng)分析與相應(yīng)的程序設(shè)計(jì)工作,包括:(1)指定服務(wù)器端、客戶端與通信端口號(hào)功能的主界面程序設(shè)計(jì);(2)服務(wù)器端界面程序設(shè)計(jì)、服務(wù)器端讀取客戶發(fā)送信息程線程設(shè)計(jì);(3)客戶端界面程序設(shè)計(jì)、客戶端發(fā)送/接收信息線程設(shè)計(jì)。(三)完成課程設(shè)計(jì)說明書編寫。1.3 設(shè)計(jì)容簡(jiǎn)介
4、本課程設(shè)計(jì)參照WTK文檔實(shí)現(xiàn)一個(gè)基于Socket網(wǎng)絡(luò)編程協(xié)議的智能手機(jī)J2ME網(wǎng)絡(luò)通信應(yīng)用程序,該系統(tǒng)同時(shí)包含服務(wù)器和客戶端功能,可以根據(jù)通信需要啟用服務(wù)器端功能或客戶端功能,可以指定通信端口號(hào),客戶端與服務(wù)器之間的通信由獨(dú)立的線程完成。二、開發(fā)環(huán)境與系統(tǒng)流程2.1開發(fā)平臺(tái)構(gòu)建2.1.1環(huán)境簡(jiǎn)介Sun公司為了使Java語言進(jìn)入嵌入式系統(tǒng)和消費(fèi)類電子產(chǎn)品領(lǐng)域,在Java2中推出了J2ME,并提供了一套完整的J2ME開發(fā)工具,可以在PC機(jī)上完成J2ME應(yīng)用程序開發(fā)、調(diào)試、預(yù)校驗(yàn)和運(yùn)行等工作。使用J2ME的CLDC/MIDP編寫的Java程序被稱為MIDlet。為了開發(fā)MIDlet應(yīng)用程序,選用 W
5、indows操作系統(tǒng)平臺(tái)。在此平臺(tái)上安裝相關(guān)軟件:JDK、SunWTK、Eclipse、EclipseME插件、WTK插件。2.1.2安裝步驟EclipseME作為Eclipse一個(gè)插件,致力于幫助開發(fā)者開發(fā)J2ME應(yīng)用程序。EclipseME并不為開發(fā)者提供無線設(shè)備模擬器,而將各手機(jī)廠商的實(shí)用模擬器緊密連接到Eclipse開發(fā)環(huán)境中,為開發(fā)者提供一種無縫統(tǒng)一的集成開發(fā)環(huán)境。在 /downloads/index.php上下載Eclipse。在oracle./technetwork/java/download-135801.html/上下載Wireless Toolkit。
6、安裝步驟:l 安裝jdk-7u1-windows-i586.exe(設(shè)置好系統(tǒng)環(huán)境變量)l 安裝WTK 2.5正式版sun_java_wireless_toolkit-2.5.2_01-win.exel 解壓安裝eclipse-SDK-3.7.1-win32.zipl 加載eclipseme.feature_1.7.9_site.zip插件和,具體步驟如下:通過菜單Window->Preferences的J2ME選項(xiàng)中add wireless toolkit整合eclipse和WTK。l 加載WTK插件l 安裝Eclipse簡(jiǎn)體中文語言包2.2系統(tǒng)流程圖主界面服務(wù)器端客戶端監(jiān)聽某個(gè)端口接
7、受客戶端連接獲得與客戶端連接的Socket打開輸入流打開輸出流通過輸出流發(fā)送數(shù)據(jù)通過輸入流接收數(shù)據(jù)連接服務(wù)器端口打開輸入流打開輸出流通過輸入流接收數(shù)據(jù)通過輸出流發(fā)送數(shù)據(jù)是否結(jié)束是否結(jié)束斷開連接斷開連接結(jié)束結(jié)束是是否否發(fā)送端三、詳細(xì)設(shè)計(jì)與分析3.1主界面程序設(shè)計(jì)3.1.1 SocketMIDlet功能簡(jiǎn)介主界面定義了相關(guān)端口號(hào),類型名與顯示功能,指定服務(wù)器端、客戶端與通信端口號(hào)的設(shè)計(jì)。3.1.2界面截圖3.1.3界面關(guān)鍵代碼和描述該程序段實(shí)現(xiàn)了主界面顯示效果的功能,主要程序段如下: public SocketMIDlet() display = Display.getDisplay(this);
8、/獲得系統(tǒng)屏幕f = new Form("Socket Demo");/創(chuàng)建界面的標(biāo)題cg = new ChoiceGroup("Please select peer", Choice.EXCLUSIVE, names,null);/創(chuàng)建兩個(gè)單選按鈕f.append(cg);portField = new TextField("Port number:", String.valueOf(DEFAULT_PORT),6, TextField.NUMERIC);/創(chuàng)建一個(gè)不超過6個(gè)字符的文本框?qū)ο骹.append(portField);f
9、.addCommand(exitCommand);f.addCommand(startCommand);/把命令按鈕添加到Form窗口中f.setCommandListener(this);/為當(dāng)前窗口設(shè)置監(jiān)聽器display.setCurrent(f); 3.2服務(wù)器端界面程序設(shè)計(jì)3.2.1Server功能簡(jiǎn)介服務(wù)器端界面程序設(shè)計(jì)、服務(wù)器端讀取客戶發(fā)送信息程線程設(shè)計(jì)。3.2.2界面截圖3.2.3界面關(guān)鍵代碼和描述該程序段實(shí)現(xiàn)了服務(wù)器端界面顯示的功能,主要程序段如下:public Server(SocketMIDlet m, int p) parent = m;port = p;display
10、 = Display.getDisplay(parent);f = new Form("Socket Server");si = new StringItem("Status:", " ");tf = new TextField("Send:", "", 30, TextField.ANY);f.append(si);f.append(tf);f.addCommand(exitCommand);f.setCommandListener(this);display.setCurrent(f); 3
11、.3服務(wù)器端接收信息程序設(shè)計(jì)3.3.1功能簡(jiǎn)介打開兩個(gè)模擬器,另外一個(gè)當(dāng)作Server端,一個(gè)當(dāng)作Client 端,Client端向Server端發(fā)送“1231AD”。3.3.2界面截圖3.3.3界面關(guān)鍵代碼和描述該程序段實(shí)現(xiàn)了服務(wù)器端發(fā)送/接收信息的功能,主要程序段如下:public void start() Thread t = new Thread(this);t.start(); /啟動(dòng)線程,防止網(wǎng)絡(luò)堵塞 public void run() String portString = String.valueOf(port);try si.setText("Waiting for
12、 connection on port "+portString); scn = (ServerSocketConnection) Connector.open("socket:/:" + portString); / 等待連接 sc = (SocketConnection) scn.acceptAndOpen(); si.setText("Connection accepted"); is = sc.openInputStream();/打開輸入流 os = sc.openOutputStream();/打開輸出流 sender = new
13、Sender(os); / Allow sending of messages only after Sender is created f.addCommand(sendCommand); while (true) StringBuffer sb = new StringBuffer();int c = 0;while (c = is.read() != 'n') && (c != -1) /判斷讀取的字符 sb.append(char) c);if (c = -1) break;si.setText("Message received - &quo
14、t; + sb.toString(); stop(); si.setText("Connection is closed"); f.removeCommand(sendCommand); catch (IOException ioe) if (ioe.getMessage().equals("ServerSocket Open") Alert a = new Alert("Server", "Port " + portString+ " is already taken.", null, Ale
15、rtType.ERROR);a.setTimeout(Alert.FOREVER);a.setCommandListener(this);display.setCurrent(a); else if (!stop) ioe.printStackTrace(); catch (Exception e) e.printStackTrace(); public void commandAction(Command c, Displayable s) if (c = sendCommand) && !parent.isPaused() sender.send(tf.getString(
16、);/發(fā)送數(shù)據(jù)if (c = Alert.DISMISS_COMMAND) | (c = exitCommand) parent.notifyDestroyed(); parent.destroyApp(true);/退出 3.4客戶端主界面設(shè)計(jì)3.4.1功能簡(jiǎn)介客戶端界面程序設(shè)計(jì)、客戶端發(fā)送/接收信息線程設(shè)計(jì)3.4.2界面截圖3.4.3界面關(guān)鍵代碼和描述該程序段實(shí)現(xiàn)了客戶端面界面顯示的功能,主要程序段如下:public Client(SocketMIDlet m, int p) parent = m;port = p;display = Display.getDisplay(parent);
17、f = new Form("Socket Client");si = new StringItem("Status:", " ");tf = new TextField("Send:", "", 30, TextField.ANY);f.append(si);f.append(tf);f.addCommand(exitCommand);f.addCommand(sendCommand);f.setCommandListener(this);display.setCurrent(f);3.5客戶端
18、發(fā)送/接收信息設(shè)計(jì)3.5.1功能簡(jiǎn)介服務(wù)器端接受到Client 端發(fā)送的消息:“1231AD”,并發(fā)送一個(gè)消息給Client端:“GJ1JMAMJM”3.5.2界面截圖3.5.3界面關(guān)鍵代碼和描述該程序段實(shí)現(xiàn)了客戶端發(fā)送/接收信息的功能,主要程序段如下:public void start() Thread t = new Thread(this);t.start(); public void run() String portString = String.valueOf(port);try sc = (SocketConnection) Connector.open("socket
19、:/localhost:" + portString); si.setText("Connected to server on port "+portString); is = sc.openInputStream(); os = sc.openOutputStream(); / Start the thread for sending messages - see Sender's main / comment for explanation sender = new Sender(os); / Loop forever, receiving data
20、while (true) StringBuffer sb = new StringBuffer();int c = 0;while (c = is.read() != 'n') && (c != -1) sb.append(char) c);if (c = -1) break;/ 顯示發(fā)過來的信息si.setText("Message received - " + sb.toString(); stop(); si.setText("Connection closed"); f.removeCommand(sendComm
21、and); catch (ConnectionNotFoundExceptionfe) Alert a = new Alert("Client", "Please run Server MIDlet first on port " + portString, null, AlertType.ERROR); a.setTimeout(Alert.FOREVER); a.setCommandListener(this); display.setCurrent(a); catch (IOException ioe) if (!stop) ioe.printSt
22、ackTrace(); catch (Exception e) e.printStackTrace();四、課程設(shè)計(jì)總結(jié)這次課程設(shè)計(jì)做的是客戶端與服務(wù)器信息收發(fā)系統(tǒng),系統(tǒng)分為練習(xí)和測(cè)試兩部分,系統(tǒng)中采用的技術(shù)主要利用MyEclipse集成開發(fā)環(huán)境與WTK文檔。socket通信,基本原理就是創(chuàng)建socket,然后連接、監(jiān)聽、接受、發(fā)送、關(guān)閉等等。在本次實(shí)踐中,給我印象最為深刻的是通過運(yùn)行繼承于MIDlet的主程序看結(jié)果,再來分析程序的界面設(shè)計(jì)和其中的通信過程,遇到不懂的知識(shí)查閱WTK文檔,或者從網(wǎng)上查查了很多資料,如ChoiceGroup 類的getSelectedIndex()方法Choice
23、.EXCLUSIVE的意義等。對(duì)低級(jí)界面的移動(dòng)應(yīng)用軟件的設(shè)計(jì)使我更好的掌握J(rèn)ava編程和J2ME程序調(diào)試在基本技能。更讓我掌握設(shè)計(jì)移動(dòng)應(yīng)用軟件的基本思路和方法,提高運(yùn)用J2ME解決實(shí)際問題的能力。通過這次課程設(shè)計(jì),我收獲的不僅僅是課程上的知識(shí)得到實(shí)際應(yīng)用,還有編程的基本習(xí)慣和開發(fā)系統(tǒng)時(shí)應(yīng)注意的流程。體現(xiàn)出自己?jiǎn)为?dú)設(shè)計(jì)的能力以與綜合運(yùn)用知識(shí)的能力,體會(huì)了學(xué)以致用、突出自己勞動(dòng)成果的喜悅心情,從中發(fā)現(xiàn)自己平時(shí)學(xué)習(xí)的不足和薄弱環(huán)節(jié),從而加以彌補(bǔ)。在此感我們的賈老師,老師嚴(yán)謹(jǐn)細(xì)致、一絲不茍的作風(fēng)一直是我工作、學(xué)習(xí)中的榜樣;老師循循善誘的教導(dǎo)和不拘一格的思路給予我無盡的啟迪;這次課程設(shè)計(jì)的每個(gè)細(xì)節(jié)和每個(gè)
24、數(shù)據(jù),都離不開老師您的細(xì)心指導(dǎo)。而您開朗的個(gè)性和寬容的態(tài)度,幫助我能夠很順利的完成了這次課程設(shè)計(jì)。五、參考文獻(xiàn)1 光蘭.基于J2ME的手機(jī)日志工作系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn).信息工程學(xué)院,2007.2 高明娟. 基于J2ME手機(jī)考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).信息工程學(xué)院,2007.附錄(源程序代碼)SocketMIDletpackage socket;import javax.microedition.lcdui.Choice;import javax.microedition.lcdui.ChoiceGroup;import javax.microedition.lcdui mand;import javax
25、.microedition.lcdui mandListener;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Form;import javax.microedition.lcdui.TextField;import javax.microedition.midlet.MIDlet;public class SocketMIDlet extends MIDlet implements CommandListe
26、ner private static final int DEFAULT_PORT = 5000; private static final String SERVER = "Server" private static final String CLIENT = "Client" private static final String names = SERVER, CLIENT ; private static Display display; private Form f; private ChoiceGroup cg; private boole
27、an isPaused; private TextField portField; private Server server; private Client client; private Command exitCommand = new Command("Exit", Command.EXIT, 1); private Command startCommand = new Command("Start", Command.ITEM, 1); public SocketMIDlet() display = Display.getDisplay(thi
28、s);f = new Form("Socket Demo");cg = new ChoiceGroup("Please select peer", Choice.EXCLUSIVE, names,null);f.append(cg);portField = new TextField("Port number:", String.valueOf(DEFAULT_PORT),6, TextField.NUMERIC);f.append(portField);f.addCommand(exitCommand);f.addCommand(s
29、tartCommand);f.setCommandListener(this);display.setCurrent(f); public boolean isPaused() return isPaused; public void startApp() isPaused = false; public void pauseApp() isPaused = true; public void destroyApp(boolean unconditional) if (server != null) server.stop();if (client != null) client.stop()
30、; public void commandAction(Command c, Displayable s) if (c = exitCommand) destroyApp(true); notifyDestroyed(); else if (c = startCommand) String name = cg.getString(cg.getSelectedIndex(); int port = Integer.parseInt(portField.getString(); if (name.equals(SERVER) server = new Server(this, port);serv
31、er.start(); else client = new Client(this, port);client.start(); Clientpackage socket;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import javax.microedition.io.ConnectionNotFoundException;import javax.microedition.io.Connector;import javax.microedition.io.SocketC
32、onnection;import javax.microedition.lcdui.Alert;import javax.microedition.lcdui.AlertType;import javax.microedition.lcdui mand;import javax.microedition.lcdui mandListener;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Form;import
33、javax.microedition.lcdui.StringItem;import javax.microedition.lcdui.TextField;public class Client implements Runnable, CommandListener private SocketMIDlet parent; private Display display; private Form f; private StringItem si; private TextField tf; private boolean stop; private Command sendCommand
34、= new Command("Send", Command.ITEM, 1); private Command exitCommand = new Command("Exit", Command.EXIT, 1); InputStream is; OutputStream os; SocketConnection sc; Sender sender; private int port; public Client(SocketMIDlet m, int p) parent = m;port = p;display = Display.getDisplay
35、(parent);f = new Form("Socket Client");si = new StringItem("Status:", " ");tf = new TextField("Send:", "", 30, TextField.ANY);f.append(si);f.append(tf);f.addCommand(exitCommand);f.addCommand(sendCommand);f.setCommandListener(this);display.setCurrent(
36、f); /* * Start the client thread */ public void start() Thread t = new Thread(this);t.start(); public void run() String portString = String.valueOf(port);try sc = (SocketConnection) Connector.open("socket:/localhost:" + portString); si.setText("Connected to server on port "+portS
37、tring); is = sc.openInputStream(); os = sc.openOutputStream(); / Start the thread for sending messages - see Sender's main / comment for explanation sender = new Sender(os); / Loop forever, receiving data while (true) StringBuffer sb = new StringBuffer();int c = 0;while (c = is.read() != 'n&
38、#39;) && (c != -1) sb.append(char) c);if (c = -1) break;/ Display message to usersi.setText("Message received - " + sb.toString(); stop(); si.setText("Connection closed"); f.removeCommand(sendCommand); catch (ConnectionNotFoundExceptionfe) Alert a = new Alert("Client
39、", "Please run Server MIDlet first on port " + portString, null, AlertType.ERROR); a.setTimeout(Alert.FOREVER); a.setCommandListener(this); display.setCurrent(a); catch (IOException ioe) if (!stop) ioe.printStackTrace(); catch (Exception e) e.printStackTrace(); public void commandActi
40、on(Command c, Displayable s) if (c = sendCommand) && !parent.isPaused() sender.send(tf.getString();if (c = Alert.DISMISS_COMMAND) | (c = exitCommand) parent.notifyDestroyed(); parent.destroyApp(true); /* * Close all open streams */ public void stop() try stop = true; if (sender != null) send
41、er.stop(); if (is != null) is.close(); if (os != null) os.close(); if (sc != null) sc.close(); catch (IOException ioe) Senderpackage socket;import java.io.IOException;import java.io.OutputStream;public class Sender extends Thread private OutputStream os; private String message; public Sender(OutputS
42、tream os) this.os = os;start(); public synchronized void send(String msg) message = msg;notify(); public synchronized void run() while (true) / If no client to deal, wait until one connects if (message = null) try wait(); catch (InterruptedException e) if (message = null) break; try os.write(message
43、.getBytes();os.write("rn".getBytes(); catch (IOException ioe) ioe.printStackTrace(); / Completed client handling, return handler to pool and / mark for wait message = null; public synchronized void stop() message = null;notify(); Serverpackage socket;import java.io.IOException;import java.
44、io.InputStream;import java.io.OutputStream;import javax.microedition.io.Connector;import javax.microedition.io.ServerSocketConnection;import javax.microedition.io.SocketConnection;import javax.microedition.lcdui.Alert;import javax.microedition.lcdui.AlertType;import javax.microedition.lcdui mand;imp
45、ort javax.microedition.lcdui mandListener;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Form;import javax.microedition.lcdui.StringItem;import javax.microedition.lcdui.TextField;public class Server implements Runnable, CommandList
46、ener private SocketMIDlet parent; private Display display; private Form f; private StringItem si; private TextField tf; private boolean stop; private Command sendCommand = new Command("Send", Command.ITEM, 1); private Command exitCommand = new Command("Exit", Command.EXIT, 1); In
47、putStream is; OutputStream os; SocketConnection sc; ServerSocketConnection scn; Sender sender; private int port; public Server(SocketMIDlet m, int p) parent = m;port = p;display = Display.getDisplay(parent);f = new Form("Socket Server");si = new StringItem("Status:", " ");tf = new TextField("Send:", "", 30, TextField.ANY);f.append(si);f.append(tf);f.addCommand(exitCommand);f.setCommandListener(this);display.setCurrent(f); public void start() Thread t = new Thread(this);t.start(); publ
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 城市公園建設(shè)與管理合作協(xié)議
- 教育培訓(xùn)領(lǐng)域在線教育平臺(tái)內(nèi)容優(yōu)化策略研究
- 客戶關(guān)系管理解決方案實(shí)施報(bào)告
- 農(nóng)業(yè)產(chǎn)業(yè)鏈延伸作業(yè)指導(dǎo)書
- 干砌擋土墻現(xiàn)場(chǎng)質(zhì)量檢驗(yàn)報(bào)告單
- 國際貿(mào)易術(shù)語題庫
- 院感知識(shí)崗前培訓(xùn)
- 特色漁業(yè)資源經(jīng)營合同
- 中國傳統(tǒng)藝術(shù)之美解讀
- 《創(chuàng)新思維訓(xùn)練:小學(xué)科學(xué)創(chuàng)新活動(dòng)課教案》
- GB 45184-2024眼視光產(chǎn)品元件安全技術(shù)規(guī)范
- 2025年湖南科技職業(yè)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 2025年新人教版八年級(jí)下冊(cè)物理全冊(cè)教案
- 《建筑電氣設(shè)計(jì)》課件
- 品管圈PDCA案例-介入中心提高手術(shù)患者交接記錄書寫合格率醫(yī)院品質(zhì)管理成果匯報(bào)
- 第十七屆山東省職業(yè)院校技能大賽中職組“西式烹飪”賽項(xiàng)規(guī)程
- 華東師范大學(xué)《外國人文經(jīng)典(下)》2022-2023學(xué)年第一學(xué)期期末試卷
- 儲(chǔ)能電池模組PACK和系統(tǒng)集成項(xiàng)目可行性研究報(bào)告
- 2024年安徽省公務(wù)員錄用考試《行測(cè)》真題及解析
- 牙慢性損傷-楔狀缺損
- JTJ034-2000 公路路面基層施工技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論