软件工程仓库管理系统
仓库管理系统总体设计报告

仓库管理系统总体设计报告《软件课程设计》课程作品总体设计报告项目名称物流仓库管理系统项目小组组长林伟龙 354121项目小组成员潘泽文 354115吴宇翔 354148学院名称信息科学与技术学院专业名称软件工程所在年级级4月岭南师范学院1、可行性分析2、需求分析(1)基本信息管理:为仓库主管提供实现对客户信息、供货商信息、库房信息、员工信息的管理维护,包括对信息查询、添加、修改和删除操作。
(2)库存信息管理:为仓库管理员提供实现对短缺货物的报警、成品、部件、礼品、不良物品、移动物品的管理维护,包括对信息查询、添加、修改和删除等操作。
仓库主管对此模块只有查看功能。
(3)出库信息管理:为仓库员工提供查询、添加、修改和删除出库单(包括:产品出库单、部件出库单、礼品出库单)的操作,其中添加和删除操作后的出库单要交由仓库主管审核。
(4)入库信息管理:为仓库员工提供查询、添加、入库单和执行入库(包括:部件入库单、产品入库单、礼品入库单)的操作、其中添加后的入库单要交由仓库主管审核。
(5)库检信息管理:为库检员提供对入库货检、出库货检、在库货检信息管理维护,包括对信息查询、添加、修改和删除等操作。
(6)库房设备检测信息:为库检员提供对库房设备检信息管理维护,包括查询、添加、修改和删除等操作。
(7)报表信息管理:为仓库员工、仓库主管提供实现对报表信息的管理维护,包括对报表信息查询、打印、导出等操作。
(8)个人设置:为仓库管理员、仓库员工、库检员提供修改登录密码。
(9)单据审批:为仓库管理员提供出入库单的审批(包括退货商品、部件的出入库)。
3、数据流分析。
仓库管理系统《C++程序设计》课程设计

2.1总体思路
2.2流程图
库存管理系统的总层次图
物品信息管理层次图
2.3实现思路
首先,利用选择语句和循环语句的嵌套设计主程序,在主菜单中包含了对物品的处理,在主程序中调用各个实现程序;然后,输入物品的信息,在进行归类划分,利用类和编译预处理编写;最后,用全局变量记录添加物品的数量,利用类的实现进行物品的添加,物品的删除,查找,修改物品的信息,统计物品的数量。
根据当前的企业管理体制,一般的库存管理系统,总是根据所掌握的物资类别,相应分成几个模块来进行商品的出入库,库存盘点,以及对供销商的详细记录。为了加强关键物资、设备的管理,要定期掌握其储备,消耗情况,根据计划进行进货,使得各商品不会缺货,使物资设备的储备最佳。
因此有必要开发一套库存管理系统来提高企业工作效率, 而所使用的这套库存管理系统是企业生产经营管理活动中的核心,此系统必须可以用来控制合理的库存费用、适时适量的库存数量,使企业生产活动效率最大化。通过对这些情况的仔细调查,我们开发了下面的仓库库存管理系统。
cout<<"6.退出系统!"<<endl;
cout<<"*********************************************"<<endl;
cout<<"请输入你的选择:";
3.1功能模块划分
模块一:增加项目
按
任
意
键
返
回
此模块是为库存管理系统增加仓库的新商品信息。
运行界面如下:
模块二:显示全部项目
按
任
意
键
返
回
此模块是为仓库管理员提供仓库所有的商品的信息。
uml仓库管理系统课程设计

uml仓库管理系统课程设计一、课程目标知识目标:1. 理解UML基本概念,掌握UML图(用例图、类图、序列图等)的绘制方法;2. 学会运用UML图分析和设计仓库管理系统,理解系统各部分的相互关系;3. 掌握仓库管理系统的主要功能模块及其业务流程。
技能目标:1. 能够运用UML图工具进行系统分析和设计,提高解决实际问题的能力;2. 通过小组合作,培养团队协作能力和沟通技巧;3. 学会使用相关软件(如Visio、Rational Rose等)进行UML图的绘制。
情感态度价值观目标:1. 培养学生对软件工程和UML建模的兴趣,激发学习积极性;2. 增强学生的系统思维和逻辑思维能力,提高分析问题和解决问题的能力;3. 培养学生认真负责、严谨细致的工作态度,为将来从事软件工程相关工作奠定基础。
课程性质:本课程为计算机科学与技术专业或相关专业的选修课程,侧重于UML在仓库管理系统中的应用。
学生特点:学生具备一定的编程基础和软件工程知识,但可能对UML建模方法掌握不足。
教学要求:结合学生特点,注重理论与实践相结合,采用案例教学法和任务驱动法,引导学生主动参与课堂讨论和实践活动。
通过课程学习,使学生能够达到上述课程目标,为实际工作中的应用打下坚实基础。
二、教学内容1. UML基本概念及图示方法:介绍UML的发展历程、基本组成元素,重点讲解用例图、类图、序列图等常用UML图的绘制方法及其在实际项目中的应用。
关联教材章节:第1章 UML基础2. 仓库管理系统需求分析:分析仓库管理系统的业务需求,运用UML用例图描述系统功能模块。
关联教材章节:第2章 系统分析与设计3. 仓库管理系统类图设计:基于需求分析,利用UML类图描述系统中的类及其关系,包括属性、方法和继承、关联、聚合等关系。
关联教材章节:第3章 类图与对象图4. 仓库管理系统序列图设计:通过UML序列图展示系统业务流程中各个对象之间的交互过程。
关联教材章节:第4章 序列图与时序图5. UML图绘制工具的使用:介绍Visio、Rational Rose等UML图绘制工具的基本操作,指导学生完成仓库管理系统UML图的绘制。
软件工程课程设计仓库管理系统

