《实验室预约管理系统.docx》由会员分享,可在线阅读,更多相关《实验室预约管理系统.docx(32页珍藏版)》请在三一办公上搜索。
1、题目实验室预约管理系统(编码)(编码)(毕业论文)化材学院实验室预约管理系统(编码)【摘要】实验室预约系统基于B/S结构,后台利用oracle数据库存储系统信息Hibernate框 架及mvc技术。其主要功能有:实验室预约、预约管理和预约审批管理。预约功能包括老师、学生 通过对实验室项目、信息等情况来预约实验室。管理功能包括管理员对预约实验、对用户信息、对 实验室信息的管理。系统是通过服务器和各户浏览器来实现资源的共享。它通过判断客户端提交的 信息,完成实验项目的预约和查看。利用Internet的迅速发展和各种资源的网络化实现,来完成繁 琐的人工操作,提高了可靠性、提高了工作效率、突破了时间和
2、空间的限制。【关键词】预约管理、实验室预约、B/S、oracle、Hibernate目录1引言31.1课题背景41.2项目开发的目的和意义41.3项目阶段工作41.4本章小结52系统开发平台及相关技术52HibeRNATE52.2MVC52.3 Myeclipse63需求分析63.1总体需求分析63.2可行性分析63.2.1技术可行性63.2.2经济可行性63.2.3操作可行性63.3业务流程73.4本章小结74系统总体分析与设计74.1系统功能分析74.2UML94.3数据库设计135系统详细设计155.1程序流程图155.2系统主要功能165.2.1登陆界面165.2.2批量删除175.2
3、.3分页管理185.2.4默认时间间隔195.3系统界面215.3.1实验室管理215.3.2管理员管理215.3.3个人信息修改225.3.4学院设置225.3.5专业管理235.3.6数据导出235.3.7实验室预约列表245.3.8未批准预约245.3.9已批准预约246软件测试与分析246.1系统测试246.2 系统运行情况256.3系统评价25结论25致谢26参考文献27目录1引言41.1课题背景41.2项目开发的目的和意义41.3项目阶段工作41.4本章小结52系统开发平台及相关技术52HibeRNATE52.2MVC52.3 myeclipse63需求分析63.1总体需求分析63
4、.2可行性分析63.2.1技术可行性63.2.2经济可行性63.2.3操作可行性63.3业务流程73.4本章小结74系统总体分析与设计74.1系统功能分析74.2UML94.3数据库设计135系统详细设计155.1程序流程图155.2系统主要功能165.2.1登陆界面165.2.2批量删除175.2.3分页管理185.2.4默认时间间隔195.3系统界面215.3.1实验室管理215.3.2管理员管理215.3.3个人信息修改225.3.4学院设置225.3.5专业管理235.3.6数据导出235.3.7实验室预约列表245.3.8未批准预约245.3.9已批准预约246软件测试与分析246.
5、1系统测试246.2 系统运行情况256.3系统评价25结论25致谢26参考文献271引言1.1课题背景完善和提高实验室的管理水平是近年来各大高校的热点问题。最初实验室的管理都是靠人力来 完成。当实验项目比较少的时候,人力还可以完成。但因为实验项目、实验室和实验人数的增加, 如今我们需要一种更有效的方法来管理实验室。随着社会的发展,现在B/S模式的流行,高校都纷纷通过这种形式展现自己的资源。实验 室预约管理就是B/S模式中的一个例子。实验室预约管理系统是通过服务器和各户浏览器来实现资 源的共享。它通过判断客户端提交的信息,完成实验项目的预约和查看。利用Internet的迅速发展和 各种资源的网
6、络化实现,来完成繁琐的人工操作,提高了可靠性、提高了工作效率、突破了时间和 空间的限制。利用电脑和网络管理实验室不仅存储量大、保密性好、寿命长而且查找方便、检索迅 速、成本也低。同时实验室预约管理系统把来至不同院系的预约的信息集中统一管理,免去不少人 力和麻烦。1.2项目开发的目的和意义目的:(1) 熟悉和掌握B/S模式和框架,了解其优势。(2) 熟悉ASP和MyEclipse平台的运用。(3) 合理运用各种绘图工具的运用。(4) 进一步熟悉oracle的数据库的功能。(5 )培养团队合作的精神。意义:实验课是各大高校不可缺少的一部分,实验室管理也是高校管理的重要组成部分。如何 高效合理的运用
7、实验室是一项繁琐和细心的工作。人力操作不仅效率低,而且还容易出错。 实验室预约系统主要是通过老师和学生在网上预约实验室,实现实验室的自动化和规范化。1.3项目阶段工作系统分析阶段V系统设 计阶段系统实 施阶段图1-1总体流程图1.4本章小结通过对以前管理系统和对现在信息化管理理念的认识,而且对学校的管理也认识不少,知道系统 大体的功能流程,那么可以很快地开发出实验室管理系统,从而减少工作量。2系统开发平台及相关技术2.1HibernateHibernate是一个对象映射框架,可以对JDBC进行轻量级的封装,使编程人员轻松方便的使用 数据库中得数据。有JDBC的场合都可以使用Hibernate,
8、既可以在客户端使用,也能也能用于Web。Hibernate有6核心接口。这6个接口在任何的开发中都有运用到。利用这些接口,不仅可以任 意存取持久化的对象,还可以控制事务1。2.2MVCMvc中的M代表模型(Model)V代表视图(View)C代表控制(Controller)。Mvc的思想主要死为 了实现web系统的职能分工。M层中实现系统的逻辑业务。主要通过javabean来实现。V层中主要 是通过界面的设计来实现与用户的交互。C层主要是用于衔接M层和V层。根据用户输入的指令, 来判断跳转的页面。同时也解释用户的指令并将它们映射。Mvc将模型、视图、控制器分开,各自处理自己的任务。这这样就算视
9、图层的代码发生了 变化,也不会影响到模型和控制器的代码,反之也是如此。这样大大降低的了程序的耦合度 。2.3 MyeclipseMyEclipse 是工作平台(MyEclipse Enterprise Workbench,简称 MyEclipse)它的功能很强大, 支持也很广泛。利用它可以在java项目的开发中大大的提高工作效率。它是功能丰富的JavaEE集 成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持 Struts、JSP、CSS、SQL、 Hibernate】3】。MyEclipse有七类特征。七类特征每一种功能类别,对应其在Eclipse中的功能部件, 并通过一系列的插件
10、来实现它们。3需求分析3.1总体需求分析近几年来,国内高校发展的步伐越来越快。实验室数量逐年增加。实验室的管理的规模也越来 越大,越来越烦杂,管理上的问题也就越来越多。许多高校的实验室管理还处于人工阶段。当需要检查和上报数据时,使本来就复杂的管理工作 变得更加的艰难。因此学校应建立实验室数据库来管理实验室的各项信息。实验室建设的不断扩大, 使许多仪器处于闲置状态。因此,学校应该提供设备共享机制,提高设备的利用率。而且许多学校 有多个校区,这使实验室主管缺少与教师和学生的沟通,为解决这难题,需利用校园网络,共享实 验室信息。3.2可行性分析通过调查,知道了系统的规模与目标。研究了系统的模型,认为
11、这个系统可以开发。从技术方 面:可以运用现有技术完成。从经济方面:这个系统成本比较低。从操作方面:用户可以独立操作。 并且重新定义了一些问题。导出和评价了一些供选择的解法。草拟了开发计划,并且写了相关文档。 43.2.1技术可行性由于近几年国内软件技术的飞速发展,任何规模的企事业都有独立开发各种软件的能力,基本 都能满足客户的需求。尽管这个系统在组织上有点复杂、繁琐。但其基础还是在数据库的基本操作, 所以不存在太大的技术问题3.2.2经济可行性整个系统的前期投入比较多,但整个系统能运行后,能让学校减少大部分的实验室管理员。更 重要的是在提高效率的同时又保证了数据的准确。所以说这个系统的收益能远
12、远超出其成本。3.2.3操作可行性随着科技的发展,人们对电脑都有一定的操作基础,加上配置专业的人员来维护电脑,相信也不会出现太大的 问题。3.3业务流程根据现状的调查,我们大胆的提出实验室预约管理系统的业务流程。利用权限管理将管理员和 用户分开。根据权限的不同给予不同的功能操作。图2-1业务流程图3.4本章小结通过对实验室预约系统的总体需求和可行性分析。更加证明这系统是可行的。对于减少实 验室管理人员的工作量更是有不小的作用。4系统总体分析与设计4.1系统功能分析1实验室管理1.1添加实验室:填写实验室的名称和设备数,并将实验室名称添加到实验名称表。1.2修改实验室:对实验室名称进行修改,修改
13、后保存到实验室表。1.3删除实验室:将实验室名称从实验室表中删除。1.4实验室列表:查询实验室表,并显示查询的实验室。2学院设置2.1添加学院:填写学院的名称,并将学院名称添加到学院信息表。2.2修改学院:对学院名称进行修改,修改后保存到学院信息表。2.3删除学院:将学院名称从学院列表中删除。2.4学院列表:查询学院表,并显示查询的学院。3专业设置3.1添加专业:填写专业的名称,并将专业名称添加到专业信息表。3.2修改专业:对专业名称进行修改,修改后保存到专业信息表。3.3删除专业:将专业名称从专业列表中删除。3.4专业列表:查询专业表,并显示查询的专业。4人员管理4.1添加用户:选择用户的学
14、院、专业和身份,填写用户的账号、学号、密码,并将信息添加 到用户表。当用户第一次登陆时不全用户信息。4.2修改用户信息:对用户的学院、专业、账号、学号、密码进行修改,并保存到用户表。4.2删除用户:将用户所有信息从用户表中删除。4.4用户列表:查询用户表,并显示用户的所有信息。5个人信息维护5.1修改个人信息:对个人的学院、专业、账号、学号、电话、邮箱、密码进行修改,并保 存到用户表。6预约管理6.1添加可预约实验室:选择实验室的名称、开始时间、结束时间和时段长系统自动将实验室时间分割等时段长逐个添加到预约实验表。6.2删除预约实验室:根据时间段的不同进行批量删除,将其从预约实验室表中删除。6
15、.3预约实验室列表:查询预约实验室表,并显示预约实验室的具体信息。7预约实验室列表7.1预约实验室:选择实验名称、和开始结束时间。添加到预约实验室表。7.2查看预约实验室:。8预约审批管理8.1查看审批预约:查询开放实验室表,并显示预约实验室的具体信息8.2批准预约:将预约添加到已批预约表。8.3驳回预约:将预约添加到驳回预约表。9数据导出选择开始时间和结束的时间导出数据。系统中导出备份的数据,可以将所有的预约数据导出, 以EXCEL格式,导出字段为所有预约项目中的信息。4.2UML图3-1总用例图实验室管理用例说明用例名称实验室管理编号参与者超级管理员使用频率少业务优先级描述超级管理员输入账
16、号密码登陆,如果账号密码有误则返回登陆界面.登录成 功后自动到实验室管理界面.超级管路员可以通过点击“设置实验室名称”进入 实验室的名称设置;通过点击“设置实验室管理员”进入实验室的管理员设定。前置条件1身份验证。超级管理员登录成功典型过程1. 基流(Basic Flow)1超级管理员登录启动该用例2系统要求超级管理员选择“实验室”3超级管理员做出选择后,系统显示相应的界面,让超级管理员输入信息。4超级管理员输入的实验室的相关信息,包括:实验室名称,实验室管理 员。5系统确认输入的实验室名称是否有相同的。6系统将输入的信息存入数据库。2. 异常流(Exception Flow)1如果有相同的实
17、验室名称,则显示出重复的实验室,并要求超级管理员修 改信息或取消输入。2超级管理员选择取消输入,则结束用例,不作存档工作。3.超级管理员选择修改信息,修改完后提交。后置条件显示实验室非功能性要求性能:需要在8秒内得到响应。容错:可用性:高安全性:用户和管理员管理用例说明用例名称编号参与者超级管理员使用频率少业务优先级描述通过“管理,可以查看注册管理员和用户的基本资料页,对于那些材料填 写错误的管理员和用户,进行查封和解冻。前置条件身份验证典型过程1. 基流(Basic Flow)1当超级管理员进入管理员和用户管理时,用例启动。2超级管理员可以看到管理员和注册用户填写的信息:用户名、密码、确 认
18、密码、真实姓名、性别、出生日期、电子邮箱、电话号码、地址、邮编, 对于那些材料填写错误的用户,进行查封和解冻。3系统检查格式,正确填写的将信息存入数据库。4显示提交成功,并显示管理员基本资料页面。2. 异常流(Exception Flow)E-1 :该用户名等信息空白或者格式不正确,系统显示提示错误信息,并返 回注册页面,用例终止。后置条件显示管理员和用户信息非功能性 要求性能:需要在8秒内得到响应。容错:可用性:高安全性:预约管理用例说明用例名称预约管理编号参与者管理员使用频率高业务优先级描述管理发布实验室开放时间。管理员可取消、查看、审核预约前置条件管理员身份验证,登录成功典型过程1. 基
19、流(Basic Flow)1管理员向系统发布实验室开放时间。2管理员向系统发出删除预约请求。3系统显示确定要删除的预约。4点击确定,将修改存入数据库。5管理员向系统发出查看预约请求。6系统按顺序显示预约信息。7管理员查看预约信息,发现不合理的预约点击“删除”。删除此预约并 发送“预约不成功”信息给用户8点击确定,将修改存入数据库。2. 异常流(Exception Flow)后置条件显示预约审核界面非功能性 要求性能:需要在8秒内得到响应。容错:可用性:高安全性:补充说明存在疑问个人信息管理用例说明用例名称个人信息管理编号参与者超级管理员管理员用户使用频率高业务优先级描述在首页点击“用户中心”进
20、入用户中心的基本资料页。如果用户未登录, 则转到登录页面,登录成功后自动到用户中心基本资料贞。用户可以点击“修 改资料”进入用户资料修改前置条件参与者输入系统的用户中心页面地址,并且用户中心页面在用户的浏览器 里能够正常显示。典型过程1. 基流(Basic Flow)1当参与者进入用户中心时,用例启动。2系统显示参与者填写的信息:用户名、密码、确认密码、真实姓名、性别、 出生日期、电子邮箱、电话号码、地址、邮编3. 并可以通过点击“修改资料”按钮,进行修改。系统检查格式,正确填写的将信息存入数据库。4. 显示提交成功,并显示用户基本资料页面。2. 异常流(Exception Flow)E-1
21、:该用户名等信息空白或者格式不正确,系统显示提示错误信息,并返 回注册页面,用例终止。息后置条件显示个人信息非功能性 要求性能:需要在8秒内得到响应。容错:可用性:高安全性:实验室预约用例说明用例名称实验室预约编号参与者用户使用频率较高业务优先级描述用户可以提出预约审核的请求并查看自己的预约信息或删除预约。前置条件身份验证典型过程1. 基流(Basic Flow)1用户向系统发出“预约”请求。2系统默认显示用户的信息,显示预约的信息。3系统自动将该用户的信息和预约的信息发送给该实验室的管理员4系统显示预约成功5点击确定,存入数据库。2. 异常流(Exception Flow)E-1 :当用户未
22、正确填写自己的个人信息,则系统显示提示错误,并返回注 册页面。后置条件显示预约成功信息非功能性 要求性能:需要在8秒内得到响应。容错:可用性:高安全性:4.3数据库设计LATORATQRYLIBID如 i) gtrihar 湄narxevarchorBSTJIPMEffTNUJIBEKvarchorpkOPEKLiUFEimi如1_uarihar 血LABIDuarcharBEGINTIMEDn-teEMHTIHEEia-teCUKWUMIonsAlLOfflOJILongHumsvaicliarpk PRDFESSNWALp nduarihar JIDanevszchaipk RESERVA
23、TIQrfr i -51v.ar匚bar船fkJJSEKIDT:archarfk OPENIDv-ai chazSTATUSrax charBEQIJTTIMEDateEDCDTIHEDateSOPLE 皿1哄SA1FLESTATUSr az charTOXICITYrazcharHUE:var charBOdKimloneLAD 虬5Evai chatpk piUSERSMWUNTUndfif ined?Li ID,pi varcharROLEvarcharPASSVORLvarchainuie-v arch, arSEEirarcharhailirarcharCOLLE-GEvazchai
24、:PRjOFESSIOMALvarch-aiTEACHERvarcharPEK-IOUlrtEiERvarcharTTLAUIvarcharICTTOLTIOITv ar chaiFIRSTvaiEhaipk pi73-2数据库表实验室信息表、开放的实验室信息表、个本系统共有6张数据库表:学院信息、专业信息表、 人信息表、审核实验室信息表。3-3学院信息表字段名数据类型说明idvarchar(20)标识属性自增长namevarchar(20)学院名称3-4专业信息表字段名数据类型说明idvarchar(20)标识属性自增长namevarchar(20)专业名称3-5实验室信息表字段名数据类型说
25、明libidvarchar(20)标识属性自增长namevarchar(20)实验室名称equipmentnumbervarchar(20)实验室设备数3-6开放实验室信息表字段名数据类型说明openidvarchar(20)标识属性自增长libidvarchar(20)实验室名称begintimeint(20)开始时间endtimeint(20)结束时间curnumlong(10)设备数allownumlong(10)允许人数remarksvarchar(50)备注3-7个人信息表字段名数据类型说明idvarchar(20)用户名rolevarchar(20)角色passwordvarcha
26、r(20)密码namevarchar(20)姓名sexvarchar(20)性别mailvarchar(20)邮件collegevarchar(20)大学professionalvarchar(20)专业teachervarchar(20)指导老师phonenumbervarchar(20)电话号码trainvarchar(20)培训情况3-8预约审批表字段名数据类型说明idvarchar(20)标识属性自增长namevarchar(20)实验名称labnamevarchar(20)实验室名称booknumlong(20)人数remarksvarchar(20)备注useridvarchar(
27、20)身份begintimeint(10)开始时间endtimeint(10)结束时间samplenumvarchar(20)样品数samplestatusvarchar(20)样品形状5系统详细设计5.1程序流程图登录流程图5-1所示图5-1登陆界面程序流程图查询修改流程图5-2所示图5-2查询修改删除流程图添加流程图5-3所示图5-3添加流程图5.2系统主要功能5.2.1登陆界面输入账号和密码。系统通过账号验证身份不同身份有不同的操作权限相关代码*账号密码验证* param account* param password* return*/public Users LoginVerific
28、ation(String account ,String password) (Users users = null;if(account!=null&!.equals(account)&password!=null&!.equals(passwo rd)(try (users = (Users) userDao.findById(Users.class, account);if(users!=null)(System.out.println(users.getPassword();System.out.println(password);if(password.equals(users.ge
29、tPassword()return users;elsereturn null;5.2.2批量删除删除多条选中的信息,避免一直删除带来的麻烦。同实验室开放时间结束时间当前人裁.伫.午A女操作111- vr .-n2012-03-02 19:915|)M实验室2012-03-02 18:49:152012-03-02 19:19 150-i:画舞他宝2012-03-02 IS 19:152012-?3-?2 1E.-9 1:4:111空湍宰-二抑项2012-03-02 13:19154:她.眦n2012-03-02 17:19:152012-03-02 1 由 9.1:04G修改i嗨画2012-
30、03-02 16:49:152012-03-02 17:19 154:画.;一”一131 气2012-03-02 6-.49 15nM2012-03-02 15:49:152012-03-02 16:19 15040惨改骊同2012 03 02 15 19:152012 03 02 1 孙 150修改丽画实验室12012-03-02 1449:152012-03-02 15:19 15n4如二朋徐廿是刑.除else if(deleteAll.equals(action) (String ids = request.getParameter(ids);String ids2 = ids.spli
31、t(,);for (int i = 0; i ids2.length; i+) (if(ids2i!=null&!”.equals(ids2i)openService.deleteOpen(ids2i);5.2.3分页管理默认每页最多10条记录n耳有47吾记呆 SiF n.J W SliTj-kniT/* */*根据指定的皿进行查询,并返回查询结果并进行分页* param hql,hql语句* return查询结果* throws Exception*/throwspublic List findByHQL(String hql,HttpServletRequest request) Exce
32、ption /System.out.println(in sdljflksdjfklsjd);Session session=null;List list = null;trySystem.out.println(hql);int rowCount=getCount(hql);session = HibernateSessionFactory. getSession();PageDao pageDao = new PageDao(request);pageDao.setPagesize(10);int pagesize = pageDao.getPagesize();pageDao.setRs
33、count(rowCount);int pageCount = pageDao.getPageCount();int currentpage = pageDao.getCurrentpage();Query queryObject=HibernateSessionFactory.getSession().createQuery(hql);pageDao.setPagecount(pageCount);String pagetool = pageDao.pagetool(PageDao.Image);request.setAttribute(pagetool, pagetool);queryOb
34、ject.setFirstResult(currentpage - 1) * pagesize);queryObject.setMaxResults(pagesize);list = queryObject.list(); catch (Exception e) / TODO: handle exceptione.printStackTrace();return list;finallyHibernateSessionFactory.closeSession();session=null;return list;/*获取总条数* param hql* return*/public int ge
35、tCount(String hql) (List storeList = new ArrayList();int count = 0;String sql =select count(*) +hql;Session session = HibernateSessionFactory.getSession ();try (Query query = session.createQuery(sql.toString();Object oo = query.uniqueResult();count = oo.hashCode(); catch (Exception e) (e.printStackT
36、race(); finally (session.close();return count;5.2.4默认时间间隔因为有些实验本身就不复杂,根本不用一节课的时间。所以我们将实验课默认为15分钟,这 样一节课可以进行3次实验。提高实验室的使用率。学生做完实验就能离开,也节约了学生的部分 时间。新增开放实验室信息-请选择-*w30 *3015提交重置I退回雾验室 开始时间 结束时间 时段长 允许人数备注*添加开放的实验室信息* param labid* param begintime* param endtime* param allownum* param timelong* param rem
37、arks*/public void addOpen(String labid,String begintime,String endtime,String allownum, Long timelong,String remarks)(DateFormat df =new SimpleDateFormat(yyyy-MM-dd hh:mm:ss);/DateFormat.getDateInstance();/ 2012-02-23 00:00:02 new SimpleDateFormat(yyyy-MM-dd 00:00:02);try (Long lg = df.parse(endtime
38、).getTime()-df.parse(begintime).getTime();Long i = lg/(1000l*60l*timelong);for (Long j = 0l; j i; j+) (Openlab openlab = new Openlab();String openid = IDCreator.getID16();openlab.setOpenid(openid);openlab.setLabid(labid);openlab.setAllownum(Long.parseiong(allownum);openlab.setCurnum(0l);openlab.setR
39、emarks(remarks);openlab.setBegintime(newDate(df.parse(begintime).getTime()+j*1000l*60l*timelong);openlab.setEndtime(newDate(df.parse(begintime).getTime()+(j+1l)*1000l*60l*timelong);openDao.add(openlab); catch (Exception e) (/ TODO Auto-generated catch blocke.printStackTrace();5.3系统界面5.3.1实验室管理设备数买验至
40、50但改,删除头验室140修改i删酝实验室2卯壁.WT.1T.112121212修政J删膨共有甚订录 再典口咨.记示 关1典庆1只5.3.2管理员管理椽川宇气一请忌耳二“十出 is哽一-叫宇亏半沅岸L姓名;AsuprradnuD管埋员美术EuperadminHH修改.雌050050ZZ修改j雌teacluer坂.,巾9991闩早簪改.廿13admin超圾管理员协和学院软件工程admin 1E早修改:也%芒有4条记录 怔页1谗记景 粉项君1页聒入5.3.3个人信息修改个人信息账号admin身份 I朗级管王 学号Iadminl 陈锦性别男-学院I协和学院V专业软件工程/联系电话123邮箱123指导
41、老师123123 15.3.4学院设置共右遛泓i录 寺贝川条记录 第项供1贝转入学院名称目添加学院名称操作美术修改/删除M算机修改r删除协邪学院修改/删除15.3.5专业管理专业名称专业名称操作美K修改j鲤软件工程修改/删除计算部件七使木蛙饷区页巨m七底订示.正如解工聚毛I臭庆1臭5.3.6数据导出开始时间 2012-02-29 20:26:50 结束时间 2012-03-11 20:26:58 导出您想打开或保存此更f牛吗勺名称类型发送者打开(U)保存backup.mIsMicrosoft Excel 工作表 127.0.0.1来自Internet的立件可能对您有所帮助,但某些立件可能 危害您的计食机口如果!每不信任其来源话不要打开或f杲存 该女件。有何风险?5.3.7实验室预约列表尖骑室开放时间当前人数笛江操七实验室12012 03 02 03 19:152012 03 02 00:49:15”JX沓看详细世安验室i2012-03-02 0849:152012-03-02 09 19:15G/hO天查看详细f瞬实验室12012 03 02 09:13:15_U1J J 盘 JS/ZIj/I J无杏成