计算机信息管理专科毕业论文.pdf

上传人:l*** 文档编号:72095800 上传时间:2023-02-08 格式:PDF 页数:23 大小:779.60KB
返回 下载 相关 举报
计算机信息管理专科毕业论文.pdf_第1页
第1页 / 共23页
计算机信息管理专科毕业论文.pdf_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《计算机信息管理专科毕业论文.pdf》由会员分享,可在线阅读,更多相关《计算机信息管理专科毕业论文.pdf(23页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、.-中央广播电视大学人才培养模式改革和开放教育试点计算机信息管理专科毕业论文论文题目 中小型超市管理系统规划中小型超市管理系统规划学生 XX鲁 赟学号89指导教师李志军专业计算机信息管理年级2009春学校XX 电大常山分校.-可修编.-目录一需求分析 1(一)行业概念的理解 1(二)业务流程说明 2(三)问题解决方案 2(四)数据流图 3二系统设计 4二系统设计 4(一)系统模块的划分 4(二)数据字典 5三、程序的设计与编码 9(一)POS 系统的开发 91.功能及实现方法 92.问题讨论:交易流水号的确定 10(二)管理信息系统的设计 101.界面设计 102.各个功能模块实现的要点和技术

2、 112.1 类继承与重载 112.2 windows 消息机制 122.3 关于权限设置 132.4 应用 Delphi 显式事务控制 142.5 存储过程的使用 14参考书录 20.-可修编.-中小型超市管理系统规划中小型超市管理系统规划内容摘要:中小型超市管理信息系统是一个比较复杂和全面的管理系统,可以完成中小型超市的大部分业务。总的来说包括进货管理,物价管理,库存管理,销售管理,供货厂商管理,POS 收款机子系统等。该系统界面朴素一致,但不失美观大方;操作方便,查询功能强大;数据全面、准确。系统采用了目前比较流行而技术非常成熟地客户机服务器结构(C/S),前台应用程序用 Delphi

3、开发,后台数据库是 Microsoft SQLServer 2000。关键字关键字:面向对象的程序设计,继承,WINDOWS 消息,存储过程,事务一一 需求分析需求分析(一)(一)行业概念的理解行业概念的理解POS:Point Of Sells,电子收款机系统,也就是直接与顾客打交道的收银机系统。定单状态:用来描述商品进货方式,一般分为定单、日配、自采等。定单:表示该商品进货必须先向供货商发出定单,供货商按定单上的商品明细发货,超市则按定单上的商品明细收货。日配:指那些每天都要进货的商品或者补货期较短的商品,例如水果,生鲜蔬菜等。如果按定单,时间不允许而且工作重复烦琐。自采:顾名思义,超市自己

4、负责商品的进货。销售状态:用来描述某种商品当前的销售状态,一般定义为正常、促销、折扣等,正常表示商品处于正常的售价状态,即按正常的售价销售。促销:表示超市把某种商品让利销售,以此来吸引跟多的消费者。一般低于正常售价甚至成本价。折扣:表示某种商品销售情况不好,或者商品有瑕疵,或者保质期快到等情况发生时,使尽快商品销售出去的一种手段。库存调整:当非因正常销售发生而实物数量变动时,通过调整库存使其帐面数量与实物数量相符。日处理:当一天的销售结束后,开始做日处理。把当天的销售数据汇总,调整商品库存。损益:商品出现损坏,变质,被盗等情况发生时,商品发生损益。损益通过调整库存得到体现。商品变价:商品变价与

5、促销/折扣调整价格是两个不同的概念。商品变价是指修改商品的正常售价,调整后在一定的时间内不会在发生改变。价格可能是升高也可能是降低,一般都是由于进价变动引起的。.-可修编.-促销/折扣期:每一种商品促销/折扣都有一定的期限,即有一定的时间限制。一种商品不可能无期限的促销/折扣。当期限超过,商品自动恢复正常售价。毛利、毛利百分比:毛利商品售价商品进价 毛利百分比(商品售价商品进价)商品售价商品进价及成本核算:在成本核算中,商品成本价的确定一般有最后进价,移动加权平均,按商品批次定价等几种方式,由于后两种核算方式较复杂,本系统采用简单的最后进价方式。(二)(二)业务流程说明业务流程说明在实际管理中

6、,有三种信息流动,即资金流,单据流和商品实物流。系统围绕实物流展开,对商品从供应商那里进货到商品销售到顾客手中整个流程进行管理。简单来说,就是商品的进销存管理。每个环节通过相应的单据来连接,同时资金发生流动。在商品管理方面,我们提出部门和商品分类的概念,这种分级管理方式简洁高效。所谓部门,就是按照商品的基本属性进行分类管理。例如,超市一般可分为食品部,生鲜部,日用品部等。部门下面再分类,所谓商品分类,指按商品的具体属性划分,例如,食品部下面可以有糖果饼干类,饮料类等,每个部门和每个商品类别都有相应的负责人负责。中小型超市管理信息系统完全体现了这种管理思想,商品的销售和商品库存都可以按部门级和分

7、类级完成查询等其他操作。作为一个超市的管理人员,及时了解销售情况是非常必要的,以便及时调整进货或者安排营销策略,把握商机。而中小型超市管理信息系统正好满足了这一要求,可以实时查询前台的销售情况,并且数据准确可信。(三)问题解决方案(三)问题解决方案超市系统在运行过程中数据流量是非常巨大的。有时候会因数据流量过大而使网络发生阻塞,使 POS 系统发生断网,直接影响销售活动的进行。这种情况是应该坚决避免的,应该尽量减少网络的数据流量。这一思想在本系统中的直接体现就是采用日处理和运用本地缓存技术。日处理的主要目的就是把当天的销售数据整理汇总,更新商品库存表,为第二天的销售做准备。与日处理不同的另一种

8、处理方式就是每次商品销售完成以后就立即更新库存。但这样会使得服务器的负荷非常的重,经常会使 POS 系统发生断网。POS 系统销售商品时所取的商品信息是服务器上的数据,有效的保证了数据的一致性和集中控制。虽然商品信息来自服务器,但我们使用了本地缓存。POS 系统会把取得的数据暂时的存放在本地的内存,当要读取商品信息时,会先在本地缓存里查找,如果成功的话,就不必访问服务器。这样一来就有效的减少了网络的数据流量和服务器的负荷。此外,系统充分利用了客户机服务器结构的特点,比较复杂的查询更新等操作都用存储过程来实现。存储过程在服务器端执行完毕仅返回执行结果,能有效的减少网络的通讯流量。.-可修编.-(

9、四)(四)数据流图数据流图对整个业务活动进行分析归纳后,我得出如下的数据流图:数数 据据 流流 程程 图图.-可修编.-采购信息采购定单定单信息审核、打印定单供应商商品入库单结算应付帐款验收审核入库商品商品入库商品信息商品库存销售数据销售明细销售分析商品销售POS 销售成本毛利销售数量二二 系统设计系统设计(一)系统模块的划分(一)系统模块的划分根据前面所作的需求分析,我把整个系统分为如下几个模块:.-可修编.财务核算库存盘点库存变动采购信息采购定单报损、报益.-管理信息系统系统管理商品管理进货管理销售管理库存管理供收应商管理银台管理其他管理收银台销售商品入库单明细 ENTER_GOODS_D

10、ETAIL字段名称ENTER_DAN_IDGOODS_IDQUANTITYAMOUNTSTATUSWORK_PERSONWORK_DATE商品信息 GOODS_INFO字段名称GOODS_IDBAR_IDGUIGECOST_PRICEBUY_PRICE1BUY_PRICE2intintchar(4)moneymoneymoney数据类型商品 ID商品条形码规格进价正常售价促销/折扣销售价格描述intintnumeric(18,2)numeric(18,2)char(4)smallintdatetime数据类型商品 ID入库数量入库金额审核状态操作人员 ID记帐日期描述入库单 ID.-可修编.(

11、二)(二)数据字典数据字典.-LARGE_TYPESMALL_TYPEMAX_STOREMIN_STOREGYS_CODESTATUSFLAGBUYERVAR_DATE供应商信息 GYS_INFO字段名称GYS_CODENAMEADDRESSTELRELATIONTYPEBANKACCOUNTMENO部门信息 LARGE_TYPE字段名称LARGE_TYPE_IDNAMEsmallintsmallintnumeric(18,2)numeric(18,2)intchar(4)char(4)intdatetime所属部门号所属类别最大库存最小库存供应商代码商品进货状态促销/折扣标记采购员 ID登记

12、日期数据类型intvarchar(20)varchar(20)char(20)char(10)char(4)char(4)varchar(20)varchar(20)描述厂商代码企业全称地址联系人类型开户行备注数据类型intvarchar(10)描述部门代码部门名称商品分类信息 SMALL_TYPE字段名称SMALL_TYPE_IDNAME人员信息 PERSON_INFO字段名称数据类型描述intvarChar(10)数据类型描述商品分类代码分类名称.-可修编.-PERSON_IDNAMESEXAGEDUTYDEGREELOGINMENO前台销售表 POS_SALE字段名称GOODS_IDBA

13、R_IDQUANTITYAMOUNTCASHERP_NO收银台设置 POS_SET字段名称POS_IDWORK_PERSONintvarchar(10)char(2)smallintchar(8)char(8)varbinary(20)varchar(20)人员代码性别年龄职务学历口令备注数据类型intvarchar(10)numeric(18,2)moneysmallintint商品 ID条形码描述销售数量销售金额收银员 ID交易流水号数据类型smallintsmallint描述收银台号收银员 ID商品变价记录表 PRICE_ADJUST字段名称GOODS_IDCOST_PRICELAST_

14、PRICE1LAST_PRICE2NOW_PRICE1NOW_PRICE2ADJUST_REASONWORK_PERSONWORK_DATE数据类型smallintsmallintmoneymoneymoneymoneyvarchar(20)intdatatime商品 ID商品进价当前售价一当前售价二所调售价一所调售价二变价原因操作员 ID变价日期描述.-可修编.-库存调整记录表 STORE_ADJUST字段名称WORK_DATEGOODS_IDQUANTITYAMOUNTADJUST_QUANTITYDJUST_AMOUNTADJUST_REASONWORK_PERSON库存调整原因表 ST

15、ORE_ADJUST_REASON字段名称ADJUST_IDNAME商品库存表 STORE_DETAIL字段名称GOODS_IDQUANTITYAMOUNTMENO商品促销/折扣记录 GOODS_PROMOTE_LOG字段名称WORK_DATEGOODS_IDCURRENT_PRICEPROMOTE_PRICEBEGIN_DATEEND_DATEWORK_PERSONintMoneymoneydatetimedatetimeint数据类型datatime商品 ID当前售价促销价开始日期结束日期操作员描述记帐日期intnumeric(18,2)moneyvarchar(10)数据类型商品 ID数

16、量金额备注描述intsmallint数据类型代号摘要描述intnumeric(18,2)moneynumeric(18,2)Moneyintint数据类型datatime商品 ID调整前数量调整前金额调整数量调整金额调整原因 ID操作员 ID描述记帐日期日处理历史状态 DIALY_DAN.-可修编.-权限表 MENU_FLAG字段名称字段名称WORK_DATESTATUSWORK_PERSONIDN142数据类型数据类型smalldatetimechar(4)intsmallintsmallint状态操作员 ID代号标志描述描述日处理时间三、程序的设计与编码三、程序的设计与编码有了前面的工作,

17、我们选择就进入编码阶段了。(一)(一)POSPOS 系统的开发系统的开发1.1.功能及实现方法功能及实现方法POS 系统是作为一个单独的程序开发的,主要在 POS 机上运行,完成商品的交易任务。销售的商品信息存储在 POS_SALE 表中。我们把一次交易放在一个事务提交,保证了数据的完整性和数据的正确性。界面以灰色调为主,使得收银员长时间工作眼睛不感到疲劳。收银的操作也很简单方便。交易流水号自动增加。当某种商品处于促销或折扣销售状态时,POS 系统自动取商品的促销或折扣售价,无需人工干预,并且促销或折扣期结束时,系统能自动识别恢复正常售价。这一个功能的实现是通过商品视图来完成的。请看商品视图源

18、码。前台 POS 销售时取商品信息时用到的视图:CREATEVIEWV_SPXXASSELECTNAME,A.GOODS_ID,A.BAR_ID,A.GUIGE,BUY_PRICE=CASEWHEN(GETDATE()B.END_DATE AND GETDATE()B.BEGIN_DATE)OR A.FLAG=正常 THEN A.BUY_PRICE1WHENWHEN(GETDATE()B.END_DATE(GETDATE()B.BEGIN_DATE)GETDATE()B.BEGIN_DATE)ANDANDA.FLAG=促销 THEN A.BUY_PRICE2A.FLAG=折扣 THEN A.B

19、UY_PRICE2ELSEA.BUY_PRICE1.-可修编.-ENDFROM GOODS_INFO A,GOODS_PROMOTE_LOG BWHERE A.GOODS_ID*=B.GOODS_ID交易是在一个事务里完成的,请看交易完成数据提交的代码:ifform_pos.Database1.InTransactionthentryform_pos.query1.ApplyUpdates;把本地缓存修改的操作提交服务器form_pos.Database1.mit;事务提交form_pos.query1.mitUpdates;清空本地缓存ifform_pos.Database1.InTrans

20、action=falsethenform_pos.Database1.StartTransaction;exceptform_pos.Database1.Rollback;事务回滚end;2.2.问题讨论:交易流水号的确定问题讨论:交易流水号的确定在实际运用中,可能十几台甚至几十台 POS 机同时工作,也就是存在大量的数据库并发操作。怎样使交易流水号唯一呢?我是这样实现的,在每次事务提交之前,比较本机的流水号是否在后台数据库交易流水号中已经存在,如果存在,也就是说已经被别人占用,则重新取出最大交易流水号,然后提交整个事务。事务提交成功以后还要更新本地交易流水号。这是取最大流水号 select

21、max(P_NO)as p_nofrom pos_sale 的SQL 语句。(二)管理信息系统的设计(二)管理信息系统的设计1.1.界面设计界面设计本系统采用了带导航栏的多文档窗体设计风格,使操作变的简单直观。当使用某一个功能模块时,只显示相应的菜单,使人不会觉得眼花缭乱。系统完全摈弃那种界面花哨,色彩绚丽等华而不实做法,但和传统的风格有有所区别,传统的风格显得过于呆板。本系统的界面色调一致,简单朴素,但不失美观大方。窗体界面一致,操作也XX 小异,丝毫没有杂乱无章的感觉。我首先定义了几个重要的窗体基类,其他的窗体基本上这几个基类的派生类。在使用时在对窗体进行重载。所有的窗体都是在运行时动态加

22、载的。需要运行那个窗体时,程序才加载该窗体,用完后立即释放,这样使用户计算机系统资源得以最少得占用。请看一个窗体得创建例子:.-可修编.-enter_dan:=Tenter_dan.Create(Self);入库单录入窗体得创建form_show(enter_dan,555,360,10,2);form_show 为自定义函数对所有子窗体显示我自定义了一个函数 form_show,减少了工作量和代码量。procedure form_show(form:TForm;fwidth,fheight,fleft,ftop:integer);beginwith form dobeginheight:=f

23、height;width:=fwidth;Left:=fleft;top:=ftop;Show;end;end;窗体的释放实现,例如释放入库单录入界面窗体:procedure Tenter_dan.FormClose(Sender:TObject;var Action:TCloseAction);beginaction:=cafree;在内存中释放掉窗体end;2.2.各个功能模块实现的要点和技术各个功能模块实现的要点和技术这里我只把我在编码过程中比较重要或者比较有代表性的技术和部分源码阐述一下。详情查看系统的源代码。2.12.1 类继承与重载类继承与重载在编码过程中,我充分利用了面向对象编程

24、的特定代码的重用,具体实现起来依靠的是重载和继承。把具有相同或相似属性的类抽象出来作为一个基类。我定义了几个重要的窗体基类,基类窗体包含了需要的公有控件和共有事件方法。其他的窗体基本上这几个基类的派生类。在使用时在对窗体的控件的属性和方法进行继承或者重载。关于在 DELPHI 方法的重载,例如:procedure Action7Execute(Sender:TObject);OVERRIDEOVERRIDE;procedure Tenter_goods_info.Action7Execute(Sender:TObject);begintryif(dbedit1.Text)and(dbedit2

25、.Text)and(dbedit3.Text)and.-可修编.-(dbedit4.Text)thenbeginquery1.Post;addbutton.Enabled:=true;delbutton.Enabled:=true;savebutton.Enabled:=false;endelseshowmessage(你的输入不完整!);exceptshowmessage(代码重复!);end;end;2.2 windows2.2 windows 消息机制消息机制当查询窗体要返回结果时,我们用到了 windows 消息机制。首先定义一个全局的自定义消息常量。ConstMy_WM_USER=W

26、M_USER+100;/自定义消息向指定的窗体发送自定义消息,传递查询结果。例如:procedure Tgoods_info_search.searchbuttonClick(Sender:TObject);begintryprice_adjust.Query1.Close;price_adjust.Query1.SQL.Clear;price_adjust.Query1.SQL:=query1.SQL;sendmessage(price_adjust.Handle,My_WM_USER,0,0);exceptbeep;end;close;end;接收消息,并且处理它,例如:定义消息响应的方法

27、procedure my_wm_user100(var msg:Tmessage);messageMy_WM_USER;处理消息:.-可修编.-procedure Tgoods_promote.my_wm_user100(var msg:Tmessage);beginwith query1 doclose;sql.clear;sql.add(sql 语句);open;end;2.32.3 关于权限设置关于权限设置权限设置是一个管理系统非常重要的一部分,直接关系到公司业务和财务安全性。因此,本系统在这方面的功能是较完善的。操作人员的权限可以定义到每级子菜单。对没有赋权限的菜单项不予显示。也就是说

28、,系统能根据登陆人员的权限自动显示具有权限的功能菜单。我们把人员的权限信息存放在 MENU_FLAG 表中,在系统启动时加载相关的权限设置信息。权限设置这一功能只有高级管理人员和系统管理员才能使用。根据权限显示菜单算法with damo.query1 do/query1 关联 MENU_FLAG 表beginclose;sql.Clear;sql.Add(select*from menu_flag where id=:id);ParamByName(id).AsInteger:=person_id;open;end;for i:=1 to 42 dobeginflag:=damo.query1

29、.fieldsi.AsInteger;/flag 为每项菜单的权限标志for j:=0 to main_form.ponentCount-1 dobeginif(main_form.ponentsj(main_form.ponentsjthenifflag=0then(main_form.ponentsjTMenuItem).Visible:=false.-可修编.isasTMenuItem)and)TMenuItem).Tag=i-1as.-else(main_form.ponentsjTMenuItem).Visible:=true;end;end;2.42.4 应用应用 DelphiDe

