【药房销售客户资料管理系统的设计与实现13000字】_第1页
【药房销售客户资料管理系统的设计与实现13000字】_第2页
【药房销售客户资料管理系统的设计与实现13000字】_第3页
【药房销售客户资料管理系统的设计与实现13000字】_第4页
【药房销售客户资料管理系统的设计与实现13000字】_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

药房销售客户资料管理系统的设计与实现目录TOC\o"1-3"\h\u第1章绪论 11.1研究背景 11.2药品销售系统研究现状 11.3研究目标 2第2章需求分析与可行性分析 32.1需求分析 32.2可行性分析 42.2.1经济可行性 42.2.2技术可行性 42.2.3应用可行性 52.2.4时间可行性 5第3章关键技术 63.1开发工具选择 63.2平台支持 7第4章系统总体设计 84.1系统功能机构图 84.2系统功能概要介绍 84.2.1增加用户 84.2.2删除客户、修改客户资料、查找客户 94.2.3修改密码 104.2.4更新余额 114.2.5语言选择 114.2.6生成报表 114.2.2打印标签 124.3数据库设计 124.3.1数据库设计原则 124.3.1数据库逻辑结构设计 13第5章系统具体实现 145.1三层架构 145.2XML 165.3新增客户 185.3.1增加单个客户 185.3.2批量增加 185.4删除客户 215.5修改客户资料 225.6查找客户 245.7修改密码 265.8语言选择 275.9更新余额 305.10修改标签样式 315.11生成报表 325.12密码算法 33第6章系统测试 356.1系统测试方法 356.2系统验收测试 37结束语 39参考文献 41第1章绪论1.1研究背景在客户资料管理业竞争越来越激烈的今天,企业如何提高服务质量、管理能力显得越来越重要。尤其是对于客户资料管理(客户信息管理),服务项目众多,既需要完成一些前台服务工作,还需要完成后台的各项管理工作(统计、报表等),并且还要进行正常的日程规划管理,受理投诉等众多内容。如果没有一套可靠的客户资料管理系统,单凭手工操作,不仅效率低下,而且还会极大地影响到企业的服务质量。随着计算机技术的迅速发展,带动了许多其他行业的发展,整个社会经济也不断的变化。计算机以及计算机控制的自动处理技术已融入人类社会的各个领域并发挥着越来越重要的作用。对于当今的科学信息是一次重大的飞越,为人们的生活、工作、学习带来潜移默化的影响。今天我们使用计算机对客户资料进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高客户资料管理效率。现代企业的信息数据量已经远远超出了光靠人力就能有效管理的范围,所以使用计算机技术来管理是必须的,传统人工管理一直存在不少弊端:出现不必要的重复劳动,造成人力资源及时间上的浪费;由于人为及其它原因,导致药品信息不准确、不及时的问题;员工在不同地点之间的信息沟通不安全,导致的经济损失是不可挽回。1.2药品销售系统研究现状美国政府非常支持电子商务的发展,在十多年前已经开始大力发展电商,如今,其医药电子商务也在不断的完善,形成了多个不同规模的电子商务交易平台,并拥有完善的第三方物流体系,可实现药品准确及时的配送,更加促进了药品电子商务的发展。和世界发达国家相比,我国的药品电子商务起步晚,发展相对落后。近两年,由于网购人数的迅速扩张,电商规模急速扩大,销售额不断的增长,药电子商务也在迅速发展。现如今比较普遍使用的是B/S结构,由于其客户端是浏览器,不需要安装,使得系统比较灵活、易于维护,开发周期也比较短,提高了医药公司的工作效率和核心竞争力,所以采用B/S结构的销售管理系统将是未来发展趋势。1.3研究目标(1)药房工作人员可以增加、删除、修改、查找客户资料;(2)客户可以查找自己的信息,并修改(后期B/S架构实现);(3)根据不同需求,生成不同的报表打印;(4)由于主要用户是香港的,要有语言选择,包括简体中文、繁体中文、英文;(5)打印药品标签,包括药品成分,服用时间,服用状态;(6)记录客户的折扣状况和会员卡余额。第2章需求分析与可行性分析2.1需求分析需求分析的定义是:在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。需求分析的目标是:规范化软件的编写,旨在于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,同时提出系统的软件开发过程,便于程序员与客户之间的交流、协作,并作为工作成功的原始依据,同时也表明软件的共性,以期能够获得更大范围的应用。按照企业的业务逻辑给出软件逻辑的基本定义,通过对现行的企业管理水平、原始数据的精确程度、对企业单位管理存在的问题有深刻理解的相关人员等内容的详细调查,以此获得对软件开发有帮助的数据和基础,确定软件开发过程中需要限制的条件,定义详细的功能模块,从而协助系统的开发设计。通过调查,要求系统需要有以下功能特点:(1)易用性:能够像其他普通管理软件一样有较好的用户体验,方便用户操作,快速掌握系统操作流程。(2)用户访问控制:针对企业中不同用户访问系统,为了安全性考虑,对用户划分权限,限制系统操作功能,可以考虑使用基于角色的权限控制,即RBAC。(3)系统快速查询:支持多条件的模糊查询,可用于自定义报表。(4)报表功能:为了满足不同业务员的需求,系统可提供按条件分类的系统报表。(5)药品标签的打印,包括药品成分、服用时间、适用症状等。(6)语言选择,有简体中文、繁体中文和英文。开发任何一个基于计算机的系统,都会有一个开发周期,同时还受到各种资源上的限制。因此在每一个项目开发之前,必须完全弄清客户所提供的开发周期和资源限制,并依赖这些数据做系统可行性分析,以避免不必要的项目开发风险,避免人力、物力和财力的浪费。2.2可行性分析2.2.1经济可行性企业有能力承担系统开发的费用。开发新系统的工作是一项非常复杂的工作,它的投资主要是对于人力和物力的投资。对于本系统的开发者来说,其主要的投资还是在人力资源上,从系统的业务需求调查到系统的分析编码制作都是需要巨大人力投入的。企业总是希望以最小的成本换取最大的利益,而常规的人工管理方式早已跟不上时代的步伐,于是软件行业的发展改变了这一状况,比起人工管理方式,计算机软件成本低廉并且效率高,安全性好,这些优点都是人工管理方式无法达到的。现代的软件开发行业有很多优点,比如开发周期短、成本低廉、上手操作方便等。简单易用的软件界面也省去了不必要的员工操作培训成本。比较好的软件公司能够提供技术支持服务,在企业需要对自己的系统做出更改时,只需付出比较低廉的成本就能进行二次开发,在经济上要比重新开发一个软件的成本低很多。2.2.2技术可行性在现代大多数企业中从业的工作人员一般都要求掌握计算机技术,具有一定的软硬件基础,会使用各种管理软件,熟悉IT产品。因为,有的企业对员工的素质要求比较高,从管理层到下面的销售人员,都要求具有一定的计算机基础,所以在新系统投入使用时,只要对员工进行少量的培训,系统的功能和使用方法就基本上能够掌握。2.2.3应用可行性由于药房零售系统是可以给医药公司带来效益的,所以公司本身一定会充分利用系统,系统操作上也充分考虑了人性化的需求,操作简单,界面友好,功能完备,可维护性强,使客户足不出户就可买到所需的药品,所以系统在应用上是可行的。应用后,还可以提高客户管理水平,进而体现这套系统的价值。2.2.4时间可行性时间方面,这个系统的初步设计,基本的设计方案,数据流图等都已经做出来了。初步预算可以2个月写完这个系统代码,基本实现系统的功能。时间方面是足够的,答辩前,整个系统进行调试,编写说明书都没问题。所以在时间的可行性上也是没有问题的。第3章关键技术3.1开发工具选择C#是Microsoft专门为使用.NET平台而创建的,它不但结合了C++的强大灵活和JAVA语言简洁的特性,还吸取了Delphi和VB所具有的易用性。因而C#是一种使用简单,功能强大,表达力丰富的全新语言。.NETFramework(又称.NET框架)。是由微软开发,一个致力于敏捷软件开发(Agilesoftwaredevelopment)、快速应用开发(Rapidapplicationdevelopment)、平台无关性和网络透明化的软件开发平台。.NETFramework是以一种采用系统虚拟机运行的编程平台,以通用语言运行库(CommonLanguageRuntime)为基础,支持多种语言(C#、VB、C++、Python等)的开发。NET也为应用程序接口(API)提供了新功能和开发工具。这些革新使得程序设计员可以同时进行Windows应用软件和网络应用软件以及组件和服务(web服务)的开发。.NET提供了一个新的反射性的且面向对象程序设计编程接口。.NET设计得足够通用化从而使许多不同高级语言都得以被汇集。.NETFramework中的所有语言都提供基类库(BCL)。ACCESS是Microsoft于1994年推出的微机数据库管理系统。它具有界面友好、易学易用、开发简单、access接口灵活等特点,是典型的新一代桌面数据库管理系统。其主要特点如下:(1)完善地管理各种数据库对象,具有强大的数据组织、用户管理、安全检查等功能。(2)强大的数据处理功能,在一个工作组级别的网络环境中,使用Access开发的多用户数据库管理系统具有传统的XBASE(DBASE、FoxBASE的统称)数据库系统所无法实现的客户服务器(Cient/Server)结构和相应的数据库安全机制,Access具备了许多先进的大型数据库管理系统所具备的特征,如事务处理/出错回滚能力等。(3)可以方便地生成各种数据对象,利用存储的数据建立窗体和报表,可视性好。(4)作为Office套件的一部分,可以与Office集成,实现无缝连接。(5)能够利用Web检索和发布数据,实现与Internet的连接。Access主要适用于中小型应用系统,或作为客户机/服务器系统中的客户端数据库。用它可以做数据库,还可以用SQLserver,oracleOFFICE的一员。可以说是一个数据库软件ACCESS是微软公司出的OFFICE中一个软件是一个小型数据库其他小型的数据库还有VFP等。SQLSERVER和ORACLE是大型数据库。搭建个人网站用ACCESS就可以了,可以实现用户名和密码注册等功能。3.2平台支持本文所设计的客户资料管理子系统,是在VMwareWorkstation下的WindowsXPProfessional下完成的,用VisualStudio2008完成系统的设计,文档方面的编辑用的是试用期的UltraEdit,编程语言涉及C#和XML,系统用的数据库用的是微软的ACCESS2007。第4章系统总体设计4.1系统功能结构图根据系统的需求分析,现开发如下功能:客户资料管理系统客户资料管理系统新增加客户删删除客户修修改客户查查找客户修修改密码语语言选择更更新余额修更改标签样式打打印标签生生成报表图4-1系统功能结构图4.2系统功能概要介绍4.2.1增加用户增加用户有两种情况,第一种是一般的添加一个用户,第二种是批量添加新用户,用于新增会员时快速生成。流程图如下:进入子系统进入子系统增加有权限批量增加输入密码正确输入正确卡号段结束提示增加成功否是否否图4-2增加流程图不管是增加单个用户还是批量增加用户,都需要系统后台获取当前用户是否有增加的权限。如果没有权限,则会弹出对话框提示用户输入密码,输入密码三次都错误,会提示并退出系统。有权限则可以增加用户。4.2.2删除客户、修改客户资料、查找客户在删除客户和修改客户资料之前,都需要先找到该客户,并且需要有操作权限。查找客户支持按具体条件查找和模糊查询。流程图如下:开始开始查找客户正确有权限操作成功结束删除/修改客户输入密码否是是否图4-3删除/修改流程图为了回收资源,减少浪费,系统提供给药房工作人员删除用户的功能,他们可以自己决定什么情况下可以删除一个用户。删除前会判断当前用户是否有删除的权限,如果没有则弹出输入密码的窗口,三次输入错误会提示用户并退出系统。有删除权限的情况下,会先询问是否要删除当前记录,用户单击是则删除,否则不做处理。4.2.3修改密码为了用户的账号安全,或是用户需要这么做,本系统提供密码修改功能。需先输入旧密码,如果密码不正确,不能输入新的密码;密码输入正确后输入新的密码,再次输入确认密码,若两者不匹配,显示提示信息,并要求客户重新输入新密码;都输入正确后就可以使用新密码了。流程图如下:开始开始输入旧密码是否正确<=3次输入两次新密码匹配结束否否是否是图4-2修改密码流程图4.2.4更新余额 由于有会员卡,里面可以存放一定数量的金额,出门不带现金也可以购买药品,此举大大方便客户。工作人员只要点击“更新余额”按钮,系统会自动计算。4.2.5语言选择由于客户主要是香港那边的,而香港用英文和繁体中文的比较多,所以语言要求高一点,需要增加香港地区常用的繁体中文和英文,用户只要在语言选择菜单下选择需要的语言,界面会更新为选择的语言。4.2.6生成报表 随着数据的增加,一堆堆的数字让人看了就头疼,条理的罗列出需要的数据,使得一眼就能看出来数据要表达的内容变的相当的困难。随着EXCEL的出现,人们清晰的感觉到解放了。报表是程序可以控制的“EXCEL”,该功能根据用户的选择,“量身定做”报表,可以预览报表和打印报表。4.2.7打印标签 此功能用于打印药品包装上的标签,可指导服用者在正确时间服用正确剂量,除此标签上还有药品的成分,供服用者和工作人员做参考(药品成分由本系统维护)。4.3数据库设计数据库设计的目的是能够有效地存储和管理数据,以利于应用程序的开发满足客户的各种需求。数据库设计就是收集数据并进行分析整理的过程。数据库设计的内容包括优化逻辑结构与物理结构,对数据进行严密的组织与分割。在具体的设计中,要遵循数据库范式理论,增加系统的一致性和完整性。要想顺利的开发出高效而又功能丰富的药房管理系统,必须对数据库进行合理的逻辑设计和有效的物理设计。只有设计出合理的数据库,才能为建立在数据库上的程序应用操作提供方便。4.3.1数据库设计原则企业通常会通过大量甚至是海量的数据提取生产、管理或销售所需的信息,大量存储数据时,为了使企业管理人员能够方便、迅速、准确地调用和分析统计数据,需要建立一个具有良好的数据组织结构的数据库。这是一项非常艰巨的工作。数据库的逻辑结构设计是数据库设计主要任务,即把应用程序中的数据按照逻辑层次进行分类、分组,便于用户使用。数据库设计时,需要先对所开发系统的相关数据进行整理,分析所有数据之间的关系,设计出能够准确反映数据关系、能满足多种查询要求的数据模型。设计结果要求数据冗余少、存取效率高。4.3.2数据库逻辑结构设计主要工作是将现实世界的概念数据模型设计成数据库的一种逻辑模式,即适应于某种特定数据库管理系统所支持的逻辑数据模式。与此同时,可能还需为各种数据处理应用领域产生相应的逻辑子模式。这一步设计的结果就是所谓“逻辑数据库”。通过对E-R图转换的关系模式进行分析,并结合客户资料管理系统的具体功能、要求和开发数据库系统费特点,对系统的数据库做出设计,数据库其中一个表的部分结构如下表所示:表4-1客户资料字段名数据类型长度描述备注NumberInt8客户编号主键,不为空CompanyNameChar150公司名称可为空CompanyAddressChar255公司地址可为空PhoneChar40公司电话可为空FaxChar40公司传真可为空ContactPeopleChar40联系人可为空DeliveryNameChar150送货公司名称可为空Balance货币余额有特殊格式CustomerType数字字节客户类型1,2,3,4四个选项

