《综合课程设计报告格式.doc》由会员分享,可在线阅读,更多相关《综合课程设计报告格式.doc(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、综合课程设计报告题目: 班级:姓名:学号:指导教师: 完成日期: 年 月 日评语 课程设计任务内容本系统要实现的功能是管理员可以对实验室设备信息进行查询及相关实验室设备的使用情况查看,可以根据本人用户名和密码登录系统。在信息系统中,后台数据库存储的地位相当重要本系统采用了MYSQL数据库book,库中包括设备信息表、教师信息表、借用设备表、损坏设备表、归还设备表、报废设备表、用户登陆表。系统首先必须维护实验室中详细资料的数据表,程序能对该表进行写入和读出数据的操作。 实验室设备管理需要完成的功能主要如下:1) 设备管理:实现仓库中的每样设备信息的登记和新设备的入库登记,旧设备的报修、报废处理,
2、以及设备状态的更改。2) 设备的借出:按照教师所需设备而给予借出,并在数据库中更改这些设备的使用状态。3) 设备的归还:按照教师所还设备而进行入库登记,并在数据库中更改这些设备的使用状态。4) 设备报修:实验人员在实验过程中如果发现设备损坏,通过此系统报告给管理员,同时改写数据库中的设备状态。目录第一章 系统概述31.1系统开发背景31.2项目设计基本原理31.3数据库系统设计及范式分析4第二章 系统需求分析52.1可行性研究52.2需求分析62.3数据描述8第三章 总体设计103.1总体设计原理103.2运行环境与系统结构103.3系统功能模块与设计103.4系统功能模块说明113.5系统功
3、能模块图12第四章 详细设计134.1数据库的概念设计134.1.1局部E-R模式设计134.1.2全局E-R设计164.1.3数据库实现16第五章 详细设计205.1全局E-R设计205.2编码实现与测试用例设计21第五章 系统总结286.1总结286.2系统不足28参考文献29第一章 系统概述1.1系统开发背景一个现代化的实验室设备系统在正常运行中总是面对大量的使用者,仪器以及两者相互作用产生的借用仪器。人工管理既浪费人力物力财力,又容易导致各种错误的发生。为了方便实验室管理,得开发一个更好更高效的软件来管理。实验室管理系统,是为了实现实验室管理而设计的,它也是现在各个部门的一个重要环节。
4、实验室是所有高校、研究机构必不可少的基本构成单位。特别是高校,实验室的设备管理需要一套稳定、高效的管理办法。就我校情况看来,目前我校的实验室设备管理还处于较原始的手工阶段,缺少一套实用可靠的管理系统软件。随着电气化教学和无纸化办公的一步步完善,利用计算机管理系统管理我校的实验室设备势在必行。因此,本项目拟开发一个实验室设备管理系统。本系统将建立一个实验室设备管理平台,记录实验室所有的实验设备,并及时反应设备的运转状况,使用情况,以供本科生和研究生及其他试验人员合理的安排实验,达到工作效率的最优。1.2项目设计基本原理软件工程是一门从技术和组织管理两个角度研究如何用系统化、规范化和数量化等工程原
5、理也方法去进行软件开发和维护的学科。软件工程学研究的范围非常广泛,包括技术方法、工具和管理等许多方面。软件生命周期的各个阶段可分为:采用软件工程的技术方法开发本系统,通过以上八个阶段组成软件的生存期,它是指从提出开发要求开始直到该软件报废为止的整个时期。分阶段进行,就把规模庞大、结构复杂和管理复杂的软件变的容易控制和管理。基于此思想,本系统开发实际可行的软件,方便毕业时信息的管理。1.3数据库系统设计及范式分析数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。数据库设计时需要综合企业各个部门的存档数据和数据需求,分析各个数据之间的关系,按照D
6、BMS提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型。数据库设计的步骤是;1数据库结构定义:目前的数据库管理系统(DBMS)有的是支持联机事务处理CLTP(负责对事务数据进行采集、处理、存储)的操作型DBMS,有的可支持数据仓库、有的联机分析处理CLAP(指为支持决策的制度对数据的一种加工操作)功能的大型DBMS,有的数据库是关系型的,有的可支持面向对象数据库。针对选择的DBMS,进行数据库结构定义。2数据表定义:数据表定义指定义数据库中数据表的结构,数据表的逻辑结构包括:属性名称、类型、表示形式、缺省值、效验规则、是否关键字、可否
7、为空等。关系型数据库要尽量按关系规范化要求进行数据库设计,但为使效率高,规范化程序应根据应用环境和条件来决定。数据表设计不仅要满足数据存储的要求,还要增加一些如反映有关信息、操作责任、中间数据的字段或临时数据表。3存储设备和存储空间组织:确定数据的存放地点、存储路径、存储设备等,备份方案,对多版本如何保证一致性和数据的完整性。4数据使用权限设置:针对用户的不同使用要求,确定数据的用户使用权限,确保数据安全。5数据字典设计:用数据字典描述数据库的设计,便于维护和修改。 第二章 系统需求分析2.1可行性研究2.1.1技术可行性 一个完备的实验室设备管理信息系统具有以下优越性: 方便校领导查询实验室
8、设备的使用情况,节省时间,可以提高系统的工作效率和准确率。为了适应新形势的发展,我进行了这一系统的初步设计工作,也可以说是做一个初步的探索,希望它能够在查询实验室设备信息时发挥高效、便捷的作用,把系统管理员从繁重的工作中解脱出来! 该实验室设备管理信息系统是以MYSQL数据库为后台核心应用、以服务为目的信息平台,对资源进行科学的加工整序和管理维护,为实验室设备信息提供管理。2.1.2经济可行性 经济可行性主要依据是成本/效益分析,该系统的目标是以最低的成本,在最短的期限内开发出实验室设备管理信息系统。系统能减少很多不必要的资源,不用象以前那样用冗余的纸张式的管理。大大节省了学校能源。并且还提高
9、了实验室设备信息管理的精确度。方便快速的操作,可减少实验室设备信息管理的漏洞,又减少因工作的冗余出现的错误,并且操作非常简单,可减少许多不很必要的人员,这无论从物质上海是工作人员的工资上都为学校节约了开支。为学校增加了财富。目标系统开发需求比较低,加上具有成熟的软硬件环境,所以在软硬件的支出上比较低,在为使用者带来便利的同时,也问哦系统的进一步推广创造了条件。这带来的经济回报将远超过支出,并且最重要的是该软件的开发可以使我们对系统的开发有全面的认识。从经济角度考虑,此实验室设备管理信息系统开发可行。2.1.3操作可行性 用户仅需具有基本的电脑操作能力即可。2.1.4社会因素可行性 从法律因素和
10、安全用正版和免费角度考虑,所有技术参考资料都经授权,所有软件都选。2.1.5可行性研究结论依据以上因素,本实验室设备管理信息系统开发项目不仅方便快捷、高效,而且社会效益比较好从而使本系统开发者相信该系统开发出来之后将取得成功。综上所述,此项目在技术、经济、操作和社会效益上是完全可行的。2.2需求分析2.2.1系统目的21世纪以来,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域。使原本旧的管理方法越来越不适应现在社会的发展。许多人还停留在以前的手工操作。这大大的阻碍了人类经济发展。为了适应现代社会人们高度强烈的时间观念,学校实验室设备信息管理系统软
11、件为学校实验室带来极大的方便。学校的规模不断扩大,实验室设备数量急剧增加,有关实验室设备的各个信息也成倍增加。面对庞大的信息量,需要有专门的实验室设备管理系统来提高工作的效率。本系统为实验室设备管理信息系统,通过这样的系统,可以做到信息的规范管理,快速查询实验室设备的就业信息。其开发主要包括数据库的建立和维护以及前端应用程序的开发两个方面。2.2.2系统功能及用户需求分析管理员可以对实验室设备信息进行查询及相关实验室设备的使用情况查看。管理员可以根据本人用户名和密码登录系统。在信息系统中,后台数据库存储的地位相当重要,数据库的设计不但对数据的操作速度有影响,还直接关系到软件系统的质量和生存周期
12、。本系统采用了SQL数据库book,book库中包括教师信息表、借用设备表、仪器表、用户登陆表。系统首先必须维护实验室中详细资料的数据表,程序能对该表进行写入和读出数据的操作,相应的,该表还有记录读者的借用情况,系统通过该表判断读者是否满意借用条件。系统还要管理员信息表,记录管理员的资料,检验管理员的登陆,管理员的权限等。1功能需求1)设备预定:实现实验人在系统平台上查询库内实验设备的状态及在某一时段的使用状况,若无损坏且未被预定使用,则用户可预定使用。2)设备管理:实现现在仓库中的每样设备信息的登记和新设备的入库登记,旧设备的报修、报废处理,以及设备状态的更改。3)设备的借出:按照教师所需设
13、备而给予借出,并在数据库中更改这些设备的使用状态。4)设备的归还:按照教师所还设备而进行如库登记,并在数据库中更改这些设备的使用状态。5)设备报修:实验人员在实验过程中如果发现设备损坏,通过此系统报告给管理员,同时改写数据库中的设备状态。2.3数据描述2.3.1数据流图报废信息设备信息类别/时间段管理员登录反馈管理员P 2.1用户登录P 2.2设备查询P 2.3借用设备P 2.4归还设备P 2.5设备审核P 2.6报废设备处理用户采购部 设备使用状况2.3.2数据字典数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据流图和数据字典共同构成系统的逻辑模型。下面用数
14、据字典来定义数据流图中各元素的确切内容:设备:实验室设备信息表别名定义:实验室设备信息表=类别+型号+规格+购买每个设备的价格+单价数量+购置日期间+生产厂家+生产厂商+购买人保修时间+是否贵重设备+责任人描述:实验室每种设备的详细信息位置:equipment.mdb 数据库归还:归还设备信息表描述:记录所有已归还设备的情况定义:归还信息表=编号+设备名+型号+规格+数量+单价+借出日期+生产厂家位置:return数据库维修:实验室中损坏的信息描述:记录实验室中损坏的设备以及归还设备中损坏的信息定义:损坏信息表=编号+设备名+型号+规格+数量+单价+生产厂家+损坏的责任人位置:repaire数
15、据库报废:实验室中损坏但是修理不好的设备信息描述:记录实验室中没有使用价值的设备定义:报废设备信息表=编号+设备名+型号+规格+数量+单价+生产厂家位置:throw数据库人员:使用实验室设备的所有教师描述:记录所有使用设备的所有教师信息定义:人员信息=教师姓名+教师性别+教师学历+部门名称+权限类别+电话号码+登记日期位置:teacher数据库系统管理员:管理实验室设备的人描述:对整个实验室设备进行管理,包括对设备进行查询、删除、更新操作的人定义:管理员信箱=用户名+密码+权限位置:management数据库第三章 总体设计3.1总体设计原理总体设计的基本目的就是回答“系统应该如何实现?”这个
16、问题。因此总体设计又称为概要设计或初步设计。通过这个阶段的工作将划分出组成系统的物理元素程序、文件、数据库、人工过程和文档等等,但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互之间的关系。总体设计工程通常有两个主意阶段组成:系统设计,确定系统的具体实现方案;结构设计确实软件结构,也就是要确定系统中每个程序拥有哪些模块组成的,以及这些模块之间的关系。在详细设计之前进行总体设计可以站在全局的高度上,花较少的成本,从中选出最佳方案和最合理的软件结构,从而用较低的成本开
17、发出高质量的软件系统。3.2运行环境与系统结构为了保证系统运行的效率和可靠性,系统服务器端应具有较高的软硬件配置,客户端的要求不是很高。此应用程序可广泛用于内部的局域网。3.3系统功能模块与设计模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。因为程序错误常局限在有关的模块及它们之间的接口中,所以模块化使软件容易测试和调试,因而有助于提高软件的可靠性。一个好的电子系统要有一些必要的模块组成,若缺少了某些模块那么这个系统就会有缺陷。3.4系统功
18、能模块说明1新进设备状态查询:1) 待效验 2)效验通过 3)效验失败 4)待登记 5)登记成功 6)登记失败2现有设备管理:1) 损坏设备报修 记录修理日期、设备名、修理厂家、修理费、责任人 于统计栏记录备案2) 设备报废 记录报废原因、责任人及相关信息 于统计栏记录备案3) 维修返回登记 加入“现有设备统计” 统计栏记录备案4)设备出入统计 统计记录资料并规范格式 查询设备维修、报废统计 打印设备维修、报废统计表 3急需设备购进1)生成购买申请表 2)打印表格 3)登记设备详细资料,同时更新申请表内容4管理员验证登陆1) 创立/修改管理员 登记管理员资料 修改管理员资料 删除管理员资料2)
19、 创建/修改管理员密码 新建管理员密码 修改管理员密码3) 验证登录 登录方式判断 以浏览方式登录,禁止修改数据但可以浏览 管理员登录密码验证3.5系统功能模块图实验室设备管理系统设备查询管理现有设备管理设备购进管理设备使用管理按编号查询第四章 概念设计4.1数据库的概念设计根据对数据流图和数据字典的分析,确定该应用中的实体、属性和实体之间的联系,并画出系统总体的E-R图。概念设计可分为三步进行:首先设计局部E-R模式,然后把各局部E-R模式综合成一个全局模式,最后对全局E-R模式进行优化,得到最终的模式,即概念模式。4.1.1局部E-R模式设计实体和属性的定义。E-R模型的“联系”用于刻画实
20、体之间的关联。一种完整的方式是对局部结构中任意两个实体类型,依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系。若有联系,进一步确定是1:N,M:N,还是1:1等,还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系,多个实体类型之间是否存在联系等等。1局部E-R模式的合并合并的原则是:首先进行两两合并,先合并那些现实世界中有联系的局部结构,合并从公共实体类型开始,最后再加入独立的局部结构。2消除冲突冲突分为三类:属性冲突,结构冲突,命名冲突。设计全局E-R模式的目的不在于把若干局部E-R模式形式上合并为一个E-R模式,而在于消除冲突,使之成为能够被所有用户共同理
21、解和接受的同一概念模型。3全局E-R模式的优化在得到全局E-R模式后,为了提高数据库系统的效率,还应进一步依据处理需求对E-R模式进行优化,一个好的全局E-R模式,除能准确、全面的反映用户功能需求外,还应满足下列条件:实体类型的个数要尽可能的少,实体类型所含属性个数尽可能少,实体类型间联系无冗余。1) 实验室设备信息E-R图,如下图所示。 图 4.1 实验室设备信息E-R图2) 使用设备的教师信息E-R图,如下图所示。 图 4.2 使用设备的教师信息E-R图3) 借用设备E-R图,如下图所示。 图 4.3 借出设备E-R图4) 归还设备E-R图,如下图所示。 图 4.4 归还设备E-R图 5)
22、 报废设备E-R图,如下图所示。 图 4.5 报废设备E-R图6) 损坏设备E-R图,如下图所示。 图4.6 损坏设备E-R图7) 管理员E-R图,如下图所示。 图4.7 管理员E-R图4.1.2 E-R图模型转成关系模型:E-R图模型转成关系模型:1设备信息(设备编号,设备名称,价格,生产厂家,设备数量,借出数量,备注,设备状况,启用日期,报废数量)2借用设备(设备编号,设备名称,借用人,借用数量,用途,借用日期,归还日期,经手人,备注)3教师信息(教师姓名,性别,教师学历,权限类别,电话号码,登记日期,部门名称)4管理员(用户名,密码,权限)5损坏设备(设备编号,设备名称,设备型号,设备类
23、别,单价,数量,规格,生产厂家,损坏负责人,损坏程度)6报废设备(设备编号,设备名称,设备型号,规格,数量,单价,生产厂家)7归还设备(设备编号,设备名称,设备型号,规格,数量,单价,生产厂家,借出日期,何人借出)4.1.3数据库实现基本表如下:1)设备信息表2)借用设备表3)教师信息表4)损坏设备表5)报废设备表6)归还设备表各表联系图第五章 详细设计5.1全局E-R设计所有局部E-R模式都设计好后,接下来就是把它们综合成单一的全局概念结构。全局概念结构不仅要支持所有局部E-R模式,而且必须合理的表示一个完整、一致的数据库概念结构。如下图所示。使用设备的教师信息使用实验室设备信息管理员管理记
24、录设备报废信息设备损坏信息设备归还信息设备借出信息借出 系统总体E-R图5.2编码实现与测试用例设计5.2.1登录界面运行本系统程序,首先出现登录界面,输入正确的用户名和密码之后进入主窗体数据库的链接操作代码如下:package org.mm.mldn.dbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class DataBaseConnection / 定义MySQL的数据库驱动程序public static final String DBDRIVE
25、R = org.gjt.mm.mysql.Driver ;/ 定义MySQL数据库的连接地址public static final String DBURL = jdbc:mysql:/localhost:3306/mldnl ;/ MySQL数据库的连接用户名public static final String DBUSER = root ;/ MySQL数据库的连接密码public static final String DBPASS = liyunfei ;private Connection conn = null;public DataBaseConnection()try Clas
26、s.forName(DBDRIVER); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();try conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();public Connection getConnection()return this.conn;public
27、 void close()if(this.conn != null)try this.conn.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();5.2.2主界面主界面的菜单栏包含的主要菜单有实验设备、仪器管理、人员管理、借用仪器、查询信息和帮助. 图5.2.2主界面窗体5.2.3主要功能模块代码package org.mm.mldn.dao.impl;import java.sql.Connection;import java.sql.PreparedStatement;i
28、mport java.sql.ResultSet;import java.util.ArrayList;import java.util.List;import org.mm.mldn.dao.IAdInfoDAO;import org.mm.mldn.dbc.DataBaseConnection;import org.mm.mldn.vo.AdInfo;public class IAdInfoDAOImpl implements IAdInfoDAO private DataBaseConnection dbc = null;private Connection conn = null;pu
29、blic IAdInfoDAOImpl(Connection conn) this.conn = conn;public boolean doCreate(AdInfo adInfo) throws Exception boolean flag = false;PreparedStatement pstmt = null;String sql = insert into AdInfo(ad_id,ad_name,price,factary, +ad_no,lend_no,ad_zk,bad_no,use_data,bz)VALUES (?,?,?,?,?,?,?,?,?,?) ; try ps
30、tmt = this.conn.prepareStatement(sql);pstmt.setString(1, adInfo.getAd_id(); pstmt.setString(2, adInfo.getAd_name(); pstmt.setString(3, adInfo.getPrice(); pstmt.setString(4, adInfo.getFactary(); pstmt.setInt(5, adInfo.getLend_no(); pstmt.setInt(6, adInfo.getAd_no(); pstmt.setString(7, adInfo.getAd_zk
31、(); pstmt.setInt(8, adInfo.getBad_no(); pstmt.setDate(9, new java.sql.Date(adInfo.getUse_data().getTime();pstmt.setString(10, adInfo.getBz(); if (pstmt.executeUpdate() 0) / 至少已经更新了一行flag = true;elseflag = false; catch (Exception e) throw e; finally / 不管如何抛出,最终肯定是要进行数据库的关闭操作的if (pstmt != null) try ps
32、tmt.close(); catch (Exception e1) return flag;public boolean doDelete(String ad_id) throws Exception boolean flag = false;PreparedStatement pstmt = null;String sql = delete from adInfo where ad_id = ? ; try pstmt = this.conn.prepareStatement(sql);pstmt.setString(1,ad_id); if (pstmt.executeUpdate() 0
33、) / 至少已经更新了一行flag = true; catch (Exception e) throw e; finally / 不管如何抛出,最终肯定是要进行数据库的关闭操作的if (pstmt != null) try pstmt.close(); catch (Exception e1) return flag;public boolean doUpdate(AdInfo adInfo) throws Exception boolean flag = false;PreparedStatement pstmt = null;String sql = UPDATE adInfo SET a
34、d_name=?,price=?,factary=?,ad_no=?,lend_no=?, +ad_zk=?,bad_no=?,use_data=?,bz=? WHERE ad_id=?;try pstmt = this.conn.prepareStatement(sql);pstmt.setString(1, adInfo.getAd_name(); pstmt.setString(2, adInfo.getPrice(); pstmt.setString(3, adInfo.getFactary(); pstmt.setInt(4, adInfo.getAd_no(); pstmt.set
35、Int(5, adInfo.getLend_no(); pstmt.setString(6, adInfo.getAd_zk(); pstmt.setInt(7, adInfo.getBad_no(); pstmt.setDate(8, new java.sql.Date(adInfo.getUse_data().getTime();pstmt.setString(9, adInfo.getBz(); pstmt.setString(10, adInfo.getAd_id(); if (pstmt.executeUpdate() 0) / 至少已经更新了一行flag = true; catch
36、 (Exception e) throw e; finally / 不管如何抛出,最终肯定是要进行数据库的关闭操作的if (pstmt != null) try pstmt.close(); catch (Exception e1) return flag;public AdInfo find_adId(String ad_id) throws Exception AdInfo adInfo = null ;PreparedStatement pstmt = null;String sql = SELECT ad_id,ad_name,price,factary, +ad_no,lend_no
37、,ad_zk,bad_no,use_data,bz FROM adInfo WHERE ad_id=?;try pstmt = this.conn.prepareStatement(sql);pstmt.setString(1, ad_id) ;ResultSet rs = pstmt.executeQuery(); / 执行查询操作if (rs.next() adInfo = new AdInfo();adInfo.setAd_id(rs.getString(1);adInfo.setAd_name(rs.getString(2);adInfo.setPrice(rs.getString(3
38、);adInfo.setFactary(rs.getString(4);adInfo.setAd_no(rs.getInt(5);adInfo.setLend_no(rs.getInt(6);adInfo.setAd_zk(rs.getString(7);adInfo.setBad_no(rs.getInt(8);adInfo.setUse_data(rs.getDate(9);adInfo.setFactary(rs.getString(10);rs.close() ; catch (Exception e) throw e; finally / 不管如何抛出,最终肯定是要进行数据库的关闭操
39、作的if (pstmt != null) try pstmt.close(); catch (Exception e1) return adInfo;public int find_No(String ad_id) throws Exception AdInfo adInfo = null ;int no=0;PreparedStatement pstmt = null;String sql = select ad_no-lend_no-bad_no from AdInfo where ad_id=?;try pstmt = this.conn.prepareStatement(sql);ps
40、tmt.setString(1, ad_id) ;ResultSet rs = pstmt.executeQuery(); / 执行查询操作adInfo = new AdInfo();adInfo.setAd_no(rs.getInt(1);adInfo.setLend_no(rs.getInt(2);adInfo.setBad_no(rs.getInt(3);rs.close() ; catch (Exception e) throw e; finally / 不管如何抛出,最终肯定是要进行数据库的关闭操作的if (pstmt != null) try pstmt.close(); catc
41、h (Exception e1) return no;public List findAll(String KeyWord) throws Exception / TODO Auto-generated method stubList all = new ArrayList();PreparedStatement pstmt = null;String sql = SELECT ad_id,ad_name,price,factary,ad_no,lend_no, +ad_zk,bad_no,use_data,bz FROM adInfo WHERE ad_name=? OR ad_id like ? OR price like ? OR use_data like ?;try pstmt = this.conn.prepareStatement(sql);pstmt.setString(1, % + KeyWord + %);pstmt.setString(2, % + KeyWord + %);pstmt.setString(3, % + KeyWord + %);pstmt.setString(4, % + KeyWord +