收藏 分销(赏)

学士学位论文--药品管理系统的设计与实现.doc

上传人:胜**** 文档编号:2799640 上传时间:2024-06-06 格式:DOC 页数:51 大小:2.43MB
下载 相关 举报
学士学位论文--药品管理系统的设计与实现.doc_第1页
第1页 / 共51页
学士学位论文--药品管理系统的设计与实现.doc_第2页
第2页 / 共51页
学士学位论文--药品管理系统的设计与实现.doc_第3页
第3页 / 共51页
学士学位论文--药品管理系统的设计与实现.doc_第4页
第4页 / 共51页
学士学位论文--药品管理系统的设计与实现.doc_第5页
第5页 / 共51页
点击查看更多>>
资源描述

1、药品管理系统的设计与实现目 录1 绪论11.1 课题研究背景11.2 系统开发的意义12 需求分析12.1 系统功能分析12.2 系统用例分析22.3 系统E-R图32.4运行环境32.5 可行性分析42.5.1技术可行性42.5.2 经济可行性43 系统概要设计43.1 功能模块设计43.2 概念结构设计53.2.1 实体属性图53.3 数据表设计94 系统详细设计与实现134.1 功能模块的具体实现134.1.1登录模块134.1.2 系统主界面设计154.1.3 用户管理模块164.1.4 修改密码模块184.1.5 药品信息管理模块204.1.6 入库登记模块224.1.7 销售登记模

2、块254.1.8药品退货模块274.1.9药品报损模块284.1.10药品调价模块294.1.11 报表中心界面304.1.12系统部分公有类或方法的设计与实现345系统测试355.1测试目标355.2测试大纲355.3测试结果及截图366 总结和致谢466.1 总结466.2 致谢467 参考文献47药品管理系统的设计与实现专业:计算机科学与技术 学 号:姓名: 指导老师:【内容摘要】社会在进步,随之而来的还有各种疾病,随着人们生活水平的不断提高,人们越来越重视自己的健康,这加速了医药行业的发展。在现在“看病难,看病贵”的社会背景下,很多工薪一族在面对一些小疾病的时候往往选择到附近的药店购买

3、非处方药进行治疗。在这种情况下,中小型便民药店越来越多,而中小型药店普遍存在药品管理混乱等问题,容易造成药品积压甚至失效,导致不必要的损失。本药品管理系统主要围绕药品管理来操作,根据需求,系统主要实现药品库存管理、销售管理两大业务,为用户提供任意时间段的药品库存查询,设置药品库存下限查询。同时还向用户提供了库存报表、销售报表、即将过期药品报表、利润报表等丰富的报表。系统使用Microsoft公司的Visual Studio 2010平台,采用 C#语言,结合SQL Server 2008数据库进行设计与实现。系统经过测试基本达到了预期的目标,操作界面较友好,操作方法简单,可以用于中小型药店的药

4、品管理。【关键词】 中小型药店;药品管理;C# 1 绪论1.1 课题研究背景药品管理系统可以为药店管理者提供充足的信息和快捷的查询手段。但一直以来很多中小型药店都使用传统手工的方式进行管理,这种管理方式存在着许多缺点,如效率低、数据易丢失等,容易造成药品积压甚至失效。另外时间一长,将产生大量的纸质版数据,这对于查询、修改都造成很大不便。使用计算机对药品进行管理相对于手工管理而言,具有很多优点。例如:查询方便快捷、数据存储量大等。这些优点能够极大地提高了药品管理的效率,也能更好地保证药品的效期安全,是对消费者负责的态度体现。因此,开发一套适用于中小型药店的药品管理系统管理软件很有必要。1.2 系

5、统开发的意义中国现在的医药体系还不成熟,药品管理系统也不成熟。在国内有很多软件公司开发药品管理系统,基本采用进销存模式,系统功能比较完善,但在安全、简捷、性能以及人性化设计方面还存在不足。2 需求分析2.1 系统功能分析药店的正常运转货源要得到保证,这就必须有着良好的进货入库管理功能,同时为了药品质量的保证,以及在未知药品销量时可以保证药店不至于积存大量的药品,对一些积存的药品进行合理的退货。作为药店盈利机构,药店的销售是非常重要,同时要求透明化,药店的入库单、销售单、退货信息都必须合理的记录统计。药品的存货是药店进行正常运行的保证同时合理的库存量更好的应对某些药品需求量的变化,同时记录药品出

