当前位置:首页 > 企业进销存管理系统毕业论文
具体代码如下)
--==============================
--创建收货单主表(OrderConsign) --============================== CREATE TABLE OrderConsign (
OrderConsignNo varchar (20) NOT NULL primary key , --主键 Address int NULL, --交货地点 ConsignDate datetime NULL, --交货时间 Descript varchar (50) NULL --备注 EmployeeNo varchar (10) NOT NULL --业务员 )
--============================== --创建收货单从表(ConsignGoods) --==============================
CREATE TABLE GoodsConsign (
GoodsId int IDENTITY(1,1) not null primary key --从表编号,自动产生 GoodsNO varchar (10) NOT NULL , --收货编号 Goods Count into NULL , --收货数量 GoodsPrice int NULL , --收货单价 GoodsMoney AS (GoodsCount * GoodsPrice) , --总金额 GoodsMainInf varchar (20) NULL ,
--关联引用主表的OrderConsignNo字段 GoodsSupplier varchar (10) NULL , --供应商 GoodsWare varchar (10) NULL --入库仓 )
从表主要保存所收货品的一些基本信息,通过关键字段GoodsMainInf引用收货单的主表信息,其中字段GoodsId 是一个自增字段,作为从表的主键,而字段GoodsMoney则是一个计算字段,其数值为货品单价与数量的乘积,货品单价与数量确定后,自动计算总金额,减少了用户的计算麻烦,其数值不可编辑。
4.2 关于客户端设计的实现
系统的前台设计遵循着用户易于使用、技术上易于实现的原则,为用户创造一个易于使用的进销存系统,一切为用户考虑,我们主要在以下几个方面作了创新。
word文档 可自由复制编辑
4.2.1导航窗体的实现
导航窗体的优越性在系统设计部分已作了阐述,导航窗体的设计实现简单,导航窗体基本上集成了系统的所有功能,真正为用户提供了“所见即所得”的应用环境,而且我们尽力为用户创造一个美观的系统界面,使用了大量亲切形象的图标,注意各个不同功能窗体的颜色搭配,不同模板之间颜色的协调,特别是导航窗体,在不同的功能模块下,图表按钮显示不同的颜色,使用户不仅知道正在使用哪一个功能模块,而且使用起来有一种美的享受。其基本代码如下:
procedure TF_main.n_AviWindowClick(Sender: TObject); //定制导航窗体
begin
if n_AviWindow.Checked=True then //判断导航窗体是否已经定制 n_AviWindow.Checked:=False else
n_AviWindow.Checked:=True ; if n_AviWindow.Checked = True then begin
Application.CreateForm(TF_Purchase,F_Purchase); F_Purchase.Show; //显示导航窗体 end else
F_Purchase.Close; end;
对于用户的不同需要,充分使用人性化的设计,用户可以通过系统菜单定制是否需要导航窗体。一切从用户的角度考虑,这是软件开发所应遵循的基本原则,也是日后软件从技术型走向服务型的软件的必由之路,人性化的软件才更能得到市场的认同,才能取得先发的优势。
4.2.2库存信息表数据库到前端显示映射实现
在数据库设计时,一种货品是否超限,我们用一个字段State来表示,当State 的数值为True 时,表示货物未超限,否则已经超限,需要引起决策层的注意,而在前段,则需要以文字来表示,因此在前端设计时,在表示的货品信息表中,新建一个计算字段VoidName,并在其OnCaleFields 事件上书写如下代码:
procedure TDM_Main.T_GoodsInfoCalcFields(DataSet: TDataSet); begin
if T_GoodsInfo.FieldByName('GoodsState').Value='T' then
word文档 可自由复制编辑
T_GoodsInfo.FieldByName('VoidName').AsString:='未超限' else
T_GoodsInfo.FieldByName('VoidName').AsString:='已超限'; end;
因为在数据库设计时,我们对货品信息表设置了如下的触发器: create Trigger Trig_GoodsInfoSate on GoodsInfo for insert , update as
update GoodsInfo set GoodsState ='F'
where WareQuantity not between GoodsMin and GoodsMax; update GoodsInfo set GoodsState ='T'
where WareQuantity between GoodsMin and GoodsMax
其中,VoidName是在数据表里的一个新建计算字段。
这样,每当货品出入库时,货品触发器可以设置货品的目前状态,这样我们在前端(客户端)就可以看到货品是否超限,从而可以最快的速度采取相应的决策,避免存货不足和库存过量的情况出现,减少了不必要的损失和浪费,使企业可以降低成本,增加收益。
4.2.3 业务单据编号的自动生成
为了减少业务单据编号的随意性,我们在设计时,实现由系统自动生成单据编号。根据用户要求编号规范且易识别、易理解的要求,系统的编号由三部分组成,前两个字符为单号性质,接下来六个字符为下单日期,后三个字符为当日的单据流水号。如单号:‘CS030530002’的含义为:‘CS’表示这是一张采购收单(“采购收单”的首尾字符汉语拼音的首字母),‘030530’表示开单日期是:2003年5月30日开单, ‘002’ 表示这张单子是今天开出的第二张单子。考虑到一个中小企业一天的开单数量不可能超过1000张,因此流水号用单号的后三位表示。以“采购收货”为例,其具体实现代码如下:
procedure TF_OrderConsign.FormCreate(Sender: TObject); var Id :String; left:String; Right: String; mid:String; begin
if DM_Main.T_OrderConsign.Active = False then
word文档 可自由复制编辑
DM_Main.T_OrderConsign.Open;
left := leftstr(Datetostr(Date),4); //获取收单日期年份 mid:= midstr(Datetostr(Date),6,2);//获取收单日期月份 Right:= Rightstr(Datetostr(Date),2); //获取收单日期 left:=RightStr((left+mid+Right),6);
ID:='000'+inttostr(DM_Main.T_OrderConsign.RecordCount+1); //通过查询现在记录数目,获取收单开单流水号 ID:=RightStr(Id,3); ID:='CS'+left+ID;
edt_ConsignNo.Text:=ID; //单号生成 end
这样,每次开单的时候,单号可以自动生成,避免了人工输入的麻烦,保持了单号的规范性和易识别、易理解的特性。
4.2.4 采购退货功能的实现
采购退货的实现,需要调用到收货表单的主(OrderConsign)、从表(ConsignGoods)信息及退货表单的主表(OrderReturn)、从表(ReturnGoods)的信息,而且退货要实现从一个表(ConsignGoods)读数据,同时实现向另一个表(ReturnGoods)写数据的功能。其主要部分代码如下:
Qry_delete.SQL.Text:='delete from GoodsConsign where GoodsNO=' + ''''+i_Goods.KeyValue+''''; //删除对应的收货单的货品信息 Qry_delete.ExecSQL; Qry_OrderConsign.Close; Qry_InsertReturn.Close;
Qry_InsertReturn.SQL.Clear;
Qry_InsertReturn.SQL.Text:='insert into
GoodsReturn(GoodsNo,GoodsCount,GoodsPrice,ReturnMainInf,GoodsSupplier,EmployeeNo)values('+''''+i_Goods.KeyValue+''''+','+''''+dbedt_Quantity.Caption+''''+','+''''+dbedt_Price.Caption+''''+','+''''+edt_ReturnNO.Text+''''+','+''''+i_Supplier.KeyValue+''''+','+''''+i_Employee.KeyValue+''''+')';
Qry_InsertReturn.ExecSQL;//在退货信息表里插入数据 其具体的操作界面如下图3所示:
word文档 可自由复制编辑
共分享92篇相关文档