《学位论文-—医药连锁管理系统库存管理.doc》由会员分享,可在线阅读,更多相关《学位论文-—医药连锁管理系统库存管理.doc(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、摘 要 本文主要介绍药品信息管理系统的开发。药品信息管理系统是在Windows7平台下,以微软公司的Microsoft Visual Studio 2010 为工具开发出来的系统,实现了药店信息的计算机管理。该系统由药品信息入库、出库、销售、订单生成、药品信息查询、药品信息管理功能模块组成,系统可按各种方式查询数据,打印和预览药品价格、入库药品清单等,使药品信息管理系统从纯手工中解脱出来,实现药品管理系统简单化、规范化、合理化、科学化,其实用性强,用户界面友好。另外,由于医药产品种类繁多,销售模式特殊,业务量大,单凭手工记账已很难适应工作的需要。医药作为一个关系人们健康的特殊行业,国家对医药行
2、业又有一些不同与其他行业的管理政策,这些都加大了管理的难度。如何尽快建立和完善现代企业的信息化管理机制问题,已成为医药企业发展的关键所在。关键词:药品信息管理系统 计算机管理 开发AbstractThis paper presents a review of the development of pharmaceutical information management system. Drug information management system is in Windows platform, Microsofts Microsoft Visual Studio 2010 as the
3、 tool developed by the system, realized the pharmacy information computer management. The system by the drug information inbound, outbound, sales, order generated, medicine, information query, drug information management function modules, system according to various ways to query data, print preview
4、 and drug list price, inventory, etc., make the drug information management system from pure manual, implement drug simplification and standardization, rationalization, scientific management system, its practicability is strong, user friendly interface.In addition, because there are many different k
5、inds of pharmaceutical products, sales model, special business big, manual bookkeeping alone has been difficult to adapt to the needs of work. Medicine as a special industry, a relationship between peoples health state for the pharmaceutical industry and there are some different with other industry
6、management policies, these are even more difficult for management. How to establish and perfect modern enterprise informatization management mechanism as soon as possible, has become the key to the development of the pharmaceutical enterprise.Keywords: drug information management system computer man
7、agement and development目录1、 绪论41.1前言41.2研究现状42、相关理论与技术62.1相关技术(计算机技术对系统的支持)62.2 C#和ASP技术简介62.3 三层架构技术简介62.4 SESSION技术简介83、需求分析与系统设计93.1 需求分析93.1.1 总店子系统需求分析93.1.2 分店子系统需求分析93.2 系统的概要设计103.2.1 开发环境103.2.2系统实现功能目标103.2.3 系统权限设计113.2.4 关键功能活动图133.3 数据库设计设计153.3.1 E/R设计153.3.2 数据库关系图163.3.3 数据库表结构174、系统
8、实现详细设计194.1 数据库操作模块的实现194.2 库存管理模块的实现214.2.1 库存变更操作的实现214.2.2 库存变更列表的实现244.2.3 库存详细变更列表实现304.2.4 查看库存的实现305、总结331 绪论1.1前言随着我国市场经济的蓬勃发展和人们对医药产品需求的迅速增加,医药行业正处于一个高速发展的时期。行业的快速发展必然导致竞争的加剧,要想在激烈的市场竞争中谋求发展,客观上要求企业必须加强内部管理,提高运营效率。另外,由于医药产品种类繁多,销售模式特殊,业务量大,单凭手工记账已很难适应工作的需要。医药作为一个关系人们健康的特殊行业,国家对医药行业又有一些不同与其他
9、行业的管理政策,这些都加大了管理的难度。如何尽快建立和完善现代企业的信息化管理机制问题,已成为医药企业发展的关键所在。目前市场上流行较多的医药管理系统,在处理采购,销售,财务管理等方面都具有比较强的应用价值,也就是说这些软件的设计主要的针对对象是医药公司的中下层实际操作人员和管理人员。同时如果公司的上层高级管理人员需要用计算机对公司状况进行分析,管理,决策时,则需要另外的相关软件,这样就会增加开支。我们就是在这样的形式环境下,开发一种同时兼有以上两种功能的医药管理系统,以适应市场发展的需要。1.2研究现状发达国家医院药品进存销系统的开发实现已有三十多年的历史,至今有了长足的进步,有许多举世公认
10、的成功的系统在医院药品有效地运转着。像盐湖城LDS医院药品的HELP系统,麻省总医院药品的COSTAR系统,退伍军人管理局的DHCP系统。医院药品进存削系统(的主要目标是支持医院药品的行政管理与事务处理业务,减轻事务处理人员的劳动强度,辅助医院药品管理,辅助高层领导决策,提高医院药品的工作效率,从而使医院药品能够以少的投入获得更好的社会效益与经济效益,像财务系统、人事系统、药品库存管理系统等就属于管理系统的范围。但是,无论外国还是中国,当一个医院药品的医院药品管理系统刚刚起步时,往往是首先建立医院药品进存削系统。支持医院药品进存销系统的计算机技术较为单纯和简单。由于医院药品进存削系统以处理文字
11、和数字类数据为主,较少涉及声音、图象、多媒体数据的动态传递等复杂需求,因此实现起来容易得多。就是说,以较少的投入,获得较大的收益。医院药品管理信息系统的主要目标是支持医院药品的行政管理与事务处理业务,减轻事务处理人员的劳动强度,辅助医院药品管理,辅助高层领导决策,提高医院药品的工作效率,从而使医院药品能够以少的投入获得更好的社会效益与经济效益,像财务系统、人事系统、药品库存管理系统等就属于管理系统的范围。但是,无论外国还是中国,当一个医院药品的医院药品管理系统刚刚起步时,往往是首先建立医院药品管理信息系统。在国外,发达国家医院药品管理系统的开发实现已有三十多年的历史,至今有了长足的进步,有许多
12、举世公认的成功的系统在医院药品有效地运转着。像盐湖城LDS医院药品的HELP系统,麻省总医院药品的COSTAR系统,退伍军人管理局的DHCP系统。纵观美国的医药库房发展历史,大约可分为三个阶段:第一个十年,集中在开发医院药品行政管理的功能上,像财务收费管理管理等。但到1972年Collen仍报告美国迄今为止连一个成功的已完成的全面医院药品(管理)计算机系统都没有。第二个十年,在继续完成和实现医院药品管理信息的计算机化的同时,开发者的努力已进入医疗信息的处理领域,像病人医疗处理系统,实验室系统等。到1985年,美国全国医院药品数据处理工作调查表明,100张床位以上的医院药品80%实现了计算机财务
13、收费管理,70%的医院药品可支持病人挂号登记和行政事务管理,25%的医院药品有了较完整的MIS。医院药品管理系统正在经历着小型化(DownSizing)、智能化(Intellegence)和集成化(Integration)的改造过程。在国内,一些先进的、运用计算机技术有了一些经验或者成功地运行着某些部门级信息系统的药材公司或医院,迫切地从国内、国际市场上寻求一种较为完整的适合中国国情的药品管理系统产品。一些大的集团化的药材公司或大中小型医院都迫切地需要国家卫生部及有关信息开发部门集中财力、人力、物力,下真功夫开发出一套适合我国市场的,有中国特色的药材公司药品信息管理系统,满足药材公司和医院药品
14、管理的迫切需求,并进而推动整个中国医药卫生信息产业的形成。趋于这种形势,加上各方面的限制,如本人技术有限、人力不足等,我本着从大处着眼、小处着手、循序渐进,先建一个简单实用的小型医院药品管理系统,然后逐步完善。目前医药管理系统地应用已成为医院管理的重要工具和手段,它的引入有助于改变传统的工作方式,提高工作效率;提高经济效益;加强过程控制,提高医药管理质量;提高医院信誉,增强竞争能力;实现卫生资源共享;强化医院的科学管理等等。总之,药品管理系统应该能够为管理员提供充足的信息和快捷的数据处理手段,对医院药品的各类信息及数据进行处理,做到数据管理及分析,为医院管理者提供一个适用的管理工具,从而方便医
15、院的管理。2相关理论与技术2.1相关技术项目的连锁销售系统采用ASP技术实现,采用分层的系统架构方式,数据库选择的是SQL SERVER 2008,编辑环境选择的Microsoft Visual Studio 2010。本章节则主要介绍涉及到的技术问题,如c#和ASP技术,三层架构技术和session技术等,同时介绍了系统实现的物理环境和软件平台。2.2 C#和ASP技术简介C#是微软公司开发的一种与JAVA极其相似的面向对象的高级程序设计语言,它是由C和C+衍生出来的编程语言。虽说与JAVA极其相似,但c#也和JAVA有着明显的不差异,c#借鉴了Delphi的一个特点,与组件对象模型是直接集
16、成的,它是微软.net框架的重要组成部分。它在继承C和C+优点的同时也去掉了他们一些复杂过时的特征性质,比如去掉了c语言宏的概念以及摒弃了C+多重继承的特性,而继承了C+面向组件编程和高效率运行的优点。C#同时也借鉴了VB的可视化操作,形成了C#语言本身强大的操作能力,优雅的语法风格,创新的语言特性和便捷的面向组件编程。ASP也是微软公司的一种技术,需要注意的是asp并不是一种编程语言,与其说是一种技术,不如说是实现了一种编程环境,在这种编程环境下可以同时使用html,Jscript,CSS等多种网页编程语言以及C#,C+等程序设计语言。同时微软本身还提供了完美支持这种环境的编译调试软件,比如
17、VS2010,VS2012等,这些软件均能实现网页空间的拖拽,极大地方便了网页布局人员的工作。同时这些软件集成了ASP的WEB服务器,免去了如JSP般复杂的服务器配置工作。ASP网站发布在IIS中,IIS也是微软提供的一项免费组件,集成在Windows 2000及以上版本的系统中。ASP强大的语言兼容能力,功能强大的编译调试环境,简单易懂的编程方式,以及方便快捷的网站服务器,使得ASP成为了一种非常流行的网络编程技术。ASP的主要用途有:动态直观的对网页进行布局,更改网页元素等任何内容;可以通过HTML提交的表单信息与用户进行交互,并且通过后台程序进行响应;可以方便的从数据库中查询更改信息,并
18、通过界面向用户进行反馈;ASP虽然是一种动态技术,但是在向用户展示界面时提供的是静态网页,也就是说ASP的动态代码不能由浏览器编辑或者查看,大大提高了安全性。ASP的工作原理:用户通过浏览器向服务器发起请求服务器接收请求并开始运行ASP程序ASP将程序执行结果组装成不包含动态代码的网页,并将网页发送到浏览器。2.3 三层架构技术简介三层架构是软件体系架构的一种方式,分为三层:数据库访问层,业务逻辑层,表示层。当然三层的划分不是物理实现时的划分,而是更具各部分功能的不同进行的逻辑上的划分,目的是为了使三个层次具有专一的任务,是逻辑更加清晰。其中业务逻辑层是这三个层中最重要的一层,负责系统主要功能
19、的实现。三个层次各自实现的功能如下:1表示层(UI):主要任务就是向用户展示界面,位于最外层,最接近用户,用于显示数据和接收用户输入的数据,负责信息的显示和收集,并将收集的信息向业务逻辑层进行提交处理。一般也为显示或者收集的信息进行基本的有效性判断,从而减轻了业务逻辑层的负担,又不失逻辑分层上的严谨性。2业务逻辑层(BLL):主要任务就是实现系统各个功能。从表示层接收信息,更具需要完成的功能进行相关处理。向下调用数据库访问层的方法,向上为表示层提供需要展示的信息。业务逻辑层将整个系统的功能都进行了处理,而不负责信息收集,以及信息的持久化等工作。3数据库访问层(DAL):主要任务就是对数据库进行
20、,增添,删除,修改,查找的基本操作。这些基本操作都是通过业务逻辑层根据不同的功能需求进行相应的调用的,该层不涉及任何业务逻辑上的东西。但是需要注意的是,该层虽然针对原始数据进行操作,但它通常不负责数据物理上的存储以及查找的功能,对于数据物理上的操作,通常该层将借助数据库管理系统,如SQL SERVER 2008 ,My SQL 和Oracle进行具体的操作。当然有时该层也会访问二进制文件,文本文档或者XML文档等。通过以上三层的划分,表示层不直接与数据库访问层进行交互,也就是说数据的交互需要通过业务逻辑层才能进行,从而使业务逻辑层可以对信息进行功能上的处理以及合法性检验的工作。表示层和数据访问
21、层对功能的实现一无所知,表示层只负责界面怎么展示信息,数据库访问层只负责去数据库里得到信息,具体这些信息该怎么用都是业务逻辑层需要干的事。但是业务逻辑层对数据“从哪里来”,数据到“哪里去”同样一无所知。三个层次的交互关系如下图:表示层业务逻辑层数据访问层数据库系统图2-1三层架构各层之间交互图关于三个层次的划分:表示层:只向用户展示信息,采集用户输入的信息,并且将信息传递给业务逻辑层,此层不涉及任何的业务逻辑。业务逻辑层:只从表示层接收信息,根据功能需求做出相应处理,然后利用数据访问层进行增删改查等基本操作,并将信息整合之后向界面层进行反馈。该层不管数据的来与去。数据访问层:只负责数据的增加,
22、删除,查询和更改操作,该层是被业务逻辑层更具需求进行调用的。该层不涉及任何业务逻辑。进行层次的划分,本质上的目的是降低耦合,大大降低了各个模块间的依赖,优点在于使不同层次的开发人员只关注整个结构中的某一层,加快开发进度。在系统的后期维护中,能够很容易的用新的实现替换掉原有层次的实现,而保持其他层次不变,这样就极大地降低了维护的成本和时间。但由于数据在各个层次之间的传递,是的系统的性能降低了,同时可能还会增加系统的开发成本。2.4 SESSION技术简介Session是指用户在初次浏览某个网站时,将于该网站的服务器进行连接,同时在服务器中将保存一份有浏览器信息生成的在服务器端唯一识别的信息,这份
23、信息将一直保持到用户关闭浏览器,结束这次访问。Session涉及客户端即浏览器,同时也涉及服务器端,比并且需要不间断的访问才能保持、需要注意的是,同一主机的不同客户端(即不同的浏览器)对同意服务器进行访问,在服务器中生成的Session是不同的,也就是说session生成的单位是客户端对服务器一对一的访问,而不是主机对服务器的访问。客户端请求请求服务器接收请求建立session首次访问读取,更改session图2-2 Session技术客户端于浏览器之间交互图存储于服务器的session可以在客户端与服务器的会话中中多次使用,也就是说客户端可以从服务器的到一些有用的信息,也可将一些信息存进Se
24、ssion,供客户端后期访问。Session的这一特性,可以帮助B/S系统实现诸多技术上的问题。比如用户是否登录的判断,用户登录后权限的检查,界面刷新过程中临时信息的存储等,这些问题本系统也是通过Session技术进行解决的。在ASP中使用session的方法相当简单。Sessionuser = user; /将user对象存入session,在session中的唯一识别名称为userUser= Sessionuser; /从session中读取名为user的session信息3需求分析与系统设计3.1 需求分析3.1.1 总店子系统需求分析1、基础资料(1)药品资料(2)门店资料2、销售管理
25、(1)远程订单管理,处理来自门店的远程订单。(2)加盟店的进货统计,统计每个门店进货的数量、金额和比例。(3)门店销售查询,实时统计每个门店的商品销售情况:商品销售数量、销售额等。(4)销售决策分析管理,对全体门店的销售情况进行分析。3、库存管理(1)门店库存查询, 实时统计每个门店的各种商品库存情况,对商品的不足和积压实时预警。(2)总部库存查询,实时统计总部的各种商品库存情况,对商品的不足和积压实时预警。(3)店间调拨管理,加盟店之间的商品调拨。3.1.2 分店子系统需求分析1、基础数据管理(1)店铺管理:店铺资料管理,增加店铺。(2)货品管理:货品基本信息,添加新货品2、库存管理(指单体
26、店本地库存管理)(1)入库:填写入库单,增加库存。(2)出库:填写出库单,减少库存。(3)库存查询:查询当前库存情况,查询总店库存情况(4)拆零:将大包装商品拆为小包装商品。3、销售管理(1) 包括销售录入、销售利润统计等。(2) 各项销售批发报表。4、价格管理(1)包括进货价格管理、零售价格管理、进货价格调整5、会员管理(1)会员基本信息、会员信息维护、会员折扣率设置3.2 系统的概要设计3.2.1 开发环境系统开发环境的需求见下表:表3-1 环境需求配置清单开发环境配置需求清单内存1GB以上系统Windows 7开发语言C#开发工具VS2010数据库SQL SERVER 2008架构方式三
27、层架构服务器IIS调试浏览器IE浏览器3.2.2系统实现功能目标该系统主要模块包括库存管理和销售管理,还包括了一些基本资料模块,如货品管理,会员管理,店铺管理和管理员管理。具体功能设计如下表:表3-2 系统功能设计表功能分类功能概况具体功能功能说明(可参考需求分析) 主要操作库存管理库存变更主要支持入库操作,一次可对某一仓库入库多种产品库存变更列表入库和出库的总单列表,包括总单号,店铺号,时间以及总价的,不包括某一具体商品的入库数量。支持关键字查询详细变更列表详细列出某一具体商品在某一店铺的入库数量。支持关键字查询库存查看库存情况列表。可以对某一商品进行整装拆零。支持关键字查询销售管理销售开票
28、一个店铺一次可以销售多种商品,并生成销售单,同时生成出库单(涉及库存管理)。销售概况销售总单列表,只显示总单号,销售对象,时间等信息,不涉及具体商品的销售情况详细销售列表店铺向销售对象销售具体商品的情况,包括价格等信息销售利润销售渠道获得的利润,不可更改拆零利润通过整装拆零获得的利润,不可更改基本资料货品管理添加货品增加商品,只有存在相应产品时才可进行出/入库和销售操作货品列表货品列表中的编辑一项可以对已存在的货品信息进行更改。由于涉及价格和整/散装数量问题,需要清空库存后才可编辑。会员管理添加会员需输入新增会员编号,姓名,折扣率。会员列表只可更改姓名和折扣率。管理员管理添加管理员需输入管理员
29、编号,密码,姓名,所在店铺以及权限管理员列表只可更改密码,姓名,所在店铺以及权限店铺管理新增店铺需输入店铺编号,名称,地址以及联系电话店铺管理只可更改名称,地址以及联系电话。注:1:只有店铺,货品资料存在时才可进行出库或者入库操作。2:只有店铺,货品(足量)以及会员同时存在时才可进行销售操作。3:由于整装价格,整装数量和散装价格不一致问题,可能会产生拆零(将整装拆成散装)利润。4:在销售时,会参考会员折扣率确定最终价格。3.2.3 系统权限设计角色分类表3-3 角色分类表管理员名称权限代码及代号所在店铺码0101总店管理员2 总店操作员其他3分店管理员4 分店操作员权限分配表3-4 权限分配表
30、功能概况具体功能1总店管理员2 总店操作员3分店管理员4 分店操作员库存管理库存变更是是是是库存变更列表是是是是详细变更列表是否否否库存查看是是是是销售管理销售开票是是是是销售概况是是是是详细销售列表是否否否销售利润是否否否拆零利润是否否否货品管理添加货品是否否否货品列表是是是是会员管理添加会员是否是否会员列表是是是是管理员管理添加管理员是否否否管理员列表是是否否店铺管理新增店铺是否否否店铺管理是是否否3.2.4 关键功能活动图图3-5 库存变更操作图用户可以通过系统添加商品信息,提交后体统会检查药品是否存在,如果存在会直接生成入库单,并将入库记录添加到数据库中,如果成功入库,改变数据库中药品
31、数量,显示列表,如果失败则显示失败,回滚。图3-6 库存变更操作活动图用户可以通过显示销售界面,查看药品信息,然后将药品添加到出库单,提交后体统会检查药品是否存在,如果存在会直接生成出库单,并将入库记录添加到数据库中,如果成功出库,改变数据库中药品数量,显示列表,如果失败则显示失败,回滚。3.3 数据库设计设计3.3.1 E/R设计货品店铺库存拆零变更总单变更详细名称ID整装价格散装价格价格整装含量IDIDID包装方式整装数量散装数量数量日期利润属于变更方式散装数量整装数量ID日期ID图3-7 ER图3.3.2 数据库关系图图3-8 数据库关系图3.3.3 数据库表结构表3-9-1 Shop列
32、名属性是否主键完整性约束说明shop_idchar(10)是not nullIDshop_namechar(20)否not null商店名Addresschar(30)否无商店地址contactchar(20)否无商店联系方式表3-9-2 Products列名属性是否主键完整性约束说明pro_idchar(10)是not nullIDpro_namechar(20)否not null产品名称bulk_priceint否无散装价格while_priceint否无整装价格pack_numberint否无整装数量表3-9-3 Stock列名属性是否主键完整性约束说明pro_idchar(10)是re
33、ferences货品IDshop_idchar(10)references店铺IDpack_modechar(1)否0 or 1 or 2包装方式bulk_numberint否无散装数量while_numberint否无整装数量 表3-9-4 Bale列名属性是否主键完整性约束说明bale_idchar(10)是not nullIDpro_idchar(10)否references货品IDshop_idchar(10)否references店铺IDbale_timedatetime否无拆零日期bale_numberint否无拆零数量bulk_priceint否无散装价格while_pricei
34、nt否无整装价格表3-9-4 AllStorage列名属性是否主键完整性约束说明allstor_idchar(10)是Not nullIDshop_idchar(10)否references店铺IDstor_datedatetime否无变更日期change_modechar(4)否出库 or 入库变更方式totalint否无总价表3-9-5 Storage列名属性是否主键完整性约束说明stor_idchar(10)是not nullIDpro_idchar(10)否references货品IDallstor_idchar(10)否references变更总单IDstor_datedatetim
35、e否无变更日期pack_modechar(1)否0 or 1 or 2包装方式bulk_numberint否无散装数量bulk_priceint否无散装价格while_numberint否无整装数量while_priceint否无整装价格totalint否无总价4系统实现详细设计本章详细介绍了各主要模块的实现原理,在介绍过程中详细分析了实现的实现代码。4.1 数据库操作模块的实现本系统采用三层架构模式开发,分为界面层,逻辑层与数据层。系统在操作过程中需要频繁查询或者更改信息,所以系统的实现过程中需要多次对数据库进行操作,而在对数据库进行操作之前必须进行数据库连接。如果每一部分都单独编写数据库连
36、接代码,将造成代码的冗余,同时降低了系统的可维护性。为此本系统将数据库连接参数写进配置文件Web.config,并为数据库的连接和基本语句的执行单独写作一个类DbHelperSQL。具体如下所示:配置文件:SaleManageWebWeb.configDbHelperSQL类的实现:SaleManageDBUtilityDbHelperSQL.cspublic abstract class DbHelperSQL/在配置文件Web.config中取得连接参数。PubConstant的代码在本类代码之下 public static string connectionString = PubCon
37、stant.ConnectionString; /执行sql语句,返回datasetpublic static DataSet Query(string SQLString) /与数据建立连接 using (SqlConnection connection = new SqlConnection(connectionString) DataSet ds = new DataSet();声明用于装载查询结果的对象 try connection.Open(); /打开会话 SqlDataAdapter command = new SqlDataAdapter(SQLString, connecti
38、on); /执行SQL语句字符串 command.Fill(ds, ds); /装载数据库 catch (System.Data.SqlClient.SqlException ex) 如果发生异常怎么处理 throw new Exception(ex.Message);/抛出异常 return ds; /执行带参数语句,返回受影响行数public static int ExecuteSql(string SQLString, params SqlParameter cmdParms) /详细代码略去,具体实现可参见源代码 /执行带参数的sal语句,返回datasetpublic static
39、DataSet Query(string SQLString, params SqlParameter cmdParms) /详细代码略去,具体实现可参见源代码PubConstant类的实现:SaleManageDBUtilityPubConstant.cspublic class PubConstant / 获取连接字符串 public static string ConnectionString /详细请见代码 4.2 库存管理模块的实现4.2.1 库存变更操作的实现4-1库存变更添加库存变更操作可一次添加多种商品。输入一件商品信息后确认添加,然后然后更新用于存储已添加商品的session
40、,最后提交时将session里的商品逐一进行库存更新,最后生成总库存变更单,和包括单一商品信息的详细变更单。单一商品确认添加相关代码:SaleManageWebMainAdminStockAllStorageAdd.aspx.csprotected void AddItem_Click(object sender, EventArgs e) /检查总单基本信息string strErr = ; if (this.txtallstor_id.Text.Trim().Length = 0) strErr += stor_id不能为空!n; if (this.txtshop_id.Text.Trim
41、().Length = 0) strErr += shop_id不能为空!n; else SaleManage.BLL.Shop bllshop = new BLL.Shop(); if (!bllshop.Exists(this.txtshop_id.Text.Trim() strErr += 该店铺不存在!n; if (strErr != ) MessageBox.Show(this, strErr); return; SaleManage.BLL.Products bllpro = new BLL.Products(); SaleManage.Model.Products modelpro = bllpro.GetModel(this.pro_id.Text); /检查是否存在此商品 if (!bllpro.Exists(this.txtpro_id.Text) MessageBox.Show(this, 您添加的商品不存在,若要添加须先在商品单中添加); return; Model.Storage modelstor = new Model.Storage(); List storagelist = (ListModel.S
限制150内