6、库信息可以更好的反应药品的销售信息。在仓库中药品的储藏出现的损失,通过记录的信息可以精准核对药品量的信息。同时在仓库储存中应设置药品的库存下限,以便及时反映药品的信息,为药品进货提供可靠依据。1药品,是药店的资源。药品的管理直接影响药店的经营,药品管理做得不好会引起药品的混乱,容易导致药品失效,造成损失。为了维护消费者的利益和药店本身的信誉以及给药店创造更好的效益,本系统应具有以下功能:1. 良好的人机界面。2. 药品入库及调价管理。3. 药品销售及退货管理。4. 药品报损管理。5. 完善的数据查询。6. 丰富的报表。7. 数据导出到Excel、Word、PDF功能。2.2 系统用例分析根据系

7、统功能分析,可以将系统细分出药品信息管理、药店信息管理、修改密码、入库登记、药品调价、销售登记、药品退货、药品效期查询、药品报损、收入统计、支出统计、利润统计以及用户管理13个子模块,管理员应为药店负责人,从药品入库到销售以及中间的业务,管理员都可以使用,收银员可以使用部分功能,管理员用例图如图1所示,收银员用例图如图2所示。图1 管理员用例图图2 收银员用例图2.3 系统E-R图图3 系统E-R图2.4运行环境该系统采用了Client/Server模式软件构造技术,页面系统采用Visual Studio 2010开发,数据库采用SQL Server2008作为数据库系统,系统平台为Windo

8、ws 7。1. Microsoft Visual Studio 2010集成化程度高,控件丰富,开发人员可以直接将各种控件拖放到视图设计器,由软件自动生成控件设计以及窗体布局的设计代码,窗体视图设计更加方便高效2. Microsoft SQL Server 2008能方便地建立数据库对象,并且SQL Server 2008结合Visual Studio 2010和C#一起使用,能方便地对数据库对象进行数据操作。2.5 可行性分析2.5.1技术可行性1. 药店管理的主线是药品,药品从入库到出库以及其它操作即从药店流向消费者的过程,中间不用经过其他部门,没有繁琐的流程。加上到药店的了解,对于药品管

9、理系统的管理流程和管理内容都易于掌握。2. 作为计算机专业的学生,在平时的课程设计的基础上,加上自己的练习以及同学们的帮助,在系统实现上也是可行的。3. 计算机可以安装本系统所需的开发环境SQL Server 2008和Visual studio 2010。2.5.2 经济可行性1. 本系统主要面向中小型药店,处理的数据量不是很大,属于小型的系统,只需要购买打印机、电脑即可投入使用,成本低。2. 系统投入使用后可以很好地对药品进行管理,在给药店创造更好的效益的同时有效避免药品积压甚至失效的问题,减少药店损失。3 系统概要设计3.1 功能模块设计根据系统的需求分析可以将药品管理系统分为如下几个大

10、模块:登录模块基本信息模块、入库管理模块、销售管理模块,以及库存管理模块、利润统计模块和关于我们模块。整个系统以药品的主线,入库管理模块是把药品信息存入库存表,其它药品管理相关模块是从库存表取得数据进行业务处理,系统模块结构图如图3所示。图4 系统功能模块结构图3.2 概念结构设计3.2.1 实体属性图1. 药品实体属性图,如图5所示。药品的属性包括药品的基本信息,如药品编号、药品名称、拼音、药品规格、计量单位、库存低限等。其中药品编号可以唯一标识药品。图5 药品实体属性图 2. 药店实体属性图,如图6所示。药店实体包含药店名称、固定电话、手机、药店地址4个基本属性,作为药店标识并用于打印小票

