版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、毕业设计指导毕业设计程序设计评价系统摘要随着互联网的广泛应用和计算机技术的快速发展,学生提高编程能力的愿望越来越强烈。该在线评估系统利用了BS模式和Windows系统提供的应用程序接口。借助网络这一方便有效的平台,可以快速方便地将测评结果返回给用户,提供交流的场所,从而起到提高学生计算机编程能力的作用。本系统以MyEclipse8.6为开发环境,主要使用ORM对象持久化技术,Hibernate为后台解决方案,Struts框架为前台开发。使用Tomcat6.0作为Web服务器,使用开源数据库MySQL作为连接数据库,实现了分层的目的,即显示层、业务逻辑层、数据持久层和数据库层。整个系统的各个模块
2、保持了高度的可重用性,模块之间的耦合度很低,保证了系统的高扩展性和可维护性。本文介绍了该系统的背景,指出了其开发的需求分析。然后,给出了系统的业务范围,分析了系统在各种基本功能需求下的具体需求。其次,阐述了系统总体结构的概要设计方案,并说明了模块层次和处理流程。再次,针对系统的答题和判卷模块,给出了详细的结构设计和逻辑流程,为以后的编码实现奠定了基础。最后,本文提出了系统测试方案,并为测试处理模块列出了测试结果。关键词:Struts框架;冬眠;MySQL数据库目录对于计算机器,也就是美国计算机协会。ICPC国际大学生编程竞赛,即acm国际大学生编程竞赛。ACM国际大学生编程竞赛(ACM-ICP
3、C或ICPC)是由美国计算机协会(ACM)主办的年度竞赛,旨在展示大学生的创新能力、团队精神以及在压力下编写程序、分析和解决问题的能力。经过近30年的发展,ACM acm国际大学生编程竞赛已经发展成为最具影响力的大学生计算机竞赛。【引用到百度百科】1.1.2课题的出现随着学生对编程的热情越来越高,这就需要一个专门的评价体系来完成。虽然有些高校有成功的在线测评软件,但都是基于自己学校的具体情况开发的。有些功能对其他院校不实用,难以自主控制题库和考试时间,达不到集中培训考试重点。此外,它只能在网络环境中使用,但不适用于没有连接到互联网的局域网。因此,有必要重新开发一个合适的评价系统。大多数高校都积
4、极参加了编程竞赛,我们高校也不例外。但是在实践和测试的过程中,我们发现并没有适合我院特点的编程测评体系,只能用传统的方式进行实践。因此,我的课题就是开发一套程序设计竞赛练习和平时测试的评价体系,提高平时训练的质量和学习效率,同时提高学生的实践能力。1.2选题的意义开发一个适合我校的程序设计测评系统,不仅提高了我们平时练习的效率,还可以应用到一些计算机学科的培训和考试中,如程序设计实训、大学三级考试系统等学科,实现自动考试和测评,大大减少考试中的冗余环节,减轻教师的工作量。第二章系统开发和软硬件要求2.1发展趋势国内很多高校都开发了自己的在线裁判系统(OJ onJudge),一般采用BS架构。除
5、了开发语言和程序编译器不同之外,其他模块如提问模块、回答问题模块、判断问题模块一般没有明显区别。大学采用Servlet+JavaBean编程技术,使用六种程序编译器:G+、GCC、Java、Pascal、C+和C,可以说包括了所有主流的程序编译器。它是在大学用PHP动态语言开发的,使用了四种程序编译器:C,C+,GPC和FPC。所以,我的项目也选择C+编译器。国外编程评测系统的开发和研究已经相当完善。他们的发展理念和方法与中国完全不同。因为国内各个大学开发的系统,主要用户是针对我们中国大学生开发的。而国外采用的是上传文件的方式,其他人根本看不到程序的源代码,这样就保证了安全性。通过中外对比不难
6、发现,我国开发的软件产品和设计理念更侧重于培训和测试模式,操作方便快捷,对安全性的要求也不是很高。出发点是训练编程能力;而国外的软件产品更侧重于程序员信息传递的安全性和性。2.2学科的主要方向现在OJ系统的业务逻辑对使用的关键技术相当熟悉,提问模块、问答模块、问题判断模块、线程轮询模块都相当完善,可以直接作为参考标准。虽然技术已经相当成熟,但是国内高校的OnJudge系统几乎都是两层系统,即业务逻辑层和数据库层,而且大部分都是Servlet单体技术开发的。这种结构的系统维护困难,程序扩展性不好。因此,我课题的主要方向是研究OnJudge系统的层次结构,对原系统进行重构,利用先进的MVC设计模式
7、和数据持久层技术实现程序设计评价系统。经过分析和考虑,OJ系统可以分为表示层、业务逻辑层、持久层和数据库层。2.3系统开发环境和技术方案1.采用Struts+Hibernate+JSP开发框架;2.系统采用四层架构;3.操作系统平台:Windows 7;4.数据库系统:MySQL 5.0;5.服务器平台:Tomcat 6.0;6.集成开发环境:MyEclipse 8.6;第三章系统需求与分析3.1系统的总体结构该系统主要包括四个模块,即用户管理模块、题库管理模块、问题回答模块和问题评判模块。该系统的使用可以提高培训质量和学习效率。此外,它还可以应用于小规模的计算机考试。本系统主要是为我校师生的
8、编程服务,旨在提高学生的编程实践能力。最终用户是我们学院的师生。学生可以凭自己的专业知识理解和操作系统,需要的维护人员少,无需培训。预计使用频率为30-50人/日。3.2系统可行性分析可行性分析对整个系统的开发至关重要,是系统开发成败的关键。系统的可行性大致包括以下四类标准。经济可行性是对一个项目或方案的成本效益的衡量。技术可行性是对特定技术方案的现实性以及技术资源和专家的可用性的衡量。时间可行性是衡量项目进度合理性的标准。操作可行性是方案在组织中的适当性的度量,也是人们对系统的感知的度量。3.2.1经济可行性开发中使用的硬件设备均已配置完毕,采用Windows 7平台。开源的Tomcat服务
9、器可以用作软件设备的Web服务器。使用开源的MyEclipse开发平台作为开发工具,MySql作为数据库,足够题库的数据存储。所有的开发和应用软件都是开源免费的,不需要额外的经济投入。开发这个系统所需的软硬件资源都有,所以在经济上是可行的。技术可行性关键问题是:如何在服务器端自动调用编译器;如果编译阶段通过,系统将如何调用准备好的测试数据来检查程序?如何控制结果等。采用的关键技术主要有:IO流的流水线技术;java调用外部程序的技术;线程轮询技术;文档管理技术。图书馆有大量的所需资料、书籍和电子书可供参考,加上导师的指导,在规定的时间;鉴于现有的软硬件资源,系统可以基于BS系统构建,采用MVC
10、设计模式,以保证系统的灵活性和可维护性。数据库使用开源的MySql作为后台开发,持久层使用Hibernate技术,开源的Eclipse作为开发环境,基本可以熟练掌握。因此,开发该系统在技术上是可行的。时间可行性根据本项目的规模分析,从系统开始到最终实施的时间是充足的,基本上可以达到预期的目标。另外,根据实际工作量和开发面临的困难,可以限时完成。3.3数据流分析3.3.1功能数据流的整体分析根据上述系统的基本特征及其完成的功能,可以得到系统与外部实体之间的操作关系。它反映了与系统交互的普通用户和管理员之间的整体关系,描述了系统的运行环境。系统的功能数据流图如图3-1所示。3-1功能级数据流图系统
11、用例描述整个系统中有两个角色:管理员和普通用户。普通用户和管理员通过网页登录系统后,可以完成各自的功能和操作。系统用例图如图3-2所示。3-2用例图用例描述如下:例1:学生在线判卷。1.新用户注册;2.注册用户登录;3.浏览试题,进入详细页面;4.用户开始回答问题;5.提交后,查看回答状态;示例2:管理员后台管理1.管理员登录;2.管理员查看和添加新主题;3.删除和修改添加的主题;4.检查注册用户,限制或删除非法用户;5.管理员注销;3.3.3系统开发技术方案评估系统基于四层BS架构模式设计,采用Hibernate+Struts+JSP技术实现。普通用户和管理员通过网页登录系统,获得不同的操作
12、权限,然后完成各自的操作。3.4 Struts框架的使用Struts为Java Web应用程序提供了现成的通用框架。Struts可以大大加快Web应用程序的开发速度。如果没有Struts,开发人员必须花费大量的时间和精力来设计和开发自己的框架。如果在Web应用中恰当地使用Struts,将会节省从头开始设计框架的时间,使开发人员可以专心于如何解决实际的业务问题。Struts有一组相互合作的类,Serlvet,JspTagLib。基于Struts框架的web应用基本符合jspmode2的设计标准,可以说是MVC设计模式的变革型。根据上面对框架的描述,我们很容易理解为什么Struts是一个web框架
13、,而不仅仅是一些标签库的组合。然而,Struts也包含丰富的标签库和独立于框架工作的实用程序类。Struts有自己的控制器,并集成了其他一些技术来实现模型层和视图层。在模型层,Struts可以很容易地与数据访问技术结合,包括E,JDBC和对象关系桥。在视图层,Struts可以与JSP、Velocity模板、XSL和其他表示层组件相结合。3.5 Hibernate简介Hibernate是一个开源的对象关系映射框架,可以应用于任何使用JDBC的场合,无论是在Java客户端程序中,还是在ServletJSP的Web应用中。Hibernate是对象关系映射的解决方案,缩写为ORM,简单来说就是将Jav
14、a中的对象和对象关系映射到关系数据库中的表。Hibernate在这个过程中提供了自动对应转换的方法,是Java应用程序和关系数据库之间的桥梁,它负责Java对象和关系数据之间的映射。Hibernate封装了通过JDBC访问数据库的操作,为上层应用提供了面向对象的数据访问API。3.6关系数据库关系数据库在处理大量数据等方面具有明显的优势。关系数据库以服务器的形式提供数据服务,对数据管理有很好的控制,在维护数据完整性和安全性方面考虑全面。对于本系统来说,数据库是整个流程的核心部分。本系统使用MySQL作为后台数据库,对后台数据进行操作(添加、修改、删除、查询等。).第四章是系统的总体设计与实现。
15、4.1数据库设计逻辑结构设计根据对系统总体结构的分析,为了满足系统各项功能的要求,在数据库中建立以下具体表格。1.用户表(用户号、密码、昵称、机构、类型、语言、提交次数、解数、注册时间、访问时间);2.题目列表(题目编号、标题、描述、输入、输出、输入路径、输出路径、用例输入、用例输出、提示、来源、日期、时限、存储限制、正确数、提交数、错误数、正确率、题目难度、提交数、是否求解、用例时限);3.状态表(状态号、标题号、用户号、运行结果、花费时间、占用内存、提交时间、主类名、代码长度、选择语言、提交数量);4.源代码表(状态号、源代码);5.编译表格(状态号、错误信息);4.1.2物理结构设计根据
16、逻辑结构,本系统物理数据库的设计结构如图4-1所示。4-1数据库图表数据库的具体设计表4-1用户信息表用户序列号字段名数据类型必要项目关键字系统默认值字段描述一个使用者辩证码Varchar(20)Y优先(priority的缩写)用户编号2密码Varchar(20)Y用户口令三缺口Varchar(100)Y用户昵称四学校Varchar(100)普通空附属机构五电子邮件Varchar(100)Y空邮箱六户类型Int(4)普通0用户类型七语言Int(11)普通0选择语言八使服从Int(11)普通0提交数量九解决Int(11)普通0回答的数量10注册时间日期时间普通空登录时间11访问时间数据时间普通空
17、存取时间表4-2主题信息表问题序列号字段名数据类型必要项目关键字系统默认值字段描述一个商品编号Int(11)Y优先(priority的缩写)空主题号2标题Varchar(200)Y标题三描述文本普通空标题描述四投入文本普通空输入容量五输出文本普通空输出容量六输入路径Varchar(255)普通空输入路径七输出路径Varchar(255)普通空输出路径八样本输入文本普通空示例输入九样本输出文本普通空示例输出10暗示文本普通空问题提示11来源Varchar(100)普通空主题源12有效期日期时间普通空提交日期13时限Int(11)普通0限期14内存限制Int(11)普通0存款限制15可接受的Int
18、(11)普通0正确数量16使服从Int(11)普通一个提交数量17比例Int(11)普通0准确率18困难Int(11)普通0题目难度19错误Int(11)普通0错误的数量20提交_用户Int(11)普通0提交数量21解决int(11)普通0解决了吗?22案例时间限制Int(11)普通0时间用例表4-3回答状态表解决方案序列号字段名数据类型必要项目关键字系统默认值字段描述一个固体Int(11)Y优先(priority的缩写)状态号2商品编号Int(11)YMUL主题号三使用者辩证码Varchar(20)YMUL用户编号四时间Int(11)普通0花费的时间五记忆力Int(11)普通0使用和保存六有
19、效期日期时间普通空提交时间七类名Varchar(20)普通0主类名八结果Int(11)普通MUL0运行结果九代码长度Int(11)普通0电码长度10语言Int(11)普通0选择语言11数字Int(4)普通0提交数量表4-4源代码信息表序列号字段名数据类型必要项目关键字系统默认值字段描述一个固体Int(11)Y优先(priority的缩写)状态号2来源文本普通空源代码表4-5编译信息表compileinfo序列号字段名数据类型必要项目关键字系统默认值字段描述一个固体Int(11)Y优先(priority的缩写)状态号2错误文本普通空出错信息4.2 SQL脚本设计建立数据库的SQL脚本如下#=#数
20、据库acm #=创建数据库acmuseacm#=# TABLE.1用户表字段:11 #=创建表用户(userIdvarchar(20),passwordvarchar(20)不为空,nickvarchar(100)不为空,schoolvarchar(100),emailvarchar(100),userTypeint (4),languageint(11)默认值为0,submitint(11)默认1,solvedint(11)默认值为0,regTimedatetime默认为NULL,accessTimedatetime默认为NULL,主键(用户标识);插入到用户(用户标识、密码、昵称、用户类型
21、、注册时间)值( admin , admin , manager ,2, 2007-06-10 08:27:49 );select * from users#=#表. 2问题表字段:22#=创建表格问题(proid int(11)not null auto _ increment主键,titlevarchar(200)不为空,描述文本默认为空,输入文本默认为空,输出文本默认为空,input _ pathwarchar(255)默认为空,output _ pathwarchar(255)默认为Null,sampleInput文本默认为NULL,sampleOutput文本默认为NULL,表格字段
22、:11#=创建表格解决方案(solIdint(11)不是空主键,proIdint(11) default 0 not null,userIdvarchar(20)不为空,timeint默认值0不为空,momeryint默认值0不为空,inDatedatetime不为空默认值 0000-00-00 00:00:00 ,classNamevarchar(20)不为空,resultint(11) default 0 not null,codeLengthint(11)默认值0不为空,languageint(4) default 0 not null,numint(4) default 0 not n
23、ull,指数(proId),索引(用户标识),索引(结果);#=# TABLE.4编译信息表字段:2 #=创建表编译信息(solIdint(11)默认0主键,错误文本默认为空);#=# TABLE.5源代码表字段:2 #=创建表源代码(solIdint(11)默认0主键,源程序正文);4.3系统架构设计为了满足规划评估系统的应用需求,进行灵活的评估分析,本系统采用BS架构作为系统解决方案。系统结构图如图4-2所示。4-2系统架构图如图4-3所示,系统在物理上分为三部分:浏览器客户端、应用服务器和数据库服务器。所有用户通过浏览器访问应用服务器,应用服务器和数据库服务器交互获取所需数据。数据存储数
24、据库采用MySQL。采用Hibernate+Struts技术作为系统的解决方案,将系统在逻辑上分为四层:数据库层、持久层、业务逻辑层和表示层,使系统具有较好的可扩展性,保证了其高可扩展性和可维护性。后台数据持久层采用ORM(对象关系映射)模式,其架构示意图如图所示。Tomcat6.0作为系统的应用服务器,使用hibernate默认的连接池技术,不需要单独配置。客户端采用浏览器的形式,满足零客户端的易用性要求。图4-3 ORM模式图4.4系统功能设计整个系统初步分为四个模块,即用户管理模块、题库管理模块、答题模块和问题评判模块。用户管理模块主要包括用户登录、用户注册和用户信息修改;题库管理模块主
25、要包括问题的添加、修改、删除、查询和用例添加;回答模块主要包括界面展示和问题提交;测试模块主要包括程序编译和程序运行。其中,关键问题是编译器如何在服务器端正常运行。整个系统的功能结构如图4-4所示。4-4功能设计图纸如图4-5所示,整个系统的四个功能介绍如下:(1)用户信息管理用户信息管理由普通用户和管理员共同完成,主要有三个功能:普通用户可以在线注册新用户信息,用户号不能重复。用户注册模块将用户提交的个人信息存储在数据库中,如图所示。4-5用户注册实现示意图为了确保用户的安全,普通用户可以修改他们在中注册的个人信息。在业务处理过程中,管理员可以删除非法用户。(2)题库的信息化管理题库的信息管
26、理主要由管理员完成,主要有三个功能:管理员可以以固定的格式添加新的测试问题和测试用例。管理员有权删除。对于有问题或错误的问题,管理员可以对其进行修改。(3)回答模块普通用户可以浏览试题,或者根据题目搜索查看题目详细信息,进入提交页面,选择要回答的题目数量和语言,编写要实现的程序代码,提交程序,进入回答状态页面,查看题目相关信息。(4)问题判断模块主要由编译、运行、答案对比三个功能组成。整个过程运行在服务器端,是这个系统的核心部分。当用户提交编写好的程序代码时,系统会先将代码存储在数据库对应的Sourcecode表中,同时将代码的副本复制到一个固定的文件名(如main.app)中作为编译源文件。
27、如果再次提交,最后编写的源代码将被新代码覆盖。然后根据用户提交时选择的语言,调用相应的语言编译器,用固定的源文件名编译文件。如果有错误,直接跳出问题判断模块到答案状态页面,显示结果为“编译错误”;如果编译成功,将进入运行环境,执行编译后的文件。如果运行有错误,会直接跳出问题判断模块到答案页面,显示结果为“运行错误”;如果操作也通过,则调用测试用例对操作后的文件进行逻辑测试,然后进入答案比对功能模块。如果与给定测试用例的输出比较后,测试用例的输出为真,跳转到回答状态页面,结果为“已接受”,表示用户提交的代码成功,对应表格中的提交数和解答数会增加1,正确率也会发生变化。如果比对结果为假,跳转到答案
28、状态页面,结果为“(答案错误)”;此外,如果超过问题给出的时间限制、内存大小限制、用例时间限制,答案状态页面会显示“超时”、“溢出”或“用例超时”等信息。因为系统采用的是轮询过程,同一时间只能判断一个用户的节目,其他用户提交的节目此时只能进入等待状态。答题状态页面上的结果会显示为“等待中”信息,直到已经判断完毕,最终完成判断问题的功能。如图4-6所示。4-6判断题流程图4.5页眉和页脚设计页面和导航栏design = center cell padding = 0 cellspacing = 0 用户修改|td管理员登录 root jdbc:mysql:localhost:3306acm(同o
29、rganic)有机.个人资料JDBC ACM 111 org.gjt.mm.mysql.Driver6.1.2编写持久层代码。用户Users.java的部分代码如下:package com . ACM . problem;标题描述;私有字符串输入;对要输入的标题内容的介绍;私有字符串输出;对要输出的标题内容的介绍;私有字符串输入路径;标题的输入路径;私有字符串outputPath标题的输出路径;私有字符串sampleInput用例输入;私有字符串sampleOutput用例的输出;私有字符串会话= null静态事务tx = nullstatic Logger Logger = Logger .
30、 get Logger(problem Dao . class);基于ID查找主题公共静态问题findById(int id)Problem pro = null尝试session = hibernate util . getsession();tx = session . begin transaction();pro =(Problem)session . get(Problem . class,id);tx MIT();catch(HibernateException e)e . printstacktrace();tx . roll back();最后hibernate util .
31、closession();return pro查找下一个主题IDpublicintfindNextId()int proid = 0;尝试session = hibernate util . getsession();tx = session . begin transaction();query q = session . create query( select max(p . proid)from prom p );list list = q . list();for(inti = 0;I list . size();i+)proId =(Integer)list . get(I)+1;
32、tx MIT();catch(HibernateException e)e . printstacktrace();tx . roll back();最后hibernate util . closession();returnproId根据题目找到题目集公共静态列表findByName(字符串标题)List list = null尝试session = hibernate util . getsession();tx = session . begin transaction();query q = session . create query( from Problem p where p
33、. title =:title );q.setString(1,title);list = q . list();tx MIT();catch(HibernateException e)e . printstacktrace();tx . roll back();最后hibernate util . closession();退货单;查找所有主题的集合公共静态列表getAllProblem()List list = null尝试session = hibernate util . getsession();tx = session . begin transaction();list = se
34、ssion . create query( from Problem )。list();tx MIT();catch(HibernateException e)e . printstacktrace();tx . roll back();最后hibernate util . closession();退货单;删除问题公共列表delProblem(int delProblemId)尝试session = hibernate util . getsession();tx = session . begin transaction();for(inti = 0;i delProblemId.leng
35、thi+)Problem Problem =(Problem)session . get(Problem . class,delProblemIdI);session.delete(问题);tx MIT();catch(HibernateException e)e . printstacktrace();tx . roll back();最后hibernate util . closession();returngetAllProblem();查询主题信息公共问题getOneProblem(intproId)问题problem = null尝试session = hibernate util
36、. getsession();tx = session . begin transaction();problem=(问题)session.get(问题.类,proId);tx MIT();catch(HibernateException e)e . printstacktrace();tx . roll back();最后hibernate util . closession();退货问题;修改主题信息public void updateProblem(问题问题)尝试session = hibernate util . getsession();tx = session . begin tr
37、ansaction();session.update(问题);tx MIT();catch(HibernateException e)e . printstacktrace();tx . roll back();最后hibernate util . closession(); 这个类继承了BaseDAO.java,而BaseDAO.java主要实现了添加、删除、修改所有模块的通用功能。为共享和使用其他模块,简化代码长度,单独提出。BaseDAO.java电码如下:BaseDAO.java简要引用;公共类BaseDAO 静态会话session = null静态事务tx = null创建新对象公共
38、静态void createObj(问题o)尝试session = hibernate util . getsession();tx = session . begin transaction();session . save(o);tx MIT();catch(HibernateException e)e . printstacktrace();tx . roll back();最后如果(会话!=空)hibernate util . closession();删除对象公共静态void de object(int id)尝试session = hibernate util . getsessio
39、n();tx = session . begin transaction();object o = session . get(problem . class,id);session . delete(o);tx MIT();catch(HibernateException e)e . printstacktrace();tx . roll back();最后hibernate util . closession();修改对象public static void MDF obj(Object o)尝试session = hibernate util . getsession();tx = se
40、ssion . begin transaction();会话.更新(o);tx MIT();catch(HibernateException e )e . printstacktrace();tx . roll back();最后hibernate util . closession();6.1.4编写表示层表示层报告是为了提供一个友好的界面来传递信息和与用户交互。JSP只负责输入和输出,它没有处理数据的能力;动作准备JSP页面的数据处理,将数据放入请求中,然后将数据定向到输出页面。1.编写ActionForm在持久层中,有一个问题类封装了持久数据的信息。它的含义和表现层的ActionForm不一样,但是代码是一样的。之所以要写两个类似的类,是因为可以减少层间的耦合。2.写一个动作动作就像一个数据路标,处理数据并将其导向正确的页面。这个项目中的所有动作都继承了DispatchAction类,使得处理业务更加方便。没必要每个业务都写一个Action类,用一个参数Action来指导。6.2测试测试就是把模块放在一起,看接口之间的连接是否正常,各个部分的功能能否正常实现。表6-1测试结果表序列号检查项目输入动作输入值预期产出有效效应错误原因一个浏览测试页面打开主页浏览测试页面。错误,未显示。浏览页面JSP代码时出错2提交页面标题和程序代码
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年食品安全合同书
- 2024影视道具租赁合同参考范本
- 工程承包合同示例文本
- 2024举办合同培训班的通知
- 2024年度销售合同智能家居产品销售合同(04版)
- 2024蔬菜超市采购合同
- 2024年度安全设备维护及更新改造合同
- 农村新建住宅协议书
- 2024天台县花生种植收购合同样书
- 2024工业生产厂房租赁合同范本
- 幼儿园教学课件中班美术《百变的花瓶》课件
- 液化石油气充装操作规程(YSP118液化石油气钢瓶)
- 工程样板过程验收单
- 颅内动脉动脉瘤介入治疗临床路径
- 粮食仓储场建设项目可行性研究报告
- 珠宝销货登记表Excel模板
- 深基坑开挖施工风险源辨识与评价及应对措施
- 唯美手绘风花艺插花基础培训PPT模板课件
- 《现代汉语语法》PPT课件(完整版)
- 5G智慧农业建设方案
- 航海学天文定位第四篇天文航海第1、2章
评论
0/150
提交评论