第一篇:仓库库存管理系统源程序
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
仓库库存管理系统源程序
#include
char name[20];//物品名称
int num;
//商品数量
int level;//物品等级
}item;typedef struct node { struct item data;struct node * next;}Node,*Link;//定义为链表 void menu()//页面显示函数 {
精心收集
精心编辑
精致阅读 如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
system(“cls”);//清屏函数
printf(“***********************************《物品库存管理》*****************************n”);printf(“
n”);
printf(“n
<1> 物品入库管理ntn
<2> 物品出库管理n”);printf(“n
<3> 浏览库内物品信息ntn
<4> 修改物品信息n”);printf(“n
<5> 保存物品信息ntn
<0> 退出库存管理n”);printf(“
n”);cout<<“********************************************************************************”< void printstart(){ printf(“-----------n”);printf(“n 请选择操作:”); 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 } void Wrong()//错误处理函数 { printf(“输入错误!n”);getchar();getchar();menu(); return;} void Nofind(){ printf(“没有找到该物品!n”);} void printc()//本函数用于输出中文 { printf(“ 物品编码 物品名称 物品数量 n”);} void printe(Node *p)//输出物品信息函数 { cout< ”< data.code<<“ ”< data.name<<“ ”< data.num<<“ 精心收集 精心编辑 精致阅读 如需请下载!物品等级 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 ”< data.level;} Node *Locate(Link l,char findmess[],char nameorcode[])//用于定位连接中,符合要求的结点,并返回该指针 { Node *r;if(strcmp(nameorcode,“code”)==0)// { } else if(strcmp(nameorcode,“name”)==0)//按名称查询 { r=l->next;while(r!=NULL){ r=l->next;while(r!=NULL){ } if(strcmp(r->data.code,findmess)==0)return r;r=r->next; 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 } } } if(strcmp(r->data.name,findmess)==0)return r;r=r->next;return 0;void Add(Link l)//增加物品函数 { Node *p,*r,*s;char code[10];r=l;s=l->next;while(r->next!=NULL)r=r->next;while(l){ system(“cls”);//清屏函数 cout<<“请输入商品编码(输入'0'返回上一级菜单):”< 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 while(s){ if(strcmp(s->data.code,code)==0){ printf(“物品编码为'%s'的物品已经存在,如果要修改请选择'4 修改'!n”,code); printstart(); printc(); printe(s); printstart(); printf(“n”); return; } s=s->next; } p=(Node *)malloc(sizeof(Node)); strcpy(p->data.code,code); printf(“请输入物品名称:”); scanf(“%s”,p->data.name);getchar(); 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 printf(“请输入物品数量:”); scanf(“%d”,&p->data.num); printf(“请输入物品等级:”); scanf(“%d”,&p->data.level); p->next=NULL; r->next=p; r=p; shoudsave=1;} menu();} void Qur(Link l)//查询物品信息函数 { int sel;char findmess[20];Node *p;if(!l->next){ printf(“n没有信息可查询!n”); getchar(); getchar();menu(); 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 return; } system(“cls”);//清屏函数 printf(“n 1按物品编码查询n 2按物品名称查询n”);scanf(“%d”,&sel);if(sel==1)// { printf(“请输入要查询的编码:n”);scanf(“%s”,findmess);p=Locate(l,findmess,“code”);if(p){ printf(“tttt查询结果n”); printstart(); cout< printc(); cout< printe(p); cout< printstart(); getchar();getchar(); 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 } } menu();return;else Nofind();else if(sel==2)// { printf(“请输入要查找的物品名称:”);scanf(“%s”,findmess);p=Locate(l,findmess,“name”);if(p){ printf(“ttt查询结果n”); printstart();cout< printc();cout< printe(p);cout< printstart(); 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 getchar(); getchar(); menu(); return; } else Nofind(); } else Wrong();getchar(); system(“cls”);//清屏函数 menu();} void Del(Link l)//删除 { int sel;Node *p,*r;char findmess[20];if(!l->next){ system(“cls”);//清屏函数 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 } printf(“n您的仓库为空!n”);getchar();getchar();menu();return;system(“cls”);//清屏函数 printf(“n 1按物品编码出仓n 2按物品名称出仓n”);scanf(“%d”,&sel);if(sel==1){ printf(“请输入要出仓的物品编码:”);scanf(“%s”,findmess);p=Locate(l,findmess,“code”);if(p){ r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf(“n该物品已经成功出仓n”); 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 } } shoudsave=1;getchar();getchar();menu();return;else Nofind();else if(sel==2){ system(“cls”);//清屏函数 printf(“请输入要出仓的物品名:”);scanf(“%s”,findmess);p=Locate(l,findmess,“name”);if(p){ r=l;while(r->next!=p)r=r->next;r->next=p->next; 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 } } } free(p);printf(“n该物品已经成功出仓!n”);shoudsave=1;getchar();getchar();menu();return;else Nofind();else Wrong();void Modify(Link l)//物品信息修改 { Node *p;char findmess[20];if(!l->next){ system(“cls”);//清屏函数 printf(“n您的库存为空,无需修改!n”); 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 } getchar();getchar();menu();return;printf(“请输入要修改的物品编码:”);scanf(“%s”,findmess);p=Locate(l,findmess,“code”);if(p){ system(“cls”);//清屏函数 printf(“请输入新编码(原来的是%s):”,p->data.code);scanf(“%s”,p->data.code);printf(“请输入新名称(原来的是%s):”,p->data.name);scanf(“%s”,p->data.name);getchar();printf(“请输入新的物品数量(原来的是%d):”,p->data.num);scanf(“%d”,&p->data.num);getchar();printf(“请输入新的物品等级(原来的是%d):”,p->data.level);scanf(“%d”,&p->data.level); 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 getchar(); printf(“n修改资料成功!n”); shoudsave=1; getchar();menu(); return;} else Nofind();getchar();menu();} void Disp(Link l){ int count=0;Node *p;p=l->next;if(!p){ printf(“n 没有资料可以显示!n”); getchar();getchar(); 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 menu(); return;} printf(“tttt显示结果n”);printstart();printc();printf(“n”);while(p){ printe(p); p=p->next;} printstart();printf(“n”);} void Save(Link l)//物品信息保存 { FILE *fp;Node *p;int flag=1,count=0;fp=fopen(“c:student”,“wb”); 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 if(fp==NULL){ printf(“n重新打开文件时错误!n”);exit(1);} p=l->next;while(p){ if(fwrite(p,sizeof(Node),1,fp)==1){ p=p->next; count++;} else { flag=0; break;} } if(flag){ system(“cls”);//清屏函数 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 printf(“n 文件保存成功.(有%d条记录保存成功.)n”,count); shoudsave=0; getchar(); getchar(); menu();} fclose(fp);} void main()//主函数 { menu();Link l;//链表 Node *r;int sel;char ch;int count=0;l=(Node *)malloc(sizeof(Node));l->next=NULL;r=l;while(l){ scanf(“%d”,&sel); 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 if(sel==0){ if(shoudsave==1){ getchar();printf(“n 资料已改动,是否将改动的文件保存到文件中(y or n)?n”); } switch(sel){ case 1:Add(l);break;//物品进库 case 2:Del(l);break;//物品出库 case 3:Qur(l);break;//查询物品 case 4:Modify(l);break;//修改物品信息 case 5:Save(l);break;//保存物品信息 } printf(“n 已退出系统!n”);break;scanf(“%c”,&ch);if(ch=='y' || ch=='Y')Save(l); 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 default:Wrong();getchar();break;} 精心收集 精心编辑 精致阅读 如需请下载! } } 库存管理系统课程设计 一、需求分析...................................................................................................................................2 1.1 编写目的:.......................................................................................................................2 1.2 项目背景:.......................................................................................................................2 1.3系统使用对象:................................................................................................................3 1.4 功能需求:.......................................................................................................................3 1.4.1 业务流程图:.......................................................................................................3 1.4.2 功能模块图:.......................................................................................................4 1.4.3 功能介绍:...........................................................................................................4 1.4.4问题域描述:........................................................................................................5 1.5 性能要求:.......................................................................................................................5 1.6 运行环境:.......................................................................................................................6 二、系统详细设计...........................................................................................................................6 2.1系统总体设计....................................................................................................................6 2.1.1 运行环境...............................................................................................................6 2.1.2 系统流程...............................................................................................................6 2.1.3 系统结构...............................................................................................................7 2.2系统接口的概要设计........................................................................................................8 2.2.1 用户接口...............................................................................................................8 2.3 数据库概要设计...............................................................................................................9 2.3.1 物理结构设计.......................................................................................................9 三、系统实现.................................................................................................................................10 3.1 系统开发环境.................................................................................................................10 3.2 系统实现.........................................................................................................................11 3.2.1 客户端系统实现.................................................................................................11 一、需求分析 1.1 编写目的: 库存管理工作如由人工完成,主要依靠个人经验和厚重的资料簿,查询工作繁琐而且质量不高,容易出错。如果利用计算机的高速计算能力和广泛的普及应用,则能利用判断条件,更快地找出所要查询的库存产品。库存管理系统是一套对货品入库、出库、库存进行全面管理的系统。 1.2 项目背景: 由于市场竞争的需要,如何吸引和留住人才,激发员工的创造行、工作责任感和工作热情已经成为关系企业兴衰的重要因素,人才已成为企业最重要的资产之一。“公正、公平、合理”的企业管理理念和企业管理水平的提高,是社会对库存管理系统有了更高的需求;同时由于个人电脑的普及,数据库技术、客户/服务器技术,特别是Internet/Intranet技术的发展,使的三代库存管理系统的出现才成为必然。库存管理系统的特点是从物品管理的角度出发,用集中的数据库将几乎所有与物品相关的数据统一管理起来,形成了集成的信息源。有好的用户界面,强有力的报表生成工具、分析工具和信息的共享使得物品管理人员得以摆脱繁重的日常工作,集中精力从战略的角度来考虑企业物品规划和政策。 企业的库存物资管理往往是很复杂、很繁琐的。由于所掌握的物资种类众多,订货、管理、发放的渠道各有差异,各个企业之间的管理体制不尽相同,各类统计报表繁多,因此仓库的库存管理必须编制一套库存管理信息系统,实现计算机化操作,而且必须根据企业的具体情况制定相应的方案。 1.3系统使用对象: 本软件提供了完备的销售业务管理功能,包括销售管理(销售订单、销售出货、销售退货、收款登记)、基本信息(公司基本资料、客户资料、货品资料、员工档案、其他基础设置)、单据查询(订货单查询、收货单查询、付款单查询)、系统维护(操作权限、数据备份及恢复、数据压缩、数据清理)等功能。 1.4 功能需求: 1.4.1 业务流程图: 1.4.2 功能模块图: 1.4.3 功能介绍: 库存管理:包括货品信息管理、货品库存管理、短线货品管理、超储货品管理。 入库管理:包括入库登记管理、货品入库期间统计、供货单位期间供货统计和供货单位期间供货金额统计。 出库管理:包括出库登记管理、货品期间出库统计、收货单位期间收货统计和收货单位期间收货金额统计。 盘存管理:包括盘存数据录入和盘存表。综合管理:包括货品出入库期间汇总等。 附项分类:包括经办人员管理、供货单位管理、仓库信息管理及数据处理记录。 历史数据管理:包括历史库存管理、历史入库管理和历史出库管理等。1.4.4问题域描述: 货物是否能被管理员找到,货物必要有唯一的货号;仓库对应唯一管理员,管理员必要有唯一工号,性别,姓名等属性;每个入库货物对应一张入库单,入库单号码必须与货号唯一对应;每个出库货物对应一张出库单,出库单号码必须与货号唯一对应;管理人员存放货物根据存放规则在仓库内存放货物;管理人员根据提货规则从仓库内提取货物。 1.5 性能要求: 全局特征: 系统可用性是:全天候可用、可靠性:除了不可计错误,一般不会崩溃。安全性和保密性:只有专业的工作人员才能运行,可以设置权限。 1.6 运行环境: 硬件环境:PentiumⅡ 或同档次以上微机; 32MB以上内存或更高;4.2G以上硬盘;1.44M 光驱;24速以上光驱; 针打或激光打印机一台 软件环境:中文 WINDOWS95 / 二、系统详细设计 2.1系统总体设计 2.1.1 运行环境 操作系统:Windows All 安装MySQL Tomcat MyEclipse 2.1.2 系统流程 本课题的系统流程图如下 /WE/ 2000操作系统。 2.1.3 系统结构 本课题的功能模块设计图如下 2.2系统接口的概要设计 2.2.1 用户接口 首页(用户登录界面) 用户操作界面(如图)头部和其他部位的内容一样 左侧部分为当用户登录成功后将显示用户操作的功能菜单 右侧部分则根据用户选择的操作显示相应内容 2.3 数据库概要设计 2.3.1 物理结构设计 本课题目前为数据库建立了9 个表 Category:id,name,description; Goods:id,name,description,inprice,outprice,category_id,supplier;Instock:id,quantity,intime,price,description,goods_id,uear_id;Outstock:id,quantity,outtime,description,price,user_id,goods_id;Privilege:id,name,description Stock:goods_id,quantity,outprice,inprice Supplier:id,name,linkman,cellphone,description User:id,username,password User_privilege:user_id,privilege_id 三、系统实现 3.1 系统开发环境 系统:Microsoft Windows 7 编程环境:MyEclipse 开发语言:Java 数据库:MySQL 3.2 系统实现 3.2.1 客户端系统实现 登录界面(如下图) 库存管理成果信息页面(如图) 用户管理 权限管理 供应商管理 类别管理 商品管理 入库管理 库存管理 出库管理 UML课程设计 报告 设计名称: 库存管理系统 专业班级: 姓 名: 学 号: 起止时间: 成 绩 评 定 考核 设计 设计 综合评 答辩 内容 表现 报告 定成绩 成 绩 计算机科学与工程系 一、系统需求说明 20世纪90年代以来随着科学技术和生产力的迅速发展以及经济全球环境的深刻变化,企业面临着一个崭新而又激烈的竞争环境,体现在全球化的信息网络和全球化市场形成所带来的信息爆炸技术变革的加速市场和劳务竞争的全球化,围绕新产品的市场竞争日趋激烈,用户的需求越来越苛刻,同时产品的生命周期不断缩短,企业又面临着缩短交货期、提供产品质量、降低成本和改进服务的压力,在这种情况下全面提高和改善自身水平成为企业最关心的问题之一。企业实施信息化建设已成为企业的发展趋势和提高企业的管理水平的有效手段。信息化建设不在是企业的效益工程而是企业的生存工程,20世纪90年代美国著名的IT分析公司Grant Group Inc,提出了ERP企业资源计划的概念,迎合了信息时代企业管理的发展要求。随着ERP相关理论,以及ERP系统开发的逐渐成熟,企业界掀起了实施ERP管理信息系统的浪潮。中国作为制造大国,在制造业迅速发展的今天,库存国民投资额在整个国民生产总值占有相当大的比重达到了20%——30%,库存管理的适当与否对企业经营利润有很大影响,因此新环境下非常值得人们对ERP环境下的库存管理进行深入研究和探讨。本文结合ERP环境下的库存管理系统,重点研究如何利用UML建模语言对库存管理系统进行建模,给出了ERP环境下库存管理系统的需求模型和对象模型,在建模过程中利用了用例图、类图、包图、顺序图等图形。最后,结合系统模型的研究,实现了库存管理系统。 二、系统分析 (一)库存管理业务流程分析 企业的库存管理工作主要由企业物资部门或仓库部门完成,其主要业务就是对企业物料收获、存货、发货,以及分析提供库存管理所需的各种数据报表等管理工作。库存管理业务流程图,如图所示: 采购部门采购订单 供应商发票 财务部门发货 检验接受库存盘点发销售出入库票货款凭证求购处理入库领料通知单生产发料发料 生产部门仓库部门客户入库 库存订单工票产品入库分析提货单决策部门销售部门 2 (二)Uml表示法 1.1 用例图 根据业务流程图确定系统边界,确定用例(Use Case)。用例可从另一个方面对企业的业务流程建模,从中可以提取对我们开发系统有用的信息,可以确定系统功能。如图2所示库存管理系统的用例图 inter manageout manageadministratorinventory manage information search 该图展示了一张仓库管理系统的用例图,从系统的外部执行者的角度来看,普通仓库管理员可以进行出库管理、入库管理、盘点管理和信息查询等操作。(2)顺序图 : administrator1: load 2: back3: data name and position4: copy data5: copy success 3 (3)活动图 produce inventory bills inventory on the spot inventory manage 三、系统设计报告(一)库存管理系统需求模型的建立 1、用例图 在库存管理系统中,由于牵扯到大量的执行者和用例,为了便于组织,按与系统交互的对象的不同将系统划分为三个包,如图所示: 用例模型包图 其它系统与仓库高层决策人员和系统仓库管理员管理系统的交互 管理员与系统的交互 与交互系统 仓库管理员与系统交互包主要描述仓库管理员要使用系统的那些功能,向系统输入哪些信息,从系统获取哪些信息,以及需要系统提供哪些功能支持仓库管理员的日常工作。高层决策人员及系统管理员与系统交互包描述高层决策人员需要从系统获取什么信息,做出什么分析与决策支持系统更好的运转;系统管理员则需要维护,管理系统,使其正常化工作。由于库存管理系统并不是一个孤立系统,他需要其他系统进行交互,其他系统与库存管理系统的交互包则反映交互信息的流向。下面对每个系统包进行详细的描述。4 (1)仓库管理员与交互的用例模型 high-inventory alarm identity testexpand useinventory place appointaccount updateinter manageuseexpandadministratorout managelow-inventory alarminventory manageinformation searchform produce 在这个用例模型中有一个执行者:库存管理员。十一个用例:身份验证,入库管理员,最高库存警报,出库管理,最低库存管理,指定库位,更新账目,库存信息查询,盘点管理及报表生成。当有物资需要进行出入库时,仓库管理员就要进行出入库的管理:核实账单,清点物资,录入单据,然后由系统自动为该批物资分配货架,同时更新账目。在入库时,如果系统检测该类物资库存量超过限定的最高存量,也将发出警报。在入库管理用例与最高库存警报用例,出库管理用例与最低库存警报用例之间采用了扩展关系。入库管理,出库管理与指定库位之间,指定库位与更新账目之间采用了使用关系。扩展时一种基本需求的特殊情况。而当在两个或更多的用例中出现重复描述而又想避免这种重复时,采用使用。出入库单据录入后,仓库管理员还需要定期对单据进行核对,即进行库存信息的查询,主要包括:账目信息,出入库信息,以及库位信息,存量信息等。当所有信息核对完成后,仓库管理员还需要定期打印出各种报表,以供其他系统做出一些决策。盘点也是库管员一项很重要的工作,保持经常有效的盘点,可以更加全面准确的掌握库存信息。当库管员进行盘点时,首先要锁定盘点的库位或物料信息,即盘点时刻不允许出入库;盘点完毕后,要填写盘点记录,对于盘点数量与账目数量不同的物料需求要给出原因。5 (2)高层决策人员与系统管理员的交互用例模型 inventory originallimits manage inventory controlidentity testadministratorhigh-adminform produceanalyze reportdata copy and resume 在这个用例模型中共有两个执行者:高层决策人员,系统管理员。七个用例:基本信息维护、数据的备份与恢复、身份验证、仓库信息初始化、库存控制、分析评价及库存信息查询。其中身份验证和库存信息查询用例和库管员和系统的交互的用例是同一用例。对于高层决策人员来讲仓库一些基本信息的初始化,主要是账目和库位信息初始化。当系统开始使用,高层决策人员还是要进行一些库存控制,即为了满足用户及生产需求,确定最低库存量,决定订货时间及订货量。当然为了及时动态了解库存情况,还需要一些库存信息进行分析评价,例如:资金占用情况,积压失效情况,仓库使用情况等。不论是做决定还是分析,都需要库存基本信息支持。对于系统管理员来讲,主要的工作室进行基本信息的维护,包括权限的管理和数据的备份与恢复。(3)其它系统与库存系统的交互 out manageform produceproduce sys information searchsupply syscost manage project data syssell sysinter manage 由于库存管理系统并不是一个独立的系统,他需要和其他系统进行信息的集成,以保证数据的完整和准确。再生产计划出入库时,需要根据计划来限制出入库的物资品种及数量。6 当然,计划的制定还需要准确的库存信息。采购供应管理系统需要根据库存信息来制定采购计划,外购物资则需要根据采购计划进行入库。库存管理系统需要用工程数据管理系统中的一些基本信息,包括:物料信息,人员信息,以支持系统准确的进行。销售和成本核算管理系统的梳理进行同样需要库存数据的支持。2.业务活动图(1)物资入库活动 inter form receive identity test inter manage inventory inventory inventory place checkcheckstate check alarm transmit inventory place appoint account update 物资的出入库是库存管理中主要的业务,合理的出入库流程不仅能加快出入库的效率,7 而且能够对库存信息做到心中有数。当一批物资需要进行出入库时,首先库管员需要核对入库单,清点入库物资,当入库单据与入库物资相符时,才能入库。接着库管员登录系统,通过身份验证,进入入库管理主界面。输入要入库物资的基本信息后,系统自动进行一些信息查询:存量信息,库位状态,盘点状态。当该类物资存量超出最高库存量,系统发出报警,此时可以退出系统,即此类物资不在进行入库,也可以强行入库。在检查库位信息时,如果发现没有空余库位,同样系统会发出警报,但允许入库,只是需要人工指定库位。完成上述步骤,系统会主动为物资安排库位,更新账目,到此时也就完成入库过程。(2)主要业务活动图 inventory inter out check account place checkcheckcheck produce inter and inventory formoutmanage analyze and inventory NewStatevaluatecontrole 8 库存管理的业务都是以出入库信息,账目信息和库位信息为依托进行的。所以首先需要将出入库信息,账目信息,库位信息进行核对,只有这些信息准确无误才可以进行下一步的工作。核对基本信息后,为了确定仓库内物资,可以进行盘点;为了进行分析评价,库存控制,可以生成报表;对一些信息筛选后,可以进行数据的备份或恢复。 (二)库存管理系统对象模型的建立 1. 类图 基本信息中的类图 入库类别与出库类别的属性为出入库别编码及名称,在进行出入库时,以其为依据判别出入库类型,例如确定一批货物是一般收料还是委托加工等等。不论是仓库管理员还是系统管理员还是高层决策人员在登录时,都需要进行身份验证,以确定其权限,如果是仓库管理员则需要细化仓库一级权限。下图为主要类图及没类图的具体属性及操作,如图所示: 9 2.顺序图与协作图(1)物资入库顺序图 inter windowaccountshelves state inter shelves info1: ready to assign shelve 2: shelve not null3: shelve on inventory4: shelve available5: work normal and update6: back 物资入库顺序图 在完成入库单与入库项的填写后,进入胃物资指定库位的操作中,首先系统要自动检查库位的状态,当没有多余库位或者库位正在进行盘点时,则系统提示不能进入下一步的操作,如果有多余库位则系统自动为物资安排库位,进行物资的入库,同时修改库存信息,此时完成了物资的入库的所有操作。(2)物资入库协作图 5: error4: error 6: change or check of goods incoming of 3: incoming of change the form(right)formitem2: incoming of form7: checkquit9: surpass of max reserve window of account of incomingreserve8: less than max resevelogon 1: incoming of administrgoodsator 11 物资入库协作图 上图为物资入库的合作图。在一批物资要入库时,首先仓库管理员登陆系统进入入库窗体,然后进行入库单录入,只有在入库单填写正确的情况下才能转入入库项填写,如果入库项填写错误时,同样不能进行下一步操作;并且如果在填写入库项时发现仓库内此类物资正在盘点,则此批货物此时不能进行入库的,需要退出或等待。当所有条件都符合时,系统自动检查物资的库存量,但超出仓库最大库存时,退出所有操作;反之进入为此货物指定库位的操作。(3)状态图 系统人机交互状态图 fail logonstartlogonlogon successoperateentry/ inputdo/ check namefinishreturncancel password and logoncancelcancelfinishexit/ quit entry/ prompt do/ checkexit/ quit or returnoutcome 人机系统交互状态图 四、系统的配置与实现 (一)系统的组件图 < The user The Server The rocessinterfacedatebase 系统组件图 12 (二)系统配置图 clientdatab...program 系统配置图 五、设计心得体会 项目实训开始的时候,要求每两个人选择一个题目,本以为这会很简单,可坐下来之后才发现,事实并非如此。从需求分析到最后的课题的终结,中间实现的过程都需要应用很多的理论知识,而时间的推移让自己发现所学知识的肤浅性,只是模糊的停留在知识的表面,没有对其深刻的认识与掌握,同时,这也是对信心,和耐心的一次考验。通过这次课程设计,小组成员分工合作,我们两个都学到了很多东西。以前不熟悉的地方都得到了很好的解决。我们通过自我学习掌握一些基本应用,并通过项目来加强对其的理解,我们完成了这一系列的设计。过程是艰苦的,但是通过这次实训我们学到了很多,结果是美好的。这次课程设计也让我明白了,作为一个软件技术的学习者,多动手显得尤为重要,另外,多看看经典的例题,多与同学之间交流,对于知识和能力的提高也有很大的帮助。由于我们能力有限,加上时间仓促,本系统难免会出现一些不足之处,对于出现的问题,在此深表歉意,如果还有其他问题希望老师批评指正。13 · 用Visual C++设计的仓库管理系统 摘要 本文主要介绍了采用Visual Studio 2005的一个仓库管理系统。该系统基于MFC集成开发环境,利用ADO控件实现基本信息管理、商品信息管理、库存操作管理、库存警示管理的功能。详细介绍了开发本系统的步骤:系统分析、系统设计、系统实现。在系统分析中采用系统的功能结构图分析了系统所需的各种数据。在系统的设计中,详细的展现了系统的各个功能模块、所需的数据库表、菜单的设计等。在系统的实现中,给出了相应模块功能控件的事件及代码。 关键字:仓库管理 管理系统 ADO控件 面向对象 第一章 绪论 1.1系统的开发背景……………….…………………………………4 1.2当前仓库管理现状分析及设计仓库管理系统的意义………….4 1.2系统开发工具选择及介绍………………………….……………5 1.3 ADO数据访问技术………………………………………………7 第二章 系统设计 2.1系统需求分析„„„„„„„„„„„„„„„„„„„„„9 2.2系统开发目标……………………………………………… ………10 2.3系统功能分析 2.31系统功能描述…………………………………………………..10 2.32 系统功能模块的划分………………………………………… 11 2.33系统流程分析…………………………………………………..11 第三章 数据库设计 3.1数据库需求分析 ……………………………………………….12 3.2 数据库概念结构设计 ………………………………………….13 3.3 数据库逻辑结构设计及实现 ………………………………….15 第四章 系统各主要功能模块的实现 4.1主界面的设置…………………………………………………..18 4.2主要各功能模块所涉及的类的添加……………………… ……19 4.3登陆模块设计 …………………………………………………..19 4.4客户管理模块设计 4.41 设计客户信息管理对话框 ………………………………..21 4.42 设计客户信息编辑对话框 ……………………………..24 4.5仓库管理模块设计 4.51设计仓库信息管理对话框 …………………………………25 4.6用户管理模块设计 4.61设计用户信息管理对话框…………………………………...27 4.62 设计用户信息编辑对话框…………………………………..28 4.63设计修改用户密码的对话框…………………………………29 4.7商品管理模块设计 4.71设计商品类别管理对话框……………………………………30 4.72 设计商品类别编辑对话框…………………………………...31 4.73 设计商品信息管理对话框…………………………………...32 4.8 库存操作管理模块设计 4.81 设计入库操作管理对话框…………………………………34 4.82 设计入库单编辑对话框……………………………………..35 4.83 设计出库操作管理对话框…………………………………..37 4.84 设计出库操作编辑对话框 ………………………………..37 4.85 设计库存盘点管理对话框…………………………………39 4.86 设计库存盘点编辑对话框 …………………………………40 4.9 库存警示管理模块设计 4.91 设计商品数量报警管理模块………………………………...41 4.92 设计商品失效报警管理模块 ……………………………….42 第五章 结束语 5.1开发中的问题和解决办法………………………………………….44 5.2系统不足之处………………………………………………………44 第六章 致谢 …………………………………………………………..45 第七章 参考文献 ……………………………………………………..45 1.1系统开发的背景 20世纪,随着全球经济的蓬勃发展,众多经济学家纷纷提出了新的管理理论。20世纪50年代,西蒙提出管理依赖于信息和决策的思想。同时期的维纳发表了控制论,他认为管理是一个控制过程。1958年,盖尔写到:“管理将以较低的成本得到及时准确的信息,做到较好的控制。”这个时期,计算机开始用于会计工作,出现数据处理一词。 1970年,Walter T.Kennevan给刚刚出现的管理信息系统一词下了一个定义:“以口头或书面的形式,在合适的时间向经理、职员以及外界人员提供过去的、现在的、预测未来的有关企业内部及其环境的信息,以帮助他们进行决策。”在这个定义里强调了用信息支持决策,但并没有强调应用模型,没有提到计算机的应用。 1985年,管理信息系统的创始人,明尼苏达大学的管理学教授Gordon B.Davis给了管理信息系统一个较完整的定义,即“管理信息系统是一个利用计算机软硬件资源,手工作业,分析、计划、控制和决策模型以及数据库的人-机系统。它能提供信息支持企业或组织的运行、管理和决策功能。”这个定义全面地说明了管理信息系统的目标、功能和组成,而且反映了管理信息系统在当时达到的水平。1.2当前仓库管理现状分析及设计仓库管理系统的意义 一直以来人们使用传统的人工方式管理库存。这种管理方式存在着许多缺点,诸如效率低,保密性差等,而且时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。对于企业来说为了管理好仓库,将付出大量的人力和物力。因此设计一款仓库管理系统是非常重要的。它带来的优点是:它可以全面的管理仓库中储存的商品和货物,缩短了库存信息流转时间,使企业的物料管理层次分明、井然有序,为采购、营销和生产提供了依据,从而提高企业的经营效率。因此,库存管理系统能够为用户提供充足的信息和快捷的查询手段。 随着科学技术的不断提高,计算机科学不断发展,其强大的功能已经被人们深刻认识,它已经进入了人类社会的各个领域并发挥着越来越重要的作用.1.3系统开发工具的选择及介绍 系统开发环境 操作系统:Windows XP Professional 简体中文版 开发平台: Visual Studio 2005简体中文版 系统开发工具的选择 实现该系统的方法有很多,之所以选择Visual C++作为开发工具,不仅仅因为曾经有过使用它的经验,看中的更是它的功能强大和使用方便。它本身不仅具有极其强大的编程能力,它允许选择和管理外接程序,并内含多种实用控件,这些对Visual C++的扩充又进一步增强了它的开发环境的能力。 开发平台介绍 Visual Studio 可以用来创建 Windows平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件。 1998 年,微软公司发布了 Visual Studio 6.0。所有开发语言的开发环境版本均升至 6.0。这也是 Visual Basic 最后一次发布,从下一个版本(7.0)开始,Microsoft Basic 进化成了一种新的面向对象的语言:Microsoft Basic.NET。由于微软公司对于 Sun 公司 Java 语言扩充导致与 Java 虚拟机不兼容而 Sun 被告上法庭,微软在后续的 Visual Studio 中不再包括面向 Java 虚拟机的开发环境。 2002 年,随着.NET 口号的提出与 Windows XP / Office XP 的发布,微软发布了 Visual Studio.NET(内部版本号为 7.0)。在这个版本的 Visual Studio 中,微软剥离了 Visual FoxPro 作为一个单独的开发环境以 Visual FoxPro 7.0 单独销售,同时取消了 Visual InterDev。.NET 的通用语言框架机制(Common Language Runtime, CLR),其目的是在同一个项目中支持不同的语言所开发的组件。所有 CLR 支持的代码都会被解释成为 CLR 可执行的机器代码然后运行。 Visual Basic、Visual C++ 都被扩展为支持托管代码机制的开发环境,且 Visual Basic.NET更是从 Visual Basic 脱胎换骨,彻底支持面向对象的编程机制。而 Visual J++ 也变为 Visual J#。后者仅语法同 Java 相同,但是面向的不是 Java 虚拟机,而是.NET Framework。 2003 年,微软对 Visual Studio 2002 进行了部分修订,以 Visual Studio 2003 的名义发布(内部版本号为 7.1)。Visio 作为使用统一建模语言(UML)架构应用程序框架的程序被引入,同时被引入的还包括移动设备支持和企业模版。.NET 框架也升级到了 1.1。 2005 年,微软发布了 Visual Studio 2005。.NET 字眼从各种语言的名字中被抹去,但是这个版本的 Visual Studio 仍然还是面向.NET 框架的(版本2.0)。它同时也能开发跨平台的应用程序,如开发使用微软操作系统的手机的程序等。总体来说是一个非常庞大的软件,甚至包含代码测试功能。 这个版本的 Visual Studio 包含有众多版本,分别面向不同的开发角色。 Microsoft为单独工作或在小型团队中的专业开发人员提供了两种选择,Visual Studio 2005 Professional Edition和用于Microsoft Office系统的Visual Studio 2005工具。每种版本都在标准版的特性上进行了扩展,包括用于远程服务程序开发和调试、SQL Server2005开发的工具,以及完整的、没有限制的开发环境。 1.4 ADO数据访问技术 ADO(ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实现访问关系或非关系数据库中的数据。象Microsoft的其它系统接口一样,ADO是面向对象的。它是Microsoft全局数据访问(UDA)的一部分,Microsoft认为与其自己创建一个数据,不如利用UDA访问已有的数据库。为达到这一目的,Microsoft和其它数据库公司在它们的数据库和Microsoft的OLE数据库之间提供了一个“桥”程序,OLE数据库已经在使用ADO技术。ADO的一个特征(称为远程数据服务)支持网页中的数据相关的ActiveX控件和有效的客户端缓冲。作为ActiveX的一部分,ADO也是Microsoft的组件对象模式(COM)的一部分,它的面向组件的框架用以将程序组装在一起。ADO从原来的Microsoft数据接口远程数据对象(RDO)而来。RDO与ODBC一起工作访问关系数据库,但不能访问如ISAM和VSAM的非关系数据库。 ADO 是对当前微软所支持的数据库进行操作的最有效和最简单直接的方法,它是一种功能强大的数据访问编程模式,从而使得大部分数据源可编程的属性得以直接扩展到你的Active Server 页面上。可以使用ADO 去编写紧凑简明的脚本以便连接到 Open Database Connectivity(ODBC)兼容的数据库和 OLE DB 兼容的数据源,这样 ASP 程序员就可以访问任何与 ODBC 兼容的数据库,包括 MS SQL SERVER、Access、Oracle 等等。 ADO是一种面向对象的编程接口,微软介绍说,与其同IBM和Oracle提倡的那样,创建一个统一数据库,不如提供一个能够访问不同数据库的统一接口,这样会更加实用一些。为实现这一目标,微软在数据库和微软的OLE DB中提供了一种“桥”程序,这种程序能够提供对数据库的连接。 开发人员在使用ADO时,其实就是在使用OLE DB,不过OLE DB更加接近底层。ADO的一项属性??远程数据服务,支持“数据仓库”ActiveX 组件以及高效的客户端缓存。作为ActiveX的一部分,ADO也是COM组件的一部分。ADO是由早期的微软数据接口?远程数据对象RDO演化而来的。RDO同微软的ODBC一同连接关系数据库,不过不能连接非关系数据库。 ADO向我们提供了一个熟悉的,高层的对OLE DB的Automation封装接口。对那些熟悉RDO的程序员来说,你可以把OLE DB比作是ODBC驱动程序。如同RDO对象是ODBC驱动程序接口一样,ADO对象是OLE DB的接口;如同不同的数据库系统需要它们自己的ODBC驱动程序一样,不同的数据源要求它们自己的OLE DB提供者(OLE DB provider)。目前,虽然OLE DB提供者比较少,但微软正积极推广该技术,并打算用OLE DB取代ODBC。 ADO向程序员提供了很多好处。包括易于使用,熟悉的界面,高速度以及较低的内存占用(已实现ADO2.0的Msado15.dll需要占用342K内存,比RDO的Msrdo20.dll的368K略小,大约是DAO3.5 的Dao350.dll所占内存的60%)。同传统的数据对象层次(DAO和RDO)不同,ADO可以独立创建。因此你可以只创建一个 “Connection”对象,但是可以有多个,独立的“Recordset”对象来使用它。ADO针对客户/服务器以及WEB应用程序作了优化。第二章 系统设计 2.1系统需求分析 随着科学技术的发展,越来越多的企业开始用计算机管理仓库。而现在的仓库管理系统多种多样,而仓库管理的特点是信息处理量比较大。所以管理的物资设备种类繁多,而且由于入库单,出库单,需求单等单据发生量特别大,关联信息多,查询和统计的方式各不相同。因此在管理上实现起来有一定的困难。在管理的过程中经常会出现信息的重复传递,单据,报表种类繁多,各个部门管理规格不统一等问题。 在本系统的设计过程中,为了克服以上困难,满足计算机管理的需要,我们采取了下面的一些原则。 ●统一各种原始的单据的格式,统一帐目和报表的格式。●删除不必要的管理冗余,实现管理规范化、科学化。 ●程序代码标准化,软件统一化,确认软件的可维护行和实用性。●界面尽量简单化,做到实用、方便,尽量满足企业中不同层次员工的需要。2.2系统开发目标 系统开发的总体任务是实现企业物资设备管理的系统化,规范化和自动化,从而达到提高企业物资管理的效率的目的。2.3系统功能分析 2.31系统功能描述(1)基本信息管理 基本信息管理包括对客户信息、仓库信息和用户信息信息的管理。(2)商品信息管理 对于商品各种信息的管理。(3)库存操作管理 库存操作管理可以实现入库管理、出库管理和库存盘点等功能。(4)库存警示管理 库存警示是指对库存中接近或超过临界值的商品进行报警。在商品信息中,包含商品的合理数量范围和有效期限。商品数量小于合理数量下限称为短线;商品数量大于合理数量的上限成为超储。商品出现短线、超储、接近或超过有效期限时都需要报警。(5)统计查询管理功能 统计查询管理可以对库存商品进行各种类型的统计和查询。从而使用户能够全面的了解库存状况。2.32 系统功能模块的划分 基于对系统的分析,可以得到如图所示的系统功能模块图: 本系统将用户划分为两种类型,即系统管理员用户和普通用户。系统管理员用户可以管理其他用户信息,而在其他方面与所有用户的权限相同。 2.33系统流程分析 所谓系统流程就是用户在使用系统时的工作过程。对于多类型用户的管理系统来说,每一类用户的工作流程都是不相同的。多用户系统的工作流程都是从用户登陆模块开始,对用户的身份进行认证。身份认证可以分为以下两个过程: (1)确认用户是否是有效的系统用户。(2)确定用户的类型。 第一个过程决定用户能否进入系统。第二个过程根据用户的类型决定用户的操作权限,从而决定用户的工作界面。因此得到它的系统流程分析图如下: 第三章 数据库设计 3.1数据库需求分析 在本设计中,通过对企业仓库管理的内容和系统流程分析,设计的数据项和数据结构如下: (1)客户信息。包括的数据项有客户编号、名称、类型等。(2)仓库信息。包括仓库编号、名称和说明等。(3)用户信息。包括用户名、密码、员工姓名等信息。(4)商品管理信息。包括商品类别,商品编号等信息。 (5)库存操作管理信息。包括入库和出库操作需要记录的商品信息、仓库信息、经办人、涉及金额和入库时间等信息。有了上面的数据结构、数据项,就能进行下面的数据库设计。3.2 数据库概念结构设计 这一设计阶段是在需求分析的基础上,设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。本设计根据上面的设计规划出的实体有客户实体、仓库实体、用户实体、商品类别实体、商品实体、入库实体、出库实体、库存实体。各个实体的E-R图描述如下: 客户实体的E-R图 仓库实体E-R图 用户实体E-R图 商品类别E-R图 商品类别E-R图 入库实体E-R图 出库实体E-R图 库存实体 E-R图 3.3 数据库逻辑结构设计及实现 仓库管理系统数据库中的各个表格的设计结果如下面的几个表格所示。每个表格表示在数据库中的一个表。数据库的实现采用SQL Sever 2005。 (1)客户信息表(Client) 说明:Cid为客户编号、Cname为客户名称、Ctype为客户类型其中包括(1、供应商 2、供货商)、Ctype为联系人、Address为通信地址、Postcode为邮政编码、Phone为联系电话、Fax为传真电话、Memo为备注信息。 (2)仓库信息表(Storehouse) 说明:Sid为仓库编号、Sname为仓库名称、Memo为仓库说明。(3)用户信息表(Users) 说明:UserName为用户名、Pwd为密码、User_type为用户类型(1、系统管理员用户,2、普通用户)(4)商品类别表(ProType) 说明:TypeId为商品类别编号、TypeName为商品类别名称、UpperId为上级商品类别 (5)商品信息表(Product) 说明:Pid为商品编号、Pname 为商品名称、TypeId为商品类型编号、Pstyle商品规格、Punit为计量单位、Pprice为参考价格、Plow为商品数量下限、Phigh为商品数量上限、Valid为有效期、AlarmDay为在到达有效期前几天发出警告。(6)入库操作信息表(Storeln) 说明:SiType为入库操作类型,包括销售出库、退货出库、用料出库等。Pid为入库商品编号、MakeDate为生产日期、Pprice为入库商品单价、Pnum为入库商品数量、Cid为客户编号、Sid为仓库编号、EmpName为经办人、OptDate为入库日期(7)出库操作信息表(TakeOut) 说明:Ttype为入库操作类型,包括销售出库、退货出库、用料出库等。Pid为入库商品编号、MakeDate为生产日期、Pprice为入库商品单价、Pnum为入库商品数量、Cid为客户编号、Sid为仓库编号、EmpName为经办人、OptDate为入库日期(8)库存商品信息表(ProlnStore) 说明: SpId为商品存储编号、Pid为商品编号、Pprice为商品入库单价、Pnum为商品数量、MakeDate为生产日期、Sid为仓库编号 第四章 系统各主要功能模块的实现 4.1主界面的设置 根据对系统功能分析,主界面的菜单项包括基本信息管理、商品信息管理、库操作管理和库存警示管理。如图所示: 当用户单击基本信息管理时,显示客户信息管理、仓库信息管理、用户信息管理、修改用户密码、退出系统菜单项。添加这些菜单项如图所示: 当用户单击商品信息管理时,显示商品类别管理、商品信息管理。添加这些菜单项如图所示: 当用户单击库存操作管理时,显示入库操作、出库操作、库存盘点。添加这些菜单项如图所示: 当用户单击库存警示管理时,显示数量报警和实效报警。添加这些菜单项如图所示: 4.2主要各功能模块所涉及的类的添加 根据数据库逻辑设计,我们可以为这些表添加相应的类。 1、CClient类用来管理客户表的数据库操作。 2、CStorehouse类用来管理表Storehouse的数据库操作。 3、CUsers类用来管理表Users的数据库操作。 4、CProType类用来管理表ProType的数据库的操作。 5、CProductl类用来管理表Product的数据库操作。 6、CStoreln类用来管理表Storeln的数据库操作。 7、CTakeOut类用来管理表TakeOut的数据库操作。 8、CProInStore类用来管理表ProInStore的数据库操作。4.3登陆模块设计 登陆对话框布局如图: 其ID值设为IDD_USERNAME_DIALOG。 用户要使用系统,首先必须通过系统的身份认证,这个过程叫做登陆。此模块的功能就是要进行身份认证。 在登陆对话框用户首先输入用户名,然后输入密码。输入完毕时,点击确定将发送BN_CLICKED消息。在确认按钮处添加此消息响应函数CLoginDlg :OnOK()。此函数的主要功能是检查用户输入数据的有效性,如果输入的信息不符合要求会自动退出程序。主要代码如下: CLoginDlg::OnOK(){ …… //检查数据有效性 if(m_UserName == “"){MessageBox(”请输入用户名“); return;} if(m_Pwd == ”“){ MessageBox(”请输入密码“); return;} CUsers user;//定义CUsers对象 user.GetData(m_UserName);//用于从表Users中读取数据 //如果读取的数据与用户输入数据不同,则返回 if(user.GetPwd()!= m_Pwd){ MessageBox(”用户信息不正确,无法登录!“); return;} } 当用户单击取消时,添加CLoginDlg::OnBnClickedCancel()函数来响应此消息。此函数的功能是退出程序。主要代码如下: void CLoginDlg::OnBnClickedCancel(){ OnCancel();} 4.4客户管理模块设计 客户管理模块可以实现以下功能: 1、添加客户。 2、修改客户信息。 3、删除客户。 4、查看客户信息。4.41 设计客户信息管理对话框 对话框布局如图: 其ID值设为IDD_CLENTMAN_DIALOG。对话框对应的类为CClientManDlg。它继承CDialog类。添加控件包括四个按钮控件,一个组合框、ADO Data和DataGrid控件。 该对话框的主要函数为Refresh_Data()、OnAddButtom()、OnModiButton()、OnDelButton()。1.Refresh_Data()函数 它的功能是为ADO Data控件设置数据源,从而决定在DataGrid控件中显示的数据内容。主要代码如下: Refresh_Data(){ CString cSource; //设置SELECT语句,按客户单位排序 …… m_adodc.SetRecordSource(cSource);m_adodc.Refresh();//设置表格列宽度 } 2.OnAddButtom()函数 当用户单击“添加”按钮时,执行此函数。其功能是打开编辑对话框。主要代码如下: OnAddButton(){ …… //打开编辑对话框 CClientEditDlg dlg;…… if(dlg.DoModal()== IDOK)…… } 3.OnModiButton()函数 当用户单击“修改”按钮时,执行此函数。其功能是弹出编辑对话框进行修改记录操作。主要代码如下: OnModiButton(){ …… CClientEditDlg dlg;dlg.cCid = m_datagrid.GetItem(0);//记录编号 …… if(dlg.DoModal()== IDOK) Refresh_Data();} 4.OnDelButton()函数 当用户单击“删除”按钮时,执行此函数,其功能是删除所选择的记录。主要代码如下: OnDelButton(){ …… CClient clt; clt.sql_delete(m_datagrid.GetItem(0));删除记录 Refresh_Data(); } 4.42 设计客户信息编辑对话框 编辑客户信息的对话框可以用来添加和修改客户信息,对话框名称为IDD_CLIENTEDIT_DIALOG。对话框的布局如图: 为对话框创建CClientEditDlg类并继承与CDialog类。 当用户单击“确定”按钮,添加OnOK()函数,其功能是将输入的信息保存到数据库中。主要代码如下: OnOK(){ …..CClient clt;clt.SetCname(m_Cname);//客户单位 …… clt.sql_insert();插入进数据库 …… clt.sql_update(cCid);} 4.5 仓库管理模块设计 仓库管理模块可以实现以下功能: 1、添加仓库信息 2、修改仓库信息 3、删除仓库信息 4、查看仓库信息 4.51 设计仓库信息管理对话框 对话框布局如图: 对话框ID为IDD_STOREHOUSEMAN_DIALOG.对话框对应的类为CStoreHouseManDlg。该对话框的主要函数为Refresh_Data()、OnAddButtom()、OnModiButton()、OnDelButton()。其功能与客户信息管理对话框函数的功能一样。函数实现过程也非常类似。在此不再详细说明。 4.52 设计仓库信息编辑对话框 编辑仓库信息的对话框可以用来添加和修改仓库信息,其ID为IDD_STOREHOUSEEDIT_DIALOG。对话框的布局如图: 对话框对应的类为CStoreHouseEditDlg。当用户单击“确定”时,执行OnOK()函数用来把在对话框输入的信息添加或修改到数据库中。主要代码如下: CStoreHouseEditDlg::OnOK(){ …… CStorehouse sh;sh.SetSname(m_Sname);//仓库名称 sh.SetMemo(m_Memo);//仓库说明 …… //表示插入新记录 sh.sql_insert(); …… } 4.6用户管理模块设计 根据用户类型的不同,用户管理模块的功能也不相同。可以包含以下情形: 1、Admin用户可以创建系统管理员或普通用户、复位用户密码、删除系统管理员或普通用户,也可以修改自身的密码。 2、系统管理员用户可以创建普通用户、对普通用户的密码进行复位、删除普通用户,也可以修改自身密码。 3、普通用户只能修改自身密码。4.61设计用户信息管理对话框 用户信息管理对话框ID为IDD_USERMAN_DIALOG,对话框的布局如图: 对话框对应的类为CUserManDlg。对话框中使用DataList控件显示用户列表,使用ADO Data控件为其提供数据源。当用户单击“添加”按钮时,执行OnAddButtom()函数,其功能是显示用户信息编辑对话框。主要代码为: OnAddButton(){ CUserEditDlg dlg;dlg.iUserType = 2;if(dlg.DoModal()== IDOK) m_adodc.Refresh();} 当用户单击“密码复位”按钮时,执行OnModiButton()函数,功能是对用户密码进行复位,复位密码默认值为888888。主要代码如下:OnModiButton(){ …… CUsers usr; usr.SetPwd(”888888“);//设置默认密码 usr.sql_updatePwd(m_datalist.GetText()); MessageBox(”密码已经复位“);} 当用户单击“删除”时,执行OnDelButton()函数,其功能删除用户。主要代码如下: OnDelButton(){ …… CUsers usr; usr.sql_delete(m_datalist.GetText()); m_adodc.Refresh();} 4.62 设计用户信息编辑对话框 用户信息编辑对话框的ID为IDD_USEREDIT_DIALOG,对话框布局如图: 对话框对应的类为CUserEditDlg。当用户单击“确定”按钮时,执行OnOK()函数,其功能是创建一个新用户,并将其加入到数据库中。主要代码如下: OnOK(){CUsers usr;…… //插入用户记录 usr.sql_insert();} 4.63设计修改用户密码的对话框 修改用户密码对话框的ID为IDD_CHANGEPWD_DIALOG,对话框的布局如图: 对话框对应的类为CChangePwdDlg。当用户单击“确定”按钮时,执行OnOK()函数,其功能是对用户密码进行修改。主要代码如下: CChangePwdDlg::OnOK(){ …… user.SetPwd(m_NewPwd1);user.sql_updatePwd(m_UserName);//更新当前用户密码 …… } 4.7商品管理模块设计 商品管理模块可以实现以下功能: 1、商品类别的添加、修改、删除。 2、商品信息的添加、修改、删除。4.71设计商品类别管理对话框 商品类别管理对话框的ID为IDD_PROTYPEMAN_DIALOG,对话框布局入图: 对话框对应的类为CProtypeManDlg。当用户单击一级商品类别列表框时,执行OnClickDatalist()函数,其功能是选择一级商品列表的内容时,决定二级商品类别列表框显示的内容。主要代码如下:CProTypeManDlg::OnClickDatalist1(){ CString cUpper;cUpper = m_datalist1.GetBoundText();//读取选择类别的编号 //设置二级类别的记录源 m_adodc2.SetRecordSource(”SELECT * FROM ProType WHERE UpperId=“ + cUpper);m_adodc2.Refresh();} 当用户单击左侧的“添加”按钮时,执行OnAdd1Buttom()函数,其功能是显示商品类别编辑对话框。主要代码如下:CProTypeManDlg::OnAdd1Button(){ CProTypeEditDlg dlg;dlg.cTypeId = ”“;//表示添加记录 dlg.cTypeName = ”“;dlg.iUpperId = 0;//表示一级类别 //打开编辑对话框 if(dlg.DoModal()== IDOK) m_adodc1.Refresh();} 当用户单击左侧“修改”按钮时,执行OnModilButton()函数,其功能与“添加”按钮功能类似。 当用户单击左侧的“删除”按钮时,执行OnDel1Button()函数,其功能删除商品类别。主要代码如下: CProTypeManDlg::OnDel1Button(){ pt.sql_delete(Tid);//删除 m_adodc1.Refresh();//刷新 } 剩下右侧的按钮与左侧的按钮功能类似,只不过删除的商品类别不一样。参照左侧功能函数即可。4.72 设计商品类别编辑对话框 编辑商品类别信息的对话框可以用来添加和修改商品类别信息。对话框ID为IDD_PROTYPEEDIT_DIALOG。其布局如图: 对话框对应的类为CProTypeEditDlg。当用户单击“确定”按钮时,执行OnOK()函数,其功能是添加商品类别到数据库中。主要代码如下: CProTypeEditDlg::OnOK(){ …… CProType pt;pt.SetTypeName(m_TypeName);//类别名称 …… if(cTypeId == ”“)//表示插入数据 pt.sql_insert(); …… else pt.sql_update(cTypeId); …… } 4.73 设计商品信息管理对话框 商品信息管理对话框可以按照商品类别查询商品信息,也可以对商品信息进行添加,修改和删除等操作。对话框ID为IDD_PROMAN_DIALOG。对话框的布局如图: 为对话框添加CProManDlg类。在对话框中有3个ADO Data控件,它们分别为一级商品类别、二级商品类别和商品表格提供数据源。添加、修改、删除操作函数的功能与其他对话框功能类似在此不再详述。此对话框用的主要函数是当用户单击一级商品类别时,执行OnClickDatacombol()函数,其功能是根据用户选择的一级类别来设置要显示的二级商品类别。主要代码如下: CProManDlg::OnClickDatacombo1(short Area){ …… cUpper = m_datacombo1.GetBoundText();//读取选择类别的编号 //设置二级类别的记录源 m_adodc2.SetRecordSource(”SELECT * FROM ProType WHERE UpperId=“ + cUpper);m_adodc2.Refresh();} 4.74 设计商品信息编辑对话框 编辑商品信息的对话框 当用户单击“确定”按钮时,执行OnOK()函数,功能将输入的数据保存到数据库中。其代码如下: CProEditDlg::OnOK(){ CProduct pr;…… pr.sql_insert();//插入数据库 pr.sql_update(cPid);CDialog::OnOK();} 4.8 库存操作管理模块设计 库存操作管理模块可以实现以下功能: 1、入库操作的添加、修改、删除、2、出库操作的添加、修改和删除。 3、库存盘点的添加、修改、删除。4.81 设计入库操作管理对话框 入库单管理对话框的ID为IDD_STOREINMAN_DIALOG。对话框的布局如图:对话框所对应的类为CStoreInManDlg。调用的主要函数是 Refresh_Data()、OnAddButton()函数。Refresh_Data()的功能是设置ADO Data控件的记录源与其他对话框的ADO控件的功能类似,OnAddButton()函数与其他对话框的添加函数类似。代码不再详细描述。 4.82 设计入库单编辑对话框 入库单编辑对话框的ID为IDD_STOREINDIT_DIALOG。对话框的布局如图: 对话框对应的类为CStoreInEditDlg。在此对话框中使用了5个ADO Data控件,功能与其他对话框的ADO Data控件相同。此对话框主要函数是OnSelchangeClttypeCombo()和OnChangePpriceEdit()函数。 1、OnSelchangeClttypeCombo()函数功能是当用户在客户类别组合框中选择不同类别时,根据用户所选择的客户类别设置查询条件。主要代码如下: OnSelchangeClttypeCombo(){ //设置查询客户的SELECT语句 CString cSource;cSource = ”SELECT * FROM Client“;//根据客户类别设置查询条件 if(m_CltType.GetCurSel()== 0) cSource += ” WHERE Ctype = 1“;else cSource += ” WHERE Ctype = 2“;m_Client.SetText(”“);//清除客户组合框的显示内容 m_adodc1.SetRecordSource(cSource);//设置数据源,重新客户列表 m_adodc1.Refresh();} 2、OnChangePpriceEdit()函数功能是当用户改变商品单价数据时,总价格也随着变化而变化。主要代码如下: CStoreInEditDlg::OnChangePpriceEdit(){ UpdateData(TRUE);//读取输入数据到成员变量 m_Price.Format(”%.2f“, m_Pprice * m_Pnum);//计算总价格 UpdateData(FALSE); //显示成员变量值 } 当用户单击“确定“按钮时执行OnOK()函数,将输入的信息插入到数据库中。 4.83 设计出库操作管理对话框 出库操作管理对话框的ID为IDD_TAKEOUTMAN_DIALOG.对话框布局如图: 对话框所对应的类为CTakeOutManDlg。主要函数Refresh_Data()、OnAddButton()。功能与入库管理对话框相似。不再详述。4.84 设计出库操作编辑对话框 出库操作编辑对话框的ID为IDD_TAKEOUTEDIT_DIALOG。对应的类为CTakeOutEditDlg。布局如图: 对话框中的DataGrid控件用于根据用户选择的商品和仓库信息显示相关的库存商品,用户可以从其中选择需要出库的商品,然后输入出库数量。在显示库存商品时,需要查询默认商品的价格数量,并显示在表格下方。因此,需要调用OnClickDatagrid2()函数。程序将从DataGrid控件中读取商品价格和库存数量等信息,并显示在对话框的相关位置。主要代码如下:OnClickDatagrid2(){ …… m_Pprice = m_datagrid.GetItem(1);//从表格中读取产品价格 m_Pnum1 = m_datagrid.GetItem(2);//从表格中读取产品库存数量 UpdateData(FALSE);…… } 当用户点击“确定“按钮时,执行OnOK()函数,将编辑的仓库出库单保存到数据库中。主要代码如下: { …… CProInStore pi;CTakeOut to;CString cType;//插入出库数量 to.sql_insert();//@@@@@ 保存库存产品信息 @@@@@ …… pi.sql_insert();} 4.85 设计库存盘点管理对话框 库存盘点管理对话框的ID为IDD_CHECKMAN_DIALOG。对话框的布局如图:对话框对应的类为CCheckManDlg。对话框主要函数是 Refresh_Data()。功能是设置数据源,查询相关库存盘点信息。主要代码如下:Refresh_Data(){CString cPid;//保存当前选择的产品编号 …… CString cSid;//保存当前选择的仓库编号 …..//设置SELECT语句 CString cSource;cSource = ”SELECT SpId, Pprice As 产品入库单价, Pnum As 库存数量, MakeDate As 生产日期“;cSource += ” FROM ProInStore WHERE Pid=“ + cPid + ” AND Sid=" + cSid;//设置记录源 m_adodc6.SetRecordSource(cSource);m_adodc6.Refresh();……} 4.86 设计库存盘点编辑对话框 库存盘点编辑对话框用于编辑指定商品的库存数量,从而纠正库存数量可能存在的错误。对话框的ID为IDD_CHECKEDIT_DIALOG。对话框的布局如图: 对话框类为CCheckEditDlg。当用户单击“确定”按钮时,执行OnOK()函数。其功能是更新库存数量。代码如下: OnOK(){ UpdateData(TRUE);//将用户输入数据读取到成员变量中 //更新库存数量 CProInStore obj;obj.SetPnum(m_NewNum);obj.sql_updatePnum(cSpId);} 4.9 库存警示管理模块设计 库存警示管理模块可以实现以下功能: 1、实现数量报警管理。即当库存商品的数量低于下线或超过上线时报警。 2、实现失效报警管理,即当库存商品即将达到有效期时报警。4.91 设计商品数量报警管理模块 商品数量报警信息管理对话框用来显示所有需要进行数量报警的商品信息。为了更方便的统计商品数量报警信息,需要创建一个视图Total_Num,它的作用是统计每种库存商品数量。主要代码如下: USE [Stock] GO ALTER VIEW [dbo].[Total_Num] AS SELECT dbo.ProInStore.Pid, SUM(dbo.ProInStore.Pnum)AS Total FROM dbo.ProInStore INNER JOIN dbo.Product ON dbo.ProInStore.Pid = dbo.Product.Pid GROUP BY dbo.ProInStore.Pid GO 商品数量报警信息管理对话框的ID为IDD_NUMALARM_DIALOG。对话框布局如图:对话框对应的类为CNumAlarmDlg。主要函数是Refresh_Data()。功能与其他对话框的Refresh_Data()类似。在此不再详述。 警告类型分为短线和超储两种情况,程序将根据用户选择的类型进行统计。 4.92 设计商品失效报警管理模块 商品失效报警信息管理对话框用来显示所有需要进行失效报警的商品信息。为了更好方便的统计商品失效报警信息,需要创建一个视图Vaild,它的功能是统计库存商品价格、数量、生产日期、仓库名称和距离失效期的天数等信息。主要代码如下: USE [Stock] GO ALTER 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.ProInStore.Sid = dbo.Storehouse.Sid GO 在SELECT语句中,使用了如下的SQL Server函数: 1、DATEADD 在向指定日期加上一段时间的基础上,返回新的datatime值。 2、DATEDIFF 返回两个指定日期的时间差。 3、ROUND 根据指定的长度和精度对数字表达式进行四舍五入。 4、GETDATE 按datetime值的SQL Server标准内部格式返回当前系统日期和时间。 商品失效报警信息管理对话框ID为IDD_VALID_DIALOG。对应的类为CValidDlg。对话框的布局与商品数量报警信息管理对话框类似。因为功能已经在视图里实现了所以此对话框不用添加额外的函数。第五章 结束语 5.0 开发中的问题和解决办法 如何高效的在VC++中添加类与对话框及消息响应函数。为了解决这些问题,本设计中的所设计的类与对话框采用利用VC++向导生成,然后在自动生成的基础上修改,节省了相当一部分繁琐的时间加快了程序开发的速度,节省了开发的时间。 在设计中使用了大量的数据,设计了大量的表格。为了便于实现数据与表的连接、表与类的连接,采用了数据库软件。这样只要调用数据库本身的查询、插入、修改等语句就以轻松的操作这些数据。使理论上的知识很好的与实际问题相结合。5.1 系统不足之处 在本设计中,还有很多不足之处:界面的美观还可以进行更进一步的改善,还可以再增加一些功能,比如在状态栏增加时间显示,可以让使用人员很方便的看到当前时间。也可以增加实时的通讯功能,可以让管理员与普通用户之间进行实时通讯。本系统在处理大量的数据时能力还很欠缺,应该再设计时采用一些适当的算法对本系统进行优化。第六章 致谢 在论文完成之际,我要特别感谢我的指导老师吕知辛老师的热情关怀和悉心指导。在我撰写论文的过程中,吕知辛老师倾注了大量的心血和汗水,无论是在论文的选题、构思和资料的收集方面,还是在论文的研究方法以及成文定稿方面,我都得到了吕知辛老师悉心细致的教诲和无私的帮助,特别是他广博的学识、深厚的学术素养、严谨的治学精神和一丝不苟的工作作风使我终生受益,在此表示真诚地感谢和深深的谢意。 在论文的写作过程中,也得到了许多同学的宝贵建议,在此一并致以诚挚的谢意。感谢所有关心、支持、帮助过我的良师益友。 参考文献 【1】孙鑫.VC++深入详解.北京:电子工业出版社.2006 【2】屈磊 李媛媛.VisualC++开发入门与编程实践.北京:电子工业出版社2007 【3】(美)Sartaj Sahni.数据结构、算法与应用——C++语言描述.北京:机械工业出版社.2001 【4】王立副 麻志毅 张世琨.软件工程.北京:北京大学出版社.1999.【5】苗雪兰 刘瑞新 宋会群.数据库技术及应用.北京:机械工业出版社.2005 【6】李涛 刘凯奎 王永晈.数据库开发与实例.北京:清华大学出版社.2006 【7】启明工作室.SQL Server 2005 数据库应用系统开发.北京:人民邮电出版社.2007 【8】(美)Timothy A.Budd.面向对象编程导论.北京:机械工业出版社.2003 【9】郑阿奇.Visual C++教程[M].北京:机械工业出版社,2004 【10】东方人华等.Visual C++ 6.0范例入门与提高[M].北京:清华大学出版社.2003 【11】:刘诚方,曾昭荣.BorlandC++Windows初级程序设计.天津:天津科学技术出版社.1997.1 【12】陈慧南.数据结构:使用C++描述.南京:东南大学出版社.2001 仓库库存管理制度 仓库库存管理制度 第一条 目的为求仓库存货及财产保管的正确性和安全性以及库存数字的准确性。仓库管理事务处理有所遵循,并加强管理人员的责任,以达到财产管理的目的,特制定本制度。 第二条 管理范围 (一)原材料:包括脂料类、化工类、纤维类、泥料类、砂石类、木材类、塑料类、钢材类、埋件类、办公类、包装类、劳保类、后勤类、油漆类、胶水类、油类、工具类、枪类、砂纸类、毛刷类、螺丝类、接头类、钻头类、开关类、灯线管类、切割片类、钉类、皮带类、轮子类、轴承类、水龙头类、其它类等不同类别。 (二)产成品:按不同客户、不同类别、不同质量分类。 (三)模具:按不同类别分类。 第三条 货物入库、存放及领料 1、存货的堆置,应力求整齐、集中、分类,设置存货卡。 2、按货物类别特性与库存条件确定存放地点。 3、各项财产卡依编号顺序,事先准备妥当,以备盘点。 4、按照入库的品名、规格、型号验收实际重量,会同质检部门验收货物质量。 5、对不合格的货物停止入库并向上级报告,等候上级指令处理。 6、按照领料单的品名、规格、型号、数量准确发放货物。 7、各项财务账册应于当日下班前登记完毕,如因特殊原因,无法完成时,将尚未入账的有关单据如缴库单、领料单、退料单、交运单、收料单等于次日上午上班前登记完成。 第四条 报告制度 每月向上级部门报告原料、成品、模具进、出、库存情况,包括月度入库汇总表、月度出库汇总表、月度结存库存表,入库汇总表、出库汇总表。并于安全库存量以下时及时将库存量通知生产部门、项目部及财务部,以便及时实施采购。 第五条 盘点制度 存货的盘点,以当月最末一日实施为原则。 (一)按月盘点:由仓库管理员在仓库主管的监督下进行。 (二)年中、年终盘点 1、存货:由资材部门或经管部门会同财务部门于年(中)终时,实施全面总清点一次。 2、物资:由物管部门会同财务部门于年(中)终时,实施全面总清点一次。 (三)检查 由财务部门照会其仓库主管后,做存货随机抽样盘点。 (四)特定的不定期抽点的盘点工作,亦设置盘点人、会点人、抽点人,其职责与年中(终)盘点同。 第六条 岗位责任 (一)仓库主管岗位职责 1、仓库主管隶属物管科,是公司重要的岗位。主要负责对公司的材料仓、成品仓进行组织管理,并对包装物、模具、工具、劳保用品、物料、废料进行组织管理。 2、辅导、组织、授权仓管员开展工作。按照公司的政策和规章制度严格要求仓管员,并对仓管员进行考核,督导各仓库财产物资的安全流动。 3、管理仓管员的内容必须包括:按要求检验入库材料或产品,按各种计量标准计量并记录,如单位为条、米、箱或桶都必须有重量记录如公斤,发现有问题的材料或产品入库应要求入库人改正并及时向上级报告。 4、监督和检查仓库物品的收、发、存记录,要求材料仓和成品仓账本、货物卡、实物必须相符,在工作流程上辅导和培训仓管员。 5、检查仓库5S工作的情况。 6、对仓库作业流程、岗位责任、规则制度的编制提出意见。 7、组织按月定期的盘点工作,及时向相关部门提交盘点结果。 8、对仓库物料存量实行ABC分类法,设定库存量的高低限制,定期检查实物存量与高低限的差距情况。 (二)原料仓仓管员岗位职责 1、在仓库主管的领导下开展工作。遵守公司的各项制度,按照仓库领料制度执行领料手续。 2、监督搬运工工作,制止野蛮装卸。 3、负责原料仓安全保管。有责任制止违反仓库防火安全的行为。 4、负责本仓库物品的收、发货,核对品种、数量,填写有关入库、出库单,登记账本,做到账、卡、物相符。 5、仓库按照5S要求进行管理,报表管理、文件数据管理。 6、原料仓领料规程、管理制度的编制或提出修订意见。 7、检查入库的原料品名、规格、型号、数量、外包装是否符合要求、有没有缺斤少两,有没有货不对办,有没有劣质材料、并及时通知质检员检验质量,对不要求的材料要求退货或说明原因不予入库,并及时向仓库主管反映情况。 8、做好原料的状态标识。能辨别及熟记各种原料的代号并掌握库存物品的特性,合理安排摆放区域。 9、发货执行“先入先出、按单发放”的原则。加强与车间的沟通。 10、及时整理库存物品,保持仓库清洁卫生、堆放整齐有序,搞好防火、防潮、防霉、防挥发、防蛀工作,发现问题及时解决。随时留意物品质量、有效期限,如有问题及时向仓库主管反映。 11、监控物品库存数量,负责向上级递交需要补货的原料,做到及时、准确。 12、在非当班时间,有需要时,须回厂收、发货。 13、每月定期盘点,按时上报相关表册。 14、服从工作安排,完成上级交给的各项临时任务。 (三)成品仓仓管员岗位职责 1、在仓库主管领导下开展工作。严格遵守、认真贯彻落实公司的方 针政策和各项规章制度。严格遵守仓库安全制度,认真执行仓库管理办法。 2、督导搬运工工作,制止野蛮装卸。 3、负责本仓库安全生产,有责任制止违反仓库防火安全的行为。 4、负责本仓库保密管理、5S推行、资产管理、文件数据管理。 5、负责本仓库物品的收、发货,核对品种、数量,填写有关单据、账卡,保证账物相符。 6、每天早上将库存数上报仓库主管。 7、对进出仓产品的数量负总责。 8、成品进仓时,检查产品的完好性。对污渍、破损的产品停止入库、并及时向仓库主管反映。 9、加强与各有关部门的沟通,保证收发货的及时。 10、及时整理库存物品,保证仓库物品摆放整齐,保持仓库的环境卫生。 11、成品库存数量异常应及时通知专案部门。 12、在非当班时间,有需要时,须回厂发货。 13、每日做好出入库的记帐工作。每月定期盘点。 14、负责协调本仓库与包装发货组之间的工作,出现问题及时上报。 15、服从工作安排,完成上级交给的各项临时任务。 第七条 账载错误处理 (一)账载数量如因漏账、记错、算错、未结账或账面记载不清者,记账人员应视情节轻重予以申诫以上处分,情况严重者,应层呈财务经 理议处。 (二)账载数字如有涂改未盖章、签章、签证等凭证可查,凭证未整理难以查核或有虚构数字者一律由直接主管签报财务经理议处。 第八条 赔偿处理 财、物料管理人员、保管人有下列情况者,应送总经理议处或赔偿相同的金额: (一)对所保管的财物有盗卖、掉换或化公为私等营私舞弊者: (二)对所保管的财物未经报准而擅自移转、拨借或损坏不报告者: (三)未尽保管责任或由于过失致使财物遭受被窃、损失或盘亏者。 第九条 本办法制定后,报财务经理核准后实施,修改时亦同。第二篇:库存管理系统课程设计
第三篇:UML库存管理系统
第四篇:仓库管理系统
第五篇:仓库库存管理制度