第一篇:仓库管理系统课程设计报告
仓库管理系统课程设计报告
一、概述
项目背景:
仓库管理在企业的整个供应链中起着至关重要的作用,如果不能保证正确的进货和库存控制及发货,将会导致管理费用的增加,服务质量难以得到保证,从而影响企业的竞争力。传统简单、静态的仓库管理已无法保证企业各种资源的高效利用。如今的仓库作业和库存控制作业已十分复杂化多样化,仅靠人工记忆和手工录入,不但费时费力,而且容易出错,给企业带来巨大损失。使用仓库管理系统 , 对仓库各环节实施全过程控制管理,并可对货物进行货位、批次、保质期、配送等实现系统列号管理,对整个收货、发货、补货、集货、送货等各个环节的规范化作业 , 还可以根据客户的需求制作多种合理的统计报表。仓库管理系统能帮助企业合理有效地利用仓库空间,以快速、准确、低成本的方式为客户提供最好的服务。
系统特点: 本系统是采用面向对象的设计思想进行编制,整个系统由若干个表单、报表及一个主菜单组成,由项目管理器统一管理全部程序的编写和调试.用户在操作中可以通过主菜单调用系统的各个功能.在表单设计方面尽量考虑方便用户,简化操作,绝大部分操作只需点击鼠标即可完成,力求突出系统的便利性、实用性.设计环境与工具: 在现有的DBMS(Visual FoxPro)支持下进行。
二、需求分析
问题陈述:
需完成的功能: 产品入库管理,可以填写入库单,确认产品入库;
产品出库管理,可以填写出库单,确认出库;
借出管理,凭借条借出,然后能够还库;
初始库存设置,设置库存的初始值,库存的上下警戒限;
可以进行盘库,反映每月、年的库存情况;
可以查询产品入库情况、出库情况、当前库存情况,可以按出库单、入库单,产品、时间进行查询;
三、系统结构设计
(1)系统功能结构设计(包括主要功能模块及功能模块的细化。)
本系统应能够方便的实现仓库货物存储信息的录入、修改、编辑和浏览等功能,高效地完成企业的各种产品信息的统计功能,打印出各种产品入库出库和盘库查询的信息表格,系统的各主要功能的要求如下: 信息录入功能: 仓库产品基本信息、产品入库信息、产品出库信息、产品清单资料等.浏览功能: 浏览仓库产品基本信息,浏览产品入库情况、出库情况、当前库存情况.查询功能: 产品标号,或者按验收时间查询库存设置等.报表打印功能: 打印仓库产品货单表,空白产品登记表和各种统计表.(2)数据库设计
一个数据库中包含许多表,表之间又有关联,所以设计数据库的步骤为:第一步,确定所需要的表;第二步,确定每个表所需要的字段;第三,确定各个表之间的关联关系;最后形成表的结构.定义表(包括表中的字段)、视图、索引、主关键字、确定表间的联系。
数据库要求:在数据库中至少应该包含下列数据表:
出库单表(chjy): 记录产品出库状况。
入库单表(cgdd):记录产品入库状况。
产品供应商表(gys):记录产品提供者。
公司雇员表(gy):记录来仓库存取产品的人员名单。产品表(cp):记录仓库现存状况。
库存情况表;出库台帐; 入库台帐;
借条信息表(反映借出人,借出时间,借出产品,借出数量,还库时间等)。
(3)系统流程结构图
数据流图的基本目的是利用它作为交流信息的工具,利用它将对现有系统的认识或对目标系统的设想用数据流图描绘出来,供有关人员审查确认: 数据流图的另一个主要用途是作为分析和设计的工具,帮助分析员实现总结现有系统的目标,对更详细的设计步骤提供帮助.数据流图是描绘系统的逻辑模型,以图形的形式表示出来,以下是仓库管理系统的数据流图.四、系统详细设计
(1)描述每一个功能所完成的任务,指明实现该功能的表单、菜单、报表等。
系统的功能模块设计
图1-1
系统功能模块
(2)说明主要功能的设计思想和方法(包括涉及到的数据源、关键的属性和代码等。)
设计思想分析:
将管理系统分为进库操作、出库操作、损耗操作、查询操作、报表操作、维护操作六部分。
1、入库时根据商品的具体情况进行处理,如果库中已存在此商品,就在原来的数量基础上加上进货数量,如果没有则自动新增此产品,并提醒管理员在最新报价表中加上此商品的最新报价(为了出库的正确性,某商品的最新报价的存在是其出库的前提)。如果商品已以入库,则自动在商品进出表中加上相关记录,以便于以后的核对。
2、为了达到出库价格的正确性,出库时系统自动将此商品的售价和最新报价里的价格进行比较,如果不相等则出现提示信息。另外,程序还有其他服务功能,比如如果商品数量不足或没有相关商品则出现提示信息。
3、商品的查询专门提供给广大客户使用,客户可以按商品编号和商品名称、数量、单价、进库出库信息、对库中的具体商品进行查询,查询有商品代号和商品名称两种方法,这样,客户可以轻松掌握仓库的库存情况,便于交易。
4、核对措施也是此系统中必备的,为了便于以后核对,出库的记录也将存储起来。出库单打印默认为2份,其一用交给交易对方,另一份管理员自己保存。便于核对。同样,本系统还会自动对入库情况进行记录,这样,用户能轻松掌握仓库的变化,可以随时对库存进行分析核对。
5、保密性是作为一个企业或者机构所十分重视的,给用户一个安全的环境是优秀的管理软件所必须做到做好的,本软件也做到了安全性,就是说登录时要有正确的密码,这样一来,只有系统管理员才有权更改系统里面的数据了。
6、本系统还带有自动清除测试记录功能(课本是本系统的测试数据),如果用户要正式使用仓库,只要选择操作菜单下的正式使用命令。这样就不需要用记一条条去删记录了。
(3)界面设计要合理、简明。
五、实施及测试 指出已实现的每个功能,附上运行、测试结果。
六、结束语
心得体会:
经过了这次仓库管理系统的课程设计我从中学到了很多,同时明白了做一个小型软件的步骤和流程.如何让自己设计的软件运用到具体的实际工作中,这是一个关键的环节.还有就是程序设计和运行测试中遇到的问题该如何解决,从解决问题中我也学到了许多平时课本上所没有的知识.当然,能够完成这个仓库管理系统我自己也感觉很有成就感.运用到的开发工具和软件技术: 此系统结合货物仓库管理的要求,对Visual FoxPro(VFP)数据库管理系统、SQL语言的学习和应用,主要完成货物仓库管理系统的需求分析,系统的数据库设计和实现,系统的表单设计,主控程序设计,并由此设计了数据库结构和应用程序。系统运行结果证明,本人设计的货物仓库管理系统可以满足仓库管理者完成仓库管理的日常工作,包括材料的入库,出库以及库存材料信息的管理维护等
软件还需要哪些改进:
在编写源程序代码的过程中对语言的运用还需要提高,应使写出来的程序更加简洁,易读懂,更加满足实际工作的需要.要想使做出来的程序更好的利用还需根据实际需要在今后的运用中不断的改进和完善.七、参考资料
1.Visual FoxPro 程序设计及其应用系统开发
李作纬 等
中国水利水电出版社 2.数据库应用系统开发技术
刘军
等
机械工业出版社 3.其它资料若干
第二篇:仓库管理系统课程设计报告
《软件工程》课程设计报告
仓库信息管理系统
专业班级: 学生学号: 学生姓名: 指导教师姓名:
2016年月
目录
一、系统可行性研究.......................................2
二、系统的需求分析.......................................5
三、系统概要设计........................................14
四、系统的详细设计......................................17
五、系统的实现和测试....................................20
六、实验总结............................................26
仓库信息管理系统一、系统可行性研究
1.1引言 1.1.1编写目的
为了以最小的代价在最短的时间内确定仓库管理系统项目是否值得去开发,其中的关键和技术难点是什么,问题能否得到解决,怎样达到目的?我们编写了可行性报告以对这些问题进行分析。
除此之外,经过对此项目进行详细调查研究,我们初步拟定了系统实现报告,对软件开发中将要面临的问题及其解决方案进行初步设计及合理安排。明确开发风险及其所带来的经济效益。以便于中小规模工厂的仓库管理人员阅读及理解整个项目。1.1.2项目背景
开发的软件系统的名称:仓库信息管理系统 项目提出者: 项目开发者:
项目使用者:仓库管理人员 1.2可行性研究的前提 1.2.1要求
A.功能:极大提高仓库工作人员的工作效率,大大减少以往入货、出库流程繁琐,杂乱,周期长的弊端;基于仓库管理的全面自动化,减少入库管理、出库管理及库存管理中的漏洞,节约不少管理开支,增加企业收入;实现仓库的管理操作自动化和信息的电子化,全面提高仓库的管理水平。
B.性能:系统的存货信息必须保持更新状态,客户的产品出入库信息必须无差错,及时的 保存到仓库管理系统的服务器上,对服务器上的数据必须定时的检查并与仓库中存放的货物进行核对。
C.本系统要求输出的数据有:数据完整,详实,及时。
在此方面,若此项目投入使用,将给企业带来丰厚的经济效益社会效益。并且,此项目开发成本低,占用资源少,在经济方面可行。1.5操作可行性分析
本系统设计思路清晰,操作简捷,具有良好的用户界面,和较为完善的异常处理机制及信息处理机制,一般仓库管理者稍加培训即可使用。在操作方面可行。
二、系统的需求分析
2.1功能描述
本软件主要有以下几方面的功能:
(1)信息管理:可对商品进行查询,删除,修改操作,完成对商品信息管理的功能;
(2)库存管理:对商品入库,出库的管理。2.2数据流图 2.2.1数据流分析
数据流图是组织中信息运动的抽象,是管理信息系统逻辑模型的主要形式。它可以综合的反映出信息在系统中的流动、处理和存储情况,具有良好的抽象性
商品入库请求商品入库管理入库商品信息更新商品信息出库商品信息商品出库请求商品出库管理库存商品信息更新后的商品信息修改商品请求删除商品请求商品信息管理商品信息库存商品信息表商品清单查询商品请求图2-2 二层数据流图
对每一个功能模块的分解图
(1)对第一个模块“商品入库管理”的细分图
商品入库管理子系统包含两个功能模块:“商品入库”、“处理商品”; 一个文件存储:“入库商品信息表”
入库请求1商品入库商品编号1.11.21.31.4商品名称商品数量商品价格输入商品编输入商品名输入商品数输入商品价号称量格商品信息入库商品信息表入库商品信息
图2-3 “商品入库管理”分解图
(2)对“商品出库管理”的细分图
商品出库管理子系统包含两个功能模块:“商品出库”、“处理商品”;
一个文件存储:“出库商品信息表”
入库请求1商品入库商品编号1.1输入商品编号商品名称商品价格1.21.31.4商品数量输入商品名输入商品数输入商品价称量格商品信息商品商品出库信息出库商品信息表入库商品信息表出库商品信息出库请求2商品出库商品名称2.1输入商品名称商品数量2.2输入出库数量入库商品信息6更新商品信息3删除商品输入商品编号3.1输入商品编号输入商品名称3.2输入商品名称商更新后的商品品信息信息输入编号4.1.1输入商品编号输入名称4.1.2输入商品名称商品信息库存商品信息删除商品请求管理员查询商品信息请求44.1请求分类查询商品信按条件查询息商品信息请求分类4.2查询所有商品信息库存商品信息表查询所有商品信息请求库存商品信息5.2输入新的编号修改后的商品信息输出信息修改商品信息请求修改编号商品名称5修改商品信息5.1输入商品名称管理员修改数量修改后的商品信息5.3输入新的数量
图2-6 底层数据流图
2.3 数据字典
数据字典是各类数据描述的集合,它是进行详细的数据收集和数据分析后所获得的主要成果。该系统的数据字典如下: 2.3.1 数据流
数据字典是各类数据描述的集合,它是进行详细的数据收集和数据分析后所获得的主要成果。该系统的数据字典如下:
1.数据源点和终点描述(1)名称:商品
加工编号:1.4 输入数据流:商品数量
输出数据流:商品信息
加工逻辑:输入商品价格,输出商品信息(6)加工名:商品出库
加工编号:2 输入数据流:出库请求
输出数据流:商品名称
加工逻辑:接收出库请求(7)加工名:输入商品名称
加工编号:1.2 输入数据流:商品名称
输出数据流:商品数量
加工逻辑:输入商品名称(8)加工名:输入出库数量
加工编号:2.2 输入数据流:商品数量
输出数据流:商品出库信息
加工逻辑:输入出库数量(9)加工名:更新商品信息
加工编号:6 输入数据流:出库商品信息,入库商品信息,库存商品信息
输出数据流:更新后的商品信息
加工逻辑:接收修改的商品信息进行修改(10)加工名:删除商品
加工编号:3 输入数据流:删除商品请求
输出数据流:输入商品编号
加工逻辑:接收删除请求
0 加工逻辑:修改商品信息
3.文件存储
(1)文件名称:入库商品信息表
简述:存放入库的商品信息
输入数据:商品信息
输出数据:入库商品信息
文件组成:商品的编号、名称、数量、价格(2)文件名称:出库商品信息表
简述:存放出库的商品信息
输入数据:商品的出库信息
输出数据:出库商品信息
文件组成:出库商品数量(3)文件名称:库存商品信息表
简述:存放所有商品信息
输入数据:更新后的商品信息,修改后的商品信息,删除后的商品信息
输出数据:库存商品信息
文件组成:商品的编号、名称、数量、价格
4.数据流
(1)数据流名字:入库请求 描述:对商品进行入库 组成:入库命令
(2)数据流名字:入库商品信息 描述:对入库商品信息处理
组成:入库商品信息=商品编号+名称+数量+价格(3)数据流名字:商品编号 描述:输入商品编号 组成:商品编号
三、系统概要设计
3.1总体结构和模块设计 3.1.1总体结构设计
模块是软件结构的基础,软件结构的好坏完全由模块的属性体现出来,把软件模块化的目的是为了降低软件复杂性,使软件设计,测试,调试,维护等工作变得简易,但随着模块数目的增加,通过接口连接这些模块的工作量也随之增加。1.总体结构框图
仓库信息管理系统库存管理信息管理商品入库商品出库删除商品修改商品查询商品信息按条件查询商品信息查询所有商品信息
图3-1系统总体结构图
2.模块说明
信息管理系统删除请求修改请求输入名称输入商品名称输入标号输入新编号商品信息查询请求删除商品信息删除商品信息接收信息查询商品信息反馈信息请求分类请求分类修改商品信息输入编号反馈输入名称反馈接收信息按条件查询商查询所有商品品信息接商收品信信息息输入商品编号及名称输入商品编号输入商品名称反馈输入数量反馈输入新数量
图3-3信息管理子系统结构图
(3)库存管理子系统结构图如图3-4所示
库存管理系统入库请求出库请求入库商品信息商品入库出库商品信息商品出库输入编号反馈输入名称输入反数馈量反馈反馈输入价格输入商品价格输入名称反馈信息输入商品名称输入数量反馈信息输入商品编号输入商品名称输入商品数量输入商品数量
图3-4 库存管理子系统结构图
四、系统的详细设计
4.1总体结构和模块设计
6储在入库商品信息表中。
商品出库模块模块:输入出库商品的编号以及出库的数量,把出库后的商品信息保存在出库商品信息表中。
删除商品模块:先输入商品的编号及名称,再删除该商品在库存商品信息表中的信息。
修改商品信息模块:先输入商品的编号及名称,在库存商品信息表中查询到该商品信息,再修改其对应信息。
查询商品信息模块:输入编号查询商品在库存商品信息表中的信息或查询库存商品信息表中的所有商品的信息。4.1.2各个模块设计
(1)根据数据画出的结构图如图3-2所示
仓库信息管理系统商品信息商品信息请求处理库存管理系统请求处理信息管理系统
图4-2 仓库信息管理系统结构图
(2)信息管理子系统结构图如图3-3所示
8商品入库操作
商品出库操作
出库后的商品信息
出库数量多余商品数量时
0
当删除的商品不存在是
修改商品操作
修改商品界面
商品信息查询界面
所有商品信息
六、实验总结
包括实验问题中遇到问题,解决过程的分析;实验心得体会等,不得抄袭!
第三篇:仓库管理系统课程设计 UML
无锡职业技术学院实践环节材料撰写用纸
二、仓库信息管理系统分析与设计
(一)《仓库信息管理系统》的需求建模
1、需求分析
仓库信息管理系统要能完成以下功能:
仓库存放的货物品种繁多,堆存方式以及处理方式也非常复杂,随着业务量的增加,仓库管理者需要处理的信息量会大幅上升,因此往往很难及时准确的掌握整个仓库的运作状态。针对这一情况,为了减轻仓库管理员和操作员的工作负担,此系统在满足仓库的基本管理功能基础上发挥信息系统的智能化。
根据要求可将系统分为四个模块(1)用户登录模块
普通操作员和管理人员登录此系统,执行仓库管理的一些操作,但是普通操作员和管理人员所能执行的功能不一样。(2)仓库管理模块
管理员工作需要登陆系统,才能够进行操作,系统中的各项数据都不允许外人随便查看和更改,所以设置登陆模块是必须的。可以执行仓库进货,退货,领料,退料;商品调拨,仓库盘点等功能。(3)业务查询模块
在用户登录系统后,可以执行库存查询,销售查询,仓库历史记录查询。
(4)系统设置模块
显示当前仓库系统中的信息,在系统中可以执行供应商设置,仓库设置。
2、功能模块分析(1)登录模块
普通操作员:显示当天仓库中的所有库存的信息。 管理员:修改仓库中的库存信息。
用户注销:在用户执行完仓库功能时,注销。 用户退出。(2)管理模块
仓库库存的进货与退货;
仓库中的库存需要领料和退料功能;
仓库也可以完成不同地区的商品在此仓库的商品调拨任务; 用户人员也可以在当天之后对仓库中的库存进行盘点。(3)查询模块
显示当前仓库商品信息,并执行库存查询; 显示仓库信息,对商品的销售量进行查询; 此系统还可以对仓库历史记录进行查询。(4)设置模块
供应商设置 仓库设置
3、工作内容及要求
进一步细化需求分析的内容,识别出系统的参与者,并完成用例图; 无锡职业技术学院实践环节材料撰写用纸
将用例图中的每个用例都写成相应的事件流文档;
进一步使用活动图来描述每个用例,为后续的系统设计做好准备;
按照系统的功能分析,从用例的描述中提取出系统的对象类和界面类,建立类图;
分析类图中的实体类和实体类之间的关系,画出数据库的逻辑模型图(只包含实体类,且注明角色和阶元)。
对数据库的逻辑模型进行优化,取消多对多的联系,完成最终的逻辑模型设计; 使用交互作用图或状态机图完成系统动态行为的建模。(建议使用顺序图按功能分别描述)
4、创建SRS文档:
引言
仓库管理系统将24小时为用户服务。 用途
SRS文档将作为SDLC设计和编码阶段的输入。 作用域
管理员直接对系统进行管理。 功能性需求
操作员需要取得管理员的认可才可以登录此系统。 操作员可以查询库存的信息。
系统管理员可以管理登录系统以后对仓库进行管理
因为不是每个人都可以随便修改系统的,所以系统管理员可以登录进系统以后对用户的权限信息进行管理。
界面需求
界面应该清晰易懂。 运行环境
此系统可以在网络上进行运行。 无锡职业技术学院实践环节材料撰写用纸
用例图如下:
分析:操作员在进行验证后登陆系统,可以执行商品的进退货的记录信息的查询与管理等操作。
用户登录**仓库领料仓库进货**退出系统****商品调拨**操作员****用户注销*仓库退料*仓库退货c
图1 操作员用例图
分析:此用户是管理员,可以对仓库信息进行维护,仓库商品进行盘点,业务分析,历史记录查询,供应商信息维护和仓库查询操作。
无锡职业技术学院实践环节材料撰写用纸
仓库信息维护用户登录****用户注销******管理员***退出系统仓库盘点*仓库查询**供应商信息维护*业务分析历史记录查询*
图2 管理员用例图
分析:该用户为供应商,可以对执行仓库进货和退货的查询与管理操作。
仓库进货***商品供应商*仓库退货
图3 供应商用例图
(二)《仓库管理系统》的静态建模
静态建模用于描述软件的静态成分,又叫结构建模。它包含类关系图和对象关系图。用于描述软件系统的成分之间的关系和依赖性。1)类的分析与设计
确定初始类图 提取类的属性 提取类的操作 无锡职业技术学院实践环节材料撰写用纸
类之间的关系
去除不必要的类和不正确的类:
1.冗余类:若两个类表述同一信息,保留最具有描述能力的类; 2.不相干的类:去掉与问题没有多少关系和根本不相关的类;
3.模糊类:类必须是确定的,有些临时类边界定义不对,或范围太广,应排除; 4.属性:如果有些名词是用来描述某个类的,那么它一定是这个类的属性。5.操作:如果所描述的操作并不适用于对象并且被自身所操作,那么这一定不是类。这样可以得到相关的三种类关系: 人员信息包类图 接口信息包类图 系统事务信息包类图 2)确定类之间的关系
两个类之间的相互依赖就是关联,关联常用描述性动词或动词组来表示,其中有物理位置的表示、传导的动作、通信、所有者关系及条件的满足等等。通过以上方法可以确定类图:
① 人员信息包类图里包含:操作员类、管理员类、供应商类、商品进货模块类、商品退换模块类、商品打印模块类、库存查询模块类、商品盘点模块类、历史信息查询模块类和商品调拨模块类。
无锡职业技术学院实践环节材料撰写用纸
**操作员-姓名-id号-权限+仓库进货()*+仓库退货()+仓库领料()+仓库退料()+商品调拨()*+用户登录()+用户注销()+退出系统()+盘点信息打印报表()+进货商品打印报表()*+退换商品打印报表()+商品库存信息()**商品进货模块+商品清单()+退货清单()+查询信息()库存查询模块**商品打印模块*
图4 人员信息包类图
供应商-供应商姓名-供应商id号-联系方法+进货()+退货()*1管理员-姓名-id号-权限+供应商信息维护()+仓库信息维护()+盘点信息()+仓库查询()+业务分析()+用户注销()+退出系统()+历史记录查询()+用户登录()+查询结果()*历史信息查询模块*+查询条件()+进货记录()+商品调拨记录()+商品盘点信息()*********商品退换模块*商品盘点模块*+审核后盘点信息()+查询信息()**商品调拨模块+查询信息()+查询条件()*+盘点信息列表()8 无锡职业技术学院实践环节材料撰写用纸
② 接口信息包类图里包含:用户登录类、仓库管理类、系统管理类和业务查询类。
仓库管理+仓库进货()+仓库退货()+仓库领料()+仓库退料()+仓库调拨()+仓库盘点()用户登录+用户登录()+用户注销()+退出系统()系统设置-供应商设置-仓库信息维护业务查询+库存查询()+业务分析()+历史记录查询()
图5 接口信息包类图
③系统事务信息包类图包含:用户登录类、供应商管理类、业务分析类、查询历史信息类、仓库信息维护类、领料类、退料类、退换类、盘点类、调拨类和仓库查询类。
无锡职业技术学院实践环节材料撰写用纸
调拨供应商管理-该操作id号-日期-管理员id号+增加供应商()仓库信息维护-该操作id号-日期退料用户登录-该操作id号-登录日期-登录人id-name+用户登录()+用户注销()+退出系统()退货-交易id-日期-操作员-交易id-日期-退料人-操作员仓库查询-该操作id-日期领料-交易id-日期-领料员-操作员查询历史信息-该操作id-日期业务分析-操作id号-日期-管理员id+opname()盘点-交易id-日期-管理员id-仓库id
图6 系统事务信息包类图
(三)《仓库管理系统》的动态建模
在完成静态建模后,需要对系统实现动态建模。需要创建
活动关系图:表示系统的静态成分为了完成过程需要执行的活动的顺序;
交互关系图:表示软件系统静态成分之间的交互,常用序列关系图和通信关系图。(1)活动关系图
活动关系图是用来对特定过程的控制流进行建模。
分析:管理员在登录系统后,查看销售记录和查看商品库存情况,如果缺货就通知操作员缺货商品清单,操作员即可联系供应商按缺货清单提供货物,然后管理员更新数据库结束,如果不缺货直接结束。
无锡职业技术学院实践环节材料撰写用纸
通知操作员缺货商品清单查看销售记录联系供应商按缺货清单提供货物查看商品库存情况[ 缺货] 接受货物更新库存数据库[ 不缺货 ]
图7 仓库系统的活动图
(2)交互关系图:通信关系图、序列关系图
①通信关系图以消息的形式表示对象之间的交互。通信图集中在活动着的对象上,表现的是相互通信的对象之间的消息传递,不参照时间。通信图通过在消息上加序号表示消息传递的次序。序列号放在消息之前作为消息的前缀。
注:通信关系图不描绘对象的生命线。A.管理员盘点过程协助图
分析:操作员把盘点信息发送给管理员,管理员审查后盘点信息,在仓库商品盘点模块中盘点信息列表,然后交由信息打印模块打印盘点信息列表,给操作员。
无锡职业技术学院实践环节材料撰写用纸
操作员盘点信息管理员盘点信息打印列表审查后盘点信息商品信息打印模块盘点信息列表商品盘点模块
图8 管理员盘点过程协作图
B.商品管理协作图
分析:操作员通知供应商进货,供应商打印出进货清单,操作员也可以对进货退货进行管理,供应商打印出退货清单。
商品进货进货商印品打报表进货清单操作员退货商品供应商表库存查询商品退换退货清单库存信息进货商品打印报
图9 商品管理协作图 无锡职业技术学院实践环节材料撰写用纸
C.仓库历史记录查询协作图
分析:管理员应该先登录系统。当管理员登录系统以后,可以查询历史信息,看到商品进货、商品盘点、商品调拨的历史记录。
商品进货管理员查询条件历史信息查询进货、退货记录查询条件商品调拨商品盘点图10 仓库历史记录查询协作图
②序列关系图
序列关系图以按时间排序的消息形式来表示对象之间的交互。序列关系图和通信关系图的区别在于通信关系图情调对象的组织结构,而序列关系图则按时间顺序显示对象之间交互的消息。在序列关系图中,可以沿x轴方向排列对象。将启动交互的对象放在最左边。消息序列中后来的对象则放在交互启动对象的右边。在交互中,对象发送和接收的消息按时间升序沿y轴防止。
注:和通信关系图不同,序列关系图描述对象生命线。
A.仓库盘点过程序列图 分析:操作员将盘点信息发送给管理员,管理员审查盘点信息,然后盘点信息列表交给商品打印模块打印后发给操作员执行相关商品操作。
商品盘点信息
无锡职业技术学院实践环节材料撰写用纸
操作员管理员商品盘点模块商品打印模块盘点信息盘点信息列表()审核后盘点信息盘点信息打印报表()
图11 仓库盘点过程序列图
B.商品管理序列图
分析:操作通知商品供应商进货、退货,商品供应商将商品清单和退货商品清单发送给商品进货模块,商品进货模块将进货商品打印报表给操作员,商品退货模块将商品退换报表打印发给操作员,操作员也可以查询库存,库存库存模块将库存查询信息发送给操作员。
无锡职业技术学院实践环节材料撰写用纸
操作员商品供应商商品进货模块商品退换模块进货()商品清单()进货商品打印报表()退货清单()退货()退换商品打印报表()查询条件()商品库存信息
图12 商品管理序列图
C.仓库历史记录序列图
分析:管理员登录系统查询历史信息模块,历史信息则查询商品进货退货模块、商品调拨模块、商品盘点模块,之后各模块将查询得到的信息发送给历史信息模块,最后由历史信息模块统一将信息发给管理员。
无锡职业技术学院实践环节材料撰写用纸
管理员历史信息查询模块商品进货退货模块商品调拨模块商品盘点模块查询信息()查询条件()进货记录()查询信息()商品调拨记录()查询信息()商品盘点信息()查询结果()
图13 仓库历史记录序列图 无锡职业技术学院实践环节材料撰写用纸
(四)《仓库管理系统》的架构建模
架构建模使您能够了解组件在组织网络中的物理分布。您需要对软件系统的架构进行建模以确定组件的设计是否符合软件系统的需要。软件架构描述软件按系统的所有组件以及这些组件之间的关系。要对系统软件的架构进行建模,您需要创建以下关系图:
包关系图:描述根据特定条件分组在一起的软件系统构成。 组件关系图:描述软件系统的可执行构成。
部署关系图:描述软件系统组件的各种处理设备。
a)组件关系图:组件可实现一组接口并构成软件系统的可执行部分。
分析:该图是系统的各个组件图,由系统登录、仓库管理管理、信息查询、系统设置。
仓库管理信息查询系统登录系统设置
图14 组件关系图
b)部署关系图:显示需要在其中部署软件组件的硬件。
分析:下图表明系统采用数据库系统作为后台数据提供者,然后客户登录使用系统,也可以对系统中的信息进行打印操作。
无锡职业技术学院实践环节材料撰写用纸
数据服务器客户机1客户机n打印机
图15 部署关系图
第四篇:C语言课程设计 仓库管理系统
C语言课程设计 仓库管理系统
#include
struct cangku {
int num;
char name[20];
char introdution[50];
float square;
};typedef struct cangku Cangku;
int Input(Cangku t[]);void List(Cangku t[],int n);void SearchOnName(Cangku t[],int n);int DeleteRecord(Cangku t[],int n);int AlterRecord(Cangku t[],int n);int AddRecord(Cangku t[],int n);void SortOnName(Cangku t[],int n);void SortOnSquare(Cangku t[],int n);void SaveRecord(Cangku t[],int n);int LoadRecord(Cangku t[]);int LoadRecord1(Cangku t[]);void Save(Cangku t[],int n);void Load(Cangku t[],int n);void Load1(Cangku t[]);int Menu_select();
void main(){
Cangku ck[50];int i,l,length,w=1;int q[4]={5,2,1,0};
system(“cls”);printf(“请输入第1个密码:n”);for(i=0;i<4;i++)
{
scanf(“%d”,&l);
system(“cls”);
if(l==q[i])
printf(“正确,继续输入第%d个密码:.n”,i+2);
else
{
w=0;
printf(“输入错误!n”);
break;
} }
while(w)
{
switch(Menu_select())
{
case 1:
length=Input(ck);
SaveRecord(ck,length);
break;
case 2:
length=LoadRecord(ck);
SearchOnName(ck,length);
break;
case 3:
length=LoadRecord(ck);
length=DeleteRecord(ck,length);
SaveRecord(ck,length);
break;
case 4:
length=LoadRecord(ck);
length=AlterRecord(ck,length);
SaveRecord(ck,length);
break;
case 5:
length=LoadRecord(ck);
length=AddRecord(ck,length);
SaveRecord(ck,length);
break;
case 6:
length=LoadRecord(ck);
system(“cls”);
List(ck,length);
break;
case 7:
length=LoadRecord(ck);
system(“cls”);
SortOnName(ck,length);
SaveRecord(ck,length);
break;
case 8:
length=LoadRecord(ck);
system(“cls”);
SortOnSquare(ck,length);
SaveRecord(ck,length);
break;
case 9:
length=LoadRecord(ck);
system(“cls”);
Save(ck,length);
break;
case 0:
length=LoadRecord1(ck);
Load1(ck);
system(“cls”);
Load(ck,length);
break;
case 10: exit(0);
}
} }
int Menu_select(){ int c;
printf(“按任意键进入仓库管理菜单n”);
getchar();
system(“cls”);
system(“color F0”);printf(“
******************************仓库管理*******************************n”);
printf(“
*
1.录入仓库初始记录
*n”);
printf(“
*
2.按仓库名称查找记录
*n”);
printf(“
*
3.删除仓库记录
*n”);
printf(“
*
4.修改仓库记录
*n”);printf(“
*
5.增加仓库信息
*n”);
printf(“
*
6.显示全部记录
*n”);
printf(“
*
7.按仓库名称排序
*n”);
printf(“
*
8.按仓库面积排序
*n”);
printf(“
*
9.备份
*n”);printf(“
*
0.恢复
*n”);printf(“
*
10.退出
*n”);
printf(“
*********************************************************************n”);do {
printf(“n输入您想要进行的操作选项键(0-10):”);
if(scanf(“%d”,&c)!=1)
{
while(getchar()!='n')
continue;
} }
while(c<0||c>10);return c;}
int Input(Cangku t[]){ int i,n;
system(“cls”);
printf(“n请输入要输入的仓库数目:n”);
scanf(“%d”,&n);
printf(“开始输入仓库信息:n”);
for(i=0;i { system(“cls”); printf(“n第%d个仓库的编号:”,i+1); scanf(“%d”,&t[i].num); printf(“第%d个仓库的名称:”,i+1); scanf(“%s”,t[i].name); printf(“第%d个仓库的面积:”,i+1); scanf(“%f”,&t[i].square); printf(“第%d个仓库的说明:”,i+1); scanf(“%s”,t[i].introdution);} return(n);} void List(Cangku t[],int n){ int i; printf(“ *********************************************************************n”); printf(“ ** 编号 名称 面积 说明n”); printf(“ -------n”);for(i=0;i printf(“%17d%13s%20f%14sn”,t[i].num,t[i].name,t[i].square,t[i].introdution);} printf(“ *********************************************************************n”); printf(“n”);getchar();} void SearchOnName(Cangku t[],int n){ char s[20]; int i,flag=0; system(“cls”); printf(“请输入要查找的仓库名称:n”); scanf(“%s”,s); for(i=0;i { if(strcmp(s,t[i].name)==0) { flag=1; system(“cls”); printf(“nn要查找的仓库信息如下:n”); printf(“n”); printf(“ *********************************************************************n”); printf(“ ** 编号 名称 面积 说明n”); printf(“ -------n”);{ printf(“%17d%13s%20f%14sn”,t[i].num,t[i].name,t[i].square,t[i].introdution);} printf(“ *********************************************************************n”); printf(“n”); } } if(flag==0) printf(“要查找的仓库不存在!n”);getchar();} int DeleteRecord(Cangku t[],int n){ char s[20]; char ch; int i,j,flag=0; system(“cls”); printf(“请输入要删除的仓库名称n”); scanf(“%s”,s); for(i=0;i if(strcmp(s,t[i].name)==0) { flag=1; system(“cls”); printf(“nn要删除的仓库信息如下:n”); printf(“n”); printf(“ *********************************************************************n”); printf(“ ** 编号 名称 面积 说明n”); printf(“ -------n”);{ printf(“%17d%13s%20f%14sn”,t[i].num,t[i].name,t[i].square,t[i].introdution);} printf(“ *********************************************************************n”); printf(“n”); printf(“确定删除仓库信息吗?(Y/N)n”); ch=getchar(); ch=getchar(); if(ch=='Y'||ch=='y') { for(j=i;j t[j]=t[j+1]; n--; i--; printf(“删除成功.n”); } } } if(flag==0) printf(“要删除的仓库不存在!n”); getchar(); return n;} int AlterRecord(Cangku t[],int n){ int i,flag=0; char s[20],ch; system(“cls”); printf(“请输入要修改的仓库名称n”); scanf(“%s”,s); for(i=0;i { if(strcmp(s,t[i].name)==0) { flag=1; system(“cls”); printf(“nn要修改的仓库信息如下:n”); printf(“n”); printf(“ *********************************************************************n”); printf(“ ** 编号 名称 面积 说明n”); printf(“ -------n”); { printf(“%17d%13s%20f%14sn”,t[i].num,t[i].name,t[i].square,t[i].introdution); } printf(“ *********************************************************************n”); printf(“n”); printf(“确定修改仓库信息吗?(Y/N)n”); ch=getchar(); ch=getchar(); if(ch=='y'||ch=='Y') { system(“cls”); printf(“请输入修改后的信息:n”); printf(“请输入仓库新的名称:”); scanf(“%s”,t[i].name); printf(“请输入%s仓库新的编号:”,t[i].name); scanf(“%d”,&t[i].num); printf(“请输入%s仓库新的面积:”,t[i].name); scanf(“%f”,&t[i].square); printf(“请输入%s仓库新的说明:”,t[i].name); scanf(“%s”,t[i].introdution); } } } if(flag==0) printf(“要修改的仓库不存在!n”); getchar(); return n;} int AddRecord(Cangku t[],int n){ int i,m; system(“cls”); printf(“n请输入再增加的记录数:n”); scanf(“%d”,&m); printf(“开始追加记录n”); for(i=n;i { system(“cls”); printf(“n第%d个仓库的编号:”,i+1); scanf(“%d”,&t[i].num); printf(“第%d个仓库的名称:”,i+1); scanf(“%s”,t[i].name); printf(“第%d个仓库的面积:”,i+1); scanf(“%f”,&t[i].square); printf(“第%d个仓库的说明:”,i+1); scanf(“%s”,t[i].introdution); } return(n+m);} void SortOnName(Cangku t[],int n){ int i,j; struct cangku temp; for(j=1;j for(i=0;i if((strcmp(t[i].name,t[i+1].name))>0) { temp=t[i]; t[i]=t[i+1]; t[i+1]=temp; } printf(“排序成功!!n”); printf(“排序后仓库信息列表如下:n”); List(t,n);} void SortOnSquare(Cangku t[],int n){ int i,j; struct cangku temp; for(j=1;j for(i=0;i if(t[i].square { temp=t[i]; t[i]=t[i+1]; t[i+1]=temp; } printf(“排序成功!!n”); printf(“排序后仓库信息列表如下:n”); List(t,n);} void SaveRecord(Cangku t[],int n){ int i; FILE *fp; if((fp=fopen(“record.txt”,“w”))==NULL) { printf(“不能打开文件!n”); exit(1);} for(i=0;i { fwrite(&t[i],sizeof(struct cangku),1,fp); } fclose(fp);} int LoadRecord(Cangku t[]){ int n=0; FILE *fp; if((fp=fopen(“record.txt”,“a+”))==NULL) { printf(“不能打开文件!n”); exit(1);} while(fread(&t[n],sizeof(struct cangku),1,fp))n++; fclose(fp); printf(“从文件中成功读出记录!!n”); return n;} int LoadRecord1(Cangku t[]){ int n=0; FILE *fp; if((fp=fopen(“bkrecord.txt”,“a+”))==NULL) { printf(“不能打开文件!n”); exit(1);} while(fread(&t[n],sizeof(struct cangku),1,fp))n++; fclose(fp); printf(“从文件中成功读出记录!!n”); return n;} void Save(Cangku t[],int n){ int i; FILE *fp; if((fp=fopen(“bkrecord.txt”,“w”))==NULL) { printf(“不能打开文件!n”); exit(1);} for(i=0;i { fwrite(&t[i],sizeof(struct cangku),1,fp); } fclose(fp); printf(“备份成功.n”); getchar();} void Load1(Cangku t[]){ int n=0; FILE *fp; if((fp=fopen(“bkrecord.txt”,“a+”))==NULL) { printf(“不能打开文件!n”); exit(1); } while (fread(&t[n],sizeof(struct cangku),1,fp))n++; fclose(fp); getchar();} void Load(Cangku t[],int n){ int i; FILE *fp; if((fp=fopen(“record.txt”,“w”))==NULL) { printf(“不能打开文件!n”); exit(1);} for(i=0;i { fwrite(&t[i],sizeof(struct cangku),1,fp); } fclose(fp); printf(“恢复成功.n”);}1 仓库管理系统调研报告 前言 仓库管理是与我们日常生活息息相关的问题,随着改革开放的不断深入,经济飞速的发展,企业要想生存、发展,要想在激烈的市场竞争中立于不败之地,没有现代化的管理是万万不行的,仓库管理的全面自动化、信息化则是其中极其重要的部分。以超级市场为例,走进超级市场,琳琅满目,各式各样的商品应有尽有,顾客大都满载而归,买到称心如意的商品。顾客得到极大方便的同时,商家在管理这些商品上却花费了大量的心血。 在本系统的设计过程中,为了克服这些困难,满足计算机管理工作的需要,我们采取了下面的一些原则 ●统一各种原始单据的格式,统一报表的格式。 ●删除不必要的管理冗余,实现管理规范化、科学化。 ●程序代码标准化,软件统一化,确保软件的可维护性和实用性。 ●界面尽量简单化,做到实用、方便,尽量满足企业中不同层次员工的需要。●尽量做到物资分类和管理明确,使供应商、客户和用户之间往来更方便、快捷。在具体设计中,主要实现入库、出库、采购、销售、基本信息、单据几大功能。解决思路:利用便利的网络资源和查看相关书籍等办法解决各模块实现的具体功能分配等操作。 出租仓库:主要针对客户的关系,实现预定仓库的基本操作。入库/出库:主要针对企业物资进出,实现采购和销售等操作。基本信息:介绍产品、供应商及客户的相应资料。单据:实现业务上各种单据的对应操作。 本系统主要步骤有功能需求分析,系统设计,数据库设计,程序实现等。 1.系统范围 系统开发的总体任务是实现企业物资管理的系统化、规范化和自动化,从而达到提高企业管理效率的目的。 第一个版本的范围 ◇业务处理 |-出库登记 |-入库登记 |-其他库存变动 |-库存盘点 |-仓库调货 |-货品拆分与组装 ◇基本资料 |-货品类别 |-货品资料 |-库存变动类型 |-领用人资料 |-供货单资料 |-仓库资料 ◇系统维护 |-系统设置 |-密码修改 |-操作员管理 |-数据备份与恢复 |-打印单修改 |-数据清理 ◇统计报表 |-当前库存报表 |-货物入库报表 |-货物出库报表 2.功能简介 基础数据:商品信息,供应商,客户,商品分类,仓库,银行等基本信息的设置。 入库管理:进行货品采购入库,采购退货,生产入库,生产退料,进货单据和退货单据查询,供应商往来帐务,供应商付款。 出库管理:销售出货,客户退货,生产领料,销售单据和客户退货查询,客户往来帐务,客户付款。 库存管理:包括库存之间货品调拔,库存报损、报溢,库存盘点功能。 拆分组装:整进散出,或是整出散进等可以自由的拆分组合产品。 统计报表:完整的统计查询功能,每张单据每次业务金额都可以清楚的反映。 权限管理:可添加删除系统操作员帐号,强大的权限控制,可以设置某用户对某窗口某个按钮的权限。 打印设计:可对系统内每个单据进行打印的格式设计,可以导出,导入,每个操作员可设计自己的打印格式。 界面设计:系统窗口界面名称可以自定义设计,表格的显示顺序,宽度,是否显示等,每个操作员可以设计自己的界面。 系统设置:可以灵活设置系统小数位数,可选0-6位,让帐务更精确,可对以往数据进行选择性的清除,以便系统初始化。 3.数据识别 3.1人员基本情况数据说明 3.1.1系统管理员数据说明 使用者:系统管理员 来源:系统管理员在本系统中注册 去向:保存在数据库中 数据属性:编号、姓名、性别、出生日期、固定电话、移动电话、其他 3.1.2仓库管理员数据说明 使用者:仓库管理员 来源:仓库管理员职工档案 去向:保存在数据库的仓库管理员表中中 数据属性:编号、姓名、性别、出生日期、所在部门编号、固定电话、移动电话、其他。 3.1.3验收员数据说明 使用者:验收员 来源:采购员职工档案 去向:保存在数据库的验收员表中 数据属性:编号、姓名、性别、出生日期、所在部门编号、所属小组编号、固定电话、移动电话、其他。 3.1.4经理数据说明 使用者:经理 来源:经理职工档案 去向:保存在数据库的经理表中 数据属性:编号、姓名、性别、出生日期、固定电话、移动电话、其他 3.1.5 领料员数据说明 使用者:仓库管理员、经理 来源:领料员职工档案 去向:保存在数据库的领料员表中 数据属性:编号、姓名、性别、出生日期、固定电话、移动电话、其他 3.2商品数据说明 使用者:仓库管理员、经理 来源:仓库管理员输入 去向:保存在数据库中 数据属性:商品编号、名称、价格、储存位置、数量、其他 3.3 基本业务数据说明 3.3.1 验收商品数据说明 使用者:仓库管理员、经理 来源:采购计划、数据库中仓库管理员表、商品表和经理表 去向:入库单或直拨单、保存在数据库的验收商品表和商品表中 数据属性:商品编号、仓库管理员编号、经理编号 3.3.2 商品入库数据说明 使用者:仓库管理员、经理 来源:运货单、检验合格单 去向:收料单、保存在数据库的商品入库表中 数据属性:商品编号、仓库管理员、经理编号、是否合格 3.3.3 保管商品数据说明 使用者:仓库管理员、经理 来源:商品保管表 去向:保存在数据库中的保管商品表中 数据属性:商品编号、仓库管理员编号、堆放是否整齐、堆放是否美观、是否按类堆放、进货日期 3.3.4 商品出库数据说明 使用者:仓库管理员、经理 来源:领料单 去向:发货单、保存在数据库的商品出库表中 数据属性:商品编号、仓库管理员、领料员编号、出库日期 附录 由于我们只是网上搜索调查的形式,所以没有统计初详细的数据,该报告只是反映了调查中出现的显著问题,故不能作为有力的论据。 组员:冉明轩,万朋鑫,陈强,周梦秋,王冰,江志华第五篇:仓库管理系统调研报告