11、。图6 药店实体属性图3. 药品入库单实体属性图,如图7所示。 药品与一般商品稍有不同,很多属性都关系到药品的安全,所以入库单包含很多属性,如入库编号、拼音码、药品名称、药品规格、计量单位、批号、批准文号、入库单价、入库数量、入库总额、入库时间、入库单位、生产厂家、生产日期、失效日期、操作员、备注等17个基本属性。其中入库编号可唯一标识药品入库信息。图7 药品入库单实体属性图4. 药品调价单实体属性图,如图8所示。药品调价单包含调价编号、入库编号、拼音码、药品名称、原单价、新单价、经办人、调价时间等基本属性。图8 药品调价单实体属性图5. 药品销售单实体属性图,如图9所示。药品销售单包含销售编

12、号、入库编号、拼音码、药品名称、药品规格、计量单位、生产厂家、销售时间、销售单价、销售数量、销售总额、操作员等基本属性。图9 药品销售单实体属性图6. 药品退货单实体属性图,如图10所示。药品退货单包含退货编号、入库编号、拼音码、药品名称、进货单位、进货单价、退货原因、退货时间、退货数量、退货总额、操作员等基本属性。图10 药品退货单实体属性图7. 药品报损单实体属性图,如图11所示。药品报损单包含报损编号、入库编号、拼音码、药品名称、进货单价、报损原因、报损时间、报损数量、报损总额、操作员等基本属性。图11 药品报损单实体属性图8. 用户实体属性图,如图12所示。用户实体包含用户编号、用户名

13、、密码、用户姓名、是否管理员5个基本属性。图12 用户实体属性图3.3 数据表设计本系统使用 SQL Server 2008作为后台数据库,在 SQL Server 2008中创建基本表对象。表对象要根据逻辑设计阶段设计的关系模式来创建。本系统创建的SQL数据库名称为DrugStore。包含以下9张表。1. Login(用户信息表)用户信息表用于用户信息,该表的结构如表1所示。表1用户信息表字段名数据类型长度备注说明u_idint4Not null用户编号(自动编号)usernamevarchar50主键用户名pwvarchar50Not null密码realnamevarchar50Not

14、null用户姓名adminvarchar50Not null是否管理员2. Store(药店信息表)药店信息表用于存储药店的信息,该表的结构如表2所示。表2药店信息表字段名数据类型长度备注说明storenamevarchar50Not null药店名称telvarchar50Not null固定电话mobilevarchar50手机addressvarchar50Not null药店地址3. Drug(药品信息表)药品信息表用于药品的基本信息,该表的结构如表3所示。表3药品信息表字段名数据类型长度备注说明idint4主键药品编号(自动编号)pinyinmavarchar50Not null拼音

15、码drugnamevarchar50Not null药品名称specvarchar50Not null药品规格unitvarchar50Not null计量单位lowwarningint4Not null库存低限4. Ruku(入库信息表)入库信息表用于存储药品进货入库的各项信息,该表的结构如表4所示。表4入库信息表字段名数据类型长度备注说明IDvarchar20主键入库编号(自动编号)pinyinmavarchar50Not null拼音码drugnamevarchar50Not null药品名称pihaovarchar50Not null批号pizhunwenhaovarchar50Not

16、 null批准文号specvarchar50Not null药品规格unitvarchar50Not null计量单位amountint4Not null进货数量inpricedecimal(18, 2)Not null进货单价allpricedecimal(18, 2)Not null进货总额in_timedatetimeNot null进货时间in_fromvarchar50Not null进货单位factoryvarchar50Not null生产厂家producedatedatetimeNot null生产日期usefuldatedatetimeNot null失效日期in_byvar

17、char50Not null操作员remarkvarchar50备注5. Kucun(库存信息表)库存信息表用于存储药品库存的各项信息,该表的结构如表5所示。表5库存信息表字段名数据类型长度备注说明IDvarchar20主键入库编号(自动编号)pinyinmavarchar50Not null拼音码drugnamevarchar50Not null药品名称factoryvarchar50Not null生产厂家specvarchar50Not null药品规格unitvarchar50Not null计量单位amountint4Not null入库数量pihaovarchar50Not nul

18、l批号pizhunwenhaovarchar50Not null批准文号lowwarningint4Not null库存低限inpricedecimal(18, 2)Not null进货单价sellpricedecimal(18, 2)Not null销售单价in_timedatetimeNot null入库时间producedatedatetimeNot null生产日期usefuldatedatetimeNot null失效日期in_byvarchar50Not null操作员6. Sell(销售信息表)销售信息表用于存储售出药品的信息,该表的结构如表6所示。表6销售信息表字段名数据类型长

