药房管理系统
【摘要】信息管理系统是一门新兴的,集管理科学、信息科学、系统科学及计算机
科学为一体的综合性学科,研究的是信息管理活动的全过程,具备数据处理、计划、控制、预测和辅助决策功能。为了使独立的中小型药房或门诊药库的管理者能够更好地进行管理,选择一款合适的信息管理系统软件是极为必要的。本文论述了药房管理系统的设计思想,主要实现功能及数据库的结构,并给出部分模块的实现代码。最后总结我在毕业设计过程中的体会。
【关键词】药房管理,信息管理,数据库,代码实现。
1 绪论
1.1 研究课题的背景
信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。而信息管理系统正是一门新兴的、集管理科学、信息科学、系统科学及计算机科学为一体的综合性学科,研究的是信息管理活动的全过程,它具备数据处理、计划、控制、预测和辅助决策功能,具体作用如下5点内容:
(1)用统一标准处理和提供信息,排除使用前后矛盾的不完整的数据。 (2)完整、及时提供在管理及决策中需要的数据。 (3)利用指定的数据关系分析数据,客观预测未来。
(4)向各级管理机构提供不同详细程度的报告,缩短分析和解释的时间。 (5)用最低的费用最短的时间提供尽可能精确、可靠的信息,以便使决策者选择最佳的实施方案,以提高企业的经济效益。
在社会经济高速发展的今天,大部分大型企事业单位包括医院,基本上都采用了相关的信息管理系统对其各项事务进行科学化、标准化的管理,但是在我进行选题和调研时,我发现目前在医药系统的同类信息管理系统中,并没有一款较为合适地、专门针对中小型药房或门诊药库管理的软件。为了使独立的中小型药房或门诊药库的管理者能够更方便地、动态地管理标准化信息,我选定此次研究的课题为:《中小型药房管理系统》。并在和指导老师多次交流后,确定了实现方案的要点和工作计划。本系统的主要功能有:
用户管理,药品管理,库存管理,系统管理四大功能。 1.2 研究思路和工作计划
正如研究任何其它软件项目一样,我做的毕业设计也经历了从选题,调研,熟悉开发环境,实验关键技术,查找类似的相关系统的资料;系统概要设计,数据结构设计,功能模块开发,功能模块测试,系统调试和系统试运行和修改。
在各阶段的时间安排上,选题和调研用了两天时间;查找类似的相关系统的资料用了两天时间;系统需求分析并完成相关文档用了四天时间;数据结构设计用了一天时间;系统概要设计至详细设计并完成相关用了五天时间;软件结构设计和窗体美化用了三天时间;熟悉开发环境,实验关键技术用了两天时间;功能模块开发和功能模块测试用了两周时间;系统调试和系统试运行和修改用了一周时间;最后,完成用户使用手册用了一天时间。完成上述全部工作大约用了一个半月时间。
2 系统功能需求描述
为方便药房管理人员方便有效地对药品信息和库存等进行相关操作,需开发一个药房管理系统,包括录入和修改药品信息、药品查询、设置药品库存上下限、删除药品信息并删除相关库存信息、出入库操作、查看系统数据、查看操作日志、数据维护等内容。要求系统能有效、快速、稳定、可靠和无误的完成上述操作。并要求系统界面要简单明了,易于操作。
药房管理系统对于中小型药房、药店、门诊药库管理者实现药品信息、库存操作等动态管理有着极其重要的作用,但归结起来,其设计内容并不是非常复杂。总的来说,其内部功能主要为实现C++设计语言与数据库的结合,以及部分函数的调用;外部功能主要有实现注册用户管理,药品信息管理,库存管理,系统管理四大功能。
经过了反复地论证,最终确定了药房管理系统的菜单功能,软件逻辑模型,及各项外部功能模块。
2.1 菜单功能
2.2 软件逻辑模型
2.3 各外部功能模块描述 2.3.1 用户登陆
用户登陆模块主要功能为验证用户身份,确保系统数据的安全,因此必须实现:(1)正确进行用户身份验证;(2)具有一定的系统保护功能,拒绝非法用户登陆。 2.3.2 用户管理
用户管理模块又分为:用户注册,修改密码,取回密码,删除用户四个子模块。要在正常登陆系统的情况下实现:(1)注册新的用户;(2)验证用户身份,为合法用户提供修改密码、取回密码、删除用户的功能;(3)拒绝非法用户的操作。
2.3.3 药品管理
药品管理模块又分为:药品总览,信息录入,药品查询,其他操作四个子模块。要在正常登陆系统的情况下实现:(1)允许用户随时查看全部药品信息记录;(2)录入新的药品信息,并生成相关库存记录和操作信息记录,确保数据规范性;(3)准确、快速地完成药品信息查询,将结果及时正确地反馈给用户;(4)准确完成修改或删除药品信息记录等其他操作。 2.3.4 库存管理
库存管理模块又分为:库存总览,库存查询,入库出库,上限下限四个子模块。由于药品库存量归类于系统内部数据,不允许用户手工随意更改,故本模块与要在正常登陆系统的情况下实现:(1)允许用户随时查看所有库存信息记录;(2)准确、快速地完成库存信息查询,将结果及时正确地反馈给用户;(3)准确、快速地完成药品出入库操作,将结果及时正确地反馈给用户,并生成相关的操作信息记录,确保数据规范性;(4)准确完成库存上限和下限的设置,确保数据规范性。 2.3.5 系统管理
系统管理模块又分为:用户列表,操作日志,数据维护三个子模块。由于这个模块涉及系统内部数据的操作,因此需要具有一定的系统保护功能,必须在正常登陆的情况下实现:(1)允许用户查看系统注册用户,但不允许进行修改操作;(2)允许用户查看药品出入库操作日志,并提供准确快速的查询引擎,将结果及时正确地反馈给用户,但不允许进行修改操作;(3)由超级管理员提供超级管理员密码,批量地对系统数据进行清除等维护工作;(4)对系统提供保护,在非法操作次数达到极限后,暂停使用数据维护功能。
3 其他主要需求描述
3.1 性能需求 3.1.1 精度需求
在数据库中提取数据时,要求数据记录定位准确;添加数据时,要求输入准确。 3.1.2时间特性需求
更新处理时间:随着药房管理系统的不断完善,本软件的响应时间更快。 3.1.3 灵活性
当需求发生某些变化时,药房管理系统的操作方式、数据结构、运行环境基本不变,
若变化只是将对应的数据库文件内的记录改变。 3.1.4 数据管理能力需求
药房管理系统约需要管理4个数据表,药房管理系统约用6.11M空间。 3.1.5 故障处理需求 本软件无故障。 3.2 属性 3.2.1 可用性
本药房管理系统使用C++语言,在BCB 6.0平台下开发,逻辑清晰,无故障。 3.2.2 安全性
本药房管理系统所需的数据、信息均放在数据库中,不容易被破坏,万一受到破坏也不会影响源程序。 3.2.3 可维护性
本药房管理系统采用C++语言编写,所需的数据均放在数据库中,易于恢复。 3.2.4 可转移、可转换性
可转移的环境是windows系统的各个版本,不需要修改任何部件和部位,转换的方
法是直接拷贝或安装程序。 3.3 其它需求 3.3.1 数据结构
用户在使用方面的要求:a.界面友好;b.操作方便;c.对硬件的要求低。 开发者要求:a.可扩充性;b.可维护性;c.易于更新。 3.3.2 数据库
实现数据共享、交互使用,完成软件的高度独立性。 3.3.3 操作
a.初始化操作简单快捷;b.数据处理的支持功能比较强。 3.3.4 场合的适用性
本软件通过C++语言编写,完成各模块功能;采用模块的设计思想,并将主模块划分为几个独立的功能模块,但它们之间又相互联系,因此各子模块也可在不同的环境下单独运行。
4 数据库设计说明
由于本系统软件结构小,所需处理的数据也比较少,因此采用Access数据库建表,数据库名为:yfgl.mdb,由下述四张数据表组成:
用户信息表:userinfo.db 药品信息表:yaopininfo.db 库存信息表:kucuninfo.db 操作日志表:caozuoinfo.db
4.1 用户信息表 userinfo.db
字段 1 2 3 4
字段名 编号 username password saveword
类型 (系统自动编号)
文本 文本 文本
长度 12 12 12
4.2 药品信息表 yaopininfo.db
字段 1 2 3 4 5 6 7 8 9 10 11 12 13
字段名 ID 名称 规格 整量单位 散量单位 整散比 入库单价 出库单价 批发价 分类 有效期 拼音码 库存
类型 文本 文本 文本 文本 文本 文本 文本 文本 文本 文本 文本 文本 文本
长度 10 50 10 10 10 10 10 10 10 10 8 5 10
4.3 库存信息表 kucuninfo.db
字段 1 2 3 4
字段名 ID 库存 上限 下限
类型 文本 文本 文本 文本
长度 10 10 10 10
4.4 操作日志表 caozuoinfo.db
字段 1 2 3 4 5 6
字段名 编号 ID username type shuliang date
类型
(系统自动编号)
文本 文本 文本 文本 文本
长度 10 12 8 10 20
5 系统主要界面和常用面板、窗口设计说明
5.1 系统主界面
为求界面简单明了、操作简便快捷,系统主界面中重点显示药品信息列表,成功登陆系统后,登陆面板将出现“欢迎光临”界面,下方的快捷按钮面板也变为可用状态,当点击快捷按钮时,将激活相关的操作面板或窗口。 5.2 用户管理窗口
点击系统主界面上的“用户管理”将出现下拉菜单,根据选择将弹出相关窗口界面,可对注册用户信息进行管理;在“用户管理”窗口可点选左侧面板的操作项进行相关操作。
5.3 药品录入面板
点击
即可激活此面板。用户填写完毕并点击“确定”或“下一条”按钮
时,系统将首先检查数据的完整性和规范性,如果无误则调用数据库进行相关操作并反馈用户。若药品编号为数字,当用户需要批量录入新药品时,可以点击“下一条”按钮提交数据,系统会按由小到大的顺序自动生成新的药品编号。点击“重置”按钮可以清空文本框的内容。
5.4 药品信息查询面板
点击
即可激活此面板。此查询引擎支持模糊查询和精确查询,用户可以
根据查询的条件点选多项选择框,并输入过滤条件,点击“确定”按钮即可进行搜索,如搜索到相关信息,则在列表中显示。点击“重置”按钮可以取消多选框选项并清空文本框的内容。
5.4 药品信息修改面板
在药品信息表中选中要修改的药品记录,点击
即可激活此面板。药品编号
及库存量属于系统内部数据,因此无法在此面板中进行修改。修改文本框中的内容后,点击“确定修改”按钮,系统将检查数据的完整性和规范性,如果无误则调用数据库进行相关操作并反馈用户。点击“取消操作”按钮将返回系统主界面。
5.5 库存总览面板
点击
即可激活此面板,列表中显示药品编号,库存量,上限和下限。根
据查询的条件点选单项选择按钮,并输入过滤条件,点击“查询”按钮即可进行搜索,相关结果将显示在左侧列表中。在左侧列表中选择要操作的库存记录,填写上限或下限数量后,点击“设置”按钮,系统将检查数据的规范性,如果无误则调用数据库进行相关操作并反馈用户。如文本框中未填写上限(下限)数量,则默认为对该药品不设置库存上限(下限),原有的上限(下限)内容将被清空。 5.6 药品出入库操作窗口:
根据用户在药品信息列表、药品查询结果列表或库存表中选择的记录,点击
或
即可激活此窗口。点击窗口左侧面板中的单选按钮,可以切换
入库操作和出库操作。在列表中选定要操作的药品记录(文本框中将提示记录编号),填写操作数量后点击“确定”按钮,系统将检查数据的规范性,如无误则调用数据库进行相关操作并反馈用户。点击“重置”按钮可清空操作数量。点击“返回”按钮将返回系统主界面。
5.7 用户列表
在系统管理窗口点击“用户列表”按钮,即可查看系统当前所有的注册用户列表。
5.8 操作日志
在系统管理界面点击“操作日志”按钮,即可查看药品出入库操作记录。在下方文本框中输入药品编号,点击任意一个查询按钮,系统将搜索相关药品的相应操作记录。点击“显示日志”按钮可查看所有操作记录。
5.9 数据维护
在系统管理界面点击“数据维护”按钮,即可激活系统数据维护面板。在上方文本框中输入超级用户密码,根据需要点选多项选择框并点击“确定”按钮,系统将首先检查用户的操作权限和操作合法性,然后进行相关操作,或提示拒绝操作。如连续三次没有提供正确的超级用户密码, “数据维护”功能会暂时被系统停用。
6 系统各主要模块功能部分编码设计
6.1数据库连接
在本系统中,只使用了一组ADO控件连接数据源。为保证程序的可移植性,要求能够动态连接数据库。以下是动态连接数据库的连接字符串的代码实现:
AnsiString strDBName,strPath; strDBName =
strPath += strDBName; strPath +=
Query1->Active = false;
Query1->ConnectionString = strPath;
Query1->Active = true;
同样地,Conn1也需要通过ExtractFilePath()函数获取数据库当前路径来设置它的ConnectionString。
6.2 药品录入
为了实现代码的重复使用,我将这个模块的代码写在一个自定义函数yaopinLuru()中。以下是代码的实现:
if(iflag != 1) //如果药品信息无误则在数据库中插入新记录 { strInsert =
} …… //此段代码为设置相应的SQL语句 strSql=
6.3 药品查询
药品查询引擎提供了多项条件查询和单项条件查询,为此,在连接数据库搜索相关记录之前,必须判断用户的查询过滤条件,以确定SQL语句的传递。以下是代码的实现: if(isign == 2 && aa != 1)//用户选择多项查询
{
if(flag1 == 1 && flag2 == 1) //查询条件为ID和名称
} { } if(flag1 == 1 && flag3 == 1) //查询条件为ID和分类 { } if(flag2 == 1 && flag3 == 1) //查询条件为名称和分类 { } if(flag1 == 1 && flag2 == 1 && flag3 == 1) //查询条件为ID、名称和分类 { } AnsiString str; str =
else //用户选择单项查询
{
if(flag1 == 1 && aa != 1) { } if(flag2 == 1 && aa != 1) { strSql =
} } …… //此段代码为设置相应的SQL语句 if(flag3 == 1 && aa != 1) { } …… //此段代码为设置相应的SQL语句
6.4 药品修改
本模块经过判断数据的规范性后,使用update的方法来更新数据库内容,以下是代码的实现:
AnsiString strSql; strSql =
6.5 出入库操作
系统通过判断单项选择按钮的选中状态来确定当前操作为入库操作或出库操作,以下是代码的实现:
if(SnRadioButton2->Checked == true) //入库操作
{
…… if(iflag != 1)
} { } kucun = kucun + num; strSql =
if(SnRadioButton1->Checked == true) //出库操作
{
}
…… if(iflag != 1) { } kucun = kucun - num; strSql =
6.6 数据维护
在数据维护模块中,系统根据用户是否提供了正确的超级管理员密码来判断其是否具有操作的权限。以下是清除系统注册用户的代码实现:
BaseForm->Query1->First(); for(int i = 0;i Query1->RecordCount;i++) { } strSql =
7 系统测试
软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键。其目的是想以最少的时间和人力找出软件中潜在的各种错误和缺陷。但是,任何项目的开发都要受到期限、费用、人力和机时等条件的限制,穷举测试是不可行的。为了节省时间和资源,提高测试效率,就必须精心设计测试用例,使得采用这些测试数据能够达到最佳的测试效果。
对于本软件的测试,我选择的是黑盒测试法中的等价类划分测试。在本系统中,所输入的数据必须遵循一定的规范性。如:用户名和密码的长度为6到12个字符,在测试时就输入一个小于6或大于12个字符的数据就可以达到目的。金额或数量方面只能输入数字,输入非数字字符(小数点除外)将会提示出错。
8 总结
在社会经济高速发展、信息一体化的今天,实现电子化的企业信息管理可以代替手工操作,确保数据的规范性、完整性和安全性。
本系统开发的目的就是希望能够被广泛应用在各个中小型药房、药店、门诊或诊所的独立药库,使其管理者能够脱离手工操作,在一个界面友好、操作简单的平台上动态地管理各种标准化的相关信息。
在经历了一系列系统开发的步骤后,我所选定的课题——《中小型药房管理系统》终于完成了,并且基本上实现了在需求分析阶段确定的各项功能,以及详细设计阶段确定的软件模型。其中,我最深刻的体会有两点:一、技术方面如编码设计,可以有很多实现的方法,在系统开发中应该力求编码的简洁和可读性的统一,为此,必须有针对性地练习,以提高自己编写代码的能力;二、无论技术如何纯熟,没有扎实的理论知识作为基础,想要开发出合理、合格的系统也是十分困难的。
致 谢
在毕业设计过程中,非常感谢黄富革老师和罗运贞老师在理论和实践方面的指导,同时还要感谢热心与我讨论技术实现方法,给我提供帮助的同学。在这里,对所有这些人都表示衷心的感激,谢谢!
参考文献
[1] 刘光.《C++Builder程序设计导学》.清华大学出版社.
.[2] 汪作文.《软件工程》重庆大学出版社.
[3] 微软公司.《SQL server 2000标准教程》中国劳动社会保障出版社. .
药房管理系统
【摘要】信息管理系统是一门新兴的,集管理科学、信息科学、系统科学及计算机
科学为一体的综合性学科,研究的是信息管理活动的全过程,具备数据处理、计划、控制、预测和辅助决策功能。为了使独立的中小型药房或门诊药库的管理者能够更好地进行管理,选择一款合适的信息管理系统软件是极为必要的。本文论述了药房管理系统的设计思想,主要实现功能及数据库的结构,并给出部分模块的实现代码。最后总结我在毕业设计过程中的体会。
【关键词】药房管理,信息管理,数据库,代码实现。
1 绪论
1.1 研究课题的背景
信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。而信息管理系统正是一门新兴的、集管理科学、信息科学、系统科学及计算机科学为一体的综合性学科,研究的是信息管理活动的全过程,它具备数据处理、计划、控制、预测和辅助决策功能,具体作用如下5点内容:
(1)用统一标准处理和提供信息,排除使用前后矛盾的不完整的数据。 (2)完整、及时提供在管理及决策中需要的数据。 (3)利用指定的数据关系分析数据,客观预测未来。
(4)向各级管理机构提供不同详细程度的报告,缩短分析和解释的时间。 (5)用最低的费用最短的时间提供尽可能精确、可靠的信息,以便使决策者选择最佳的实施方案,以提高企业的经济效益。
在社会经济高速发展的今天,大部分大型企事业单位包括医院,基本上都采用了相关的信息管理系统对其各项事务进行科学化、标准化的管理,但是在我进行选题和调研时,我发现目前在医药系统的同类信息管理系统中,并没有一款较为合适地、专门针对中小型药房或门诊药库管理的软件。为了使独立的中小型药房或门诊药库的管理者能够更方便地、动态地管理标准化信息,我选定此次研究的课题为:《中小型药房管理系统》。并在和指导老师多次交流后,确定了实现方案的要点和工作计划。本系统的主要功能有:
用户管理,药品管理,库存管理,系统管理四大功能。 1.2 研究思路和工作计划
正如研究任何其它软件项目一样,我做的毕业设计也经历了从选题,调研,熟悉开发环境,实验关键技术,查找类似的相关系统的资料;系统概要设计,数据结构设计,功能模块开发,功能模块测试,系统调试和系统试运行和修改。
在各阶段的时间安排上,选题和调研用了两天时间;查找类似的相关系统的资料用了两天时间;系统需求分析并完成相关文档用了四天时间;数据结构设计用了一天时间;系统概要设计至详细设计并完成相关用了五天时间;软件结构设计和窗体美化用了三天时间;熟悉开发环境,实验关键技术用了两天时间;功能模块开发和功能模块测试用了两周时间;系统调试和系统试运行和修改用了一周时间;最后,完成用户使用手册用了一天时间。完成上述全部工作大约用了一个半月时间。
2 系统功能需求描述
为方便药房管理人员方便有效地对药品信息和库存等进行相关操作,需开发一个药房管理系统,包括录入和修改药品信息、药品查询、设置药品库存上下限、删除药品信息并删除相关库存信息、出入库操作、查看系统数据、查看操作日志、数据维护等内容。要求系统能有效、快速、稳定、可靠和无误的完成上述操作。并要求系统界面要简单明了,易于操作。
药房管理系统对于中小型药房、药店、门诊药库管理者实现药品信息、库存操作等动态管理有着极其重要的作用,但归结起来,其设计内容并不是非常复杂。总的来说,其内部功能主要为实现C++设计语言与数据库的结合,以及部分函数的调用;外部功能主要有实现注册用户管理,药品信息管理,库存管理,系统管理四大功能。
经过了反复地论证,最终确定了药房管理系统的菜单功能,软件逻辑模型,及各项外部功能模块。
2.1 菜单功能
2.2 软件逻辑模型
2.3 各外部功能模块描述 2.3.1 用户登陆
用户登陆模块主要功能为验证用户身份,确保系统数据的安全,因此必须实现:(1)正确进行用户身份验证;(2)具有一定的系统保护功能,拒绝非法用户登陆。 2.3.2 用户管理
用户管理模块又分为:用户注册,修改密码,取回密码,删除用户四个子模块。要在正常登陆系统的情况下实现:(1)注册新的用户;(2)验证用户身份,为合法用户提供修改密码、取回密码、删除用户的功能;(3)拒绝非法用户的操作。
2.3.3 药品管理
药品管理模块又分为:药品总览,信息录入,药品查询,其他操作四个子模块。要在正常登陆系统的情况下实现:(1)允许用户随时查看全部药品信息记录;(2)录入新的药品信息,并生成相关库存记录和操作信息记录,确保数据规范性;(3)准确、快速地完成药品信息查询,将结果及时正确地反馈给用户;(4)准确完成修改或删除药品信息记录等其他操作。 2.3.4 库存管理
库存管理模块又分为:库存总览,库存查询,入库出库,上限下限四个子模块。由于药品库存量归类于系统内部数据,不允许用户手工随意更改,故本模块与要在正常登陆系统的情况下实现:(1)允许用户随时查看所有库存信息记录;(2)准确、快速地完成库存信息查询,将结果及时正确地反馈给用户;(3)准确、快速地完成药品出入库操作,将结果及时正确地反馈给用户,并生成相关的操作信息记录,确保数据规范性;(4)准确完成库存上限和下限的设置,确保数据规范性。 2.3.5 系统管理
系统管理模块又分为:用户列表,操作日志,数据维护三个子模块。由于这个模块涉及系统内部数据的操作,因此需要具有一定的系统保护功能,必须在正常登陆的情况下实现:(1)允许用户查看系统注册用户,但不允许进行修改操作;(2)允许用户查看药品出入库操作日志,并提供准确快速的查询引擎,将结果及时正确地反馈给用户,但不允许进行修改操作;(3)由超级管理员提供超级管理员密码,批量地对系统数据进行清除等维护工作;(4)对系统提供保护,在非法操作次数达到极限后,暂停使用数据维护功能。
3 其他主要需求描述
3.1 性能需求 3.1.1 精度需求
在数据库中提取数据时,要求数据记录定位准确;添加数据时,要求输入准确。 3.1.2时间特性需求
更新处理时间:随着药房管理系统的不断完善,本软件的响应时间更快。 3.1.3 灵活性
当需求发生某些变化时,药房管理系统的操作方式、数据结构、运行环境基本不变,
若变化只是将对应的数据库文件内的记录改变。 3.1.4 数据管理能力需求
药房管理系统约需要管理4个数据表,药房管理系统约用6.11M空间。 3.1.5 故障处理需求 本软件无故障。 3.2 属性 3.2.1 可用性
本药房管理系统使用C++语言,在BCB 6.0平台下开发,逻辑清晰,无故障。 3.2.2 安全性
本药房管理系统所需的数据、信息均放在数据库中,不容易被破坏,万一受到破坏也不会影响源程序。 3.2.3 可维护性
本药房管理系统采用C++语言编写,所需的数据均放在数据库中,易于恢复。 3.2.4 可转移、可转换性
可转移的环境是windows系统的各个版本,不需要修改任何部件和部位,转换的方
法是直接拷贝或安装程序。 3.3 其它需求 3.3.1 数据结构
用户在使用方面的要求:a.界面友好;b.操作方便;c.对硬件的要求低。 开发者要求:a.可扩充性;b.可维护性;c.易于更新。 3.3.2 数据库
实现数据共享、交互使用,完成软件的高度独立性。 3.3.3 操作
a.初始化操作简单快捷;b.数据处理的支持功能比较强。 3.3.4 场合的适用性
本软件通过C++语言编写,完成各模块功能;采用模块的设计思想,并将主模块划分为几个独立的功能模块,但它们之间又相互联系,因此各子模块也可在不同的环境下单独运行。
4 数据库设计说明
由于本系统软件结构小,所需处理的数据也比较少,因此采用Access数据库建表,数据库名为:yfgl.mdb,由下述四张数据表组成:
用户信息表:userinfo.db 药品信息表:yaopininfo.db 库存信息表:kucuninfo.db 操作日志表:caozuoinfo.db
4.1 用户信息表 userinfo.db
字段 1 2 3 4
字段名 编号 username password saveword
类型 (系统自动编号)
文本 文本 文本
长度 12 12 12
4.2 药品信息表 yaopininfo.db
字段 1 2 3 4 5 6 7 8 9 10 11 12 13
字段名 ID 名称 规格 整量单位 散量单位 整散比 入库单价 出库单价 批发价 分类 有效期 拼音码 库存
类型 文本 文本 文本 文本 文本 文本 文本 文本 文本 文本 文本 文本 文本
长度 10 50 10 10 10 10 10 10 10 10 8 5 10
4.3 库存信息表 kucuninfo.db
字段 1 2 3 4
字段名 ID 库存 上限 下限
类型 文本 文本 文本 文本
长度 10 10 10 10
4.4 操作日志表 caozuoinfo.db
字段 1 2 3 4 5 6
字段名 编号 ID username type shuliang date
类型
(系统自动编号)
文本 文本 文本 文本 文本
长度 10 12 8 10 20
5 系统主要界面和常用面板、窗口设计说明
5.1 系统主界面
为求界面简单明了、操作简便快捷,系统主界面中重点显示药品信息列表,成功登陆系统后,登陆面板将出现“欢迎光临”界面,下方的快捷按钮面板也变为可用状态,当点击快捷按钮时,将激活相关的操作面板或窗口。 5.2 用户管理窗口
点击系统主界面上的“用户管理”将出现下拉菜单,根据选择将弹出相关窗口界面,可对注册用户信息进行管理;在“用户管理”窗口可点选左侧面板的操作项进行相关操作。
5.3 药品录入面板
点击
即可激活此面板。用户填写完毕并点击“确定”或“下一条”按钮
时,系统将首先检查数据的完整性和规范性,如果无误则调用数据库进行相关操作并反馈用户。若药品编号为数字,当用户需要批量录入新药品时,可以点击“下一条”按钮提交数据,系统会按由小到大的顺序自动生成新的药品编号。点击“重置”按钮可以清空文本框的内容。
5.4 药品信息查询面板
点击
即可激活此面板。此查询引擎支持模糊查询和精确查询,用户可以
根据查询的条件点选多项选择框,并输入过滤条件,点击“确定”按钮即可进行搜索,如搜索到相关信息,则在列表中显示。点击“重置”按钮可以取消多选框选项并清空文本框的内容。
5.4 药品信息修改面板
在药品信息表中选中要修改的药品记录,点击
即可激活此面板。药品编号
及库存量属于系统内部数据,因此无法在此面板中进行修改。修改文本框中的内容后,点击“确定修改”按钮,系统将检查数据的完整性和规范性,如果无误则调用数据库进行相关操作并反馈用户。点击“取消操作”按钮将返回系统主界面。
5.5 库存总览面板
点击
即可激活此面板,列表中显示药品编号,库存量,上限和下限。根
据查询的条件点选单项选择按钮,并输入过滤条件,点击“查询”按钮即可进行搜索,相关结果将显示在左侧列表中。在左侧列表中选择要操作的库存记录,填写上限或下限数量后,点击“设置”按钮,系统将检查数据的规范性,如果无误则调用数据库进行相关操作并反馈用户。如文本框中未填写上限(下限)数量,则默认为对该药品不设置库存上限(下限),原有的上限(下限)内容将被清空。 5.6 药品出入库操作窗口:
根据用户在药品信息列表、药品查询结果列表或库存表中选择的记录,点击
或
即可激活此窗口。点击窗口左侧面板中的单选按钮,可以切换
入库操作和出库操作。在列表中选定要操作的药品记录(文本框中将提示记录编号),填写操作数量后点击“确定”按钮,系统将检查数据的规范性,如无误则调用数据库进行相关操作并反馈用户。点击“重置”按钮可清空操作数量。点击“返回”按钮将返回系统主界面。
5.7 用户列表
在系统管理窗口点击“用户列表”按钮,即可查看系统当前所有的注册用户列表。
5.8 操作日志
在系统管理界面点击“操作日志”按钮,即可查看药品出入库操作记录。在下方文本框中输入药品编号,点击任意一个查询按钮,系统将搜索相关药品的相应操作记录。点击“显示日志”按钮可查看所有操作记录。
5.9 数据维护
在系统管理界面点击“数据维护”按钮,即可激活系统数据维护面板。在上方文本框中输入超级用户密码,根据需要点选多项选择框并点击“确定”按钮,系统将首先检查用户的操作权限和操作合法性,然后进行相关操作,或提示拒绝操作。如连续三次没有提供正确的超级用户密码, “数据维护”功能会暂时被系统停用。
6 系统各主要模块功能部分编码设计
6.1数据库连接
在本系统中,只使用了一组ADO控件连接数据源。为保证程序的可移植性,要求能够动态连接数据库。以下是动态连接数据库的连接字符串的代码实现:
AnsiString strDBName,strPath; strDBName =
strPath += strDBName; strPath +=
Query1->Active = false;
Query1->ConnectionString = strPath;
Query1->Active = true;
同样地,Conn1也需要通过ExtractFilePath()函数获取数据库当前路径来设置它的ConnectionString。
6.2 药品录入
为了实现代码的重复使用,我将这个模块的代码写在一个自定义函数yaopinLuru()中。以下是代码的实现:
if(iflag != 1) //如果药品信息无误则在数据库中插入新记录 { strInsert =
} …… //此段代码为设置相应的SQL语句 strSql=
6.3 药品查询
药品查询引擎提供了多项条件查询和单项条件查询,为此,在连接数据库搜索相关记录之前,必须判断用户的查询过滤条件,以确定SQL语句的传递。以下是代码的实现: if(isign == 2 && aa != 1)//用户选择多项查询
{
if(flag1 == 1 && flag2 == 1) //查询条件为ID和名称
} { } if(flag1 == 1 && flag3 == 1) //查询条件为ID和分类 { } if(flag2 == 1 && flag3 == 1) //查询条件为名称和分类 { } if(flag1 == 1 && flag2 == 1 && flag3 == 1) //查询条件为ID、名称和分类 { } AnsiString str; str =
else //用户选择单项查询
{
if(flag1 == 1 && aa != 1) { } if(flag2 == 1 && aa != 1) { strSql =
} } …… //此段代码为设置相应的SQL语句 if(flag3 == 1 && aa != 1) { } …… //此段代码为设置相应的SQL语句
6.4 药品修改
本模块经过判断数据的规范性后,使用update的方法来更新数据库内容,以下是代码的实现:
AnsiString strSql; strSql =
6.5 出入库操作
系统通过判断单项选择按钮的选中状态来确定当前操作为入库操作或出库操作,以下是代码的实现:
if(SnRadioButton2->Checked == true) //入库操作
{
…… if(iflag != 1)
} { } kucun = kucun + num; strSql =
if(SnRadioButton1->Checked == true) //出库操作
{
}
…… if(iflag != 1) { } kucun = kucun - num; strSql =
6.6 数据维护
在数据维护模块中,系统根据用户是否提供了正确的超级管理员密码来判断其是否具有操作的权限。以下是清除系统注册用户的代码实现:
BaseForm->Query1->First(); for(int i = 0;i Query1->RecordCount;i++) { } strSql =
7 系统测试
软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键。其目的是想以最少的时间和人力找出软件中潜在的各种错误和缺陷。但是,任何项目的开发都要受到期限、费用、人力和机时等条件的限制,穷举测试是不可行的。为了节省时间和资源,提高测试效率,就必须精心设计测试用例,使得采用这些测试数据能够达到最佳的测试效果。
对于本软件的测试,我选择的是黑盒测试法中的等价类划分测试。在本系统中,所输入的数据必须遵循一定的规范性。如:用户名和密码的长度为6到12个字符,在测试时就输入一个小于6或大于12个字符的数据就可以达到目的。金额或数量方面只能输入数字,输入非数字字符(小数点除外)将会提示出错。
8 总结
在社会经济高速发展、信息一体化的今天,实现电子化的企业信息管理可以代替手工操作,确保数据的规范性、完整性和安全性。
本系统开发的目的就是希望能够被广泛应用在各个中小型药房、药店、门诊或诊所的独立药库,使其管理者能够脱离手工操作,在一个界面友好、操作简单的平台上动态地管理各种标准化的相关信息。
在经历了一系列系统开发的步骤后,我所选定的课题——《中小型药房管理系统》终于完成了,并且基本上实现了在需求分析阶段确定的各项功能,以及详细设计阶段确定的软件模型。其中,我最深刻的体会有两点:一、技术方面如编码设计,可以有很多实现的方法,在系统开发中应该力求编码的简洁和可读性的统一,为此,必须有针对性地练习,以提高自己编写代码的能力;二、无论技术如何纯熟,没有扎实的理论知识作为基础,想要开发出合理、合格的系统也是十分困难的。
致 谢
在毕业设计过程中,非常感谢黄富革老师和罗运贞老师在理论和实践方面的指导,同时还要感谢热心与我讨论技术实现方法,给我提供帮助的同学。在这里,对所有这些人都表示衷心的感激,谢谢!
参考文献
[1] 刘光.《C++Builder程序设计导学》.清华大学出版社.
.[2] 汪作文.《软件工程》重庆大学出版社.
[3] 微软公司.《SQL server 2000标准教程》中国劳动社会保障出版社. .