软件工程课程设计仓库管理系统一、引言为了更有效地管理和调度仓库中的货物,提高工作效率和减少出错率,我们为仓库设计了一套管理系统。
本文将详细介绍和说明我们的软件工程课程设计——仓库管理系统的设计和实现。
二、需求分析本仓库管理系统旨在实现以下功能:1.货物管理:包括货物入库、出库、调拨、盘点等功能,同时可根据货物种类、所在位置等进行分类查找。
2.人员管理:包括员工档案管理、权限设置、岗位分配等功能。
3.数据统计:当仓库管理系统大规模的运转时,系统将产生大量的数据,如货物的进出库等。
通过系统的统计功能,可以清晰地查看货物的进销存情况,为仓库管理者提供参考依据。
4.报表管理:系统需要支持报表的管理,如货物出库单、汇总表、调拨单等。
方便用户高效地查看和分享相关数据。
三、系统设计系统整体采用B/S模式,前端使用Bootstrap+JQuery框架,后端使用JavaEE+MySQL。
在设计系统时,将系统的模块按照不同的职能划分如下:1.货物管理模块该模块实现货物的入库、出库、调拨等功能。
货物的管理主要通过管理货物代码、名称、类型、数量、位置等信息来实现。
货物的类型和状态是可以自由定义和修改的,方便用户自行根据不同需求来处理相关数据。
在该模块中使用了jQuery的datatable插件实现了货物展示的自适应、排序、筛选、分页等功能。
2.人员管理模块该模块实现员工的档案管理、权限管理、岗位分配等功能。
员工档案包括相关信息:姓名、性别、出生日期、籍贯、现住址、联系方式、加入时间、身份证号等。
权限管理包括对员工访问后台管理的权限进行设置和修改。
岗位分配将各员工的岗位分配信息做出记录,便于以后的管理。
3.数据统计模块该模块主要实现对货物的统计与分析,包括货物数量的统计、不同类型货物数量的对比、货物运动情况(入库、出库、调拨、盘点)的统计等。
数据统计还可以辅助仓库管理员,对仓库货物进行全面、及时的掌控。
同时该模块的数据统计能力助于仓库管理人员了解货物分布、总数量和货物流动情况等信息,便于制定合理的调度和管理策略。
uml仓库管理系统课程设计

uml仓库 管理系统课程设计一、课程目标知识目标:1. 学生能理解UML的基本概念,掌握UML图的使用方法。
2. 学生能掌握仓库管理系统的功能需求、业务流程和数据流程。
3. 学生能运用UML图描述仓库管理系统的静态结构和动态行为。
技能目标:1. 学生能运用UML工具绘制类图、用例图、序列图等,对仓库管理系统进行建模。
2. 学生能通过小组合作,分析和解决实际项目问题,提高团队协作能力。
3. 学生能运用所学知识,对仓库管理系统进行优化和改进。
情感态度价值观目标:1. 学生通过课程学习,培养对软件工程和系统分析的兴趣,提高学习积极性。
2. 学生能够认识到UML图在软件开发中的重要性,增强对软件工程规范的认识。
3. 学生在课程实践中,培养认真负责、严谨细致的工作态度,提高沟通协作能力。
课程性质:本课程为实践性较强的课程设计,旨在让学生运用所学知识,结合实际项目,进行UML建模和系统分析。
学生特点:学生处于高年级阶段,已具备一定的编程基础和软件工程知识,具备独立思考和解决问题的能力。
教学要求:教师需引导学生运用UML工具进行系统建模,注重培养学生的实际操作能力和团队协作精神,提高学生对实际项目的分析和解决能力。
通过课程目标的实现,为学生的未来职业发展奠定基础。
二、教学内容1. UML基本知识回顾:包括UML的基本概念、类图、用例图、序列图等。
教材章节:第一章 UML基本概念;第二章 类图与对象图;第三章 用例图与序列图。
2. 仓库管理系统需求分析:学习如何进行系统功能需求、业务流程和数据流程分析。
教材章节:第四章 系统分析与设计;第六章 数据流程图。
3. UML建模实践:a. 运用UML工具绘制类图、用例图、序列图等。
b. 根据仓库管理系统需求,进行系统建模。
教材章节:第二章 类图与对象图;第三章 用例图与序列图;第五章 UML工具使用。
4. 仓库管理系统优化与改进:结合实际情况,对系统进行优化和改进。
教材章节:第七章 系统优化与改进。
软件工程仓库管理系统课程设计

