




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
word文档可自由复制编辑word文档可自由复制编辑摘要为了加强药品管理,以便更好地对药品进行监督和管理,提高药品管理效率,减轻管理人员的工作量。从而建立一个能够实现药品管理者对售药机构的药品管理,初步实现药品管理的智能化,提高药品管理效率,减轻管理人员的工作量,减少药品统计的失误是势在必行的。因此本系统所选的课题是“药品信息管理系统设计与开发”,确定了系统的以下几个功能模块:系统管理模块,其中设有更改用户与更改密码,对用户的添加和删除、查询,当然只有系统管理员有权限添加、删除用户;药品管理模块,设有药品入库,药品销售和不合格药品的清理,类似于进销存的信息管理;查询模块,对库存药品信息进行查询,对不合格药品的信息查询;此外具有帮助模块(用于简略介绍该系统)。有了这些模块,就可以对日常药品销售业务进行计算机的基本操作了。关键词:药品,药品信息管理系统,系统模块ABSTRACTInordertostrengthendrugmanagement,inordertocarryoutsupervisionandmanagementofdrugsbetter,improvemanagementefficiency,reducetheworkloadofmanagers.Achievedsoastoestablishapharmaceuticaldrugagencymanagersonthesaleofmedicinesmanagement,medicinesmanagement,theinitialrealizationofintelligent,drugadministrationtoimproveefficiency,reducetheworkloadofmanagerstoreducedrugerrorsinstatisticsisessential.Thusthesystemselectedwasa"DrugInformationManagementSystemDesignandDevelopment",thesysteminitiallyidentifiedthefollowingfunctionalmodules:SystemManagementModule,whichhastochangetheuserandchangethepassword,butalsotouserstoaddanddelete,query,ofcourse,onlysystemadministratorshavepermissiontoadd,deleteusers;Drugmanagementmodule,whichhasadrugstorage,drugdistributionandclearanceofsubstandarddrugs,similartotheinformationmanagementInvoicing;QueryModule,youcaninventoryDruginformationinquiries,thereisinformationnotuptostandarddrugs;Inadditionwiththehelpmodule(usedtogiveabriefdescriptionofthesystem).Withthesemodules,youcanselldrugsontheday-to-dayoperationsofthecomputer'sbasicoperation.Keywords:Medicine,Medicinemanagementsystem,Systemmodule目录摘要 IABSTRACT II第1章引言 11.1研究背景 11.2研究内容 3第2章系统工具简介 42.1开发工具简介 42.2数据库工具介绍 4第3章药品信息管理系统需求分析 63.1系统规划 63.2系统需求分析 63.2.1用户需求 63.2.2功能需求 83.3系统流程分析 103.3.1系统流程图设计 103.3.2实体描述 133.4系统设计的准备工作 13第4章药品信息管理系统设计 154.1系统数据库设计 154.1.1概念模型设计 154.1.2物理模型设计 164.2系统简单界面设计 18第5章药品信息管理系统详细设计与实现 205.1药品登录模块的设计与实现 205.2系统菜单栏设计与实现 215.3系统功能模块设计与实现 235.4系统任务栏设计与实现 29第6章系统的测试与维护 30第7章结束语 31致谢 32参考文献 33第1章引言1.1研究背景人的一生离不开生老病死,医院药房应该每个人都会去或者曾经去过,而医院中在未诊断前的挂号排队和诊断后的买药排队是遇到的两个大难题,每次都会是排成人龙。买药过程中的人为操作,步骤繁琐,又容易出错,所以正是想在这样的环境下希望有所突破,而和计算机连接,进行程序化的简单操作让这一想法成为可能。信息全球化的今天,计算机作为当今重要的信息产品,成为大众必不可缺的工具。计算机技术广泛应用于日常办公,使我们可以进行电子报表、文字处理以及进行简单的信息管理、人事管理、财务管理等,计算机的应用普及大大提高了工作中的效率;可以代替人工进行许多繁杂的劳动,并在节省资源、使管理更具规范化,系统化,科学化等方面发挥作用[1]。随着计算机技术的发展,各行各业的管理机构需要由计算机处理大量的信息。在我国,药品品种繁多、规模甚大,以往的手工记载、查询操作容易出错且工作效率低,已经不能适应时代发展的要求,而且手工管理要浪费许多人力和物力,从管理的角度来看,对管理者会造成诸多的不便,还有可能疏忽一些细节,让不法商家逃脱罪责。为了在迅速变化的市场中赢得成功与利润,我们必须将不同的信息系统如企业资源规划系统(ERP),供应链管理(SCM)和客户关系管理(CRM)在一个企业中一起执行。目前研究的关键在于如何将制造业中大量孤立的以计算机为基础的系统整合为一个统一的系统,处理和转换信息系统,以便使生产顺利进行[14]。仿效于企业,对于药品的信息管理也是如此。利用计算机进行药品管理,堵塞了药品的流失。规范了价格管理,避免了人为的物价损失,从而明显地提高医院的经济效益。将销售行为纳入规范化、公开化的轨道,从制度上纠正医药商品购销活动中的不正之风。
21世纪是信息时代,在这个信息时代里竞争异常激烈,手工管理这种传统的管理方法必然被计算机为基础的信息管理所取代,所以实现药品的信息智能化管理特别重要。通过药品管理系统可以让药品监督部门有效的管理各地方的售药机构;其次,让顾客增加对售药机构的可信度;再次,各个售药机构可以方便地了解到这一段时间的售药情况,顾客消费情况和顾客满意程度等等;更重要的是统一的药价管理机制,与顾客之间建立了友好的关系,增进了与顾客之间的交流,为售药机构自身发展提供有力的支持[1]。开发药品管理系统为实现药品智能管理作了充分的准备工作。通过本系统的实施可以有效的提高药品录入统计工作。缩短业务流程,提高操作效率。为企业提高生产力水平发挥了重要作用。这样排长队买药的情形也将不会出现,因为买药的时间将会大大缩短。word文档可自由复制编辑1.2研究内容本系统结合医药行业管理的特点,专为医药批发、零售行业开发的专业管理系统。系统完善解决了以下的问题:药品种类繁多、批号及有效期管理、经营业务量大、连锁经营等医药行业现存问题。本系统的特点如下:1.多用户分权限管理。用户各司其职,可分别实现药品入库、销售、库存管理、系统设置、收银台等管理任务。2.支持多条件查询。按药品代号、药品名称、类别等进行查询。3.支持药品拆零销售。4.操作简单,无须专业知识即可实现日常管理。数据安全可靠。管理信息系统的开发方法有生命周期法、原型法和面向对象的开发方法等。本药品管理系统利用软件工程化思想和方法,总体上是采用结构化生命法进行系统分析和设计的,而系统实现等步骤则采用了原型法和面向对象的方法。管理信息系统的开发将是一个开发周期长、技术要求高、影响因素多的复杂系统工程,所以制定一个可行、合理、完善的开发计划,并且运用简单的开发工具和数据库工具做到相同的开发效果,不仅使系统开发可以成功,而且提高了效率、节省了时间、降低了成本。本系统使用的开发工具是MicrosoftVisualC++6.0,后台数据库是本地MicrosoftAccess2003,通过专用ODBC接口与前台VisualC++6.0连接。在开发过程中,因为技术、自身能力和时间精力的限制,采用基于客户/服务器(Client/Server)的开发模式,通过这种开发模式,可以很快速地建立系统的原型,有效缩短开发时间。本药品系统设计包括前期的系统内容目标调研和系统需求分析,系统界面版块设计、系统程序详细设计,到后期的系统调试、测试、维护和系统的试运行。小型的药品信息管理系统不需花费很大的开支和精力,而且开发之后有一定的实际功效,对真正的药品信息管理有一定的作用,从用途和经济上来说都是具有可行性的。另外在技术上,用计算机代替手工执行业务操作的基本技术现在已经比较普遍,随着现代计算机技术的发展和普及也是可行的,并且因为药房、医院的存在性使得该系统的开发及应用当然是有前景的,有意义的,是势在必行的。第2章系统工具简介2.1开发工具简介VisualC++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具[7]。VisualC++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrateddevelopmentenvironment,IDE)[8]。VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境[9]。本次系统设计中主要运用的是MFC工具。MFC即微软基础类(MicrosoftFoundationClasses),是一种ApplicationFramework,随微软VisualC++开发工具发布。MFC应用程序的总体结构通常由开发人员从MFC类派生的几个类和一个CWinApp类对象(应用程序对象)组成。MFC提供了MFCAppWizard自动生成框架。用于在C++环境下编写应用程序的一个框架和引擎。MFC(MicrosoftFoundationClassLibrary)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。MicrosoftVisualC++提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。2.2数据库工具介绍Access2003是微软Office2003系列软件的组件之一,是目前比较流行的、面向对象的中小型桌面关系型数据库系统软件[10]。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务。Access的优点:(1)存储方式单一,Access管理的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为(.mdb)的数据库文件种,便于用户的操作和管理。(2)面向对象,Access是一个面向对象的开发工具,利用面向对象的方式将数据库系统中的各种功能对象化,将数据库管理的各种功能封装在各类对象中。通过对象的方法、属性完成数据库的操作和管理,极大地简化了用户的开发工作。同时,这种基于面向对象的开发方式,使得开发应用程序更为简便。(3)界面友好、易操作,Access是一个可视化工具,是风格与Windows完全一样,用户想要生成对象并应用,只要使用鼠标进行拖放即可,非常直观方便。系统还提供了表生成器、查询生成器、报表设计器以及数据库向导、表向导、查询向导、窗体向导、报表向导等工具,使得操作简便,容易使用和掌握。(4)集成环境、处理多种数据信息,Access基于Windows操作系统下的集成开发环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。(5)Access支持ODBC(开发数据库互连,OpenDataBaseConnectivity),利用Access强大的DDE(动态数据交换)和OLE(对象的联接和嵌入)特性,可以在一个数据表中嵌入位图、声音、Excel表格、Word文档,还可以建立动态的数据库报表和窗体等。Access还可以将程序应用于网络,并与网络上的动态数据相联接。利用数据库访问页对象生成HTML文件,轻松构建Internet/Intranet的应用。ACCESS是小型数据库,既然是小型就有他根本的局限性,以下几种情况下数据库基本上会吃不消:1.数据库过大,一般ACCESS数据库达到50M左右的时候性能会急剧下降!2.网站访问频繁,经常达到100人左右的在线。3.记录数过多,一般记录数达到10万条左右的时候性能就会急剧下降!第3章药品信息管理系统需求分析3.1系统规划首先简单规划下系统的大概内容项目:药品信息管理系统项目目标:为了加强药品管理,以便更好地对药品进行监督和管理,建立一个能够实现药品管理者对出售药品机构的药品管理,初步实现对药品管理的智能化,提高药品管理效率,减轻管理人员的工作量,减少药品统计的失误,并在对药品信息管理的同时能对使用的用户信息进行管理,防止人员上的出错。从而确定设计方案:本系统设计实现药店的数据录入和后台的统计分析处理,为药店整合各药品信息、用户信息,进药入库信息,销售信息与金额、药品统计提供了很好的统计工具。3.2系统需求分析3.2.1用户需求通过调查,熟悉该系统的业务描述和用户的需求,并询问医院、药房人员相关知识,从而了解工作人员配备结构如图3-1所示:系统工作人员系统工作人员医生售药员管理员查询药品查询用户出售药品统计金额药品管理系统管理图3-1系统工作人员配备结构图通过以上了解,该药品系统各个工作人员的主要业务如下:医生主要具有查询药品的功能,并出具药房供核实销售。售药员主要负责药品的销售,药品的统计,以及结算金额等。管理员能进行工作人员的权限设置,用户更改、密码更改,还包括新药品的添加和过期药品的清除等。查询药品、查询用户、更改密码和更换用户属于本系统基本功能,每个用户都具有该基本权限。下面绘制出药品流通业务的大致流程顺序:管理员根据发展需要和医生的需求采购添加相关的药品;登记入库后,由销售人员根据医生提供药单进行销售、整理;管理员,售药员可以进行金额统计,从中反映销售情况。未采取计算机药品信息管理系统之前,工作的大部分还是进行手工管理,工作起来效率很低,并且不能及时了解药品的存库等等,不便于动态及时地调整药品种类,以便更好地适应当前市场的需求。而且手工管理还存在着许多弊端,由于不可避免的人为因素,经常造成数据的遗漏、误报。计算机信息化管理有着储存信息量大、速度快等许多优点,提供的处理信息及时快捷,同时也提高了工作人员的自身素质。基于以上的对问题的分析,利用计算机提供信息,及时地调整药品的种类和库存,并且对药品的流通过程形成一整套动态的管理就十分必要了[2]。药品信息系统的建立,需要进行用户的需求调查与分析,以确定系统目标,提出解决问题的详细方案,这是系统建设的重要环节。对于药品信息管理,要具有完善的药品信息,包括各种相关内容,对每种药品都要有详细的记录信息,功能上对系统的需求是全面的。医生、售药员、管理员这三个方面形成了一个工作整体,采用计算机自动化信息处理,可方便快捷地共享信息、交流信息,高效地协同工作[3]。在软、硬件方面对系统的需求,软件要求易学,界面友好,容易掌握,可以很简单方便的管理各种药品信息,不需要很专业的知识就能很好地掌握日常工作,毕竟使用该系统的人不是专业的计算机技术人员。硬件的配置要求不能太高,这样可以很好的适应当前的药房计算机设施,总体上要符合大众化。在开发方式上对系统的需求,系统设计开发的周期要短,在短时间内完成,提高开发效率,利用简单的开发环境和工具作出具有相同的功效,方便、简单、实用作为系统开发的指导思想。3.2.2功能需求通过以上的各个分析,得出系统的功能需求如表3-1所示:表3-1系统的功能结构表模块名称模块功能查询按药品代号查询通过输入药品代号查询所需要的药品信息按药品名称查询通过输入药品名称查询所需要的药品信息按药品类别查询通过输入药品类别查询所需要的药品信息查询所有药品点击后直接列表显示库存中的所有药品信息查询库存为0的药品点击后列表显示库存中数量为0的药品信息查询过期药品点击后列表显示库存中过期药品的信息药品管理药品入库操作添加新的药品及其信息到库存中药品销售操作输入销售药品名称和数量,显示销售清单药库清理操作列出库存为0或过期药品,进行清理撤出接上表3-1系统管理更改密码操作输入旧密码、新密码,确认后修改用户密码更换用户操作输入新用户信息,更换现行用户为新用户注册用户操作输入新用户信息添加到用户列表中删除用户操作输入该用户类别、账号,在用户列表中删除查询用户操作选择用户类别或输入账号,查询该用户信息退出系统点击后确认可退出本系统帮助关于点击后显示关于本系统的简单帮助点击后弹出药品信息参考文本框供用户参考相应的各个模块的需求如下,查询:要求能根据用户提供的不同信息达到查询目的,查询耗时要短,功能要准确实用。查询结果要可视化,不要求结果有操作性。药品管理:对药品库存中添加、删除药品信息要符合操作规范,各实体属性要有根据存在,且定义要符合规范,范围长度要适合,尽量达到准确。输入时,要有辨别是否有重复操作的嫌疑。销售要有金额计算,精确度要求不能有误。以上各种操作要与数据库达到同步更新。同时添加了客户信息登记的功能,方便系统使用者与客户的联系。系统管理:达到可以即时更换用户,更换密码的要求,界面友好,新旧密码验证时要有检验是否相同的步骤,否则无效。帮助:弹出的功能指示要正确,设计的功能要符合需求,不能造成功能累赘[4]。3.3系统流程分析3.3.1系统流程图设计通过以上需求分析,可以设计相应的总体系统流程图,如图3-2所示:图3-2总系统流程图药品查询模块,第一层查询模块主要针对库存量,用户需要实时了解到库存中药品存放的信息,包括所有药品,库存为0的药品和过期药品(通过查询是否过期来操作是否清理部分药品,通过查询是否库存为0来是否添加操作部分药品)[5]。查询模块第一层处理描述处理名称:查询药品信息流入:查询条件(所有库存、库存为0、过期)流出:药品信息描述:根据药品查询条件,列出相应的药品信息处理名称:列表输出流入:药品信息流出:药品信息描述:显示所查询的药品信息第二层查询模块,用户根据需要查询特定一种或几种药品的信息,以供参考使用。查询模块第二层处理描述处理名称:按要求查询特定药品信息 流入:药品代号或药品名称或药品类别流出:该特种药品信息描述:根据药品代号或药品名称或药品类别,列出相应的药品信息处理名称:列表输出流入:药品信息流出:药品信息描述:显示所查询的药品信息药品管理模块分添加、清理、销售。药品管理模块处理描述处理名称:药品入库或清理流入:药品信息流出:药品入库或清理后新信息列表描述:添加新的药品信息到原信息列表,删除过期或库存为0的药品处理名称:药品销售流入:药品名称和数量流出:药品销售列表描述:销售出的药品信息列表,显示结算金额,并反映到原信息列表系统管理模块有权限验证,进入主窗体后有分权限的功能操作。系统管理模块处理描述处理名称:权限验证流入:用户登录流出:提示用户类型描述:在用户登录的时候,根据用户类型提供相应权限处理名称:普通权限操作流入:医生或售药员信息流出:更改密码、更换用户、查询用户描述:普通权限具有的系统功能处理名称:特殊权限操作流入:管理员信息流出:除具有普通功能外还提供注册、删除用户描述:特殊权限具有的系统功能3.3.2实体描述用户信息名字:用户描述:每个用户的基本信息定义:用户=用户账号+用户姓名+用户密码+用户类别说明:用户账号Varchar(10),用户姓名Varchar(20),用户密码Varchar(20),用户类别Varchar(30)药品信息名字:药品描述:库存中药品的基本信息定义:药品=药品代号+药品名称+药品类别+库存数量+出产公司+产地+出产时间+保质期+单价说明:药品代号Varchar(10),药品名称Varchar(50),药品类别Varchar(30),库存数量Int(5),出产公司Varchar(50),产地Varchar(50),出产时间Varchar(10),保质期Varchar(10),单价Float(10)销售信息名字:销售描述:销售过程中的在售药品信息定义:销售=药品代号+药品名称+购买药品数量+所需金额说明:药品代号Varchar(10),药品名称Varchar(50),购买数量Int(5),所需金额(10)3.4系统设计的准备工作内容准备如下,了解药品销售过程中的简单工作情况;了解药品管理的部分环节;了解了药品管理中的人员配置情况及管理分配任务工作;通过对网上和实体医务室的了解,从中收集到一些相关药品数据;了解了药品信息管理系统今后的市场和发展潜力[6]。这些都为设计提供了帮助。设计工具准备如下,系统开发工具:VisualC++6.0。符合要求,界面友好易操作。数据库开发工具:Access2003。根据现有要求,该工具符合简单易操作的要求,不过对于本系统如果使用量变大,应用得到广泛之后,那么就要更换更强大的数据库工具。图片制作工具:AdobePhotoshopCS3等。对设计的相关图片制作有帮助。第4章药品信息管理系统设计4.1系统数据库设计4.1.1概念模型设计为了把用户的数据要求清晰明确地表达出来,通常要建立一个概念性的数据模型(信息模型)。它是一种面向问题的数据模型,是按照用户的观点来对数据和信息建模。并描述了从用户角度看到的数据,反映了用户的现实环境,而且与在软件系统中的实现方法无关。最常用的表示概念性数据模型的方法,是实体—联系方法(Entity-RelationshipApproach)。这种方法不涉及实体在系统中的实现方法。这种方法称为E-R模型,当中包含“实体”,“联系”,“属性”。由以上各功能模块的分析,可画出本系统中的药品管理和查询模块的概念模型即E-R图如图4-1所示:查询、添加、删除查询、添加、删除销售、结算、恢复用户销售药品11nn图4-1系统E-R图在本系统中,用户与药品,用户与销售之间都是1对多的关系。系统只允许单用户登录,1个现行用户可以查询、添加、删除多个药品信息,1个现行用户可以进行销售、结算、恢复操作。实体中用户自定义完整性,不同的数据库系统根据数据应用环境的不同,还需要一些特殊的约束条件。它反应某一具体应用所涉及的数据必须满足的语义要求。对于用户自定义完整性也可以通过程序代码来实现。因为程序设计的灵活性和便捷性,在整个系统的调试过程中对于不完善的地方只需对代码进行修改而不用更改数据库,因此在系统中采用了程序代码来实现数据库用户自定义完整性的约束。各实体属性在下节列表中显示。4.1.2物理模型设计在ACCESS中,生成建立的表,完全适合工作需求,并且所支持的数据类型十分丰富,维护简单,操作容易,费用消耗低,根据模块设计以及规范化要求,由E-R图生成表,列出对应的表如下,用户列表USER如表4-1所示:表4-1用户表名称数据类型长度空是否主键用户账号Variablecharacters10非是用户姓名Variablecharacters20非否用户密码Variablecharacters20非否用户类别Variablecharacters30非否药品列表MEDICINE如表4-2所示:表4-2药品表名称数据类型长度空是否主键药品代号Variablecharacters10非是药品名称Variablecharacters50非否药品类别Variablecharacters30非否库存数量Integer10否出产公司Variablecharacters50否产地Variablecharacters50否出产时间Variablecharacters10否接上表4-2保质期Variablecharacters10否单价Float10否药品管理销售列表SALETABLE如表4-3所示:表4-3药品销售表名称数据类型长度空是否主键药品代号Variablecharacters10非是药品名称Variablecharacters50非否出售数量Integer10非否金额Float10非否表建立的过程,在ACCESS中新建一个空数据库,进而新建表,简单的方法是通过输入数据创建表,弹出新建表框后,在栏内输入新建表的各个属性及其约束条件(包括长度,主键等等)。如图4-2所示:图4-2数据库建表4.2系统简单界面设计程序设计最核心的地方是程序的功能,但程序的界面设计是不可忽视的,它直接影响到程序的易用性及友好性。系统界面利用VisualC++的MFC工具,控件、列表、按钮构成系统功能操作。用户首先接触的是登录模块,在登录模块中要输入用户信息,包括用户账号和姓名,及选择用户自身的类型,通过验证方可进入系统。当输入信息有误的时候,系统面对错误要人性化操作,给予重新输入的机会,弹出“您无权进入该系统”的消息框,点击确定后退出登录,重新输入验证信息进行登录操作。验证合法后,接触的是主页面系统,如图4-3所示:图4-3系统主页面菜单栏上显示系统各个功能模块,具体的模块中还分权限设置。中间工具栏提供几个重要功能的快捷操作按钮,图像直观易懂。主窗体是药品列表显示,窗体左框是用户列表,按类型分类,并显示当前用户和未在系统中运行使用的用户的差别供使用者查看如图4-4所示:图4-4用户列表药品列表中显示各药品的各个属性介绍及相应数据与数据库链接,做到实时操作后更新列表显示。列表内容按输入的时间先后顺序排列对齐,各属性的长度可以自由伸缩,不能全部显示的以“…”来代替,如图4-5所示:图4-5药品列表若想结束系统,则可以选择系统管理中的“退出系统”或者按关闭系统主窗口按钮,按确定即可退出本系统,按取消则取消了该退出操作,如图4-6所示:图4-6退出窗口第5章药品信息管理系统详细设计与实现5.1药品登录模块的设计与实现本系统中用户登录模块很重要,因为登录的时候有选择用户类型一项,系统根据用户类型的不同而提供不同权限的功能,如图5-1所示:图5-1登录模块用户在输入账号,密码之后,选择对应的用户类别,再按确定登录。系统会自动跟数据库链接,验证该用户的信息是否合法,如果合法则成功登录,不合法则无法登录。其中验证信息这段,voidCLogInDlg::OnOK(){ //TODO:Addextravalidationhere CMedicAdminDoc*pDoc=(CMedicAdminDoc*)((CMainFrame*)AfxGetMainWnd())->GetActiveDocument();//连接ACCESS数据库,以下连接代码都如此 UpdateData(TRUE); pDoc->theUser.SetAllMember(m_userAccount,m_userPassword,m_userType,"");//与数据库中的所有用户相关信息进行比对核实包括账号、密码和类型,验证是否合法 CUserSet*theUserSet=&pDoc->theUserSet; BOOLflag=pDoc->theUser.LogIn(theUserSet);//验证后赋值给flag做登录判断 if(flag) { CDialog::OnOK();//flag非0则验证合法,确定按钮成功实现,登录 } else { AfxMessageBox("您无权进入该系统");//flag为0则验证不合法,弹出无权进入该系统 //CDialog::OnOK(); }该模块窗体中有三个编辑框,账号编辑框样式常规;密码编辑框的样式密码设置为不可见,以“***”代替;用户类别列表框,提供下拉菜单供用户选择查看使用。5.2系统菜单栏设计与实现菜单栏的设计中,每次添加一个按钮,要在设计软件VisualC++中的字符串列表类里相应出现其按钮类型及名称,再在MENU中添加该模块,注意两者的名称与类型要吻合,这样在实际运行后就可以出现新添加的功能菜单,也可在该菜单内添加子功能。以在药品管理中添加“清理药品”这一功能为例。该字符串添加如图5-2所示:图5-2清理药品按钮字符串确定该字符串的名称和类型后,在MENU主窗体中的药品管理下拉菜单内添加“药库清理”,设置该项目属性如图5-3所示:图5-3药库清理项目属性两样操作之后,运行该系统,则可在系统运行菜单栏中下拉出现该项目。而具体功能的实现,则要在主窗体类“MainFrm.cpp”的代码中添加功能代码。具体代码如下所示:voidCMainFrame::OnCleanUp(){ //TODO:Addyourcommandhandlercodehere CCleanUpDlgcleanUpDlg; cleanUpDlg.DoModal();}//这段代码只是引用已经在外部另外建立的清理药库“CleanUpDlg”的功能类,将功能在该菜单栏实现而已在要求有具体权限设置的时候即根据用户需求,上述代码段后可另行添加权限代码,voidCMainFrame::OnUpdateCleanUp(CCmdUI*pCmdUI)//更新添加的权限设置的类{ //TODO:AddyourcommandupdateUIhandlercodehere CUser*theUser=&((CMedicAdminDoc*)GetActiveDocument())->theUser; if(theUser->GetType()=="管理员")//获取权限类型为“管理员”,只提供管理员使用权限,除了管理员以外,其他用户使用的此按钮无效,不能进行该操作 { pCmdUI->Enable();//权限符合,可执行 } else { pCmdUI->Enable(FALSE);//权限不符合,操作不可执行,该按钮显示无效 }} 菜单栏、工具栏、主窗体与用户列表窗体的设计都与上述方法类似。5.3系统功能模块设计与实现上节讲述的主窗体类里引用外部功能类,即是该具体的模块功能设计,同样以“药库清理”为例。首先根据药库清理的功能需求了解到,该操作是为了清理药库中库存为0的药品或者过期药品。根据需求设计相应窗体如图5-4所示:图5-4清理药库窗口“清理出库”和“退出”是两个功能按钮,分别对应“OnCleanUpButton”和“OnExit”,清理列表显示对应为“OnInitDialog”,两个清理选择分别为数量为0的“OnZeroRadio”和过期药品的“OnOverdueRadio”。在选择清理要求之后,“清理出库”根据清理要求该信息筛选列表,进行清理:if(m_selectRadio==0)//对要求进行分辨 { manageMedic.DeleteAllZeroNumber();//库存为0的药品清理 } else { manageMedic.DeleteOverdueMedic();//过期药品清理 }而之后的具体删除清理代码的设计,在外部类”ManageMedic.cpp”中添加如下代码:voidCManageMedic::DeleteAllZeroNumber()//具体清理库存为0的药品{ m_theMedicSet->m_strFilter="MedicineNumber=0";//选择库存为0的药品 m_theMedicSet->Requery(); for(inti=0;;i++) { if(m_theMedicSet->IsEOF()) { break;//删除操作 } m_theMedicSet->Delete(); m_theMedicSet->MoveNext(); }}此模块中,自行建立列表即要清理的药品列表,框架设计及属性设置较为复杂,具体部分代码如下:CManageMedicmanageMedic; CStringheader[]={"药品代号","药品名称","库存数量","是否过期"};//列表的各个属性 for(inti=0;i<4;i++) { m_showList.InsertColumn(i,header[i],LVCFMT_LEFT,90);//框架设计 } CMainFrame*pMainFrm=(CMainFrame*)AfxGetMainWnd(); CMedicAdminDoc*pDoc=(CMedicAdminDoc*)pMainFrm->GetActiveDocument(); m_theMedicSet=&pDoc->theMedicSet; m_theMedicSet->m_strFilter=""; m_theMedicSet->Requery();//列表内容略药品销售中也有自行建立列表,所不同的是销售模块还在数据库中添加了列表,两者联用。在需求中菜单栏的功能是有权限设置的,主要体现在管理员具有全部功能的使用,而销售人员和医生只具有部分功能,在结算功能上加入计算步骤。以销售药品为例,医生不具有售药功能,则在代码中体现为,与药库清理类似在“MainFrm.cpp”中添加代码,具体选择用户权限为如下所示: if(theUser->GetType()!="医生")//除了医生之外的用户具有此功能权限 { pCmdUI->Enable();//显示该功能,否则就不显示 //pCmdUI->setVisible(); }计算功能代码如下:floatCManageMedic::CheckOut(){ m_theSaleSet->m_strFilter=""; m_theSaleSet->Requery();//与数据库中的销售列表对比 if(!m_theSaleSet->GetRecordCount()) { return0; } floatmoney=0; for(inti=0;;i++) { if(m_theSaleSet->IsEOF())//如果错误 { break;//清0 } money+=m_theSaleSet->m_MedicinePrice;//连加计算 m_theSaleSet->Delete(); m_theSaleSet->MoveNext();//转到下一个 } returnmoney;//返回金额值}药品入库中加入编辑框、下拉菜单,实现药品单个信息的输入并在列表框中输入药品简介,入库后即可添加进入数据库中,重填操作撤销入库操作,数据库没有修改。如图5-5所示:图5-5药品入库窗口在查询模块,具体操作在按各种信息与数据库进行对比,然后在主窗体中列表显示,与主窗体的链接是关键。窗口显示如图5-6所示:图5-6按药品类别查询窗口if(m_type=="")//检测输入的药品类型是否为空 { AfxMessageBox("请输入要查询的药品类别");//如果为空 return; } CMedicSearchmedicSearch; CFrameWnd*pWnd=(CFrameWnd*)AfxGetMainWnd(); CMedicAdminDoc*pDoc=(CMedicAdminDoc*)pWnd->GetActiveDocument();//连接数据库核对该药品类别进行查找 CMedicSet*theMedicSet=&pDoc->theMedicSet; POSITIONpos=pDoc->GetFirstViewPosition();//定义查找位置 while(pos!=NULL)//直到结束系统管理中包括有密码更改、用户更换、注册、查询、删除用户,对于前后密码的验证和切换用户即切换权限的操作是主要分析步骤。如图5-7所示:图5-7更改密码窗口if(m_oldPassword==theUser->GetPassword())//读取旧密码检测是否与数据库中的密码相同 { if((m_password==m_password2)&&(m_password!=""))//在旧密码合法且如果两次新密码输入相同而且非空 { theUser->SetPassword(m_password); theUser->ModifyPassword(theSet);//替换密码 AfxMessageBox("修改密码成功!"); CDialog::OnOK(); } elseif(m_password=="")//如果输入新密码为空 { AfxMessageBox("请输入新密码!"); } else { AfxMessageBox("两次输入的密码不匹配!");//两次输入的新密码不同 m_password=""; m_password2="";//两行新密码都置为空,要求重新输入 UpdateData(FALSE); } } else { AfxMessageBox("输入的密码不正确,您无权修改密码!");//当输入的旧密码与数据库中的该用户密码不相同时 m_oldPassword=""; m_password=""; m_password2="";//全置为空 UpdateData(FALSE); }接下来的几个功能模块都可模仿上面介绍的,更换用户仿照密码修改,有前后对照操作;查询用户仿照查询药品操作;注册、删除用户分别仿照入库药品、清理药品。在帮助模块中,为计算要求添加了计算器模块,和为方便医生、售药员和管理员沟通,执行留言操作,提供留言功能模块,这方面具体实现较为简单。5.4系统任务栏设计与实现本系统中除了菜单栏显示,各功能模块窗体之外,还剩下任务栏。本系统出于部分需求只添加了任务栏时间显示如图5-8所示:图5-8任务栏时间显示此功能,主要是在MainFrm.cpp中添加了时间类OnTimer,并在OnCreate类中添加代码如下:m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); SetTimer(1,1000,NULL);//安装定时器,并将其时间间隔设为1000毫秒return0;//这段程序在此类中的位置定义了该时间功能在任务栏显示的位置设置格式之后添加现行系统与电脑系统时间的连接,把时间设置为当前系统时间,如下所示:voidCMainFrame::OnTimer(UINTnIDEvent){ //TODO:Addyourmessagehandlercodehereand/orcalldefault CTimetime;time=CTime::GetCurrentTime();//得到当前系统时间CStrings=time.Format("%H:%M:%S");//转换时间格式为*:*:*m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CLOCK),s);//显示任务栏时钟 CFrameWnd::OnTimer(nIDEvent);}第6章系统的测试与维护本课题所采用的测试方法是黑盒测试,及时在程序接口进行的测试,它只检查程序功能是否按照规格说明书的规定正常使用,黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等,主要用于软件确认测试。不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。主要考虑到输入型的正常与否,长度是否符合规范,各个属性
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省徐州市鼓楼区东苑中学 2024-2025学年八年级3月月考道德与法治试题(原卷版+解析版)
- 教科版六年级科学上册教学计划(含进度表)
- 关于电子报刊制作的一些个人看法
- 2025年党政领导干部党章党规党纪党史知识培训考试题库及答案(共220题)
- 未开窗通风检讨书
- 别墅装修合同专用版
- 项目执行过程及成效分析
- 云计算数据中心能耗优化方案
- 高效率办公流程优化解决方案
- 停车场智能管理系统安装
- 小学五年级家长会-主题班会
- DB11T 211-2017 园林绿化用植物材料 木本苗
- 《PLC应用技术(西门子S7-1200)第二版》全套教学课件
- 豪迈集团笔试在线测评题
- 社会团体财务报表
- 行政区划管理条例学习解读课件
- GB/T 44143-2024科技人才评价规范
- 冲击波疗法指南解读2024
- 宏观经济学A智慧树知到期末考试答案章节答案2024年中国农业大学
- 2024年第五届美丽中国全国国家版图(中小学组)知识竞赛题库及答案
- 2024年河南职业技术学院单招职业适应性测试题库各版本
评论
0/150
提交评论