30、lphi 显式事务控制显式事务控制事务控制是一种能够把数据库的一组修改作为整体提交给数据库以保证数据的一致性和完整性的机制。如果其中有一个操作失败,则所有操作失败。2.52.5 存储过程的使用存储过程的使用在程序设计中,系统主要的复杂的操作我都都是通过存储过程来实现的。例如:使用库存调整操作时,我们用 P_ADJUST_STORE 来完成。procedure Tadjust_store.okbuttonClick(Sender:TObject);beginif not damo.Database1.InTransaction thendamo.Database1.StartTransactio

31、n;开始一个事务withP_ADJUST_STORE do/P_ADJUST_STORE 为存储过程beginParams1.AsInteger:=strtoint(edit_id.Text);Params2.AsFloat:=strtofloat(edit_adjust.Text);Params3.AsInteger:=table1.Fields0.AsInteger;Params4.AsInteger:=person_id;/person_id 为全局变量人员 IDPrepare;execproc;end;trydamo.Database1.mit;事务提交exceptbegindamo.

32、Database1.Rollback;事务回滚showmessage(数据提交失败!);end;end;以下是几种典型存储过程。.-可修编.as.-日处理存储过程:CREATEPROCEDUREP_DIALY_DOdialy_date char(12),person_id smallintASDECLAREgoods_id intDECLAREquantity floatDECLAREamount moneyDECLARE temp_cursor CURSOR FORSELECT A.GOODS_ID,SUM(A.QUANTITY),SUM(A.QUANTITY*B.COST_PRICE)FR

