为什么两个货单是连在一起的,一个已经收货单格式,另一个连单号都查不到?100282615249

请问什么软件打印发货单,打印快递单,要连打的,比较好?还有推荐一个打印机。_百度知道
请问什么软件打印发货单,打印快递单,要连打的,比较好?还有推荐一个打印机。
淘打用了,单号老出错而且会重复打发货单,而且合并订单有时候合并有时候又不合并。淘宝助理打发货单有问题,金额显示不全,网店管家研究了半天不知道哪里可以打发货单。收费和免费都无所谓,只要好用就行,不出错就行。当然还要能批量发货的。我的是天猫商城。还有打印机推荐一个,目前是爱普生LQ-630,旦厂测断爻登诧券超猾表现不太好,不满意。推荐一个不错的打印机吧,最好带切纸,速度快,不容易卡纸的。回答好的有追加~
贝贝打淘宝快递单打印软件☆技术标准:基于淘宝开放平台,实时读取淘宝订单数据,批量打印快递单,批量打印送货单,批量发货,批量发送短信,批量评价 ☆支持快递:EMS快递单 申通快递单 圆通快递 顺丰快递等,系统提供自己设旦厂测断爻登诧券超猾计功能,可以打印任何快递单功能特色1、系统自动读取淘宝订单数据,快递单再也不用填了。2、快递单可以批量打印,点一下鼠标,几分钟就可以打印上百张快递单,并自动记录快递单号。3、在线批量发货,点一下鼠标,1分钟完成上百张订单发货,再也不用一个一个输入快递单号,一个一个点发货。4、批量发送短信,发货后点发送短信,自动将发货日期、快递单号等信息发送到买家手机。5、利用贝贝打软件平台,向几百万卖家推广你的宝贝,增加你宝贝的点击率。6、在线查看物流流转信息,客户签收情况。在线旺旺联系买家。7、送货单打印,自动取得淘宝订单信息,生成送货单并打印
其他类似问题
您可能关注的推广回答者:
其他8条回答
如果只是考虑打印软件的话,我建议楼主去看看极速软件,主要是价格便宜,订单打印、拆旦厂测断爻登诧券超猾分合并也还好,最大的优点是跟物流公司有接口的,所以送货的准确性比较高,经常更新,配送范围比较精准。不好的地方是对订单的处理,要把订单手动下载到软件中来进行,不能自动下载,而且只是打单软件。像电子商务也是工作流的概念,效率的提升是靠各环节共同提升来完成的。如果能接受的起价格的话,可以考虑管易ERP,他们的客户比较多,打印机,爱普森也还好吧,这个我还真不太清楚了,我是管易公司的。要不
我帮你打听下。
聚才快递单打印软件可以免费试用1.批量连打,可以输入连号的快递单号,也可用扫描枪输入快递单号,减少出错机会。2.重复打印提示功能可以防止重复打印重复发货。3.可以自动合并相同买家并且相同收货地址的订单。4.可以打印发货单,自定义发货单内容与格式满足您的需要。5.批量发货功能,一键回写快递单号到淘宝/拍拍后台。6.大批量订单处理能力,具备功能非富的订单管理功能,日处理订单能力可达数千单,聚划算2万单实战经验。针式打印机爱普生是首选,质量可靠,如果需要打印速度快的话,可以选择 爱普生1600KIIIH,LQ1900KII+。打印发货单可以选择中间带孔的连续打印纸,一般有二等分、三等分、A4三个规格,打印后可以很容易撕开。
看来看去都是这几个混~~~~混
看来百度是搜不到了
一会我们去谷歌看看吧
网店管家有客服的,你可以访问他们网店管家官网,可以找他们售前的客服来教你,自已研究很慢的
《八爪鱼ERP系统》支持淘宝、拍拍、QQ商城、京东等主流电子商务平台,软件功能模块包括:采购管理,订单处理,CRM管理,退换货管理,绩效管理,数据统计分析,财务管理等模块。可以大大提高工作效率,避免发错货等情况发生。 可以免费试用。
商城 量大,不清楚,,不知道有没有网店板,,打印机的话 用爱普生680
又快又不卡纸,
咨询淘宝云客服
百度一下 飚风快递单打印软免费版
发货单的相关知识
等待您来回答
为您推荐:
下载知道APP
随时随地咨询
出门在外也不愁您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
毕业论文_连锁超市进销存系统的分析、设计与实现.doc48页
本文档一共被下载:
次 ,您可免费全文在线阅读后下载本文档
文档加载中...广告还剩秒
需要金币:150 &&
你可能关注的文档:
··········
··········
本文以小型连锁超市为研究对象,综述了目前连锁超市进销存系统的现状。根据当前超市的工作流程,开发了小型连锁超市进销存系统。本文以生命周期法作为开发方法,在需求分析的基础之上,做了详细的系统设计。包括总体结构设计、功能模块设计、网络结构设计以及系统平台的选择。由于连锁超市管理错综复杂、品种繁多,所以论文有选择地突出了数据库设计部分、程序设计部分。本系统的界面借鉴了“易飞ERP系统”的风格,并且通过程序实现了第三方控件dbtreeview的功能。
关键词:进销存管理,信息系统,MIS系统
This thesis regards small-scale chain supermarket as research object, summarized the current situation of chain supermarket's purchase、 sell and store system at present, according to the workflow of the present supermarket, develop a purchase、sell and store system of the small-scale chain supermarket. I regard cycle law of the life as the systematic development method, have made detailed system excogitation which that base on the analysis of requirement. It includes the design of whole ensemble architecture, function module design, network structure and choose platform of the system. Because the chain supermarket manages are intricately, the goods are various, so the thesis focus on the design database and the procedure design. The system’s interface draws lessons from the interface style " yifei ERP system ", and has realized the third party controlling part dbtreeview's function through the procedure .
Key words:
management, system of information, system of MIS
1.1课题背景 1
1.2国内外概况 1
1.3主要研究工作 3
超市进销存系统设计 5
2.1进销存业务需求分析 5
2.2超市MIS系统结构分析 6
2.3业务系统功能模块设计 8
2.4总部管理局域网络系统结构 9
2.5连锁超市分
正在加载中,请稍后...当前位置:
Delphi+SQL Server小型连锁超市进销存系统
来源: 联系QQ: 作者: 网学
发布时间: 09/06/28
本文以小型连锁超市为研究对象,综述了目前连锁超市进销存系统的现状。根据当前超市的工作流程,开发了小型连锁超市进销存系统。本文以生命周期法作为开发方法,在需求分析的基础之上,做了详细的系统设计。包括总体结构设计、功能模块设计、网络结构设计以及系统平台的选择。由于连锁超市管理错综复杂、品种繁多,所以论文有选择地突出了数据库设计部分、程序设计部分。本系统的界面借鉴了“易飞ERP系统”的风格,并且通过实现了第三方控件dbtreeview的功能。&
关键词:进销存管理,信息系统,MIS系统
This thesis regards small-scale chain supermarket as research object, summarized the current situation of chain supermarket's purchase、 sell and store system at present, according to the workflow of the present supermarket, develop a purchase、sell and store system of the small-scale chain supermarket. I regard cycle law of the life as the systematic development method, have made detailed system excogitation which that base on the analysis of requirement. It includes the design of whole ensemble architecture, function module design, network structure and choose platform of the system. Because the chain supermarket manages are intricately, the goods are various, so the thesis focus on the design database and the procedure design. The system’s interface draws lessons from the interface style " yifei ERP system ", and has realized the third party controlling part dbtreeview's function through the procedure .
Key words: purchase、sell and stock management, system of information, system of MIS203
第1章& 引言... 1
1.1课题背景... 1
1.2国内外概况... 1
1.3主要研究工作... 3
第2章& 超市进销存系统设计... 5
2.1进销存业务需求分析... 5
2.2超市MIS系统结构分析... 6
2.3业务系统功能模块设计... 8
2.4总部管理局域网络系统结构... 9
2.5连锁超市分店系统结构... 10
第3章& 超市进销存数据库设计... 11
3.1数据库设计工具的选择... 11
3.2 数据库逻辑结构设计... 11
3.3 SQL应用... 19
第4章& 超市进销存实现... 20
4.1设计所用的主要技术... 20
4.2登陆界面设计... 20
4.3各个模块功能叙述... 22
4.3.1系统管理... 22
4.3.2商品管理... 22
4.3.3库存管理... 24
4.3.4采购管理... 26
4.3.5店内卡管理... 26
4.3.6销售管理... 26
4.3.7统计分析... 27
4.3.8货架管理... 28
4.3.9人事管理... 28
4.3.10销售薪资管理... 30
4.3.11报表设计... 31
4.4设计小结... 32
结论... 33
致谢... 34
参考文献... 35
附件... 203&
第1章& 引言
1.1课题背景
人类已经跨入了新世纪,正在进入信息时代。我国国民经济和社会发展第十个五年计划将国民经济和社会信息化作为覆盖现代化建设全局的战略举措,要求加速发展信息产业,大力推进信息化。现在信息技术的应用越来越普及,不但促进了社会的高速发展,也改变着人们的工作、、生活和娱乐的方式以及思想观念。随着计算机的日益普及,计算机软件无处不在。软件在的发展和应用中至关重要,在人类进入信息化社会时成为新兴信息产业的支柱。
信息作为信息科学中最基本、最重要的元素,指的是经过加工处理之后的一种数据形式,是一种有次序的符号排列,是系统传输和处理的对象,它能够提高人们对事物认识的深刻度,可以帮助人们制定工作计划,提高工作效率。信息具有可识别性、可变性、可存储性、可处理性、可再生性、有效性和无效性等一系列特性。现代社会信息无处不在,每时每刻都传递着大量的有用和无用的信息,为了能在竞争日益激烈的社会中求得生存、谋求更大的发展,除拥有独特的先决条件外,就是注重对信息价值的利用,管理信息系统也因此因运而生,它采用科学的、有效的手段,对信息加以分析,去其糟粕,取其精华,通过建立一个有效的新系统使企事业的各项活动能够达到提高工作效率,最终提高经济效益和社会效益的目的。鉴于信息管理系统的如此功能,使其一出现就受到社会各行各业的重视,与、网络技术融为一体,为大多数企业所选用[1]。
信息管理系统(MIS)是集技术、网络通信技术为一体的信息系统工程,它能够使企业运行的数据更加准确、及时、全面、详实、同时对各种信息进一步地加工,使企业领导层对生产、经营的决策依据更充分,更具有合理性和科学性,并创造出更多的发展机会;另外也进一步加强企业的科学化、合理化、制度化、规范化管理,为企业的管理水平跨上新台阶,为企业持续、健康、稳定的发展打下基础。
超市管理信息系统是在服务行业的具体应用,本系统是根据当前超市的工作流程而设计的,它包括超市的各个环节,从供应商到顾客的每个环节都很重要,既要对商品的管理,也有对员工、顾客的管理。
1.2国内外概况
20世纪,随着全球经济的蓬勃发展,众多经济学家纷纷提出了新的管理理论。20世纪50年代,西蒙提出了管理依赖于信息和决策的思想。同时期的维纳发表了控制论,他认为管理是一个控制过程。1958年,盖尔写到:“管理将以较低的成本得到及时准确&
的信息,做到较好的控制”。这个时期,开始用于会计工作。数据处理一词已经出现。
1970年,Walter T.Kennevan给刚刚出现的管理信息系统一词下了一个定义:“以口头或书面的形式,在合适的时间向经理、职员以及外界人员提供过去的、现在的、预测未来的有关企业内部及其环境的信息,以帮助他们进行决策”。在这个定义里强调了用信息支持决策,但并没有强调应用模型,没有提到的应用[2]。
1985年,管理信息系统的创始人,明尼苏达大学的管理学教授Gordon B.Davis给了管理信息系统一个较完整的定义,即“管理信息系统是一个利用软硬件资源以及数据库的人-机系统。它能提供支持企业或组织的运行、管理和决策的信息。”这个定义全面地说明了管理信息系统的目标、功能和组成,而且反映了管理信息系统在当时达到的水平[3]。
管理信息系统起初应用于最基础的工作,如打印报表、计算工资、人事管理等,进而发展到企业财务管理、库存管理等单项业务管理,这属于电子数据处理(EDP,Electronic Data Processing)系统。当企业建立了数据库,有了计算机网络从而达到数据共享后,从系统观点出发,实施全局规划和设计信息系统时,就达到管理信息系统的阶段。随着技术的进步和人们对系统的需求进一步提高,人们更加强调管理信息系统能否支持企业高层领导的决策这一功能,更侧重于企业外部信息的收集、综合数据库、模型库、方法库和其他人工智能工具能否直接面向决策者,这是决策支持系统(DSS,Decision Support System)的任务。
我国20世纪70年代末有少数企业开始MIS的局部应用,在90年代才随着计算机的普及兴起开发各类MIS系统。目前国内使用和发展的MIS平台模式大体上分为两种:客户机/服务器(Client/Server,简称C/S)模式Web浏览器/服务器(Browser/Server,简称B/S)模式。国外,在很多大型的零售业集团他们现在的企业信息化已经相当成熟,比如沃尔马,家乐福,他们对每个环节都能很好的控制,在物流,配送,超市和连锁等方面得到广泛的应用。
中国内地超市市场起步于1990年,目前其营业额已经占社会商品零售总额的5%,发展前景良好。但随着国内电脑技术的发展和普及,同时市场环境快速多变,超市行业竞争激烈,加上超市自身的行业特点,超市企业急需提高内部管理水平,因此采用专业的管理系统已成为必然趋势。国内的零售业,在国外商业的示范下,国内商业业态和店铺数目发展加快,行业内的竞争也日趋白热化。自1996年沃尔马,家乐福等国际知名连锁超市集团纷纷在中国登陆以后,他们在中国取得了稳定可喜的发展,加入WTO后,更加快了在中国的发展步伐。对于国内的零售业,只有发展连锁经营,追求规模效益,确保信息技术共享,商品资源共享,采购和配送共享,进而才能使以顾客为中心的供应链(供应商,企业,顾客)的资金流,物流和信息流得到最优利用。因此建立一&
套适合本企业的管理信息系统是企业赖以生存和发展的必要条件,不然,社会的网络化配送,集团式的大规模采购,有效期产品报警和最佳库存管理都将很难实现,而且难以降低人工成本。
1.3主要研究工作
管理信息系统在企业中的应用存在三个要素,这就是人、计算机和数据。人是指企业领导者、管理人员、技术人员,以及MIS建设的领导机构和实施机构,他们在系统中起主导作用。MIS是一项系统工程,不是只靠一些计算机开发人员就可以完成的,必须有企业管理人员,尤其是企业领导的积极参与。计算机技术是MIS得以实施的主要技术。在这些技术中,软件开发是MIS开发的重点。但是第三个因素也不能忽视,企业的管理数据是MIS正常运行的基础。广义地说,各项管理制度是MIS建设成功的基础。
在计算机软件技术中,人机界面已经发展成为一个重要的分支。MIS人机界面设计一般遵循以下一些基本原则:
1.以通信功能作为界面设计的核心
人机界面设计的关键是使人与计算机之间能够准确地交流信息。一方面,人向计算机输入信息时应当尽量采取自然的方式;另一方面,计算机向人传递的信息必须准确,不致引起误解或混乱。另外,不要把内部的处理、加工与人机界面混在一起(人机界面只是通信),以免互相干扰,影响速度。
设计MIS时,针对每一个功能,都要按照“I-P-O”的模块化思想,使输入、处理与输出“泾渭分明”,充分体现人机界面的通信功能。这样设计出来的不易出错,而且易于维护。
报表打印是MIS必备的功能之一,而且打印之前常常需要计算。计算与打印分开设计,虽然消耗时间,但易于整个MIS系统的维护。
2.界面必须始终一致
统一的人机界面不至于会增加用户的负担,让用户始终用同一种方式思考与操作。最忌讳的是每换一个屏幕用户就要换一套操作命令与操作方法。例如在整个系统可以以问号图标表示帮助,以磁盘图标表示存盘,以打印机图标表示打印等。
3.界面必须使用户随时掌握任务的进展情况
人机界面应该能够告诉用户软件运行的进度。特别是在需要较长时间的等待时,必须让用户了解工作进展情况,如可以设计已经完成了百分之几的任务进度条等。目前,Windows下的应用软件无论大小,其安装几乎均做到了这一点。开发MIS软件时,这一点很值得借鉴。
4.界面必须能够提供帮助&
一个优秀的MIS软件应该提供在线求助功能,甚至提供使用向导,这将给用户带来极大的方便。在多媒体环境下,以语音提示作为操作向导,不会干扰屏幕信息,是一个极佳的选择。
5.界面友好、使用方便
多数MIS软件的数据输入量较大。对于一些相对固定的数据,不应让用户频频输入(特别是汉字),而应让用户用鼠标轻松选择。例如,人事管理系统中的“文化程度”是相对固定的数据,其值一般取“小学”、“初中”、“高中”、“大专”、“大本”、“硕研”、“博研”等。录入这类数据之前,MIS软件应在相应位置弹出一个列表框,待用户以鼠标点击,而不应让用户每次都输入这些汉字。
另外,开发者应编写一个错误实时记录程序,自动记录何日、何时、何出了何种错误。
总之,所开发的MIS在使用过程中,应使用户的数据输入量降至最低限度,同时也要减少用户的干预量。实践证明,用户干预愈少,MIS系统的满意程度愈高。[3]
6.输入画面尽可能接近实际
如果某个电算会计软件的凭证录入画面是表格式的,一屏可录入多条记录,而且与实际凭证一模一样,甚至连颜色都无异,用户在终端上录入凭证,仿佛用笔在纸上填写凭证,以增加人机亲和力。
7.具有较强的容错功能
误操作、按键连击等均有可能导致数据误录,巧妙地进行设计,可以避免此类因素造成的错误。
本系统采用结构化生命周期开发方法这一自上而下的软件设计方法,按照要求划分出功能子系统及功能模块,先设计出主控模块,然后逐层往下设计,直到各模块底层[4]。&
第2章& 超市进销存系统设计
2.1进销存业务需求分析
在市场经济中,随着竞争的日益激烈,如何降低成本越来越成为企业要解决的首要。对生产型企业来讲,这涉及到原材料的进货渠道、销售情况及库存管理等方面的管理,管理的好坏对企业至关重要。而对经销商而言,渠道扁平化已是大势所趋,这使经销商对产品的库存管理合理化提出了更高的要求。而超市作为一个企业,对员工、顾客、供应商、商品、销售都必须管理。企业应用进销存系统可有效控制和跟踪企业的采购、销售、及仓库业务的全过程,减少盲目采购、降低采购成本、合理控制库存、减少资金占用并提高市场灵敏度,利用计算机进行自动补货,提高信息传输效率,减少人工成本,提升企业市场竞争力。
销售情况是公司商品采购商品的重要数据来源,库存管理是企业商品管理的核心,它将进货管理和销售管理连接起来共同组成一个完整的企业商品管理系统。存货管理可以帮助企业仓库管理人员对库存商品进行详尽、全面的控制和管理,帮助库存会计进行库存商品的核算,提供的各种库存分析报表,为企业的决策提供依据,从而实现降低库存和减少资金占用,避免物品积压或短缺,保证企业经营活动顺利进行。库存管理由入库、出库管理、商品报残、商品报损构成。货架管理则可以很快的知道当前货架上货物的数量,避免出现仓库中有货而货架上缺货的情况[5]。
小型连锁超市进销存系统主要是根据商品的销售情况做出比较合理的采购计划,以及对超市的各个部门的管理、顾客的管理。通常情况下应该有如下功能:
1、从配送中心能很准确的了解各分店商品的产品结构。
2、在各个分店能根据当前的库存自动的生成配送请求,通过对货架上摆货量的管理生成提货单,提高信息的传输率,减少了人工成本。
3、能对各个部门的人员进行管理,包括员工的考勤,工资等等。
4、为了吸引顾客超市有会员卡、储值卡、积分卡给顾客优惠,储值卡也是由银行制作的,但是卖出时是空的,与此同时也要能进行银行卡的刷卡消费(他和储值卡是分开的,用不同的刷卡机),这能给顾客带来很大的方便,这就要求超市有专门的银行POS系统。
5、为了很好的了解商品间的潜在关系,以及商品的潜在市场,通常要对销售情况进行分析,这要用到数据仓库中的有关知识,比如关联规则,从无杂的数据中发现有规律的数据,与此同时要对市场进行预测。
6、由于生鲜部产品的特殊情况,生鲜产品的供应由生鲜部自己向供应商订货
7、能打印各种报表,特别是财务报表,在超市里通常有四种销售方式,代销、经销、联营、租赁,对于每一种销售方式的税收不一样,特别是租赁,超市只用交营业税, 商品的增值由租赁人承担[6][7]。
2.2超市MIS系统结构分析
& &连锁超市系统主要包括总部,配送中心,连锁分店。总部对这个连锁经营模式的超市进行绝对的控制,各个分店没有进货的权利,所有的商品由配送中心负责配送,各个连锁门店负责商品的销售[8]。
连锁超市系统从职能上分为总部,配送中心,下属多个分店等机构构成,总部和分部的网络结构如图2-1,其数据流程图如图2-2,各个部分的职能描述如下:
1、总部职能:总部设置采购部、管理部和财务部。采购部负责和供应商签订合同,采购商品。管理部负责高层的领导,制定企业的发展战略,企业文化的建立以及员工的培训、升调等。财务部负责每月结算,向供应商付款,给员工发工资,交税等等。
2、配送中心:各个分店没有进货权,配送中心可以主动向分店配送商品,或者在分店缺货时,根据分店向配送中心发出的配送请求,由配送中心开配送单,随货物一起到分店。
3、门店:在总部的统一指导下,直接面对顾客,实现商品价值的渠道,主要承担要货、收货、商品促销计划的拟订、各种店内卡的使用以及对前台销售的管理,同时,向总部上报销售情况,如有缺货,向总部提出供货请求。其组织结构图如图2-3。
.3业务系统功能模块设计
对系统分析各项功能进行集中、分块,按照结构化设计的要求,系统可分为11个功能模块。
1、系统管理,包括用户管理,基本信息,编码管理,参数设置模块等。
2、商品管理,对商品基本档案的建立,根据商品的进价设置其不同的价格和进行调价管理。
3、库存管理,包括对商品的所有入库、出库操作,以及商品的报损和抱残、单据的。
4、采购管理,有供应商档案管理,订货管理,采购单据的。
5、销售管理,对pos前端机管理、促销管理、后台开单销售、销售退换货处理和销售的。
6、店内卡管理,对持有卡顾客基本信息的管理,卡的发放、终止、续办、换卡、充值,以及各种卡的。
7、统计分析,包括库存分析、销售分析2个子模块。
8、人事管理,对员工基本信息的管理,人事调动,员工考勤等。
9、工资管理,基本工资的设定,津贴、保险的管理,工资计算公式的设定,每月要计算员工的工资。
10、报表设计,对于每个企业都必须有完整的财务报表,这是对公司的古董负责。
11、货架管理,库存只反映仓库里的情况不能反映在卖厂货架上是否有商品,因此必须对当客能否拿到商品有明确的了解,包括生成提货单,录入更新数据。
系统功能模块图如图2-4所示[9]。&
2.4总部管理局域网络系统结构
总部局域网作为经营的核心,承担管理重要的工作,并向各分店发送商品信息,向配送中心发配送信息、各分店的商品信息进行汇总分析等各项任务,是管理信息系统的核心系统,为此,应具有很高的安全性、可靠性。它的网络结构如图2-5。
2.5连锁超市分店系统结构&
各分店进行商品销售,并负责上传商品销售信息,其网络结构示意图如图2-6。能够保证超市的正常销售是超市经营的一个重要原则,因此要有一个单独的pos机―pos服务器体系。Pos服务器的个数根据超市的业务量的大小,pos机的多少来设定,一般采用一台pc主服务器。收款系统设计为pos机―pos服务器―pc服务器三级结构,即可以与后台系统相连,也可以单独使用。系统为pos设置了专用的服务器,这可以把销售业务与后台业务隔离开来,当网络不通时,pos机和pos服务器都可以单独工作,当网络通畅后能够将数据及时、完整地传到后台,不影响前台收款工作。
第3章& 超市进销存数据库设计
3.1数据库设计工具的选择
从技术上看,我只接触过Access和SQL Server 数据库,在性能上Access侧重用于日常办公,使用简单,可以对数据库加密,指定登录密码,但其安全机制不如SQL Server好,SQL Server在两种级别上验证用户,登录身份验证和对数据库用户帐户和角色的许可权限。在SQL Server中有三种角色,一是固定服务器角色,服务器级别的组管理特权;二是固定数据库角色,数据库级别的组管理特权;三是用户自定义数据库角色,组织内部雇员分组的组管理特权。另一方面整个系统的开发基于客户/服务器体系结构,SQL Server 正好是一个客户/服务器关系式数据库系统,对客户/服务器用户的一个主要挑战就是中央管理跨整个企业范围内的多个服务器,SQL Server用一个称为分布式管理框架(DMF)的企业级系统管理框架来迎接挑战,DMF由SQL Server Enterprise Manage、Distributed Management Object(DMO)、SQL Server 引擎和管理器的服务核心组件SQL Executive 组成。而Access没有分布式的管理,最终我选择SQL Server作为数据库的开发工具[10][11]。用SQL Server做数据库,安全稳定,对数据填报、查阅、修改权限严格控制。的界面设计采用Delphi,它是目前最强大的数据库开发工具,两者的结合,使整个连锁超市系统具有良好的稳定性和安全性。
用户的需求具体体现在各种信息的提供,保存更新和等方面。这就要求数据库结构能充分满足各种信息的输入和输出。收集基本数据,数据结构以及数据处理的流程,组成一份详尽的数据字典,为数据库具体设计做好充分的准备[14]。
3.2 数据库逻辑结构设计
根据数据流程图得到数据库的E-R模型,转化成SQL Server数据库系统所支持的实际数据库模型,也就是数据库的逻辑结构[15]。连锁超市进销存系统数据库设计结果如下:
表2-1商品基本档案表:spjbxx
数据类型(长度)
Char(10)
供应商编码
续表2-1商品基本档案
数据类型(长度)
保质期限(天)
商品质量级别
Datetime(8)
&&&&&&&&&&&&&&&&&&& 列名
数据类型(长度)
表2-2商品部信息表:spbxx
&&&&&&&&&&&&&&&&&&&& 列名
数据类型(长度)
商品部编码
商品类型名称
表2-3出库表:ckb
数据类型(长度)
出库单据号
对方门店编码
Datatime(8)
对应申请单号
表2-4出库明细:ckmx
数据类型(长度)
出库单据号
表2-5入库表:rkb
数据类型(长度)
入库单据号
Char(12)
Char(14)
Char(11)
对方门店编码
Char(11)
Datatime(8)
表2-6入库明细表:rkmx
数据类型(长度)
入库单据号
Char(12)
Char(10)
表2-7库存表:kcb
数据类型(长度)
进货最小包裹量
提前定货期
表2-8供应商基本信息表:gysjbxx
数据类型(长度)
供应商编码
供应商名称
续表2-8供应商基本信息表:gysjbxx
数据类型(长度)
表2-9员工基本信息表:ygjbqk
数据类型(长度)
工作岗位代码
Datatime(8)
开始本公司上班时间
Datatime(8)
Datatime(8)
表2-10用户表:yhb
数据类型(C
员工号(用户名)
表2-11持卡人基本档案
持卡人姓名
Datatime(8)
Datatime(8)
表2-12充值卡充值表:czb
Datetime(8)
表2-13调价表:tjb
调价单据号
Datetime(8)
是否通过审批
表2-14调价明细表:tjmx&
调价单据号
调价商品编码
是否通过审批
表2-15促销总表:cxzb
促销单据号
是否通过审批
表2-16时段促销表:sdcxmx
促销单据号
促销开始时间
Datetime(8)
促销结束时间
Datetime(8)
是否通过审批
表2-17定量促销表:dlcxmx
促销单据号
促销开始时间
Datetime(8)
是否通过审批
续表2-17定量促销表:dlcxmx
表2-18组合促销表:zhcxb
组合商品编码
促销单据号
促销开始时间
Datetime(8)
促销结束时间
Datetime(8)
是否通过审批
表2-19组合促销明细:zhcxmx
组合商品编码
Datetime(8)
表2-20津贴表:jtb
Datetime(8)
表2-21医疗保险:yb
Datetime(8)
医疗报销费用
工作岗位代码
标准基本工资
岗位权利范围
表2-23月工资表:yjzb
报销、保险
表2-24配送请求:psqq
配送单据号
申请门店编码
Datetime(8)
是否通过审批
表2-25配送请求明细:psqq
请购单据号
Datetime(8)
是否通过审批
表2-26采购单:cgd
数据类型(长度)
采购单据号
供应商编码
是否通过审批
表2-26采购单:cgd&
数据类型(长度)
表2-27采购明细单
数据类型(长度)
采购单据号
是否通过审批
3.3 SQL应用
数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表达信息,简而言之,数据库就是信息的集合。计算机的数据库可以分为两类:非关系数据库(flat-file)和关系数据库(relational)。关系数据库中包含了多个数据表的信息,数据库含有各个不同部分的术语,象记录、域等。在SQL Server的客户端建立数据库以及上诉表[16]。在创建表以及后面的程序设计过程中主要用到了SQL语句。
SQL是结构化查询语言(Structured Query Language)的缩写。它实际上包含、定义、操纵和控制4个部分,是一种功能齐全的数据库语言。SQL的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI的规定,SQL语句可以用来执行各种各样的操作,例如更新数据,提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Oracle、Sybase、Microsoft SOL Server、Access等都采用了标准SQL语言(ANSI SQL)。SQL是一种过程化的语言。它用专门的数据库技术和数学算法来提高对数据库的访问速度,因此,使用SQL语言通常比自己编写过程来访问和操作数据库要快得多。&
第4章& 超市进销存程序实现
4.1设计所用的主要技术
  在进行界面与数据的接口中,我选用的是Ado,它比BDE的功能要强,而且设置也要简单,不用自己在ODBC中设置。
Ado是ActiveX Data Object的缩写,它是Microsoft数据库应用程序开发新接口,是Microsoft新的数据访问技术,是建立在OLE DB之上的高层数据库访问技术。ADO被设计用来同新的数据访问层OLE DB Provider一起协同工作,以提供通用数据访问(Universal Data Access)。OLE DB是一个低层的数据访问接口,用它可以访问各种数据源,包括传统的关系型数据库,以及电子邮件系统及自定义的商业对象。
即使对OLE DB、COM不了解也能轻松使用ADO,因为它非常简单易用,甚至比DAO都要简单易用,并不失灵活性。ADO提供了一个熟悉的,高层的对OLE DB的自动封装接口。如同RDO对象是ODBC驱动程序接口一样,ADO对象是OLE DB的接口;如同不同的数据库需要它们自己ODBC驱动程序一样,不同的数据源要求它们自己的OLE DB提供者(OLE DB Provider)。虽然目前OLE DB提供者比较少,但微软正积极推广该技术,并打算用OLE DB取代ODBC。
ADO向Delphi程序员提供了很多好处,包括易于使用、熟悉的界面,高速度以及较低的内存占用(已实现ADO2.0的Msado15.dll需要占用342KB内存,大约是DAO3.5所占内存的60%)。同传统的数据对象层次(DAO和RDO)不同,ADO可以独立创建,因此可以只创建一个“Connection”对象,但是可以有多个,独立的“Record Set”对象来使用它,另外ADO针对客户服务器以及Web应用程序作了优化。
ADO最基本的操作流程:初始化COM库,引入ADO库定义文件;用Connection对象连接数据库;利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Record Set对象取得结果记录集进行、处理;使用完毕后关闭连接释放对象[12][13]。
4.2登陆界面设计
在这一阶段主要的任务是进行编程工作,把所有的功能按照需求分析所描述的那样实现即可,我个人认为就是读、写数据库,数据库的结构设计好了就比较好做,没有很深的算法等技术要求。
登陆界面设计,用户名可以是自己输入,也可以从系统的用户表中取,界面如下图4-1,在登陆之后可以进行密码修改,密码修改窗口如图4-2.[17]&
会弹出修改是否成功,以及是是否重新登陆对话框
下面是主窗口的设计,界面如下图4-3,这个界面设计借鉴于易飞ERP系统的界面风格,左边用了win32面板下的treeview控件,所有的节点全部来自于系统的功能表,可以添加节点,也可以删除节点,但是删除节点时必须子节点为空。点击根节点时显示该模块的流程图,可以帮助了解系统的流程,点击叶子节点时右边显示相应的窗口。
显示当前用户权限&
4.3各个模块功能叙述
4.3.1系统管理
&& 系统管理实现的功能是对软件系统的基本信息进行设定和管理,主要的功能有:
1、 用户管理、权限管理,本系统中,根据每个人所在的部门和职位来确定他所拥有的权限,比如行政部的人员就不能看人事部的相关数据。其界面如下图4-4,
1)增加、修改、删除用户;
2)设置用户密码;
3)对用户的权限进行修改、收回权限。
点击后左边的控件才能用
2、基本信息,组织机构管理,对连锁超市的各级组织部门进行管理,并对组织机构名称、性质进行定义说明,以及仓库的相关信息;商品初始化,提供对老系统原有商品信息进行大批量录入的信息入口。
3、编码管理,他包括对各分店的编码、员工的编码、商品类别编码、地区编码等一系列的编码管理,并且可以利用数据字典和更改有关的数据。。&4、对系统使用的公共参数进行设定,可控制程序的走向,满足用户的个性化需求,如前台打印小票样式、补货方式、单据单号是否自动生成[17]。
4.3.2商品管理
商品管理模块实现的是对商品基本信息的管理,在这个模块中可以看到各个门店以及总部的商品目录结构,可以查看到当前某个商品的货架摆放量和仓库的库存量,也可以看到组合商品的明细构成,其主要的功能包括:&
1、商品基本信息管理,本系统中分为两个页面设计。在添加商品页面中,可以添加新的商品和删除某些商品,但是删除时,必须仓库和货架上都没有了这种商品。本系统每个商品可录入条码,名称等用于商品管理的基本信息。浏览商品页面,本系统中录入了多种商品,他们的分类在左边,将商品的大类和小类分得很清楚,点击左边的节点时可以在中间的表格中显示相应的商品的情况,下面两张表显示商品的库存和当前货架上的摆放情况。商品的树型结构也是用的treeview控件,可以动态的修改商品的类别(右键),这是本系统的创新点。在删除商品种类的节点时,必须在该类商品下没有商品了才能删除,其界面如图4-5。
选择排序字段
查找字段的值
2、定价管理,根据商品的进价、市场占有情况等一系列的因素制定相应的零售价、会员价、批发价、最低售价。一般超市有专门的价格中心,由他们来决定商品的售价。本系统只设计对于不同种类的商品自行设定比例。
3、调价管理,由于厂商的要求,或者市场的情况而对商品的价格进行调整,他有别于促销里的调价,促销调价是有起始和结束日期的,而且只能调低,而调价是只有起始日期,价格可以调高也可以调低。一旦调价单通过审核后,如变价时间为当天即时变价,价格的变动会自动实时的反映到前台收款POS机中;而对于起始变价时间不为当天的情况,调价单会成为待执行变价单,当变价时间到来时,系统会自动执行调价的存储过程,将价格的变动实时自动的传送到前台的POS机中,不需要人为&
的干预。[19]
4.3.3库存管理
在生产领域一直都在强调零库存、JIT生产,可是在流通领域,特别是服务行业没有库存是不可能的,我们只能做到最佳库存,尽最大的可能减少库存的成本,这就需要对当前的库存、销售情况十分的了解,其中的出库的流程图如图4-7。
1、商品入库:可以分为4种性质入库,a.采购入库,它由收货部来完成,供应商或配送中心或其他分店送货,根据其订货单来收货,如果合格则打印验收单,验收后防损部进行抽查。在这过程中主要检查单据(订货单、送货单)、数量(规格、单位、数量、进价) 、质量(外观、标识、标注、相关日期)。与此同时可能会有赠品的入库管理。b.销售退换货入库,必须依照销售单据即超市打印的付款小票进行退货,与此同时要变更当天的销售额,登记退货商品便于分析商品的市场情况。c.领用退回库,因为领用过多而造成的。d.生产产品入库,实际上在超市里也有生产,例如丰融超市的面包房那一片都是做“生产”的地方,他的原材料就来自于超市内部,属于销售领用。
商品出库:同样出库也有4种方式。a.采购退货,由于入库时进行的是抽查,发现质量问题后,由厂家来确认商品的质量发生损坏的原因由后,如果厂家的原因则由厂家带走商品处理,如果不是厂家的原因则商品报损或报残,以减少超市的损失。还有没有送完的赠品是要返厂的。b.销售提货,又分为两种,一种是后台开单销售,&
1、& 一是从仓库到卖厂的辗转,指的是商品从仓库移到货架上,实际上对顾客来说最直接的反映是货架上是否有商品,而不是仓库里有没有。在商品出库时,库存里的数量会发生改变,与此同时货架管理中商品的货架数量发生相应的变化。最突出的功能是当货架上的商品低于该商品的最低的摆货量时会有上货的提示,从而进行补货以满足顾客的需求。c.领用提货,领用分为行政领用(例如办公用的领用)和销售领用(例如熟食的生鲜原料来自于生鲜部)。d. 商品调拨:由于各个分店销售的商品不必也不可能包含总部商品品种的全部,同时由于各个分店所处的地理位置不同,周围环境如客流量、顾客需求和消费水平也不尽相同,这些因素都会影响到分店的销售。在某个分店畅销的商品在另一个分店就有可能出现滞销的情况。在长期的经营活动中,每个分店都形成了适合本店的商品结构树,纪录在总店的商品目录中,而每个分店只有最高领导才能看到总店及其他分店的商品结构树和其当前库存量。当某分店的某商品紧缺而配送中心没有货时,则可以从各个店的库存上看到可以从那个店中调拨。他的程序设计界面如图4-8,可以自动的选择输入多条商品,这是通过程序实现了动态选择的功能,通过审核后的单据不能再更改,保存后更改库存量和当前货架量,当库存不足时会有提示,只能出库现在有的量。
2、 商品报损:当库存的商品有损坏、丢失时通过报损功能来减少库存。
3、 商品报残:当库存的商品有损坏,但是还没有到报损的程度时就报残,通过低价销售来减少超市的损失。
1、 单据查询:提供对于各种单据的。
4.3.4采购管理
它包括供应商档案管理、定货管理、进销存。
1、供应商档案管理,管理供应商的基本信息,可添加、更改、删除、查询供应商的信息。
2、订货管理,对于仓库管理员所发出的定货申请进行审批,通过了审批的即发送定货单,订货量由三个因素决定:a,日均销售量,指一段时间的平均每天销量,一般取上月日均销售量或者取前一周日均销售量;b,库存量,现有库存量;c,送货周期(天数),从订货之日起到供应商送货所间隔的天数,因此订货量=日均销售量*送货周期-库存量。
3、进销存查询,对定货单查询,销售情况和当前库存的查询便于做采购计划。
4.3.5店内卡管理
它将顾客管理和超市卡的管理合在一起,对于一般的顾客而言,超市根本不可能有顾客的信息,也没有必要,因为在众多顾客中,只有大约20%左右的顾客给超市带来了80%的利润,这就是我们常说的二八理论,因此我门必须紧盯着这20%的顾客,给他们很多优惠政策。本系统支持会员卡、积分卡、储值卡3种卡。有如下3个模块。
1、持卡人的档案管理,对信息的查询、更改、删除。
2、各种卡的管理,包括卡的发放、修改、挂失、续办、换卡、以及储值卡的充值。
3、各种卡的查询,进行统计分析,充分了解企业的顾客群[20]。
4.3.6销售管理
这是整个超市管理信息系统比较核心的模块,他有以下几个模块。
1、& pos前端机,对当前的pos进行监控,统计当前营业额,以及根据超市的情况进行添加和删除pos机。
2、& 促销管理,这是一个非常重要的模块,一般而言促销分为两种,一是供应商提供的 促销活动,这中间的价差由供应商承担,与此同时还必须给超市一定的促销费用(场地费用),此时超市要做好相关的记录,因为促销商品和一般商品的税收是不一样的。一是超市自身进行的促销活动,这时差价由超市自己承担。对于促销的方式本系统中以下几种,A.按量促销,当销售量达到一定的数量时价格变回原样;B.按时段促销,例如节假日“狂减价”;C.金额回扣,当购买金额达到一定时,返回固定或比例现金;D.组合促销,为了吸引顾客将不同或者相同的商品组包销售,为新的商品制定相应的价格,实现价随量变的经营思想[7]。
销售查询,可以看到某个时间段的客流量比较多,为员工的上班安排提供依据。&
1、& 后台开单销售,它分为2种情况,一是超市里的某些部门本来就是独立的,他是供应商或者代理商在超市里租的场地,这种情况下,超市只用交营业税,而商品的增值税则由卖方交。这在财务上要分清楚。二是,集团采购直接从仓库提货,没有经过收银机,只需要登记销售单,将销售单传财务部即可。
5、销售退换货处理,退货只要修改库存和营业额即可,换货则分为2步,一是退货,二是再次修改库存和营业额[21]。
4.3.7统计分析
这个模块主要为领导层提供决策服务的,采用多种数据分析,为管理层提供决策数据,起到辅助决策支持的作用,包括以下2 模块。
1、库存分析
1)库存品种分析:经销、代销、联营厂家库存结构的分析;
2)负库存商品报表:列出计算机库存出现负数的商品,出现这种情况的原因可能是忘记录入入库单或者来不及录入入库单,也可能商品标签打错,导致卖错商品,通过分析报表,可及时纠正错误;
3)单品进货:选定时间段,将某个供应商供货情况列表;
4)呆滞库存商品:列出给定天数内库存量一直没有发生变化的商品,这些商品可能属滞销品,也可能是忘记办理出库手续,可在查明原因后进行清理,减少库存积压、促进资金的流动。
5)退货统计:列出退货商品的原因,根据不同的情况处理,如果质量有很大的问题会考虑停止和该供应商合作。
2、销售分析
1)单品销售量排名:可按任一时间段,按销售金额和销售数量查看哪些单品销售得好,便于进行“堆头” 摆放;
2)类别销售情况:商品的不同钟类型销售排名情况,可以根据销售量和销售额来排名;
3)商品的品牌管理:提供对指定时间内各品牌的销售情况进行查询功能,为超市引入更多更好的优质品牌,淘汰劣质品牌提供依据;
4)商品品种分析:对新增品种、撤消品种、不动销品种和不动销比例的管理,这依据经济学中的弹性需求设定,例如,盐的需求量没有很大的弹性,但是不能因为这就不卖盐;
5)重点商品管理:这是企业管理中常用的一种易学、易行的管理方法,也是零售业中较为普遍的商品管理方法。实际上,大型零售企业经营的商品上万种,只有大约20%的商品占居了销售额或利润额的80%左右。这就告诉人们应该把主要精力(资金、人员、经营条件)投放到这20%的商品管理工作中,本功能帮助经营者找出这&
20%的商品,为管理层提供调整商品品种的依据;
6)销小存大分析:在一定时期内销量小而库存大的商品,根据存销比例等情况进行分析,合理的调整最低库存量,减少资金积压,提高商品管理的透明度。
4.3.8货架管理
库存是相对仓库而言的,而对于当前卖厂的货物实际摆放量是不知道的,这就要求有对卖厂商品的管理,管理的目的是,让顾客能清楚、方便的选购所需的商品,满足顾客的需要,增加销售量,这由货价管理员负责,而厂内服务员只负责导购。它有2个功能:
1、生成提货报表:当当前货架上的商品摆放量小于最低的摆放量的时候就会自动生成提货单;
2、录入更新数据:当有商品卖出时会更改当前货架量,有商品进入卖厂的时候也要更改当前的货价量,为了使超市有新鲜感或者由于某中需要,货架的摆放会有变动,要更改数据[21]。
4.3.9人事管理
任何一个企业都有它的人事管理,对于一个连锁超市它的每个分店都有自己的人事部,但是在招聘、调动岗位和辞退的时候必须经过总部管理部同意,它的流程图如图4-9。
1、基本资料管理:对员工基本资料的维护,包括查询、更改、新进员工基本的录入,为了浏览方便用两个页面来做的,列表查看只可以查询,分两种方式,一种是用sql语句,这种方式可以在表中列出所有满足条件的纪录,可以显示总共有多少条纪录,相当于Delphi的filter的应用;一种是用Delphi自带的locate函数,它只改变当前的指针位置,移到符合条件的第一条纪录处,界面如图4-10。在单个查看中可以添加和删除员工,界面如图4-11[13]。&
1、人事变动,包括员工的内部调动以及离职,员工调动时更改其工作部门,工作岗位等,辞退员工时其进入历史数据库;
2、考勤管理,管理员工的一个方面,记录了员工的上班情况,为工资管理系统提供计算工资的数据,但是他涉及到打卡机,在本系统中不涉及;
4.3.10销售薪资管理
任何一个公司有雇佣关系就必须付工资,在规模比较小时可以手工管理和计算,比较大了之后手工管理会要很高的人工成本,对于连锁超市在卖场的员工分为三种,一种是固定工资的员工;一种是某个柜台的员工,按底薪加销售额提成计算工资;一种是厂商设在门店的销售员工,他们的工资由厂商支付,也是按底薪加销售额提成计算工资,超市记他们的考勤,厂商付给超市一定的管理费用,它的流程图如图4-12。
这一模块有如下功能:
1、基本工资的设定:可以查询和修改不同岗位的基本工资;
2、津贴、保险管理:津贴主要是加班和出差的补贴,保险包括医疗保险报销管理和社会保险的收缴,这些数据将提交给计算工资模块;
1、工资计算公式的设定:可以根据情况更改工资的计算公式;
2、计算每月员工的工资:根据人事部的考勤、工资管理中的数据进行计算[15]。
4.3.11报表设计
任何软件都要有报表输出,因此本系统也有,但是由于技术原因设计得比较“死”,不能很灵活的变化,用户不能随意的更改[12][23]。&
4.4程序设计小结
通过这次设计我对的Delphi的编程环境和部分控件有了一定的了解,在这阶段最深刻的印象是Win32下treeview的使用、BDE和ADO间的选择使用和报表的设计,treeview经过程序代码之后和第三方控件dbtreeview的功能一样,能够显示出商品的树形结构,程序所用到的思想很简单――树的遍历,为每一个节点找其父亲,这样就有了层次关系,能够将所学的知识应用起来。同时数据引擎我用的是ADO,ADO要比ODBC的效率高,而且相对容易配置一些,他们的执行速度也和数据库有关,相同语句在不同的数据库环境下所用的时间不一样。对于报表的设计,我没有能装上第三方控件TgmPreview、FastReport,直接用的Delphi7自带的报表设计器做的,我自己认为没有做好,很“死”,在实际的企业中是不可以用的。除此外还通过程序对dbgrid控件进行了修改,能够动态的从数据库中选择要添加的数据。关于报表,就我自己对超市的了解,有很多情况下他们要求自己能够做出报表,而不是定死了的。除此之外,我认为小票打印的设计是很重要的,在十堰市的超市中只有丰融超市与别的不一样,它没有会员价,同时它的付款分为上下楼,这对用户非常不方便,什么商品在上面付款,什么商品在下面付款对用户都不是透明的,往往排队等很久,然后告诉你不在这付款,顾客会有一定程度的不满意,这种情况在深圳的各大超市没有,他们支持统一付款;另外在所有的小票中,丰融的小票是最大的,而且无论买多少东西都是那张纸,在很多情况下小票空了一多半,我认为这是一个浪费,每天不知道要打印多少张,浪费近一半,这个成本是很高的,如果我们现在更改其打印格式,则要减少很多成本。但是由于我的技术有限,没有能用动态连接库对程序进行打包。&
本次毕业设计课题的设计内容主要针对小型连锁超市进销系统的分析与开发。在整个软件的开发过程中,采用了Delphi数据库开发软件进行设计,这使我能更加熟练的应用该软件。整个开发过程采用了结构化生命周期法进行分析,回头看看,通过这次的毕业设计,让我学到了不少课本上学不到的东西,同时也把四年来学的知识用到了实践应用中去了,使自己对系统开发过程有了进一步的熟悉和了解,对今后工作和学习都将有很大的帮助。系统分析、设计、编码、测试的整个过程不仅锻炼了自己毅力、耐力,培养了自己严密的思维方式、严谨的编程风格,而且也使理论知识得到了进一步的巩固,同时也体会到了开发系统的乐趣,培养了实际的工作能力,也拓宽了知识面,为以后的学习指明了方向[24][25]。
这次毕业设计在一些方面存在不足,对管理、财务方面的知识太欠缺导致在设计系统时很模糊,在系统中没有涉及到财务成本核算,另外在技术上要有所提高。虽然有许多的不足,但我还是学到了不少专业知识,特别是有关Delphi的知识,如ADO、BDE连接库的连接、表的创建、窗口的建立、修改、定义、控件的使用、窗口的编程、菜单的制作、访问的权限、可执行文件的生成,SQL脚本的生成、执行,附加数据库(MDF、LDF)的导入、导出,同时让我们对前面所学的数据库概论有个更系统的应用。但是由于水平有限,加上时间紧迫,所以整个程序的设计制作难免有些不尽如人意的地方,并且预计的一些功能还没有实现,如收银功能没能实现。
总之,通过连锁超市进销存系统开发的全过程,使自己能把在校所学到的内容能够联系实际,并且运用到实际问题中去,这对今后工作将大有裨益。&
在此,我向在论文写作过程中指导和帮助过我的人们表示衷心的感谢。首先要感谢的是我的指导老师刘崇欣老师,从论文的选题,初稿到最后完成定稿,都给予了我耐心细致全面的指导,让我少走了很多弯路,刘老师几次在百忙之中抽空到机房亲自指导我们的设计,对我们的问题,进行深入的讲解,并提出相关的解决方法,在论文进度方面,刘老师也是不时地了解情况,通过电话,电子邮件等进行跟踪。
其次要感谢系里各位领导,老师在我们论文过程中所提供的帮助;同时也要感谢清华斯维尔有限公司造价组的全体同事,特别是潘俊,以及三维算量组的李苍松,他给我生活和毕业设计技术上的帮助,还有给我帮助的所有的朋友和同学,特别是许映军。
在本文的写作过程中,参考了不少资料,在参考文献中已详细列出,在此对这些专家学者表示深深的谢意;也有可能有些资料引用后而由于疏忽没有指明出处,如有此类情况发生,在此表示歉意。&
[1] 胡昌平.信息管理科学导论.科学技术文献出版社,
[2] 孟广军.信息资源管理导论.北京:科学出版社,
[3] 谭祥金,党跃武信息管理导论.高等教育出版社,
[4] 郑人杰,殷人昆,陶永雷.实用软件工程.北京:清华大学出版社,
[5] 朱顺泉,姜灵敏.管理信息系统与务实.北京:人民邮电出版社,3
[6] 李再跃, 王宪云, 甘瑁琴.电子商务概论. 北京:高等教育出版社,
[7] 陈禹.经济信息管理概论.北京:中国人民大学出版社,
[8] 邵兵家.电子商务概论.北京:中国计划出版社,
[9] 张维民.信息系统建模.北京:电子工业出版社,
[10] 萨诗轩,王珊.数据库系统概论.北京:高等教育出版社,
[11] 石树刚,郑振楣.关系数据库.北京:清华大学出版社,
[12] 飞思科技产品研发中心.Delphi7基础编程.电子工业出版社,9
[13] 李维.Delphi5.x ADO/MTS/COM+高级程序设计篇.机械工业出版社,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&0
[14] 王万宗.信息管理学概论.数目文献出版社,
[15] 求是科技,刘韬,骆娟编著. Visual Basic进销存系统开发实例导航. 北京:人民邮电出版社,0
[16] 黄新亚,米央.信息编码技术及其应用大全.北京:电子工业出版社,
[17] 肖明.信息资源管理.北京:电子工业出版社,
[17]神州数码公司.易飞ERP系统说明书.北京:神州数码.2003
[18]清华斯维尔软件公司.计价维护守则.深圳:清华斯维尔.2004
[19] 代根兴,周晓燕.信息资源类型研究.中国图书馆学报,):68~71
[20] 符福.信息资源学.北京:海洋出版社,
[21]人人乐有限公司.员工培训守则.深圳:人人乐.2004
[22] 张海藩编著.软件工程. 北京:人民邮电出版社,
[23] 司光亚,莫凯,秦光裕译.现代信息系统设计方法.北京:电子工业出版社,
[24] Grady Booch,James Rumbaugh,and ivar Jacobson --Addision-Wesley .The Unified Modeling Language User Guide,
[25] Efrem G.Mallach .Decision Support and Data Warehouse System.北京:清华大学出版社,&
创建商品树的原代码:
procedure findparent(anode : Ttreenode); //为每个节点找父亲
& parent :
& tempnode : T
& parent := Pnode(anode.Data)^.
& for i := 0 to list1.count-1 do
&&& tempnode := Ttreenode(list1[i]);
&&& if Pnode(tempnode.Data)^.id = parent then
&&&&& anode.MoveTo(tempnode,naAddchild); //将子节点添加到父亲节点下
procedure TForm5.FormActivate(Sender: TObject);
& nodeinfo : P
& node : T
& list1 := Tlist.C
& data1.quy_spbxx.O
& with data1.quy_spbxx do //遍历树的节点
&&&& while not eof do
&&&& begin
&&&&&& node := tv.items.add(nil,trim(fieldvalues['商品部名称']));
&&&&&& new(nodeinfo);
&&&&&& nodeinfo^.id := fieldvalues['商品部编码'];
&&&&&& nodeinfo^.pid := fieldvalues['pid'];
&&&&&& node.data :=
&&&&&& list1.Add(node) ;
&&&& for n:= 0 to list1.count-1 do&
&&&&&& findparent(Ttreenode(list1[n]));
&&&& tv.FullC // 仅仅显示根节点
树的响应事件代码:& //点击节点显示相应的商品信息
procedure TForm5.tvChange(Sender: TO Node: TTreeNode);
& function SQLWhereStr(const Node: TTreeNode): S
&&& tmpNode: TTreeN
&&& Result := '';
&&& if Node = nil then E
&&& tmpNode := N
&&& repeat
&&&&& Result := Result + IntToStr(PNode(tmpNode.Data)^.ID) + ',';
&&&&& tmpNode := tmpNode.GetN
&&& until (tmpNode = nil) or (tmpNode.Level<=Node.Level);
&&& if Result '' then
&&&&&&& begin
&&&&&&&& Delete(Result, Length(Result), 1);
&&&&&&&& Result := ' 商品部编码 in('+Result+') ';
& S := SQLWhereStr(tv.Selected);
&&&& data1.quy_spjbxx.C
&&&& data1.quy_spjbxx.SQL.Text := 'select * from spjbxxb '+ 'where ' +S;
&&&& data1.quy_spjbxx.O
procedure TForm5.AddNode(Parent: TTreeNode);& //添加节点公用过程
& Node: TTreeN
& NodeData: PNodeD
& function GetID: I
&&& with Data1.qryTemp do
&&&&& Active := F&
&SQL.Text := 'select max([商品部编码]) + 1 from spbxx';
&&&&& Active := T
&&&&& if Fields[0].IsNull then
&&&&&&& Result := 1
&&&&& else
&&&&&&& Result := Fields[0].AsI
& if not InputQuery('输入','请输入节点的名称:',Text) or (Trim(Text)='') then E
& Text := Trim(Text);
& Node := tv.Items.AddChild(Parent, Text);
& New(NodeData);
& NodeData^.ID := GetID;
& if Parent
&&& NodeData^.PID := PNodeData(Parent.Data)^.ID
&&& NodeData^.PID := 0;
& Node.Data := NodeD
& with quy_spbxx do&&&&&&&&&&&&&&&&&&&& //将节点信息保存到数据库中
&&& FieldByName('商品部编码').AsInteger := NodeData^.ID;
&&& FieldByName('PID').AsInteger := NodeData^.PID;
&&& FieldByName('商品部名称').AsString := T
procedure TForm5.N6Click(Sender: TObject);& //添加同级节点
& if tv.Selected
&&& AddNode(tv.Selected.Parent)&&&
&&& AddNode(nil);&&&&&&&&&&&&&&&&
procedure TForm5.N5Click(Sender: TObject); //&& 添加子节点
& AddNode(tv.Selected);&&&&&&&&&&&&&
procedure TForm5.N2Click(Sender: TObject);& //删除节点
& tmpStr: S
& Node: TTreeN
&if Confirm('你真的要删除当前节点吗?') and (tv.Selected
&&& tmpStr := GetWhereStr(tv.Selected);
&&& if tmpStr
'' then {删除节点对应的数据库数据}
&&&&& ExecSQL('delete * from spbxx where '+ TmpStr);
&&&&& ExecSQL('delete * from spjbxxb where '+ TmpStr);
&&& Node := tv.S
&&& repeat
&&&&& Dispose(Node.Data); {清空要删除节点及所有子节点的Data内存数据}
&&&&& Node := Node.GetN
&&& until (Node=nil) or (Node.Level<=tv.Selected.Level);
&&& tv.Selected.D
&&& {刷新从表}
&&& tmrLoadData.Enabled := F
&&& tmrLoadData.Enabled := T
function TForm5.GetWhereStr(const ANode: TTreeNode): S
& Node: TTreeN
& Result := '';
& if ANode = nil then E
& Node := AN
&&& Result := Result + IntToStr(PNodeData(Node.Data)^.ID) + ',';
&&& Node := Node.GetN
& until (Node=nil) or (Node.Level<=ANode.Level);
& if Result
&&& Delete(Result, Length(Result), 1);
&&& Result := ' 商品部编码 in ('+Result +') ';
procedure TForm5.N3Click(Sender: TObject);& //修改当前节点
& if tv.Selected = nil then E
&&if not InputQuery('输入','请输入节点的名称:',Text) or (Trim(Text)='') then E
& tv.Selected.Text := T&
ID := PNodeData(tv.Selected.Data)^.
& ExecSQL(Format('update spbxx set [商品部名称]=''%s'' where [商品部编码]=%d',[Text, ID]));
商品出库的代码:
procedure TfrmOutDepot.qryCHUKUNewRecord(DataSet: TDataSet);
& function GetSmartCode: S
&&& ApplySQL(Data1.qryTemp, 'select max(出库单据号) from chuku');
&&& if Data1.qryTemp.Fields[0].AsString
&&&&& Result := GetNextStr(Trim(Data1.qryTemp.Fields[0].AsString))
&&&&& Result := 'C';
& DataSet.FieldByName('经手人').AsString := Data1.FCurUserN
& DataSet.FieldByName('出库单据号').AsString := GetSmartC
& DataSet.FieldByName('出库时间').AsDateTime := Date();
& DataSet.FieldByName('是否已审核').AsBoolean := F
procedure TfrmOutDepot.FormDestroy(Sender: TObject);
& ClearPickList(GridMX.Columns[1]);
procedure TfrmOutDepot.FormShow(Sender: TObject);
& PCKH: PC
& with data1.qryTemp do
&&& ApplySQL(data1.qryTemp, 'select 仓库号,仓库名称 from ckb');
&&& ClearD
&&& cmbDFDepot.C
&&& while not Eof do
&&&&& GetMem(PCKH, 13);
&&&&& FillChar(PCKH^, 13, 0);
&&&&& Move(PChar(Fields[1].AsString)^, PCKH^, 13);
&&&&& cmbDepot.Items.AddObject(Fields[0].AsString, TObject(PCKH));
&&&&& cmbDFDepot.Items.Add(Fields[0].AsString);
& qryCHUKU.C&
&qryCHUKU.O
procedure TfrmOutDepot.ClearD
& for i := 0 to cmbDepot.Items.Count - 1 do
&& &FreeMem(PChar(cmbDepot.Items.Objects[i]));
& cmbDepot.Items.C
procedure TfrmOutDepot.qryCHUKUDSDesigner4GetText(Sender: TF
& var Text: S DisplayText: Boolean);
& i, Index: I
& Index := -1;
& for i := 0 to cmbDepot.Items.Count - 1 do
&&& if Trim(cmbDepot.Items[i]) = Trim(Sender.AsString) then
&&&&& Index :=
& if Index > -1 then
&&& Text := PChar(cmbDepot.Items.Objects[Index])
&&& Text := Sender.AsS
procedure TfrmOutDepot.qryCHUKUAfterScroll(DataSet: TDataSet);
& qryCHUKUMX.C
& qryCHUKUMX.Parameters[0].Value := DataSet.FieldByName('出库单据号').AsS
& qryCHUKUMX.O
& LoadPickL
procedure TfrmOutDepot.qryCHUKUMXBeforeEdit(DataSet: TDataSet);
&&if qryCHUKU.State in [dsEdit, dsInsert] then
&&& qryCHUKU.P
& if qryCHUKU.FieldByName('是否已审核').AsBoolean then
&&& ShowMessage('审核完成的出库单不能进行修改!');
procedure TfrmOutDepot.ClearPickList(const Col: TColumn);
& for i := 0 to Col.PickList.Count - 1 do
&&& FreeMem(PChar(Col.PickList.Objects[i]));
& Col.PickList.C
procedure TfrmOutDepot.qryCHUKUMXCalcFields(DataSet: TDataSet);
& List: TS
& List := GridMX.Columns[1].PickL
& for i := 0 to List.Count - 1 do
&&& if CompareText(Trim(List[i]), Trim(DataSet.FieldByName('商品编码').AsString))=0 then
&&&&& qryCHUKUMXProductName.AsString := PChar(List.Objects[i]);
procedure TfrmOutDepot.qryCHUKUMXNewRecord(DataSet: TDataSet);
& DataSet.FieldByName('出库单据号').AsString := qryCHUKU.FieldByName('出库单据号').AsS
procedure TfrmOutDepot.qryCHUKUBeforePost(DataSet: TDataSet);
& SQL_KCB = ' SELECT 商品编码, 当前库存,最小库存 FROM kcb where Trim(仓库号)=''%s''';
& qryBatch: TADOQ
& if (DataSet.State = dsInsert) and DataSet.FieldByName('是否已审核').AsBoolean then
&&& ShowMessage('新增出库单先要保存才能审核!!');
&&& DataSet.FieldByName('是否已审核').AsBoolean := F
& if DataSet.FieldByName('仓库号').AsString = '' then
&&& ShowMessage('仓库号不能为空');
&&& cmbDepot.SetF
&if qryCHUKUMX.State in [dsEdit, dsInsert] then
&&& qryCHUKUMX.P
& qryBatch := TADOQuery.Create(Self);
&&& if DataSet.FieldByName('是否已审核').AsBoolean then
&&&&& qryBatch.Connection := Data1.
&&&&& qryBatch.LockType := ltBatchO
&&&&& qryCHUKUMX.F
&&&&& ApplySQL(qryBatch, Format(SQL_KCB, [Trim(DataSet.FieldByName('仓库号').AsString)]));
&&&&& while not qryCHUKUMX.Eof do
&&&&& begin
&&&&&&& if qryBatch.Locate('商品编码', qryCHUKUMX.FieldByName('商品编码').Value, []) then
&&&&&&& begin
&&&&&&&&& if qryBatch.Fields[1].AsFloat - qryCHUKUMX.FieldByName('数量').AsFloat <0 then
&&&&&&&&& begin
&&&&&&&&&&& ShowMessage(qryCHUKUMXProductName.AsString + '出库量大于库存量,审核失败!');
&&&&&&&&&&& DataSet.C
&&&&&&&&&&& A
&&&&&&&&& end
&&&&&&&&& else begin
&&&&&&&&&&& if qryBatch.Fields[1].AsFloat - qryCHUKUMX.FieldByName('数量').AsFloat < qryBatch.FieldByName('最小库存').AsFloat then
&&&&&&&&&&&&& ShowMessage(qryCHUKUMXProductName.AsString + '库存量已经不足,请及时补货!');
&&&&&&&&&&& qryBatch.E
&&&&&&&&&&& qryBatch.Fields[1].AsFloat := qryBatch.Fields[1].AsFloat - qryCHUKUMX.FieldByName('数量').AsF
&&&&&&&&&&& qryBatch.P
&&&&&&& qryCHUKUMX.N
&&&&& qryBatch.UpdateBatch(arAll);
&&& qryBatch.F
procedure TfrmOutDepot.LoadPickL
& SQLStr ='SELECT A.商品编码, A.商品名称 '+
&&& 'FROM spjbxxb A INNER JOIN kcb B ON Trim(A.商品编码) = Trim(B.商品编码) '+&
&'where 仓库号 = ''%s''';
& PCKH: PC
& Column: TC
& with data1.qryTemp do
&&& ApplySQL(data1.qryTemp, Format(SQLStr, [qryCHUKU.FieldByName('仓库号').AsString]));
&&& Column := GridMX.Columns[1];
&&& ClearPickList(Column);
&&& while not Eof do
&&&&& GetMem(PCKH, 13);
&&&&& FillChar(PCKH^, 13, 0);
&&&&& Move(PChar(Fields[1].AsString)^, PCKH^, 13);
&&&&& Column.PickList.AddObject(Fields[0].AsString, TObject(PCKH));
上一篇资讯:
下一篇资讯:
文章排行榜

我要回帖

更多关于 确认收货单 的文章

 

随机推荐