版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、成绩:JAVA课程设计报告班级小组组长小组成员指导教师时间2021.9.前言随着大学的扩招,在校大学生的人数也剧增。老师教学任务繁重,加上各种教学设计、评估,老师工作量繁重不说,却往往事倍功半,教学质量没有明显的提高。同时,如何设计考核的题目,使学生的知识得到总结、归纳和应用,并且使零散的知识条理化和系统化,这也是老师们重点思考的方向,但如此一来,在繁重的教学任务之外,分散了老师们不少的精力。而随着Internet的迅速开展和广泛普及,网络化教育代表了教育改革的一个开展方向,已经成为现代教育的一个特征,并对教育的开展形成新的推动力。Internet技术的开展也使得考试的技术手段和载体发生了革命
2、性的变化,Internet的开放性、分布性的特点和基于Internet的巨大的计算能力使得考试突破了时间和空间的限制。与传统考试模式相比,在线考试具有无可比较的优越性,它可以将传统考试过程中的试卷组织、审定印制、传送收集、登记发放、评判归档各个环节缩小到一至两个环节,几乎屏蔽了所有人工直接干预考试活动的可能性,不但能够节约大量的时日、人力、物力与财力,而且还可以大幅度增加考试成绩的客观性和公正性。Internet 技术的开展为在线考试的开发提供了便利与可行性。所以本次课程设计充分利用现有的计算机软、硬件和网络资源实现无纸化考试以防止传统手工考试的缺乏,力求一种高效率的考试系统,来减轻教师负担,
3、为学生提供更好的学习平台,同时提高自己系统开发的能力。 而对于在线考试系统本身而言,由于各科教学的特点不同,必须借用许多种不同的题型,这样才能全面地考察学生。而本系统在功能上,支持基此题型和自定义题型。同时可以对试卷的难度系数、考试的时间、参考的对象等考试规那么等进行量化。操作简便快捷,解决了考试程序繁芜,教师耗时费力的问题。学生可以在线自测,系统按照考试规那么随机出题;也可以参加统一考试,试题由系统按照老师制定的规那么生成统一的一份试卷。同时教师可以针对某个考试,查看平均分、最高分、最低分、及格率、排名、答卷等信息。在系统性能方面,在高并发人数下,本系统将依然能提供一个稳定运营环境。 总之本
4、系统实现后将有如下的功能:(1) 可以创立电子题库,方便地实现试题的数字化管理.(2) 可以按照科学的策略智能组卷,从而提高出卷效率.(3) 可以具有操作性和交互性.(4) 使考试和评卷更具标准性和合理性.(5) 实现自动评卷和数据的有效保存.1 工程方案11 工程成员分工工作人员文档管理调研及进度分析系统分析模块分析代码编写美工设计测试工程数据库管理1.2 工程进度表进度方案安排起 止 日 期要 求 完 成 的 内 容2009-12-7到11选定开发对象,收集资料。2009-12-12到16整理资料,并进行系统的分析一。2009-12-17到20系统分析二。2009-12-21到22系统初步
5、设计,并将设计流程整理存档。2009-12-23到31系统详细设计。2010-1-1到5系统实施。2010-1-6、7调试、运行。设计成果初步形成。2010-1-8、9编写设计报告书。2010-1-10编写设计报告书并上交。1.3 工程开发环境 TomcatTomcat 效劳器是一个免费的开放源代码的Web 应用效劳器,我所使用的是最新版本(截止到2009-03-20)。Tomcat由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 标准总是能在Tomcat 中得到表达,Tomcat 5 支持最新的Servlet 2.4 和J
6、SP 2.0 标准。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了局部软件开发商的认可,成为目前比较流行的Web 应用效劳器。Tomcat它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件效劳等开发应用系统常用的功能;而且它还在不断的改良和完善中,任何一个感兴趣的程序员都可以更改它或在其中参加新的功能。Tomcat 是一个小型的轻量级应用效劳器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 效劳器,可利用它响应对HTML 页面的访问请求。实际上
7、Tomcat 局部是Apache 效劳器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 这里的诀窍是,当配置正确时,Apache 为HTML页面效劳,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web效劳器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache效劳器。 MyeclipseMyEclipse企业级工作平台MyEclipse Enterpr
8、ise Workbench ,简称MyEclipse是对Eclipse IDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序效劳器的整合方面极大的提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。在结构上,MyEclipse的特征可以被分为7类:1. J2EE模型2. WEB开发工具3. EJB开发工具4. 应用程序效劳器的连接器5. J2EE工程部署效劳6. 数据库效劳7. MyEclipse整合帮助对于以上每一种功能上的类
9、别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。数据库用SQL Server 2005本系统的用户可分为管理员,教师,学生三类。 从用户的角度进行总体上考虑,系统应该实现以下功能: 对教师来说,包括试卷管理、试题管理、试题上传、班级注册、成绩查询。 1、试卷管理:随即组卷,随即组卷教师可以从课程,难度级别,各种题型的数量等方面对某份试卷提出一
10、定的要求生成试卷规那么,在学生考试时,由系统根据试卷规那么自动组卷生成满足教师要求的试卷。 2、试题上传:教师可以上传新的试题,其中包括判断题、填空题、单项选择题、多项选择题和论述题。3、试题管理:教师可以根据教学需求对题库中的试题进行两种根本操作:删除旧有考题、修改原有考题,其中试题类型包括判断题、填空题、单项选择题和多项选择题;对于每种类型的试题,教师可以设置题干、答案、试题难度系数、解析、添加时间等属性。 4、班级注册:教师可以选择相应的班级进行班级注册。5、成绩查询:分为历史成绩查询和当前成绩查询。教师可以查看考生的考试成绩,并针对不同的课程进行成绩统计,包括考试人数、最高分、最低分、
11、平均分以及各分数段得分人数等。 对学生来说,包括考试中心、成绩查询、浏览公告、班级注册。 1、考试中心:学生可以选试题进行在线测试,考试结束后,系统会根据已有的标准答案进行在线判卷,考生可以立刻知道考试成绩。 2、成绩查询:学生可以在线查询以前参加过的每门课程的考试相关信息。 3、浏览公告:学生可以浏览最新发布的考试信息及公告。 4、班级注册:学生选择相应的班级进行注册。对管理员来说,主要包括用户管理、班级管理、公告管理。用户管理:包括用户添加、用户删除、批量添加、批量删除。班级管理:包括添加班级、修改班级、删除班级。公告管理:包括对公告、新闻的发布、删除、修改;其中公告、新闻由管理员进行增、
12、删、改、查操作。对以上三类用户都有对自己个人信息修改、查询的功能,包括密码修改。通过以上分析,将系统分为两个子系统:前台考试子系统、后台在线考试管理子系统。3.1.1学生考试界面模块划分前台学生考试子系统在线考试浏览公告查询成绩注册班级模块需完成的功能描述如下: 前台考试子系统中,学生可以选择自己喜欢的方式进行在线考试,并浏览考试公告,按规定进行在线考试。考试完成后,通过查看标准答案和成绩了解自己的学习状况。心中的疑惑或对老师对试题管理的建议都可以在线留言,老师看到留言后,对学生留言进行评论。老师和管理员后台管理功能模块划分在线考试后台管理子系统题库管理试卷管理成绩管理用户管理信息管理班级管理
13、 各模块需完成的功能如下:由于篇幅原因,现仅对后台管理进行分析题库管理根本维护题型维护范围维护科目维护试题维护其他维护试卷管理随机出卷其他维护成绩管理成绩查询成绩维护用户管理信息管理公告管理添加用户删除用户班级管理添加班级删除班级题型维护:对试题的题型进行增加、删除、修改、查询操作。在操作之后会自动刷新主页,以使信息更新。范围维护:对试题的应用范围进行增加、删除、修改、查询操作。在操作之后会自动刷新主页,以使信息更新。科目维护:对试题的科目进行增加、删除、修改、查询操作。在操作之后会自动刷新主页,以使信息更新。试题维护:对试题的根本信息进行增加、删除、修改、查询操作。在操作之后会自动刷新主页,
14、以使信息更新。其他维护:对试题信息的批量查询,并可进行数据导出、数据备份、数据恢复。随机出卷:用户只需对试卷题型、数量、范围进行选择后,选择指定的科目章节,自动生成满足教师要求的试卷。成绩维护:当成绩出错时,对于有权限的人可以对成绩进行删除、修改、查询。用户管理:对系统用户增加、删除、修改以及个人资料修改。班级管理:对班级信息的增加、删除修改。公告管理:包括系统公告和考试公告,主要操作是对公告、新闻的发布、删除、修改系统主要角色分析经过上述的功能要求分析,可以确定出该系统的主要角色有:学生、管理员、教师学生:主要的属性有:学号、姓名、所属班级等信息管理员:用户名、密码等信息教师:编号、姓名、登
15、陆密码等信息系统主要用例分析按照功能需求,可以确定主要有以下用例:学生在线考试的用例: 查看考试信息进行统一考试查询成绩2、学生信息维护的用例3、教师进行题库管理的用例 题型维护:包括对试题的题型进行增、删、改、查操作 范围维护:对试题的应用范围进行增、删、改、查操作。科目维护:对科目维护:试题的科目进行增、删、改、查操作。试题维护:对试题的根本信息进行增、删、改、查操作。其他维护:对试题信息的批量查询,并可进行数据导出、数据备份4、教师进行发布考试的用例教师抽题学生抽题5、教师进行成绩管理的用例成绩统计成绩维护:对出错的成绩进行修改6、教师进行信息管理的用例个人信息管理学生信息查询7、管理员
16、进行用户管理的用例 用户信息的添加、删除、修改8、管理员进行权限管理的用例给不同的用户分配不同的权限,包括添加、删除、修改等操作9、管理员进行公告管理的用例 公告管理用例,包括公告的添加、删除、修改、更新等10 所有用户的登录验证用例11 所有用户的退出系统用例用户首先进行登陆验证后才能进入相应的系统主界面。本处以教师所使用的用例来说明。首先教师登录,系统验证成功后进入教师登录界面,教师可以进行根本的信息管理,进行个人信息更新,系统调用个人信息管理模块用例,教师也可以查询学生信息,当教师需要修改删除试题时,首先要调用科目的信息,范围信息,将该科目该范围下的题目显示,然后再对相应的题目进行修改。
17、当要发布考试时,系统根据教师信息,自动显示教师所能够执行的科目的考试,教师选择抽题方式,进行试卷规那么的制定,假设是教师抽题,那么生成一份试卷,存入数据库,同时可以进行预览。假设是学生抽题,那么保存该试卷规那么。当学生自测时调用该规那么 ,随机生成一份试卷。 该系统用例图如下:用例的实现主要对象 系统中主要的对象就是用户:学生、教师、管理员。其中学生、教师、管理员分别与用户是被包含关系。4.2.2时序图 用户登录图:用户操作图:定义术语本系统的体系结构是表示层、业务逻辑层、数据层的三层模式的根底上进行细化而得来的,在表示层和业务数据层之间加了WEB效劳层,并在数据库层和业务逻辑层之间加了对象持
18、久化层,各层之间的关系和作用描述如下:表示层 :提供友好的用户界面,主要用于向用户显示从业务逻辑层得到的数据,并能接受用户输入的数据并对其输入的数据进行逻辑验证。Web Service 层: 该层主要用于进行业务逻辑的控制。它向下访问业务数据层,向上为表示层效劳。该层主要用Web Service 来实现,Web Service是用于建立可互操作的分布式应用程序平台。业务数据层:是业务逻辑的一局部,向Web Service 层返回业务对象,它与下面要讲到的持久化对象相当于数据库中的原始表和视图的关系。数据访问层:业务逻辑层的一局部,设置查询逻辑和条件来通过对象持久化层得到持久化对象,并为上层的业
19、务逻辑层效劳。数据库层:数据层,对应于MYSQL 中的数据库,进行大量数据的管理和事务并发等管理。4.4数据库设计根据前面的需求分析本系统的实体及属性如下:Class( ID, ClassName)Course(ID, teacherID, coursename, courseID)Itembank(ID, QuestionTitle, QuestionItem, Answer,Questiontype)QuestionType ( ID , TypeName, Score)Role( ID, Rolename)StudentClasssID, Username, Password, Perm
20、ission, IP, LastLoginTime, Name, Photo, Sexy, E_mail, Count, LoginTime, classIDTest_Information(id, user_name, test_id, test_date, test_begin_time, test_end_time, user_answers, test_answers, total_mark, user_mark, user_ip, test_check_status, user_right_numbers, user_wrong_number) Test_Paper(id, test
21、_number, test_name, test_status, test_score, test_operater, test_add_date, test_edit_date, question_id, test_total_time, subject_id)Test_Status(id, paper_status)Test_Subject(id, test_subject,)Users(ID, Username, Password ,Permission, IP , LastLoginTime, Name, Photo, Sexy, E_mail, Count, LoginTime)数据
22、的存储结构也可以通过以下表来实现和反映出来:Class:字段数据类型长度是否主外键备注IDint是ClassNamenvarchar40否Course:字段数据类型长度是否主外键备注IDint是teacherIDint是coursenamenvarchar50否courseIDrint是Itembank:字段数据类型长度是否主外键备注IDint是QuestionTitlentext否QuestionItemnvarcharmax否Answernvarcharmax否QuestionTypeInt是QuestionType:字段数据类型长度是否主外键备注IDint是TypeNamenchar50
23、否Scoreint否Role:字段数据类型长度是否主外键备注IDint是RoleNamenvarchar20否StudentClass:字段数据类型长度是否主外键备注IDint是Usernamenvarchar20否Passwordnvarchar32否Permissionint否IPnvarchar40否LastLoginTimedatetime否Namenvarchar50否PhotoNvarchar100否SexyNchar2否E_mailNvarchar80否Countint否LoginTimeSmalldatetime否classIDint是Test_Information:字段数据
24、类型长度是否主外键备注idint是User_namenvarchar20否test_idInt否test_datevarchar50否test_begin_timevarchar50否test_end_timeVarchar50否user_answersvarchar100否test_answersvarchar100否total_markfloat否user_markfloat否user-ipvarchar50否test_check_statusVarchar50否user_right_numberint否user_wrong_numberint否Test_Paper:字段数据类型长度是否主
25、外键备注idint是test_numberInt否test_namevarchar200否test_statusint是test_scorefloat否test_operaterVarchar20否test_add_datevarchar50否test_edit_datevarchar50否question_idvarchar100否test_total_timevarchar50否subject_idint否Test_status:字段数据类型长度是否主外键备注idint是paper-statusvarchar20否Test_Subject:字段数据类型长度是否主外键备注idint是test
26、_subjectvarchar20否Users:字段数据类型长度是否主外键备注IDint是Usernamenvarchar20否Passwordnvarchar32否Permissionint否IPnvarchar40否LastLoginTimedatetime否Namenvarchar50否PhotoNvarchar100否SexyNchar2否E_mailNvarchar80否Countint否LoginTimeSmalldatetime否4.5包和对象的识别以及关联通过以上分析系统所用到的包和类如下: cn.实体包.db数据库操作包.filter过滤器包.service业务逻辑接口包接口
27、实现类的包.servletservlet包.test用来测试的包可删除.tool自建组件包包之间的关联:主要的类有: bean包中的类:Class 定义:课程实体ClassRegister 定义:课程注册实体SigleQuestion定义:试题实体User 定义:用户信息db包中的类:DBConnection 实现:与SQLSERVER2005数据库的交互的类,其中包括连接属性,获得连接的方法,查询数据方法等等。Entity 实现:单表查询组件。包含存储数据字段名以及数据值的属性,以及根据表名以及键值获取数据的方法。SingleDB 实现filter包中的类:SetCharacterEncod
28、ingFilter :filter类。对WEB系统中所有的request以及response进行过滤。service包中的类:addQuestion:添加试题接口AdminService:用户登陆接口classmanage :课程管理接口。classRegist:课程注册接口。Usermanage:用户管理接口。Randzj: 随机组卷接口包的类:AddSigleQuestion:实现单项选择题、多项选择题等试题的添加。AdminServiceImpl:实现用户登陆的验证,以及用户密码的修改。classmanageImplclassregistimplusermanageImpl:实现用户的添
29、加、修改以及批量添加和修改。RandzjImpl:实现自动随机组卷。servlet包的类:classAdd:处理课程添加的请求。ClassRegist:处理班级注册地请求。LoginServlet:处理用户登陆的请求。testAdd:根据request中的参数,进行试卷、试题的添加、修改删除操作updateInfo:处理用户修改信息请求。userDelete 负责删除用户的servletusermanege:处理添加新用户请求。Randzj:处理组卷请求。tool包中类:Pagination:实现翻页功能。Search:根据request中参数的格式,进行相应的查询操作。Tool :工具类。包
30、括获取随机数、当地系统时间以及IP的方法本系统的设计用到了这两个设计模式: DAO设计模式 MVC设计模式DAO是Data Access Object (数据访问对象)的缩写。J2EE 开发人员使用DAO设计模式,以便将低级别的数据访问逻辑与高级别的业务逻辑别离。 一个典型的 DAO 实现有以下组件:一个 DAO 工厂类 factory 一个 DAO 接口 DAO 一个实现了 DAO 接口的具体类DAOImpl 数据传输对象(有时称为值对象) VO DAO的工作原理:调用处DAO工厂具体子类 完成数据库操作 具体子类的方法是在DAO接口中定义好的,一个DAO接口可能有多个类实现其方法MVC设计
31、模式MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行别离,这样一个应用被分成三个层模型层、视图层、控制层。视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。 模型(Model):就是业务流程/状态的处理以及业务规那么的制定。 控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。本系统运用的开发手段是JSP+Servlet+JavaBean 该方式适用于团队开发,用此模式开发速度相
32、对较慢,但可维护性高 以上提到的两个设计模式的具体运用: JSP实现MVC中的VviewServlet实现MVC中的CcontrolJavaBean实现MVC中的Mmodle,JavaBean负责所有的底层数据操作即DAO6.系统实现与测试本系统主要对象的实现算法有两个:随机算法、页面分发算法。随机算法的实现主要表达在两个方面:一、教师出题过程中对选择题的操作,选择题的答案有一个正确答案和七个备选答案,教师查询题目是随机在七个备选答案中选择3个答案作为选择题的错误答案;二、学生在线测试时,题目的选择是根据学生对约束条件选择确定后,系统根据随机算法产生相对应的题目。页面分发算法:主要是根据不同的
33、约束条件如判断语句跳转到不同的页面。本系统是基于B/S模式的WEB系统,因此测试方法应为基于WEB的测试方法,基于Web的系统测试与传统的软件测试不同,它不但需要检查和验证是否按照设计的要求运行,而且还要测试系统在不同用户的浏览器端的显示是否适宜。重要的是,还要从最终用户的角度进行平安性和可用性测试。然而,Internet和Web媒体的不可预见性使测试基于Web的系统变得困难。因此,我们必须为测试和评估复杂的基于Web的系统研究新的方法和技术。在本系统中主要从系统的功能和性能两方面进行测试。功能测试功能测试主要是通过按照系统的流程走一边,测试系统运行过程中是否出现错误及误差等的操作。数据库连接
34、测试:主要通过从数据库中查询数据及向数据库中插入、删除数据确定数据连接的正常。在使用数据库连接时可能发生两种错误,分别是数据一致性错误和输出错误。当出现以上两种错误时,应检查数据编码问题。页面链接测试:系统的用户分了三类,每类用户所用的功能不同,因此页面也相比照较复杂,所以要保证页面跳转的正确性,可从三个方面测试:首先,测试所有链接是否按指示的那样确实链接到了该链接的页面;其次,测试所链接的页面是否存在;最后,保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。算法正确性测试:本系统主要涉及到两个算法:随机算法-产生随机数,根据随机数从数据
35、库中查询相应的试题,主要比较产生的试题是否与数据库中的试题编号相同;页面分发算法-根据用户对页面中不同控件的操作,跳转不同的页面,测试同页面链接测试。性能测试负载测试是为了测量WEB系统在某一负载级别上的性能,以保证WEB系统在需求范围内能正常工作。尤其是对于本系统,在同一时刻进行在线考试的用户可能多达100多人,负载测试尤为重要。负载级别可以是某个时刻同时访问Web系统的用户数量,也可以是在线数据处理的数量。例如:Web应用系统能允许多少个用户同时在线?如果超过了这个数量,会出现什么现象?WEB应用系统能否处理大量用户对同一个页面的请求?对数据库负载程度的测试,很明显的一个事实,大量的数据是
36、从数据库中得到,当用户的数量相当大时,数据库的处理能力将成为系统能否正常运行的关键因素。但由于负载测试需要大量的客户端主机同时连接数据库,因此负载测试只有在系统投入使用后在实际的使用当中测试。7.系统的部署系统完成后,在工程资源管理器中,右键单击【learn】、【导出】、【导出为WAR文件】。将learn.war和数据库Online_test.mdf、Online_test.log三个文件,以及apache-tomcat-.exe一并交付给用户。在用户的计算机上安装apache-tomcat-.exe,并将C:Program FilesApache Software FoundationTom
37、cat conf下的Configure Tomcat发送到桌面快捷方式。将learn.war文件放置到Tomcat的安装目录C:Program FilesApache Software FoundationTomcat 下的webapps目录下;同时将Online_test.mdf、Online_test.log附加到SqlServer2005数据库引擎。单击桌面上的Configure Tomcat,点击【start】启动Tomcat在浏览器中输入calhost:8080/learn/即可启动本系统8.运行效果见4.3系统界面草图。系统首页学生首页个人信息查看密码修改考试中心试题管理试卷管理组
38、卷用户管理9.总结总结系统存在的缺乏,以及下一步的改良想法,包括功能的完善,性能的改善方面,界面的友好性方面等由于时间的限制,本系统只完成了教师模块的一些功能,不过将出题、试题维护这些最核心的功能都实现了,至于公告管理的功能,如果时间充足,应该很快就能完成。前台学生考试系统以及管理员的管理局部还未实现。界面方面,由于没有充裕的时间,所以在界面的美观方面没花多大的心思,主要的工作重心还是放在了代码实现上。对于以后的设计,可以多学些JSP方面的知识,来将页面美化。在本次设计中充分运用到了面向对象的思想,将系统的用户、考试、试题等实体都抽象为对象,方法与方法传递这些数据的时候都是传递相应的对象。通过
39、本次课程设计我们小组的成员都进一步地理解了面向对象程序设计的思想。10.附录系统的核心功能的局部代码:1. 数据库连接package cn.ac.learn.db;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;/* * category JDBC连接SQLSERVER数据库 * author ancong * */public class DBConn
40、ection private final static String DRIVER =com.microsoft.jdbc.sqlserver.SQLServerDriver;/SQLSERVER驱动private final static String URL=jdbc:sqlserver:/localhost:1433;Database=Online_test?useUnicode=true&characterEncoding=GB2312;/设置编码是格式为GB2312否那么会出现乱码private Connection con = null; /连接对象private Prepared
41、Statement pstmt = null; /连接对象private ResultSet rs = null;/连接public DBConnection() this.init();public void init() tryClass.forName(DRIVER);if (con = null)con = DriverManager.getConnection(URL,ancong,123);catch (Exception e) e.printStackTrace();/* * 获得当前连接对象 * return */public Connection getConnection(
42、)if (con = null)this.init();return con;/* * 返回查询结果 * param sql,username * return */public ResultSet getQueryResultSet(String sql,String username) if (con != null)try pstmt = con.prepareStatement(sql);pstmt.setString(1, username);rs = pstmt.executeQuery(); catch (SQLException e) e.printStackTrace();r
43、eturn rs;/* * param sql * return */public int getUpdateCount(String sql) int count = 0;if (con != null)try pstmt = con.prepareStatement(sql);count = pstmt.executeUpdate(); catch (SQLException e) e.printStackTrace();return count;/* * 关闭连接 * param con */public void close() try if (con != null)this.con
44、.close(); catch (SQLException e) e.printStackTrace();2. 查询组件package cn.ac.learn.tool;import javax.servlet. . ServletRequest;import java.util.*;import java.io.UnsupportedEncodingException;/* * * author ancong * 查询组件 */public class Search /* * * param request客户端提交的请求 * return 根据提交请求参数的格式,得到查询条件 * thro
45、ws UnsupportedEncodingException */SuppressWarnings(unchecked)public static String getSearch( ServletRequest request) throws UnsupportedEncodingException String condition = ;Enumeration field = request.getParameterNames();/获取发送请求中的所有参数while (field.hasMoreElements()/如果field对象至少还有一个可提供的元素String fieldNa
46、me = (String) field.nextElement();/那么返回此枚举的下一个元素。String fieldValue = request.getParameter(fieldName);if(fieldValue!=null) fieldValue=fieldValue.trim();if (fieldName.startsWith(search_) /如果fieldName以search_开头fieldName = fieldName.substring(8, fieldName.length();/将serach后的内容赋给fieldNameString list =fie
47、ldName.split(_);/将fieldName以分割开/list2根据不同的字符代表不同的意思if (list2.equals(e)list2 = =;else if (list2.equals(b)list2 = ;else if (list2.equals(s)list2 = =;else if (list2.equals(se)list2 = =;else if (list2.equals(ne)list2 = !=;else if (list2.equals(n)list2 = is null ;else if (list2.equals(nn)list2 = is not n
48、ull ;else if (list2.equals(l)list2 = like;else if (list2.equals(i)list2 = in;if (list2.equals(is null) | list2.equals(is not null)condition += + list0 + + list1 + list2;/获取参数值if (fieldValue!=null&!fieldValue.equals()if (list3.equals(string) condition += + list0 + + list1 + + list2;if (list2.equals(l
49、ike) condition += % + fieldValue + % ; else if (list2.equals(in)condition += ( + fieldValue + );elsecondition += + fieldValue + ; else if(list3.equals(date) condition += + list0+ ;if (list2.equals(like)condition +=convert(varchar,+list1+,120) like % + fieldValue + % ; else if (list2.equals(in)condit
50、ion += ( + fieldValue + );elsecondition += + fieldValue;return condition;3.singgleDB组件:package cn.ac.learn.db;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import java.util.ArrayList;import java.util.Enumeration;import javax.servlet. . ServletRequest;/* *
51、* author ancong * */public class SingleDB private SingleDB() private static SingleDB obj = new SingleDB();public static SingleDB getInstance() return obj;SuppressWarnings(unchecked)public boolean Execute( ServletRequest request,String keyid) boolean f = false;String action=request.getParameter(do);/
52、字段定义 acct_String_fieldEnumeration field = request.getParameterNames();String keyfield = ; /主键字段String keyGen = ; /主键生成方法,或值String table = ; /表名ArrayList inFields = new ArrayList(); /insert语句的字段ArrayList ops = new ArrayList(); /设置类型ArrayList inValue = new ArrayList(); /insert的值while (field.hasMoreEle
53、ments() String fieldName = (String) field.nextElement();if (fieldName.startsWith(Online_test_) String fields = fieldName.split(_);if (fieldName.equals(Online_test_table) table = request.getParameter(fieldName);if (fieldName.equals(Online_test_key) keyfield = request.getParameter(fieldName);keyGen =
54、request.getParameter(keyfield); if(!fieldName.equals(Online_test_table)&!fieldName.equals(Online_test_key) ops.add(fields1);inFields.add(fields2);inValue.add(request.getParameter(fieldName);String sql =;if(action.equals(insert)String s1 =, v = ; /构建squall语句for (String string : inFields) s1 += string
55、 + ,;v += ?+,;s1 = s1.substring(0, s1.lastIndexOf(,);v = v.substring(0, v.lastIndexOf(,);/*-如果进行的是插入操作-*/if(keyfield.equals()sql = insert into + table + ( + s1 + ) values( + v + );elsesql = insert into + table + ( + s1 + ) values( + keyGen+ , + v + );/*-如果是更新操作-*/if(action.equals(update)String s1 =,
56、 v = ; /构建sql语句for (String string : inFields) s1 += string + ,;v += ?+,;s1=s1.replace(, =?,);s1 = s1.substring(0, s1.lastIndexOf(,);sql = update + table + set + s1 + where +keyfield+=+keyGen+;/*-如果是删除操作-*/if(action.equals(del)sql = delete from + table + where +keyfield+= + keyid + ;DBConnection conn
57、ect=new DBConnection();Connection conn =connect.getConnection();try PreparedStatement pstmt = conn.prepareStatement(sql);for (int i =0; i ops.size(); i+) if (ops.get(i).equals(String)pstmt.setString(i+1, (String) inValue.get(i);if (ops.get(i).equals(Float)pstmt.setFloat(i+1, Float.parseFloat(String)inValue.get(i);if (ops.get(i).equals(Date)pstmt.se
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024O2O智能交通出行平台合作框架协议3篇
- 幼儿园身体游戏课程设计
- 2024年度眼科医院与义齿加工企业技术交流合同3篇
- 2024年标准商用租房协议范本版B版
- 小学生语文素养课程设计
- 2024年O2O电商平台虚拟现实技术应用合同
- 2024年度汽车维修设备租赁合同2篇
- 2024年度万达广场临时广告租赁合同3篇
- 2024年度外贸实习报告市场推广合同
- 应变传感器课程设计
- 近代中国金融业的演变
- pcnl护理查房课件
- 肝衰竭病人的护理
- 微生物学课件:流感嗜血杆菌
- 结肠造口术术后健康饮食宣教
- 2017第四轮教育部学科评估结果汇总【全部学科】电子表格版
- 第14课第二框课件《实现可持续发展》
- 园林绿化养护投标方案(技术标)
- 第三课 民族问题的内涵与产生根源 (1)课件
- 干部调动审批呈报表
- 经支气管镜冷冻治疗术
评论
0/150
提交评论