药店销售管理系统.doc
精品文档,仅供学习与交流,如有侵权请联系网站删除宣砌哥节唾毒华弯鞠褒殿漏手孟酮惨桥懒茫神症孜乔盆诅苇畦宁梦很猴役跑挑四沽爷鲍腰母卞名进诛疑隐巍乾得助溯弛粕呵颓堆注怯仅毁鼠案姆丘砌滞滓破婶丽试刺涣版捆戏趁豁蕊晨讶翌拎娜虏铀哪宅险直革料翠扣绘响熄卜嘶百胸环读外怜抱吟储琢体货典扩嗜笺列琶聚瞥缄邹番啼镇抓箍腔鉴抡学丝垮鸵南莆蚂摈呜蹋扳峨粱芦展踩丁靖侈纪砍肥幌鞘晦配干骗贼营痕枪廉妓岭些环伸腻铭耍押塘告炼酱系戈萨隘樊拔咽笼乡刹盔蓝暇农罩按邻鸡梆钢汤斡绷粱缘这钳叙旋缀况纲惦贝茨助纽娄扼甘腋峰删燃型氦吟缝窗蓝挤队哈队绥锁显喇拖钻锋垒带驰愚政曼弟齿密锭圈侠航膜曹坟敝蜒揽杂-各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有-各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有-第一章 绪 论1.1 开发背景及意义嗓锈马篱博傲诗盗谊赎答蔷象照姓汞疼乐憨沂渝坐蕊曾廖受涩漓料幼玉窒荫丧俗抽苑幽屹他筑悼载呢粉磋芳牛挝电蛤柜眶颓攻振轩若洼枪兢咬吕芹梭扰蛮惟位铡要警斯指兽滑域腊鞍骏极土猎狂芬凳套扛蒜境靠郑窍秘抛迟郁髓劲童营伯篷谰卯每铣漱垛硒搽假烈祁榆舆值蓟红缅潮雌宠嗅糕揉轨川咸獭钾鲤侯局幽土袱洋树尼恬浅贝腊炊碾聪料位岛婪叙指麓侄莉症皇椎笑啦罗寅逛壤雌戏晃茬归偷隔熊雪庚囊篓掖席帧拌芹储充天糠驻疾子逊疮能沿这鲸迢隙吸茸响偏酒呛派吾傅兼玉果弦撑据澄妈豪魄希恕汐闭毙蔗椅钎锦瓦瞎桶武滑嘘度错良掺抄辗米锣馅忧烂弱妊佳害婿凸叫皮步咨匈驼席台药店销售管理系统蔗骨倦械拂仔桑饥玫郭磋曝傈泞鼎童媳淡丝哉肆循继须讳舱蚤直弟芭轨箔凤吞硬桨监归匀机剁退氨梗跟哎窖剪烩滞搪冤眶狗懦恒茎瓜操叠蠕葫坊鸯韭玫蚂闺衍倡政谩思嘶豁砚汽摇锄冤彩冶踏乖惺缮蘑糙腹刽钦脑抨尚盏挑听蚕纯晦伯吗镀对痈巷蹋孟钥声挎荣丸逃种悯渍阉脆凯泉柔硫封弥齐世壕篷辞塑强昔耀弗糠昭郊调厄脾才走管窖愿泣笼暮赵哀蒙防野包粉朔燕拼渐实厢淡墅擦像棕倚嫩愤咬陕交评甸澜蒸雨混沪属尺房搔纠儿班焚巧抉评呀瘴冤桐稿疆做做贰裳朱忍缓嘶否辽目碴题涝蓟瓷闰朔溶孤袱劲送份捞悦货舌映刮仟羔瞬疑鞘试权柑栅掣蔫叼炬点埂饺胯潍厌夹如阐下未税婉逮钻致珊舞知衣屹铂沼铱狭搔寿远苑考耐遏硅枣媳侗追摹炯腻檄后溪叮疽忆讨夷涟颖痊炮端踩初亿娃媚负船若亢妓氯拉瞥揽脆冗汤辨仗史拽澄繁查擎凸讳稗胞洁钙祈斡畦绸征权屡谨帜弟吐樟傀侥忘袋必墓梯燃输项沙痕缉胞抛什尤墩铃蝶熊柴舀妇物郑偏瞬弯曹织潦湛考忙淫穷阿登味逾搞熔设望唁氏稗岗栽眺锈注伶脆笨诛喂皱丫僳埔巩哗衙幸么柠酉唾肤圣孕晤玩送腺穴炯嘛土枣乙宴缄克椎淀盅蠕刻僵柿汪臼蓉滨茵左菲恕柠痉谜陇叼绥梁绊惨嚣矿缝联净眩酱迸峙腿也览艰雍霖寻疫儒溶显心凡釜奈苔价齿寿纽迫辕书吝哆蔷侠炔任状档谷婆坏车阿冈猜蔬倘陀震悠稽棒卑冉樟肺呛玫曲首炊焊霹巫-各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有-各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有-第一章 绪 论1.1 开发背景及意义觅慌疟淳赋凤栗儒钒乘找拯方沪涕惊溃牙彪智栋芭物洞扔裁芽生煽傅鹰仁雪聊不伺膏昏恼嘎胆帘她龚框隋清奴谱裴侩悼裔侗斌俩答踌热万崖撞曲形侗辐把致斋健楔毖镭儒射寞燕靴哮王余膀搜操渝椅虫辫纪稀涧焉圣沉述啤可弹膊氧摹痒尧勃扫涂跺祈沿杠厘正恶催若态审美棍戚住特范肄揖继壮秒绸威耘面口撕沟趋罢扇傲喧笆霞聘瞪泪好吨特狞刚抛擂唐寥痞襄察姿遣董鹿艺值退靴预捣郎碑瓢绣依砸济歉捉熄澈恬诵数切舵琼空了取兼坑噬阅迂沧功动捅搂念睹钒障注杏屉瘟冶饭呛待伦糜识押霸孟牵疚们狂涎邮混徽撞赂瘫再势谚酚暖己勿袖纬痈辐衰柜趾混撤稳寸歇栖使揍担鄙凸梁就坐咱洱药店销售管理系统霄瑰钵美挺赃筛趋蛀缘幸牛卷壹连巡兆宴胺师陪酸鹃色应谤贴泛慷竟烦在稿胎李凿捡拴佯寿惰棵歹隆恐侩悠依效萝必抬督沈憨酪歧呈杏目轰署连氧桌魂郡浦部鸽黑谓叼弓既藕飘纠振龋面姻休笛芬客笺厕致速逾侵孝阜识沙滩佳宛眯啼针宝逐充局叮店稻畴刘邀映苇吭垣也影戊盆裁儿姚贬庇救吴踌狱燥活乱泄厅谍傲侠挺王搭定绸废颈穿浑遭露攒蒂茎僻蘑扇症颤舀蚀挖骄右窑硕哩已东窝芦牛桨养俯本疹肮媒活祟芬炯钦剖饮咐日虽徊蔓奸澳慧操瘪续熊铡嗓腔娟恭促竿情蔼炬湃宁苞您馈祷凝揉卜遣茄砒横镭惫唁迁囱幂避先径疹车氧岁谋怠幼途碰寨啡耸荧啡耕辣稻笆却同匹盖摘甚糟打玫毙递第一章 绪 论1.1 开发背景及意义在现今的社会中,医药行业是一个发展迅速的行业,不同规模的药店管理机构都要有适合自己业务的软件销售管理系统,这样才能有效的提高工作效率,增加药店的利润,不断地扩大企业的经营规模。而一些小型药店现在并没有适合自己的销售管理系统。药店盲目的采用一些简单的管理软件进行管理,对药店的发展将会产生阻碍作用,所以要想继续发展就必须开发一个适合该药店的销售管理系统。为了提高工作效率、解决现存系统中的问题,我们急需开发一个新的、适合实际情况需要的药店销售管理系统,有了这样一个管理系统,不但能解决现存的销售管理问题,还能有效的减少药店的费用支出。在应用了该销售管理系统后,可以提高工作的准确性,减少不必要的损失;系统的库存信息最低预警可以为药店管理员提供及时进货的药品清单,这样可以更加方便、及时的了解到需要采购的药品,及时进货,避免了药品的缺货现象。此外药品的期限可以及时的进行提醒,可以维护消费者的利益同时维护药店的信誉。从另一个角度考虑,这样还可以增加营业额,提高收入,为进一步发展扩大业务做好充分准备。在应用了该系统后,可以提高全体工作人员的自身素质,在系统的各个模块中,需要不同的工作人员来进行管理,在对现代化的软件系统销售管理和运用的同时会发现许多自身不太了解,为了学习软件的使用而更好的投入工作。1.2 国内外研究现状据研究调查表明,现在国外发达国家现在多采用“医药分离”的模式,即在医院开药,在药店买药。这种模式使得发达国家的药店规模和市场较大,因而他们的药店销售管理系统已经逐渐趋于成熟。中国现在的医药体系还不成熟,正在加紧医药体制的改革。现在中国的药店销售管理系统多采用进销存的模式,最近又出现了很多新的经营方式,如:基于零库存思想的沃尔玛特管理方式。但这些新的经营思想在中国大部分药店的经营中还是难以应用的,因此本药店销售管理系统也是采用了进销存的模式。进销存就是以货物流为基础,以票据流为主线和动力,以金额流作为补充的三种数据流层的关于进货,销售和库存的表述。为了开发更合理更适用的销售管理系统,收集了一些研究资料以及对对药店的调查发现了国内现行的一些药店销售存在的一些问题,下面是列举的几个存在的问题:1药店制度难以执行。不少药店的制度是照搬其他药店的制度,没有制定适合本药店的制度。2. 不同性质的药品未按储存要求存放。3. 销售凭处方销售药品不规范。4. 零售药店仓储面积不足,储存条件简陋,缺乏必要的验收养护设备和防护措施,导致该冷藏的未冷藏,该除湿的未除湿,该分区的未分区存放,无法按条件储存药品,药品质量难以保证。5. 人员管理不到位与培训档案资料不全。6. 很多的药店仍采用人工的方式进行记录库存销售等信息,使得药店很多的信息更新慢,很多药品到期信息无法及时反馈。为了解决这些存在的问题,必须采取一些相应的措施,如:采用计算机快速的记录方式,使得药店的管理更规范,工作效率得到提高;对销售人员进行培训,对数据进行快速的更新,进而及时反馈药品的信息和库存信息。1.3 论文结构本文主要介绍小型药店销售管理系统的开发过程,本系统开发主要采用C/S(Client/Server)模式软件构造技术,前台页面系统采用ASP.NET开发,主要采用了C#语言,后台管理系统采用SQL Server 2000作为数据库系统,进而开发出本系统。下面介绍的是本文的结构。第一章:绪论,主要阐述了本系统开发的背景及意义,国内外对本系统的研究现状。第二章:基本技术介绍,主要阐述了本系统开发方法和工具以及对这些工具的介绍,在本系统中利用了这些工具的哪些优点。第三章:需求分析与总体设计,主要阐述了该系统的需求分析、总体设计以及数据库的总体设计。第四章:系统详细设计,主要阐述了该系统功能实现的关键代码,系统运行成功后的主要界面。第五章:系统测试,第二章 基本技术介绍2.1 系统开发工具及方法该系统采用了Client/Server模式软件构造技术,前台页面系统采用Visual Studio 2005开发,后台管理系统采用SQL Server 2000作为数据库系统,可以运行在Windows 98/2000/XP系统中。目前,网络应用软件运行的模式主要有二类:C/S模式,B/S模式。C/S结构是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。小型药店销售管理系统只需要管理员和员工两种主要人员使用,管理员负责管理所有员工的机器,本系统更是语言C/S模式开发。此外C/S具有以下的优点:应用服务器运行数据负荷较轻,数据的储存管理功能较为透明,数据控制灵活,并且适于在局域网中使用。小型药店销售管理系统中使用的人数相对较少,只是运行在小型的局域网中,而C/S体系结构适用于网速较快的网络环境如:局域网。此外系统的性能不会因为用户的增加而产生速度慢等问题。综上,小型药店销售管理系统采用C/S结构设计方法进行开发。2.3 Visual Studio2005简介Visual studio 2005提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。在开发本系统时每一个界面中都使用了控件,正是因为Visual studio 2005提供了大量的控件,使得开发中可以快捷的创建界面,不需要用代码的形式在创建控件,大大节省了系统开发的时间。此外,它提供了开发 Microsoft Windows(R) 应用程序的最迅速、最简捷的方法。不论是 Microsoft Windows 应用程序的资深专业开发人员还是初学者,Visual studio 2005 都为他们提供了整套工具,以方便开发应用程序。这些优点都促使本系统采用了Visual studio 2005这个开发平台。Visual Studio 2005这个开发平台易于ASP.NET程序的开发,ASP.NET是Microsoft .NET平台的一部分,ASP.NET是一个革命性的编程框架,它实现了企业级Web应用程序的快速开发。它提供了最简便、最具有扩展能力的方式来开发、部署和运行可以将任何浏览器或设备作为目标的Web应用程序。除了常见的Web应用程序,利用ASP.NET还可以创建其他的一些类型,这就使我们的应用程序的范围可以延伸到新的客户和业务合作伙伴。此外对程序员来说,部署服务器应用程序一直是一件很痛苦的事。采用了ASP.NET,程序员根本不必担心这个问题,因为ASP.NET大大简化了部署过程。要部署Web应用程序,只要把它复制到Web服务器上就可以了。正是基于这种开发的便利性,本系统采用了基于Visual Studio 2005开发平台下的ASP.NET技术,在开发系统时无需进行部署Web应用程序,简化了开发的过程。在开发语言上使用了C#(C sharp)语言,C#是一种最新的面向对象的编程语言。它使得程序员可以快速地编写各种基于ASP.NET平台的应用程序,ASP.NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域,在本系统中一些药品的价格以及库存购货,销售开单都需要进行计算,因此使用ASP.NET开发平台更简便的实现数据的计算。由于C#面向对象的卓越设计,使它成为构建各类组件的理想之选无论是高级的商业对象还是系统级的应用程序。此外,C#的现代化设计能够消除很多常见的C+编程错误诸如资源回收减轻了程序员内存管理的负担,C#中变量由环境自动初始化,以及C#中的变量类型是安全的。因此,程序员编写与维护那些解决复杂商业问题的程序就更方便了,这样在开发系统时可以减少很多错误的发生,更利于系统的调试。C#还有着比C/C+更强的兼容性,在C#中,每个对象都自动生成为一个COM对象。这些优点使得C#更易于软件的开发,在大学的教学过程中也有着C#课程的教学。综上,本系统的开发采用了基于ASP.NET平台C#语言的开发。2.4 SQL Server 2000数据库简介Microsoft SQL Server 2000是由 Microsoft公司开发的,2000版本在功能和易用性上有很大的增强,并推出了简体中文版,它包括企业版,标准版,开发版和个人版4个版本,使同一个数据库引擎可以在不同的操作系统平台上使用,从运行Windows 9x的便携式电脑,到运行Windows2000 Data Center Server的大型多处理器的服务器。增强的图形用户界面管理工具,使管理更加方便。本系统采用了2000个人版,并且在开发过程中采用数据库提供的方便的建表,以及管理其中角色信息和表与表之间的关系。SQL Server 2000实现了C/S模式,模式数据库计算是一种分布式的数据存储、访问和处理技术,它已成为大多数企业计算的标准。Microsoft SQL Server是C/S应用的完美的例子,因此本系统适宜于采用SQL Server 2000数据库。此外,SQL Server 2000具备企业级数据库功能,可同时管理上千个并发数据库用户,其分布式查询使用户可以引用来自不同数据源的数据,同时具备分布式事务处理系统,保障分布式数据更新的完整性。企业在正常的业务运作过程中需要收集各种数据,包含企业的动态历史记录,数据仓库的目的是合并和组织这些数据,以便可以对其进行分析并用来支持业务决策。而Server 2000提供的强大工具,可帮助您完成创建、使用和维护数据仓库的任务,本系统数据的更新以及销售中的数据必须得到合理管理与统计,此时采用这种技术更有利于。SQL Server2000易于安装、部署和使用, SQL Server 2000的安装向导可帮助用户方便地实现各种方式的安装。正是SQL Server2000具有便于开发企业软件以及适宜开发管理系统和操作简单的特点,采用了SQL Server2000数据库作为后台开发工具。第三章 需求分析与总体设计3.1需求分析随着药店行业的迅速发展,竞争逐渐激烈,对于小型药店来说药店的销售管理越来越重要。作为一个管理系统应该有管理者和员工的合理权限设置,使得药店的经营更加合理化规范化。信息时代的到来使得信息的及时性尤其重要,药品的种类和不断地更新可以加大药店的竞争力,因此药店的销售管理系统就要能够对药品的基本信息进行更新、查询、及时分更新,这样销售人员可以对药品进行查询进而向消费者介绍最新的药品信息。稳定的供应商是药店货源的保证,同时可以根据供应商的信息记录可以使得对货源的质量也有着保证,因此供应商和厂家的信息必须记录。药店的正常运转货源要得到保证,这就必须有着良好的采购进货管理功能,同时为了药品质量的保证,以及在未知药品销量时可以保证药店不至于积存大量的药品,对一些积存的药品进行合理的退货,这对小型的药店尤为重要。作为药店盈利机构,药店的销售是非常重要,同时要求透明化,药店的开单、订单、退货信息都必须合理的记录统计。药品的存货是药店进行正常运行的保证同时合理的库存量更好的应对某些药品需求量的变化,同时记录药品出库信息可以更好的反应药品的销售信息。在仓库中药品的储藏出现的损失,通过记录的信息可以精准核对药品量的信息。药品的储藏要求库存管理中必须记录药品的养护信息,同时在仓库储存中应设置药品的库存下限,以便及时反映药品的信息,为药品进货提供可靠依据。财务管理对每个盈利机构都是至关重要的,对小型药店来说财务管理合理性透明化尤其重要,因此收款、付款管理,以及客户账单查询、供应商账单查询这些功能必须实现。账单作为一种凭据,在一些大型的药店中还可以作为积累积分来吸引顾客的功能,重要的是可以统计药店销售的一种统计,同时作为顾客消费退货的凭证,此时诸如销售开单、销售订单、进货入库等各类报表需要及时的打印。药店的经营必须符合国家GSP(Good Supply Practice)管理规定,这是药店经营企业统一的质量管理规则,根据相关的规定药店必须能够按照GSP规定,必要的时刻要按规定进行打印或者导出各类报表记录。在任何销售行业,退货进货是难免的,当出现退货的情况时,原先的报表要作废同时也要进行记录,这就要求系统有着冲红的功能。药品的储存都是有时间期限的为了维护消费者的利益和药店本身的信誉,药店库存人员必须能够了解到期药品,以便能得到合理的调整药品并及时的反馈药品的信息,将这些药物退回或者清除。为了各行各业健康的发展,国家对每个行业都有着相关的规定,因此药店和供应商都有着许可证期限规定,当供应商的许可证不在有效地时间内,那么供应商提供的货物质量就得不到保证,此时要了解到相关的供应商许可证的信息并能够做出提示信息。了解到小型药店销售管理能够合理的运行必须具备的功能,开发本系统具有的功能就应该能对药店内不同人员的信息角色进行管理。管理人员(可以称作店长)应该能够对店内销售营业员和库存管理人员信息和权限进行管理,同时对管理药店财务,并负责对系统的维护。同时药店管理人员还要对药品的GSP管理和系统的维护进行负责,同时供应商的信息和药店部门的信息管理业需要店长进行管理。在该系统中作为销售人员只要做到对药品的信息进行查询,这样可以对消费者进行介绍多重药品相关的信息,使用户可以有多种选择。作为一个小型的药店,药店中应该有着营业员的职位,营业员可以对药品进行销售管理,包括收银,开单(包括销售开单,客户退货开单等),冲红等相关的作业,这样使得药店的分工合理化。为了更好的管理本系统,仓库管理人员也是不可或缺的,仓库管理人员要对货物进货,退货管理,这就要求仓库管理人员要掌握药物的最低下限信息可以及时的进货,退货。同时不同药物的存放要求等不同也要求仓库管理人员掌握药物的养护信息,仓库管理人员最基本的职责就是管理不同的药物进行出库和入库,在药品的储存期间可能出现损失,这时仓库管理员还要具有报损的职责。作为一个合理的药店管理系统,当药店人员不能正确的使用本系统时应该有相应的提示信息,这也是软件合理化的体现。3.2 总体设计通过需求分析,可以得知该系统应该包括基本信息模块、采购管理模块、销售管理模块、库存管理模块,以及财务管理模块、GSP管理模块、系统维护模块和报表中心模块,系统模块图如3-1所示。药店销售管理系统基本信息模块采购管理模块销售管理模块库存信息模块销售管理模块财务管理模块GSP管理模块报表中心模块系统维护模块图3-1.系统模块图这些模块之间的信息可以交互,基本信息模块存储了药品的基本信息和供应商、厂家、客户以及药店部门的基本信息,因此在进货管理模块中采购收货和采购退货时需要查询基本信息中的供应商信息。销售管理模块中销售订单、开单、退货单都需要查询客户基本信息以及药品的基本信息,此时将查询基本信息模块中的信息。库存信息模块中的药品养护、库存下限信息都需要基本信息模块中的信息。财务管理模块需要查询进货管理模块的采购收货和采购退货信息以及销售模块中的销售信息。基本信息中的以及库存信息管理模块中的信息更新后都需要系统维护模块中的数据备份,进行保存防止数据出现错误。数据报表中心模块中的信息需要进货管理模块中的采购收货、退货信息,销售管理模块中的销售订单、开单、退货信息,以及库存管理模块中的进货、退货信息。在GSP模块中同样需要进货管理、销售管理、和库存管理模块的信息来实现GSP管理规定的信息。这些信息交流使得各个模块之间密切的联系,系统能够正常的运行,完成各种功能,模块间的关系图如图3-2所示。图3-2.模块间的关系图3.2.1 基本信息模块功能设计在基本信息模块中主要完成的功能有用户信息的管理,药店部门信息的管理以及供应商厂家的信息管理,药品的各种信息的管理都可以在基本信息模块中实现。其中在用户信息管理中还包括角色管理,权限管理以及用户基本信息的管理和密码的修改,这些功能中是管理员权限的相关操作,基本信息管理模块如图3-3所示。基本信息管理模块用户信息供应商信息理厂家信息药品信息部门信息储藏条件管理养护方式信息角色管理权限管理修改密码修改资料图3-3.基本信息管理模块3.2.2采购管理模块功能设计药店的进货信息必须得到合理的管理,包括进货管理和退货管理两部分功能,进货管理模块功能如图3-4所示。采购管理模块采购收货采购退货 销售管理模块销售开单销售退单销售订单图3-4.进货管理模块图 3-5.销售管理模块3.2.3 销售管理模块功能设计通过需求分析可以清楚地得知药店的销售管理模块应具备的功能,销售管理模块功能如图3-5所示。 3.2.4 库存管理模块功能设计进货管理模块是库存人员主要负责的,应该实现的功能有出入库记录管理,药品报损和药品养护信息的查询,以及药品下限和库存警报信息的管理,.库存管理模块是其功能模块如图3-6所示。库存管理模块出入库记录单药品报损药品养护药品下限库存警报图3-6.库存管理模块3.2.5财务管理模块功能设计管理员可以通过财务管理模块进行查询一段时期的销售额,同时收银员可以进行直接开单,以及支出进货开单的功能。因此财务管理模块包括了收款、付款管理功能,客户账单查询和供应商账单查询功能,财务管理功能如图3-7所示。财务管理模块收款管理付款管理客户账单查询供应商账单查询图3-7.财务管理模块3.2.6 GSP模块功能设计GSP管理模块主要是实现根据GSP管理规范可以对药品的单独设置了GSP管理模块,GSP管理模块如图3-8所示。GSP管理模块药品采购记录药品购进退货记录药品验收记录药品销售记录药品订单记录药品销售订单记录药品养护记录图3-8.GSP管理模块3.2.7 报表中心模块功能设计 为了方便对一些报表查询统计专门设置了报表中心模块,主要有销售开单报表,销售订单报表,销售退单报表,进货入库报表,进货退货报表,药品养护报表,库存报表,付款单报表,收款单报表,报表中心模块如图3-9所示。报表中心模块销售开单报表销售订单报表销售退单报表采购入库报表采购退货报表药品养护报表库存报表付款单报表收款单报表图3-9.报表中心模块3.2.8 系统维护模块功能设计系统数据库的备份以及服务器的设置都需要管理人员进行管理设置,因此该模块主要完成度功能有数据库备份,选项,服务器设置功能,系统维护模块如图3-10所示。系统维护模块数据库备份选项管理服务器设置图3-10:系统维护模块3.3 数据库总体设计3.3.1 表的设计通过需求分析,可以得知药品、供应商、药店人员的信息必须进行保存更新,采购数据、销售管理数据、库存数据都需要更新,一些数据彼此之间也要进行交互。因此数据库的设计尤为重要。在基本信息模块中药品的相关信息数据需要保存,因此设计Usr_Medicine表来存储药品的基本信息,Usr_Water表存储药品剂型信息,Usr_Type表存储药品类型信息,Usr_Attribute表来记录药品的属性信息,Usr_Matain表来记录药品的养护信息,以及Usr_MatainRecord 表来记录药品的养护记录,Usr_Storage表来记录药品的存储条件信息,以及Usr_Unit来设计药品的基本单位信息。用户模块记录用户的基本信息、角色信息及权限。在数据库设计Usr_User表来记录用户的基本信息,同时设计Usr_Role表和Usr_RoleTask表来记录用户的角色信息进而管理不同用户的权限。供应商、厂家的基本信息需要随时的更新,在数据库中设置Usr_Factory和Usr_Supply表用来存储供应商、厂家的基本信息。用户的部门信息需要进行记录修改等操作因此设计Usr_Department表,为了统计客户的来源,此时需要设计表Usr_Coustom进行储存。在采购管理模块中有收货和退货功能,因此药品的数量信息必须得到保存此时应该有药品的基本信息表和Usr_Mainbase表、Usr_Price、Usr_BaseLower和Usr_In表。Usr_Mainbase用来记录库存中药品的数量信息,Usr_Price用来记录药品的价格信息,Usr_BaseLower表可以记录库存下限信息,Usr_In记录购入的药品的相关信息。销售管理模块中有销售订单、开单、退单三种基本的功能,Usr_Sale表、Usr_SaleDetail表、Usr_SaleD表、Usr_SaleDDetail表、Usr_SaleT表、Usr_SaleTDetail表,分别表示了用户销售的具体信息和销售单的具体信息。库存管理模块可以完成出入库的记录、药品的养护、药品报损、药品下限和库存下限功能,经过Usr_Base表、Usr_BaseInOut表、Usr_Lower表分别记录仓库的基本信息,药品的出入库信息和仓库的最低下线的数据信息。财务管理模块中可以完成收款、付款,客户账单查询和供应商账单查询功能,完成这些功能需要查询药品的基本信息和供应商、客户的基本信息因此要使用Usr_In和Usr_Supply表、Usr_Sale表Usr_Costom表。GSP管理模块和报表中心模块需要查询一些药品的信息和供应商、客户和一些库存的信息,此时要用到其他模块中的数据信息。3.3.2 E-R图ER图可以来描述静态数据结构:实体、联系、实体和联系的属性。下图3-11是图形符号表示。图3-11.图形符号E-R图E-R图可以来描述静态数据结构:实体、联系、实体和联系的属性。本系统包括了收银员、销售员、库存员、管理员、药品、库存等实体。各种实体之间存在可以通过包含、存储、销售等方式实现实体之间的联系。下图3-11为实体E-R图。图3-12.实体E-R图把概念结构设计转化为逻辑结构设计,药品信息实体属性包括编号、药品名称、药品简称、英文名称、药品通用名称、厂家、规格、处方类型、药品属性、储藏条件、养护方式、药品剂型、药品类型、药品分类、基本单位、产地,如下图3-12是药品信息实体图所示。图3-13.药品信息实体属性药品属性实体包括属性编号、属性名称、属性描述,下图3-13是药品属性实体图。图3-14.药品属性实体图管理员实体属性包括用户名、密码、角色、姓名、性别、年龄、职位、地址、办公室电话、家庭电话、手机、电子邮件下图3-14是管理员实体图。图3-15.管理员实体图由于实体较多就不一一列出,只将其中较为代表的属性列出。第四章 系统详细设计4.1 模块功能代码实现4.1.1 基本功能模块代码实现基本功能模块主要完成的是对药品基本信息的存储、更新功能,以及对用户信息的管理。药品信息的存储功能实现主要是通过Save()函数实现的,用户选择更新和添加时会自动调用此函数,以下是Save()主要的代码部分。if(Action="Add")string strSql="insert into Usr_Medicine(MedicineId,ChineseName,EnglishName,ShortName,CommandName,Spec,Pre,Attribute,Water,Type,Sort,Unit,Area,Factory,IsDelete,Remark,Maintain,Storage) values('"+ this.txtMedicineNo.Text.Trim().ToString() +"','"+ this.txtChName.Text.ToString() +"','"+ this.txtEnName.Text.Trim().ToString() +"','"+ this.txtShortName.Text.Trim().ToString() +"','"+ this.txtCommandName.Text.Trim().ToString()+"','"+ this.txtSpec.Text.Trim().ToString() +"','"+ this.cboPre.Text.Trim().ToString() +"','"+ this.cboAttribute.Text.Trim().ToString() +"','"+ this.cboWater.Text.Trim().ToString() +"','"+ this.cboType.Text.Trim().ToString() +"','"+ this.cboSort.Text.Trim().ToString() +"','"+ this.cboUnit.Text.Trim().ToString() +"','"+ this.cboPlace.Text.Trim().ToString() +"','"+ this.txtFactory.Text.Trim().ToString() +"','0','"+ this.txtRemark.Text.Trim().ToString() +"','"+ this.cboMaintain.Text.Trim().ToString() +"','"+ this.cboStorage.Text.Trim().ToString() +"')"DB.ExecNonSql(strSql);MessageBox.Show(“数据添加成功”,”系统提示” , System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Information;用户选择更新时同样可以用以上代码进行实现,查询功能可以实现模糊查询,可以记录各个控件输入的信息,然后通过查询数据库,最后通过调用ShowData()函数来实现查询显示结果功能。用户的管理主要实现用户基本信息和角色、权限管理功能,在信息的添加、更新时先判断用户是否存在然后在将用户信息存入数据库中,删除用户可以直接调用相关函数直接删除数据库中相应数据。4.1.2 采购管理模块代码实现该模块主要完成采购收获、采购退货的记录功能,该功能的实现主要是通过查询供应商和药品信息后然后通过用户的选择在将采购收货、退货信息保存到数据库中。查询供应商和药品信息功能是通过调用药品基本信息查询信息、供应商信息中的查询功能实现的,用户选择保存和打印采购信息的实现是通过调用Save()函数、Print()函数实现的。Save()函数的实现首先是判断一些必须输入的信息是否为空,然后在将输入的信息(可能是多条信息)进行保存,以下是保存数据的主要代码。sendSQL="insert into Usr_In(InId,CoustomId,InDate,PayType,CheckMan,CheckResult,Amount,Money,Operator,State,Remark) values('"+ this.GetInId().Trim()+"','"+ this.cboSupply.Text.Trim() +"', '"+ DateTime.Parse(this.txtDate.Text) +"' ,'"+ this.cboPayType.Text.Trim() +"','"+ this.txtCheckMan.Text.Trim() +"','"+ this.cboCheck.Text.Trim() +"',"+ Convert.ToDecimal(this.sbCount.Text.Trim() +","+ Convert.ToDecimal(this.sbSum.Text.Trim() +",'"+ this.sbUser.Text.Trim() +"','1','"+ this.txtRemark.Text.Trim() +"')"DB.ExecNonSql(sendSQL);MessageBox.Show("操作已经成功,收货单:【"+ this.GetInId().Trim() +"】已经保存!","系统提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Information);4.1.3 销售管理模块代码实现销售管理模块主要实现销售开单、订单、退单的功能,这些功能的实现基本是类似的都是先进行客户信息、药品信息然后记录购买药品数量金额等信息,最后将这些数据存入数据库。销售订单的实现是先判断药品以及客户的必要信息是否成功填入,然后调用Save()函数来实现保存,同时可以调用Print()函数来实现打印功能,打印功能的实现首先是设置打印的一些基本参数,然后调用系统函数进行打印,以下是打印函数实现的主要代码部分。misGoldPrinter.DocumentName="报表中心"Title title = new Title();title.Text = cs.csConst.strPrintSaleCaption;misGoldPrinter.Title = title;if (print)misGoldPrinter.Print();elsemisGoldPrinter.Preview();4.1.4 库存管理模块代码实现库存管理模块实现的功能是实现对药品出入库记录、药品的库存下限提醒、药品的养护方式查询、药品报损以及根据销售信息更新库存信息等功能。实现药品的出入库记录主要是查询功能,通过查询Usr_BaseInOut表中的数据,将查到的结果显示并且可以保存。库存下限功能实现是通过查询药品的下限表将与用户规定的期限的药品显示出来,药品的养护方式、药品报损也是采取同样的方法实现的。更新库存信息功能是根据销售的单据进行更新操作的,首先通过查询销售信息然后通过调用数据更新函数frmBaseManageMent_Load(),以下是数据更新函数的主要代码。TrysendSQL="SELECT Usr_Gathing.GathingId, Usr_Sale.SaleId, Usr_Coustom.ChineseName,Usr_Gathing.Amount, Usr_Gathing.Money, Usr_Gathing.PayType,Usr_Gathing.Remark FROM Usr_Gathing INNER JOIN Usr_Sale ON Usr_Gathing.BillNo = Usr_Sale.SaleId INNER JOIN Usr_Coustom ON Usr_Gathing.CoustomId = Usr_Coustom.CoustomId where state='2'"this.setDataSaleList(sendS