药品销售管理系统设计方案.docx
《药品销售管理系统设计方案.docx》由会员分享,可在线阅读,更多相关《药品销售管理系统设计方案.docx(23页珍藏版)》请在冰点文库上搜索。
药品销售管理系统设计方案
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2011年春季学期
数据库课程设计
题目:
药品销售管理系统
专业班级:
姓名:
学号:
指导教师:
成绩:
摘要2
序言3
第一章系统分析4
1.1问题描述4
1.2系统流程图5
1.3数据流程图6
1.4数据字典7
第二章系统总体设计8
2.1数据库概念设计(E-R图)8
2.2总体软件设计图9
2.3数据表的设计9
2.4关系模型及关系图(DrugSell)11
第三章详细设计12
3.1数据库连接、登陆模块及主菜单12
3.2信息查询模块12
3.3管理模块13
第四章系统测试13
4.1测试方法13
4.2测试用例13
4.3用户销售分析18
第五章软件使用说明书18
总结19
参考文献1
致谢2
附件Ⅰ部分原程序代码1
摘要
随着我国市场经济的蓬勃发展,近年来医药行业发展迅速。
由于品种类不断增加和需求的日益旺盛,旧有的企业管理模式已不能适应新型企业的需要。
靠手工记账进行药品的进、销、存的管理已经明显力不从心。
如何利用现代信息技术使企业拥有快速、高效的市场反应能力和更高的效率是医药经营企业关心的问题。
目前我国的大型药店很多采用了计算机管理,但是大部分中小型药店还以手工管理为主,主要原因是缺少相应的软件支持。
部分小型药店采用大型医药管理软件,开发一套药店信息管理系统,可以让职工和消费者最快速度了解到药品信息,并方便药品的存储和管理。
本系统的目的就是要开发一套方便药品销售存储和管的。
关键词:
PowerBuilder;SQL语言;数据库设计;药店管理信息系统设计
序言
在人类跨入21世纪之际,席卷全世界的信息化浪潮正在全球范围内轰轰烈烈的上演,它已经深刻地渗透到现代社会的各个领域:
通讯、经济、技术、政治等等。
在医疗卫生领域,信息化概念的引入,尤其是医院信息系统的应用,大大改变了医院的管理模式和工作流程,对提高医院的管理水平、质量效益、经济效益、社会效益起到了巨大地促进作用。
药品销售管理系统是目前一个医药公司不可缺少的部分,所以药品销售管理系统应该能够为药品销售的决策者和管理者提供充足的信息,快捷的查询手段和有效的管理方式。
但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:
效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
随着科学技术的不断提高,计算机科学技术日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对药品销售信息进行管理,具有用手工管理所无法比拟的优点。
例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高药品销售管理的效率,也是科学化、正规化管理,与世界接轨的重要条件。
第一章系统分析
1.1问题描述
现今药品销售管理的繁琐给具有强烈时间观念的药品销售人员带来了诸多不便,面对庞大的信息量,为了减轻销售管理人员的工作负担,就要有药品销售管理系统来提高药品销售工作的效率。
通过这样的系统,可以做到药品销售信息的规范管理,科学统计和快速查询,从而减少管理方面的工作量。
通过分析现有系统,发现种种细节之处并不尽如人意。
用户应该需要一个功能完善,特点突出,操作便利,具有相当的分析和预测能力的管理信息系统。
具体要求如下:
1、要求订单、出库单等一次输入,自动显示,自动生成报表,并能按用户要求打印单据和报表。
2、要求查询方便、快捷,能够按时间和业务种类统计。
3、因为各级管理人员对业务的操作不尽相同,所以要求有用户登录及权限管理功能。
4、操作员对计算机并不精通,所以要求本系统能尽量简化操作,使输入单据的过程尽量与真实单据的输入过程相似,使操作过程简单易懂,明白易学。
5、由于本软件用的Visualc++的API进行界面设计和和数据库的连接,显得比较复杂,在实现用户的要求方面还是有些不足,我们特意为管理员提供了一种实现功能不足的是通过输入SQL语句来实现不足的功能的方法,这种有个缺点,就是管理必须熟悉SQL语句和数据库。
为此,我们着手开发本软件,力求通过本软件,能帮助管理人员利用计算机快速方便的对药品销售信息进行输入、输出、查找、修改的各种操作,使散乱的药品销售信息能够更加的具体化,直观化。
1.2系统流程图
经过调查分析,并且依据用户的要求,我们确定系统的基本功能和工作流程如下:
图1.1系统流程图
1.3数据流程图
首先,客户将订货要求以订单形式送交企业业务部门,业务部门将订单进行录入,并依据客户往来账目来确定是否接收该客户的订单。
订单经审核批准后,将发货通知送交发货部门,同时储存订单记录。
之后,发货部门发出出货凭证,同时向客户发出出货通知,并根据客户支付情况储存相关账目。
如图1.2
图1.2第一层DFD图
订单审核:
图1.3
开发货单:
图1.4
1.4数据字典
数据字典是描述系统流程图中所有数据流、数据存储、处理功能等信息的集合,其包括4种条目;数据流、数据结构、数据项。
建立完善的数据字典是对所收集、整理的数据的一种分析归档方式,为下一步建立数据库和处理数据做准备。
药品销售管理系统数据字典卡片如下所示:
第二章系统总体设计
2.1数据库概念设计(E-R图)
(1)药品实体属性图
(2)客户实体属性图
(3)用户密码属性图
(4)系统实体联系图
2.2总体软件设计图
图2.1总体设计图
2.3数据表的设计
1、客户表的设计(Customer)
客户表用来保存所有客户的信息,包括的数据项有:
客户代码、名称、联系人,地址、电话,手机,传真,邮编,E-mail,税号,开户行,账号,信誉度等。
2.药品表的设计(Drug)
药品表用来保存药品的所有信息,包括的数据项有:
药品代码、商品名称、
剂型、产地、规格、价格、保质期等。
3、客户订单表的设计(CustomIndent)
客户订单表用来保存客户订单信息,包括数据项有:
订单号,客户代码,经手人,日期,[出/入库]等信息。
4、药品订单表的设计(DrugIndent)
药品订单用来保存一个客户订单中各种药品的相关信息,包括数据项有:
订单号,药品代码,数量等。
5、仓库表的设计(Storage)
仓库表用来保存各种药品在仓库中的数量及成本信息,包括数据项有:
药品代码,总数量,成本价等。
2.4关系模型及关系图(DrugSell)
1、关系模型:
客户(客户代码,名称,联系人,地址,电话,手机,传真,邮编,E-mail,税号,开户行,账号,信誉度)
发货单(订单号,客户代码,经手人,日期,出/入库)
药品订单(订单号,药品代码,数量)
药品(药品代码,药品名称,剂型,产地,规格,单价,保质期)
仓库(药品代码,总数量,成本价)
用户密码(用户名,密码)
2、关系图(如下)
第三章详细设计
详细设计阶段的根本目标是确定应该如何具体地实现所要求的系统。
3.1数据库连接、登陆模块及主菜单
1.数据库连接
本系统采用PB形式的数据库,在打开PB时打开相应的工作空间,然后打开tools->datebasepainter连接数据库。
2.系统登陆窗口
在系统登录窗口,不同的用户可以使用自己的密码登录进主菜单。
3.系统主菜单
软件的所有功能都在此界面实现,普通用户跟管理员看到的界面外观没有什么不同,只是功能有一些差别。
具体就是普通用户只能进行简单查询,而管理员可以进行数据库的修改以及直接进行SQL查询。
3.2信息查询模块
点击【信息查询】按钮,可以选择【药品信息查询】以及【客户信息查询】,管理员可以点击任何一个对药品的信息或者客户的信息进行详细的查询。
按【退出】就可以返回到主菜单,进行更多的选择。
3.3管理模块
点击【销售管理】,【进货管理】,【库存管理】,【系统管理】这四个按钮可以得到不同的管理模块,在这些模块中可以选择添加、删除等操作,只是每次操作都要进行保存。
这四个窗口提供信息的图形化显示,使这些信息更直观的表现在管理者的面前,从而合理的作出是否进货的决定。
第四章系统测试
4.1测试方法
程序测试包括正确性测试、运行速度与存储空间的调试、使用简便性的调试,在系统测试中使用最多的方法是黑箱法和白箱法。
在本系统的系统测试中,前期主要使用白箱法测试,在系统的统调测试中主要用到黑箱法。
由于目前软件设计已经到了调试阶段,所以下面测试用例系采用黑箱法测试,而结构测试由于分布在软件设计的整个过程中且比较散乱,所以在此省略结构测试的测试用例。
4.2测试用例
(1)登陆测试
若输入的用户名和密码正确,且用户属于管理员组,则会进入管理员界面。
若用户属于一般用户组,则可进入一般用户界面。
倘若用户名或密码输入错误,则会弹出提示,停止程序的运行,等待用户的再次输入。
(2)主菜单
(3)药品信息查询测试
该窗口给管理员提供了药品的基本信息,包括药品代码,药品名称,剂型,产地,规格,单价,保质期。
(4)客户信息查询
该窗口给管理员提供了客户的基本信息,包括客户代码,名称,联系人,地址,电话,手机,传真,邮编,E-mail,税号,开户行,账号,信誉度。
若所填客户代码不在客户信息表里,则系统会提示用户输入客户信息,若客户类别为供货商且添加的药品代码不在药品信息表内,同样提示用户输入药品信息,而如果客户类别为零售商且添加的药品代码不在药品信息或药品数量不足,则告诉客户订货失败,提示用户重新选择药品。
同时为了方便用户添加订单,在选择药品时的列表框内为用户提供了目前库存每种药品的总数量,当数量不足是会出现错误提示。
当添加订单成功后,看是否有一个成功提示的对话框提示。
(5)销售管理测试
在这些模块中可以选择添加、删除等操作,只是每次操作都要进行保存。
(6)进货管理测试
在这些模块中可以选择添加、删除等操作,只是每次操作都要进行保存。
(7)库房管理
在此窗口中可以输入要查询的号码,就可以查询到符合条件的信息。
(8)操作员管理测试
在此窗口可以增加操作人员。
4.3用户销售分析
本系统提供了销售利润率,和纯收入二个分析数据,通过点击销售信息里可以查看纯收入,可以通过订单表内的销售数目和单价以及成本价判定是否正确。
公式:
纯收入=数目*(单价-成本价)。
销售利润率在销售分析里能够查询到。
通过对表里数据的计算来和看到的结果是否一致,如果一直这证明销售分析正确。
第五章软件使用说明书
点击运行程序,会弹出登录对话框,用户名是08250325密码是111,就可以登录,以用户登录会失去一些执行修改的权利。
如果以管理员登录,则需要登录密码,而且可以修改数据库以及直接执行SQL语句。
登录后就显示下面的主界面,会提供很多查询以及修改信息。
点击每一个按钮就会弹出相应的信息。
可以根据信息以及测试的步骤进行需要的操作。
总结
虽然曾经对PB和SQLSever2000这两个开发工具有所了解,但是首次用VisualC++和SQLSever2000开发这样一个管理系统,并且仅仅凭借指导教师的指导和参考书本上的知识进行设计,时间也非常短,因此课程设计的难度很大,通过努力,终于完成了本次设计,虽然程序在结构、功能上还存在一些问题和不足,但是通过设计、思考、请教,收获很大。
通过此次设计,本人对PB和SQLSever2000有了更深一步的认识,将书本上的一些程序设计的知识运用到了实际中,基本具备了用计算机解决工作中实际问题的能力。
对VisualC++的窗体对象、窗体控件对象、数据环境对象和数据控件及其基本属性基本上能够正常运用,并且使用这些工具进行一般的事务处理和软件的设计。
在设计的过程中,我深深地感到了PB和SQLSever2000的博大精深,由于是第一次开发这样一个管理系统,在设计过程中仅用到了一些基本的功能,因此必然会出现程序代码不够精炼等情况。
在今后的设计中,将进一步解决目前仍然存在的一些问题,同时有必要对代码进行完善,提高程序的健壮性。
今后若有机会,可以先充实软件的功能,然后在有条件的情况下,将所有的数据库转移到服务器上,实行客户/服务器的管理模式,增加对系统出错处理模块的管理,以及实现Internet方面的功能开发。
计算机技术的高速发展,使我深深地认识到只有不断地加强学习,才能在计算机技术方面不至于被淘汰。
今后,我还要加强计算机软件开发方面的学习,努力使自己成为一位计算机软件开发专业人员,为社会开发出实用性强且价格低廉的软件。
参考文献
[1]初小璐.完全掌握SQLServer2000[M]机械工业出版社,2004
[2]JeraodV.Post.数据库管理系统(英文版.第三版)[美]清华大学出版社,2006.1
[3]张海藩.软件工程导论[M].北京:
清华大学出版社,1998.1
[4]谢希仁.计算机网络(第二版)[M].北京:
电子工业出版社,2003.6
[5]戴志诚,赵国峰.JSP信息化系统建设案例[M].北京:
人民邮电出版社,2006.12
[6]成晓静,毕靖.网页设计三剑客完全学习手册[M].北京:
中国电力出版社,2004.11
[7]赵强.精通JSP编程[M].北京:
电子工业出版社,2006.3
[8]萨师煊,王珊.数据库系统概论[M].北京:
高等教育出版社,2002.2
[9]王永皎.PowerBuilder数据库应用开发教程(第二版):
北京:
清华大学出版社,2007.8
致谢
感谢我的很多同学,在我在编程中、在调试程序中遇见很多挫折时,遇见不懂的问题时,是他们给了我帮助,使我不至于卡在某一环节处,毫无进展。
感谢教授我《数据库》的庞淑侠老师以及相关课程的老师们,没有他们的教导就没有今天的这个课程设计,是他们让我从以前对数据库知识一无所知到现在能完成一个小型软件的设计的转变。
最后,要感谢的是我的指导老师——李明老师,他对我认真而负责的态度感染着我,使我认识到自己的薄弱处,和对知识的掌握不够,还是不够灵活,努力让自己以后加强这方面的理论知识,培养良好的编程习惯和兴趣,更让我知道做一个软件不是一蹴而就的,是要下苦工夫的,是要用心去做的,这样才能做出一个令大家令自己满意的的软件来。
附件Ⅰ部分原程序代码
//登陆界面的代码
ifsle_1.text=""then
messagebox("警告","请输入用户名!
")
else
ifsle_1.text="08250325"then
ifsle_2.text="111"then
open(w_main)
close(parent)
else
messagebox("提示","密码有误,请重新输入!
")
sle_2.setfocus()
endif
elseifsle_1.text="user"then
ifsle_2.text="0"then
open(w_main)
close(parent)
else
messagebox("提示","密码输入有误,请重新输入!
!
")
sle_2.setfocus()
endif
endif
endif
//关闭窗口
close(parent)
//保存到excel文件中的代码
oleobjectole_object,ole_workbooks
ole_object=createoleobject
ifole_object.connecttonewobject("excel.dl")<>0then
messagebox('OLE错误','OLE无法连接')
return
endif
ole_object.workbooks.add
ole_object.visible=true
ole_workbooks=ole_object.worksheets
(1)
ole_workbooks.cell(1,1).value="药品代码"
ole_workbooks.cell(1,2).value="药品名称"
ole_workbooks.cell(1,3).value="药品剂型"
ole_workbooks.cell(1,4).value="产地"
ole_workbooks.cell(1,5).value="规格"
ole_workbooks.cell(1,6).value="单价"
ole_workbooks.cell(1,7).value="保质期"
longl_row
forl_row=2todw_1.rowcount()
ole_workbooks.cell(l_row,1).value=dw_1.getitemstring(l_row,1)
ole_workbooks.cell(l_row,2).value=dw_1.getitemstring(l_row,2)
ole_workbooks.cell(l_row,3).value=dw_1.getitemstring(l_row,3)
ole_workbooks.cell(l_row,4).value=dw_1.getitemstring(l_row,4)
ole_workbooks.cell(l_row,5).value=dw_1.getitemstring(l_row,5)
ole_workbooks.cell(l_row,6).value=dw_1.getitemstring(l_row,6)
ole_workbooks.cell(l_row,7).value=dw_1.getitemstring(l_row,7)
next
ole_workbooks.saveas("d:
\pbfiles\pb_yaopin.xls")
ole_object.quit()
ole_object.disconnectobject()
destroyole_object
destroyole_workbooks
//
dw_1.SetTransObject(SQLCA)
dw_1.Retrieve()
//查询代码
stringsqla
strings
sqla="select*from仓库where药品代码="+'%s%'
dw_1.settransobject(sqlca)
ifdw_1.setsqlselect(sqla)=1then
dw_1.settransobject(sqlca)
dw_1.retrieve()
else
messagebox("提示","数据检索失败")
return
endif
//重置
dw_1.Setsqlselect(oldsql)
dw_1.Retrieve()
//添加
dw_1.settransobject(sqlca)
dw_1.retrieve()
longrow
row=dw_1.insertrow(0)
dw_1.setfocus()
dw_1.scrolltorow(row)
//删除
longn_row
dw_1.deleterow(0)
n_row=dw_1.getrow()
dw_1.selectrow(0,false)
dw_1.selectrow(n_row,true)
//保存
dw_1.update()
ifsqlca.sqlcode=0then
messagebox("提示","保存成功!
")
endif