19、度备注说明pinyinmavarchar50Not null拼音码drugnamevarchar50Not null药品名称factoryvarchar50Not null生产厂家sellpricedecimal(18, 2)Not null销售单价sellamountint4Not null销售数量allpricedecimal(18, 2)Not null销售总额s_idvarchar20Not null销售编号(自动编号)selltimedatetimeNot null销售时间sell_byvarchar50Not null操作员IDvarchar20Not null入库编号(自动编号)

20、specvarchar50Not null药品规格unitvarchar50Not null计量单位7. ReturnG(退货信息表)退货信息表用于存储退货的药品的各项信息,该表的结构如表7所示。表7退货信息表字段名数据类型长度备注说明r_idvarchar20主键退货编号(自动编号)ramountint4Not null退货数量totalpricedecimal(18, 2)Not null退货总额rtimedatetimeNot null退货时间return_byvarchar50Not null操作员reasonvarchar50Not null退货原因pinyinmavarchar50

21、Not null拼音码drugnamevarchar50Not null药品名称IDvarchar20Not null入库编号(自动编号)inpricedecimal(18, 2)Not null入库单价factoryvarchar50Not null进货单位8. Breakage(报损信息表)报损信息表用于存储已报损的药品的各项信息,该表的结构如表8所示。表8报损信息表字段名数据类型长度备注说明b_idvarchar20主键报损编号bamountint4Not null报损数量btimedatetimeNot null报损时间breakage_byvarchar50Not null操作员re

22、asonvarchar50Not null报损原因IDvarchar20Not null入库编号pinyinmavarchar50Not null拼音码drugnamevarchar50Not null药品编号inpricedecimal(18, 2)Not null入库单价allpricedecimal(18, 2)Not null报损总额9. Adjustprice(调价信息表)调价信息表用于存储药品调价的记录,该表的结构如表9所示。表9调价信息表字段名数据类型长度备注说明adjust_idvarchar20主键调价编号IDvarchar20Not null入库编号pinyinmavarc

23、har50Not null拼音码drugnamevarchar50Not null药品名称oldpricedecimal(18, 2)Not null原单价newpricedecimal(18, 2)Not null新单价adjust_timedatetimeNot null调价时间adjust_byvarchar50Not null操作员4 系统详细设计与实现4.1 功能模块的具体实现4.1.1登录模块为保证信息安全,设置必须进行识别用户才可进入系统主界面。用户名及密码其中任一个错误都会有相应的提示信息,并自动清空用户名和密码。只有两者全部正确后方可进入管理系统主界面。用户登录模块流程图如图

24、13所示。图13 用户登录模块流程图登录界面如图14所示。图 14 登录界面主要代码如下:public static string flagUsername = null; public static string flagPassword = null; public static string flagAdmin = null;private void btnLogin_Click(object sender, EventArgs e) string strUsn = this.userName.Text; string strPsw = this.txtpsw.Text; try Sql

25、Connection sc = new SqlConnection(server=.SQLEXPRESS;database=DrugStore;Trusted_Connection=true); string sqlstring = select * from Login where username= + strUsn + ; SqlCommand cmd = new SqlCommand(sqlstring, sc); sc.Open(); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read() if (drpw.ToString() =

26、 strPsw) this.DialogResult = DialogResult.OK; flagUsername = strUsn;/取得登录用户名 flagPassword = strPsw;/取得登录密码,用于修改密码时对比 flagAdmin = dradmin.ToString();/取得用户类型,是否管理员 else MessageBox.Show(密码错误!); dr.Dispose(); sc.Close(); else if (userName.Text = ) MessageBox.Show(请输入用户名); else MessageBox.Show(该用户名不存在);

