关键词:管理信息系统 仓库管理
【Abstract】This system is developed to meet the need of the warehouse management, to strengthen cost control and to improve income management。 Warehouse management process for a detailed analysis and planning by the use of computer management information systems to manage warehouse, and the development
1
of a warehouse management system。 In every sub-system, only the related operator can access to the operation of this system。 Operators can input, inquire and change the data of the database, they can also inquire about data from the other sub-system。 The database of this system is of great important in the operation of data inquiry, so the main concern of this system is to build up a database and a smooth access to the operation of this system. The interacting function of this system is very powerful, operators of different department will find it easy to learn about each function of this system so as to use this system efficiently。 There is a friendly interface of this system, the design of each function is in pursuit of rationality and humanization. VB 6.0 is used to develop this system, along with other popularly-used software developing tools. As a result, the warehouse management will be greatly improved by the switch of purely manual work to the joint operation of manual and computer。
Key words:Managing Information System Warehouse Management
2
目 录
摘要及关键词 …………………………………………………… 2 Abstract and Keywords …………………………………… 3
第一章 概述 ……………………………………………… 4 1.1仓库管理 ……………………………………………… 6 1.2系统目标…………………………………………………… 7 1。3系统主要功能……………………………………………… 8 第二章 总体结构设计……………………………………………… 8 2.1系统总体功能图……………………………………………… 8 2.2系统非功能需求…………………………………………… 9 2.3系统主要事件表……………………………………………… 9 2。4实体关系表……………………………………………… 10 第三章 系统详细设计与实现
3。1系统功能模块……………………………………………… 11 3.2系统进度表……………………………………………… 13
3
3。3逻辑设计……………………………………………… 13 3。4详细设计……………………………………………… 17
3。4。1用户登陆……………………………………………… 19 3。4.2客户的实现代码……………………………………………22
3.4。3仓库信息管理………………………………………………27
3。4.4用户信息管理………………………………………………33
3。4。5用户密码修改………………………………………………35
3.4.6测试结果……………………………………………… 37 第四章 数据存储设计……………………………………………… 38 4.2数据存储描述……………………………………………… 38 4.1数据流描述表……………………………………………… 38 第五章 总结……………………………………………… 39 参考资料……………………………………………… 41
4
第一章 概述
仓库管理是上世纪中期发展起来的一门新兴学科。它最早产生于
二战时期的美国,五十年代中期,仓库概念传人日本,并得到快速发展。时至今日,仓库管理已成为西方企业管理中不可或缺的一部分,在许多国家得到了广泛的研究与应用。总的说来,仓库管理就是通过采购、仓储、综合、出库、配送等活动,解决物资供需之间存在的时间、空间、数量、品种价格等方面的矛盾,以此衔接社会生产的各环节,从而确保生产的顺利进行。实现仓库管理现代化的根本途径是信息化、系统化。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
我企业单位从2000年2月创业以来,经过不断努力,现有职工50多人,其中,有计算机操作工作经验的员工占职工人数的30%左右。 物品仓库一直是本企业单位仓管部门的主要任务,随着业务的不断发展,加强成本管理与收入管理、通过提高服务水平提升企业形象已成为本企业单位的迫切需要。因为该企业单位目前采用手工操作的运营过程,差错率较高,已不能适应物品对现代化管理的要求。 企业单位的物资供应管理往往是很复杂的,烦琐的。由于所掌握的物资种类众多,订货,管理,发放的渠道各有差异,各个企业单位之间的管理体制不尽相同,各类统计计划报表繁多,因此物资管理必须实现计算机化,而且必须根据企业单位的具体情况制定相应的方
5
案.
1.1仓库管理
仓库管理分人员管理和物料管理:
物料管理须按照几点原则:先进先出,物以类聚,三账(实物,卡,电脑账)合一。物料按规定存放等。
仓库流程分为:进料流程,发放流程,库存品管理等。 负责仓库的物料保管、验收、入库、出库等工作。 提出仓库管理意见及物资采购计划,在批准后贯彻执行。 严格执行公司仓库保管制度及其细则规定,防止收发货物差错出现。入库要及时登帐,手续检验不合要求不准入库;出库时手续不全不发货。
负责仓库区域内的治安、防盗、消防工作,发现事故隐患及时上报,对意外事件及时处置。
合理安排物料在仓库内的存放次序,按物料种类、规格、等级分区堆码,不得混堆和乱堆,保持库区的整洁。
负责将物料的存贮环境调节到最适条件,防止鼠害、虫咬等, 负责定期对仓库物料盘点清仓,做到帐、物、卡三相符,协助物料主管做好盘点、盘亏的处理及调帐工作.
负责仓库管理中的出入库单、验收单等原始资料、帐册的收集、
6
整理和建档工作,及时编制和按时上交相关的材料收支存报表,及时准确地登记材料明细分类帐簿。
以公司利益为重,爱护公司财产,不得监守自盗. 完成采购业务部及财务部长临时交办的其他任务。
这个是基本的职责 仓管主要是仓库明细帐登记清楚 分类 分品种登记
摆放也分类 分品种的摆放 这样便于清理和领取 每月底盘存一次 制作每月的进 销 存 报表 确保仓库货物的安全、防火、防盗。
1.2系统目标
规范仓库管理,实现信息化管理仓库,方便仓库管理员管理仓库,以便于相关部门查看有关物料的库存及相关信息等,及时采购、销售等.通过有效控制库存,大大减少资金占用,提高资金周转速度,从而提高企业的经济效益。
另外对相关数据进行统计分析,提取出重要的信息元素给企业的决策者,从而做出正确的决策。最终提高企业的核心竞争力。
7
1。3系统主要功能
仓库的主要功能如下:
在仓库入库出库时,及时将相关信息计入数据库,并更新库存状态; 通过将数据库存放到数据库,实现数据的共享,从而能实现仓库管理的各种信息查询、修改和维修;
通过编码,将原材料及产品等分类,便于及时掌控相关物质的信息,并能及时钟爱的给提或者;
在库存管理中加入提高储备和最低储备字段,对仓库的物资设备实现监控和报警,以便于采购;
通过盘点,及时检查仓库中的物料,及时做好报废准备; 定期统计,生成相关报表给决策者,作出正确的决策.
第二章 总体结构设计
2。1系统总体功能图
仓库信息系统的总体任务是实现仓库管理的信息化。通过资金流、物
8
流、信息流来阐明仓库的经营过程,这就是仓库信息系统要描述的过程。对于系统管理员来说,他们所关心的是如何方便地保存原始信息,及时核对并统计分析出相关信息。经过简单分析,可以得出本系统主要的任务由入库管理、退货管理、在库管理、出库管理四大模块组成。
2.2 系统非功能需求
(1)可用性:提供友好的用户界面,给出的用户说明清晰明了、便于操作,能够按照说明一步步操作下去.并给与相关的在线操作。 (2)可靠性:减少系统的失误率,保证长时间的稳定工作。及时进行数据备份,在发生故障时能够恢复系统较少损失.赋予不同用户相关权限,并对相关数据保密。
(3)兼容性:提供相关的用户平台,便于在不同的硬件设施、不同的操作系统下运行。
(4)安全性:采用一套防护体制,抵御来自内外部的风险,保证数据正确、完整、可靠。
9
2。3系统主要事件表
事件 物料验收 入库 修改库存明细 领库存产品 领原材料 触发 采购单 物料入库通知单 物料入库通知单、产品领料单、报废单 产品领料单 原材料领料单 来源 采购部 财务部 采购部 生产部 销售部 生产部 用况 核对采购单 检查物料入库通知单 检查改变数量 核对产品领料单 核对原材料领料单 盘点 进行统计、并形成报表 填写退料单 填写退货单 清点、核对 响应 物料验收合格单 安排入库 修改库存明细 安排领库存产品 安排领原材料 得到新的库存情况、报废单 报表 退料单 退货单 安排入库 目的 财务部 仓库 仓库 销售部 生产部 盘点 盘点需要 仓库 仓库 统计 填写退料单 填写退货单 清点、核对 统计需要 多余原材料 被退物品 退料单、退货单 财务部 生产部 销售部 生产部、销售部 财务部 仓库 仓库 仓库 2.4 实体关系图
10
第三章 系统详细设计与实现
3。1系统功能模块
1. 仓库管理系统( WMS)功能设定模块
自定义整个系统的管理规则,包括定义管理员及其操作口令的功能;
2. 仓库管理系统( WMS)的基本资料维护模块
对每批产品生成唯一的基本条码序列号标签,用户可以根据自己的需要定义序列号,每种型号的产品都有固定的编码规则,在数据库
11
中可以对产品进行添加、删除和编辑等操作; 3。 采购管理模块 仓库管理系统( WMS)
采购定单:当需要采购的时候,可以填写采购定单,此时并不影响库存;
采购收货:当采购定单被批准,完成采购后到货的时候,首先给货物帖上条形码序列号标签,然后在采购收货单上扫描此条形码,保存之后,库存自动增加。仓库管理系统( WMS)
其他入库:包括借出货物归还、退货等只需要填写采购收货单; 4。 仓库管理模块 仓库管理系统( WMS)
产品入库:采购入库或者其他入库,自动生成入库单号,货品及可选择方便快捷,可以区分正常入库、退货入库等不同的入库方式. 产品出库:销售出库或者其他出库,可以自动生成出库单号,可以区分正常出库、赠品出库等不同的出库方式;
库存管理:不需要手工管理,当入库和出库时,系统自动生成每类产品的库存数量,查询方便;
特殊品库:当客户需要区分产品时,可以建立虚拟的仓库管理需要区分的产品各功能和正常品库一致.
调拨管理:针对不同的库之间需要调拨,可以自动生成调拨单号,支持货品在不同的仓库中任意调拨。
盘点管理:用户随时可以盘点仓库,自动生成盘点单据,使盘点工作方便快捷。
库存上限报警:当库存数量不满足一个量的时候,系
12
统报警.
5。 销售管理模块 仓库管理系统( WMS)
销售定单:当销售出库的时候,首先填写销售出库单,此时不影响库存;
销售定单:当销售出库的时候,将销售出库产品序列号扫描至该出库单上,保存之后,库存报表自动减少该类产品. 6. 报表生成模块 仓库管理系统( WMS)
月末,季度末以及年末销售报表、采购报表以及盘点报表的自动生成功能,用户自定义需要统计的报表; 7. 查询功能 仓库管理系统( WMS)
采购单查询,销售单查询,单个产品查询,库存查询等(用户定义)。
查询都是按照某个条件:条形码序列号、出库日期、出库客户等来查询.
3.2系统进度表
13
3.3逻辑设计
(一)、表的定义如下 :
Client表(客户信息表) Product(产品信息表)
ProinStore(库存信息表) Takeout(出库表)
StoreIn(入库表) Users(用户表)
14
ProType(产品类型表) Storehouse(仓库信息表)
(二)、视图定义如下:
一、report2(报表视图) CREATE VIEW Report2 AS
SELECT SiType, Pid, Pprice, Pnum, (Pprice * Pnum) As Amount, Cid, Sid, EmpName, OptDate FROM StoreIn UNION
SELECT Ttype, Pid, Pprice, Pnum, (Pprice * Pnum) As Amount, Cid, Sid, EmpName, OptDate FROM TakeOut 二、 库存统计视图 CREATE VIEW Total_Num AS
SELECT dbo。ProInStore.Pid, SUM(dbo.ProInStore.Pnum) AS Total FROM dbo.ProInStore INNER JOIN
15
dbo.Product ON dbo.ProInStore.Pid = dbo.Product.Pid GROUP BY dbo。ProInStore.Pid 三、库存视图
CREATE VIEW dbo.v_ProInStore AS
SELECT p。Pid, SUM(s.Pnum) AS SumNum FROM dbo.Product p INNER JOIN
dbo。ProInStore s ON p.Pid = s.Pid GROUP BY p。Pid 四、入库视图
CREATE VIEW dbo。v_storein AS
SELECT p。Pid, SUM(i.Pnum) AS SumNum, SUM(i.Pnum * i.Pprice) AS SumPrice
FROM dbo.Product p INNER JOIN
dbo。StoreIn i ON p。Pid = i。Pid GROUP BY p.Pid 五、出库视图
CREATE VIEW dbo。v_takeout AS
SELECT p。Pid, SUM(t.Pnum) AS SumNum, SUM(t.Pnum * t。Pprice) AS SumPrice
16
FROM dbo。Product p INNER JOIN dbo.TakeOut t ON p.Pid = t。Pid GROUP BY p.Pid 六、失效期统计视图 CREATE VIEW dbo.Valid AS
SELECT dbo.ProInStore.SpId AS 库存记录编号, dbo.Product。Pname AS 产品名称, dbo.ProInStore.Pprice
AS
产
品
价
格
,
dbo.ProInStore.Pnum AS 产品数量,
dbo。ProInStore。MakeDate AS 生产日期, dbo。Storehouse.Sname AS 仓库名称,
ROUND(DATEDIFF(day, DATEADD(day, dbo.Product。Valid, dbo。ProInStore。MakeDate),
GETDATE()), 0) AS 距离失效期的天数 FROM dbo。ProInStore INNER JOIN
dbo。Product ON dbo.ProInStore。Pid = dbo。Product.Pid AND DATEDIFF(day,
GETDATE(), dbo。ProInStore。MakeDate)
〉= dbo.Product.Valid — dbo。Product。AlarmDays INNER JOIN
dbo.Storehouse
ON dbo
17
。ProInStore.Sid =
dbo.Storehouse.Sid
3.4详细设计 总体模块设计如下:
模块一(基本信息管理)(由本人完成)
18
准备工作:
一完成对数据库连接和操作的类 #import
”c
:
\\Program
Files\\Common
no_namespace
Files\\System\\ado\\msado15.dll\"
rename(\"EOF”,\"adoEOF\") rename(”BOF”,”adoBOF”) class ADOConn {// 定义变量 public:
_ConnectionPtr m_pConnection; //添加一个指向Connection对象的指针:
_RecordsetPtr m_pRecordset; //添加一个指向Recordset对象的指针:
public: // 定义方法
19
ADOConn();
virtual ~ADOConn(); // 初始化-连接数据库 void OnInitADOConn();
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL); // 执行查询 BOOL ExecuteSQL(_bstr_t bstrSQL); // 执行SQL语句,Insert Update _variant_t void ExitConnect(); void Backup(); //备份数据库 void Restore();//恢复数据库}; 3。4.1用户登陆:
实现代码如下:
class CLoginDlg : public CDialog {
// Construction public:
CLoginDlg(CWnd* pParent = NULL); // standard constructor ~CLoginDlg();
20
// Dialog Data
//{{AFX_DATA(CLoginDlg) enum { IDD = IDD_LOGIN_DIALOG }; CEdit m_control_username; CEdit m_control_password; int count; int seconds; CSMButton m_ok; CSMButton m_cancel; CString m_Pwd; CString m_UserName; COLORREF m_clrText; COLORREF m_clrBkgnd; CBrush m_brBkgnd;
CBrush m_brControlBkgnd1; CBrush m_brControlBkgnd2; protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support virtual void OnOK();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd,
21
UINT
nCtlColor);
afx_msg void OnTimer(UINT nIDEvent); virtual BOOL OnInitDialog(); //}}AFX_MSG
DECLARE_MESSAGE_MAP() };
void CLoginDlg::OnOK() {UpdateData(TRUE); if (m_UserName == \"\"){ MessageBox(\"请输入用户名\"); return;} if (m_Pwd == \"”){
MessageBox(”请输入密码”); return;}
//定义CUsers对象,用于从表Users中读取数据 CUsers user;
user。GetData(m_UserName);
//如果读取的数据与用户输入数据不同,则返回 if (user。GetPwd() != m_Pwd) { if (count<3)
{MessageBox(”用户信息不正确,无法登录!”); count++;
22
m_Pwd。Empty();
m_control_password。SetFocus(); UpdateData(FALSE);} else {
MessageBox(\"你可能是非法用户!”,\"警告”,MB_OK|MB_ICONHAND);
exit(0); }}else{KillTimer(0);CDialog::OnOK();}} 3。4.2客户的实现代码
void CClientManDlg::Refresh_Data() {
UpdateData(TRUE); //将控件的值读取到成员变量中 CString cSource;
CString cCtype; //读取客户类型值
cCtype.Format(\"%d\) + 1);
23
//设置SELECT语句,按客户单位排序
cSource = ”SELECT Cid, Cname AS 客户单位, Contact AS 联系人, Address AS 通信地址,\";
cSource += \" Postcode AS 邮政编码, Phone AS 联系电话, Fax AS 传真电话, Memo AS 备注\";
cSource += ” FROM Client WHERE Ctype=” + cCtype + \" ORDER BY Cname\";
m_adodc.SetRecordSource(cSource); m_adodc。Refresh(); //设置表格列宽度 _variant_t vIndex; vIndex = long(0);
m_datagrid.GetColumns().GetItem(vIndex)。SetWidth(0); }
BOOL CClientManDlg::OnInitDialog() {
CDialog::OnInitDialog();
// TODO: Add extra initialization here m_Ctype.SetCurSel(0); //设置客户类型 Refresh_Data(); //刷新表格中的记录集
24
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE }
void CClientManDlg::OnAddButton() {
// TODO: Add your control notification handler code here UpdateData(TRUE); //打开编辑对话框 CClientEditDlg dlg; dlg。cCid = \"”;
dlg。iCtype = m_Ctype。GetCurSel() + 1; if (dlg。DoModal() == IDOK) Refresh_Data(); }
void CClientManDlg::OnSelchangeCtypeCombo() {
// TODO: Add your control notification handler code here
25
Refresh_Data(); }
void CClientManDlg::OnModiButton() {
// TODO: Add your control notification handler code here if (m_adodc.GetRecordset().GetEof()) {
MessageBox(”请选择要修改的记录\"); return; }
UpdateData(TRUE); CClientEditDlg dlg;
dlg。cCid = m_datagrid。GetItem(0); //记录编号 dlg.iCtype = m_Ctype.GetCurSel() + 1; //客户类型 dlg。m_Cname = m_datagrid。GetItem(1); //单位名称 dlg。cCname = m_datagrid.GetItem(1);
dlg.m_Contact = m_datagrid。GetItem(2); //联系人 dlg。m_Address = m_datagrid.GetItem(3); //通信地址 dlg。m_Postcode = m_datagrid。GetItem(4); //邮政编码 dlg。m_Phone = m_datagrid。GetItem(5); //联系电话 dlg。m_Fax = m_datagrid。GetItem(6); //传真
26
dlg。m_Memo = m_datagrid。GetItem(7); //备注信息
if (dlg。DoModal() == IDOK) Refresh_Data(); }
void CClientManDlg::OnDelButton() {
// TODO: Add your control notification handler code here if (m_adodc。GetRecordset().GetEof()) {
MessageBox(\"请选择要删除的记录”); return; }
CString Cid;
Cid = m_datagrid。GetItem(0); CStoreIn obj;
if (obj.HaveClient(Cid) == 1) {
MessageBox(\"客户出现在入库单中,不能删除\"); return; }
27
CTakeOut obj1;
if (obj1.HaveClient(Cid) == 1) {
MessageBox(”客户出现在出库单中,不能删除”); return; }
if (MessageBox(”是否删除当前记录\请确定”, MB_YESNO)IDYES) {
CClient clt;
clt.sql_delete(m_datagrid。GetItem(0)); Refresh_Data(); } }
3。4.3仓库信息管理
28
==
void CStoreHouseManDlg::Refresh_Data() {
UpdateData(TRUE); CString cSource;
cSource = ”SELECT Sid, Sname AS 仓库单位, Memo AS 备注”; cSource += \" FROM Storehouse ORDER BY Sname\"; m_adodc.SetRecordSource(cSource); m_adodc.Refresh(); //设置表格列宽度 _variant_t vIndex; vIndex = long(0);
29
m_datagrid。GetColumns().GetItem(vIndex)。SetWidth(0); vIndex = long(1);
m_datagrid。GetColumns().GetItem(vIndex)。SetWidth(100); vIndex = long(2);
m_datagrid。GetColumns().GetItem(vIndex).SetWidth(420); }
void CStoreHouseManDlg::OnAddButton() {
// TODO: Add your control notification handler code here UpdateData(TRUE); //打开编辑对话框 CStoreHouseEditDlg dlg; dlg。cSid = \"”;
if (dlg.DoModal() == IDOK) Refresh_Data(); }
void CStoreHouseManDlg::OnModiButton() {
// TODO: Add your control notification handler code here if (m_adodc.GetRecordset()。GetEof()) {
30
MessageBox(”请选择要修改的记录”); return; }
UpdateData(TRUE); CStoreHouseEditDlg dlg;
dlg。cSid = m_datagrid.GetItem(0); //记录编号 dlg。m_Sname = m_datagrid。GetItem(1); //仓库名称 dlg。m_Memo = m_datagrid.GetItem(2); //备注信息
if (dlg。DoModal() == IDOK) Refresh_Data(); }
void CStoreHouseManDlg::OnDelButton() {
// TODO: Add your control notification handler code here if (m_adodc.GetRecordset().GetEof()) {
MessageBox(”请选择要删除的记录\"); return; }
CString Sid;
31
Sid = m_datagrid。GetItem(0); CStoreIn obj;
if (obj.HaveStore(Sid) == 1) {
MessageBox(”此仓库信息出现在入库单中,不能删除\"); return; }
CTakeOut obj1;
if (obj1。HaveStore(Sid) == 1) {
MessageBox(”此仓库信息出现在出库单中,不能删除”); return; }
CProInStore obj2;
if (obj2.HaveStore(Sid) == 1) {
MessageBox(”此仓库信息出现在库存产品信息中,不能删除”); return; }
if (MessageBox(\"是否删除当前记录\",\"请确定”, MB_YESNO) == IDYES)
32
{
CStorehouse sh; sh。sql_delete(Sid); Refresh_Data(); } }
BOOL CStoreHouseManDlg::OnInitDialog() {
CDialog::OnInitDialog();
// TODO: Add extra initialization here Refresh_Data();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE }
33
3.4.4用户信息管理
void CUserManDlg::OnAddButton() {
CUserEditDlg dlg; dlg.iUserType = 2;
if (dlg。DoModal() == IDOK) m_adodc。Refresh(); } void CUserManDlg::OnModiButton() { if (m_datalist。GetText() == \"\") {
MessageBox(”请选择用户”); return; }
if (curUser。GetUserName() != \"Admin” && GetUserName() != m_datalist.GetText()
&& m_datalist。GetBoundText() == ”1\")
34
curUser。 { //除Admin外,其他管理员只能修改普通用户信息 MessageBox(\"只能对普通用户进行密码复位”); return; }
if (MessageBox(\"是否对当前用户进行密码复位\",\"请确认\MB_YESNO) == IDYES){ CUsers usr; usr。SetPwd(”888888”); //设置默认密码 usr.sql_updatePwd(m_datalist。GetText()); MessageBox(”密码已经复位”);}} void CUserManDlg::OnDelButton() { if (m_datalist.GetText() == \"\"){ MessageBox(”请选择用户”); return;}
if (curUser。GetUserName() != \"Admin\" && m_datalist.GetBoundText() == ”1”){ //除Admin外,其他管理员只能删除普通用户
MessageBox(”只能删除普通用户\");
return;}if (m_datalist.GetText() == \"Admin\"){ MessageBox(\"不能删除Admin用户”); return;}
if (MessageBox(\"是否删除当前用户\",”请确认\", MB_YESNO) == IDYES)
35
{ CUsers usr;
usr.sql_delete(m_datalist.GetText()); m_adodc。Refresh();} } 3。4。5用户密码修改
void CChangePwdDlg::OnOK()
{//将对话框中编辑框的数据读取到成员变量中 UpdateData(TRUE); //检查数据有效性 if (m_OldPwd == ”\") {
MessageBox(”请输入旧密码”); return; }
if (m_NewPwd1 == \"”) {
MessageBox(”请输入新密码”);
36
return; }
if (m_NewPwd1 != m_NewPwd2) {
MessageBox(\"两次输入的新密码不同\"); return; }
//定义CUsers对象,用于从表Users中读取数据 CUsers user;
user。GetData(m_UserName);
//如果读取的数据与用户输入数据不同,则返回 if (user.GetPwd() != m_OldPwd) {
MessageBox(\"用户密码不正确!”); return; }
user.SetPwd(m_NewPwd1); user.sql_updatePwd(m_UserName);
MessageBox(”密码修改成功,下次登录请使用新密码\");
37
CDialog::OnOK(); }
3.4.6测试结果 A、进入系统
输入密码正确进入主界面 B、进入主界面 C、进入客户信息管理
38
第四章 数据存储设计
4。1数据流描述表 号码 1 2 原材料 采购部 物料验收 财务部 数据流名 源 目的地 备注 物料验收合格单、发物料验收 票 3 4 5 6 7 8 9 物料入库通知单 在库产品 原材料 多余原材料 退料单 被退物品 原材料、货物 财务部 销售部 生产部 生产部 填写退料单 销售部 清点、核对 入库 领库存产品 领原材料 填写退料单 清点、核对 填写退料单 仓库 4。2数据存储描述 数据库号 D1 数据存储名 采购单 源 采购部 备注 39
D2 D3 D4 物料验收合格单 入库单 物料验收 入库 物料库存明细更改修改库存明细 表 D5 D6 D7 D8 D9
原材料领料单 产品领料单 仓库领料单 报废单 报表 领原材料 领库存产品 修改库存明细 盘点 统计
第五章 总结
在这次课程设计中,让我学到了很多在课堂和书本上学不到的知识,我在这次课程设计中最大的收获有以下几个方面:
领略到了数据库设计在计算机领域的重要性.数据库作为一个永久存储形式在应用中发挥着重要的作用。在数据库设计中,我明白了数据库设计中不是范式越高越好的.我们要根据我们的应用来决定,一切应该以需求为首要选择。
对变成环境、一些控件的使用和界面的美化方面更加熟悉。因为《仓库管理系统》中涉及到很多控件的使用,只有很好的使用这些控件才
40
可以给出一个很好的界面呈现在用户的面前。这样更有利于数据库和用户之间的交流.这里就要涉及一些平时不太常见的控件的使用问题。为了更好的在系统中利用这些控件,我上网查询了一些关于控件使用的资料,最主要的是MSDN上面、还有借了一些这方面的书籍。在界面的美化方面,我了解了一些WINDOWS自定义界面的知识,现在的软件其实好多面向用户的时候用户首先看的就是一个软件的界面是否有好,是否漂亮。其实,界面美化是很重要的。因为美,是人一直追求的。主要知识有:自定义窗口形状,按钮的3D效果,控件的自定义等等.这些都是通过面向对象编程的一些特性实现的,又得是通过多态,又得是通过类的继承。
利用软件工程学开发系统.虽然这个《仓库管理系统》是一个小的系统,但只有从这些小的项目中就利用软件工程学的知识,这样可以开发在系统设计和实现中我们可以总结很多经验和教训.我们一般按照瀑布开发模型、增量模型、 螺旋模型来做我们的项目.
经过了这次仓库管理系统的课程设计我从中学到了很多,同时明白了做一个小型软件的步骤和流程.如何让自己设计的软件运用到具体的实际工作中,这是一个关键的环节。还有就是程序设计和运行测试中遇到的问题该如何解决,从解决问题中我也学到了许多平时课本上所没有的知识。当然,能够完成这个仓库管理系统我自己也感觉很有成就感.
运用到的开发工具和软件技术:
此系统结合货物仓库管理的要求,对Visual FoxPro (VFP)数
41
据库管理系统、SQL语言的学习和应用,主要完成货物仓库管理系统的需求分析,系统的数据库设计和实现,系统的表单设计,主控程序设计,并由此设计了数据库结构和应用程序。系统运行结果证明,本人设计的货物仓库管理系统可以满足仓库管理者完成仓库管理的日常工作,包括材料的入库,出库以及库存材料信息的管理维护等
参考资料
1. Visual FoxPro 程序设计及其应用系统开发 李作纬中国水利水电出版社
2。 数据库应用系统开发技术 刘军 等 械工业出版社 3。 其它资料若干
42
等机
因篇幅问题不能全部显示,请点此查看更多更全内容