




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向Internet上的CSCW的共享白板的设计与实现摘 要随着Internet的迅速普及,计算机技术进入了以网络为中心的时代。在计算机网络的支持下。地理上分布的人们需要协同工作。因此计算机支持协同工作(CSCW)应运而生。人们希望借助协同工作环境以“你见即我见”的方式进行交互。而电子白板作为计算机支持协同工作(CSCW)中的一个重要的图形交互工具,使处于不同地点的用户通过计算机可以实时的进行图形交互,用户简单快速地实现协同工作,业务处理过程,迅速适应市场的变化,从而获得更好的经济效益。本系统将CSCW与Java技术相结合,采用Java语言中的Socket网络编程技术,实现了客户端与服务器端之间网络底层的链接和信息的交换,用C/S计算机模型设计并实现了一个基于Java的电子白板系统,增加网上绘制图功能,弥补了纯文本非实时交流的不足,简化了网络中的技术细节,方便可行。关键词:共享电子白板;CSCW;Java;Socket;Client/Server(C/S)The Design and Implementation of Internet Oriented CSCW Shared Whiteboard AbstractAlong with rapid popularity of Internet, computer techniques come into Network Centric Computing epoch. People who are in geographically distributed locations need to collaborate with each other, so the Computer Supported Cooperative Work (CSCW) springs up. People hope interacting with each other using the WYSIWIS(What You See Is What I See) mode in CSCW environment. The shared whiteboard is the most important tool of graphic interaction in CSCW, which helps people locating different areas to interact each other with graphics by computers. The customers carry out a work, deal with the process of business and adapt a series of variety of the market in a brief and quick way .Then a better and economic performance is acquired.This system combines CSCW with Java technology and carries out the links of the low layer of the networks and switch of the information among the clients and severs using the socket programming technology with java. The design and implementation of the shared whiteboard system based on java adopting the C/S module of computer increases the online drawing function, makes up the shortage of pure text of the no real time and predigests the details of technology in network. So the system is very useful for us.Key words: share whiteboard; CSCW; Java; Socket; Client/Server(C/S)目 录论文总页数:26页1引言12开发技术与相关控件12.1Internet简介12.2计算机支持协同工作(CSCW)概述12.3TCP/IP、端口和套接字的概况23共享电子白板的系统功能结构23.1共享电子白板的主要功能23.2共享电子白板的系统结构34共享电子白板的结构与设计流程34.1共享电子白板的系统结构34.2共享电子白板信息流设计44.2.1由客户端向服务器端传递的主要消息54.2.2由服务器端向客户端传递的主要消息64.3共享电子白板的设计流程74.3.1服务器端程序设计流程74.3.2客户端程序设计流程75共享电子白板的实现85.1实现共享电子白板的语言和环境85.2服务器端的实现及相关类和方法95.2.1服务器的实现95.2.2服务器实现的相关类和方法115.3客户端的实现及相关类和方法155.3.1客户端实现155.3.2客户端实现的相关类和方法17结 论24参考文献24致 谢25声 明261 引言随着Internet的迅速发展,在Email、WWW、FTP等传统的非实时应用日趋成熟的同时,广大网络用户对在线实时交流的需求不断扩大,如网上会议、远程教学、协同工作等。这方面的应用软件也日益丰富起来。该类软件主要分为两类,一种是以目前和主页上的聊天室为代表的纯文字型的交流工具;另一种就是本文要介绍的电子白板类交流工具。电子白板除了具备聊天室的全部功能外,更重要的是,它还引入了绘画图形交流功能,使网上交流的形象性和直观性大大加强了,弥补了文字交流的不足。当分布在Internet不同位置的用户用白板进行交流时,一个人在自己的白板上绘制的图形可以马上在别人的白板上显示出来,好象大家都在同一块白板上绘画,彼此间的距离感大大缩短了。电子白板技术最初是指多媒体视频会议系统中,与会者通过某个界面实时共享数据并协作的技术。任何与会者在电子白板上的操作,包括简单的图形绘制操作,文字输入操作等,都可以实时地与其他会者共享。更复杂的白板要支持窗口共享以及本地多媒体的链接与嵌入,并且可以将每一个图形实体作为对象保存到文件中。随着WWW的发展以及Browser/Server计算模式的日益流行,Client/Server计算模式也在发展,本人做的面向Internet上的CSCW的共享白板的设计与实现是用Client/Server计算模式做的。电子白板技术已经不仅仅局限于应用在多媒体视频会议系统中了。2 开发技术与相关控件2.1 Internet简介Internet是在ARPAnet(高级研究计划署网络)的基础上发展起来的。ARPAnet始建于20世纪60年代末期,如今Internet已经深入到人们生活的各个方面,并带来了全新的通信方式,是人类通信方式的又一次革命。Internet的飞速发展和广泛应用为人们的信息交流、传输带来了极大的便利。目前用户可以看到的Internet提供的服务有很多,主要有WWW服务、文件传输服务(FTP)、电子邮件服务(E-mail)和远程登录服务(Telnet)等。这些都是当今世上最流行的服务,也是人们经常要用到的服务。2.2 计算机支持协同工作(CSCW)概述通信技术、计算机技术以及网络技术的融合,产生的新的研究领域计算机支持的协同工作(Computer Supported Cooperative Work,CSCW),简称计算机协同工作。1984年由美国MIt的IreneGreif和DEC的PaulCashman提出的。CSCW是地域分散的一个群体,借助计算机及网络技术,共同协调与协作来完成一项任务。它包括群体工作方式研究和支持群体工作的相关技术研究、应用系统的开发等部分。通过建立协同工作的环境,改善人们进行信息交流的方式,消除或减少人们在时间和空间上的相互分隔的障碍,从而节省工作人员的时间和精力,提高群体工作质量和效率。CSCW是在计算机支持的环境下(CS),特别是在网络环境下,一个群体协同完成一项共同的任务(CW),它的目标是设计出支持各样协同工作的工具、环境与应用系统。CSCW是研究群体如何工作,探讨各种技术特别是计算机技术如何支持群体工作的一个新的研究领域。CSCW的研究涉及到计算机网络、多媒体、人工智能、面向对象技术、数据库、并行与分布式处理、自然语言处理以及认知科学、行为科学、艺术等诸多领域。CSCW研究的焦点应始终集中于人-人交互以及其中知识的表示与沟通。以面向对象为其基本方法论,以高速计算机网络为基础,以开放的分布式系统为支撑环境。2.3 TCP/IP、端口和套接字的概况TCP/IP(Transaction Control Protocol ,传输控制协议)实际上是一组协议的集合。当应用程序要求传输协议能提供可靠的数据传输时,可使用TCP协议,因为在TCP协议中验证数据在网络上是否以合适的序列正确地传输。TCP是一种可靠的、面向连接的协议。TCP提供的可靠性是利用一种被称为“重传肯定确认(Positive Acknowledgment with Retransmission ,PAR)”机制来实现的。端口(Port)是基本的连接单元。端口的作用是非常重要的,在使用TCP/IP协议在主机上建立服务之前,用户必须首先抒写监听的端口,指定端口号以表示其上运行的是何种服务。如果用户希望与主机通信并完成某种服务,必须抒写端口号。套接字(Socket)是一个IP地址和一个端口号的组合,一个套接字可以惟一地标识整个Internet中的一个网络进程。套接字和端口号作为术语有时是可以互相转换的,实际上,知名服务经常称为知名套接字。在本实验中,套接字是指IP地址和端口号的组合。一对套接字(一个用于接收主机,另一个用于发送主机)可以定义面向连接协议的一次连接。3 共享电子白板的系统功能结构3.1 共享电子白板的主要功能本软件共享电子白板的功能主要有以下几点:1)支持多用户对图形、文本等的绘制操作功能,如直线、圆、椭圆、填充圆、文本等。2)支持多用户对同一内容进行讨论功能。有纯文字的讨论显示内容区和图形、文本讨论显示内容区。3)支持用户自觉锁的功能。如果用户不是主讲者,也就是对图形、文本显示内容区的绘制者,就要自觉地锁定对图形、文本显示内容区的操作功能,只能对纯文字显示内容区内发表个人的意见。3.2 共享电子白板的系统结构电子白板由服务器端和客户端两部分组成,服务器端监听客户对某个特定端口的网络连接请求,并与之建立连接,这样,这个客户的数据就可以发送到服务器,再由服务器转发给其他客户。客户端的任务是将用户的输入数据发送给服务器,同时接收服务器转发的别的用户的输入数据。也就是说,每个客户端只与服务器进行通信,并不直接与其他客户建立连接。这个设计方案与另一方案,即在客户端之间直接建立网络连接相比较,其优点是客户端不需要管理和维护其他客户的信息,系统结构更清晰明了,系统效率也更高。客户端运行时将立即向服务器的某个端口发送连接请求,待连接建立后则由用户的发送线程发送该用户的输入数据到服务器。服务器端的主线程负责监听某个端口,并为每个发出请求的用户建立用户空间线程,这个线程负责接收记录用户的信息,更新用户名单列表,接收用户的发送线程发出的数据,并交给服务器转发线程进行转发。服务器转发线程根据用户名单列表,逐一发送转发数据到每个用户的接收线程。在客户端,用户接收线程接收服务器转发的数据,由用户端主线程进行处理后显示。客户端的输入数据类型分为两类:纯文本和图形对象。纯文本用于客户之间进行文字交谈,图形对象则包括直线、矩形、圆等图形的形式进行图形交谈。每一种数据类型都被包装成数据包(暂存在缓冲区里的形式)在网络上传送,客户端还要在接收到服务器转发同样的数据包后,进行解数据包,也就是对字符串进行分析后显示。4 共享电子白板的结构与设计流程4.1 共享电子白板的系统结构本系统将采用Client/Server(C/S)体系结构,即客户机/服务器体系结构。C/S结构主要应用于构造数据库系统,它包括连接在一个网络中的多台计算机。处理应用程序并请求另一台计算机服务的计算机称为客户机,处理数据库的计算机成为服务器。其特点是客户端只装载应用软件,而把数据库放要服务器上,这样就可以使客户端不需要存储数据,从而简化客户端软件。C/S体系结构可以如下图所示。图1 C/S体系结构共享电子白板系统也采用C/S结构。共享电子白板的服务器专门用于监控用户状态和转发消息,当客户端要和服务器端进行通信时,客户端只需把用户名和消息文本或图形信息等发送到服务器,然后由服务器转发到各个用户,再由客户端把接收的信息在相应的位子控件上显示出来,而不需要向每个用户建立连接后再发送消息,这样就大大减轻了客户端的任务。4.2 共享电子白板信息流设计共享电子白板就是一个服务器端和多个同步的客户端进行信息交流的过程,这种结构就是C/S体系结构的信息流处理过程,本共享电子白板的信息流处理如下图所示。图2 共享电子白板的信息流处理图共享电子白板大致的实现模型是:1)服务器分配一个端口号。如果客户请求一个连接,服务器使用accept()方法打开socket连接,从而进行了正常的信息通信。2)客户在host的port端口建立连接。服务器和客户使用InputStream和OutputStream进行通信。下面接着分析共享电子白板系统的信息传递情况。4.2.1 由客户端向服务器端传递的主要消息1)登录链接时,在发送消息前面添加上“PEOPLE:”再加上用户名称用引号(:)隔开,再加上IP地址信息传给服务器。2)在发送纯文字信息时,在消息前面添加上“MSG:”,再加上发送信息的用户名称再用引号(:)隔开,再加上要发送的纯文字的消息信息。然后发送给服务器。3)在发送图形信息中的文本信息时,在消息前面添加上“DRAW:”,再加上文本关键字名后加上引号(:),再加上发送信息的用户名加上引号(:),再加上颜色分为红(R:)、绿(G:)、蓝(B:),这些颜色对文本字体没有任何的作用,只是便于客户端的接收分析,再加上起点和终点的坐标值,每一个坐标的(X,Y)值都要用同样的引号(:)隔开,再加上文本信息和引号(:)。然后发送给服务器。4)在发送图形信息中的线图时,在消息前面添加上“DRAW:”,再加上所绘画图形的关键字名后加上引号(:),再加上发送信息的用户名加上引号(:),再加上颜色分为红(R:)、绿(G:)、蓝(B:),再加上起点和终点坐标值,每一个坐标的(X,Y)值都要用同样的引号(:)隔开。然后发送给服务器。5)在用户退出共享电子白板系统时,发送消息中添加“QUIT:”以及退出系统的用户名称,然后将消息传送给服务器。信息的发送都是以字符的形式发送出去的,通过暂缓冲区缓存方法暂存后发送给服务器端的,格式一般如下图所示。图形绘制的各个值之间都要用引号(:)隔开。图3 发送信息格式4.2.2 由服务器端向客户端传递的主要消息1)服务器进行链接起动服务器工作。2)服务器管理员可以向所示已登录链接成功的用户发送任何信息。在消息前面添加上“MSG:”,再加上“SERVER:”再加上所要发送的文字信息。3)用户登录链接时向其他所有已登录的用户发出更新消息,在消息前面添加“PEOPLE:”以及登录链接的用户名称,然后发送给所有已登录的用户端。4)收到用户的纯文字、图形消息信息时,服务器则把它以同样的格式向所有已链接登录的用户转发信息出去给客户端。5)有用户注销时,向所有要线的用户发出通知,在消息前面添加上“QUIT:”信息和用户名称,同时更新用户列表信息,然后发送给所有客户进行更新和显示。6)当服务器退出时,服务器向所有在线客户发送服务器关闭信息,在消息前面添加上“QUIT:”和“SERVER:”信息,并关闭所有服务链接。信息的发送都是以字符的形式发送出去的,通过缓冲区缓存方法暂存后发送或转发的给所有在线客户端,格式一般如下图所示。图形绘制的各个值之间都要用引号(:)隔开。图4 发送或转发信息格式4.3 共享电子白板的设计流程4.3.1 服务器端程序设计流程按照服务器打开链接到关闭的顺序,可以将服务器端程序设计流程描述如下几等。1)创建服务器,初始化服务器套接字,并使其处于监听状态。2)当用户登录链接时,将目前的在线用户列表发给该用户,在服务器列表中记录该用户的登录链接信息,并显示在服务器端的相应位子,将该用户添加到在线用户列表中,记录用户列表中的人数,并显示出现在的在线人数用多少个。3)在发送消息时,服务器只是把从客户端接收的信息进行转发的功能形式。4)若某用户注销,则向所有在线用户发送通知,通知该用户关闭信息,同时在服务器列表中记录该项用户的注销信息,并从登录链接用户列表中将该用户删除掉,同时也要记录更新服务器在线用户列表中的人数,发送给所有在线用户,并显示在相应的位子。5)当服务器需要退出时,向所有用户发送关闭的信息,然后注销所有用户列表,服务器关闭信息发送通知所有用户。4.3.2 客户端程序设计流程按照用户从登录到注销的顺序,客户端程序设计流程如下所示。1)用户登录连接服务器,把用户名称和IP地址信息发送给服务器,建立起一个连接。2)接收服务器消息,对不同的消息采用不同的处理方法: 当收到用户登录连接返回的消息时,从中提取出已经登录用户列表,并逐个的添加到用户端的用户列表中。 收到用户发送来的消息,也就是服务器转发过来的消息时,显示在相应的消息框中。 收到其他用户注销的消息时,从用户列表中删除用户,更新用户列表,也就是用服务器转发的更新后的用户列表去一个个的添加到客户端的用户列表中。3)发送消息时,对不同的消息发送方式采用不同的处理方法:对发送纯文字信息和图形绘制信息的关键字标记都不一样,便于服务器端转发和客户端接收的分析显示。4)断开连接。若用户断开与服务器端的连接,则发送一个消息给服务器表示退出服务器连接,这一消息前面要添加“QUIT:”以及退出用户名称信息。5 共享电子白板的实现5.1 实现共享电子白板的语言和环境在编程语言的选择上,考虑到电子白板系统具有如下特点: 系统主要进行网络连接和数据传送; 客户端存在不同类型的输入数据类型,例如各种几何图形和文字等; 系统中存在多个线程,并且彼此之间要进行通信; 而且本人对Java编程语言特别的感兴趣,又一直在学习这门编程语言,因而决定选用Java语言,因为Java是一种面向对象的网络编程语言,它支持多线程,并且,Java的平台无关性以及安全性更是其他编程语言无法比拟的。 选 择Borland Jbuilder 9.0作为开发工具,它是一个强大的集成Java软件开发工具,使用JDK1.4进行开发,在实现共享电子白板中,主要了使用Java语言中的下面几个类: java.lang.Thread;用来建立线程,或者使用Runnable界面。可以为线程设 置 优先级,使用synchronized()指令来锁定临界区、同步通讯等。 .ServerSocket;用来建立服务器端Socket,并与某个端口绑定,使用accept()方法返回连接建立后的Socket对象。 .Socket;用来与某主机的某个端口建立Socket连接,使用getInputStream()和getOutputStream()方法获得输入和输出的流对象。 .InetAddress;用来获得和处理主机的网络地址,使用静态方法getByName()获得InetAddress 类对象,使用getAddress()和getHostName()获得主机的IP地址和域名。 共享电子白板中的Socket编程,它是用来实现底层网络的通信, 当一个Socket建立后,它就与本地的IP地址联系起来,IP地址仅简单地指定出入主机的特定路径,而连接亦可有多个。套接字地址完整地说是应用端口号,协议和本地IP地址的集合,它形成一个应用链路的终点,有效的激活一个套接字到套接字的连接。Socket通信机制提供了两种通信方式,即:面向连接的通信方式和面向无连接的方式。在设计时我们采用了前者-面向连接的通信方式,即通信前必须进行一次连接,从而建立起一条通信链路,并以字节流的形式在通信双方之间进行数据传输服务,它是一种安全、可靠的通信方式。在服务器端的是用serverSocket类,serverSocket连接后,还要调用accept()方法去监听,直得注意的是使用了一个while(true)语句去实现时时的轮询。相关代码:final static int DEFAULT_PORT=4000;void link_actionPerformed(ActionEvent e) if (serverSocket = null) try serverSocket = new ServerSocket(DEFAULT_PORT); class watch extends Thread ServerSocket serverSocket = null; public void run() while (true) if (frame.clients.size() 20) try socket = serverSocket.accept(); 在客户端中用Socket,调用前面讲过的InetAddress.getLocalHost()获得主机名。相关代码如下:final static int DEFAULT_PORT=4000;void linkjButton1_actionPerformed(ActionEvent e) try socket = new Socket(InetAddress.getLocalHost(),DEFAULT_PORT); 5.2 服务器端的实现及相关类和方法5.2.1 服务器的实现共享电子白板的服务器端是实现对客户端信息的记录和转发功能,共享电子白板的服务器端界面的实现是通过Java Swing 技术编写出来的,服务器端界面如下图所示。图5 共享电子白板服务器界面服务器启动连接后,会在服务器界面的系统消息框中显示出服务器连接成功,服务器时时的监听客户端的请求连接,如果有客户端用户的请求连接时,服务器就记录用户的用户名称和IP地址信息,把用户名称增加到用户列表名单中,并统计和显示用户列表名单的在线人数,服务器端把接收到客户端的用户信息添加并显示到服务器界面的用户信息表中,用户信息表是用来记录每一个用户的用户名、IP地址和连接情况,同时在系统消息框中显示出相应的信息;如果接收到的是用户的会议讨论信息,也就是纯文字和图形信息时,服务器通过分析后再进行转发给所有在线用户;如果接收的是用户的请求退出时,服务器更新用户列表名单,用户在线人数减一并显示出来,并在用户信息表中销去请求退出用户的所有信息和在系统消息框中提示某某用户断开连接,同时把请求退出的用户名称发送给所有在线用户。如果是服务器退出,也是要把服务器端关闭的信息通知给所有要线用户,并注销和关闭所有服务。其上面的所有实验结果如下图所示。图6 服务器端的结果显示5.2.2 服务器实现的相关类和方法服务器端的实现有以下几个类和方法:1)Application1 类,这个类是服务器工程的执行类,是JBuilder 9.0工具在服务器工程里面创建一个Java Application 时,自动生成的类。也就是整个服务器工程的主类。2)Frame1 类,这个类是服务器界面的实现类,是用来实现服务器界面上的个个组建的。服务器启动链接的功能实现的代码如下。void link_actionPerformed(ActionEvent e) if (serverSocket = null) try serverSocket = new ServerSocket(4000); if (serverSocket != null) jTextArea1.append(系统提示: 服务器+ 已经启动n); Thread a = new watch(this); a.start(); 3)watch 类,这个类是服务器用来对用户登录链接进行监听的线程类。其代码如下:class watch extends Thread watch(Frame1 frame) public void run() while (true) if (frame.clients.size() 20) try socket = serverSocket.accept(); Client c = new Client(frame, socket); /定义并实例化一个Client线程,每一个线程对应一个客户连接 frame.clients.addElement(c); /加入到Clients数组中 if (c.checkName(c) int num = frame.active_connects + 1; frame.active_connects+; jTextField2.setText(目前已经有: + num + 用户连接); Client listdata = (Client) frame.clients.elementAt(num - 1); frame.list1.add( + + listdata.ip + 已经连接, num - 1); c.start(); /启动线程 c.notifyRoom(); /监视白板窗口的连接变化 else c.ps.println(FAULTNAME); /检查名字不合法,则在发送流中发送FAULTNAME c.disconnect(c); /断开连接 else try Thread.sleep(400); 4)Client 类,这个类是服务器用来对用户发送信息的接收分析和转发的类。这个类有还对用户名称的判断和对用户列表的更新功能。服务器对用户发送信息的接收和分析功能和把分析后的信息存储在相应的缓存中,这个功能的实现是Clint类中的run()方法,其功能实现代码如下。public void run() while (true) String line = null; try line = dis.readLine(); /读取客户端发送的数据流 catch (IOException ex) jTextArea1.append(系统消息: 服务器+ Error +ex); disconnect(this); notifyRoom(); return ; if (line = null) /客户已经离开 disconnect(this); notifyRoom(); return ; StringTokenizer st = new StringTokenizer(line, :); String keyword = st.nextToken(); /存储关键字,判断消息类型 if (keyword.equalsIgnoreCase(MSG) StringBuffer message = new StringBuffer(MSG:); /在服务器建立一个缓冲区,用于纯文字信息的发送 String strname = st.nextToken(); message.append(strname + :); message.append(st.nextToken(0); sendClients(message); else if(keyword.equalsIgnoreCase(DRAW) ) StringBuffer draw = new StringBuffer(DRAW:); /在服务器建立一个缓冲区,用于图形信息的发送 if (st.hasMoreTokens() keystr = st.nextToken(); draw.append(keystr + :); if (st.hasMoreTokens() draw.append(st.nextToken() + :); if (st.hasMoreTokens() draw.append(st.nextToken() + :); if (st.hasMoreTokens() draw.append(st.nextToken() + :); if (st.hasMoreTokens() draw.append(st.nextToken() + :); if (st.hasMoreTokens() p1x = st.nextToken(); draw.append(p1x + :); if (st.hasMoreElements() p1y = st.nextToken(); draw.append(p1y + :); if (st.hasMoreTokens() p2x = st.nextToken(); draw.append(p2x + :); if (st.hasMoreTokens() p2y = st.nextToken(); draw.append(p2y + :); if (st.hasMoreTokens() text = st.nextToken(); draw.append(text + :); sendClients(draw); else if (keyword.equalsIgnoreCase(QUIT) frame.list1.clear(); disconnect(this); for (int i = 0; i frame.clients.size() ; i+) Client listdata1 = (Client)frame.clients.elementAt(i); frame
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗核心制度考核试题题库及答案
- 2025年工业互联网平台AR交互技术在远程协作中的应用案例分析报告
- 押题宝典高校教师资格证之《高等教育法规》试题及答案详解(夺冠系列)
- 2025年新零售行业智能收银系统与顾客体验研究报告
- 2025年民办教育机构合规运营与品牌建设教育服务品牌品牌管理优化报告
- 2025至2030年中国整体精装市场调查研究及行业投资潜力预测报告
- 2025年企业劳动争议仲裁与代理服务合同范本
- 2025版节能环保型内外墙抹灰施工与验收合同
- 2025版商标转让及许可交易合同范本
- 2025年度校园安全监控设备承包安装合同
- 国际金融(第七版)全套教学课件
- JJG 677-2006光干涉式甲烷测定仪
- 甘肃省天水市2024年事业单位考试A类《职业能力倾向测验》模拟试题含解析
- 空乘服务语言艺术与播音技巧全套教学课件
- 中小学德育、班主任工作培训课件
- 小米公司物流与供应链管理案例分析课件
- 《工业视觉基础知识》课件
- 家长进课堂金融知识讲座
- 高警示药品管理考试
- 国家开放大学(中央电大)报名登记表(附填写说明)
- JCT2425-2017 坐便器安装规范
评论
0/150
提交评论