软件工程仓库管理系统课程设计一、系统需求分析1.1 问题陈述软件工程仓库管理系统是为了解决日常的仓库管理问题而设计的,旨在提高仓库管理的效率和准确性。
1.2 功能需求软件工程仓库管理系统需要实现以下功能:•仓库管理:包括仓库的入库、出库、盘点等操作。
•物品管理:包括物品的添加、删除、修改等操作。
•库存管理:包括库存的查询、调整等操作。
•报表生成:根据需要生成各类仓库和物品相关的报表。
1.3 非功能需求软件工程仓库管理系统需要具备以下非功能需求:•界面友好:系统界面需要简洁明了,操作方便。
•系统稳定性:系统需要具备良好的稳定性和可靠性,避免出现系统崩溃和数据丢失等问题。
•数据安全性:系统需要采取有效的措施保护数据的安全性,防止未经授权的访问和篡改。
•性能要求:系统需要具备较高的性能,能够在大量数据和用户的情况下保持正常运行。
二、系统设计2.1 结构设计软件工程仓库管理系统采用三层架构设计,分为表现层、业务逻辑层和数据访问层。
•表现层:负责与用户进行交互,接收用户输入并显示结果。
•业务逻辑层:负责处理用户的请求,进行业务逻辑判断和处理。
•数据访问层:负责与数据库进行交互,读取和存储数据。
2.2 数据库设计软件工程仓库管理系统的数据库需要包含以下表格:•仓库表:存储仓库的基本信息,包括仓库编号、仓库名称、仓库地址等。
•物品表:存储物品的基本信息,包括物品编号、物品名称、物品规格等。
•库存表:存储仓库中物品的库存信息,包括仓库编号、物品编号、库存数量等。
2.3 界面设计软件工程仓库管理系统的界面需要简洁明了,采用统一的风格和布局。
主要包括以下界面:•登录界面:用于用户登录系统,输入用户名和密码进行身份验证。
•仓库管理界面:用于管理仓库的操作,包括入库、出库、盘点等。
•物品管理界面:用于管理物品的操作,包括添加、删除、修改等。
•库存查询界面:用于查询库存的操作,包括按仓库和物品查询。
•报表生成界面:用于生成各类仓库和物品相关的报表。
仓库管理系统软件结构设计
仓库管理系统软件结构设计仓库管理系统是一个用于管理仓库内物料、库存和订单等信息的软件系统,其结构设计需要考虑系统的可扩展性、可维护性、可靠性和性能等方面。
本文将探讨一个典型的仓库管理系统的软件结构设计方案。
首先,该仓库管理系统可以采用分层架构,将系统划分为多个不同的层次,每个层次负责不同的功能。
常见的分层架构包括表示层、业务逻辑层和数据访问层。
1. 表示层:表示层负责与用户交互,提供用户界面和显示系统的输出结果。
建议采用Web界面,使得用户可以通过浏览器访问系统。
前端开发可以使用HTML、CSS和JavaScript等技术,可以利用现有的前端框架(如React或Angular)简化开发。
2. 业务逻辑层:业务逻辑层处理系统的业务逻辑,包括用户输入的验证、业务计算和数据处理等。
该层可以包含多个服务,每个服务负责不同的业务功能。
例如,可以有一个库存服务负责管理物料的入库和出库,一个订单服务负责处理订单的创建和处理等。
在业务逻辑层中可以使用面向对象的设计模式,例如使用领域驱动设计(DDD)将物料、库存和订单等领域对象抽象成实体类和值对象,并在这些对象上定义相应的业务操作。
这样可以提高系统的可维护性和可扩展性。
3. 数据访问层:数据访问层用于与数据库进行交互,实现数据的增删改查等功能。
可以使用关系数据库(如MySQL)存储系统的数据。
可以使用ORM框架(如Hibernate或Entity Framework)简化数据库访问操作。
此外,还可以引入缓存层来提高系统的性能。
缓存层可以使用分布式缓存(如Redis)来缓存频繁访问的数据,以减少数据库的访问压力。
在结构设计方面,可以采用面向对象的设计原则来进行系统设计,例如单一职责原则、开闭原则和依赖倒置原则等。
同时,可以使用设计模式(如工厂模式、观察者模式和策略模式)来解决系统中的常见设计问题。
总之,仓库管理系统的软件结构设计需要综合考虑系统的可扩展性、可维护性、可靠性和性能等方面。
软件工程大作业:仓库管理系统
大作业组员: xxxxxxxxxx目录1整体功能 (4)1.1整体功能用例图 (4)1.2主要功能用例叙述 (5)2用户登录注册功能 (6)2.1用户登录注册功能用例图, (6)2.2用户登录注册功能类图 (6)2.3用户登录注册功能时序 (7)3用户在线浏览商品功能 (7)3.1用户在线浏览商品用例图: (7)3.2用户在线浏览商品类图 (8)3.3用户在线浏览商品时序图 (8)4仓库科发货功能 (9)4.1仓库科发货功能用例图 (9)4.3仓库科发货功能时序图 (10)5经理课管理账目功能 (10)5.1经理课管理账目功能用例图 (10)5.2经理课管理账目功能类图 (11)5.3经理课管理账目功能时序图 (11)6营业课查看订单功能 (12)6.1营业课查看订单功能用例图 (12)6.2营业课查看订单功能类图 (13)6.3营业课查看订单功能时序图 (13)7营业科接收订单 (14)7.1营业科接收订单用例图 (14)7.2营业科接收订单类图 (15)7.3营业科接收订单时序图 (15)8仓库购货功能 (16)8.1仓库购货功能用例图 (16)8.2仓库购货功能类图 (16)8.3仓库购货功能时序图 (17)9用户在线购买商品功能 (17)9.1用户在线购买商品功能用例图 (17)9.2用户在线购买商品功能类图 (18)9.3用户在线购买商品功能时序图 (18)10用户检查订单/退货功能 (19)10.1用户检查订单/退货功能用例图 (19)10.2用户检查订单/退货功能类图 (19)10.3用户检查订单/退货功能时序图 (20)11系统数据各表定义 (20)11.1管理员表 (20)11.2顾客表 (20)11.3订单表 (21)11.4供应商表 (21)11.5催款单表 (21)1整体功能1.1整体功能用例图主要参与者:客户、系统管理员、营业科、仓库科、经理科主要用例: 注册登录、客户在线浏览、客户在线购买、付款营业科查看订单并库存确认、营业科接受订单、仓库科取货发货、客户确认收货、客户检查订单、经理科管理账务、仓库科联系厂家1.2主要功能用例叙述客户注册账户, 填写个人信息。
软件工程仓库管理系统软件测试
实验五软件测试实验目的1.掌握单元测试。
2.掌握白盒技术及用例设计。
3.掌握黑盒技术及用例设计。
4.掌握集成、综合测试。
5.发布测试。
实验内容1.使用JUnit/CUnit/NUnit完成单元测试。
2.设计白盒测试用例。
3.对系统某项功能进行集成、综合测试。
4.安装软件。
5.发布测试。
6.参考睿亚训实验平台中《软件测试》的相关案例。
实验五成绩:黑白盒测试技术设计测试用例1.1测试范围5.1.1 测试目的:测试是为了发现程序中或处理流程中的错误而执行的过程。
5.1.2 预期结果:系统运行正常,与用户交互流畅,数据处理正确并能与数据库正确相连;5.1.3 测试步骤:单元测试、集成测试、确认测试和系统测试。
1.2测试计划整个系统分为两个模块:超级管理员模块和普通管理员模块,每个模块都要先独立测试,再集合到一起测试。
注意模块之间的连接。
每个模块都要设计测试用例。
先进行白盒测试,再进行黑盒测试。
1.2.1测试阶段(1)第1阶段:对每个模块进行单元测试,包括超级管理员管理管理员信息模块、管理员管理入库模块描述、管理员管理出库模块描述、管理员管理库存查询模块描述,对设计的测试用例进行测试,查看是否与预期的结果相同。
(2)第2阶段:进行集成测试,测试模块之间的调用是否正确。
(3)第3阶段:进行确认测试,测试各个子系统是否完成了需求说明书中的功能。
(4)第4阶段:进行系统测试,测试整个系统的功能、性能是否与预期效果相同。
1.2.2测试进度:2测试项目说明2.1用户登录模块测试(1)测试目的:测试系统的登录是否正确、合法,对于合法的用户是否能够转入正确的界面,对于非法的用户能否能提示错误。
(2)测试方法和测试软件:分别使用超级管理员信息表和普通管理员信息表中合法用户信息登录系统,再以非合法信息登录系统,用白盒测试中的逻辑覆盖法进行测试。
(3)测试用例(1)测试目的:测试超级管理员的对管理员信息的基本操作是否正确、合法。
软件工程(仓库管理)需求分析说明书
三、需求规格说明书1.引言 (1)1.1编写目的 (1)1.2项目背景 (2)1。
3定义 (2)1.4参考资料 (2)2.任务概述 (2)2。
1目标 (2)2。
2运行环境 (3)2。
3条件与限制 (3)3.数据描述 (4)3。
1静态数据 (4)3.2动态数据 (4)3.3数据库介绍 (4)3。
4数据词典 (4)3。
5数据采集 (9)4.功能需求 (10)4。
1功能划分 (16)4。
2功能描述 (17)5.性能需求 (18)5。
1数据精确度 (18)5。
2时间特性 (18)5.3适应性 (18)6.运行需求 (19)6.1用户界面 (19)6。
2硬件接口 (19)6.3软件接口 (19)6.4故障处理 (21)7.其它需求 (22)1.引言1.1编写目的为明确软件需求、安排项目规划与进度、组织软件开发与测试,撰写本文档。
为了开发出真正满足用户需求的软件产品,首先必须了解用户的需求。
本文档是根据用户所提供的需求和分析员共同探讨后拟定。
在这里将详细介绍用户所需要实现的功能及实现该功能的硬件软件的基本需求,以避免在软件开发后交付用户使用中出现不必要的麻烦。
同时在这里将详细的介绍本软件的模块调用等等相关问题。
1.2项目背景在步入信息化、数字化的今天,仓库是我们生活工作中不可缺少的一部分,仓库管理如何管理,让利益最大化。
在如今用软件控制所有流程,可以大大的提高仓库的工作效率,有效地节省物力人力资源.a.项目委托单位:XXX仓库存储基地;开发单位:内蒙古工业大学信息工程学院软件09—1班;主管部门:计算机系领导b.软件名称:仓库信息管理系统1.3定义【列出文当中所用到的专门术语的定义和缩写词的原文.】实体:客观世界中存在的且可互相区别的事物.联系:客观事物中的彼此之间的关系。
属性:实体或者联系所具有的性质.管理员:指日常管理维护本软件的管理人员或仓库主管单位的领导。
1。
4参考资料[1]李香敏《SQL Server 2000 编程员指南》第1版.北京.希望电子出版社[2]张海藩《软件工程导论》第五版。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件设计书仓库管理系统系别:应用数学系专业:信息与计算科学班级:1204学号:**********姓名:***第一章可行性研究报告1.1引言1.1.1目的本软件是用来有效的管理超市仓库货物数量及种类,以方便超市工作人员可以全面的了解超市仓库库存货物数量和种类来方便高效的管理超市仓库。
该项目可行性研究报告也是对超市仓库管理系统的全面考虑,是项目分析员进行进一步工作的前提,是软件开发人员成功的开发项目的前提.此分析研究报告可以使软件开发团体尽可能早的估计研制课题的可行性,可以在定义阶段较早的认识到系统方案的缺陷,可以节省时间、财力和精力,并且避免了专业方面的困难.及早地预测项目的可行性,在可行的前提下获得最好的实施方案。
1.1.2背景随着社会的不断发展,物质的不断丰富,为了满足人们的需求,超市的货物也是越来越丰富。
为了方便超市管理人员及时有效的了解仓库情况,更好的管理超市货物,提高管理效率,从而提出本软件。
1.2.要求和目标1.2.1基本要求·功能:具有一定权限的管理人员可以对货物的售出和补充,以及新增加的商品和种类及时的进行修改,同时还具有缺货提示功能。
·性能:详实有效的罗列出商品货物的数量和种类,来方便超市管理人员。
·输入:具有一定权限的管理人员对货物数量种类进行修改。
·输出:查询结果。
系统功能模块图1-1,图1-1系统功能模块图录入货物信息、更新查看管理人员功能模块及流图的简要描述:首先超市管理人员需要登录系统,如果登陆成功则以进入系统进行操作,否则会提示错误,要求重新登录。
登录成功后,管理人员可以根据自己的需要进行操作。
当添加货物种类,更改货物数量,都需要管理人员登录系统后才能操作。
当货物数量较少时,系统会自动提示管理人员要进货了。
本系统还可以管理管理人员的登录,即可以对有权限操作该系统的人员进行增、删、改功能。
·在安全与保密方面的要求:对于有权限的人员才可以进行对系统的操作。
1.2.2开发目标①方便使用者对仓库货物的查询、删除、更新,减少人力和设备的需求。
②方便了解进出仓库货物情况。
③及时为用户发出缺货提示。
④提高工作的效率。
⑤降低仓库管理及维护费用。
1.2.3具备条件①开发条件:计算机实验室所提供的环境即可。
②开发时间:开发的全过程必须在3个月内完成。
③开发所需的经费:无。
④运行的系统:Window 7以上版本即可⑤数据库:sqlserver 2000或者sqlsever 20051.3.社会因素方面的可行性1.3.1法律方面的可行性该系统的开发和研制,将不会侵犯他人、集体和国家的利益,不会违犯国家政策和法律。
1.3.2使用方面的可行性该系统操做简单,不需要专业培训,一般人员即可胜任。
1.4.结论综上所述,该项目应立即开始进行研发。
从人力资源优化角度来说,可以充分利用人力资源。
从经济利益的角度来看,即时开发完成即可用,可以立即赢利。
但系统仍旧有些不足,例如修改方面还需人工手动修改数量等。
在系统的交付使用中如有不足还望指出,以便改进。
第二章仓库管理系统需求分析本系统的主要需求者是超市后台管理员。
2.1.本项目概述本项目所开发的超市仓库管理系统完成超市管理员对货物的管理,减少数据漏掉的情况,更方便管理人员的浏览和操作,节省了人力物力。
2.2.系统一般性描述由于本系统的数据还算不上大型的。
所以数据库服务器与web服务器共用同一台计算机。
系统中的货物信息和管理员信息都存放在sqlserver 数据库中。
2.2.1系统的用例图‘图2-1系统用例图’,用例图说明:图2-1系统用例图本系统主要只针对具有权限的理员进行操作,首先管理员必须具有正确的账号和密码才能进入系统进行操作。
进入系统后的主要功能模块如下:添加功能:可以添加货物的具体信息同时还可以增加管理员。
修改功能:可以对货物的所有信息进行修改。
删除功能:删除超市已经不存在的货物的信息同时还可以删除不存在的管理员。
查询功能:可根据货物的品牌或者名称对货物进行查询,也可以根据管理员账号或者管理员用户名对用户进行查询。
进货出货功能:可以对货物的数量进行修改。
缺货提示:当货物的数量小于50件时在主页面会为管理员进行提示已缺货。
更改密码功能:当某个管理员登录系统后可以更改自己的密码。
2.2.2系统的用类‘图2-2类图’,类图说明:图2-2类图类的详细说明:商品类:属性:商品编号:商品编号是用来确定商品唯一性的。
商品数量:说明商品的库存量。
商品名称:说明商品的名称。
方法:登录系统:用于验证管理身份。
增加商品:用于增加系统内没有的商品信息。
删除商品:仓库没有的商品信息。
修改商品:用于修改商品的具体信息。
进货:用于只对要增加货物量的商品进行操作。
出货:用于只对要减少货物量的商品进行操作。
缺货提示:当商品数量低于10后会在主页上提示缺货。
管理员类:属性:管理员ID:该属性是自动增长型,具有唯一性。
管理员账号:用于登录时的账号。
管理员名称:该属性和账号一起可以识别唯一的管理员。
管理员密码:用于登录时和账号一起用于身份验证。
方法:增加管理员:可以赋予没有权限的人管理权限。
删除管理员:可以删除不存在的管理员。
2.2.数据流图对用户需求进行分析,画出系统的数据流图,如图3.1——图3.2所示。
图 3.1 系统的顶层数据流图图 3.2 系统的0层数据流图图3.3 仓库管理系统的1层DFD——“货物入库管理”加工的分解图2.2.5仓库管理系统的E-R图根据系统数据流程图,我们可以列出以下系统所需的数据项:员工(员工号,姓名,密码,证件号,员工类型,是否员工)商品(商品编号,商品名称,商品数量)仓库(商品编号,商品名称,库存量)入库(入库编号,商品编号,商品名称,入库数量,入库人,入库时间)出库(出库编号,商品编号,商品名称,出库数量,出库人,出库时间)仓库管理系统的E-R模型如图3.3-图所示。
通过对系统结构化的分析得到本系统有四大模块:一、系统管理:对用户的一些添加,删除,修改。
二、信息管理:对一些基本信息(商品,往来单位,仓库)的管理。
三、出入库管理:对出库入库的管理。
四、查询管理:对出库、入库单、库存信息的查询。
图3.3实体之间关系E-R图第三章设计说明书3.1 引言3.1.1 系统概要及其运行环境软件详细设计阶段是软件设计的重要阶段,本阶段的工作就是要对系统中的每个模块给出足够详细的过程性描述,因此也称为“过程设计”。
详细设计的根本目的就是确定应该怎样具体实现所需求的系统,也就是说经过这一阶段的设计,会得出对学生选课系统的精确描述。
其根本任务就是设计出程序的“蓝图” 3.1.2 系统的组成部分及其结构本系统分为四大模块,即用户管理模块、出库模块、入库模块、库存管理模块。
管理员模块可分为普通用户模块和管理员模块,库存管理模块包括查询模块和修改模块。
详细操作请见类图3.2 软件设计约束本系统采用Java 技术,基本上没有什么平台约束。
在数据库方面,需要创建本地数据源。
3.2.1 设计目标和原则本设计欲达到的目标:能够使用户简单快捷的完成商品出库和入库的功能及库存管理功能。
系统的性能达到高效,实用,易于维护。
3.2.2 设计约束(1)无论是普通用户还是管理员,都可以在本地访问该系统。
完成各自授权的活动和工作。
(2)该系统考虑性能、安全、可靠性、易用、可扩展和可维护。
(3)整个开发过程应满足软件需求分析的进度要求所规定的时间。
3.3 软件设计描述3.3.1 总体结构设计本系统由以下几个功能模块组成: 用户管理模块汇总:(1) 添加普通用户信息(仅管理员可以使用,可以添加用户到数据库中)(2) 管理普通用户信息(仅管理员可以使用,可以对普通用户进行修改删除等操作) 库存管理模块汇总(1) 查询入库信息(普通用户使用,对自己入库的商品进行查询操作) (2) 查询出库信息(普通用户使用,对所出库的商品进行相关操作) (3) 所有库存信息(对所有商品信息进行查询) 3.3.2 详细结构设计图3-1仓库管理系统顺序图3.4 系统界面设计描述当用户启动程序后真接显示主界面,在主界面中有‘用户管理’,‘商品入库’,‘商品出库’,‘库存管理’以及退出系统。
当用户在未登录的状态下执行任何操作时系统会自动判断是否已经登录,若用户还没有登录则显示登录界面,让用户进行登录。
若登录的帐号不存在则表示该用户还不是员工,故需要用户重新申请新的用户,新用户的类型为普通员工,当普通用户已经通过管理员审核,并且分配了相关的权限后就可以登录系统。
若用户是管理员则该用户可以对普通用户进行相关的修改和删除,而且还可以修改、查询、删除库存表及商品出入库表中的相关信息。
若用户是普通员工则只能进行商品的出入库及查询。
3.4.1 登录界面设计用户通过输入登录的账号和密码及类型系统进行验证图3-2用户登录界面3.4.2 商品出入库界面设计图3-3商品出入库界面设计3.4.3 库存界面设计图3-4库存界面设计3.5 数据库设计数据库名:StoreHouseDB用户表:Users 主键:员工号商品入库表:InStore 主键:入库编号商品出库表:OutStore 主键:出库编号库存表:StoreManage 主键:商品编号商品表:goods 主键:商品编号3.5.1 建表下面具体给出各个表列名属性员工号Varchar(13)员工姓名Varcahar(20)密码Varchar(16)证件号Varchar(18)员工类型Varchar(8)是否员工Varchar(2)表3-2 InStore列名属性入库编号int商品编号Varchar(20)商品名称Varchar(50)入库数量Int入库人Varchar(13)入库时间Datetime()列名属性出库编号Int表3-4 StoreManage第四章系统相关代码4.1登录界面(主要代码)public boolean isExistsEmply(String id){boolean flags=false;try{int count=0;String sql1="select 员工号 from Users where 员工号=?";PreparedStatement ps=conn.prepareStatement(sql1);ps.setString(1, (String)id);ResultSet result=ps.executeQuery();while(result.next()){count=result.getRow();}result.close();ps.close();if (count>0){this.UID=id;flags=true;getInfo(id);return flags;}else{error.errorDialog((String)id);}}catch(Exception e){e.printStackTrace();}return flags;}//根据‘工号’分别获取对应的的信息public void getInfo(String uid){try{String sql2="select 员工姓名,密码,员工类型,是否员工 from Users where 员工号=?";PreparedStatement pps=conn.prepareStatement(sql2);pps.setString(1,uid);ResultSet result=pps.executeQuery();while(result.next()){name=result.getString(1).toString().trim();password=result.getString(2).trim();employtype=result.getString(3).toString().trim();emplooy=result.getString(4).toString().trim();}result.close();pps.close();}catch(Exception e){e.printStackTrace();}}//对登录的'工号'进行密码验证public boolean login(String id,String pwd,String type){boolean isEmploy=false;try{if (id.equals(UID) && pwd.equals(password) && type.equals(employtype)){isEmploy=true;return isEmploy;}else{return isEmploy;}}catch(Exception e){e.printStackTrace();}return isEmploy;}//判断用户是否已经通过管理员的审核public boolean Y_NEmply(){boolean isE=false;if (this.emplooy.equals("是")){System.out.println("员工号:"+UID+"已经通过了审核.................");main.showMainFarme();isE=true;return isE;}else if (this.emplooy.equals("否")){error.noEmplo0y(UID);return isE;}return isE;}4.2出库界面(主要代码)public Object setSdata2(){try{String sql2="select * from OutStore";Statement st=conn.createStatement();ResultSet result=st.executeQuery(sql2);Sdata2=new Object[Row2][Column2];int n=0;while(result.next()){Sdata2[n][0]=result.getString(1).toString().trim();Sdata2[n][1]=result.getString(2).toString().trim();Sdata2[n][2]=result.getString(3).toString().trim();Sdata2[n][3]=result.getString(4).toString().trim();Sdata2[n][4]=result.getString(5).toString().trim();Sdata2[n][5]=result.getString(6).toString().trim();n++;}result.close();st.close();return Sdata2;}catch(Exception e){e.printStackTrace();}return Sdata2;}//先判断库存表中是否存在要出库的商品编号public boolean isExistsGid(String gid){boolean flags=false;try{int count=0;String sql3="select count(商品编号) from StoreManage where 商品编号=?";PreparedStatement ps=conn.prepareStatement(sql3);ps.setString(1, gid);ResultSet result=ps.executeQuery();while(result.next()){count++;}result.close();ps.close();if (count>0){flags=true;return flags;}else{return flags;}}catch(Exception e){e.printStackTrace();}return flags;}//判断库存表中的库存量是否满足出库的笨条件public boolean lookNumber(String gid,int number){boolean flags=false;try{int num=0;String sql4="select 库存量 from StoreManage where 商品编号=?";PreparedStatement ps=conn.prepareStatement(sql4);ps.setString(1, gid);ResultSet result=ps.executeQuery();while(result.next()){num=result.getInt(1);}result.close();ps.close();if (number<=num){flags=true;}elseflags=false;return flags;}catch(Exception e){e.printStackTrace();}return flags;}//商品出库向出库表写入一条数据的出库记录public void newStoreOuput(String outgid,String outgname,int outgnum){ try{String sql5="insert into OutStore (商品编号,商品名称,出库数量,出库人,出库时间) values(?,?,?,?,getdate())";PreparedStatement ps=conn.prepareStatement(sql5);ps.setString(1, outgid);ps.setString(2, outgname);ps.setInt(3, outgnum);ps.setString(4, outpeople);ps.executeQuery();ps.close();}catch(Exception e){e.printStackTrace();}}//这是要修改库存表中的库存量public void updateStoreManage(String outgid ,int num){try{String sql6="update StoreManage set 库存量=(select 库存量from StoreManage where 商品编号=?)-? where 商品编号=?";PreparedStatement ps=conn.prepareStatement(sql6);ps.setString(1,outgid);ps.setInt(2, num);ps.setString(3, outgid);ps.executeQuery();ps.close();}catch(Exception e){e.printStackTrace();}}//向出库表模型中添加一条新一出库记录public Object addOutStoreToTable(String outgid){try{String sql7="select * from OutStore where 商品编号=? and 出库编号=(select count(*) from OutStore)";PreparedStatement ps=conn.prepareStatement(sql7);ps.setString(1, outgid);ResultSet result=ps.executeQuery();while(result.next()){newStoreOfOut[0]= new Integer(result.getInt(1));newStoreOfOut[1]=result.getString(2).toString().trim();newStoreOfOut[2]=result.getString(3).toString().trim();newStoreOfOut[3]=new Integer(result.getInt(4));newStoreOfOut[4]=result.getString(5).toString().trim();newStoreOfOut[5]=result.getString(6).toString().trim();}result.close();ps.close();return newStoreOfOut;}catch(Exception e){e.printStackTrace();}return newStoreOfOut;}4.3入库界面public Object setSdata(){try{String sq2="select * from InStore";Statement st=conn.createStatement();ResultSet result=st.executeQuery(sq2);Sdata=new Object[Row][Column];int n=0;while(result.next()){Sdata[n][0]=result.getString(1).toString().trim();Sdata[n][1]=result.getString(2).toString().trim();Sdata[n][2]=result.getString(3).toString().trim();Sdata[n][3]=result.getString(4).toString().trim();Sdata[n][4]=result.getString(5).toString().trim();Sdata[n][5]=result.getString(6).toString().trim();n++;}result.close();st.close();return Sdata;}catch(Exception e){e.printStackTrace();}return Sdata;}//向入库表中插入新的数据public void goodsInserData(String gid,String gname,int gnum){ try{String sql3="insert into InStore (商品编号,商品名称,入库数量,入库人,入库时间) values(?,?,?,?,getdate())";PreparedStatement ps=conn.prepareStatement(sql3);ps.setString(1, gid);ps.setString(2, gname);ps.setInt(3, gnum);ps.setString(4, inpeople);ps.executeUpdate();ps.close();}catch(Exception e){e.printStackTrace();}}//判断库存表中是否有相同商品编号的商品存在public boolean isExistsGood(String gid){boolean flags=false;try{String sql4="select * from StoreManage where 商品编号=?";PreparedStatement ps=conn.prepareStatement(sql4);ps.setString(1, gid);ResultSet result=ps.executeQuery();int i=0;while(result.next()){i++;}result.close();ps.close();if (i>0){//如果库存表中存在该商品的商品编号,则调用修改函数flags=true;return flags;}else{//若库存表中不存在则调用插入函数新插入一条数据return flags;}}catch(Exception e){e.printStackTrace();}return flags;}//若库存表中不存在则新建一条信息public void insertStoreManage(String gid,String gname,int gnum){ try{String sql5="insert into StoreManage (商品编号,商品名称,库存量) values(?,?,?)";PreparedStatement ps=conn.prepareStatement(sql5);ps.setString(1, gid);ps.setString(2, gname);ps.setInt(3, gnum);ps.executeUpdate();ps.close();}catch(Exception e){e.printStackTrace();}}//如果存在直接修改原有的数量//1、先获取原有的库存量public int getStoreNumber(String gid){int num=0;try{String sql6="select 入库数据 from StoreManage where 商品编号=?";PreparedStatement ps=conn.prepareStatement(sql6);ps.setString(1,gid);//ps.executeQuery();ResultSet result=ps.executeQuery();while(result.next()){num=result.getInt(1);}result.close();ps.close();return num;}catch(Exception e){e.printStackTrace();}return num;}//2、再修改库存量public void updateStoreManage(int count,String gid){try{int NUM=getStoreNumber(gid)+count;String sql7="update StoreManage set 库存量=NUM where 商品编号=?";PreparedStatement ps=conn.prepareStatement(sql7);ps.setString(1,gid);//ps.setInt(1, count);//ps.setString(2, gid);ps.executeUpdate();ps.close();}catch(Exception e){e.printStackTrace();}}//error!没有注意到出库表会存在多条相同的记录//向入库表模型中添加一条入库记录public void addStoreOnInStore(String gid){Object[] newRow=new Object[6];try{String sql8="select * from InStore where 商品编号=? and 入库编号=(select count(*) from InStore)";PreparedStatement ps=conn.prepareStatement(sql8);ps.setString(1,gid);ResultSet result=ps.executeQuery();while(result.next()){newRow[0]= new Integer(result.getInt(1));newRow[1]=result.getString(2).toString().trim();newRow[2]=result.getString(3).toString().trim();newRow[3]=new Integer(result.getInt(4));newRow[4]=result.getString(5).toString().trim();newRow[5]=result.getString(6).toString().trim();}result.close();ps.close();//向表模式中添加一行新数据dtm1.addRow(newRow);}catch(Exception e){e.printStackTrace();}}4.4库存管理界面public Object setSData(){try{String sql2="select * from StoreManage";Statement st=conn.createStatement();ResultSet result2=st.executeQuery(sql2);Sdata=new Object[Row][Column];int n=0;while(result2.next()){Sdata[n][0]=result2.getString(1).toString().trim();Sdata[n][1]=result2.getString(2).toString().trim();Sdata[n][2]=result2.getInt(3);n++;}result2.close();st.close();return Sdata;}catch(Exception e){System.out.println(e.getMessage());}return Sdata;}public void init(){//先调用方法获得表头和二维表的表数据//this.setSData();//this.setHeader();this.setTitle("天涯仓库管理");this.setSize(700,300);this.setLocation(300, 150);this.setLayout(new GridLayout(2,1));dtm1=new DefaultTableModel(Sdata,Sheader);jtable=new JTable(dtm1);pane1=new JScrollPane(jtable);jtable.setRowHeight(30);jtable.setGridColor(Color.blue);jp1.add(jlbl1);jp1.add(jtxt1);jp1.add(jlbl2);jp1.add(jtxt2);jp1.add(jlbl3);jp1.add(jtxt3);jp1.add(btnupdate);jp1.add(btndel);btnupdate.addActionListener(this);btndel.addActionListener(this);jtable.addMouseListener(this);//dtm1.addTableModelListener(jtable);this.add(pane1);this.add(jp1);this.show();}public boolean UpdateStoreDate1(String goodid,String goodname,int goodnum){boolean flags=false;try{String Sql3="update StoreManage set 商品名称=?,库存量=? where 商品名称='goodid'";PreparedStatement ps=conn.prepareStatement(Sql3);ps.setString(1, goodname);ps.setInt(2, goodnum);ps.executeUpdate();flags=true;}catch(Exception e){System.out.println(e.getMessage());}return flags;}//更新数据public boolean UpdateStoreDate(String goodid,String goodname,int goodnum){ boolean flags=false;try{String Sql3="update StoreManage set 商品名称=?,库存量=? where 商品名称=?";PreparedStatement ps=conn.prepareStatement(Sql3);ps.setString(1, goodname);ps.setInt(2, goodnum);ps.setString(3, goodid);ps.executeUpdate();ps.close();flags=true;}catch(Exception e){System.out.println(e.getMessage());}return flags;}//删除选中的数据public boolean DelStoreDate(String goodid){boolean flags=false;try{String sql4="delete from StoreManage where 商品编号=?";PreparedStatement ps=conn.prepareStatement(sql4);ps.setString(1, goodid);ps.executeUpdate();ps.close();flags=true;}catch(Exception e){System.out.println(e.getMessage());}return flags;}//判断是否缺货public boolean IsDeletio(){boolean flags=false;try{String sql5="select count(商品编号) from StoreManage where 库存量<=50";Statement st=conn.createStatement();ResultSet result=st.executeQuery(sql5);int m=0;while(result.next()){m++;}//判断是否有商品缺失if (m>0){flags=true;}}catch(Exception e){System.out.println(e.getMessage());}return flags;}第五章测试计划报告5.1.引言5.1.1目的本软件是用来有效的管理超市仓库货物数量及种类,以方便超市工作人员可以全面的了解超市仓库库存货物数量和种类来方便高效的管理超市仓库。