




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要传统的药房管理都是采取人工操作,手工记账,当药品进、销、存量越来越大时,就会增加人力成本,而且容易造成管理混乱,导致很多乱账、坏账、死账,使药房的发展难以为继。拥有一套比同行更为先进、快捷的管理系统,会给药房的发展带来极大的便利。本系统主要包括:员工管理模块、药品信息管理模块、客户信息管理模块、采购管理模块、销售管理模块、报损管理模块等。系统各模块功能介绍:员工管理模块只能由系统管理员操作,添加员工、编辑员工信息。药品信息管理模块主要用来记录需要入库的药品的基本信息,如药品编号、药品名称、药品价格等。客户信息管理模块用来保存、修改或删除供应客户和采购客户的基本信息。药品采购管理模块用来登记、查询或删除入库信息。药品销售模块主要记录药品的销售情况。报损管理模块主要用于药品损毁的登记、查询,如过期、破损等。本系统属于B/S结构,采用ASP.NET和SQLServer进行开发,使用VisualStudio作为开发工具,系统功能较完善。本系统能较好地满足药房需求,使管理者更加方便、快捷、有效地进行管理。关键词:惠民药店;药品管理系统;数据库;;sqlserver
绪论研究背景由于土地污染、食品不健康等原因,目前我国的各种疾病发病率处于高发阶段,而随着老龄化人口的不断攀升,老年人身体机能的衰退,伴随而来的就是对各种药品的旺盛需求。如今,国家又大力支持二胎政策,幼儿的免疫能力非常弱,容易感染各种疾病,家长也会不惜代价的护理好婴儿。此外,人们对于健康问题越来越重视,导致对预防性药物和保健性药品的使用大量增加。这些因素都导致了我国药品行业的蓬勃发展,也推动了药品的销售数量和额度。药品行业的快速发展引起了各种药品管理软件的兴起,但很多软件系统都不符合药房的实际应用。市场迫切需要一款专为零售药房使用的管理系统,这种系统能具有针对性,能满足药房的实际需求,对药品种类、药品信息、药品价格、药流通等方面都有高效的管理功能。惠民药店药品管理系统就是在这种背景下专为药房管理者所开发的一套软件。这种系统能够有效的避免药品管理混乱、账目出错等现象。它不仅可以对药品的出入库进行管理操作,还能对药品的附加信息、销售额、进行统计,也可以清点药品的损坏情况,以便及时报告,不会妨碍到药品的正常销售。研究内容本系统主要包括:员工、药品、客户、采购、销售、报损等方面的管理。1.员工管理模块只能由系统管理员操作,添加员工、编辑员工信息。2.药品信息管理模块用来添加药品的原有属性,如药品说明、药品价格等。3.客户管理模块用来保存、修改或删除客户。4.药品采购管理模块用来登记、查询或删除入库信息。药品销售模块主要记录药品的销售情况。5.报损管理模块主要用于药品损毁的登记、查询,如过期、破损等。系统管理员可以更改自己的登录密码。全文共分五章,本章为绪论,其余各章的内容安排如下:第二章,阐述了开发用到的技术,例如C#、CSS、HTML与数据库以及VisualStdio开发工具、MicrosoftSQLServer等。第三章,药房管理系统的概述、系统功能结构、流程图。整个系统结构有二个角色:一般职工和系统管理员。第四章,介绍了惠民药店药品管理系统的设计。包括各个模块的概述、E-R图、数据库表还有系统结构的设计。第五章,介绍了惠民药店药品管理系统的实现,实现的技术解释,功能描述。相关技术简介ASP.NET与C#简介ASP.NET是一个开放的开发编程平台,它提供了VB、C#等几种比较常见的开发语言。它还提供了.NET的Web窗体,使得编写Web页面就像编写VB窗体一样。Asp.Net工作原理是:浏览器向IIS服务器发出http请求,IIS服务器响应http请求,IIS调用下的数据操作,asp.mypage.aspx类继承自system.web.ui.page类,并实例化asp.mypage.aspx对象,向aspnet_isapi.dll发送html。C#是ASP.NET框架中的一种开发语言,它有很强的可塑性。C#具有一般编程语言的各项优点,具有灵活性,可移植性,很多代码可以重复利用。C#能运用Framework代码库提供的各种功能。B/S结构简介B/S结构,即浏览器/服务器模式,浏览器是客户端最重要的应用软件。这种模式开发简单、易于维护。只要在用户端安装一个浏览器,如FireFor或Chrome,另外再安装数据库,浏览器就可以通过服务器与数据库进行信息交互。CSS简介CSS——样式设计语言,控制HTML中的文本样式。具有非凡的编控能力。它具有较强的互动性与易读性。它控制者html中的字体样式如大小、颜色等,还有html中的布局、内容等,它与div结合是当前主流的页面表现方式。SQLServer2008的简介SQLServer2008数据库是一种存储数据的应用服务器。它可以对保存在这上的数据进行查询、修改、删除等之类的操作。无论何种数据存储在哪种设备上,从服务器到普通计算机或者移动设备,它都可以对数据进行控制。系统分析系统概述惠民药店药品管理系统是针对当前社会中零售药房而开发的一套软件系统。本系统采取模块化设计,用E-R图来分析该系统中的各种功能。职员管理包括:添加员工、编辑员工等。入库管理包括:登记、查询入库药品。库存管理包括:查询和修改库存药品等。药品采购管理包括:登记、查询或删除入库信息。报损管理包括:登记、查询损毁药品。系统功能结构功能结构图是对整个系统的功能进行分析后所画的图形、具有直观的视觉效果,看了结构图后,会对整个系统有了具体的印象,所有的功能也都了解清楚。采用这种画图方式可以对功能层层分解,分解的越详细,功能就越清晰,一个功能模块代表着这个程序中的一个处理过程。惠民药店药品管理系统由系统管理员、普通管理员组成。1.药品信息管理包括:药品类别管理、药品信息的添加、修改和删除和查询等。2.客户信息管理包括:供应客户和采购客户信息的添加修改和删除等。3.药品采购管理包括:登记、查询或删除入库信息。4.报损管理包括:登记、查询损毁药品。5.入库管理包括:登记、查询入库药品。6.库存管理包括:查询和修改库存药品等。7.系统管理员的功能增加了员工管理模块,即对普通管理员进行增、删、改、查的综合管理,并可以对管理员的密码进行修改。系统流程图系统流程图是整个系统的实现过程,它给开发者提供了一种思路,也是软件设计之初就要完成的一个任务。它用图表的方式直接呈现给开发者和使用者,使读者对整个流程和功能一目了然。一个大的项目必须要有系统流程图作为指导,程序员根据流程图来编写代码,实现各功能,最终完成产品。惠民药店药品管理系统设计系统设计的概述系统由普通管理员和系统管理员组成。普通管理员的功能包括:公司信息设置,药品信息管理,客户信息管理,采购管理,销售管理,报损管理。系统管理员的功能包括:添加员工,编辑员工。药品信息管理包括:药品登记,药品查询。客户管理包括:供应客户信息添加,供应客户信息管理,采购客户信息添加,采购信息管理。销售管理包括:销售登记,销售查询。报损管理包括:报损登记,报损查询。系统数据库表的结构及E-R图数据库逻辑结构设计实体与实体之间的联系,是整个系统结构的逻辑思维。如何设计它们之间的关系至关重要,这些实体所包含的不同属性,形成一种数据流,实现交互的作用。根据以上所述设计出下列实体关系。管理员实体E-R图如图4-1所示。员工员工姓名密码密码姓名密码密码图4-1管理员实体ER图员工实体E-R图如图4-2所示。员工员工密码姓名密码姓名图4-2员工实体ER图药品实体ER图如图4-3所示。药品信息药品信息生产厂家批次药品编号药品名称生产厂家批次药品编号药品名称图4-3药品实体信息实体ER图药品入库实体ER图如图4-4所示。药品入库信息药品入库信息入库价格数量药品名称药品编号入库价格数量药品名称药品编号图4-4药品入库信息ER图药品出库实体ER图如图4-5所示。药品出库信息药品出库信息价格数量药品名称编号价格数量药品名称编号图4-5药品出库信息实体ER图药品报损实体ER图如图4-6所示。报损报损药品编号药品名称供应商数量药品编号药品名称供应商数量图4-6药品报损信息实体ER图系统E-R图E—R图,即实体-关系图,是描述数据实体之间的关系的一种表示方式,根据E—R图可以更加直观的看出数据表的结构以及表与表之间的关系。惠民药店药品管理系统总体E-R图如图4-7所示。图4-7惠民药店药品管理系统E-R图系统数据表设计系统采用SQLServer2008数据库,如下是各表的组织结构:1.alllb(药品类别表)药品类别表主要用来保存编号(ID)、药品类别名(lb)、添加时间(addtime)、管理员(addby)。药品类别表结构如表4-1所示。表4-1药品类别表alllb的结构字段名注释类型长度是否主键是否不为空ID编号INT4√√lb药品类别名VARCHAR20addtime添加时间DATETIMEaddby管理员VARCHAR502.allpro(药品表)药品表主要用来保存编号(ID)、药品名称(mc)、药品类别名(lb)、采购价(price1)、销售价(price2)、药品功能(content)、药品图片(fn)、药品添加时间(addtime)、管理员(addby)、药品编号(bh)、生产批号(ggxh)、供应商(gys)、计量单位(dw)。药品表结构如表4-2所示。表4-2药品表allpro的结构字段名注释类型长度是否主键是否不为空ID编号INT4√√mc药品名称VARCHAR50√lb药品类别名VARCHAR20√price1采购价FLOAT√price2销售价FLOAT8√content药品功能VARCHAR500√fn药品图片VARCHAR20√addtime药品添加时间DATETIME50√addby管理员VARCHAR50√bh药品编号VARCHAR50√ggxh生产批号VARCHAR50√gys供应商VARCHAR50√dw计量单位VARCHAR50√3.allusers(用户表)用户表主要用来保存编号(ID)、用户名(username)、用户密码(pwd)、角色(cx)、添加时间(addtime)。用户表结构如表4-3所示。表4-3用户表allusers的结构字段名注释类型长度是否主键是否不为空ID编号INT4√√username用户名VARCHAR50√pwd用户密码VARCHAR50√cx角色VARCHAR50√addtime添加时间DATETIME√4.dx(公司设置表)公司设置表主要用来保存标题(title)、内容(content)。公司设置表结构如表4-4所示。表4-4公司设置表dx的结构字段名注释类型长度是否主键是否不为空title标题VARCHAR50√content内容TEXT√5.baosun(报损表)报损表表主要用来保存编号(ID)、药品名称(promc)、建议采购价(price)、实际进货价(rkprice)、供应商(gys)、报损数量(bssl)、备注(memo)、添加时间(addtime)。报损表结构如表4-5所示。表4-5报损表baosun的结构字段名注释类型长度是否主键是否不为空ID编号INT4√√promc药品名称VARCHAR50√price建议采购价FLOAT√rkprice实际进货价FLOAT√gys供应商VARCHAR50√bssl报损数量FLOAT√memo备注VARCHAR255√addtime添加时间DATETIME√6.kh(客户表)客户表主要用来保存编号(ID)、客户编号(bh)、姓名(xm)、地址(addr)、身份证号(sfz)、性别(gender)、电话(tel)、添加时间(addtime)、邮编(postcode)、开户银行(bank)、银行账号(bankno)、补充说明(memo)、关系(lx)。客户表结构如表4-6所示。表4-6客户表kh的结构字段名注释类型长度是否主键是否不为空ID编号INT4√√bh客户编号VARCHAR50xm姓名VARCHAR50√addr地址VARCHAR50√sfz身份证号VARCHAR20√gender性别VARCHAR2√tel电话VARCHAR50√addtime添加时间DATETIME√postcode邮编VARCHAR50√bank开户银行VARCHAR50√bankno银行账号VARCHAR50√memo补充说明VARCHAR255√lx关系VARCHAR50√7.kucun(库存表)评价表主要用来保存编号(ID)、药品名称(promc)、价格(price)、数量(shuliang)、添加时间(addtime)、供应商(gys)、入库价格(rkprice)、生产批次(ggxh)、计量单位(dw)、药品编号(bh)。库存表结构如表4-7所示。表4-7库存表kucun的结构字段名注释类型长度是否主键是否不为空ID编号INT4√√promc药品名称VARCHAR50√price价格FLOAT50√shuliang数量INT4√addtime添加时间DATETIME50√gys供应商VARCHAR50√rkprice入库价格FLOAT√ggxh生产批次VARCHAR50√dw计量单位VARCHAR50√bh药品编号VARCHAR50√8.ruku(入库表)入库表主要用来保存编号(ID)、药品名称(tittle)、价格(price)、数量(shuliang)、添加时间(addtime)、供应商(gys)、入库价格(rkprice)、生产批次(ggxh)、计量单位(dw)、药品编号(bh)。入库表结构如表4-8所示。表4-8入库表ruku的结构字段名注释类型长度是否主键是否不为空ID编号INT4√√promc药品名称VARCHAR50√price价格FLOAT50√shuliang数量INT4√addtime添加时间DATETIME50√gys供应商VARCHAR50√rkprice入库价格FLOAT√ggxh生产批次VARCHAR50√dw计量单位VARCHAR50√bh药品编号VARCHAR50√9.tuihuo(退货表)退货表主要用来保存编号(ID)、药品名称(promc)、价格(price)、入库价格(rkprice)、供应商(gys)、退货数量(thsl)、退货原因(memo)、添加时间(addtime)。退货表记录了客户退货的时间原因,是整个数据库中较为重要的一张表。管理员根据退货记录查看退货数据,来决定药品的销售退货情况,以便判断哪种药品不再适合进货,减少药房金额损失。退货表结构如表4-9所示。表4-9退货表tuihuo的结构字段名注释类型长度是否主键是否不为空ID编号INT4√√promc药品名称VARCHAR50√price价格FLOAT√rkprice入库价格FLOAT√gys供应商VARCHAR50√thsl退货数量FLOAT√memo退货原因VARCHAR255√addtime添加时间DATETIME√10.xiaoshou(销售表)销售表主要用来保存编号(ID)、药品名称(promc)、价格(price)、入库价格(rkprice)、供应商(gys)、销售数量(xssl)、出库价格(ckprice)、备注(memo)、添加时间(addtime)。销售表结构如表4-10所示。表4-10销售表xiaoshou的结构字段名注释类型长度是否主键是否不为空ID编号INT4√√promc药品名称VARCHAR50√price价格FLOAT√rkprice入库价格FLOAT√gys供应商VARCHAR50√xssl销售数量FLOAT√ckprice出库价格FLOAT√memo备注MEMO255√addtime添加时间DATETIME√11.zfcg(支付采购表)支付采购表主要用来保存编号(ID)、药品编号(bh)、付款日期(fkdate)、支付金额(je)、管理员(addby)、付款方式(fkfs)、客户名称(khmc)、补充说明(memo)。支付采购表结构如表4-11所示。表4-11支付采购表zfcg的结构字段名注释类型长度是否主键是否不为空ID编号INT4√√bh药品编号VARCHAR50√fkdate付款日期DATETIME√je支付金额FLOAT√addby管理员VARCHAR50√fkfs付款方式VARCHAR50√khmc客户名称VARCHAR50√memo补充说明TEXT√惠民药店药品管理系统的实现数据库连接配置数据库在软件开发中起着非常重要的作用,其作用是保存开发数据。本系统采用MicrosoftSQLServer2008数据库,A与数据库连接主要代码如下:<configuration><appSettings><addkey="cn"value="DataSource=.;InitialCatalog=nthm;IntegratedSecurity=True"/></appSettings><connectionStrings/><system.web><globalizationrequestEncoding="GB2312"responseEncoding="GB2312"/><compilationdebug="true"/><authenticationmode="Windows"/><pagesvalidateRequest="false"/></system.web></configuration>系统主界面系统主界面是整个系统的呈现页面,左侧采用TreeNode控件实现树形二级分支结构,一级是大的功能模块,二级结构是各大模块下的子模块,右侧是各功能内容展示。首页界面如图5-1所示。图5-1系统主界面系统登录登录界面用form表单完成,里面包含两个table,第一个用来显示项目名称,第二个用来显示用户名、密码和登录等标签,背景放置一张图片。系统管理员的用户名和密码先添加到数据库中,然后由系统管理员在程序后台对员工进行添加维护等,管理员在业面点击登录按钮onclick触发后台判断用户名和密码是否正确,若正确则进入首页。登录界面如图5-2所示。图5-2管理员登录界面登录处理过程如图5-3所示。用户登录用户登录登录页面错误登录系统根据权限进入管理功能模块正确没有输入输入密码判断是否正确图5-3登录处理过程员工管理模块添加员工添加员工界面用table放置用户名、密码、确认密码,系统管理员有权限添加员工,页面点击按钮触发后台Page_Load方法判断管理员有没有权限进行添加,如果是系统管理员,则执行Button1_Click方法中的SQL库语句,向数据库中添加员工信息。点击重置按钮触发reset方法把、密码、确认密码文本框清空,以便重新输入。添加员工这个页面可以对员工进行新增。当管理员选择员工这个大类时,程序马上就会在后台获取所选员工大类的编号。然后通过这个id去数据库查询Class表中这个类别下的所有二级类别。然后把Class表中这个类别下的所有二级类别数据取出再返回到后台。再把数据绑定到页面里的DropDownList控件中。然后就可以选定要添加的员工的二级类别。在编辑具体的员工时,这里用到了Fck控件。这个控件的使用使编辑员工内容更便捷,还可以设置员工字体的格式和插入图片。使内容看起来更加的美观。点击添加成功的话,弹框提示成功。添加员工界面如图5-4所示。图5-4添加员工界面编辑员工编辑员工界面由div和dategrid,div用来显示标题,datagrid显示管理员各属性,dategrid具有排序、分页、多列显示,TemplateColumn自定义字段,点击此字段时,弹出一个对话框,datagrid从后台sql语句取得数据并显示,在后台Page_Load事件中刷新数据。系统管理员可以对所有用户进行编辑。点击删除栏时,当行所有信息都会删除,并实时刷新显示。这个页面用于对员工的更新和维护。它也可以修改到员工信息所属的一级类别。当选中员工这个大类别时,程序就会马上在后台获取到所选员工的大类的编号。然后通过这个编号去数据库查询Class表中这个类别下的所有二级类别。然后把Class表中这个类别下的所有二级类别数据取出再返回到后台。再把数据绑定到页面里的DropDownList控件中。然后就可以选定要修改的员工的二级类别。当所有要修改的数据填写好后,点击更新,成功的话会弹出成功提示框。编辑员工界面如图5-5所示。图5-5编辑员工界面公司信息设置公司信息设置由一系列td和webeditor呈现,由于是文本显示,所以才用webeditor显示公司信息,webeditor是一个文本编辑域,适合编辑较多文本时使用。点击按钮触发事件,Button1_Click事件修改数据表语句,然后后台刷新数据,前台显示新设置信息。点击重置按钮触发reset方法把webeditor内置空,以便重新输入。公司信息设置用来显示公司向员工发布的信息。公司信息设置界面如图5-6所示。图5-6公司信息设置界面药品信息管理模块系统管理员和普通管理员都有权对药品信息进行维护。维护包括添加、删除、修改等。维护功能集中在一个界面中,方便操作。药品类别管理要添加药品得先添加药品类别,以方便对药品进行归类,也可以对药品类别进行修改和删除。药品添加和修改删除放在同一页面,用两个table放置,datagrid显示药品类别各属性,dategrid具有排序、分页、多列显示,TemplateColumn自定义字段,点击此字段时,弹出一个对话框,datagrid从后台getdata方法中判断有无数据,sql语句取得数据并显示,在后台Page_Load事件中刷新数据。添加药品类别用table放置,有添加和重置按钮,点击添加按钮时触发后台Btn_Onclick方法打开数据库,执行sql添加语句insert进行插入数据,添加成功后,会有提示框弹出,之后,类别列表里会有新添加的那个类别。点击点击重置按钮触发reset方法把所填文本框全部置空,以便重新输入。第二个table放置对药品类别的更新和维护。它也可以修改到药品类别所属的一级类别。当选中药品类别这个大类别时,程序就会马上在后台获取到所选药品类别的大类的编号。然后通过这个编号去数据库查询Class表中这个类别下的所有二级类别。然后把Class表中这个类别下的所有二级类别数据取出再返回到后台。再把数据绑定到页面里的DropDownList控件中。然后就可以选定要修改的药品类别的二级类别。当所有要修改的数据填写好后,点击更新,成功的话会弹出成功提示框。药品类别管理界面如图5-7所示。图5-7药品类别管理界面药品信息添加录入药品基本信息,其中药品类别已经存在,故用了DropDownList下拉列表,方便用户选择,将DataReader读取的数据动态绑定到DropDownList。上传药品图片用到了FileUpload控件。用户找到本地文件路径选择图片,上传到服务器。主治功能用了最常用的textbox文本框,通过后台执行sql插入语句,添加到数据库。添加药品类别用table放置,有添加和重置按钮,点击添加按钮时触发后台Btn_Onclick方法打开数据库,执行sql添加语句insert进行插入数据,添加成功后,会有提示框弹出,之后,类别列表里会有新添加的那个类别。点击点击重置按钮触发reset方法把所填文本框全部置空,以便重新输入。药品信息添加这个页面可以添加药品信息。当管理员选择药品这个大类时,程序马上就会在后台获取所选药品大类的编号。然后通过这个id去数据库查询Class表中这个类别下的所有二级类别。然后把Class表中这个类别下的所有二级类别数据取出再返回到后台。再把数据绑定到页面里的DropDownList控件中。然后就可以选定要添加的药品信息的二级类别。在编辑具体的药品内容时,这里用到了Fck控件。这个控件的使用使编辑员工内容更便捷,还可以设置药品内容字体的格式和插入图片。使内容看起来更加的美观。点击添加成功的话,弹框提示成功。药品添加信息界面如图5-8所示。图5-8药品信息添加界面药品信息管理药品信息管理有基本的搜索功能,采用模糊查询方式,方便用户快速查找所要的药品信息,点击搜素按钮,触发后台searchkey_Click方法会显示所要查询的所有相似信息,显示药品信息同样用到了datagrid,datagrid从后台sql语句取得数据并显示,在后台Page_Load事件中刷新数据。另外,用到了自定义字段asp:TemplateColumn来显示药品图片,添加时间是调用系统时间,实时添加并显示。点击搜索按钮触发后台Btn_Onclick方法,连接数据库,执行sql语句select进行搜索,对数据库查询,如果查询成功,会在datagrid列表中显示。用table放置对药品的更新和维护。它也可以修改到药品所属的一级类别。当选中药品这个大类别时,程序就会马上在后台获取到所选药品的大类的编号。然后通过这个编号去数据库查询Class表中这个类别下的所有二级类别。然后把Class表中这个类别下的所有二级类别数据取出再返回到后台。再把数据绑定到页面里的DropDownList控件中。然后就可以选定要修改的药品的二级类别。当所有要修改的数据填写好后,点击更新,成功的话会弹出成功提示框。药品管理界面如图5-9所示。图5-9药品信息管理界面药品信息修改药品编号对应的下拉列表绑定其他属性,选定一个编号,其他信息会自动显示,点击添加按钮触发后台执行sql语句修改数据并保存到数据库。修改后的信息可以在药品库存列表里看到。DropDownList是下拉框,用来显示药品类别,管理员可从中选择一种类别来操作。用table放置对药品的更新和维护。它也可以修改到药品所属的一级类别。当选中药品这个大类别时,程序就会马上在后台获取到所选药品的大类的编号。然后通过这个编号去数据库查询Class表中这个类别下的所有二级类别。然后把Class表中这个类别下的所有二级类别数据取出再返回到后台。再把数据绑定到页面里的DropDownList控件中。然后就可以选定要修改的药品的二级类别。当所有要修改的数据填写好后,点击更新,成功的话会弹出成功提示框。点击修改按钮触发后台Btn_Onclick方法,连接数据库,执行sql语句update进行修改,修改数据库中得内容,如果修改成功,有提示框弹出,并会在药品信息datagrid列表中显示。药品信息修改界面如图5-10所示。图5-10药品信息修改界面库存查询库存列表用来显示库存药品信息,根据药品编号或名称搜索某种药品库存数量等,也可以搜索某段时间内库存药品信息。起始日期和终止日期都用来DropDownList来让用户选择时间,后台Page_Load方法控制日期,库存信息同样用datagrid显示,datagrid从后台sql语句取得数据并显示,在后台Page_Load事件中刷新数据。其中,打印库存数据表单用到了javascript:window.print()事件。PagerStyle自动分页功能,如果数据很多,就会分页显示。点击某行删除栏,会触发后台getdata方法调用sql语句改变库存数量,删除当前行的库存记录,并刷新显示。点击搜索按钮触发后台Btn_Onclick方法,连接数据库,执行sql语句select进行搜索,对数据库查询,如果查询成功,会在datagrid列表中显示。用table放置对药品库存的更新和维护。它也可以修改到药品库存所属的一级类别。当选中药品库存这个大类别时,程序就会马上在后台获取到所选药品库存的大类的编号。然后通过这个编号去数据库查询Class表中这个类别下的所有二级类别。然后把Class表中这个类别下的所有二级类别数据取出再返回到后台。再把数据绑定到页面里的DropDownList控件中。然后就可以选定要修改的药品库存的二级类别。当所有要修改的数据填写好后,点击更新,成功的话会弹出成功提示框。库存查询界面如图5-11所示。图5-11库存查询界面采购管理模块入库登记药品编号对应的下拉列表DropDownList绑定其他属性,选定一个编号,其他信息会自动显示,点击添加按钮触发后台执行sql语句插入数据到数据库。点击重置按钮触发reset方法把所填文本框全部置空,以便重新输入。入库登记用table放置,有添加和重置按钮,点击添加按钮时触发后台Btn_Onclick方法打开数据库,执行sql添加语句insert进行插入数据,添加成功后,会有提示框弹出,之后,类别列表里会有新添加的那个类别。点击点击重置按钮触发reset方法把所填文本框全部置空,以便重新输入。入库登记这个页面可以对药品入库进行登记。当管理员选择入库登记这个大类时,程序马上就会在后台获取所选入库登记大类的编号。然后通过这个id去数据库查询Class表中这个类别下的所有二级类别。然后把Class表中这个类别下的所有二级类别数据取出再返回到后台。再把数据绑定到页面里的DropDownList控件中。然后就可以选定要添加的入库登记的二级类别。入库登记界面如图5-12所示。图5-12入库登记界面入库查询入库列表用来显示库存药品信息,根据药品编号或名称搜索某种药品入库信息,也可以搜索某段时间内入口药品信息。起始日期和终止日期都用DropDownList控件实现来让用户可以选择时间,入库信息同样用datagrid显示。PagerStyle自动分页功能,如果数据很多,就会分页显示。点击某行删除栏,会触发后台getdata方法调用sql语句改变库存数量,删除当前行的入库记录,并刷新显示。点击搜索按钮触发后台Btn_Onclick方法,连接数据库,执行sql语句select进行搜索,对数据库查询,如果查询成功,会在datagrid列表中显示。用table放置对药品入库的维护。它也可以修改到药品入库所属的一级类别。当选中药品入库这个大类别时,程序就会马上在后台获取到所选药品入库的大类的编号。然后通过这个编号去数据库查询Class表中这个类别下的所有二级类别。然后把Class表中这个类别下的所有二级类别数据取出再返回到后台。再把数据绑定到页面里的DropDownList控件中。然后就可以选定要修改的药品入库的二级类别。当所有要修改的数据填写好后,点击删除,删除成功的话会弹出成功提示框。日期搜索的下拉列表采用for循环方式设置,序号采用自动增长的方式实现。Getdata方法查询datagrid表里有没有数据,如果存在数据,就全部显示。入库查询界面如图5-13所示。图5-13入库查询界面退货登记药品编号对应的下拉列表DropDownList绑定其他属性,选定一个编号,其他信息会自动显示,这是触发promc_SelectedIndexChanged方法调用sql查询语句实现的。点击添加按钮触发后台执行sql语句使数据库中数量减少。退货登记这个页面可以对药品入库进行登记。当管理员选择退货登记这个大类时,程序马上就会在后台获取所选退货登记大类的编号。然后通过这个id去数据库查询Class表中这个类别下的所有二级类别。然后把Class表中这个类别下的所有二级类别数据取出再返回到后台。再把数据绑定到页面里的DropDownList控件中。然后就可以选定要添加的入库登记的药品。退货登记用table放置,有添加和重置按钮,点击添加按钮时触发后台Btn_Onclick方法打开数据库,执行sql添加语句insert进行插入数据,添加成功后,会有提示框弹出,之后,类别列表里会有新添加的那个类别。点击点击重置按钮触发reset方法把所填文本框全部置空,以便重新输入。退货登记界面如图5-14所示。图5-14退货登记界面退货查询退货列表datagrid显示药品类别各属性,dategrid具有排序、分页、多列显示,TemplateColumn自定义字段,点击此字段时,弹出一个对话框,datagrid从后台sql语句取得数据并显示,在后台Page_Load事件中刷新数据。用table放置对药品入库的维护。它也可以修改到药品入库所属的一级类别。当选中药品入库这个大类别时,程序就会马上在后台获取到所选药品入库的大类的编号。然后通过这个编号去数据库查询Class表中这个类别下的所有二级类别。然后把Class表中这个类别下的所有二级类别数据取出再返回到后台。再把数据绑定到页面里的DropDownList控件中。然后就可以选定要修改的药品入库的二级类别。当所有要修改的数据填写好后,点击删除,删除成功的话会弹出成功提示框。PagerStyle自动分页功能,如果数据很多,就会分页显示。点击某行删除栏,会触发后台getdata方法调用sql语句改变库存数量,删除当前行的退货记录,并刷新显示。点击搜索按钮触发后台Btn_Onclick方法,连接数据库,执行sql语句select进行搜索,对数据库查询,如果查询成功,会在datagrid列表中显示。退货查询界面如图5-15所示。图5-15退货查询界面支付采购货款采购药品需要付款,付款日期用DropDownList下拉列表让用户可以选择,点击添加按钮,通过onclick事件触发后台Button1_Click执行数据操作,向数据库表中添加数据。支付货款用table放置,有添加和重置按钮,点击添加按钮时触发后台Btn_Onclick方法打开数据库,执行sql添加语句insert进行插入数据,添加成功后,会有提示框弹出。点击点击重置按钮触发reset方法把所填文本框全部置空,以便重新输入。支付采购货款界面如图5-16所示。图5-16支付采购货款界面销售管理模块销售登记药品名称对应的下拉列表DropDownList绑定其他属性,选定一个名称,其他对应信息会自动显示,点击添加按钮触发后台执行sql语句插入数据到数据库。销售登记这个页面可以对药品入库进行登记。当管理员选择销售登记这个大类时,程序马上就会在后台获取所选销售登记大类的编号。然后通过这个id去数据库查询Class表中这个类别下的所有二级类别。再把数据绑定到页面里的DropDownList控件中。然后就可以选定要添加的入库登记的药品。销售登记用table放置,有添加和重置按钮,点击添加按钮时触发后台Btn_Onclick方法打开数据库,执行sql添加语句insert进行插入数据,添加成功后,会有提示框弹出。点击点击重置按钮触发reset方法把所填文本框全部置空,以便重新输入。销售登记界面如图5-17所示。图5-17销售登记界面销售查询销售列表用来显示药品销售信息,根据药品名称搜索某种药品销售信息,也可以搜索某段时间内入口药品信息。起始日期和终止日期都用来DropDownList让用户可以选择,销售信息也采用datagrid显示。由于数据较多,采用分页显示。点击某行删除栏,会触发后台getdata方法调用sql语句改变库存数量,删除当前行的退货记录,并刷新显示。Gatedataa方法调用class1类中的断语句查询datagrid表中有无数据并显示。Page_Load方法是刷新数据。日期搜索用for循环实现年月日的时间下拉选择。用table放置对药品销售的维护。它也可以修改到药品销售所属的一级类别。当选中药品销售这个大类别时,程序就会马上在后台获取到所选药品销售的大类的编号。然后通过这个编号去数据库查询Class表中这个类别下的所有二级类别。然后把Class表中这个类别下的所有二级类别数据取出再返回到后台。再把数据绑定到页面里的DropDownList控件中。然后就可以选定要删除的药品入库的销售记录。当所有要修改的数据填写好后,点击删除,删除成功的话会弹出成功提示框。PagerStyle自动分页功能,如果数据很多,就会分页显示。点击某行删除栏,会触发后台getdata方法调用sql语句改变库存数量,删除当前行的退货记录,并刷新显示。点击搜索按钮触发后台Btn_Onclick方法,连接数据库,执行sql语句select进行搜索,对数据库查询,如果查询成功,会在datagrid列表中显示。销售查询界面如图5-18所示。图5-18销售查询界面报损管理模块报损登记所有管理员都可以进行报损登记,报损信息都放置在table表里,药品名称对应的下拉列表绑定其他属性,选定一个名称,其他对应信息会自动显示,点击添加按钮触发后台执行sql语句插入数据到数据库。点击重置按钮触发reset方法把所填文本框全部置空,以便重新输入。报损登记这个页面可以对药品入库进行登记。当管理员选择报损登记这个大类时,程序马上就会在后台获取所选报损登记大类的编号。然后通过这个id去数据库查询Class表中这个类别下的所有二级类别。再把数据绑定到页面里的DropDownList控件中。然后就可以选定要添加的报损登记的药品。报损登记用table放置,有添加和重置按钮,点击添加按钮时触发后台Btn_Onclick方法打开数据库,执行sql添加语句insert进行插入数据,添加成功后,会有提示框弹出。点击点击重置按钮触发reset方法把所填文本框全部置空,以便重新输入。报损登记界面如图5-19所示。图5-19报损登记界面报损管理报损列表datagrid显示药品类别各属性,dategrid具有排序、分页、多列显示,TemplateColumn自定义字段,点击此字段时,弹出一个对话框,datagrid从后台sql语句取得数据并显示,在后台Page_Load事件中刷新数据。由于数据较多,采用分页显示。PagerStyle自动分页功能,如果数据很多,就会分页显示。点击某行删除栏,会触发后台getdata方法调用sql语句改变库存数量,删除当前行的退货记录,并刷新显示。Gatedata方法调用class1类中的断语句查询datagrid表中有无数据并显示。用table放置对药品报损的维护。它也可以修改到药品销售所属的一级类别。当选中报损这个大类别时,程序就会马上在后台获取到所选报损的大类的编号。然后通过这个编号去数据库查询Class表中这个类别下的所有二级类别。然后把Class表中这个类别下的所有二级类别数据取出再返回到后台。再把数据绑定到页面里的DropDownList控件中。然后就可以选定要删除的报损记录。当所有要修改的数据填写好后,点击删除,删除成功的话会弹出成功提示框。点击搜索按钮触发后台Btn_Onclick方法,连接数据库,执行sql语句select进行搜索,对数据库查询,如果查询成功,会在datagrid列表中显示。报损管理界面如图5-20所示。图5-20报损查询界面修改密码模块这个功能只有系统管理员拥有,系统管理员有权限对所有员工的密码进行修改,table里放文本框textbox输入新旧密码,并两次输入新密码,以确认密码安全,点击修改按钮触发后台Button1_Click方法验证用户名和密码,再执行sql语句对密码进行修改,修改成功后会有提示对话框。点击返回按钮触发后台Button13_Click方法,用Redirect进行页面跳转,回到修改页面。修改密码界面如图5-21所示。图5-21修改密码
结束语信息技术的发展给我们的生活带来了便捷,而软件系统的使用,使我们在面对繁琐的管理工程时,不会捉襟见肘。经过这段时间的不懈奋斗,惠民药店药品管理系统的设计顺利完成。经测试证明,该系统是完全可以正常运行并投入到现实当中使用的。在整个系统的开发过程中,我对软件开发这个行业有了进一步的认识。软件开发并不是拿到一个项目就立刻去开发产品,敲出代码,而是要做好编程前的准备工作。熟悉各种开发工具、开发技术以及数据库知识。软件开发出来后并不能马上投入使用,还要进行测试。测试结束后,这个软件才是一个合格的产品。致谢首先,要感谢我的导师,论文是在老师的亲切关怀和悉心指导下完成的。在老师的帮助与引导下,我掌握了很多专业的基础理论知识,锻炼了自己的能力,开阔了我的学习视野与眼界。老师非常关心学生,为我解决了学习上的许多疑惑,在此谨向老师致以诚挚的谢意和崇高的敬意。其次,还要感谢我的父母,他们给予我无微不至的关怀与支持,给予我充分的物质保障和精神鼓励,支持我完成学业,增强面对生活和挫折的勇气与信心。最后,还要感谢我的同学,衷心感谢他们给予我工作和学习中的支持、信任与帮助,我将永远铭记于心。参考文献[1]宋锋,刘瑞歌.基于C#的小型药店药品管理系统的设计与实现[J].滨州学院学报,2017,33(2):7.[2]杨玲.医药连锁店药品管理系统的设计与实现[D].电子科技大学,2016.[3]张红军.某药店管理系统的设计与实现[J].C/s模式,药店管理,数据库,2015.[4]庞旭东.药品销售管理系统的设计与实现[D].吉林大学,2017.[5]宋晓利.药品进销存管理系统的设计与实现[D].山东大学.[6]王世明,李丹丹.药品销售管理系统的设计与实现[J].产业与科技论坛,2015(5):2.[7]杨舒.药房管理系统的设计与实现[D].吉林大学.[8]王子琳.基于JSP的药房管理系统的设计与实现[D].中国海洋大学,2014.[9]姜代红,蒋秀莲.数据库原理及应用实用教程[M].北京:清华大学出版社,2013.[10]钱雪忠.数据库原理及应用[M].北京:北京邮电大学出版社,2013.[11]蒋秀英.SQLServer2000数据库与应用[M].北京:清华大学出版社,2013.[12]廖新彦.ASPNET交互式Web数据库设计[M].北京:中国铁道出版社,2013.[13]朱玉超,鞠艳,王代勇.ASP.NET项目开发教程[M].北京:电子工业出版社,2013.[14]尚俊杰,秦卫中.ASP.NET程序设计案例教程[M].北京:清华大学出版社,2013.[15]陈伟.SQLServer2005数据库应用与开发教程[M].北京:清华大学出版社,2013.
附录附录1药品类别添加主要代码:protectedvoidButton1_Click(objectsender,EventArgse){DataSetresult=newDataSet();result=newClass1().hsggetdata(sql);if(TextBox1.Text.ToString().Trim()!=""){stringsql;sql="insertintoalllb(lb,addby)values('"+TextBox1.Text.ToString().Trim()+"','"+Session["username"].ToString().Trim()+"')";intresult;result=newClass1().hsgexucute(sql);if(result==1){Response.Write("<script>javascript:alert('添加成功');location.href='lb_add.aspx';</script>");}else{Response.Write("<script>javascript:alert('系统错误');</script>");}}else{Response.Write("<script>javascript:alert('请填写完整');</script>");}}药品入库主要代码:protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){bh.Items.Add("请选择");stringsql;sql="selectbhfromallproorderbyiddesc";getdata(sql);}}privatevoidgetdata(stringsql){DataSetresult=newDataSet();result=newClass1().hsggetdata(sql);if(result!=null){if(result.Tables[0].Rows.Count>0){intk=0;for(k=0;k<result.Tables[0].Rows.Count;k++){bh.Items.Add(result.Tables[0].Rows[k]["bh"].ToString().Trim());}}}}protectedvoidButton1_Click(objectsender,EventArgse){stringsql;sql="select*fromkucunwherebh='"+bh.SelectedItem.ToString().Trim()+"'";DataSetresult=newDataSet();result=newClass1().hsggetdata(sql);if(result!=null){if(result.Tables[0].Rows.Count>0){sql="updatekucunsetshuliang=shuliang+"+shuliang.Text.ToString().Trim()+"wherebh='"+bh.SelectedItem.ToString().Trim()+"'";}else{sql="insertintokucun(bh,ggxh,dw,promc,price,shuliang,gys,rkprice)values('"+bh.SelectedItem.ToString().Trim()+"','"+ggxh.Text.ToString().Trim()+"','"+dw.Text.ToString().Trim()+"','"+promc.Text.ToString().Trim()+"',"+price.Text.ToString().Trim()+","+shuliang.Text.ToString().Trim()+",'"+gys.Text.ToString().Trim()+"',"+rkprice.Text.ToString().Trim()+")";}}intresult2;result2=newClass1().hsgexucute(sql);sql="insertintoruku(bh,ggxh,dw,promc,price,shuliang,gys,rkprice)values('"+bh.SelectedItem.ToString().Trim()+"','"+ggxh.Text.ToString().Trim()+"','"+dw.Text.ToString().Trim()+"','"+promc.Text.ToString().Trim()+"',"+price.Text.ToString().Trim()+","+shuliang.Text.ToString().Trim()+",'"+gys.Text.ToString().Trim()+"',"+rkprice.Text.ToString().Trim()+")";if(result2==1){Response.Write("<script>javascript:alert('操作成功!');</script>");}else{Response.Write("<script>javascript:alert('系统错误,您输入了非法字符’);</script>");}}药品入库列表主要代码:protectedvoidButton1_Click(objectsender,EventArgse){stringsql;sql="select*fromrukuwhere1=1";if(mc.Text.ToString().Trim()!=""){sql=sql+"andpromclike'%"+mc.Text.ToString().Trim()+"%'";}if(bh.Text.ToString().Trim()!=""){sql=sql+"andbhlike'%"+bh.Text.ToString().Trim()+"%'";}if(CheckBox1.Checked){sql=sql+"andaddtimebetween'"+nian.SelectedItem.ToString().Trim()+"-"+yue.SelectedItem.ToString().Trim()+"-"+ri.SelectedItem.ToString().Trim()+"'and'"+nian2.SelectedItem.ToString().Trim()+"-"+yue2.SelectedItem.ToString().Trim()+"-"+ri2.SelectedItem.ToString().Trim()+"'";}sql=sql+"orderbyiddesc";getdata(sql);}protectedvoidDataGrid1_PageIndexChanged(objectsource,DataGridPageChangedEventArgse){stringsql="select*fromrukuorderbyiddesc";getdata(sql);DataGrid1.CurrentPageIndex=e.NewPageIndex;DataGrid1.DataBind();}退货登记主要代码:privatevoidgetdata(stringsql){DataSetresult=newDataSet();result=newClass1().hsggetdata(sql);if(result!=null){if(result.Tables[0].Rows.Count>0){intk=0;for(k=0;k<result.Tables[0].Rows.Count;k++){promc.Items.Add(result.Tables[0].Rows[k]["promc"].ToString().Trim());}}}}protectedvoidButton1_Click(objectsender,EventArgse){stringsql;sql="insertintotuihuo(promc,price,rkprice,gys,thsl,memo)values('"+promc.SelectedItem.ToString().Trim()+"',"+price.Text.ToString().Trim()+","+rkprice.Text.ToString().Trim()+",'"+gys.Text.ToString().Trim()+"',"+thsl.Text.ToString().Trim()+",'"+memo.Text.ToString().Trim()+"')";intresult;result=newClass1().hsgexucute(sql);sql="updatekucunsetshuliang=shuliang+"+thsl.Text.ToString().Trim()+"wherepromc='"+promc.SelectedItem.ToString().Trim()+"'";result=newClass1().hsgexucute(sql);if(result==1){Response.Write("<script>javascript:alert('添加成功|');</script>");}else{Response.Write("<script>javascript:alert('系统错误,您没有设置好数据库的连接');</script>");}}publicvoidbtnRest_Click(objectsender,EventArgse){thsl.Text=string.Empty;memo.Text=string.Empty;}protectedvoidpromc_SelectedIndexChanged(objectsender,EventArgse){stringsql;sql="select*fromkucunwherepromc='"+promc.SelectedItem.ToString().Trim()+"'";getdata2(sql);}privatevoidgetdata2(stringsql){DataSetresult=newDataSet();result=newClass1().hsggetdata(sql);if(result!=null){if(result.Tables[0].Rows.Count>0){price.Text=result.Tables[0].Rows[0]["price"].ToString().Trim();shuliang.Text=result.Tables[0].Rows[0]["shuliang"].ToString().Trim();rkprice.Text=result.Tables[0].Rows[0]["rkprice"].ToString().Trim();gys.Text=result.Tables[0].Rows[0]["gys"].ToString().Trim();}}}药品退货列表主要代码:privatevoidgetdata(stringsql){if(result!=null){if(result.Tables[0].Rows.Count>0){k=0;j=0;for(k=0;k<result.Tables[0].Rows.Count;k++){j=j+int.Parse(result.Tables[0].Rows[k]["thsl"].ToString().Trim());}}else{DataGrid1.DataSource=null;DataGrid1.DataBind();}}附录2药品信息修改主要代码:privatevoidgetdata(stringsql){DataSetresult=newDataSet();result=newClass1().hsggetdata(sql);if(result!=null){if(result.Tables[0].Rows.Count>0){mc.Text=result.Tables[0].Rows[0]["mc"].ToString().Trim();lb.Text=result.Tables[0].Rows[0]["lb"].ToString().Trim();je.Text=result.Tables[0].Rows[0]["price1"].ToString().Trim();je2.Text=result.Tables[0].Rows[0]["price2"].ToString().Trim();content.Text=result.Tables[0].Rows[0]["content"].ToString().Trim();bh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公共汽车能源消耗定额运算示例
- 瓜蒌绿色高效栽培技术
- 2025浙江联盟乳房旋切针类医用耗材集中带量采购中选产品中选产品清单及协议量明细
- 保养鞋子知识培训课件
- 植物病害的防治与研究试题及答案
- 保洁防控培训课件内容
- (一模)2025年广东省高三高考模拟测试 (一) 英语试卷(含官方答案及详解)
- 如何提升国际物流职业素养的试题及答案
- 针对性备考CPSM试题及答案分享
- 精准分析CPSM考试试题及答案
- 【科教版】五年级下册课件【【科教版】六年级下册2-5《相貌各异的我们》】
- 浙江省2018版计价依据建筑面积计算规则解读变化
- 颈椎骨折伴脊髓损伤护理查房
- 工业建筑设计统一标准2023年
- 2023年安徽职业技术学院单招职业适应性测试题库及答案解析
- 广州国际创新城南岸起步区控制性详细规划
- 新BOOK3-Unit-4-Imagination-and-Creativity想象力和创造力
- 新教科版五下科学2-2《用浮的材料造船》课件
- FZ/T 25001-1992工业用毛毡
- 2023年郑州铁路职业技术学院单招职业技能考试笔试题库及答案解析
- 工程开工令模板
评论
0/150
提交评论