版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖南工业大学课程设计料袋20132014学年第1学期课程名称网络协议分析指导教师李建设职称副教授学生姓名专业班级网络工程学号题目基于UDP协议网上聊天程序成绩起止日期2013年11月25日2013年12月13日序号材料名称资料数量备注1课程设计任务书2课程设计说明书3456课程设计任务书20132014学年第1学期学院(系、部)计算机与通信学院专业网络工程班级102课程名称:网络工程学生姓名:设计题目:基于UDP协议网上聊天程序指导教师:李建设完成期限:自2013年11月25日至2013年12月13日共3周内容及任务一、设计内容实现一个基于UDP#议的简单的聊天程序,包括服务器和客户端。1 .
2、支持多人聊天。2 .客户端具有图形化用户界面。二、设计任务课程设计说明书(纸质+电子版),内容包括:设计内容、系统分析(包括可行性分析、需求分析等)及功能分析;系统设计(要求画出系统整体功能框图、流程图、并给出相应地关键的代码且对所使用的主要数据结构进行说明等。)、设计总结(评价/遇到的问题/体会/建议等)、使用说明等。三、设计要求1 .按功能要求开发系统,能正确运行。程序代码书写规范,有充足的注释。2 .课程设计所使用的编程语言任选,但建议使用C或C+;3 .绿色软件:程序运行/、需安装,避免写系统和注册表;进度安排起止日期工作内容2013-11-252013-11-30选题2013-12-
3、12013-12-3系统分析和设计;2013-12-42013-12-8熟悉软件开发工具、编码系统、系统测试2013-12-92013-12-13撰写并提交课程设计说明书(含电子文档)、源程序等。主要参考资料1(美)W.RechardSteven著,范建华等译,TCP/IP详解卷1:协议,机械工业出版社,2000.42(美)DouglasE.Comer著林瑶等译,用TCP/IP进行网际互联第1卷-原理、协议与结构(第5版,电子工业出版社)2007.2;3(何)AndrewS.Tanenbaum者,潘爱民译.计算机网络(第4版),清华人学出版社,20044谢希彳著.计算机网络(第5版),电子工业
4、出版社,2008.15吴功宜等著.计算机网络课程设计,机械工业出版社,2005指导教师(签字):年月日系(教研室)主任(签字):年月程设计说明书课程名称:网络协议分析设计题目:基于UDPW议网上聊天程序专业:班级:学生姓名:学号:指导教师:李建设2013年12月13日目录1课程设11简介41.1 课程设计的目的41.2 课程设1f内容42课程设计实现过程52.1 协议原理52.2 客户机/服务器模式72.3 关键技术82.4 流程图102.5 系统结构图112.6 程序调试及界面效果图112.7 源代码153设计总结224参考文献231课程设计简介1.1 课程设计的目的开发一个专用于实现两台计
5、算机之间即时通讯的软件,以方便两台或两台以上的计算机之间信息的交流。,在连接并通信时,尤其是近程的即时通讯,彻底的脱离了远程的服务器,避免了和远程服务器连接时过多的浪费网络资源。并且避免了服务器忙或与服务器无法连接时,浪费过多时间用于和服务器建立连接!因此,这个软件是极具适应性和实用性的即时通讯软件!本次课程设计的目的是学习基于UDF议实现网络聊天程序,已达到学会面向无连接方式的程序设计方法,并理解网络编程中面向无连接的概念。1.2 课程设计内容1 .实现一个基于UDFW议的简单的聊天程序,包括服务器和客户端。2 .支持多人聊天。3 .客户端具有图形化用户界面。2课程设计实现过程2.1协议原理
6、UDP议的全称是用户数据报协议,在网络中它与TCP议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层一一传输层,处于IP协议的上一层。UDPt不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDPffl来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDPB议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDPW然不失为一项非常实用和可行的网络传输层协议。UDPOSI参考模型中一种无连接的传输层协议
7、,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成,提供面向事务的简单不可靠信息传送服务。UDP协议基本上是IP协议与上层协议的接口。UDP议适用端口分别运行在同一台设备上的多个应用程序。与所熟知的TCP(传输控制协议)协议一样,UDPft、议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UD所口TCWWS于传输层协议。UDP议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。UD皿无连接的,即发送数据之前不需要建立连接(当然
8、发送数据结束时也没有连接可释放)因此减少了开销和发送数据之前的时延。UDPfg用的是尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。UD皿面向报文的。发送方的UDP寸应程序交下来的报文,在添加首部后就向下交付给IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。UD皿定义用来在互连网络环境中提供数据报交换的计算机通信的协议。此协议默认是IP下层协议。此协议提供了向另一用户程序发送信息的最简便的协议机制,不需要连接确认和保护复制,所以在软件实现上比较简单,需要的内存空间比起TCPffi对较小。UDFfe头由4个域组成,其中每个域各占用2个字节。(
9、1)源端口号(16位):UD嗷据包的发送方使用的端口号。(2)目标端口号(16位):UDPt据包的接收方使用的端口号。UDPB议使用端口号为不同的应用保留其各自的数据传输通道。UD所口rap协议正是采用这一机制,实现对同一时刻内多项应用同时发送和接收数据的支持。(3)数据报长度(16位)。数据报的长度是指包括报头和数据部分在内的总的字节数。理论上,包含报头在内的数据包的最大长度为65535字节。不过,一些实际应用往往会限制数据包的大小,有时会降低到8192字节。(4)校验值(16位)。UDPft、议使用包头中的校验值来保证数据的安全。机进程服务器一方,UDP®用程序动作如下:(1)打
10、开通信信道(中请一套接字),通知本地主机在某一保留端口接收客户机请求。(2)等待客户请求到达指定端口。(3)接收到请求,启动一新进程处理用户请求,同时释放旧进程以响应新的客户请求,一旦服务完成,关闭新进程与客户的通信链路。(4)继续等待客户机请求。(5)如果不想响应客户机请求,关闭服务器进程。2.3关键技术Socket又称作套接字,它是使用标准Unix文件描述符(filedescriptor)和其它程序通讯的方式。使用send()和recv()让你更好的控制数据传输。在Java网络编程中,socket相当于应用程序的港口码头;在计算机网络中,套接字由ip地址和端口号组成,为进程之间通信提供地址
11、。两个主机进行通信实际上就是两个主机中的应用进程互相通信,应用进程之间的通信又称为端到端的通信。为应用进程之间的通信提供运输服务的是运输层的运输协议,运输层需要有两种不同的运输协议,即面向连接的TCPW无连接的UDP在Java中,用于实现基于UDP的聊天程序,使用两个重要的类(DatagramSocket类和DatagramPacket类)。DatagramSocket类表示用来发送和接收数据报包的套接字。数据报套接字是包投递服务的发送或接收点。每个在数据报套接字上发送或接收的包都是单独编址和路由的。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。在Datagra
12、mSocket上总是启用UDP广播发送。为了接收广播包,应该将DatagramSocket绑定到通配符地址。在某些实现中,将DatagramSocket绑定至U一个更加具体的地址时广播包也可以被接收。DatagramPacket类表示数据报包。数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证。服务程序工作在服务器的某个端口上,一旦启动服务,它将在这个端口上监听,等待客户程序发来请求,当有客户连接到该端口,accept()方法就返回一个Socket对象,可以
13、用该对象获得一个输入输出流。服务器的套接享用服务器套接字类(ServerSocket)来建立。具体实现如下:(1)建立一个服务者,端口为6666。(2)服务者永远等待,一旦客户送来正确的请求,连接至该端口,accept()方法就返回一个Socket对象(3)用返回的Socket对象创建数据输入流类的实例6666。用返回的Socket对象创建数据输出流的实例8888。以上实例in和out是服务者用于从客户接受输入信息和向客户程序发送信息所用。止匕外,还需要用方法receive()和printIn()读取或输出一行数据。(4)在客户端建立Socket对象,并进行异常处理,主机名和端口号与连接的服务
14、器名和提供该服务的服务程序的监听端口必须一致。建立连接后用Socket类提供的Datagramsocket()和Datagrampacket()方法取得输入输出流。在服务器端,获得的输入流是客户端的输出流,而Socket获得的输出流是发向客户端的输入流,在客户端也是这样。获得socket的输入输出流之后,为了便于读写操作,需要在这两个流对象基础上建立易于操作的数据流Datagramsocket,Datagrampacket0然后对输入输出流进行读写操作。在通信结束时关闭socket,以断开连接,释放资源。先关闭对应的输入输出流,再关闭socket本身。2.4流程图服务器端ChatApp_01客
15、户端一一一(192.&B.6融序曲试及界2.6.1 调试前的准备ChatApp_03客户端(8)ChatApp_02客户Mfe6Sl.78)安装jdk1.6.0并在计算机的环境变量中配置好java环境。使用的实验环境是WindowsXP,Eclipse6.0,。使用3太主机进行通信,一台作为服务器,另外两台作为客户端。2.6.2 程序调试过程启动eclipse首先在一台主机上运行服务器端程序,再在另外两台机器上运行客户端程序。然后进入到用户的图形用户界面,输入客户端的IP,进行连接,如果连接成功,则客户端就可以通过与服务器端进行通信,然后服务器转发通信,实现了两个
16、客户端之间的聊天功能。2.6.3 程序运行结果服务器(7)15工1器蝌宣灼国1中强UP掩第闻中日9运行中««)出由曲I.Jj1*ChiitFrvv.D.日MJ1皿B康ChHkFriM_DI3'03即J田QalJrta*j«T4XH$kUmF_iW4瓦*JEE手触口如L间kAoihjava,ifitt-DmitAii?KkeT.二publicStaiver117t晔=tfcET打工砒闻八私修|:3口四或ppckfli.IiartajrwPicktpaditt:'I:BJEMLJOcIchEXEodcHl.DEgimPiakE卬皿
17、营十:jHibll七aE”1。Qlh工电田口他hn拒-jcfcalmvD第"gniscIcEi;66R6,frocket=mDitacraftSaHiet:publicv*i4LiftcnOthK«TjEjrxpt工皿(bk-Ouh+Y=nit.b-ytft1303padcaln«*Da?a(:imf'Kka11iarirayr!aimf.ImhJ,jodfifltrr?cpi,oe<i>Mkfft5:,bjrte-inddiappartet.jetbffta门.StElhj“a!h4d-口口Sin41d*!:,0a£1*.l,iiE
18、t>>"UTF-)jrrf-R-r.praiM-ln(rvrvaved.l.tiiix455=iweiwdjsplitrr):5tniuEip=fjlD;lij-Ec.di"xxIiviBylax("lOF-S").fPKk?1=i»w,Ditifrw*K±4tCdtjdt.lwnth+InvtAddcCiKE.<ip)j,3333>.rjKlittisendIipicEet):publicitAtifvoid.u.n.Cstrir4(ug外ShroudEHcepucmSvEYtt*HATBSlEVBC0.(t
19、ru*fQi毗hi小M大辅才10pW-Ch«rr*w_OIE;导义声明Ai.pa.LialqBelMii.:岛(理*A:DatikpM二91*ekiR:Di'ii$-nAipickat:Dsitipra*C3>.LaetuQSP«iniS;Eiiu:n:2-匚口*-鼻|因申口丁口8W,T号I钳,中小,苑光光照管朝M-曼生甘*.Jwac南用CItHoUmJS用亚字J口yi'dikle-aIB'iiiLjWM>Ki(2flr>ii-7Lt.lflJ,v.:"v.1rifiTfc".rr&1】郎,IJ电132.
20、16民m13?.IfiS.L.Tfl192.16瓦L明I9Z.ee.L.ea192.3EGL1.03I般门隗HI弊,16瓦LdgChatApp_01客户端(8)packAgeChatFrafte_Ol;±Jiapoxtjwa.ioa*;QpublicclassChatApp|booleanpackFraiie=false;ChatApp()(ChatFuaftefrajte=nevif(packFrame)ftne.pack();else:(fE3J1C.validate();/放置窗体在屏幕中央DimenffianscrBBnSize=Dimensionfra
21、neSize=:ChatFcame():=Toifraaif(franeSizei.height>scfraneSizB.height=sc:if(franeSizeuwidth>scrfraneSizfiuwidth.=scr>,frame.setLocation(screen:(screenSizheigh"franeB?etYisible(time):fraraeBvaitforpackets();publicstaticoidmain(SitnevChatAppO;jdChatApp_02客户端(8)TE95F«SI七UJJJ
22、丸E3FlUJ4UHJI电,'E»WW工点出国=|自/:“山I,由国CSiiiFrw'tJlChklAfip.ChktPkiM'i4.jFTb;tlStifVdtfj*1白.t:JUE区歧库jdlclRo_«jCh-LtFr-wa.jwa.IJ7Sarvur.jav-ljiBckagEChatfran.e_0,:+xapurtjays,LPi+,jpublicclassChatApphuultfiui工品1玄白,Ch眈&口。ChaiFaig£rm.r-nevditFsarie();if(packFrwc)fraae.packO.Jb
23、!s=frant喂rTalidate()':/的置置体在屏幕中央DisufinwicjRscreenSize=Toolkit,DiE/FLilcitifiafieSne/(),if(frsne-Siz.?.hei£ht>he-igfrajteSise.heiffht=sctBise.h«i£kIif(frameSiw,width>scretnSixtrvidth:frajieSise.width=AcreaSixthuidth.J.fraM,setLacartionCCscreEnSiie.width-fCscreehSize.height-f
24、tana3ize.fra.=.jsetYzjibleOrue);fraafl,vaitforpacketsf):publicstaticvoidrtainCStrinel)arfs)1zufvChatiAip(),於人天文格入对方1国强址-输因端口::im输出端口:|iaoi-雌薛-j'!fe.9Erg"BE.1E&1.TTESSafrn.门笼】由1蝇的froi/152.1E6.J.H.EfiSag19Z.IBS.163:3001)=17Fm门转1归1?熊朗to1®.ieS.LM.SfflDEr”/13E.6B.1FT:6:883,白,蟹
25、.1迪177:6683Ero*/19E.1B6.l.rT.ESHI皿19Z.165.163:3005=17tu3:3000收Ere*/ISE.1E8.1.77:ES53Em门熊166rr吐羽Efokyi9£.16B.1H.E18835192.IES.l.W:3O0DsirFe./J低1附17T书恻/192.1A6.1.H:B86aEm/iK.iifiS.i.n:agfra./i驳i的iTT:eaaato192.IBS.l.&a:3000土卡frof门呢66.17T:E=SS3Ec门魂.1距77:6093fro»/1S2.1E8.1.7T.ESS
26、:3frn.门胞j说.m国eshIi空.抑生A强曾用港台独尊SW长而开,LV年前LJU式<-妗笊法-dChatApp_03客户端(8)-IJJXIFChi.Lik>*.j-Erl3>i43IK冥件gdHi£i母阳吗团典里flLEMff>i£i雳sirHi用口至看躺M但石质rea«:.例照=占日冷;日3m附jx-”+mEmOuriMtJwS口t”S血Sir*wJi田E革娓U出6QM=JISIcIe£FEUri_D1"1"Up#EIIfil.*.(1pubJLOP1«F9Ch-itA
27、pj'1MqMkDpljCAfTW:fBlBt.Chw+AttiO|CriiiflFeubffsm-mvChstFcuaIJ:ifQ>«kFturJ(Ft"九口*&口.1乳六|frut.7ibJj.dat4(k/用其牙陟注即革5出Dimf!即串,"1gDa»nrLanfraaaSLXB"£exjiF(feuu5ixr.husEht>工匚1ftUSllt.hLCl=第ifCfraatSiitjvi>3thykifrui&lllt.vidtLh=KTff.EBkiMGvn(fEFivinSLXB.
28、han.kfcua.jatTixablnleue),fr3lMilfaEpiek4t11口,publicFt<tiovoidnwChstAppW;Ej脚UT-S一*T津-sIs>?1>«n*口-+'litri«l*K0*SBlJihtttrilh|£)AJIJjQii;EB|e?国hrk口口3M自5rxChilAFPUwe.初用tL序口UZ遇I6C_l6hn'.i<virTtffll>|£-1T44B16Ji7日号的2.7源代码ChatFram.javapackageChatFrame_01;.*;impor
29、tjava.io.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.lang.*;importjava.awt.color.*;importjavax.swing.JOptionPane;publicclassChatFrameextendsJFrameJPanelcontentPane;JLabellabel1=newJLabel();/发送消息JLabellabel2=newJLabel();/输入ipLabellabel3=newLabel();/输入端口标签Labellabel4=newLa
30、bel();/输出端口标签JTextFieldtextField1=newJTextField();/发送消息JTextFieldtextField2=newJTextField();/输入ipJTextFieldtextField3=newJTextField();/获得输入端口JTextFieldtextField4=newJTextField();/获得输出端口JButtonbuttonl=newJButton("发送");/发送消息TextAreatextAreal=newTextArea();JOptionPanejopane=newJOptionPane();D
31、atagramPacketDatagramSocketDatagramSocketsendpacketreceivepacket;/声明发送和接收数据包sendsocket,receivesocket;/声明发送和接收publicChatFrame()enableEvents(AWTEvent.WINDOW_EVENT_MASK);trytoInit();catch(Exceptione)e.printStackTrace();privatevoidtoInit()throwsExceptioncontentPane=(JPanel)this.getContentPane();label1.s
32、etText("发送信息:");label1.setBounds(newRectangle(13,100,60,21);contentPane.setLayout(null);contentPane.setBackground(Color.pink);this.setSize(newDimension(363,502);this.setTitle("多人聊天室");label2.setText("输入对方IP地址:");label2.setBounds(newRectangle(12,19,109,23);label3.setText
33、("输入端口:");label3.setBounds(newRectangle(12,58,55,22);label4.setText("输出端口:");textField3.setText(textField4.setText(button1.setBounds(label4.setBounds(newRectangle(180,58,55,22);"3000");"3001");newRectangle(280,100,59,21);button1.addActionListener(newjava.awt.e
34、vent.ActionListener()publicvoidactionPerformed(ActionEvente)button1_actionPerformed(e);newKeyAdapter();textField1.addKeyListener(publicvoidkeyPressed(KeyEvente)VK_ENTER)textField2.getText();textField1.getText();"".equals(str1)if(e.getKeyCode()=KeyEvent.Stringstr=Stringstr1=if(pareTo("
35、")!=0&&!trytextArea1.append("nto+textField2.getText()+":"+"3000"+"say:"+textFieldl.getText();Strings=textField1.getText();bytedata=s.getBytes("UTF-8");sendpacket=newDatagramPacket(data,data.lengthInetAddress.getByName("7"
36、),6666);sendsocket.send(sendpacket);catch(IOExceptionexc)exc.printStackTrace();textField1.setText(""););textField4.setBounds(newRectangle(240,58,90,22);textField3.setBounds(newRectangle(70,58,90,22);textField2.setBounds(newRectangle(123,20,120,19)textField1.setBounds(newRectangle(76,100,19
37、0,19)textArea1.setBounds(newRectangle(11,140,333,315);textArea1.setEditable(false);textArea1.setBackground(Color.white);contentPane.add(label4,null);contentPane.add(label3,null);contentPane.add(label2,null);contentPane.add(label1,null);contentPane.add(textField1,null);contentPane.add(textField2,null
38、);contentPane.add(textField3,null);contentPane.add(textField4,null);contentPane.add(textArea1,null);contentPane.add(button1,null);this.setVisible(true);bind();protectedvoidprocessWindowEvent(WindowEvente)cessWindowEvent(e);if(e.getID()=WindowEvent.WINDOW_CLOSING)System.exit(0);publicvoidwai
39、tforpackets()/检测并接受对方发来的消息while(true)trybyte口array=newbyte100;receivepacket=newDatagramPacket(array,array.length);receivesocket.receive(receivepacket);/接收textArea1.append("nfrom"+receivepacket.getAddress()+":"+receivepacket.getPort()+"get:");Stringreceived=newString(rec
40、eivepacket.getData(),0,receivepacket.getLength(),"UTF-8");textArea1.append(received);catch(IOExceptionse)se.printStackTrace();voidbind()/和对方建立连trysendsocket=newDatagramSocket(3000);receivesocket=newDatagramSocket(3333);catch(Exceptione)voidbutton1_actionPerformed(ActionEvente)/发送消息到对方textF
41、ield2textField1"")!=0&&!.getText();.getText();"".equals(str1)Stringstr=Stringstr1=if(pareTo(trytextArea1.append("nto+textField2.getText()+II.II+"3000"StringtextField2.getText()+bytedata=s.getBytes(+"say:"+textField1.getText();s"|"+textFi
42、eld1.getText();"UTF-8");sendpacketsendsockettextField1=newDatagramPacket(data,data.getByName("7".send(sendpacket);catch(IOExceptionexc)exc.printStackTrace();.setText("");length,InetAddress),6666);)ChatApp.javapackageChatFrame_01;importjava.io.*;importjavax.sw
43、ing.UIManager;importjava.awt.*;publicclassChatAppbooleanpackFrame=false;ChatApp()ChatFrameframe=newChatFrame();if(packFrame)frame.pack();elseframe.validate();/放置窗体在屏幕中央DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();DimensionframeSize=frame.getSize();if(frameSize.height>screenSize
44、.height)frameSize.height=screenSize.height;if(frameSize.width>screenSize.width)frameSize.width=screenSize.width;frame.setLocation(screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);frame.setVisible(true);frame.waitforpackets();publicstaticvoidmain(Stringargs)newChatApp();
45、Server.javapackageChatFrame_01;.DatagramPacket;.DatagramSocket;.InetAddress;.Socket;importjava.util.*;publicclassServerListips=newArrayList();DatagramSocketsocket;DatagramPacketpacket;DatagramSocketssocket;DatagramPacketspacket;publicServer()throwsExceptionsocket=newDatagramSocket(6666);ssocket=newDatagramSocket(8888);publicvoidlisten()throwsExceptionbyte口array=newbyte100;packet=newDatagramPacket(array,array.length);s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年北海康养职业学院单招职业技能测试题库附答案详解(a卷)
- 2026年北京戏曲艺术职业学院单招职业适应性考试题库带答案详解(研优卷)
- 2026年共青科技职业学院单招职业适应性考试题库带答案详解(综合题)
- 2026年内蒙古民族幼儿师范高等专科学校单招职业技能测试题库含答案详解(模拟题)
- 2026年信阳职业技术学院单招职业技能考试题库附答案详解(培优b卷)
- 2026年南昌应用技术师范学院单招职业倾向性测试题库附参考答案详解(突破训练)
- 2025-2026学年小班教案树叶宝宝
- 2025-2026学年具的拼音教学游戏设计
- 线性代数概率统计结合测试试题及真题
- 建筑项目经理施工质量绩效考核表
- 滴滴车主安全管理制度
- 临床风湿免疫科诊疗手册
- 2026届云南省普通高中学业水平选择性考试调研测试地理试题
- 2025年江苏省无锡市中考物理真题卷含答案解析
- 人工智能新名词百科
- 阀门井模板施工方案
- 刷单协议书合同范本
- 代持车牌协议书
- (新教材)2026年人教版八年级下册数学 22.1 函数的概念 课件
- 居民自治课件
- 2026年兰考三农职业学院单招职业技能考试必刷测试卷及答案1套
评论
0/150
提交评论