33、OMPOS_SALEA,GOODS_INFOBWHEREconvert(char(12),WORK_DATE,102)=dialy_dateANDA.GOODS_ID=B.GOODS_IDGROUP BYA.GOODS_IDOPENtemp_cursorFETCH NEXT FROM temp_cursor INTO goods_id,quantity,amountWHILE(FETCH_STATUS=0)BEGINif EXISTS(SELECT*FROM STORE_DETAILWHERE GOODS_ID=goods_id)BEGINUPDATESTORE_DETAILSETQUANTI

34、TY=QUANTITY-quantity,AMOUNT=AMOUNT-amountWHERE GOODS_ID=goods_idENDFETCH NEXT FROM temp_cursor INTO goods_id,quantity,amountENDINSERT DIALY_DANVALUES(dialy_date,已做,person_id)CLOSE temp_cursorDEALLOCATE temp_cursor查询每日商品销售汇总的存储过程:CREATEPROCEDUREP_DIALY_SALEASCREATE TABLE#temp_table(.-可修编.-amountfloat

35、,work_date char(12),sale_cost float,gainfloat)INSERT INTO#temp_tableSELECTa.amount,convert(char(12),a.work_date,102)AS work_date,(c.cost_price*a.quantity)ASsale_cost,(a.amount-c.cost_price*a.quantity)ASgainFROMpos_sale a,small_type b,goods_info cWHERE a.goods_id=c.goods_idANDc.small_type=b.small_typ