第5章系统具体实现5.1三层架构三层架构是基于模块化程序设计的思想,它可以分解应用程序的需求,逐渐形成的一种标准模式的模块划分。“高内聚、低耦合”是软件设计的目标。三层架构的优点在于不必为了业务逻辑上的微小变化而迁至整个程序费修改。只需要修改商业逻辑层中的一个函数或一个过程;增强了代码的可重用性;便于不同层次的开发人员之间的合作,只要遵循一定的接口标准就可以进行并行开发了,最终只要将各个部分拼接到一起构成最终的应用程序。基于三层的系统开发能够使系统具备良好的稳定性、扩展性和可控性。三层架构通常是指数据访问层、业务逻辑层(BLL)和表示层(DAL),有的时候还用到模型层(Model),本系统就用到了模型层。三层架构之间的关系如下图所示:表示层表示层业务逻辑层数据访问层负责数据的传递和处理提供交互式的界面对数据的读取、保存和更新用户请求 相应数据图5-1三层架构图表示层位于最上层,提供用户操作,一般用在窗体程序或WEB应用,用户可以操作数据,完成一系列的功能。业务逻辑层使得表示层和数据访问层可以相互沟通交互,主要负责数据的传递和处理。数据访问层主要是对数据的操作,可以实现增加,删除,修改等功能。模型层包含所有与数据库中的表相对应的实体类,可以解释为数据库的所有字段。在三层结构中,各层之间关系密切,相互依赖,表示层依赖于业务逻辑层,业务逻辑层依赖于数据访问层。表示层、业务逻辑层和数据访问层三层之间通过传递模型层的实体对象来达到数据传递的目的。系统中使用三层结构的部分代码如下:(1)模型层(Model)对应数据实体namespaceMainSS.Model{publicpartialclassClient{ publicClient() {} #regionModel privatestring_number=""; publicstringNumber { set{_number=value;} get{return_number;} }}}模型层可以说是直接和数据库接触,将上层给数据库字段的值更新进数据库,也可以得到数据库的字段值供上层操作。(2)数据访问层(DAL)操作数据publicboolDeleteList(stringNumberlist){StringBuilderstrSql=newStringBuilder();strSql.Append("deletefromClient");strSql.Append("whereNumberin("+Numberlist+")");introws=ClientDBHelper.ExecuteSql(strSql.ToString());if(rows>0){ returntrue;}else{ returnfalse;}}数据访问层主要是关联到模型层的数据实体,然后通过OLEDB类实现对数据的操作,返回的数据传给业务逻辑层。(3)业务逻辑层(BLL)负责数据的传递publicboolExists(stringNumber){ returndal.Exists(Number);}业务逻辑层接受数据访问层返回的数据,通过表示层直接显示给用户,当然这里也可以添加自己的代码,定做功能。5.2XMLXML是从具有悠久历史的文本处理系统的基础上诞生的,它是文档的数字表示方式。用数字化的方式来表达文档是指把文档变成计算机能够阅读的某种代码,以便计算机帮我们储存、处理、查询、传输、显示和打印它们。在程序中使用XML的好处是,计算机会根据配置的XML里的信息区自动完成把相应请求转到相应页面上去。本系统使用XML的目的是完成语言选择。先前说过,本系统支持简体中文、繁体中文和英语,通过语言菜单选择需要的语言。XML中会有一个默认的语言—简体中文,代码中会维护一个字段用于存储当前选择的语言,如果为空则使用默认语言,然后找到模块对应的节点,以及窗体所在的子节点,然后顺着找到控件的子节点,根据选择的语言选择相应的显示字。部分代码如下:<?xmlversion="1.0"encoding="gb2312"?><Root><CurrentLanguageDefaultLanguage="SCN"></CurrentLanguage><SupportLanguage><TChineseAttribName="TCN"Coding="BIG5"LanguageIndex="1">繁体中文</TChinese><EnglishAttribName="ENG"Coding="GB2312"LanguageIndex="2">英文</English><SChineseAttribName="SCN"Coding="GB2312"LanguageIndex="3">简体中文</SChinese></SupportLanguage><Client><frmEnvsize><thisTCN="獺"SCN="信封大小"ENG="Envelopsize"></this><lblwidthTCN=":"SCN="长:"ENG="Long:"></lblwidth><lblHeightTCN="蔼:"SCN="高:"ENG="High:"></lblHeight></frmEnvsize></Client></Root><SupportLanguage>子节点下对应的是系统所支持的语言,如果要增加支持的语言,可以在此处再维护一个语言。之后查找到窗体对应的子节点Client,再获取到相关控件的语言的显示,其中this代表窗体名称。5.3新增客户5.3.1增加单个客户药房所面向客户,不单单是零散的消费者,还可以销售给大公司或者是学校等一些需要大量药品的机构,这时候就需要增加单个用户资料,维护好相关信息。单击增加按钮,或者使用CTRL+1快捷键,此时只有保存和放弃按钮可用,其余按钮变灰不可用。增加实际就是将界面清空,让用户可以输入,增加完保存后数据才会增加到数据库,界面显示增加的客户信息。主要代码如下:privatevoidmainclear()//清空主界面数据{lblRecordShow.Text="";txtNumber.Text="";txtName1.Text="";txtAddress1.Text="";}5.3.2批量增加零散客户与集团客户不同,集团客户可以协商好后再维护相关信息,可以慢慢来。而零散客户,他们只是去药房买药,并没有那么多耐心等待工作人员增加用户然后录入信息。所以开发出批量增加这个功能,只要快速生成客户编号,将编号与客户关联起来即可,后续的信息记录,可以根据客户在纸上留下的信息操作,之后开发网页版的,客户也可以自己通过网络增加修改自己的信息。此功能通过输入Ctrl+shift+G快捷键实现。打开功能后,用InputBox提示用户输入起始编号,输入完成后用InputBox提示用户输入结尾编号,然后检查起始编号和结尾编号合格后增加只有编号的空白客户。判断代码如下://得到字符串中如果是开头是字符不是数字的时候数字在字符串中的位置eg:asw11//IXS==3;把字母和数字位置得到为了是在后面格式化的操作中能做到asw00011的操作intIXS=0;for(inti=startcode.Length;i>0;i--){if("0123456789".IndexOf(startcode.Substring(i-1,1))<0){IXS=i;break;}}intIXE=0;for(inti=endcode.Length;i>0;i--){if("0123456789".IndexOf(endcode.Substring(i-1,1))<0){IXE=i;break;}}//IXU是得到格式化的时候能知道格式化多少个零intIXU=IXE>IXS?IXE:IXS;stringstr="errmsg5"+IXU.ToString().Substring(1)+"errmsg6";//判断头字符串是不是相同if(IXS!=IXE){MessageBox.Show(str,"errmsg7",MessageBoxButtons.OK);return;}//格式化前面带有零的操作.即asw11格式化成asw00011startcode=startcode.Substring(0,IXU)+string.Format("{0:00000000.#}",Convert.ToInt32(startcode.Substring(IXU))).Substring(IXU);endcode=endcode.Substring(0,IXU)+string.Format("{0:00000000.#}",Convert.ToInt32(endcode.Substring(IXU))).Substring(IXU);//不能结束编号大于开始编号if(string.Compare(endcode,startcode)<0)return;5.4删除客户世界上没有永远的客户,客户觉得别的药房性价比更高,自然就会换一家,空置不用的会员号还留着,不但会浪费资源,还会加重系统负担,使系统运行缓慢,所以对于一些解约的集团客户和长时间没有使用会员卡的客户,可以删除其资料,退会员。当需要删除客户资料的时候,可以单击主界面上的删除按钮,或者是CTRL+3快捷键删除当前客户,此时只有保存和取消按钮可以点击,其余按钮变灰不可用。为避免误删,删除当前客户之前,系统会先询问是否确定删除,如果单击是,则删除当前客户,显示下一条记录;如果否,则不做处理并留在当前记录上。实现代码如下:try{//////删除操作的实现XmlNodexn=FormNode.SelectSingleNode(hinmsg1);StringStrMsg1=xn.Attributes[Language].Value;XmlNodexn=FormNode.SelectSingleNode(hinmsg1);StringStrMsg2=xn.Attributes[Language].Value;DialogResultchoose=MessageBox.Show(StrMsg1,StrMsg2,MessageBoxButtons.YesNo);if(choose==DialogResult.Yes){MainSS.BLL.Clientbllclient=newMainSS.BLL.Client();bllclient.Delete(txtNumber.Text.Trim());indexMain--;mainGetData(3);}}catch(Exceptionex){MessageBox.Show(ex.Message);}图5-2删除提示5.5修改客户资料常言道世事无常,更何况是资料信息,客户资料变动是常见的事情,如果不及时更新,也会有一些小麻烦。尤其是集团客户,如果联系人找不到了,要运送的货物以及货款可就不知道如何是好。基本信息怎么修改都没有问题,但是客户编号不能修改,客户编号是唯一标识一个客户的。单击修改按钮,或是CTRL+2快捷键单开修改功能,主界面除了客户编号之外,都可以编辑修改,保存和取消按钮可用,单击保存后变更生效,回到浏览状态可看到修改后的内容。主要代码如下:Global.editflag=true;setdisable();cmdDel.Enabled=false;cmdSearch.Enabled=false;txtNumber.Enabled=false;if(!MediOnOff){groupBox1.Enabled=true;Hints5.Text="hinmsg5+Chr(13)+hinmsg6";txtName1.Focus();}else{groupBox1.Enabled=false;panel6.Enabled=true;Hints5.Text="hinmsg5+Chr(13)+hinmsg6+Chr(13)+hinmsg8";cmdSave.Enabled=true;}主界面如下图所示(增加和删除可以在界面右上角的笔数体现):图5-3主界面该界面是系统主要界面,主要操作方法有界面上的菜单、按钮和许多快捷键。“设定”菜单里面提供一些设置的功能,如标签的间距,和余额更新功能;“列印”菜单提供表报和标签的打印功能;“显示语言”完成语言的选择。“<<”按钮是回到第一条记录;“<”按钮是上一条记录的意思;“>”按钮后移一条记录;“>>”跳到最后一条记录,这四个按钮也可以使用键盘的上下左右键实现。右上角红框圈住的指示当前记录条和全部记录数。该界面数据分了5块。第一块维护的是客户编号和客户类型,该系统不但可以维护客户信息,还可以维护供应商的基本信息。第二块维护的是客户或者是供应商的基本资料,原则上可以都为空,但是对于集团客户是全部要求维护的。第三块是送货公司的基本信息,对于零散的客户不需要维护,需要运输给集团客户的记录,一定要维护。第四块是联络人的基本信息,联络人是药房和集团客户沟通的桥梁,这一块也很重要。最后一块是客户的折扣信息,与财务相关。5.6查找客户一个客户资料管理系统最常用的就是资料的查找了,许多操作都是基于查找的,不管是删除还是修改,都需要先找到需要操作的记录,才能处理。而系统的健壮性也体现在此处。本系统的查找还是比较简单的,分为按特定条件查找和模糊查找。精确查找可以通过编号快速查找,也可以一般查找。编号快速查找是输入客户编号,系统会比较数据库内的数据和用户输入的数据,显示出和客户输入用户编号最匹配的记录;一般查找是根据公司名称查找的,当查找类型为“1一般查询”时,然后用户输入对应的值,系统会查找出与用户输入最匹配的记录。单击表格(dataGridView)的列名,系统会进行升序降序排列。部分代码及截图如下:privateDataTabledtSearch;MainSS.BLL.ClientbllClient=newMainSS.BLL.Client();privatevoidradioButton1_CheckedChanged(objectsender,EventArgse){txtSearchClient.Focus();if(radioButton1.Checked==true){lblSearchClient.Text=dataGridView1.Columns[1].HeaderText+":";dtSearch=bllClient.GetList("1=1orderby[CompanyName]");dataGridView1.DataSource=dtSearch;dataGridView1.Refresh();}txtSearchClient.Text="";}图5-4查询界面有的时候,用户不能精确的记住要查找的东西,只有一点模糊的记忆,于是我们提供模糊查询这个功能,用户只要输入部分值,系统会列出与之有关的值供用户挑选。模糊查询的界面与精确查询的界面类似,但功能却强大很多。模糊查找可以只按一个类型查找,只要选中列,指示查找类型的标签就会改变内容,可提示用户输入对应的部分字段。由于是模糊查询,查找范围比较广,得到的数据还是很多,从中找到记录花的时间也很长,这里提供多个字段查找。当单击一个列名并输入一个值后,表格会列出相关记录,并在文本框的下面显示查询的条件,可累积查找,如“Numberlike‘sz’andphonelike‘123’”,文本框无内容按下ENTER键可以清空查询条件。定义两个字符串TheFilterString和TheFilterStringName,用于存放查找值和累积查找条件,txtSearchStock.Text用于显示提示。当单击一个列名后,列名就附加到TheFilterStringName后面,输入值ENTER后TheFilterString获取值添加相关数据库操作语句后再次附加到,然后更新标签的值。5.7修改密码为了用户的信息安全,需要不定期的更改密码,防止有心人利用,本系统提供密码修改的功能。使用CTRL+P进入密码修改界面,首先要输入旧的密码按ENTER键,系统会判断密码是否正确,如果不正确,系统提示密码输入错误,并清空旧密码输入框,如果输入错误数超过三次,则自动退出系统。匹配无误后光标跳转到下一个输入框,用于输入新密码,按下ENTER后光标往下跳提示再次输入新密码,ENTER后系统匹配两次输入的新密码,不匹配光标跳到第一次输入密码处,要求用户重新输入两次新密码,直到匹配上,输入无误后系统提示修改成功,下次登录就可以使用新的密码了。以下是判断就密码的代码以及运行截图:代码主要是拆分数据库中的字段,获取用户密码,然后比较这两个密码是否一致。图5-5更改密码5.8语言选择语言选择可以根据自己的喜好,选择相应的语言,只要在“选择语言”菜单下单击相应的语言,就可以了,方便快捷。语言菜单自动生成的,根据XML文件维护的“SupportLanguage”节点下包含的语言生成菜单,这样做的好处是是语言模块化,如果语言支持有变化,只要修改XML文件中的内容就可以了,不需要修改程序,执行简单、出错率低。代码如下:publicstaticvoidCreateLanguageMenu(MenuStripms){ToolStripMenuItemtsmi=newToolStripMenuItem();tsmi.Name="mnuItemDisplayLanguage";if(xml==null){InitXml();}XmlNodeRootNode=xml.SelectSingleNode("Root");XmlNodeSupportLanguageNode=RootNode.SelectSingleNode("SupportLanguage");if(SupportLanguageNode!=null){foreach(XmlNodexninSupportLanguageNode){ToolStripMenuItemtsmisub=newToolStripMenuItem();tsmisub.Name="Language"+xn.Attributes["AttribName"].Value;tsmi.DropDownItems.Add(tsmisub);tsmisub.Click+=newEventHandler(SelectLanguage);}}ms.Items.Add(tsmi);}语言选择主要技术,首先要维护好XML文件,包括支持的语言、子模块的字段、窗体名、控件名等。每个窗体下的控件以及需要用到的文字都需要有唯一的标识,缺少或不唯一都会导致系统无法读取而出错。然后通过Controlcontrolinform.Controls浏览所有控件,获取控件的名称后再去XML浏览子节点,获取该控件所对应相应语言的显示内容,最后赋值给该控件的TEXT属性并显示出来。publicstaticvoidLoadLanguage(Formform){FormNode=null;try{InitFormNode(form.Name);XmlNodeSelf=FormNode.SelectSingleNode("this");if(Self!=null)form.Text=Self.Attributes[Language].Value;foreach(Controlcontrolinform.Controls){try{XmlNodexn=FormNode.SelectSingleNode(control.Name);if(xn!=null){control.Text=xn.Attributes[Language].Value;}if(control.Controls.Count>0)FindSubcontrol(control);FindSpecialItem(control);}}}以下是英文屏:图5-6英文主界面5.9更新余额更新余额功能用于客户用会员卡付款的情况。当客户付款出示会员卡的时候,查询客户余额是否充足。若充足则可付款,每晚用此功能更新所有客户的余额,以便以后查询。实现是将数据库里面表示余额的字段减去代表消费的字段,然后赋值给一个临时变量,最后更新进数据库给余额。5.10修改标签样式标签是贴在药品的外箱或是袋子上的,用于显示药品的成分等相关内容,供客户查看参考。标签的样式一般是固定的,不需要修改,但是为了长远考虑,还是增加了标签样式修改的功能。标签可以看成是一个长方形,只是长方形里面有内容而已。标签样式的控制,就是控制这个长方形的高和宽。由于要排列打印,需要排版标签,设定一页要打印几张标签,怎么打印,所以要维护标签之间的行距和列距。本系统的标签设置是通过两个窗体实现新标签规格的录入,然后存入数据库即可,打印标签的时候从数据库去取数据,获取标签的样式后再打印。运行界面如下:图5-7贴纸大小5.11生成报表如今报表越来越普及,人们清楚的认识到报表能给他们节省多少精力,报表可以方便的管理数据,清晰的呈现出数据要表达的内容,利用计算机处理数据和界面设计的功能来生成、展示报表是未来的发展趋势。实现报表的主要特点是数据动态化,格式多样化,并且实现报表数据和报表格式的完全分离。此处只介绍系统中的一个报表,由于当前需要的报表格式固定,所以先用报表工具做好模板,命名为CLIENT01,在系统中直接使用,用户只要选择需要的客户段生成报表。代码如下:try{ReportDocumentReportDoc=newReportDocument();stringpath=Application.StartupPath+"\\CLIENT01.rpt";ReportDoc.Load(path);//ReportDoc.Load("d:\\vs工程\\client\\client\\crystalreport1.rpt");MainSS.BLL.Clientbll=newMainSS.BLL.Client();DataTabledt=bll.GetAllList();//MainSS.BLLDataSetds=newDataSet();ds.Tables.Add(dt);ReportDoc.SetDataSource(ds);//(ReportDoc.ReportDefinition.ReportObjects[1]asTextObject).Text="lblhaha";crystalReportViewer1.ReportSource=ReportDoc;}catch(Exceptionex){MessageBox.Show(ex.Message);}图3-8报表5.12密码算法本系统密码的算法5个为一个单位,第一个5位的第4位和第5为是密码个数n的ASCII码,其余填充0到256的随机数,随后的n个5位中的第四五位组合成密码的ASCII码,其余填充0到256的随机数,最后填充50个随机数。for(inti=0;i<textBox2.Text.Length;i++)pswstr+=string.Format("{0:0.#}",rnd.Next(1,10))+string.Format("{0:000.#}",(int)(array[i]))+string.Format("{0:0.#}",rnd.Next(1,10));for(inti=textBox2.Text.Length+1;i<=50;i++)pswstr+=string.Format("{0:0.#}",rnd.Next(1,10))+string.Format("{0:000.#}",rnd.Next(256))+string.Format("{0:0.#}",rnd.Next(1,10));

第6章系统测试6.1系统测试方法系统测试方法有很多种,而用于网站系统的测试方法主要包括以下五种,分别是代码测试、功能测试、性能测试、运行环境测试和安全性测试。

功能测试又分为链接测试、表单测试、Cookies测试和数据库测试四种。对订单进行增、刪、查、改等操作,能不能实现。用户管理员权限登录,可以按照要求完成系统各项功能,比如,会员用户的管理,库存药品的管理,对订单的管理,网站留言的管理等。每个管理都可以按照设计的要求执行,则测试成功。还有就是访问权限的测试,不是会员的,没有相应配对的账号和密码,又或者不正确的验证码是不能登陆的,只有会员才能登陆,当然管理员也可以登陆后台管理。普通用户是不能登陆后台管理的。管理员可以进入后台管理,这证明访问权限设置正确,则测试成功。这些都是功能测试的内容。代码测试即模块测试,在代码编写阶段需要不断的进行程序语句的调试,许多大型程序都是多人合作完成,若是模块内部没有出现错误,但不代表系统多个模块整合到一起时系统能够正常运行,因此测试重点是各个模块是否能协调合作,及时的找出相关接口存在的问题。

性能测试分为速度测试、负载测试、压力测试三种。如果一个网页打开5秒后还不能显示完毕,用户就会不耐烦的离开,这样造成的客户流失应尽量避免。而当多个用户同时访问网站时,网站会不会因为压力太大而崩溃,这都需要在实际的网络环境中进行测试。常用的压力测试工具有微软公司的WebAplicationStress(WAS)、般若公司的Web-CT等。功能测试又分为链接测试、表单测试、Cookies测试和数据库测试四种。对订单进行增、刪、查、改等操作,能不能实现。用户管理员权限登录,可以按照要求完成系统各项功能,比如,会员用户的管理,库存药品的管理,对订单的管理,网站留言的管理等。每个管理都可以按照设计的要求执行,则测试成功。还有就是访问权限的测试,不是会员的,没有相应配对的账号和密码,又或者不正确的验证码是不能登陆的,只有会员才能登陆,当然管理员也可以登陆后台管理。普通用户是不能登陆后台管理的。管理员可以进入后台管理,这证明访问权限设置正确,则测试成功。这些都是功能测试的内容。性能测试分为速度测试、负载测试、压力测试三种。如果一个网页打开5秒后还不能显示完毕,用户就会不耐烦的离开,这样造

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论