进销存管理系统设计及源代码.docx
- 文档编号:10363509
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:28
- 大小:680.97KB
进销存管理系统设计及源代码.docx
《进销存管理系统设计及源代码.docx》由会员分享,可在线阅读,更多相关《进销存管理系统设计及源代码.docx(28页珍藏版)》请在冰豆网上搜索。
进销存管理系统设计及源代码
进销存管理系统设计及源代码
一.引言
1.编写目的
为提高工作效率,便于对库存产品进行统计和管理,特开发出进销存管理分析系统软件。
本文档将对该管理分析系统软件进行详述,以便根据用户的要求进行软件的开发。
而且除本系统需求分析规格说明书提及的功能之外,其余功能不列入待开发软件开发的范围。
2.前景说明
(1)待开发软件的名称为进销存管理分析系统;
(2)该待开发的项目的开发者为陈韩珍;
(3)该管理分析系统软件将对库存产品进行资料管理和统计,对产品的进货单和产品的销售单进行录入管理和统计。
3.参考资料
本文档参照了北京大学出版社出版的《软件工程-技术、方法与环境》一书中的需求分析文档。
二.概述
1.功能概述
待开发软件的主要功能为:
(1)该软件能对产品的进货单、产品的销售单进行资料录入;
(2)该软件能查询库存产品资料及产品的进货单和产品的销售单的资料,并预视打印查询结果或直接打印查询结果;
(3)该软件能对进销存管理分析系统进行数据的维护工作,以保证数据的完整性和准确性。
待开发软件的主要功能及相互关系如下图:
图1
三.数据流图与数据字典
1.数据流图
经过分析,得出的数据流图如图2、图3、图4所示。
图2顶层数据流图
图30层数据流图
图4一层数据流图(a)
图4一层数据流图(b)
2.数据字典
(1)数据流条目
库存管理要求=[产品的入库单|产品的出厂单]
产品的进货单=进货日期+单据编号+进货商+附加说明
+品名+计量单位+单价+数量+金额
产品的销售单=销售日期+单据编号+客户+附加说明
+品名+计量单位+单价+数量+金额
查询要求=[产品的进货情况|产品的销售情况|统计要求]
产品的进货情况=进货日期+单据编号+进货商+附加说明
+品名+计量单位+单价+数量+金额
产品的销售情况=销售日期+单据编号+客户+附加说明
+品名+计量单位+单价+数量+金额
统计表={产品的库存情况}
(2)文件条目
文件名:
进货文件
组成:
{进货日期+单据编号+进货商+附加说明
+品名+计量单位+单价+数量+金额}
组织:
按产品的单据编号及品名的递增顺序排列
文件名:
销售文件
组成:
{销售日期+单据编号+客户+附加说明
+品名+计量单位+单价+数量+金额}
组织:
按产品的单据编号及品名的递增顺序排列
文件名:
库存文件
组成:
{品名+计量单位+数量}
组织:
按产品的品名的递增顺序排列
3.小说明
小说明只描述最底层的基本加工。
加工编号:
1
加工名:
检查有效性
输入流:
库存管理要求,查询要求
输出流:
有效的库存管理要求,有效的查询要求
加工逻辑:
检查输入要求的有效性
加工编号:
2.1
加工名:
要求类型处理
输入流:
库存管理要求,当前日期
输出流:
产品的进货单,产品的销售单
加工逻辑:
根据库存管理要求的类型选择
CASE1:
产品进货,输出产品的进货单
CASE2:
产品销售,输出产品的销售单
加工编号:
3.1
加工名:
查询类别处理
输入流:
查询要求
输出流:
查询产品进货情况,查询产品销售情况,统计要求
加工逻辑:
根据查询类别选择
CASE1:
查询产品进货情况
CASE2:
查询产品销售情况
CASE3:
统计要求
加工编号:
3.2
加工名:
产品进货查询
输入流:
查询产品进货情况,进货文件
输出流:
产品进货情况
加工逻辑:
根据查询产品进货情况的要求从进货文件中读出产品进货记录,输出产品进货情况
加工编号:
3.3
加工名:
产品销售查询
输入流:
查询产品销售情况,销售文件
输出流:
产品销售情况
加工逻辑:
根据查询产品销售情况的要求从销售文件中读出产品销售记录,输出产品销售情况
加工编号:
3.4
加工名:
产品库存统计
输入流:
统计要求,库存文件
输出流:
统计表
加工逻辑:
根据统计要求从库存文件中读出所有库存产品的记录,输出统计表
四.接口
1.用户接口
(1)本管理分析系统采用分层打开的形式,而且当前窗口每次只有一个窗口,其主界面如下图:
图5
(2)报表的打印前可进行打印预览,也可以直接打印,并对打印机进行设置,其打印纸张采用A4纸;其界面如下图6、图7、图8例所示:
图6
图7
图8
(3)本管理分析系统的界面打开方式可使用键盘或鼠标操作。
2.硬件接口
运行该管理分析系统的硬件基本要求如下:
CPU:
至少Pentium100以上,建议使用Pentium400;
内存:
至少16M以上,建议使用64M;
硬盘:
至少20M硬盘空间;
显示器:
14″显示器;
其它:
键盘、鼠标、1.44MB软驱和光驱等。
3.软件接口
该管理分析系统的数据库能在VisualFoxPro3.0FORWindows上正常运行。
五.性能需求
1.性能需求
产品的进货单和产品的销售单中的“单价”和“金额”的精度取到小数点后两位,“数量”的精度取整数。
2.时间特性
该管理分析系统从启动到进入主菜单的时间正常情况下少于6秒,录入并更新数据的时间正常情况下少于20秒。
3.灵活性
本管理分析系统软件适应于Windows95/98/2000/NT中文版的环境下运行。
六.属性
1.保密性
该软件已对所用的数据库进行加密处理。
七.其它需求
1.操作
该管理分析系统可以在软件主菜单中选择“系统维护”→“数据备份”来对系统数据进行定期备份,当出现故障时可以在软件主菜单中选择“系统管理”→“数据恢复”进行系统数据恢复操作。
2.故障及处理
系统的故障分为软件故障和硬件故障。
对于硬件故障采用更换计算机硬件的处理方法。
对于软件故障,系统提供恢复数据库的功能,使系统有能力将数据库恢复到损坏之前的正确状态,使重要的数据得到有效的保存和恢复。
八.待开发软件的详述
1.软件功能详述
(1)信息登记管理:
该管理分析系统软件的数据录入分为产品的进货单录入和产品的销售单录入。
产品的进货单和产品的销售单能检查录入数据的有效性,并且确保“单据编号”的录入项不能为空,“金额”项采用自动计算方式,为“单价”乘以“数量”的积。
其录入单如下图9、图10:
图9
图10
(2)产品库存资料管理:
产品的库存资料是根据产品的进货单和产品的销售单的有效录入来对产品的库存数据进行自动更新,以确保数据的正确性。
(3)查询打印管理:
查询打印分为进货查询、销售查询和库存查询三项。
进货查询能根据产品的品名、单据编号、进货商或进货日期查询录入的进货单的资料,并打印查询结果;销售查询能根据产品的品名、单据编号、客户或销售日期查询录入的销售单的资料,并打印查询结果;库存查询能根据产品的品名进行库存产品资料的查询,并打印查询结果。
进货查询选择查询的方式界面如图11所示;销售查询选择查询的方式界面如图12所示;输入查询数据的界面如图13所示;其查询进货文件数据的显示界面如图14所示;其查询销售文件数据的显示界面如图15所示;其查询库存文件数据的显示界面如图16所示。
图11
图12
图13
图14
图15
图16
(4)系统维护:
本软件的系统维护包括“数据备份”、“数据恢复”和“期终转结”三个部分。
“数据备份”可以对系统数据进行定期备份,当出现故障时,可以使用“数据恢复”进行系统数据恢复操作;“期终转结”可以对数据库进行清空操作,提供一个新的数据库以供使用。
其“系统维护”的界面如下图17所示:
图17
2.软件数据库功能设计:
其待开发软件数据库的功能设计如下图18所示:
图18
九.管理分析系统程序源代码:
1.初始化程序:
clearall
setcenturyon
setdatetoymd
DOFORMjxc50.scx
2.进销存管理分析系统主界面:
(1)控件Command1(信息登记):
ClickEvent事件:
doFORMxxdj.scx
(2)控件Command2(查询打印):
ClickEvent事件:
doformcxdy.scx
(3)控件Command3(系统维护):
ClickEvent事件:
doformmentain.scx
(4)控件Command3(关闭):
ClickEvent事件:
thisform.release
3.产品进货单的录入:
(1)表单Form1:
InitEvent事件:
THISFORM.TEXT2.SETFOCUS
(2)控件Text1(进货日期):
InitEvent事件:
THIS.VALUE=DATE()
(3)控件Text2(单据编号):
InteractiveChange事件:
IFEMPTY(THIS.VALUE)
THISFORM.COMMAND1.ENABLED=.F.
ELSE
THISFORM.COMMAND1.ENABLED=.T.
ENDIF
(3)控件Text7(单价):
InitEvent事件:
THIS.VALUE=VAL("")
InteractiveChange事件:
THISFORM.TEXT9.VALUE=THIS.VALUE*THISFORM.TEXT8.VALUE
(4)控件Text8(数量):
InteractiveChange事件:
THISFORM.TEXT9.VALUE=THIS.VALUE*THISFORM.TEXT7.VALUE
(5)控件Command1(保存):
ClickEvent事件:
T1=THISFORM.TEXT1.VALUE
T2=THISFORM.TEXT2.VALUE
T3=THISFORM.TEXT3.VALUE
T4=THISFORM.TEXT4.VALUE
T5=THISFORM.TEXT5.VALUE
T6=THISFORM.TEXT6.VALUE
T7=THISFORM.TEXT7.VALUE
T8=THISFORM.TEXT8.VALUE
T9=THISFORM.TEXT9.VALUE
IFLEN(ALLTRIM(STR(T9)))<=9
IFLEN(T2)<=8
SELECJHDJ
GOTOP
LOCATEFOR单据编号=T2
IFFOUND()
MESSAGEBOX("单据编号不能重复!
",16,"错误")
ELSE
APPENDBLANK
REPLACE进货日期WITHT1
REPLACE单据编号WITHT2
REPLACE进货商WITHT3
REPLACE附加说明WITHT4
REPLACE品名WITHT5
REPLACE计量单位WITHT6
REPLACE单价WITHT7
REPLACE数量WITHT8
REPLACE金额WITHT9
SELECKC
GOTOP
LOCATEFOR品名=T5AND计量单位=T6
IFFOUND()
REPLACE数量WITH数量+T8
ELSE
APPENDBLANK
REPLACE品名WITHT5
REPLACE计量单位WITHT6
REPLACE数量WITHT8
ENDIF
THISFORM.TEXT1.VALUE=T1
THISFORM.TEXT2.VALUE=""
THISFORM.TEXT3.VALUE=""
THISFORM.TEXT4.VALUE=""
THISFORM.TEXT5.VALUE=""
THISFORM.TEXT6.VALUE=""
THISFORM.TEXT7.VALUE=VAL("")
THISFORM.TEXT8.VALUE=0
THISFORM.TEXT9.VALUE=0
THISFORM.REFRESH
THISFORM.TEXT2.SETFOCUS
ENDIF
ELSE
MESSAGEBOX("单据编号不能大于8位!
",16,"错误")
ENDIF
ELSE
MESSAGEBOX("金额最大不能超过9位!
",16,"错误")
ENDIF
(6)控件Command2(退出):
ClickEvent事件:
THISFORM.RELEASE
5.产品销售单的录入:
(1)表单Form1:
InitEvent事件:
THISFORM.TEXT2.SETFOCUS
(2)控件Text1(销售日期):
InitEvent事件:
THIS.VALUE=DATE()
(3)控件Text2(单据编号):
InteractiveChange事件:
IFEMPTY(THIS.VALUE)
THISFORM.COMMAND1.ENABLED=.F.
ELSE
THISFORM.COMMAND1.ENABLED=.T.
ENDIF
(3)控件Text7(单价):
InitEvent事件:
THIS.VALUE=VAL("")
InteractiveChange事件:
THISFORM.TEXT9.VALUE=THIS.VALUE*THISFORM.TEXT8.VALUE
(4)控件Text8(数量):
InteractiveChange事件:
THISFORM.TEXT9.VALUE=THIS.VALUE*THISFORM.TEXT7.VALUE
(5)控件Command1(保存):
ClickEvent事件:
T1=THISFORM.TEXT1.VALUE
T2=THISFORM.TEXT2.VALUE
T3=THISFORM.TEXT3.VALUE
T4=THISFORM.TEXT4.VALUE
T5=THISFORM.TEXT5.VALUE
T6=THISFORM.TEXT6.VALUE
T7=THISFORM.TEXT7.VALUE
T8=THISFORM.TEXT8.VALUE
T9=THISFORM.TEXT9.VALUE
IFLEN(ALLTRIM(STR(T9)))<=9
IFLEN(T2)<=8
SELECKC
GOTOP
LOCATEFOR品名=T5AND计量单位=T6
IFFOUND()
IF数量>=T8
SELECXSDJ
GOTOP
LOCATEFOR单据编号=T2
IFFOUND()
MESSAGEBOX("单据编号不能重复!
",16,"错误")
ELSE
REPLACE数量WITH数量-T8INKC
APPENDBLANK
REPLACE销售日期WITHT1
REPLACE单据编号WITHT2
REPLACE客户WITHT3
REPLACE附加说明WITHT4
REPLACE品名WITHT5
REPLACE计量单位WITHT6
REPLACE单价WITHT7
REPLACE数量WITHT8
REPLACE金额WITHT9
THISFORM.TEXT1.VALUE=T1
THISFORM.TEXT2.VALUE=""
THISFORM.TEXT3.VALUE=""
THISFORM.TEXT4.VALUE=""
THISFORM.TEXT5.VALUE=""
THISFORM.TEXT6.VALUE=""
THISFORM.TEXT7.VALUE=VAL("")
THISFORM.TEXT8.VALUE=0
THISFORM.TEXT9.VALUE=0
THISFORM.REFRESH
THISFORM.TEXT2.SETFOCUS
ENDIF
ELSE
MESSAGEBOX("销售数量不能大于库存数量!
",16,"错误")
ENDIF
ELSE
MESSAGEBOX("找不到库存产品!
",16,"错误")
ENDIF
ELSE
MESSAGEBOX("单据编号不能大于8位!
",16,"错误")
ENDIF
ELSE
MESSAGEBOX("金额最大不能超过9位!
",16,"错误")
ENDIF
(6)控件Command2(退出):
ClickEvent事件:
THISFORM.RELEASE
6.选择查询方式界面:
(1)表单Form1:
InitEvent事件:
IFCXLS="XSDJ"
THISFORM.COMMANDGROUP1.COMMAND3.CAPTION="按客户查询"
ENDIF
(2)控件Command1(按日期查询):
ClickEvent事件:
DOCASE
CASECXLS="JHDJ"
CXSRNR="进货日期"
CASECXLS="XSDJ"
CXSRNR="销售日期"
ENDCASE
DOFORMcx_srjm_d.SCX
THISFORM.RELEASE
(3)控件Command2(按单据编号查询):
ClickEvent事件:
CXSRNR="单据编号"
DOFORMcx_srjm.scx
THISFORM.RELEASE
(4)控件Command3(按进货商或客户查询):
ClickEvent事件:
DOCASE
CASECXLS="JHDJ"
CXSRNR="进货商"
CASECXLS="XSDJ"
CXSRNR="客户"
ENDCASE
DOFORMcx_srjm.scx
THISFORM.RELEASE
(5)控件Command4(按品名查询):
ClickEvent事件:
CXSRNR="品名"
DOFORMcx_srjm.scx
THISFORM.RELEASE
7.按品名或单据编号查询界面:
(1)表单Form1:
InitEvent事件:
THISFORM.LABEL1.Caption="请输入查询的"+CXSRNR+":
"
(2)控件Command1(确定):
ClickEvent事件:
CXNR=THISFORM.TEXT1.VALUE
THISFORM.RELEASE
DOCX.QPR
DOFORMCXJM.scx
(3)控件Command2(取消):
ClickEvent事件:
THISFORM.RELEASE
8.按日期查询界面:
(1)表单Form1:
InitEvent事件:
THISFORM.LABEL1.Caption="请输入查询的"+CXSRNR+":
"
(2)控件Command1(确定):
ClickEvent事件:
CXNR=ALLTRIM(STR(YEAR(THISFORM.TEXT1.VALUE)))+'-'+ALLTRIM(STR(MONT(THISFORM.TEXT1.VALUE)))+'-'+ALLTRIM(STR(DAY(THISFORM.TEXT1.VALUE)))
THISFORM.RELEASE
DOCX.QPR
DOFORMCXJM.scx
(3)控件Command1(取消):
THISFORM.RELEASE
9.查询文件:
SETSAFETYOFF
DOCASE
CASECXSRNR="品名"ORCXSRNR="单据编号"ORCXSRNR="进货商"ORCXSRNR="客户"
SELECT*;
FROM进销售!
&CXLS;
WHERE&CXLS..&CXSRNR=ALL;
(SELECT&CXSRNR;
FROM&CXLS;
WHERE&CXLS..&CXSRNR="&CXNR");
INTOTABLE_TABLE
CASECXSRNR="进货日期"
SELECT*;
FROM进销售!
&CXLS;
WHERE&CXLS..进货日期=ALL;
(SELECT进货日期;
FROM&CXLS;
WHERE&CXLS..进货日期={^&CXNR});
INTOTABLE_TABLE
CASECXSRNR="销售日期"
SELECT*;
FROM进销售!
&CXLS;
WHERE&CXLS..销售日期=ALL;
(SELECT销售日期;
FROM&CXLS;
WHERE&CXLS..销售日期={^&CXNR});
INTOTABLE_TABLE
ENDCASE
SETSAFETYON
10.查询显示界面:
(1)表单Form1:
InitEvent事件:
DOCASE
CASECXLS="JHDJ"
CXLS="进货查询"
CASECXLS="KC"
CXLS="库存查询"
CASECXLS="XSDJ"
CXLS="销售查询"
ENDCASE
THISFORM.LABEL1.Caption="符合查询条件的"+CXLS+":
"
(2)控件Command1(打印):
ClickEvent事件:
DOCASE
CASETHISFORM.OPTIONGROUP1.OPTION1.VALUE=1
DOCASE
CASECXLS="进货查询"
REPORTFORMCX_JH.FRXPREVIEW
CASECXLS="库存查询"
REPORTFORMCX_KC.FRXPREVIEW
CASECXLS="销售查询"
REPORTFORMCX_XS.FRXPREVIEW
ENDCASE
CASETHISFORM.OPTIONGROUP1.OPTION2.VALUE=1
DOCASE
CASECXLS="进货查询"
REPORTFORMCX_JH.FRXTOPRINTERPROMPT
CASECXLS="库存查询"
REPORTFORMCX_KC.FRXTOPRINTERPROMPT
CASECXLS="销售查询"
REPORTFORMCX_XS.FRXTOPRINTERPROMPT
ENDCASE
ENDCASE
(3)控件Command2(退出):
ClickEvent事件:
USE
THISFORM.RELEASE
11.系统维护界面:
(1)控件Command1(数据备份):
ClickEvent事件:
X=MESSAGEBOX("确定要备份数据吗?
",3+32+256,"提示")
IFX=6
setsafetyoff
copyFILEJHDJ.DBFTO_JHDJ.DBF
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 进销存 管理 系统 设计 源代码