商品进销存系统的设计与实现.docx
《商品进销存系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《商品进销存系统的设计与实现.docx(21页珍藏版)》请在冰豆网上搜索。
商品进销存系统的设计与实现
商品进、销、存系统的设计与实现
[内容提要]
随着科学的不断进步,计算机应用已经遍布整个社会的每个角落。
计算机在商业管理上的应用,使其逐步系统化、完善化。
本文通过对商品进、销、存工作流程的深入了解及进行了可行性分析后,对商品进、销、存系统作了系统分析、系统设计,并完成了系统的开发。
本系统采用DELPHI进行开发,实现了较强大的商品进库处理和商品查询功能。
本系统的优点在于简单,便于使用,不足之处在于统计功能不够完善。
[关键词]Delphi7数据库商品销售订单查询
目录
引言3
一、系统研究概述3
(一)、系统现状3
(二)、系统体系结构和开发技术3
1、Delphi简介3
2、数据库访问方法4
二、系统分析5
(一)、系统需求分析5
1、功能需求5
2、性能需求5
(二)、系统流程图6
三、系统设计7
(一)、概要设计7
1、功能模块结构图7
(二)、数据库设计8
1、E-R模型设计8
2、表设计8
四、系统的实现11
(一)、用户登录窗体11
(二)、系统设置窗体12
(三)、权限管理窗体13
(四)、代理商进/退货录入窗口14
(五)、定单进货数据录入窗口以及查询窗口16
(六)、商品分布查询窗口17
五、结论18
参考文献19
引言
传统的商品销售管理在商品的统计和管理上不但麻烦,而且还十分的耗费人力和时间。
而商品销售管理系统对商品的进货、退货、存货和销售情况等进行了综合统计和管理,使管理人员能够更快的得到自己想要的信息。
一个好的商品销售管理系统首先应具备的是基本的信息管理,而商品销售管理系统不但对商品信息信息、代理商信息、订单信息等都进行了系统的管理,而且管理人员可以直接登陆系统查看所有的信息,也可以根据自己的需要搜索相关的信息。
本文对系统开发中面临的问题及其解决方案进行详细的设计及合理安排,根据所掌握的Delphi技术对系统的各部分功能进行了实现。
一、系统概述
(一)、系统研究现状
伴随知识经济的发展和现代信息技术的不断改进,人们的生活节奏越来越快,而对信息的要求越来越高,快捷方便已经成为信息的一个重要指标。
对于一个好的零售公司,拥有完整全面的信息管理系统变得非常重要。
在这种情况下,商品销售管理系统应运而生。
通过本系统用户可以更快的获得最全面的信息,而且可以通过本系统查询所有需要的信息,大大的方便了用户的操作。
目前的商品销售管理系统已能顺利完成商品的进、销、存工作,多为单机版,网络版还不多见,但网络版应是以后的发展重点。
(二)、系统体系结构和开发技术
本系统采用C/S体系结构,前台采用Delphi面向对象的可视化编程技术,后台使用了Delphi自带数据库,管理员只要登陆本系统后,就可以根据需要进行相应的操作。
管理员可以对商品信息信息、代理商信息、订单信息进行添加、删除、修改等操作,避免了很多不必要的麻烦,为管理人员提供了很大的方便。
1、Delphi简介
Delphi是一个极有代表性的面向对象开发工具;它将面向对象的程序设计方法与数据库技术;网络技术以及可视化;事件驱动,代码自动生成等先进技术完美的结合在一起,使用它可以直观的,快速地开发,高质量的windows应用程序。
Delphi强大的易用的特点得到程序员的青睐。
Delphi7.0除了保留以前版本的强大功能之处,更在数据库程序开发方面提供了强有力的支持,使程序员完全可能轻松开发出复杂且功能强大的数据库程序。
Delphi类可以粗略地分成两部分:
一部分是组件类,这些组件类通常以某种方式出现在组件面板上,当用户从组件面板上点取一个类的图标后,在程序中就自动生成了该类的对象(非可视组件除外);另一部分是功能类,这此功能类的对象通常出现在程序代码中,起着不可代替的作用,但是这些功能类在组件面板上是找不到的。
在Delphi中,每一个类的祖先都是Tobject类,整个类的层次结构就像一棵倒挂的树,在最顶层的树根即为Tobject类。
这样,按照面向对象编程的基本思想,就使得用户可用Tobject类这个类型代替任何其它类的数据类型。
2、数据库访问方法
(1)、BDE方法:
它提供了存取各种文型和客户/服务器型数据库的驱动器程序。
该方法直接访问Paradox和Dbase等数据库或通过DOBC(OpenDataBaseconnecivity,开放数据库)来访问Access和PoxPro等数据库,还可通过内嵌方式访问SQLServr、Oracle和DB2等大型数据库。
(2)、ADO方法:
ADO方法是微软提供的一种数据库访问技术。
通过ADO技术可方便的访问各种类型的数据库,尤其对于OLEDB类型的数据库,ADO更是访问数据库的标准接口。
Delphi通过ADO技术可让开发者快速访问关系或非关系型数据库,但使用时需安装ADO的数据库引擎。
(3)、MIDAS方法:
MIDAS方法是Delphi用于开发多层应用系统的中间透明引擎。
通过MIDAS,开发者可使用相同的组件来存取不同的后台应用程序服务器。
这些后台应用服务器程序包括COM+/DCOM应用程序服务器、MTS中间件或CORBA应用程序服务器。
MIDAS方法实现了真正意义上的客户端程序与后台数据库的分离,但MIDAS的灵活性很差,与数据感应控件关联过于密切,限制了程序员的创造性。
综上所述,虽然Delphi的各个版本提供多种数据库的连接和访问方法,但在同一个应用程序中,开发者几乎不可能同时选用多种连接方法,因而选择合适方法是一个必须在开发前仔细考虑的问题。
二、系统分析
(一)、系统需求分析
经过以上对本系统的调研及可行性分析后,下面将对系统在功能上以及性能上进行进一步的需求分析。
1、功能需求
由于商品销售管理系统是一个用来帮助使用者管理商品销售流程的软件。
使用者通过对销售过程中所涉及到的商品,订单,销售商等资料的录入,便可以轻松实现商品销售流程的管理。
所以,此系统必须向使用者提供一下一些具体功能:
。
(1)、软件必须向使用者提供商品基本的录入,删除,编辑等基本功能
(2)、鉴于商品的不同销售方式(分为订单销售和代理商销售两种形式),软件必须向使用者提供商品销售环节中的基本管理功能,因此必须有订单分销模块和代理商分销模块。
(3)、软件必须向使用者提供基本的查询功。
(4)、由于是销售管理软件,所以系统安全性必须是要考虑的问题。
因此,必须实现以下两点:
A:
系统操作员机制。
对系统的使用者,按等级开放管理权限,这样可以在一定程度上保证数据库系统的安全性,避免数据被泄漏,非法更改等。
B:
销售数据直接反映了一个销售单位的盈亏状况,鉴于销售数据的重要性,所以必须对这些数据加以保护,在系统崩溃时或者误操作等情况下,可以对数据进行恢复。
这就需要系统提供备份功能。
(5)、:
对于销售数据不能只存储在计算机中,而是需要导出步骤,最后以印刷品的形式出现在使用者面前,该软件设计的最终目的才能得以具体的实现。
所以,打印功能是必不可少的系统功能之一。
2、性能需求
本系统的目标是:
使用者通过对基本销售信息的录入,即可方便直观的实现对商品交易流程的管理,查询,以及对已有信息的打印输出等功能。
本销售系统定义了两种销售模式:
(1)、订单销售。
即销售方通过订单方式销售的商品。
(2)、代理商销售方式。
(此功能略复杂,所以在实现的是时候必须对其提供录入修改查询等基本功能)。
(二)、系统流程图
系统流程图
三、系统设计
(一)、概要设计
1、功能模块图
功能模块图
(二)、数据库设计
1、E-R模型设计
E-R模型图
2、表设计
代理商信息表
字段名
类型
长度
关键字
备注
NO
+
是
排序用
ID
A
20
代理商编号
NAME
A
20
代理商姓名
TYPE
A
20
代理商地址
MEMO
A
200
代理商备注
商品信息表
字段名
类型
长度
关键字
备注
NO
+
是
排序用
ID
A
20
是
商品编号
NAME
A
40
是
商品名称
TYPE
A
20
商品型号
UNIT
A
6
单位
MEMO
A
200
备注
操作员信息表
字段名
类型
长度
关键字
备注
NO
+
是
排序用
ID
A
20
操作员编号
NAME
A
20
操作员姓名
SEX
A
2
操作员性别
PASS
A
20
操作员密码
RIGHTS
A
50
操作员权限
MEMO
A
200
操作员备注
权限表
字段名
类型
长度
关键字
备注
NO
+
是
排序用
ID
A
20
权限编号
NAME
A
20
权限名称
RIGHTS
A
20
权限开放程度
订单信息
字段名
类型
长度
关键字
备注
类型
NO
+
是
排序用
+
ID
A
20
订单编号
A
NAME
A
20
所订商品名称
A
XH
A
20
商品型号
A
SL
A
200
订货数量
A
JFRQ
A
20
交付日期
A
Memo
A
200
订单备注
A
代理商进货表
字段名
类型
长度
关键字
备注
类型
No
+
是
排序用
+
MYDATE
A
10
购买日期
A
DEPOTID
A
20
代理商编号
A
GOODSID
A
20
商品编号
A
NUMBER
S
进货数量
S
ID
A
20
进货代号
A
PRICE
N
价格
N
Memo
A
200
备注
A
代理商退货表
字段名
类型
长度
关键字
备注
类型
No
+
是
排序用
+
MYDATE
A
10
退货日期
A
DEPOTID
A
20
退货代理商编号
A
GOODSID
A
20
退货商品编号
A
NUMBER
S
退货数量
S
ID
A
20
退货代号
A
PRICE
N
退货数额
N
Memo
进销存明细表
字段名
类型
长度
关键字
备注
类型
No
+
是
排序用
+
JXC
A
20
进销存状态
A
MYDATE
A
10
进销存日期
A
GOODSID
A
20
商品编号
A
NUMBER
S
进货数量
S
PRICE
A
20
价格
A
Memo
A
200
备注
A
四、系统的实现
(一)、用户登录窗体
用户登录窗体效果图
本窗体的任务是通过用户输入密码判断用户是否是合法的用户.它用于管理员按照用户名和密码进行登录。
以免不相关得人进入系统进行不良的操作,而对系统进行破坏,导致整个系统进行瘫痪。
主要代码为:
if(USERNAME=fieldbyname('USERname').asstring)and
(S_tempPass=fieldbyname('Psd').asstring)then
begin
USERRIGHTSNAME:
=fieldbyname('rightsname').AsString;
USERRIGHTS:
=fieldbyname('rights').AsString;
break;
MainForm.StatusBar_main.Panels.Items[3].Text:
='操作员:
【'+USERNAME+'】权限:
〖'+USERRIGHTSNAME+'〗';
query_pass.Free;
canclose:
=true;
end;
(二)、系统设置窗体
系统设置窗体效果图
本窗体由Lable和Edit控件组成,可以实现系统基本信息的设置。
在第一次运行本系统时,本窗口自动运行,要求使用者输入系统的基本信息,以及指定数据库所在路径。
主要代码为:
CPXSGL:
=ExtractFileDir(Application.ExeName);
if(StrLen(PChar(CPXSGL))<>3)then
CPXSGL:
=CPXSGL+'\DATA\'
else
CPXSGL:
=CPXSGL+'DATA\';
end;
ifrb_auto.Checkedthen
S_autosave:
='1'
else
S_autosave:
='0';
S_savedays:
=trim(e_backupdays.text);
end;
messagedlg('系统设置数据信息保存完毕!
',mtwarning,[mbok],0);
MainForm.Caption:
=Application.Title+'-'+S_name+'【'+CPXSGL+'】';
(三)、权限管理窗体
权限管理窗体效果图
该窗体是向用户提供权限管理功能,通过对用户级别的选择再组合相应的权限,即可方便得以对统一数据库的相同或不同的数据表进行操作。
界面简捷是本窗体的一个有点,这使对权限的管理十分方便。
主要代码为:
CLB_rights.Enabled:
=true;
S_rights:
=P_rights[1,LB_name.itemindex];
iflength(S_rights)<>10then
S_rights:
='0000000000';
forI_index:
=1toCLB_rights.Items.Countdo
begin
ifS_rights[I_index]='1'then
CLB_rights.Checked[I_index-1]:
=true
else
CLB_rights.Checked[I_index-1]:
=false;
end;
sql.Clear;
sql.Text:
='insertintoSysUserRights(id,name,rights)'+'values("'+inttostr(I_row)+'","'+P_rights[0,I_row]+'","'+P_rights[1,I_row]+'")';
(四)、代理商进/退货录入窗口
代理商进/退货录入窗口效果图
如上图所示,在录入进货数据时,必须先选择代理商的姓名,然后双击dbgrid就可以实现对出售商品的选择。
为了保证数据表的参照完整性,在点击保存按钮的时候,系统会检查录入的数据是否完整,如缺少项目,系统会给出正确的提示。
退货数据录入窗口和进货数据录入敞口大体相当,唯一不同的是在保存时候会检查代理商是否有过相应的进货数据,如在没有进货纪录的同时退货,系统会给出相应的提示。
主要代码为:
sql.text:
='selectid,numberfromStoragerecordwheredepotid="'+S_depotid+'"andgoodsid="'+IMPSG_DATA.Cells[1,I_temp]+'"';
open;
S_id:
=fieldbyname('id').asstring;
I_number:
=fieldbyname('number').AsInteger-strtoint(IMPSG_DATA.cells[4,I_temp]);
if(recordcount<=0)or(s_id='')then//本行商品没有库存记录
begin
messagedlg('在【'+cb_depot.Text+'】内'+Errormsg0009,mtwarning,[mbok],0);
sql.text:
='insertintothrecord(depotid,goodsid,number,mydate,id,memo,price)'+'values("'+S_depotid+'","'+IMPSG_DATA.Cells[1,I_temp]+'",'+IMPSG_DATA.cells[4,I_temp]+',"'+formatdatetime('yyyy-mm-dd',DTP_date.DateTime)+'","'+Nowindex+'-'+inttostr(I_temp)+'","'+IMPSG_DATA.cells[9,i_temp]+'",'+IMPSG_DATA.cells[5,I_temp]+')';
execsql;
close;
//退货仓库统计
I_errordb:
=2;
sql.clear;
sql.text:
='selectid,numberfromStoragerecordwheredepotid='''+S_depotid+'''andgoodsid='''+IMPSG_DATA.Cells[1,I_temp]+'''';
open;
S_tempid:
=fieldbyname('id').asstring;
I_count:
=fieldbyname('number').AsInteger-strtoint(IMPSG_DATA.cells[4,I_temp]);
close;
(五)、定单进货数据录入窗口以及查询窗口
定单进货数据录入窗口以及查询窗口效果图
该窗体是供使用者输入订货单信息时候使用的,使用者可以对订单进行增加修改删除等具体操作。
订单查询窗口与之类似,但是不提供增加和修改功能。
主要代码为:
sql.Text:
='selectnamefromdepotwheretypelike"%市%"';
open;
cb_depot.Items.Clear;
cb_depot.Style:
=csDropDownList;
whilenoteofdo
T_temp:
=messagedlg(Askmsg0001,mtConfirmation,mbYesnoCancel,0);
ifT_temp=mrYesthen
begin
ifnotuser_savethen
begin
messagedlg('【'+cb_depot.text+'】的进货退货'+Infmsg0004,mtError,[mbok],0);
canclose:
=false;
(六)、商品分布查询窗口
商品分布查询窗口效果图
该窗体以图形化的界面,简单直观的向使用者提供商品的查询功能,使用者可以通过已知商品信息迅速查询到与此种商品相关的代理商信息,同时,也可用过代理商的信息反查处其代理的商品状况。
此外,为了实现系统的界面风格和报表输出功能,用到了两个控件,分别是XpMenu3.1修改版和QRMaker。
具体的安装和使用方法就不在这里详细说明。
本系统主要分为四个主要功能,即订单系统,代理商系统,备份系统,何管理员系统。
其中,订单系统和代理商系统是为商品销售服务的,而管理员登陆系统是为数据安全考虑的,最后的备份系统有助于提高系统的健壮性,在系统崩溃后可以把损失降到最低限度。
同时,本系统也提供了丰富的打印功能,使得计算机里的数据可以以书面的形式印刷并且传播,不会出现信息孤岛的现象。
主要代码为:
sql.Clear;
sql.Text:
='SELECTgoods.NAMEgoodsname,goods.TYPE,Depot.NAMEdepotname,'
+'Storagerecord.NUMBER,goods.UNIT,Storagerecord.PRICEDJ,'
+'sum(Storagerecord.NUMBER*Storagerecord.PRICE)PRICEFROMStoragerecord'
+'INNERJOINDepotON(Storagerecord.DEPOTID=Depot.ID)'
+'INNERJOINgoodsON(Storagerecord.GOODSID=goods.ID)'
+'WHEREgoods.ID=:
"ID"'
+'GROUPBYDepot.NAME,goods.NAME,goods.TYPE,Storagerecord.NUMBER,'
+'goods.UNIT,Storagerecord.PRICE';
end;
五、结论
经过几个月的设计和开发,商品销售管理系统基本开发完毕。
其功能基本符合用户需求,能够完成商品流通过程中所涉及到的基本信息的、输入、修改,查询等动能。
并提供部分系统维护功能,使用户方便进行用户名称和密码的更改,提高了软件的安全性和健壮性。
此外,本软件对于数据的一致性的问题也通过程序进行了有效的解决。
但现实中的商品交易形式是多种多样的,是由于毕业设计时间较短,需求分析做得不够完善,个人能力以及精力等因素的限制,所以该系统只假设了两种形式销售方式,即订单销售和代理商销售,并且假设这两种销售方式在商品的流通过程中不存在互相干扰的现象。
另外,该系统还有许多不尽如人意的地方。
比如功能不是很完善、用户界面不够美观,出错处理不够等多方面问题。
这些都有待进一步改善。
参考文献
1、周爱民《Delphi源代码分析》电子工业出版社2004年9月
2、陈瑞、叶核亚《Delphi程序设计实用教程》电子工业出版社2004年1月
3、彭明明、程文刚《Delphi数据库实用编程100例》中国铁道出版社2004年3月
4、王珍铃《实用软件工程教程》清华大学出版社2004年4月
5、孙涌《现代软件工程》希望电子出版社2002年6月
6、杨文龙《软件工程》科学技术文献出版社1989年9月
7、张春林《Delphi6程序设计导学》清华大学出版社2002年5月
8、王志伟、黄超《Delphi企业经营管理系统开发实例导航》人民邮电出版社1997年9月