36、e_idSELECTwork_date,sum(amount)AS sum_amount,sum(sale_cost)AS sum_sale_cost,sum(gain)ASsum_gainFROM#temp_tableGROUP BY work_date,ORDER BY work_date商品审核入库存储过程CREATEPROCEDUREP_GOODS_ENTERenter_dan_id intASDECLAREgoods_id intDECLARE quantity floatDECLARE amount moneyDECLARE temp_cursor CURSOR FORSELECT

37、 GOODS_ID,QUANTITY,AMOUNT FROM ENTER_GOODS_DETAILWHERE ENTER_DAN_ID=enter_dan_idOPEN temp_cursorFETCH NEXT FROM temp_cursor INTO goods_id,quantity,amountWHILE(FETCH_STATUS=0)BEGINif EXISTS(SELECT*FROM STORE_DETAILWHERE GOODS_ID=goods_id)BEGINUPDATE STORE_DETAIL.-可修编.-SET QUANTITY=QUANTITY+quantity,A

38、MOUNT=AMOUNT+amountWHERE GOODS_ID=goods_idENDELSEBEGININSERT STORE_DETAILVALUES(goods_id,quantity,amount,getdate()ENDFETCH NEXT FROM temp_cursor INTO goods_id,quantity,amountENDCLOSE temp_cursorDEALLOCATE temp_cursor查询部门销售汇总的存储过程CREATEPROCEDUREP_SEARCH_DEP_SALEASCREATE TABLE#temp_table(large_type_id

39、 int,dep_name char(10),quantity float,amountfloat,work_date char(12),sale_cost float,gainfloat)INSERT INTO#temp_tableSELECTb.large_type_id,b.nameASdep_name,a.quantity,a.amount,convert(char(12),a.work_date,102)work_date,(c.cost_price*a.quantity)ASsale_cost,(a.amount-c.cost_price*a.quantity)ASgainFORM

