




已阅读5页,还剩67页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Web的聊天室构建摘要Web聊天室曾在因特网进入中国早期的时候被广泛使用,一度深受国内网民的青睐。随着腾讯QQ以及之后微信的普及,目前Web聊天室已然较少被使用。但在一些商业网站,例如BBS以及在线购物系统,还是会有Web聊天室的存在。基于Web聊天室自身的优点,即不需要安装任何客户端应用,聊天内容呈现便捷。所以,Web聊天室将长期存在于因特网上。该聊天室系统由用户注册、用户登录、聊天室的选择、主聊天室以及相应修改、帮助功能组成。使用Java编程语言集合JSP、JavaBean、Servlet技术完成系统的整体设计,以MyEclipse为平台,Tomcat为服务器。关键字:Web;因特网;聊天室;JSP;JavaBean;ServletiWeb-basedchatroomtobuildAbstractWebchatroomstoenterChinaintheearlystagesoftheInternetiswidelyusedandlovedbynetizens.WiththepopularityofTencentQQandWeChat,thecurrentWebchatroomshavebeenusedless.However,insomesites,suchasBBS,onlineshoppingsystems,butalsomayhaveWebchatrooms.BecausetheWebchatroomsalsohasitsmerits,itdoesnotneedtoinstallanyclient,andshowmessageveryquickly.Therefore,WebchatroomswillalwaysappearontheInternet.Thechatroommakesupwithusersregistrationsystem,userslogon,chatroomstochoose,themainchatroom,somechangesandthecompositionoffunctions.UsingJavaprogramminglanguageandcollectwithJSP,JavaBean,Servlettechnologytocompletetheoveralldesignofthesystem,usingMyEclipseasaplatformandTomcatasaserver.Keyword:Web;Internet;ChatRoom;JSP;JavaBean;Servlet目录摘要.iAbstract.ii1概述.11.1聊天室系统的基本概念.11.2开发聊天室系统的意义.11.3目前的研究现状.11.4总体设计的基本思路.12主要技术.32.1JSP技术.32.2JavaBean技术.42.3Servlet技术.42.4MyEclipse开发工具.62.5Access数据库技术.62.6Tomcat应用服务器技术.63系统分析.83.1系统设计的目的和意义.83.2系统功能.84系统设计.94.1系统总体设计.94.2系统数据库设计.144.2.1数据库.144.2.2基本表的设计.155功能实现.175.1用户注册与登录功能.175.1.1用户注册.175.1.2用户登录.195.2用户选择聊天房间功能.205.2.1用户登录时选择聊天室房间.205.2.2用户聊天时更改聊天室房间.215.3用户聊天功能.225.3.1显示功能.225.3.2用户信息修改功能.235.3.3处理功能.255.3.4输入功能.265.3.5查看在线聊友功能.285.3.6私聊功能(悄悄话).295.3.7趣味聊天功能.305.4高级用户管理功能.315.4.1高级功能(踢人禁言).315.5共享文件功能.355.5.1上传功能.355.5.2下载功能.385.6音乐播放功能.415.6.1音乐播放功能.416系统测试.456.1测试主要内容.456.2测试详情.457总结与展望.467.1对存在问题的处理.467.1.1边框的处理.467.1.2登录页面中的验证码问题.467.1.3其他问题.467.2心得体会.47致谢.49参考文献.50附录(外文原文及翻译).5101概述1.1聊天室系统的基本概念聊天室系统基于互联网,可进行多人通讯。本系统旨在让用户在进入该聊天室系统平台的同时,可以借由网络在线与相距较远的其他一位或多位用户进行通讯交互。通过利用计算机通讯原理,并且基于一定的网络通讯技术及高级语言程序设计和JSP应用程序设计的技术基础,以一个聊天室平台形式,为用户提供交互服务。1.2开发聊天室系统的意义上帝赋予人类说话的能力,而说话又创造了人类对宇宙的量度思想。1随着信息科技的高速发展,我们用于进行信息交互的方式也日益丰富,创新。从早期的电报,有线电话,而后的传真,移动电话,电子邮件,然而对于越来越快节奏,信息交流越来越频繁的当今社会,如果需要与几个人同时进行会谈依然是一件需要费时费力进行安排的活动,尤其是对于以上的几种交流方式,要么具有局限性,要么有费用的问题,其中电话就是属于费用比较高的一种选择,而且通常情况下不支持进行多人互动,限于单对单的通话。通常的选择是把参与会谈的人越好时间,聚集到同一个房间才能进行有效的交流。不但费时费力而且往往有诸多因素会影响大家的日程安排。电子邮件则是非即时的联系方式,用于交互则需要一定的时间,只能作为一种辅助交流的选择。在这种情况下,聊天室系统应运而生,很好的满足了多人会谈的需求,在网络上虚拟一个交流平台,这样在不同的地点也可以进行方便的交流。而且优秀的聊天室还具备诸多表情符号供用户选择用以加强思想感情的传递。而且基于广泛应用的互联网,费用低廉,信息即时交流,参与方便的优点,在这个快节奏的社会中不仅加强联系,同时节省交互的成本进而创造出更多的价值.1.3目前的研究现状随着IT技术的迅猛发展,网络以其日新月异的创新精神以及无处不在的便捷性,吸引了越来越多的人的注意并参与其中,信息资源的重要性以前所未有的形式摆在了社会的焦点位置,信息交互的经济效益直接体现在生产管理活动中。对于一个组织尤其是商业公司,必须能利用信息资源的及时性、准确性,提高工作效率,取得更大的经济效益和社会影响。对于个人而言,也可以通过信息交互的便捷更好地实现个人价值。方方面面的实际需求表明,一个良好的交互通讯的方式,能从一个较高的程度上提升工作效率,避免由于不必要的时间成本而承担可能的种种损失。准确的说一个良好的聊天室系统应能全面的处理这个问题。在经过了近些年来认识及技术的发展,聊天室系统已然趋于成熟。1.4总体设计的基本思路针对所学知识以及对Web应用系统的了解,根据用户在实际聊天中的需求,确定开发以Java-Web技术为主的一个在线聊天室系统。主要满足用户对群聊,私聊等功能的需要。基于MyEclipse平台,通过Java编程语言、Access数据库技术进行开发,初步涉及了框架的思想以及对Javabean的运用。本系统的开发工作分为以下几个主要阶段:1(1)系统需求分析。包括用户需求分析,系统调查。(2)系统的功能设计。(3)数据库的设计。E-R图、创建数据表。(4)系统的功能模块的划分以及实现。根据系统所管理的数据的类别不同,对数据操作进行功能划分,分别实现功能模块。系统的测试。单元测试,以及将单个实现的功能整合为一体,进行整体性能测试。对存在的错误和不足,予以及时的修正。22主要技术2.1JSP技术本系统基于JSP技术。JSP的全称是JavaServerPages,它是在SunMicrosystems公司所发起、众多公司共同参与建立的一种新的动态网页技术的标准。将JAVA的代码片段(Scriptlet)和JSP的标记(tag)在静态的网页HTML文件(*.htm,*.html)中规范的加入,即构成了动态的JSP网页(*.jsp)。JSP技术的特点如下:(1)将页面内容的生成同页面内容呈现予以人为分离(2)生成了可复用的软件组件(3)应用了标记从而简化了页面的设计JSP九中内置对象:1)page对象:page对象代表JSP页面本身,更准确的说它代表JSP被翻译后的Servlet。2)pageContext对象:javax.servlet.jsp.pageContext接口,提供了对JSP页面内使用到的所有对象及名字空间的访问,提供了几种对页面属性的访问,允许向其他应用组件转发。3)request对象:request对象是HttpServletRequest接口的实现类,封装了客户的请求信息,request的生命周期由JSP容器控制,当接收到一个客户端请求,JSP容器创建并封装request对象,当请求处理完毕,request对象被销毁。4)response:response对象封装了服务器响应客户端请求的相关消息,主要功能:设置头信息,实现了javax.servlet.http.HttpServletResponse接口,生命周期由容器来管理。5)session:处理客户端与服务端的会话,从客户端连接到服务端开始,session对象用来保存每个用户的信息,以便跟踪每个用户的操作状态,其中,session信息保存在容器里,session的ID保存在客户机的Cookie中,用户首次登陆系统时容器会给用户分配一个唯一的sessionid标识。用于区别其他的用户。6)application:保存Web应用程序中共有的数据,可存放全局变量服务器启动后自动创建application对象,该对象一直有效,直到服务器关闭。用户对该对象属性的操作将影响到其他用户7)config:config对象是JSP页面通过JSP容器进行初始化时被传递的对象,封装了JSP配置参数的信息.可读取web.xml中配置的初始化参数8)out:out对象用来向客户端输出内容,并管理服务器上输出缓冲区.out对象被封装成javax.servlet.jsp.JspWriter接口。可以使用page指令来改变缓冲区大小9)exception:exception对象实现了java.lang.Throwable接口,用来处理JSP在执行时发生的。JSP的生命周期:1)翻译阶段当容器接受到客户端第一次对jsp的请求后,先判断被请求的jsp是否存在,若不存在返回404错误,若存在,将该jsp先翻译成一个Servlet。2)编译阶段3将Servlet的源文件编译成一个字节码文件,然后由容器将其装载进虚拟机并实例化(单例)。3)执行阶段调用Servlet的init()、service方法、destroy()。2.2JavaBean技术JavaBean是指一个可复用的软件组件。从本质上来说JavaBean是一种特殊的Java类,它经过对相关某一逻辑的属性和方法的封装使其成为具有实现某一特定的功能或者可执行某一特别业务的对象,简称为bean。Javabean具有Java系列一贯的跨平台的优势,以及以下特点:(1)实现了对代码的可重复的利用;(2)容易编写、方便使用、方便维护;(3)可以一次编译后在任何安装了Java运行环境的平台上的使用。JavaBean存在下面四种应用范围:对话范围、页面范围、请求范围、应用范围。(1)对话范围(session):对话范围的JavaBean主要用于跨多个页面和时间段的信息的处理:如在表单中填写的用户信息等。(2)页面/请求范围(page/request):页面和请求范围的JavaBean类似于记录表单信息的bean,这是因为一般情况下它们用于对表单的处理。(3)应用(application):应用范围一般主要是应用在服务器的构件上。例如JDBC连接池、应用的监视、某类用户的计数和其他参与用户行为的类。使用javaBean的目的1)用来封装数据信息,业务,数据访问,事务控制逻辑的代码2)用来封装jsp中的一些脚本,便于重用,可以减少jsp中脚本的使用3)作为一个可重用的组件来使用JavaBean按照位置分为:可视化JavaBean位于客户端(eg:在Swing中处理事件的JavaBean)和不可视化JavaBean位于服务端,用于封装数据信息,业务,数据2.3Servlet技术Servlet本质是用Java语言编写的程序,具有独立于平台和协议的特点,并且是在服务器端运行的Java应用程序,借助于Servlet可以生成具有动态效果的Web页面。Servlet负责Web浏览器或者其他的HTTP客户程序发出的请求,是位于服务器的应用程序之间的或者应用程序与数据库之间的中间层。Servlet是供用户扩展的组件,能够运行在Servlet容器中。Servlet容器负责接收Web客户的HTTP请求并且向Web客户发送HTTP响应。2Servlet原先是指位于服务器上的运行的Java语言的小程序。它是创造于Javaapplet的环境下的一个词。Applet是只在Web浏览器中运行的小程序。Applet是作为网页的一部分被自动下载的(就像网页中的图片被自动下载一样)。当applet被激活时,它便开始执行程序。这正是它的优雅之处。3这里的想法很简单:用户从Internet下载Java字节码,并在自己的机器上运行。在网页中运行Java程序成为applet。为了使用applet,需要启用Java的Web浏览器执行字节码。用户下载一个applet就如同在网页中嵌入一幅图片。applet成为了页面的一部分。4通常情况下,它为用户提供运算服务4或者根据用户交互作用定位图形的服务等等。服务器上需要有一些具有特定功能的程序,通常的时候它们实现了根据用户的输入信息来访问数据库的功能。而实现这些功能一般是利用了公共网关接口(CGI)应用程序。鉴于Java程序的优势,如果在服务器上运行的这类应用程序使用Java编程语言实现,会得到更好地响应速度。尤其是在访问量较大的服务器上,Javaservlet由于把各个用户访问请求激活成了单独的程序进程中的一个线程来响应,这使得各个访问请求所占用的系统资源相对减少,从而在执行的速度上超越了CGI程序的执行速度。具有更好的用户体验。servlet的生命周期:1.装载并实例化servlet(同一个servlet在整个生命周期中只有一个实例)。分为两种装载方式:1).延迟加载(tomcat默认的加载方式)当客户端发起第一个请求第一次访问servlet时,容器会将Servlet装载进虚拟机并实例化,第二次以后去访问同一个servlet容器就不会再装载并实例化。2).预先加载当webserver启动时,web容器加载web应用时把servlet装载进虚拟机并实例化。这种方式需要在web.xml中进行配置numnum=0:采用预先加载(值越小越先被加载)num);out.println();out.println(该用户已经存在,请重新注册!);out.println();185.1.2用户登录用户登录功能,如同用户注册功能的实现借助了JSP,javabean以及servlet等技术的集合。在用户注册功能中,对于注册成功的情况,立即将输入的用户信息记录进数据库内。在用户登录功能中,对于输入的用户信息与数据库中记录的信息作匹配判断,匹配结果为true的跳转到登录成功后选择聊天室的页面。其功能实现的代码类似于用户注册功能的实现。具体实现如下图所示:图5.3用户登录页面图5.4用户登录成功页面195.2用户选择聊天房间功能5.2.1用户登录时选择聊天室房间用户登录成功后页面跳转到选择聊天室的房间的页面。页面上显示聊天室中的已有的房间,供用户自主选择喜欢的聊天房间。在用户登录成功并在聊天房间选择页面选择聊天房间点击进入聊天室后,用户名、用户的积分以及所选择的聊天室房间信息自动添加进user_list表中,而表中的在线用户的信息只有在用户注销或被高级用户踢出后,相应的用户信息才会从user_list中删除。该部分主要的功能实现图如下所示:图5.5聊天室选择页面主要实现代码为:privateStringchatroom;publicStringgetChatroom()returnchatroom;publicvoidsetChatroom(Stringchatroom)this.chatroom=chatroom;stmt.executeUpdate(insertintouser_listvalues(+username+,+chatroom+,+integral+);valid=true;ChooseBeancb=newChooseBean();20cb.setUsername(request.getParameter(username);cb.setChatroom(request.getParameter(chatroom);ChooseCheckBeanccb=newChooseCheckBean(cb);if(ccb.validate()goToPage(main.jsp,request,response);用户的相关信息是在经由JavaBean处理过程中被添进相应的数据库中表的。5.2.2用户聊天时更改聊天室房间用户聊天时,主页面右侧有休闲娱乐一栏。该栏有一下拉框,供用户自主选择喜欢的聊天房间。在用户选择好聊天室房间后点击换个房间后,用户名、用户的积分以及所选择的聊天室房间信息自动更新进user_list表中。该部分主要的功能实现图如下所示:图5.6更换聊天室房间之前图21图5.7更换聊天室房间之后图5.3用户聊天功能本系统的主页面基于框架技术实现。需要支持框架的浏览器进行浏览访问。在主页面中,集成显示的页面(show.jsp)、输入的页面(input.jsp)、处理的页面(transact.jsp)以及用户信息修改的页面(right.jsp)。5.3.1显示功能显示页面中实现了用户发言的显示功能,同时可以对过去一段一部分聊天记录的查看,系统的相关提示信息也在这里显示。其实现功能图如下所示:图5.8显示聊天内容功能图22主要实现代码为:functionGetData(url)url=class_method.jsp?action=transact.jsp;tryDataLoad.src=url;catch(e)returnfalse;vartimeoutid=setTimeout(GetData(),2000);数据载入中.5.3.2用户信息修改功能首先将用户所在的聊天室信息显示在用户信息修改页面,用户在聊天过程中就可以方便的对用户资料、密码等信息进行修改还可以更换聊天室的房间。这些功能的实现主要是通过对相关页面的超链解来实现。更换房间操作的功能的实现是借助表单将更新后的信息封装发送给相应的javabean来处理的。修改用户资料的功能的实现借助session保存用户名将信息传递过去,达到修改年龄和邮箱的目的。在对用户资料在修改时按照要求对输入信息进行验证,主要是通过javabean比对数据库中的记录信息,当用户名为指定用户名且问题的答案正确时才进行修改即修改成功的提示,否则会提示拒绝修改信息。用户密码修改功能的实现同样借助session保存用户名从而传递用户名,在javabean中查看数据库中输入的用户名的旧密码是否匹配一致,若匹配无误才会进行接下来的更新操作即更新旧密码为输入的新密码。匹配不一致则拒绝修改操作,相应的提示修改失败的信息。23相关的功能实现图如下:图5.9用户修改链接图图5.10用户资料修改图24图5.11用户密码修改图5.3.3处理功能处理页面为了获得最新的用户聊天的信息,设定为两秒钟就更新一次,及时地显示聊天信息在显示区域内,实现便捷的交流,使得用户之间几乎无阻碍的通畅交互,便于交谈中的跟进与回复。主要实现代码为:处理页面通过创建一个Vector数组,在数组中存放经由输入页面而成功的存放进入application中的有关用户输入的和选择的一些操作,根据这些元素构建形成完整的发出的消息内容(比如是一些表情的选择或者用户是对其他人发言还是其他人对用户发言以及有没有动作的添加或者建立“悄悄话“的私聊模式)。这里主要通过把相应的字符串组合在一起从而得到结果。之后把最终的结果借助Javascript中的write方法将发言的内容在显示页面中显示出来。主要实现为:parent.mainframe.document.write()5.3.4输入功能输入页面中,借助于在sesison中保存的请求中的用户名。聊天对象的选择,是指聊天对象以一个输入文本框的形式,提供给用户自主输入选择聊天对象的功能。通过聊天对象的选择可给其他用户(或者离开或者被踢出)留言,留言的内容会被保存在application中。留言的内容在留言对象下次登录的时候会被显示到显示页面,从而可以达到保持联系的目的。默认设置为在服务器重启之后才会清空application中保存的留言信息。通过这样的设置方便了用户的聊天方式。对于聊天室中可以加入发言的一些动作,默认是固定的,也就是说在聊天室被创建好之后就已然具有这些动作,对于用户而言直接就可以选择需要的用于发言所需要的相关的表达动作。“悄悄话”选框,一旦勾选了这个选框意味着可以进入私下聊天的模式,也就是说自己的发言只有自己选择的私聊的对象的显示去也才可以显示,而其他人的显示去也是不显示的。积分的概念,本系统中的积分是借助session保存的。发送的按钮,通过点击该按钮,用户所输入的一系列的发言信息就会被系统自动添加到Message中传递给处理页面进行处理。离开的按钮,通过点击该按钮,用户的保存在session的相关信息就会被清空,与此同时也会把user_list表中的与用户相关的信息清空。26这一功能的实现图如下所示:图5.12用户输入功能图该页面的一些主要的功能的实现代码为:if(first=null)talkMessage=系统公告:+username+进入了+chatroom+聊天室,大家欢迎!;action=no;systemSpeak=yes;synchronized(application)Message=(Vector)application.getAttribute(Message);if(Message=null)Message=newVector(30,10);if(Message.size()200)Message.removeAllElements();Message.addElement(aloneTalk);Message.addElement(username);Message.addElement(talkwith);Message.addElement(talkMessage);Message.addElement(systemSpeak);Message.addElement(action2);application.setAttribute(Message,Message);275.3.5查看在线聊友功能用户在聊天过程中,即可在右侧的休闲娱乐一栏里,选择查看在线聊友链接,查看当前在线的聊友以及其所在的聊天室。相关的功能实现图如下:图5.13用户查看在线聊友图该页面的一些主要的功能的实现代码为:StringstrSql=select*fromuser_list;ResultSetrs=db.executeQuery(strSql);inti=0;while(rs.next()Stringstr_ChatRoom=rs.getString(chatroom);Stringstr_UserName=rs.getString(username);Stringstr_Integral=rs.getString(integral);i+;if(xiuxian.equals(str_ChatRoom)out.println(休闲娱乐);elseif(yuanfen.equals(str_ChatRoom)out.println(缘分天空);elseif(tantian.equals(str_ChatRoom)out.println(谈天说地);rs.close();285.3.6私聊功能(悄悄话)用户通过勾选输入面板上的悄悄话选项,在前面的输入文本中输入私聊的对象就可以与感兴趣的聊友进行私聊。相关的功能实现图如下:图5.14用户私聊图该功能的实现代码为:StringaloneTalk=request.getParameter(alonetalk);if(aloneTalk=null)aloneTalk=no;if(no.equals(aloneTalk)VectorMessage=null;synchronized(application)Message=(Vector)application.getAttribute(Message);if(Message=null)Message=newVector(30,10);if(Message.size()200)Message.removeAllElements();Message.addElement(aloneTalk);Message.addElement(username);Message.addElement(talkwith);Message.addElement(talkMessage);Message.addElement(systemSpeak);Message.addElement(action2);application.setAttribute(Message,Message);295.3.7趣味聊天功能用户通过选择输入页面的动作下拉框,即可在发言时自动带上相应的表情式语言。借此可以丰富聊天是趣味性。相关功能的实现图如下:图5.15用户趣味聊天图该功能的主要实现代码为:size=8style=font-size:9pt动作说话问好点头妩媚开朗坏笑苦笑白眼轻吻拥抱深情伤心害羞愤怒招手不满兴奋狂吻30委屈着急嚎啕撒娇奸笑飞脚抽掴假笑Stringaction2=;inti=action.indexOf(B);if(i!=-1)action=action.substring(0,i)+talkwithaction.substring(i+1);if(!action.equals(no)talkMessage=action+talkMessage;action2=yes;elseif(first!=null)talkMessage=talkMessage;action2=no;Message.addElement(action2);5.4高级用户管理功能5.4.1高级功能(踢人禁言)用户通过点击在输入页面的超链接“高级功能“进入高级用户踢人的界面,选择当前在线的一个用户执行踢人操作,该操作只有在当前用户积分超过1000分时才有效,并且会减少该用户50分,被踢用户将无法发言。该功能用于实现对用户的管理功能,积分的累积按日计算,每天增加2分,同日多次重复登录不予积分。被提出的用户即使重新登录也无法发言,只能看到别人对他的留言与公众的交流发言。31该功能的实现图如下:图5.16用户高级功能图图5.17用户高级功能成功图32图5.18用户被踢图图5.19被踢用户禁言图该功能的实现代码为:if(rs.next()Stringintegral=rs.getString(integral);inttemp=Integer.parseInt(integral);if(temp1000)temp=temp-50;33s=+temp;sql=updateusersetintegral=+s+whereusername=+username+;db.executeUpdate(sql);synchronized(application)sql=deletefromuser_listwhereusername=+kickname+;db.executeUpdate(sql);synchronized(application)VectoroutMessage=null;outMessage=(Vector)application.getAttribute(Message);if(outMessage=null)outMessage=newVector(30,10);Stringoutstr=系统公告:+kickname+被踢出聊天室;Stringstr1=no;StringsystemSpeak=yes;outMessage.addElement(str1);outMessage.addElement(username);outMessage.addElement(str1);outMessage.addElement(outstr);outMessage.addElement(systemSpeak);outMessage.addElement(str1);application.setAttrib
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 金融机构的在线文化活动与展览服务考核试卷
- 道路运输信息化发展路径考核试卷
- 铸造件的焊接工艺与质量控制考核试卷
- 新生儿感染预防要点
- 溺水的应急救护
- 疾病存在的意义
- 妇女心理疾病诊疗
- 腹痛的院前急救
- 内窥镜胶囊市场分析:预计2031年全球市场规模将为14.21亿美元
- 怎样提升孩子逻辑思维
- 施工现场建筑垃圾减量化专项方案
- 高三数学一轮复习题型与战法精准训练(新高考专用)7.2.2点线面的位置关系(针对练习)(原卷版+解析)
- 翻译理论与实践智慧树知到期末考试答案章节答案2024年湖南中医药大学
- 2024年吉林省中考历史试卷真题(含答案)
- 人教部编版三年级下册语文【选择题】专项复习训练真题100题(附答案解析)
- 免检车辆标志委托书
- 人教鄂教版科学18《制作日晷》课件-科学四年级下册人教鄂教版
- 云南开放大学实-用写作离线作业1-5
- 内科学(肾脏-内分泌-血液)智慧树知到期末考试答案章节答案2024年温州医科大学
- 食品安全与日常饮食智慧树知到期末考试答案章节答案2024年中国农业大学
- 信息安全、网络安全和隐私保护-信息安全控制清单(2024A1-雷泽佳编制)
评论
0/150
提交评论