《哈工大(威海)ERP--医疗器械购销系统.docx》由会员分享,可在线阅读,更多相关《哈工大(威海)ERP--医疗器械购销系统.docx(23页珍藏版)》请在三一办公上搜索。
1、医疗器械购销系统 1、 需求分析-选题意义(1) 商务型网站的快速发展在学习过数据库之后,在进行数据库课程设计的时候我就对于数据库课程设计的选题进行了深入的研究,在现在社会,主流的发展已经不是说是电脑的普及和因特网的广泛使用了,更多的是对于因特网的运用已经刺激了整个地球的发展,同开始的运用到资料的检索到现在的在网上进行企业与企业之间的项目合作,以及产品的购买销售等 ,都是通过在网上进行实时的交易,这样带来了生产率的大幅度的提升,试想一下,如果我们在网上进行谈生意,进行竞价,总好过两家公式的销售经理带着自己的产品经过很长时间的奔波,然后两个人会面进行商讨,然后进行签约,等拖延了很多天以后,才真正
2、的进行订单产品的生产吧。各种商务型网站的兴起,已经刺激和改变了消费者的消费观念,作为一种新型的销售方式,商务型网站显示了它强有力的竞争力和优势。更多的商品和厂家的选择,更快速的更有效率的实现生产厂商和消费厂商以及消费者之间的联系,能够更好的促进资源的流动,更带动了一批新型产业。 (2) 我国医疗器械市场的不健全我国是一个社会主义国家,在当今社会中,应加强对于基础产业以及社会民生食品医疗产业的监管力度,在网络商务的兴起的条件下:我们的商业管理部门有义务建立一个统一的医疗器械的销售网站,这样所有的医疗器械的生产厂商都可以申请在这个网站上销售自己的产品,并且所有的医院和其他的医疗器械部门也可以在这个
3、网站上和相应的厂商进行交易。于此同时,整个的医疗器械的交易过程全部都在政府安全部门的监管之下,这样就有有效的防止了假冒伪劣产品,以及某些公司的不合格产品的出现,更多的是可以开明的交易过程可以防止一些隐式的不符合商业规则的交易行为。(3) 统一在商务型网站上销售保证质量和竞争力通过统一全国的医疗器械产品跟或者是统一合格的医疗产品厂商的网址价格信息,可以使得市场上的医疗器械的价格公开化,透明化,防止不同公司之间出现不正当的竞争的出现。各个医疗器材的生产厂家为了提高其竞争力跟定努力降低劳动成本,增加生产率,这样一来有利于整个社会的生产力的发展。(4) 对于HTML5.0 应用的更加的广泛,网络销售带
4、来更加具有具有前景的销售方式对于当前的云计算技术的流行,以及网络程序的日益的流行以及功能的强大,学习好网络编程已经成为一个IT人员必备的一项技能,鉴于此我在学习JSP的基础以及ORACLE的基础上,深入学习,各种构件,运用架构,来更好的提,高自己的能力。并且将这个系统在架构模式下,能够更好的进行软件的升级和维护,随着将来技术的发展进一步的方便的进行修改和代码的重用。2、 功能分析-软件需求(1)登陆(消费者、生产商、政府管理人员)与注册对于能够登陆界面:由于这个系统是针对于政府管理、医院购买医疗器材、器材生产商销售器材中网站使用人员,这样我们的网站必须是面向会员登陆的,这样网站才能将登陆人员的
5、所有的网页活动记录下来,来利于管理者的管理这个交易过程。消费者登陆是查询消费者的数据库,如果匹配成功,那么接下来进行的就是从数据库调出该消费者的信息,然后对其购买的产品以及浏览的历史进行分析以及对于该会员可以实现查询医疗器械的功能。如果,匹配没有成功的话,就进入信息提示界面,在3s后会自动的返回到网站的首页,重新进行输入,此时的验证码也相应的进行改变。生产商:医疗器械的生产商,在通过相应的输入后,可以进行producer数据库的查询匹配,如果匹配成功的话,就进入下一个页面这是就可以进行对于自己生产的医疗器械的各种管理,如果,匹配没有成功的话,就进入信息提示界面,在3s后会自动的返回到网站的首页
6、,重新进行输入,此时的验证码也相应的进行改变。政府管理人员:政府管理人员相当于是本系统的vip会员,所以该会员是没有办法进行注册实现成为管理员的,同时对于的政府管理人员的数据库进行查询匹配然后得到相应的数据,如果匹配成功,就进入政府管理人员的管理界面实现各种权威性的功能。如果,匹配没有成功的话,就进入信息提示界面,在3s后会自动的返回到网站的首页,重新进行输入,此时的验证码也相应的进行改变。(2)消费者查询购物当消费者成功的登陆系统之后进入了消费者的自己的特有的界面,这个界面主要实现一下的几个功能:自己信息的修改(自己的个人信息,个人的登陆密码)以及购买产品的相关信息、对于实现的检索的功能(模
7、糊查询-关键字的匹配、精确的查询-级联下拉框)、剩下的主要的功能就和现在的商务网站的相同就是下订单,对于应经下的订单的管理(修改、删除、添加等)。(3)生产商接收订单修改商品(医疗器材)在医疗器材的生产者登陆界面后可以实现的功能如下:对于自己信息的维护(自己的个人信息,个人的登陆密码)以及其他的好友关系(发生过交易的消费者以及其他),另外的功能就是添加医疗器材,就是维护自己的仓库。以及具有的对于消费者下的订单的处理的情况,这个过程和大型的商务网站的过程相同,最大的区别就是在于政府管理人员的监控其产品的质量的过程步骤,也就是政府管理人员可以无条件的查询生产者的某些不具有隐私性的数据库信息。(4)
8、 政府管理人员的管理政府管理人员作为一个在本工程中所特有的人物的设定,他的任务在于监管各种消费者与生产厂商之间的交易情况,最重要的作用就是实现对于市场的力度的监管,对于实现对于医疗器材的质量的提高和价格的降低有着很重要的作用。作为政府管理人员登陆系统以后,进入相应的政府管理界面,他最主要关注的就是消费者的对于物品的评价情况,对于价格较高的或者是质量不好的产品进行检测和处理,来保障消费者的权益。另外的功能就是实现对于订单的检测,防止出现不正当竞争的情况的出现,以及偷税漏税的情况。政府管理人员并非各种权限都有的,他也是不能访问在MVC框架下的所有的数据库,比如消费者的私人的信息以及某些比较隐私的信
9、息,是只有信息的拥有者才能访问或者是修改的。3、 业务流程-软件设计MVC框架,在JSP界面上输入的信息会在后台的servlet中进行处理,servlet会将信息进行类的封装后,传送到相应的查询类中,查询的作用在于可以实现和oracle数据库的连接,这样分等级和结构的代码编辑,可以很好的实现代码的复用和功能上的分工的实现。实现界面接收和显示功能的JSP与HTML,以及实现汇总安排调控功能的servlet,以及实现不同的与数据库oracle之间进行连接的类和对象。这样的好处是在于代码的复用和二次开发时有目标的修改和完善。如:在一个星期之内我完成了:32个jsp界面的编写以及47个类与servle
10、t的编写(包括连接数据库的类)。(1) 器械的消费的查询和下订单功能的实现消费者在进入系统界面后,有3中去向,a.进行自身信息的查询:其中包括修改自己的基本信息,修改地址,修改密码,修改自己的私人信息;自己的订单信息的查询,修改以及撤销订单;b.进行医疗器材相关信息的检索的工作,在相应的输入框中键入需要查询的关键字,然后进行查询,在通过jdbc和odbc将封装的检索关键字信息类进行。(2) 医疗器械的生产厂商的订单以及产品处理的实现生产厂商在登陆系统后的基本操作为:a.订单的处理情况:订单的确认,订单确认后对医疗器材的生产周期的简单的修改以及安排;b.产品的处理:添加自己的新的产品,对于检测发
11、现的不合格产品的回收处理情况,以及过时产品或者是不再生产的产品的下架情况的安排。(3) 管理人员对于全部订单以及商品评论的筛选处理的实现监管人员登录系统职责在于维护医疗器材销售的高质量,低价格,高安全和高满意度。实现这些要求我设计的方案是如下:a.对于消费者会员以及生产厂商的管理:可以查询他们的基本的可以公开给管理人员的信息,以便人员的定位,和责任的落实。B.对于商品评论的筛选监控:主要是对于某些评分较低的以及关键字的负面评论多的商家以及产品进行调查,若情况属实,则对该商品或者商家予以通告,实现消费的监管。C.对于订单的监控,防止商家出现偷税漏税的情况,以及不正当的竞争的出现。(4) 医疗器械
12、购销系统的层次DFD1、 顶层DFD医疗器械购销系统销系统消费者销售商 注册、查询、购买 订购单信息表 信息表 订购单的确认等2、 第二层DFD 会员信息表注册管理会员客户监管人员管理生产商商品、订单查询、下订单医疗器械及生产商3、 第三层DFD(会员查询子系统) 医疗器械及生产商会员审查有效性筛选有用信息会员4、 第三层DFD(申请会员子系统) 会员信息表会员审查有效性筛选有用信息会员5、 第三层DFD(会员管理子系统) 会员信息表管理员操作完成信息管理员审查管理有效性(5) 医疗器械购销系统的UML4、 数据设计-数据库分析(1)数据字典根据系统功能设计的要求以及功能模块划分,对于数据库,
13、可以列出以下数据项和数据结构。(1)、名称:管理员信息表见表1表名称标识:administer表1 administer字段名类型备注ID自动编号VIP_nameVarchar2(20)管理员VIP_pwdVarchar2(40)管理员密码(2)、名称:消费者信息表见表2表名称标识:consumer表2 consumer字段名类型备注ID自动编号Con_IDVarchar2(40)IDCon_nameVarchar2(20)姓名Con_pwdVarchar2(40)密码Con_birthsmalldatetime出生日期Con_sexVarchar2(4)性别Con_in_timesmalld
14、atetime申请时间Con _outtimesmalldatetime会员时间(3)、名称:医疗器材信息表见表3表名称标识:COL表11classinfo字段名类型备注ID自动编号COL_number Varchar(20)医疗器材编号COL_EnameVarchar(20)医疗器材英文名称COL_SNAMEVarchar(30)医疗器材中文COL_TOPInteger使用级别COL_COMVarchar(30)医疗器材生产公司COL_STATEVarchar(30)公司所在州、省COL_CITYVarchar(30)公司所在城市COL_NOInteger医疗器材生产日期COL_NOWTIM
15、EDATE医疗器材最长使用年限COL_WEBVarchar(30)公司官网COL_STYLEVarchar(30)医疗器材型号(4)、名称:Property见表4表名称标识:PROPERTY表4. PROPERTY字段名类型备注ID自动编号PROPERTY_numberVarchar2(20)属性值PROPERTY_NAMEVarchar2(20)属性名称(5)、名称:COL_PRO表名称标识:COL_PRO表5. COL_PRO字段名类型备注COL_PRO _ID自动编号COLLEGE_NUMBERVarchar2(20)编码PROPERTY_NUMBERVarchar2(20)属性值(6)
16、、名称:MAJOR表见表6表名称标识:MAJ表6 MAJ字段名类型备注ID自动编号MAJNUMBERVarchar2(20)编码MAJ_ENAMEVarchar2(30)英文名称MAJ_CNAMEVarchar2(30)中文名称(7)、名称:COL_PRO_MAJ表见表7表名称标识:COL_PRO_MAJ表7 COL_PRO_MAJ字段名类型备注ID自动编号COLENUMBERVarchar2(20)编码PROPE_NUMBERVarchar2(20)类别编码MAJ_NUMBERVarchar2(20)编码(2)E-R图(1) COLCENAMECNOCCNAMECSNAMECNTIMEcol
17、CWEBCCOUNTRYCBTIMRCSTATECTOP(2) adminVIPNOVIPNAMEVIPSEX adminMNAME(3) consumerMSEXMNOconsumer(4) COLMAJCOL_MAJCOLmMAJORn(5) MAJORMCNAMEMENAMEMNO MAJOR(6) TESTTNAMETNOTLGRADETHGRADETEST(7) TEST_MAJ_COLMAJORCOLTESTCOL_MAJ_REQ GRADE(10) MEM_TESTMEMBERTESTMember_testmnE-R的汇总图如下: consumerMEM_TESTAdminmaj
18、TESTTEST标准 majmaj_admCOL_VIPadmcolcol_colCOL_COL各表结构给出各表的详细字段组成,包括数据类型、长度、主外码、约束等。(1)COL_COL关系表的约束条件:Constraint NameConstraint TypeSearch ConditionReference OwnerReferenced TableMAIN3_FKForeign_KeySYSTEMCOLLEGEMAIN3_PKPrimary_KeyMAIN4_FKForeign_KeySYSTEMCOLLEGESYS_C0011127CheckCNO1 IS NOT NULLSYS_C0
19、011128CheckCNO2 IS NOT NULL表1(2) COL_PRO关系表的约束条件:Constraint NameConstraint TypeSearch ConditionReference OwnerReferenced TableCNO_FKForeign_KeySYSTEMCOLLEGEMAIN_PKPrimary_KeyPSTYLE_FKForeign_KeySYSTEMPROPERTYSYS_C0011090CheckCNO IS NOT NULLSYS_C0011091CheckPSTYLE IS NOT NULLSYS_C0011092Checkpstyle i
20、n (A,B,C)表2(3)COL_PRO_MAJ关系表的约束条件如下Constraint NameConstraint TypeSearch ConditionReference OwnerReferenced TableMAIN1_FKForeign_KeySYSTEMCOL_PROMAIN1_PKPrimary_KeySYS_C0011110CheckCNO IS NOT NULLSYS_C0011111CheckPSTYLE IS NOT NULLSYS_C0011112CheckMNO IS NOT NULLSYS_C0011113Checkmtop between 1 AND 99
21、999SYS_C0011115Unique表3(4)COL_PRO_MAJ_REQ关系表的约束条件:Constraint NameConstraint TypeSearch ConditionReference OwnerReferenced TableMAIN2_FKForeign_KeySYSTEMCOL_PRO_MAJMAIN2_PKPrimary_KeySYS_C0011119CheckCNO IS NOT NULLSYS_C0011120CheckPSTYLE IS NOT NULLSYS_C0011121CheckMNO IS NOT NULLSYS_C0011122CheckRN
22、AME IS NOT NULLSYS_C0011123CheckGRADE IS NOT NULLSYS_C0011124Checkgrade = 0表4(5) COL关系表的约束条件如下:Constraint NameConstraint TypeSearch ConditionReference OwnerReferenced TableSYS_C0011068CheckCNO IS NOT NULLSYS_C0011070CheckCCOUNTRY IS NOT NULLSYS_C0011075CheckCSTYLE IS NOT NULLSYS_C0011076Checkctop be
23、tween 1 AND 99999SYS_C0011077Checkcstyle in (私立,公立)SYS_C0011078Primary_KeySYS_C0011079Unique表5(6) MAJ_MAJ关系表的约束条件如下:Constraint NameConstraint TypeSearch ConditionReference OwnerReferenced TableMAIN4_PKPrimary_KeyMAIN5_FKForeign_KeySYSTEMMAJORMAIN6_FKForeign_KeySYSTEMMAJORSYS_C0011132CheckMNO1 IS NOT
24、 NULLSYS_C0011133CheckMNO2 IS NOT NULL表6(7) MAJ关系表的约束条件如下:Constraint NameConstraint TypeSearch ConditionReference OwnerReferenced TableSYS_C0011096CheckMNO IS NOT NULLSYS_C0011097CheckMENAME IS NOT NULLSYS_C0011098CheckMCNAME IS NOT NULLSYS_C0011099Primary_KeySYS_C0011100UniqueSYS_C0011101Unique表7(8
25、) COMSUMER关系表的约束条件如下:Constraint NameConstraint TypeSearch ConditionReference OwnerReferenced TableSYS_C0011187CheckMNAME IS NOT NULLSYS_C0011188CheckMPASSWORD IS NOT NULLSYS_C0011189Primary_Key表8(9)COM_TEST关系表的约束条件如下Constraint NameConstraint TypeSearch ConditionReference OwnerReferenced TableMUMBER_
26、PKPrimary_KeySYS_C0011366CheckMNAME IS NOT NULLSYS_C0011367CheckRNAME IS NOT NULLSYS_C0011369Unique表9(10) PRO关系表的约束条件如下:Constraint NameConstraint TypeSearch ConditionReference OwnerReferenced TableSYS_C0011080CheckPSTYLE IS NOT NULLSYS_C0011081CheckPNAME IS NOT NULLSYS_C0011082Checkpstyle in (A,B,C)
27、SYS_C0011083Checkpname in (学士,硕士,博士)SYS_C0011084Primary_Key表10(11) REQUIREMENT关系表的约束条件如下:Constraint NameConstraint TypeSearch ConditionReference OwnerReferenced TableSYS_C0011117CheckRNAME IS NOT NULLSYS_C0011118Primary_Key表11(12)ADMINISTOR关系表的约束条件如下:Constraint NameConstraint TypeSearch ConditionRef
28、erence OwnerReferenced TableSYS_C0011261CheckVIPNAME IS NOT NULLSYS_C0011262CheckVIPPASSWORD IS NOT NULLSYS_C0011263Primary_Key表12五、软件测试-质量保证一、测试方案:1、黑盒测试A.测试用例: 测试数据+期望结果(1)登录测试登录测试-消费者登录数据期望结果rightbian + 123 + 正确的验证码登陆到消费者界面Wrong No.1bian+ +正确的验证码转移至密码输入错误界面Wrong No.2 + 123 + 正确的验证码转移至数据库中为查询到该用户W
29、rong No.3bian + 123 + 错误的验证码转移至校验码输入错误界面登录测试-器材生产厂商登录数据期望结果rightbian + 123 + 正确的验证码登陆到生产厂商界面Wrong No.1bian+ +正确的验证码转移至密码输入错误界面Wrong No.2 + 123 + 正确的验证码转移至数据库中为查询到该厂商Wrong No.3bian + 123 + 错误的验证码转移至校验码输入错误界面登录测试-管理者登录数据期望结果rightbian + 123 + 正确的验证码登陆到管理者界面Wrong No.1bian+ +正确的验证码转移至密码输入错误界面Wrong No.2 +
30、 123 + 正确的验证码转移至数据库中为查询到该管理者Wrong No.3bian + 123 + 错误的验证码转移至校验码输入错误界面(2) 注册用户注册测试-管理者注册数据期望结果Right No.1bian + 123 + 123+A登陆到新注册消费者界面Right No.1bian + 123 + 123+B登陆到新注册生产厂商界面Wrong No.1bian+ +123转移至两次密码输入匹配错误界面Wrong No.2 + 123 + 123转移至用户名不能为空界面Wrong No.3bian + 123 + 234转移至两次密码输入匹配错误界面(3) 消费者下订单界面下订单-消费
31、者购买数据期望结果Right No.1合适购买数目(0 n N)订单确认界面Right No.2购买数目(0)订单商品删除确认界面提示Wrong No.1购买数目(-1)转移至商品购买错误提示界面Wrong No.2购买数目(N+1)转移至商品购买错误提示界面(4) 生产厂商管理订单界面管理订单-生产厂商登录数据期望结果Right No.1确认订单订单下达有其他接口构建执行Right No.2订单拒绝回复消费者订单拒绝原因Wrong No.1其他的误操作错误提示界面(5) 管理者管理消费者评价管理订单-管理者登录数据期望结果Right No.1筛选并执行评论提示不合格的产品进入相应的产品列表并
32、排序Right No.2忽略评论提示不合格的产品这一次不再显示该产品的情况Wrong No.1误删除产品评论错误提示界面(6) 管理者管理订单的校验问题管理订单-管理者登录数据期望结果Right No.1筛选并执行订单上的价格过高或过低的产品进入相应的产品列表并排序Right No.2忽略订单上的价格过高或过低的产品这一次不再显示该产品的情况Wrong No.1误删除产品订单错误提示界面二、纠错方案1、插入打印语句在连接数据库的地方和查询的地方去寻找错误,如果遇到了exception就进行打印相应的错误的标志打印的情况。如:(1)if( n = 1)System.out.println(修改完
33、成);ServletContext application = this.getServletContext();RequestDispatcher rd = application.getRequestDispatcher(/AddCollegeOK.jsp);rd.forward(request,response);elseSystem.out.println(修改失败,请确定您的编码的正确性);ServletContext application = this.getServletContext();RequestDispatcher rd = application.getReques
34、tDispatcher(/AddCollegeFailed.jsp);rd.forward(request,response);(2)protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException System.out.println(This is DelectMumberServlet);String Mumname = request.getParameter(Mumname);System.out.println(Mumn
35、ame);tryMumname = new String(Mumname.getBytes(ISO-8859-1);catch(Exception ex)ex.printStackTrace();DeleteMumber deleteMumber_ex = new DeleteMumber();Boolean deleteBool = deleteMumber_ex.MumberDeleteByName(Mumname);System.out.println(deleteBool);if(deleteBool = true)System.out.println(这是在DelectMumberS
36、ervlet里面 ,此时 应该 已经删除成功!);ServletContext application = this.getServletContext();RequestDispatcher rd = application.getRequestDispatcher(/ModifyProfile.jsp);rd.forward(request,response);elseSystem.out.println(这是在DelectMumberServlet里面 ,此时 应该 已经删除 失败 !);ServletContext application = this.getServletContex
37、t();RequestDispatcher rd = application.getRequestDispatcher(/ModifyProfile.jsp);rd.forward(request,response);(3)public ArrayList queryCloByNameOrNo(String InformationVersionLoad)ArrayList collegeInformation = new ArrayList();System.out.println(22222222222222222222222222222222222222222222222222222222
38、222222222);System.out.println(InformationVersionLoad);System.out.println(和数据库Text连接正确,可以正常的向下执行); String sql = SELECT CNO,CENAME,CCNAME,CTOP,SNAME,CCOUNTRY,CSTATE,CCITY,CWEB FROM colWHERE SNAME like %+InformationVersionLoad+% or CNO like %+InformationVersionLoad+% or CENAME like %+InformationVersion
39、Load+% or CCNAME like %+InformationVersionLoad+%; /现在只能实现的是 %string%,可能还有其他的方法,希望以后能够提高,大小写问题,或者是 几种条件 同时实现的模糊查询 /WHERE 姓名 LIKE % + sname + % /= +InformationVersionLoad+;/ like InformationVersionLoad or cename like InformationVersionLoad or ccname like InformationVersionLoad or SNAME like Informatio
40、nVersionLoadtrythis.initConnection();ResultSet rs = conn.createStatement().executeQuery(sql);while(rs.next()CollegeClass col= new colClass();col.setCno(rs.getString(CNO);col.setCename(rs.getString(CENAME);col.setCcname(rs.getString(CCNAME);colInformation.add(col);System.out.println(collegeInformation+这个值是在进行完数据库的模糊查询的到的结果);catch(Exception ex)ex.printStackTrace();System.