40、 pos_sale a,large_type b,goods_info c.-可修编.AS.-WHERE a.goods_id=c.goods_idANDc.large_type=b.large_type_idSELECT work_date,large_type_id,dep_name,sum(quantity)AS sum_quantity,sum(amount)AS sum_amount,sum(sale_cost)ASsum_sale_cost,sum(gain)ASsum_gainFROM#temp_tableGROUPBYwork_date,large_type_id,dep_na

41、meORDERBYwork_date查询商品分类汇总的存储过程CREATEPROCEDUREP_SEARCH_KIND_SALEASCREATE TABLE#temp_table(small_type_id int,kind_name char(10),quantity float,amountfloat,work_date char(12),sale_cost float,gainfloat)INSERT INTO#temp_tableSELECTb.small_type_id,b.nameASkind_name,a.quantity,a.amount,convert(char(12),a.

42、word_date,102)work_date,(c.cost_price*a.quantity)ASsale_cost,(a.amount-c.cost_price*a.quantity)ASgainFROM pos_sale a,small_type b,goods_info cWHEREa.goods_id=c.goods_idANDc.small_type=b.small_type_idSELECT work_date,small_type_id,kind_name,sum(quantity)ASsum_quantity,sum(amount)sum_amount,sum(sale_c

43、ost)AS sum_sale_cost,sum(gain).-可修编.ASASAS.-sum_gainFROM#temp_tableGROUPBYwork_date,small_type_id,kind_nameORDERBYwork_date查询商品销售的存储过程:CREATEPROCEDUREP_SEARCH_GOODS_SALEASCREATE TABLE#temp_table(goods_id int,bar_id int,goods_name char(20),guige char(4),quantity float,amountfloat,work_date char(12),s

