




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模拟驾照考试系统摘要目前商业竞争越来越激烈,工作和生活的节奏也在一天天的加快。现在,身边很多的行业在这种社会节奏下想要生存,用机器帮助提高劳动生产效率已经成为普遍的方法,通过这些方法来降低生产成本,增强单位的竞争能力。一种新的教学方式也逐渐受到越来越多的重视,那就是电脑辅助教学。很多的学校以及培训中心,都大量使用电脑来辅助教学,通过这种方式,学校的教学变得规范,具备很高的效率,而且可以最大限度地节约成本。同时这种方式具有很大的灵活性,系统的架设,系统的调整,都非常弹性。本论文详细描述了模拟驾照考试系统开发的具体实现过程,着重介绍了系统的界面、数据库设计、出题方式以及测试过程。本系统采用现在流行的JavaWeb工程开发技术,配合Struts2,Spring,Hibernate框架实现整个系统,界面采用CSS(CascadingStyleSheet)布局控制。成功的实现了模拟驾照考试系统,试题的增加、修改、删除,用户权限管理等基本有效功能。系统具有一定的可扩展性、易于维护、安全性较好,并且具有美观的界面,满足了考试系统的基本要求,并增加了错题练习、章节练习和成绩统计等新鲜功能,可以在各种符合JavaWeb标准的容器中高效平稳运行,并且常用主流的浏览器是完全兼容的。很多专家学者表明,这种符合具有良好构架、扩展性和安全性的模拟驾照考试系统,被广大考生接受只是时间上的问题。驾照模拟考试系统的前景非常光明,充满了无限生机。关键词考试系统;交通规则;对象图导航SimulateDriverLicenseTestingSystemAbstractToday,thecompetitionismoreandmorefiercely,therhythmofpeople'slifeandworkarebeingacceleratedsharplytoo.Thealmostofallprofessionforadapttonewsocietyrhythm,plentyofadoptmachinestoprogressproductiveoflaborandreducedthecostofproduce,tostrengthencompetentabilityforenterprise.Usecomputertohelpeducationisattachedimportancetoasanewwayaboutteachingandstuding.Awealthofcomputersareusedtoassisteducationattheschoolandthecenteroftraining,improvetoproductiveofeducation'sworkatschoolandletitnormal,savecostinthemostlimit.Thispaperintroducesthedetailedimplementationproceduresandconcentratesonintroducingtheinterfaceofthesystem,thedesigningofdatabaseandthetestingprocedure.ThesystemusesJavaWebdevelopmenttechniquewhichconcertwithStruts2SpringHibernate,andwhoseinterfaceadoptstoXHTML+CSS.Itarchlymeetsthebasicfunctionofquestionpublishing,updating,deleting,andthemanagementofuser.Theinterfaceisnotonlybeautifulandfriendlybutalsocanbeextended,maintainedandishighlysecured.Soitcanrealizethebasicrequirementsofantrafficregulationstest,andcanberuninanykindsofnormalcontaineraccordedwithJavaWeb,andalsoiscompatiblewithmostofthefrequently-usedbrowsers.Itcanbepredictedthatthiskindoftrafficregulationstestsystemwhichisaccordedwiththe2.0standard,withitsbetterframe,extendibilityandsecurity,willwinmoreandmorepopularity.Thefutureoftrafficregulationstestisverybrightandlively.KeywordsExaminationsystem;trafficregulations;Object-GraphNavigation目录摘要 =1\*ROMANIAbstract =2\*ROMANII第1章绪论 11.1课题背景 11.2模拟驾照考试系统现状与发展 11.3模拟驾照考试系统的开发意义 2第2章技术工具介绍 32.1JSP介绍 32.2OGNL介绍 32.3JAVA集合框架介绍 42.4MySQL介绍 5第3章需求分析 63.1系统概述 63.2系统目标 63.3系统体系结构要求 73.4交通规则考试业务描述 73.5系统总体描述 93.6系统功能描述 93.6.1系统功能需求概述 93.6.2系统功能详细描述 103.6.3系统主要活动详细描述 153.7系统数据库需求 163.7.1E-R图 163.7.2数据库连接 173.8系统运行环境要求 18第4章系统设计 194.1总体设计 194.1.1用户特点 194.1.2系统体系结构设计 194.2系统模块划分 204.2.1用户操作前台设计 214.2.2管理员操作后台设计 224.3数据库设计 244.3.1数据字典设计 244.3.2创建数据库和数据表 264.4首页及主要页面设计 274.5整站类设计 294.6主要功能模块页面设计 30第5章系统开发实现 345.1数据库配置实现 345.1.1数据库连接 345.2所有DAO,Service,Action依赖注入配置 345.3模拟考试抽题 365.4错题练习 375.5保存考试结果 395.6图片文件上传 415.7测试 435.7.1测试实例 445.7.2用户注册测试效果 455.7.3用户登录测试效果 455.7.4过滤器功能测试 465.7.5章节练习正确率测试 475.7.6模拟考试模块测试 485.7.7修改个人信息页面测试 495.7.8题目跳转测试 495.7.9管理员添加题目测试 505.7.10单元测试 515.7.11测试结果及分析 51结论 53致谢 54参考文献 55附录 56绪论课题背景目前商业竞争越来越激烈,工作和生活的节奏也在一天天的加快。现在,身边很多的行业在这种社会节奏下想要生存,用机器帮助提高劳动生产效率已经成为普遍的方法,通过这些方法来降低生产成本,增强单位的竞争能力。一种新的教学方式也逐渐受到越来越多的重视,那就是电脑辅助教学。很多的学校以及培训中心,都大量使用电脑来辅助教学,通过这种方式,学校的教学变得规范,具备很高的效率,而且可以最大限度地节约成本。目前驾照考试交通规则教学之所以会浪费大多数时间,那是因为技术原因以及学员自身情况,不仅教学效率低,而且教学成本大幅度上升,不利于市场的竞争。对于这种情况,新的教学方式一定会产生,在当前互联网飞速发展的今天,更需要一个基于互联网的系统,以方便其模拟考试工作所用,提高学员的学习效率,减轻教学人员的劳动强度,提高其劳动效率,真正做到解放生产力,从而创造更多的劳动价值;使学校更规范、科学、高效、有更大的发展潜力。为了实现互联网教学,我决定运用Struts2,Spring,Hibernate三个框架设计一款出题快速准确,题库可以自行管理,能按考试题库进行随机出题,顺序出题,能对选定科目类型进行针对练习,练习时能马上提示学员所选答案的正确性,模拟考试后能对考试中做错题进行重点练习,练习或考试中能进行计时等功能。由于系统是基于网络架设的,对驾校管理人员来说,适应服务器的管理将会是一大难点。为此,在我的这个系统的预想中,后台管理系统也就成了重中之重。将系统的后台管理与前台的考试结合在一起,能更有利于系统的维护。中国驾校数据众多,就假设服务而言,一个区域只要配置好一台服务器,就可以支持同一区域下很多台客户端使用。信息的发布与维护也变得相对简单。就交通规则考试题目而言,完全可以让后台管理人员,严格依照公安部交通规则题库规范来对考试题目进行更新与维护,在通过公安部的认可后,可以保证考试网点系统题目的正确性、权威性。模拟驾照考试系统现状与发展随着中国经济的飞速发展,越来越多的人拥有自己的汽车,随之而来的是,大量人员需要通过驾照考试,顺利拿到驾驶执照。考试需求很大,但是能让考生练习的设备是有限的,不能够满足所有人的练习要求。很多从国外回来的人,特别是既考过国外驾照又考过国内驾照的人,都有一种普遍看法,那就是国内考驾照太容易了,几乎只要交钱就能轻松拿到驾照。其实根本原因是考试系统不能让所有人都完完全全学好交通规则。目前的考试系统还只停留在客户端与服务器之种传统模式下,考试人员必须要到驾校去练习。目前使用基于网络的考试系统来训练考试人员驾校,相对来说非常少,而市场需求相对来说很大,要想从根本解决这个问题,需要各方面的支持才行,其中一方面就是要建立一个良好的,强大的基于浏览器服务器的考试系统。就目前情况来看,家庭电脑的普及率还是很高的,基本上有车的人家里,都会有一台可以上网的电脑。正因为如此,基于互联网的系统成为了一个很有效解决上面问题的途径。当今的中国互联网发展,已经完全能承载模拟驾照考试的需求,很多先进的技术不断的为互联网的发展注入新鲜的血液。只要把好管理这一关,基于互联网的考试系统将会充满无限生机与活力。模拟驾照考试系统的开发意义当今流行的B/S(Browser/server)系统结构,是本系统的亮点。模拟驾照考试系统,适应了驾驶员培训教育发展以及教育形式不断更新的需要,对用户来说,不仅可以减少人力、物力和财力资源的浪费,更重要的是有助于提高学员考试的通过率。系统不需要安装,节约了本地计算机资源,方便了用户的接入,只要能上网就能随时模拟练习,这和以往单机版的驾驶员理论考试系统相比有了很大的飞跃,同时也满足了当今驾校学员爆炸式增长的需求。该系统经过试运行及测试,能符合当今此类系统的先进性、实用性、可靠性等特点,将引领驾驶员理论考试网上模拟系统的新模式。随着互联网的普及和驾驶员培训事业的不断发展与壮大,会有越来越多的用户乐于接受驾驶员理论考试的网上模拟,其市场潜力会得到充分发挥。就社会意义而言,通过基于互联网来满足大量的考试需求,增加了考生学习交通规则的时间与机会,考生也就能够更好的掌握交通规则,这将有很大的社会意义。马路杀手将会越来越少,这将成为一种良性的循环。就技术而言,之前从没有接触开发框架的我,将会从中学到关于设计模式,系统架构,系统部署等多方面的知识。以后参加工作,开发相似的系统,都会从中有所借鉴。所以,我决定以模拟驾照考试系统为题,以此为切入点,研究针对驾校模拟考试的系统,并认真进行设计、开发、和软件测试,努力开发一个有现实意义的模拟驾照考试系统。技术工具介绍JSP介绍JSP(全名是JavaServerPages)这个技术是由SunMicrosystems公司所提出和许多公司参与共同建立的一种使软件开发者可以响应客户端请求,而动态生成HTML(HypertextMarkupLanguage)、XML(ExtensibleMarkupLanguage)或其他格式文档的Web网页的一种技术标准。JSP技术是一种脚本语言,这个脚本是以Java为基础的,JSP网页为整个服务器端的Java库单元提供了一个接口来服务于HTTP(hypertexttransportprotocol)的应用程序,也就是说Web容器会把JSP在后台翻译成为支持Java的并且可以相应超文本传送协议请求的代码。JSP使Java代码和特定的预定义动作可以嵌入到静态的HTML页面中。JSP句法增加了被称为JSP动作的XML标签,它们用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库提供了一种和平台无关的扩展服务器性能的方法。JSP被JSP编译器编译成JavaServlets。一个JSP编译器可以把JSP编译成JAVA代码写的servlet然后再由JAVA编译器来编译成机器码,也可以直接编译成二进制码。OGNL介绍OGNL是Object-GraphNavigationLanguage的缩写,它是一种功能强大的表达式语言(ExpressionLanguage,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。OGNL可以让我们用非常简单的表达式访问对象层,例如,当前环境的根对象为user1,则表达式person.address[0].province可以访问到user1的person属性的第一个address的province属性。这种功能是模板语言的一个重要补充,例如jsp2.0,velocity,jelly等等,都有类似的功能,但是ognl比它们完善得多,而且以一个独立的lib出现,方便我们构建自己的框架。webwork2和现在的Struts2.x中使用OGNL取代原来的EL来做界面数据绑定,所谓界面数据绑定,也就是把界面元素(例如一个textfield,hidden)和对象层某个类的某个属性绑定在一起,修改和显示自动同步。和struts1.x的formbean相比,这样做的好处非常明显:在webwork中不需要为每个页面专门写formbean,可以直接利用对象层的对象。例如在对象设计中,我们的User和Person是分开的,而一个注册用户界面需要填写两者的内容,在webwork中,就可以保持后台的对象结构,把属于用户属性的界面元素用user.person.xxx绑定,把属于账号属性的界面元素用user.xxx绑定。JAVA集合框架介绍Collection层次结构中的根接口。Collection表示一组对象,这些对象也称为collection的元素。一些collection允许有重复的元素,而另一些则不允许。一些collection是有序的,而另一些则是无序的。JDK不提供此接口的任何直接实现:它提供更具体的子接口(如Set和List)实现。此接口通常用来传递collection,并在需要最大普遍性的地方操作这些collection。包(bag)或多集合(multiset)(可能包含重复元素的无序collection)应该直接实现此接口。所有通用的Collection实现类(通常通过它的一个子接口间接实现Collection)应该提供两个“标准”构造方法:一个是void(无参数)构造方法,用于创建空collection;另一个是带有Collection类型单参数的构造方法,用于创建一个具有与其参数相同元素新的collection。实际上,后者允许用户复制任何collection,以生成所需实现类型的一个等效collection。尽管无法强制执行此约定(因为接口不能包含构造方法),但是Java平台库中所有通用的Collection实现都遵从它。此接口中包含的“破坏性”方法,是指可修改其所操作的collection的那些方法,如果此collection不支持该操作,则指定这些方法抛出UnsupportedOperationException。如果是这样,那么在调用对该collection无效时,这些方法可能,但并不一定抛出UnsupportedOperationException。例如,如果要添加的collection为空且不可修改,则对collection调用addAll(Collection)方法时,可能但并不一定抛出异常。一些collection实现对它们可能包含的元素有所限制。例如,某些实现禁止null元素,而某些实现则对元素的类型有限制。试图添加不合格的元素将抛出一个未经检查的异常,通常是NullPointerException或ClassCastException。试图查询是否存在不合格的元素可能抛出一个异常,或者只是简单地返回false;某些实现将表现出前一种行为,而某些实现则表现后一种。较为常见的是,试图对某个不合格的元素执行操作且该操作的完成不会导致将不合格的元素插入collection中,将可能抛出一个异常,也可能操作成功,这取决于实现本身。这样的异常在此接口的规范中标记为“可选”。由每个collection来确定其自身的同步策略。在没有实现的强烈保证的情况下,调用由另一进程正在更改的collection的方法可能会出现不确定行为;这包括直接调用,将collection传递给可能执行调用的方法,以及使用现有迭代器检查collection。CollectionsFramework接口中的很多方法是根据equals方法定义的。例如,contains(Objecto)方法的规范声明:“当且仅当此collection包含至少一个满足(o==null?e==null:o.equals(e))的元素e时,返回true。”不应将此规范理解为它暗指调用具有非空参数o的Collection.contains方法会导致为任意的e元素调用o.equals(e)方法。可随意对各种实现执行优化,只要避免调用equals即可,例如,通过首先比较两个元素的哈希码。(Object.hashCode()规范保证哈希码不相等的两个对象不会相等)。较为常见的是,各种CollectionsFramework接口的实现可随意利用底层Object方法的指定行为,而不管实现程序认为它是否合适。MySQL介绍MySQL是一个小型,轻量级的数据库系统。数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。MySQL有以下特性。使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。支持AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多种操作系统。为多种编程语言提供了API。这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。支持多线程,充分利用CPU资源。优化的SQL查询算法,有效地提高查询速度。既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。提供TCP/IP、ODBC和JDBC等多种数据库连接途径。提供用于管理、检查、优化数据库操作的管理工具。可以处理拥有上千万条记录的大型数据库。与其他的大型数据库例如Oracle、DB2、SQLServer等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQLCluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。需求分析系统概述本模拟驾照考试系统提供对用户模拟考试实现的支持。本套开源代码的模拟驾照考试系统,满足用户对模拟驾照考试系统的需要本考试系统面向一般用户,对Web技术有一定了解的人群,需要掌握浏览器的使用方法。本着实用精神,以及良好的商业运作模式,本系统将完成基本考试功能并提供较强的接口对更多功能提供支持,通过这些接口可以弹性的增加新的功能。系统目标全部实现模拟驾照考试系统的基本功能:包括用户登录,用户注册,验证码,模拟考试,按章节练习,错题练习,顺序出题,统计考生自测情况功能。完成对考试系统的后台管理功能:包括添加管理员,维护用户信息,维护管理员信息,对试题的添加,修改删除,维护考生测试结果。服务器要:支持JSP/servlet容器的主机。主页面及次页面数量:前台主页1个,次页面19个。后台主页面1个,次页面21个。管理及内容录入任务分:基本管理功能由普通管理员操作。页面效果及风格:前台页面风格固定,后台风格固定。信息安全性保障:数据库及JavaWeb服务器物理安全。程序代码安全,无后门,权限分配及管理安全,密码安全,Hibernate操作数据库,屏幕SQL(StructuredQueryLanguage)注入等不安全因素。系统体系结构要求本系统采用B/S体系结构,B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证后,不需要人的参与,系统可以自动分配给用户一个账号进入系统,系统物理结构如图3-1所示。控制器(控制器(Servlet)视图(JSP)浏览器(Model)JavaBean请求响应应用服务器数据库实例化图3-1系统的物理结构图左部分浏览器属于客户端,右部分属于服务器。其中控制器及业务逻辑使用Struts2实现,视图由JSP实现,数据库采用MySQLServer5.0。交通规则考试业务描述交通规则考试流程是由公安部规定的,具体内容如下。学员在领取科目一考试受理凭证后,先核对受理凭证上的基本信息(如姓名、身份证号、照片、准驾车型)是否与本人相符,无误后按受理凭证上的考试时间和考试地点,到车管所考场参加考试。自觉遵守考场纪律和维护考场秩序,严禁将考试书籍和个人随身携带的物品(包括手机、手提包)带入考场,禁止任何形式的作弊行为,保持肃静。否则,被车管所注销成绩或学籍,责任自负,交通规则考试业务流程如图3-2所示。申请人申请人领取科目一考试受理凭证进入考场登录系统开始考试提交答案,查看成绩领取考试通过凭证核对凭证考务人员监督图3-2交通规则考试业务流程图用户需要登录到系统之才能开始接下来的操作,用户操作流程为:用户操作的时序图,如图3-3所示。图3-3用户操作时序图系统总体描述本系统以交通规则考试为目标,设计开发出一个满足交通规则考试的,对交通规则考试整体流程,主要包含考试系统相关流程的系统。要求软件分为前台和后台两大部分,具有如下功能:用户注册,用户登录,个人信息维护与显示,顺序练习,章节练习,随机练习,错题练习,开始考试,管理员登录,管理员个人信息维护,管理员信息管理,用户信息管理,考试题目管理,考试成绩查询。系统功能描述系统功能需求概述用户操作前台:在用户操作前台要实现用户注册、个人信息管理、章节练习、顺序练习、错题练习、随机练习、考试模块及相应的增加、删除、修改、查询等管理功能。系统功能详细描述先通过用例图看一下用户前台,与管理员后台的相关信息。如图3-4与3-5所示。图3-4用例图图3-5用例图用户注册功能当用户首次进入系统时,应该可以清晰的看到用户注册的入口。进入注册模块后,用户可以看的功能有为:欢迎信息,并且提示用户当前为注册页面;考生信息填入表单,表单包括密码校验功能,身份证校验功能,重置功能;考生信息填写错误提示功能。当用户注册成功后,系统自动跳转到登录界面。系统主要活动详细描述系统活动主要分为考生活动和管理员活动两部分。考生从登录系统时,会经历如下几个活动:验证登录,此时系统判断用户输入信息是不是合法的,如果不合法那么本次操作活动结束,如果合法,用户进入了功能模块选择状态,用户可以选择维护自己的信息,可以开始练习,同样也可以开始考试,当这些动作都没成后,系统自动进行相应数据的存储,之后本次活动结束,考生活动如图3-6所示。图3-6用户活动图管理员会经历如下几个活动:系统数据库需求管理系统最重要的就是数据,数据安全是关系到企业的命脉,所以,为了防止出现数据损坏或者不可预料的错误,需要对数据进行备份和还原:同时准备两个数据库,这样增加的数据的安全性,同时也要支持热备份,也就是说,在系统不关闭的情况进行备份,还要定期检查备份日志。数据恢复简单的通过将备份数据重新导入到数据库中实现。E-R图综合以上功能需求描述,建立模拟驾照考试系统E-R模型,其中涉及到模拟驾照考试系统所需要的管理员信息实体、用户信息实体、题目信息实体、考试结果信息实体、章节信息实体,错题信息实体以及他们之间的关系E-R如图3-8与图3-9所示。管理员信息实体管理员信息实体管理员id性别加入时间密码级别名称图3-8管理员信息实体数据库连接本系统使用通过Spring来配置Hibernate的数据连接池,数据库连接采用JDBC(JavaDataBaseConnectivity)。连接池采用直接连接,连接数可以通过Spring连接池属性配置,但是不能超过MySQL支持的最大连接数。数据库连接池可以自动释放没有用的连接,等待新的连接。系统运行环境要求1.硬件环境服务器端要求:CPU,InterPentiumⅣ或AMDAthlon3500+或更高;内存,256MB;硬盘,500MB。客户端要求:CPU,InterPentiumⅢ或AMDAthlon2800+或更高;内存,512MB。2.软件环境服务器端要求:操作系统,WindowsXP或更高、LinuxServer、Unix;JavaWeb容器,JDK1.6或更高、Tomcat6x或更高;数据库系统,MySQLServer6.0。客户端要求:操作系统,能支持浏览器的多媒体系统;浏览器,IE8.0、IE9.0、Firefox2、Firefox3、chrome及同类浏览器;浏览器插件及脚本要求,JavaScript。3.数据库支持版本适于Windows7或Windows8操作系统的MySQLServer5.x数据库。系统设计总体设计用户特点最终用户一般为非专业技术人员,对计算机技术没有详细的、系统的了解,所以,此软件的开发必须尽可能的提供友好的操作界面、简单明晰的操作流程和详细的提示指导信息。让用户易于操作,同时还要能满足用户的需求。系统体系结构设计模拟驾照考试系统是一个基于Struts2.0,Spring,Hibernate三大框架开发的Web服务,因些其系统体系结构应该符合Web应该部署的需求。再根据前面的需求分析,为了更加科学和完美地完成本设计,本系统还采用Apache组织的Struts开源框架(2.0版本)构建控制层和业务层。采用Struts2框架结构的Web应用系统主要由业务逻辑、控制器、模型和视图模块组成。其中的控制器、模型和视图为Struts2框架结构的主要组成部分,而事务逻辑则是需要实现的系统业务逻辑处理部分所必须的模块。严格的说系统应该使用专门的部分实现业务逻辑,而不是使用Struts2来实现,但就本系统而言,简单的处理逻辑放在Actoin当中,复杂逻辑引入专门的业务逻辑处理单元来进行处理,系统体系结构设计如图4-1所示。编写编写HibernateMapping文件和持久化实体类编写DAO和实现编写Service接口方法与实现编写Action与相关FormJSP页面分析模块涉及的表,确定表之间的关系实体层Web层根据模块需要的持久化操作,确定方法业务数据呈现,对用户操作进行控制处理页面和业务逻辑的交互数据验证转换编写业务逻辑,调用DAO操作DAO层服务层图4-1系统体系结构系统模块划分对于各项功能进行集中分块,按照模块化程序的要求,把程序划分成独立命名且可独立访问的模块,每一个模块完成一个子功能,把这些模块集成起来构成一个整体,实现系统功能的高内聚低耦合。模拟驾照考试系统共分为三个大模块:用户操作前台、URL过滤器、管理员操作后台。在这三个模块之下包含十二个子模块,这十二个模块又分别拥有自己独特管理的功能,这些功能包括用户注册模块,个人信息维护模块,练习模块,退出登录模块,成绩查询模块,管理员信息查询模块,题目信息管理模块,分页功能模块,正确率统计模块,分页模块,自动跳转模块,试题抽取模块,时间管理模块,答题信息呈现模块,答题结果统计模块,答案提示模块,图片上传模块,验证码生成模块,用户信息校验模块。在这些模块的相互配合下,组成了模拟驾照考试系统,下面是对结构结构的图形表示。总结构如图4-2所示。模拟驾照考试系统模拟驾照考试系统用户操作前台管理员操作后台用户注册个人信息维护章节练习顺序练习随机练习错题练习考试模块退出与登录正确率统计模块自动分页模块答案提示模块用户信息校验试题抽取模块时间管理模块答题信息呈现答题结果统计与错题存储URL过滤器退出与登录个人信息维护管理员信息考生信息维护题目信息管理成绩查询模块验证码生成模块图片上传管理分页模块题目跳转模块图4-2系统模块图用户操作前台设计用户注册:这个模块主要满足了用户的注册需求,正如需求分析中描述的那样,没有注册过的用户可以通过注册入口进行注册模块,在这里用户填写必要的信息,提交表单后,系统自动对填写的信息进行验证,例如对身份证进行验证。管理员操作后台设计正常管理员和超级管理员都可以登录到后台对系统进行相应的维护。管理员登录:这个模块依靠于管理员的信息,在登录时,系统自动到数据库中进行对比,返回登录情况,这个模块可以调用验证码生成功能,为登录功能提供保障。提供校验功能。题目信息管理:考试题目管理是后台管理中很重要的一个功能模块,它为系统题库,提供支持与维护功能,当当超级管理员和普通管理员成功登录之后,就可以通过考试题目管理入口对所有类型题目进行维护了。从入口中进行之后,管理员会看到以下七个章节的入口:道路交通安全法律、法规和规章。数据库设计根据模拟驾照考试系统的功能需求和模块划分,本站的数据库主要有错题信息、题目信息、用户信息、章节信息、结果信息、管理员信息等表。数据库的设计通常是以一个已经存在的数据库管理系统为基础的,常用的数据库管理系统有Access、SQLServer、Oracle、MySQL、DB2等。XML也可以当作是一个小型的数据库。根据用户需求和系统分析,本系统采用MySQLServer社区版本数据库管理系统。在MySQLServer的数据库管理系统中建立名称为drivingtestweb的数据库。数据字典设计根据系统功能设计要求和模块划分,本站的数据库主要包括管理员信息表、题目信息表、用户信息表、考试结果表、章节信息表、错题信息表等6个表。1.章节信息表:课程信息表应该有如下字段:id它是主键,唯一表示一个章节信息;name,存储了一个章节的信息;joinTime,存储了一个新的章节加入的时间,详细内容如表4-1所示。表4-1章节信息表结构字段名数据类型长度键备注idbigint8主键标识符namevarchar60课程名joinTimetimestamp加入时间创建数据库和数据表使用MySQLServer5.0管理器来创建数据库:创建一个本地数据库drivingtestweb,向drivingtestweb中添加6个数据表,分别是题目信息表、管理员信息表、用户信息表、考试结果表、章节信息表、错题信息表。数据库创建有两种方式:用SQL命令或企业管理器都可以创建数据库。本系统采用企业管理器创建drivingtestweb数据库。将数据库设置成标准角色,同时添加使用数据库的用户,然后给不同的用户授予不同的访问数据库的权限,允许以此用户登录后进行表、视图、角色的创建等。创建数据表首先连接一个数据库,即打开数据库画板后,点击鼠标右键,新建立一个连接,用户名是root密码也是root,端口号是3306,点击连接,这样就成功连接到数据库当中了。在模型管理器中右键,点击创建数据库,取名为drivingtestweb。这样一个数据库就建立好了。在数据库上找到Table右键点击创建表,依次创建主键及主键相关信息,之后创建表的其它属性和相关描述信息,这些工作完成之后,就可以为新表插入数据,关闭该画面可以保存数据,在以后的数据窗口中可以预览该数据表。创建好的drivingtestweb数据库,如图4-3所示。图4-3创建好的数据库关系图首页及主要页面设计本系统页面设计中,分如下几个包:MySQL_DB,Images,exam3_img,manage,exam,JS,CSS,其他页面都在WebRoot下。CSS存储层叠样式表,用来控制系统页面布局;exam里面有考试模块最重要的exam.jsp页面;JS中存放了相应的javascript脚本为网页提供相应动作;把后台管理系统的所有页面都放在manage里,也包括框架信息;MySQL_DB中存放了系统最原始的数据库,方便发布;Images里存放了模拟驾照考试系统中所有的图片,其中包括考试题目图片。下面是一些页面的详细说明,如表4-7所示。表4-7主要页面文件及其作用文件名说明login.jsp前台登录界面manage_frame.jsp前台功能主界面listLeft.html考试功能选择页面
网站文件结构如图4-4所示。图4-4网站文件结构图整站类设计本站所用到的类分为11个包,包括用于操作数据表的dao,用于具体业务逻辑的service,用于用户交互的action,网页过滤器filter,Hibernate映射于数据库的类bean。这些包分别管理和完善系统的各个方面。例如dao实现的是与操作数据表的功能,每个表都对应着一个唯一的dao,用来实现程序中对表中数据的增,删,改,查。Action负责接收用户请求,整站的包结构如图4-5所示。图4-5本网站的包结构图 action子包下的类,包括AdminAction,CourseAction,ResultAction,UserAction,WrongSubject,分别对应管理员相关动作、题目相关动作、考试结果相关动作、用户相关动作、错题信息相关动作。根据系统结构设计我们知道,这些动作会调用相应的服务,分别是AdminService,CourseService,ResultService,UserService,WrongSubjectService,PageService它们都在子包service之中。根据设计这些服务还会调用相关的DAO来操作数据库,这些DAO在dao子包之中,他们是AdminDAO,CourseDAO,ResultDAO,UserDAO,WrongSubjectDAO,PageDAO.主要功能模块页面设计首页设计系统的界面是用户最先接触到的,一个好的首页能够极大的提高用户的好感度和访问率,考试系统也不例外。本系统默认首页为传统管理系统风格,可以很好的表现出模拟驾照考试的特点。本站所有页面均由CSS布局,由于内部有javascript脚本,所以在不同的浏览器中展示的效果稍有区别,在chrome中展示效果最佳。本页面主要包括四部分,顶部为统一风格的欢迎界面,并在加载过程中检测用户是否登录,如果尚未登录,会自动跳转到登录界面,左侧为功能选择区域,列举出程序后台所具备的全部功能,单击不同的项目则页面主体区域出现对应的功能界面,右侧是系统功能区,下方是系统的版权声明,系统设计如图4-6所示。图4-6主页设计图模拟考试页设计模拟考试功能是本程序的核心功能,是本程序的重点,页面包括时间展示,题目实时情况,提交按钮和试题展示。时间展示具体包括考试时间、计时和剩余时间。用于提醒用户考试时间。用户所填写的题目也会直观的显示出来。主体部分为试卷的试题,底部为提交按钮,当考生确认答题结束后可点击它来提交结果,程序会自动评分,并将成绩页面展示给用户。如果顶部的剩余时间耗尽,同样视为提交了答案,系统将进入评分阶段,图4-7为模拟考试页面设计截图,图4-8为展示考试成结果页面设计的截图,如图4-7与图4-8所示。图4-7模拟考试页面设计图图4-8成绩结果显示设计图系统开发实现数据库配置实现数据库连接本系统数据库连接采用了Jdbc数据库驱动连接Sqlserver,由于系统采用Struts2+Spring+Hibernate三大框架整合开发,所以数据库连接是通过Spring依赖注入的配置如下。<beanid="dataSource"class="mons.dbcp.BasicDataSource"destroy-method="close"><propertyname="driverClassName"value="org.gjt.mm.mysql.Driver"/><propertyname="url"value="jdbc:mysql://localhost:3306/drivingtestweb"/><propertyname="username"value="root"/><propertyname="password"value="root"/><propertyname="maxActive"value="100"/><propertyname="maxIdle"value="30"/><propertyname="maxWait"value="500"/><propertyname="defaultAutoCommit"value="true"/></bean>所有DAO,Service,Action依赖注入配置系统其他的功能与服务同样是利用Spring的依赖注入进行配置的,这是设计模式中的控制反转原则,同样也是好莱坞原则,正因为这样才不需要自动去配置生成所依赖的对象。具体配置如下。<beanid="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><propertyname="dataSource"ref="dataSource"/><propertyname="hibernateProperties"><props><propkey="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop><propkey="hibernate.show_sql">true</prop></props></property><propertyname="mappingResources"><list><value>com/drivingtest/bean/User.hbm.xml</value><value>com/drivingtest/bean/Admin.hbm.xml</value><value>com/drivingtest/bean/Course.hbm.xml</value><value>com/drivingtest/bean/Subject.hbm.xml</value><value>com/drivingtest/bean/WrongSubject.hbm.xml</value><value>com/drivingtest/bean/Result.hbm.xml</value></list></property></bean><beanid="userDao"class="com.drivingtest.dao.impl.UserDAOImpl"><propertyname="sessionFactory"ref="sessionFactory"></property></bean><beanid="adminDao"class="com.drivingtest.dao.impl.AdminDAOImpl"><propertyname="sessionFactory"ref="sessionFactory"></property></bean><beanid="pageDao"class="com.drivingtest.dao.impl.PageDAOImpl"><propertyname="sessionFactory"ref="sessionFactory"></property></bean><beanid="courseDao"class="com.drivingtest.dao.impl.CourseDAOImpl"><propertyname="sessionFactory"ref="sessionFactory"></property></bean><beanid="resultDao"class="com.drivingtest.dao.impl.ResultDAOImpl"><propertyname="sessionFactory"ref="sessionFactory"></property></bean><beanid="wrongSubjectDao"class="com.drivingtest.dao.impl.WrongSubjectDAOImpl"><propertyname="sessionFactory"ref="sessionFactory"></property></bean><beanid="userService"class="com.drivingtest.service.impl.UserServiceImpl"><propertyname="userDao"ref="userDao"></property></bean><beanid="adminService"class="com.drivingtest.service.impl.AdminServiceImpl"><propertyname="adminDao"ref="adminDao"></property></bean><beanid="pageService"class="com.drivingtest.service.impl.PageServiceImpl"><propertyname="pageDao"ref="pageDao"></property></bean><beanid="courseService"class="com.drivingtest.service.impl.CourseServiceImpl"><propertyname="courseDao"ref="courseDao"></property></bean><beanid="resultService"class="com.drivingtest.service.impl.ResultServiceImpl"><propertyname="resultDao"ref="resultDao"></property></bean><beanid="wrongSubjectService"class="com.drivingtest.service.impl.WrongSubjectServiceImpl"><propertyname="wrongSubjectDao"ref="wrongSubjectDao"></property></bean><beanid="UserAction"class="com.drivingtest.action.user.UserAction"scope="prototype"><propertyname="service"ref="userService"></property><propertyname="pageservice"ref="pageService"></property></bean><beanid="AdminAction"class="com.drivingtest.action.admin.AdminAction"scope="prototype"><propertyname="service"ref="adminService"></property></bean><beanid="CourseAction"class="com.drivingtest.action.course.CourseAction"scope="prototype"><propertyname="service"ref="courseService"></property><propertyname="pageservice"ref="pageService"></property></bean><beanid="ResultAction"class="com.drivingtest.action.result.ResultAction"scope="prototype"><propertyname="service"ref="resultService"></property><propertyname="wrongSubjectService"ref="wrongSubjectService"></property></bean><beanid="WrongSubjectAction"class="com.drivingtest.action.wrongsubject.WrongSubjectAction"scope="prototype"><propertyname="service"ref="wrongSubjectService"></property></bean>模拟考试抽题本系统的模拟考试抽题部分采用了随机抽题的方式,同时所抽取的题目将涉及数据库中所存储的所有试题章节,DAO实现思路如下:取100个不相同的随机数,随机数的范围限制(limit)通过计算数据库中所有题目总数获得;通过遍历所取得的随机数这个过程,在数据库中抓取相应随机数所对应的考试题目存放在List中并返回这个list,供模拟考试页面调用。具体代码如下。publicList<Subject>findExam(){Sessionsession=super.getSession();Criteriacrit=session.createCriteria(Subject.class);ArrayList<Subject>list=newArrayList<Subject>(100);HashSet<Integer>set=newHashSet<Integer>(100);intlimit=crit.list().size();while(set.size()<100){if(limit==0){break;//如果题库里没有题目,将不进行循环,避免死循环}intrandom=(int)(Math.random()*limit);//取[0,limit)之间的随机数set.add(random);}for(Integerinteger:set){crit.setFirstResult(integer);crit.setMaxResults(1);list.add((Subject)crit.list().get(0));}super.releaseSession(session);returnlist;}方法所在的类声明publicclassCourseDAOImplextendsHibernateDaoSupportimplementsCourseDAO抽题实现效果如图5-1所示。图5-1考试抽题实际效果图错题练习本系统在考生提交试卷之后,会自动将考生作错的题目信息保存到错题信息表中,供错题练习时从数据库中,通过嵌套子查询的方式抓取出相应的题目进行复习。下面是从数据库中抓取相应考生的作错的题目DAO实现思路:数据库中,错题信息表为wrongsubjectinfo(stuId,quesid),题目信息表为subjectinfo(id),因此需要用到Hibernate子查询功能,根据传入的用户id,在wrongsubjectinfo表中查询该id(wrongsubjectinfo.stuId=id)对应的所有quesId,在subjectinfo表中查询所有quesId对应的题目(subjectinfo.idINquesId)。SQL语句如下SELECT*FROMsubjectinfoWHEREsubjectinfo.idIN(SELECTwrongsubjectinfo.quesIdFROMwrongsubjectinfoWHEREwrongsubjectinfo.stuId=?)在Hibernate中操作具体代码如下:publicSubjectfindSubjectById(Integerid){Sessionsession=super.getSession();DetachedCriteriaquesId=DetachedCriteria.forClass(WrongSubject.class);//声名子查询quesId.add(Restrictions.eq(“stuId”,id));//添加约束条件stuId=idquesId.setProjection(Property.forName(“quesId”));//将结果集对象投影,只保留quesIdCriteriacrit=session.createCriteria(Subject.class);//声名主查询crit.add(Property.forName(“id”).in(quesId));//添加约束条件id=quesid(子查询中投影结果)crit.setFirstResult(0);crit.setMaxResults(1);Subjectsub=null;if(crit.list().size()>0){sub=(Subject)crit.list().get(0);}super.releaseSession(session);returnsub;}在错题练习中,如果当前错题答对了,那么当前题目会自动从错题库中删除。错题练习实际效果如图5-2所示。图5-2错题练习实际效果图测试测试实例根据以上测试方法,本系统将同时采用白盒测试与黑盒测试。其中,白盒测试主要用于单元测试;而黑盒测试主要在浏览器中执行具体测试用例来实现,测试用例如下:1.页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。通过浏览器手动测试。2.校验正确性检查:注册校验检查,登录校验检查,修改信息校验检查。用户注册测试效果注册一个已经存在的用户,考生姓名为yuxinlei,密码为123123,以此来检测系统是否能识别出用户已经存在了,操作如图5-6所示,测试结果如图5-7所示。图5-6注册数据图5-7注册结果单元测试在模拟驾照考试系统中,单元测试委托给Junit框架,Unit是由ErichGamma和KentBeck编写的一个回归测试框架(regressiontestingframework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。JUnit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系xUnit的一个实例(用于java语言)。它包括以下特性:用于测试期望结果的断言(Assertion);用于共享共同测试数据的测试工具;用于方便的组织和运行测试的测试套件;图形和文本的测试运行器。下面运行编写好的测试套件,测试效果如图5-24所示。图5-24第一次测试结果修改后测试效果如图5-25所示。图5-25修改后结果测试结果及分析单元测试部分测试中根据程序中各个类中的各个方法分别设计相关的用例并进行测试,例如将一个数据保存入数据库时,将编写满足正确保存条件的测试用例和各种各样不正确的保存条件的测试用例,进而测试系统是否能正确识别该执行保存的和不该执行保存的,并给出出错信息的情况。若不能正确执行则需对程序进行纠错与修改。集成测试部分本部分测试将根据6.3节设计的测试方法分别进行测试,结果如下:1.页面链接检查:通过浏览器手动进行链接检查,处理了断掉的不正确的链接;再次运行网站程序,依次点击链接,链接全部正确。2.校验正确性检查:通过输入非法字符、信息,处理了不正确的校验规则,系统更加健壮。结论本系统各项主要功能已基本完成,具备驾照模拟驾照考试系统的基本要求。本系统的特色有以下几点。在结构上,本系统所有界面采用统一的界面风格,所有页面由top,left,copyright和主体四部分构成,不仅大大的降低了代码的冗余度也使整个系统的结构更加合理,提高了程序的可扩展性。本系统基于structs2框架开发,将程序的视图层与业务层彻底分离。大大的降低了程序的耦合度,符合mvc的设计思想。在功能上,本系统在实现了考试系统中基本的模拟考试与自动评分功能外还添加多种辅助功能。例如章节练习功能使考生的学习更加具有条理,达到循序渐进的效果,错题练习对考生容易出错的题目进行了强化训练,可以加深考生对题目的理解。成绩统计列表流出了考生所有的成绩信息,方便考生掌握自己的水平及提高的空间,以便制定自己的学习计划。在算法上,本系统在设计过程中应用到大量算法。例如在模拟考试的抽题环节中程序通过操作Hibernate将从题库中随机抽取固定数量的题目,同时保证所抽取的题目涉及到题库中的所有章节;在模拟考试的模块中程序提供了计时功能,在考生答题的过程中页面将不断更新剩余时间一旦剩余时间为0则立即结束本次考试,计分系统将计算出考生此时所得的分数并将结果提交至数据库。本系统还有很多可以改进的地方,功能方面,程序中只以列表的形式展示了用户成绩,没有计算出优秀比例,合格率等数据。有些异常处理做的不是很好。系统的测试做的不是很充分,可能存在某些地方意想不到的BUG。排版样式由CSS定义实现,样式表定义的比较简单,界面效果还有很大的改善空间。数据库方面,没有用到视图和存储过程等,数据操作直接基于表实现。致谢本课题在选题及研究过程中得到张淑丽老师的悉心指导。张老师多次询问研究进程,并为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励并对本系统提了很多改进意见。通过这一阶段的努力,我的毕业论文《模拟驾照考试系统》终于完成了,这意味着大学生活即将结束。在大学阶段,我在学习上和思想上都收获颇丰,这除了自身的努力外,与各位老师、同学和朋友的关心、支持和鼓励是分不开的。写作毕业论文是又一次系统学习的过程,毕业论文的完成,同样也意味着新的学习生活的开始。我将铭记我曾是一名哈尔滨理工大学学子,在今后的工作中把哈尔滨理工大学的优良传统发扬光大。感谢各位专家的批评指导。参考文献栗菊民.JavaWeb应用程序设计.机械工业出版社,2010.9陈天河.Struts,Hibernate,Spring集成开发宝典.电子工业出版社,2011.1田震时.web环境下企业OA系统的研究与实现.科技情报开发与经济,2009胡志军.电子政务原理与实务.中国铁道出版社,2009RodJohnson,JuergenHoeller.ExpertOne-on-OneJ2EEDevelopmentwithoutEJB.Wrox,2011李咏梅,余元辉.JSP应用教程.清华大学出版社,2010王国辉,卢翰.JSP项目开发案例全程实录.第五版.清华大学出版社,2010邹建.SQLServer2000开发与管理应用实例.人民邮电出版社,2010徐明华.JavaWeb整合开发与项目实战.第四版.人民邮电出版社,2010田秀彦.基于web的OA系统的应用研究.科技情报开发与经济,2011孙兆林,齐占杰,李海龙.SQLServer图解教程.北京希望电脑公司总策划,2010米全喜.SQL解惑.人民邮电出版社,2011钟鸣.SQL必知必会.人民邮电出版社,2009S.Airi,W.Frank.SystemDesiderataforDATAbases.Proceedingsofthe27thVLBConference,2011刘慧魏.B/S体系结构的应用.电脑知识与技术,2010孙卫琴,李洪成.Tomcat与JavaWeb开发技术详解.电子工业出版社,2011张海藩.软件工程.清华大学出版社,2010JeffLangr.AgileJavaCraftingCodewithTest-DrivenDevelopment.PrenticeHallPTR,2010附录英文原文Struts—anopen-sourceMVCimplementationsThisarticleintroducesStruts,aModel-View-ControllerimplementationthatusesservletsandJavaServerPages(JSP)technology.StrutscanhelpyoucontrolchangeinyourWebprojectandpromotespecialization.EvenifyouneverimplementasystemwithStruts,youmaygetsomeideasforyourfutureservletsandJSPpageimplementation.
中文译文Struts—MVC的一种开放源码实现本文着重介绍了Struts,它是使用servlet和JavaServerPages技术的一种Model-View-Controller模式的实现。Struts可辅助您掌控Web项目中的变化并提高专业化开发水平。尽管您可能永远也不会独立用Struts实现一个系统,但您可以将其中的一些良好的思想用于您以后的servlet和JSP网页的实现之中。《程序设计综合实习》总结报告设计题目:手机资费系统班级:____20XX级计算机一班_____学号:______报告人姓名:_______指导教师:________实验地点:___山东农业大学北校区计算机实验室_____完成起止日期:________20XX.8.31-20XX.9.6_________目录《程序设计综合实习》总结报告 1一、设计思路 3二:部分代码实现: 5主界面 5用户、管理员登陆界面 5用户主界面 6管理员主界面 7用户数据类 8套餐数据类 8账号、密码登陆的实现 9用户信息的输入 11套餐使用情况的实现 11业务模拟 12三:调试界面具体表现 15主界面: 15用户界面: 15管理员界面: 15查看个人信息界面: 16套餐使用情况: 16输入用户信息: 17查看个人所选套餐信息: 17设置套餐: 18充值界面: 18增加多个套餐: 19四:设计体会与小结 20TOC\o"1-1"\h\z\u一、设计思路手机资费系统通过类将系统分成五个类,三个数据类:用户信息,套餐信息,用户和管理员的账号、密码;两个操作类:用户的操作类,管理员的操作类。在操作类内的构造和析构函数内编写文件的读取和储存。实现了程序一运行就将所有内容存入向量组中,在操作完之后再将全部内容重新导出,储存于文件。具体功能:用户: 查看个人信息、余额 修改密码 查看个人所选套餐基本信息 查看套餐使用情况 业务模拟 费用详单管理员:输入用户基本信息 删除用户信息 查看用户基本信息 修改用户基本信息 制定套餐信息 删除套餐信息查询套餐信息修改套餐信息 充值二:部分代码实现:主界面cout<<"╔════════欢迎进入手机资费系统═══════╗"<<endl;cout<<"║※1:用户通道※║"<<endl;cout<<"║※2:管理员通道※║"<<endl;cout<<"║※…………※║"<<endl;cout<<"║※9:结束程序※║"<<endl;cout<<"╚═════════════════════════╝"<<endl;用户、管理员登陆界面 cin>>choice;switch(choice){case1:{stringtem_pho,tem_pas;ints=0;cout<<"请输入账号(手机号):"<<endl;cin>>tem_pho;cout<<"请输入密码:"<<endl;cin>>tem_pas;for(f.uai=f.ua.begin();f.uai!=f.ua.end();++f.uai){if(f.uai->id==tem_pho&&f.uai->password==tem_pas){
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 门头牌匾施工方案
- 物业管理培训知识
- 排水沟疏浚施工方案
- 厨师工资协议合同范例
- 同行之间拿车合同范例
- 公益提供饮品合同范例
- 班级荣誉激励制度的设立计划
- 促进班级凝聚力的有效措施计划
- 职业网络拓展的策略计划
- 生产计划中的时间管理策略
- 项目式学习的培训
- 2024年3月30日事业单位联考A类《职业能力倾向测验》试题
- 食堂从业人员晨午检制度
- 现代家政导论-课件 2.1家庭的认知
- 护理相关法律法规
- 婴幼儿窒息的预防与急救
- 【网红李佳琦直播带货营销策略问题及对策13000字(论文)】
- 2024中国移动公司招聘高频500题难、易错点模拟试题附带答案详解
- 江苏省宿迁市2024年中考数学试卷含答案
- 河道综合治理工程施工组织设计(投标)
- 处方书写规范考核试题及答案
评论
0/150
提交评论