27、dr.Dispose(); sc.Close(); catch (Exception ex) MessageBox.Show(点击按钮事件异常:n + ex.ToString(); this.userName.Text = null; this.txtpsw.Text = null; 4.1.2 系统主界面设计系统主界面中,点击左侧的不同按钮会在右侧的panel容器中显示不同的窗体,点击按钮时,会判断是否有权限,并且文字颜色会以红色突出显示,十分美观友好,系统功能都有很明显的入口。单击各功能按钮,会进入相应子窗口。如图15所示。图15 系统主界面把窗体显示到panel容器的代码(以利润统计按钮

28、为例):private void btnReport_Click(object sender, EventArgs e)/只有管理员有权限 if (frm_Login.flagAdmin = 管理员) if (panel3.Tag != null & panel3.Tag is Form) (Form)panel3.Tag).Close(); frm_Report form5 = new frm_Report(); form5.TopLevel = false; form5.Parent = panel3; panel3.Tag = form5; form5.Show(); else Mess

29、ageBox.Show(没有这个权限!); 按钮的文字颜色会以红色突出显示的代码(以利润统计按钮为例):private void btnReport_Enter(object sender, EventArgs e) this.label6.Visible = true; btnReport.ForeColor = Color.Red; private void btnReport_Leave(object sender, EventArgs e) this.label6.Visible = false; btnReport.ForeColor = Color.Blue; 4.1.3 用户管理

30、模块用户管理仅限管理员使用。用户管理模块中,在添加用户时,需填写用户名和姓名以及选择用户类型,用户编号自动生成,初始密码自动设为123456,如果添加的用户名已存在,则提示用户名已存在,不能添加,否则添加成功。另外,选定某一用户后,右键菜单有删除用户、重置密码、设为管理员、设为收银员四个选项,每个操作都设有相应提醒,以防误操作。用户管理模块流程图如图16所示。图16 用户管理模块流程图用户管理界面如图17所示。图17 用户管理界面主要代码如下:private void btnAdd_Click(object sender, EventArgs e) string str2 = txtUsern

31、ame.Text; string str3 = txtRealname.Text; string str4 = radioButtonAdmin.Text; string str5 = radioButtonCashier.Text; SqlConnection conn = GetConnection(); string strSelect = select count(*) from Login where username=username; SqlCommand commSelect = new SqlCommand(strSelect, conn); commSelect.Param

32、eters.Add(username, SqlDbType.VarChar).Value = str2; conn.Open(); if (Convert.ToInt32(commSelect.ExecuteScalar() = 0) string sqlstring = insert into Login(username,pw,realname,admin)values(username,pw,realname,admin); SqlCommand comn = new SqlCommand(sqlstring, conn); comn.Parameters.Add(username, S

33、qlDbType.VarChar).Value = str2; comn.Parameters.Add(pw, SqlDbType.VarChar).Value = 123456; comn.Parameters.Add(realname, SqlDbType.VarChar).Value = str3; if (radioButtonAdmin.Checked = true) comn.Parameters.Add(admin, SqlDbType.VarChar).Value = str4; if (radioButtonCashier.Checked = true) comn.Param

34、eters.Add(admin, SqlDbType.VarChar).Value = str5; comn.ExecuteNonQuery(); Binddgv(); else MessageBox.Show(该用户名已存在!); Clear(); conn.Close(); 4.1.4 修改密码模块修改密码时为了安全起见,需要输入登录密码。另外,新密码需要输入两次,两次输入相同则修改成功,以免用户输入出错而丢失密码。如图18所示。图18 修改密码界面主要代码如下:private void btnSave_Click(object sender, EventArgs e) string st

35、rNew = txtConfirm.Text; SqlConnection conn = GetConnection(); try if (txtOldpsw.Text = |txtOldpsw.Text!=frm_Login.flagPassword) MessageBox.Show(原密码错误!); else if (txtNewpsw.Text = | txtConfirm.Text = ) MessageBox.Show(密码不能为空!); else if (txtNewpsw.Text != txtConfirm.Text) MessageBox.Show(两次密码不一致!); tx

36、tNewpsw.Text = null; txtConfirm.Text = null; else SqlCommand cmd = new SqlCommand(update Login set pw=pw where username=username, conn); conn.Open(); cmd.Parameters.Add(username, SqlDbType.VarChar).Value = frm_Login.flagUsername; cmd.Parameters.Add(pw, SqlDbType.VarChar).Value = strNew; cmd.ExecuteNonQuery(); MessageBox.Show(修改成功!); conn.Close(); txtOldpsw.Text = null; txtNewpsw.Text = null; txtConfirm.Text = null;

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服