44、ale_cost float,gainfloat,gain_rate float)INSERT INTO#temp_tableSELECTa.goods_id,a.bar_id,a.nameASgoods_name,a.guige,a.quantity,a.amount,convert(char(12),a.word_date,102)ASwork_date,(c.cost_price*a.quantity)ASsale_cost,(a.amount-c.cost_price*a.quantity)ASgain,(a.amount-c.cost_price*a.quantity)/(c.cos

45、t_price*a.quantity)ASgain_rateFORM pos_sale a,large_type b,goods_info cWHEREa.goods_id=c.goods_idANDc.large_type=b.large_type_idSELECTwork_date,goods_id,bar_id,goods_name,guige,sum(quantity)AS sum_quantity,sum(amount)AS sum_amount,.-可修编.-sum(sale_cost)AS sum_sale_cose,sum(gain)AS sum_gain,gain_rate*

46、100ASgain_rateFORM#temp_tableGROUP BYwork_date,goods_id,goods_name,guige,gain_rate,bar_idORDER BYwork_date库存调整存储过程CREATEPROCEDUREP_STORE_ADJUSTgoods_id int,adjust_quantity float,adjust_readon int,work_person intASDECLARE price moneyDECLARE quantity floatDECLARE amount moneySELECT quantity=QUANTITY,a

47、mount=AMOUNT FROM STORE_DETAIL WHEREGOODS_ID=goods_idSELECT price=cost_price FROM GOODS_INFO WHERE GOODS_ID=goods_idUPDATESTORE_DETAILSETQUANTITY=QUANTITY-adjust_quantity,AMOUNT=AMOUNT-price*adjust_quantityWHERE goods_id=goods_idINSERTSTORE_ADJUSTVALUES(goods_id,quantity,amount,adjust_quantity,convert(money,price*adjust_quantity),adjust_readon,work_pe参考书录参考书录1Delphi6 数据库技术 姜洪、X 希编著 国防工业 2005.42SQL Server 高级管理与开发 飞思科技产品研发中心编著 电子工业 2006.13Delphi 趣味程序导学 杨正华 吕跃春编著 清华大学 2007.84Delphi6.0 编程技巧与实例分析 关兵、邵谦谦等著 中国水利水电 2005.55SQL Server7.0 应用与提高 X 斌、赵有珍著 科学 2000.9.-可修编.-.-可修编.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com