第一篇:《超市管理系统》测试总结报告
软件职业技术学院
《软件测试》
上机5 提交成果
《超市管理系统》测试总结报告
组 号: 05 小组成员: 郭齐 刘正翔 魏彦雄 罗万娟 杨超 王浩简 项目组长: 完成日期:
郭齐
2013年05月27日
目录
一、测试概述...................................................................................................................................3
1.1编写目的.............................................................................................................................3
二、测试计划执行情况...................................................................................................................3
2.1测试类型.............................................................................................................................3 2.2运行环境............................................................................................................................4 2.3计划....................................................................................................................................4
2.3.1测试方案................................................................................................................4 2.4 测试问题总结...................................................................................................................4
三、测试结果...................................................................................................................................4
3.1登录模块测试....................................................................................................................4
3.1.1测试项目名称及测试内容....................................................................................4 3.1.2 测试用例...............................................................................................................5 3.2销售管理模块测试............................................................................................................5
3.2.1测试项目名称及测试内容....................................................................................5 3.2.2测试用例................................................................................................................5 3.3库存管理模块测试............................................................................................................6
3.3.1测试项目名称及测试内容....................................................................................6 3.3.2测试用例................................................................................................................6 3.4订货管理模块测试............................................................................................................7
3.4.1测试项目名称及测试内容....................................................................................7 3.4.2测试用例................................................................................................................7 3.5统计分析管理模块测试....................................................................................................8
3.5.1测试项目名称及测试内容....................................................................................8 3.5.2测试用例................................................................................................................8 3.6系统管理模块测试............................................................................................................9
3.6.1测试项目名称及测试内容....................................................................................9 3.6.2测试用例................................................................................................................9
四、对软件功能的结论...............................................................................................................10 4.1销售管理模块..................................................................................................................10 4.1.2限制......................................................................................................................10 4.2库存管理模块..................................................................................................................10 4.2.1能力......................................................................................................................10 4.2.2限制......................................................................................................................10 4.3 出库管理.........................................................................................................................10 4.3.1能力......................................................................................................................10 4.4统计分析管理模块..........................................................................................................11 4.4.1能力......................................................................................................................11 4.4.2限制......................................................................................................................11 4.5系统管理模块..................................................................................................................11 4.5.1能力......................................................................................................................11 4.5.2限制......................................................................................................................11
五、综合评价.................................................................................................................................12 5.1软件能力..........................................................................................................................12 5.2缺陷和限制......................................................................................................................12 5.3建议..................................................................................................................................12
美萍超市管理系统测试总结报告
一、测试概述 1.1编写目的
这份测试报告是为了测试该系统是否可行。当输入商品的信息是,测试其信息能不能被完整的保存在数据库中以备以后查询用;当输入的数据不符合要求是,看系统能不能给出提示;当价格信息修改后看修改的信息能不能被系统接受并保存到数据库;当输入新顾客的信息时,输入信息是否完整地保存在数据库中,以及当输入老顾客信息时,系统能不能显示完整的信息等等。
二、测试计划执行情况
2.1测试类型
1、用户登录测试:售货员登录销售管理系统模块,输入用户和密码,模块通过连接到数据库,对搜获管理系统中商品信息、销售信息、顾客购买商品的信息的进行检验。
库存管理员登录订货管理系统模块,模块通过连接数据库,对库存管理中的供应商信息、商品信息和特殊商品信息进行检验。
订货员登录管理系统模块,模块通过连接数据库,对订货管理系统中的供应商信息、商品信息和特殊商品信息进行检验。
统计分析员登录分析系统管理模块,模块通过连接数据库,对统计分析中的供应商信息、商品信息和特殊商品信息进行检验。
2、商品录入测试:录入商品信息,对新录入的信息在数据库中进行检验。
3、商品查询测试:输入商品编号,查询商品信息。
4、快速输入测试:商品手动输入模块,通过输入商品编号,查询数据库中商品信息表,包括商品库存量、销售量、供应商等,并显示出信息。
5、收银业务测试:对输入商品进行计价,输入所收取金额,计算出找回金额数并打印货物清单同时保存顾客购买记录。
6、订货业务测试:对库存商品存量与系统指定的库存下限比较,比对供应商 信息,统计订货商品并制定订货单。
7、统计分析业务测试:根据查询的商品信息、销售信息、供应上信息、缺货信息、报表信息和特殊商品信息等,指定报表,以及合理的销售计划表。
2.2运行环境
Windows7 2.3计划 2.3.1测试方案
说明确定测试方法和选取测试用例的原则
测试为四个阶段:单元测试、集成测试、确认测试、系统测试
单元测试:采用黑盒和白盒测试相结合的方法,对于逻辑结构复杂的模块采用白盒测试,对于以输入、输出为主的模块采用黑盒测试,以提高测试效率。集成测试:混合法(对于软件结构中较上层使用自定向下与对软件结构中比较下层使用自底向上方法结合)确认测试:
系统测试:采用人工测试方法。
2.4 测试问题总结
在整个系统测试执行期间暴露了一些问题,表现在:测试执行时间相对较少,测试通过标准要求较低;测试执行人员对管理系统不够熟悉,使用时效率偏低;测试人员对测试系统了解不透彻,测试执行时存在理解偏差,导致提交无效缺陷。
三、测试结果
3.1登录模块测试
3.1.1测试项目名称及测试内容(1)登录、密码模块测试
本测试采用黑盒测试法:为了检测不同权限的用户在 登录时,是否能进入对应的模块并得到对应有的权限,检查密码模块的正确有效 3.1.2 测试用例 测试用例1(正确输入)【输入:】用户;lc 密码:lc 【期望输出】:登录成功,显示前台销售管理窗体 【实际输出】:登录成功,显示前台销售管理窗体 测试用例2(无该用户)【输入】:用户名:aa 密码:aa 【期望输出】:提示用户名或密码错误 【实际输出】:提示用户名或密码错误 测试用例3(密码错误)【输入】:用户;lc 密码:aa 【期望输出】:提示用户名或密码错误 【实际输出】:提示用户名或密码错误 测试用例4(无输入)【输入】:用户: 密码:
【期望输出】:提示用户名或密码错误 【实际输出】:提示用户名或密码错误
3.2销售管理模块测试
3.2.1测试项目名称及测试内容
被测试是采用黑盒与白盒测试,为了检测系统的销售时的收银业务销售定价等功能的输入输出进行验证。3.2.2测试用例(1)收银业务测试 测试用例1(正确输入)【输入】:实收:50 【期望输出】:应找钱数显示的标签上,斌打印顾客货物清单 【实际输出】:应找钱数显示的标签上,斌打印顾客货物清单 测试用例2(输入比应收的少)【输入】:实收:10 【期望输出】:提示输入错误,所买货物价格高于所输入的数目,请检查 【实际输出】:提示输入错误,所买货物价格高于所输入的数目,请检查 测试用例3(输入非数字)【输入】:实收:a 【期望输出】:请输入数字 【实际输出】:请输入数字 【输入】:实收:空
【期望输出】:没有输入数字,请检查 【实际输出】:没有输入数字,请检查
3.3库存管理模块测试
3.3.1测试项目名称及测试内容
本测试是采用黑盒测试与白盒测试混合的测试方法:为了检测系统的库存管理时的入库管理,出库管理等功能的输出与输入进行验证。3.3.2测试用例
(1)商品录入测试
测试用例1(正确输入)
【输入】:条形码:001 商品名称:可口可乐 价格:2.0 【期望输出】:商品录入成功,加入商品列表
【实际输出】:商品录入成功,加入商品列表
测试用例2(已经存在的商品)
【输入】:条形码:1000001 商品名称:雪碧 价格:2.0 【期望输出】:提示商品已经存在【实际输出】:提示商品已经存在
测试用例3(需要录入的商品信息不完整)
【输入】:条形码空 商品名称:可口可乐 价格:2.0 【期望输出】:提示缺少信息/不合法
【实际输出】:提示缺少信息/不合法
测试用例4(需要录入的商品信息与已经存在的存储商品信息矛盾)
【输入】:条形码:1000001 商品名称:雪碧 价格:2.5 【期望输出】:提示缺少信息/不合法
【实际输出】:提示缺少信息/不合法
(2)商品查询测试
测试用例1(正确输入)
【输入】:条形码:1000001 【期望输出】:商品列表中显示该商品,商品名为雪碧
【实际输出】:商品列表中显示该商品,商品名为雪碧
测试用例2(无该商品)
【输入】:条形码:1000001 【期望输出】:商品列表中为空
【实际输出】:商品列表中为空
3.4订货管理模块测试
3.4.1测试项目名称及测试内容
本测试是采用黑盒测试与白盒测试混合的测试方法:为了检测系统的订业务货管理时的订货等功能的输出与输入进行验证。3.4.2测试用例
(1)订货业务测试
测试用例1(正确输入)
【输入】:条形码:1000001 【期望输出】:商品名为雪碧,库存量低于库存下限,请联系供应商A补充货源
【实际输出】:商品名为雪碧,库存量低于库存下限,请联系供应商A补充货源
测试用例2(输入条形码错误)【输入】:条形码:1000001 【期望输出】:提示没有该商品
【实际输出】:提示没有该商品
测试用例3(没有输入条形码)
【输入】:aaa 【期望输出】:输入有误,请重新输入
【实际输出】:输入有误,请重新输入
3.5统计分析管理模块测试
3.5.1测试项目名称及测试内容
本测试是采用黑盒与白盒测试混合测试,为了检测系统分析管理是的查询信息等功能的输入输出进行验证。3.5.2测试用例 测试用例1(正确输入)【输入】:条形码:1000001 【期望输出】:商品是雪碧,今天销量是30,库存还有270.【实际输出】:商品是雪碧,今天销量是30,库存还有270.测试用例2(输入条形码有误)【输入】:条形码:000001 【期望输出】:提示没有该商品 【实际输出】:提示没有该商品 测试用例3(没有输入条形码)【输入】:aaa 【期望输出】:输入有误,请重新输入 【实际输出】:输入有误,请重新输入 3.6系统管理模块测试
3.6.1测试项目名称及测试内容
本测试是采用黑盒与白盒测试;为了检测系统的系统管理时的员工管理、会员管理等功能的输入输出进行检验。3.6.2测试用例(1)员工管理
测试用例1(正确输入)【输入】:员工号:1001 【期望输出】:1001 【实际输出】:1001 测试用例2(输入员工好错误)【输入】:员工号:asdfghjkl 【期望输出】:输入非法 【实际输出】:输入非法 测试用例3(没有输入用户名)【输入】: 【期望输出】:不能为空 【实际输出】:不能为空
测试用例4(输入部门号不存在)【输入】:1234556 【期望输出】:没有该部门 【实际输出】:没有该部门
测试用例5(电话号码不符合规范)【输入】:qwer 【期望输出】:电话号码错误 【实际输出】:电话号码错误
四、对软件功能的结论
4.1销售管理模块
超市管理系统下的一个子系统,记录售货员今日处理的商品信息和会员的购买情况,处理销售过程中的商品信息并作记录。
包括售货员登录和会员登录,以及售货员的售货处理、结账处理。4.1.2限制
(1)只能在购物一开始输入会员信息,不能在扫描商品中途登录会员;(2)删除待购商品时只能一条记录全删掉,不能指定删除指定数量。4.2库存管理模块 4.2.1能力
商品信息入库功能;对商品进行入库,录入商品编号,商品名称,数量总价等信息,存入数据库中,方便以后查询,并修改数据库中库存的数量,并将其打印显示在屏幕上。4.2.2限制
我们使用的测试数值如下: 001大宝SOD蜜 30件 300元 002中华健齿白牙膏 20件 100元 成功出入数据库中,未发现任何明显错误。4.3 出库管理 4.3.1能力
商品信息出库功能:对商品进行出库,打印出商品编号,商品名称,数量,总价等信息,存入数据库中,并修改数据库中库存的数量。4.3.2限制
我们使用的测试数值如下 001 大宝SOD蜜 15件 150元 002 中华健齿白牙膏 10件 50元 成功修改数据库 剩余的库存为:
001大宝SOD蜜 15件 150元 002中华健齿白牙膏 10件 50元 成功操作,未发现任何明显错误。4.4统计分析管理模块 4.4.1能力
统计分析管理包括查询商品信息、查询销售信息、查询提应商信息、查询缺货信息、查询报表信息和查询特殊商品信息,并制作报表。
统计分析员使用体统分析功能,了解商品信息、销售信息、供应商信息、库存信息和特殊商品信息,以便能够指定合理的销售计划。4.4.2限制
(1)统计分析只能查询指定条件的数据,但不能根据结果,自动生成分析结果,或是图表显示,不直观。
(2)几个相关联的数据查询不能一次到位。还需以后改进。
4.5系统管理模块
4.5.1能力
系统管理包括维护员工信息。维护会员信息和系统维护。
系统管理员通过系统管理功能,能够了解公司员工信息。会员信息,还能够对系统进行维护工作。4.5.2限制
(1)只能对员工信息、会员信息进行管理,不能对整个系统进行维护进行维护。(2)管理员的权限的设置问题,其可以看到所有信息。
五、综合评价
5.1软件能力
超市管理系统下的一个子系统,记录销售员今日处理的商品信息和会员的购买情况,处理销售过程中的商品信息并作记录。
包括售货员登陆和会员登陆,以及售货员的收售货处理、结账处理。
商品信息入库功能:对商品进行入库,录入商品编号,商品名称,数量 总价等信息,存入数据库中,方便以后的查询,并修改数据库中库存的数量,并将其打印在显示屏幕上。
商品信息出库功能:对商品进行出库,打印出商品编号商品名称,数量 总价等信息,存入数据库中,方便以后的查询,并修改数据库中库存的数量,并将其打印在显示屏幕上。
统计分析包括查询商品信息、了解商品信息、销售信息、供应商信库存信息和特殊商品信息,以便能后定制出合格的销售计划。
5.2缺陷和限制
(1)只能在一开始输入会员信息,不能在扫描商品中途进行登录会员(2)删除待够商品时只能删除一条信息
(3)统计分析只能查询指定条件的数据,但不能根据结果自动生成分析结果。(4)几个相关联的数据查询不能一次到位,还需改进
(5)只能对员工信息、会员信息进行管理,不能对整个系统进行维护。(6)管理员的权限的设置问题,起可以看到所有信息。
5.3建议
测试设计基本覆盖了需求的各个功能模块,发现了很多编码错误以及逻辑错误,不过由于人力以及时间的不足,所以还有许多改进的地方,如白盒测试的力度还不够,有很多提高空间。
继续搜集用户的使用需求反馈,并结合市场同类产品的优势,在今后的版本中不断更新并完善功能。
第二篇:小型超市管理系统
小型超市管理系统一:需求分析
1.超市信息管理系统是一个面向超市用来进行超市日常信息处理的管理信息系统(MIS)。该信息系统能够方便的为超市的售货员提供各种日常售货功能,也能够为超市的管理者提供各种管理功能,如进货、统计商品等。
(1)超市信息管理系统能够支持售货员日常售货功能。每一个售货员通过自己的用户名称和密码登录到售货系统中,为顾客提供服务。在售货员为顾客提供售货服务时,售货员接收顾客购买商品,根据系统的定价计算出商品的总价,顾客付款并接受售货员打印的货物清单,系统自动保存顾客购买商品记录。
(2)超市信息管理系统能够为超市的管理者提供管理功能。超市的管理包括库存管理、订货管理、报表管理和售货人员管理和系统维护等。库存管理员负责超市的库存管理;订货员负责超市的订货管理;统计分析员负责超市的统计分析管理;系统管理员负责超市的售货人员管理和系统维护。每种管理者都通过自己的用户名称和密码登录到各自的管理系统中。
(3)库存管理包括商品入库管理、处理盘点信息、处理报销商品信息和一些信息的管理设置信息。这些设置信息包括供应商信息、商品信息和特殊商品信息。库存管理员每天对商品进行一次盘点,当发现库存商品有损坏时,及时处理报损信息。当商品到货时,库存管理员检查商品是否合格后并将合格的商品进行入库。当商品进入卖场时,商品进行出库处理。
(4)订货管理是对超市所缺货物进行的订货处理,包括统计订货商品和制作订单等步骤。当订货员发现库存商品低于库存下限时,根据系统供应商信息,制作订单进行商品订货处理。
(5)统计分析管理包括查询商品信息、查询销售信息、查询供应商信息、查询缺货信息、查询报表信息和查询特殊商品信息,并制作报表。统计分析员使用系统的统计分析功能,了解商品信息、销售信息、供应商信息、库存信息和特殊商品信息,以便能够制定出合理的销售计划。
(6)系统管理包括维护员工信息、维护会员信息和系统维护。系统管理员通过系统管理功能,能够了解公司员工信息、会员信息,还能够对系统进行维护工作。二:创建系统用例模型 1.员工用例图
员工是超市售货员和超市管理者的抽象,它所包含的行为是超市售货员和超市管理者共同的行为。员工在本系统中通过合法的身份验证;能够修改自身信息和密码。
2.售货员用例图
售货员能够通过该系统进行销售商品活动。当售货员销售商品时,首先获取商品信息,然后将销售信息更新,如果顾客需要打印购物清单,则需要打印购物清单,在购物清单中需要对商品信息进行计价处理。
3.库存管理员用例图
库存管理员能够通过该系统进行如下活动:
(1)处理盘点。超市库存管理员每天需要对超市商品信息进行盘点。(2)处理报销。超市库存管理员对超市损坏商品进行报销处理。(3)商品入库。当商品到货时,库存管理员检查商品是否合格后并将合格的商品进行入库。
(4)商品出库。当商品进入卖场时,商品进行出库处理。(5)管理设置。库存管理员负责供应商信息、商品基本信息和特殊商品信息的管理设置。
4.订货员用例图
订货员能够通过该系统进行订货管理活动。订货员首先根据商品缺货信息统计订货商品,根据需要订货商品信息制定出订单。
5.统计分析员用例图
统计分析员负责超市的统计分析管理,它能够通过该系统进行如下活动:
(1)查询基本信息。统计分析员能够查询商品的基本信息,根据商品的基本信息,制定出相应的方案。
(2)查询销售信息。统计分析员根据销售情况,制定合理的销售方案。
(3)查询供应商信息。统计分析员能够查询供应商信息。
(4)查询缺货信息。统计分析员能够查询缺货信息。
(5)查询报损信息。统计分析员能够查询报损信息。
(6)查询特殊商品信息。统计分析员能够查询特殊商品信息
6.系统管理员用例图
系统管理员能够通过该系统进行如下活动:
(1)维护会员信息。系统管理员能够维护超市会员的信息,如添加会员、删除会员和修改会员信息等。
(2)维护员工信息。系统管理员能够维护超市员工的信息,如添加员工、删除员工和修改员工信息等。
(3)系统设置。系统管理员能够根据一些需要进行必要的系统设置。
三:创建系统静态模型
在获得系统的基本需求用例模型以后,我们通过考察系统对象的各种属性,创建系统静态模型。
(1)首先,我们先确定系统的参与者的属性。每一个超市员工在登录系统时,都需要提供员工的用户名称和密码,因此每一个超市员工应该拥有用户名称和密码属性。超市员工还拥有在超市中的唯一标识——员工编号。此外,员工属性中还包含员工的年龄、头衔和照片等信息。超市的售货员和管理者都继承自员工,拥有员工的属性。在系统中记录的顾客包括顾客的名称、顾客的编号、顾客地址、顾客级别和顾客的总消费金额等记录。
(2)其次,我们确定在系统中的主要业务实体类,这些类通常需要在数据库中进行存储。例如,我们需要存储商品的信息,因此需要一个商品类,同样,根据供应商信息我们可以确定供应商类。(2)其次,我们确定在系统中的主要业务实体类,这些类通常需要在数据库中进行存储。例如,我们需要存储商品的信息,因此需要一个商品类,同样,根据供应商信息我们可以确定供应商类。
四:创建系统动态模型
1.售货员销售商品序列图和交互图 工作流程如下:
(1)顾客希望通过售货员购买商品,售货员希望通过售货管理子系统处理商品销售。
(2)顾客将购买商品提交给售货员。
(3)售货员通过销售管理子系统中的管理商品界面获取商品信息。
(4)管理商品界面根据商品的编号将商品类实例化并请求该商品信息。
(5)商品类实例化对象根据商品的编号加载商品信息并提供给管理商品界面。(6)管理商品界面对商品进行计价处理。
(7)管理商品界面更新销售商品信息。
(8)管理商品界面显示处理商品。
(9)售货员将货物提交给顾客。
2.统计分析员查询商品信息序列图和交互图 工作流程如下:
(1)统计分析员希望通过统计分析子系统查询商品信息。
(2)统计分析员通过统计分析子系统中的查询商品信息界面获取商品信息。
(3)查询商品信息界面根据商品的属性或特征将商品类实例化并请求该类商品信息。
(4)商品类实例化对象加载商品信息,并提供给管理商品界面。
(5)查询商品信息界面显示该类商品信息。
(6)统计分析员请求查询商品信息界面制定出该类商品报表。
(7)查询商品信息界面制定该类商品报表。
(8)查询商品信息界面将该类商品报表显示给统计分析员。
3.库存管理员处理商品入库
工作流程如下:
(1)库存管理员希望通过库存管理子系统将购买的货物处理入库(2)库存管理员通过库存管理子系统中的商品入库界面获取商品信息。
(3)商品入库界面根据商品的编号将商品类实例化并请求该类商品信息。
(4)商品类实例化对象根据商品的编号加载商品信息并提供给商品入库界面。
(5)库存管理员通过商品入库界面增加商品数目。(6)商品入库界面通过商品类实例化对象修改商品信息。(7)商品类实例化对象向商品入库界面返回修改信息。(8)商品入库界面向库存管理员显示添加成功信息。
4.订货员进行订货管理 工作流程如下:
(1)订货员希望通过订货管理子系统处理商品订货管理。(2)订货员通过订货管理子系统中的订货管理界面获取待订货商品信息。
(3)订货管理界面将商品类实例化并根据商品的数量应当满足的条件请求有关商品信息。
(4)商品类实例化对象根据商品的数量应当满足的条件加载商品信息并提供给订货管理界面。
(5)订货员通过订货管理子系统中的订货管理界面获取待订货厂商信息。
(6)订货管理界面将供应商类实例化并根据商品的类型请求有关供应商信息。
(7)供应商类实例化对象加载供应商信息并提供给订货管理界面。(8)订货员通过订货管理子系统中的订货管理界面制作相关订单。(9)订货管理界面制作相关订单并显示给订货员。
5.商品状态图
在超市信息管理系统中,我们将有明确状态转换的类进行描述,以下我们以商品的状态图为例,简单进行说明。 商品包含以下的状态:刚被购买还未入库后的商品、被添加能够出售的商品、商品被出售、商品被回收。它们之间的转化规则是:
(1)刚被购买后的商品可以通过库存管理员添加成为入库的商品。(2)当入库商品被出售,商品处于被销售状态。(3)当商品由于过期、损坏等因素造成的不合格时,商品被剔除。
6.员工验证登录活动图
在利用系统的活动图来描述在超市信息管理系统中的参与者如何协同工作时,我们还可以建立相关参与者的活动图进行说明。以下我们以员工验证密码为例进行说明。 我们可以通过以下的方式描述员工验证登录的活动:(1)员工需要通过身份验证后进入相关子系统才能够进行相关操作。
(2)首先,系统运行后系统进入初始化登录界面。(3)员工输入自己的用户名称和密码。
(4)登录界面对用户输入的用户名称和密码进行判断。(5)如果是合法的用户,则系统对用户的权限进行判断,员工进入相关的管理界面,登录成功。
(6)如果是非法的用户,系统提示用户名称或密码错误,登录失败。
五:创建系统部署模型 1.系统构件图
在超市信息管理系统中,我们通过构件映射到系统的实现类中,说明该构件物理实现的逻辑类。例如,在超市信息管理系统中,我们可以对商品类和供应商类分别创建对应的构件进行映射。
2.系统部署图
在超市信息管理系统中,系统包括四种节点,分别是:前台售货节点,售货员使用,负责货物销售;库存管理节点,库存管理员通过该节点进行库存管理和维护;订货管理节点,订货管理员通过该节点进行订货管理;统计分析节点,统计分析员通过该节点进行统计分析;系统管理节点,系统管理员通过该节点进行系统维护和员工信息维护。
第三篇:超市连锁店管理系统
超市连锁店管理系统
北京某超市连锁店,成立于20世纪90年代初期。该超市连锁店采用统一采购,统一核算,统一配送的低成本经营方式。该超市连锁店发展至今已经拥有十几家连锁店和一家配送中心。我们研究的对象是该超市连锁店的一个分店,其规模属于中型超市,包括库存管理、销售、财务、人事等部门。它占地面积约六百多平方米,拥有管理人员及职员一百人左右。主要提供日用百货、烟酒食品、各种肉类、蔬菜、水果等商品,品种上千种。因其经营规模的扩大,业务的扩张,必须引进先进的管理思想、方法和技术,以提高企业的管理水平,使该店实现在五年内发展成为一个大型综合超市的目标。为此,该连锁店提出,近期内要运用信息技术,建立起包括库存管理、人事档案管理的管理信息系统,以提高商品库存效率,简化人事档案管理,降低公司管理成本增加公司利润。
系统目标:
(1)新建立库存管理系统能为公司提供强大的管理支持和查询服务,具体完成以下功能:库存输入;库存修改;库存查询;库存处理。(2)新建立的人事档案管理系统能完成以下功能:档案查询;档案更新;档案输出。
业务描述:
(1)库存管理业务流程:销售部在销售货物时发现某种商品不足,根据这种商品的销售量及时制定货品需求计划,送至库
存管理部。库存管理部检查这种商品的存货量,如果储货不足则制定进货计划,交给连锁店经理审批。经理批准后,告知财务部提款。库存管理部与配送中心联系,然后接收存储货物,并送至销售部进行销售。(2)人事管理业务流程:人事档案主要的使用对象是销售部和人事部,销售部只是查询档案,而人事部门负责根据人员变动文件对档案继续增加、删除和修改。
作业:
1、撰写可行性分析报告
2、绘制组织结构图
3、绘制业务流程图:一个业务绘制一个图
4、绘制数据流程图:一个业务绘制一个图
5、划分子系统:用文字描述系统的功能,子系统的划分
以及各个子系统的功能。
6、绘制系统总体结构图:第5个作业的图形表示。
7、代码设计,编写代码设计说明书
8、数据结构设计:编写数据库中各个表的结构表
9、数据库设计:
(1)数据表:和第8个作业中的表一致
(2)查询:选择查询、删除查询、追加查询
(3)窗体:
第四篇:基于java小型超市管理系统
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.Arrays;import java.util.Scanner;
public class Mytest { static int sign=0;//goodname数组第一个空下标号
static int sign1=0;//cname数组第一个空下标号
static String[] cpass=new String[20];//存放售货员名称
static String[] cname=new String[20];//存放售货员登入密码
static String[] goodname=new String[20];//存放商品名称
static double[] goodprice=new double[20];//存放商品价格
static int[] goodout=new int[20];//存放商品销售量
static int[] goodnum=new int[20];//存放商品数量
public static void main(String[] args)throws Exception { cname[0]=“ZhouTian”;//初始的售货员名称
cpass[0]=“723”;//初始的售货员密码 createArrays();readArrays(“goodname”);//将文件中的内容读入到相应的数组里
readArrays(“goodprice”);readArrays(“goodnum”);readArrays(“cname”);readArrays(“cpass”);readArrays(“goodout”);menu();//登入之后加载的主菜单
} /** * 加载登入菜单
*/ private static void menu(){
Scanner scan = new Scanner(System.in);
System.out.println(“ttt欢迎使用商超购物管理系统 n”);
System.out.println(“tttt1.登录系统n”);
System.out.println(“tttt2.退出 ”);
System.out.println(“*************************************************”);
System.out.println(“请选择,输入数字: ”);
int a = scan.nextInt();
switch(a){
case 0:
System.out.println(“退出!”);//按0不登入
case 1:
System.out.println(“请输入用户名:”);// 查找售货员姓名是否存在,与所对应的密码是否匹配
String name = scan.next();
System.out.println(“请输入密码:”);
String pass = scan.next();
int flage = 0;
int ff = 0;
for(int i = 0;i < cname.length;i++){
if(name.equals(cname[i])){
flage = 1;//售货员的名称匹配flage=1;
ff = i;
break;
}
}
if(flage == 1){//名称匹配之后再匹配密码
if(pass.equals(cpass[ff])){
loadmenu1();//密码也匹配之后再允许登入
} else {
System.out.println(“密码错误!”);
}
} else {
System.out.println(“该用户名不具有权限”);
}
break;
case 2:
System.out.println(“谢谢您的使用!”);
break;
default:
break;
} }
/** * ,创建文件,将数组信息存入到各文件中, */ static void createArrays(){
BufferedWriter bw = null;
try {
File file1 = new File(“d:gname.txt”);
if(!file1.exists()){
bw
=
new
BufferedWriter(new FileWriter(“d:gname.txt”));
String content1 = strToString(goodname);//数组内容转换成字符串
bw.write(content1);//写入
bw.close();
}
File file2 = new File(“d:gprice.txt”);
if(!file2.exists()){
bw
=
new
BufferedWriter(new FileWriter(“d:gprice.txt”));
String content2 = doubleToString(goodprice);//数组内容转换成字符串
bw.write(content2);//写入
bw.close();
}
File file3 = new File(“d:gnum.txt”);
if(!file3.exists()){
bw
=
new
BufferedWriter(new FileWriter(“d:gnum.txt”));
String content3 = intToString(goodnum);//数组内容转换成字符串
bw.write(content3);//写入
bw.close();
}
File file4 = new File(“d:cname.txt”);
if(!file4.exists()){
bw
=
new
BufferedWriter(new FileWriter(“d:cname.txt”));
String content4 = strToString(cname);//数组内容转换成字符串
bw.write(content4);//写入
bw.close();
}
File file5 = new File(“d:cpass.txt”);
if(!file5.exists()){
bw
=
new
BufferedWriter(new FileWriter(“d:cpass.txt”));
String content5 = strToString(cpass);//数组内容转换成字符串
bw.write(content5);//写入
bw.close();
}
File file6 = new File(“d:gout.txt”);
if(!file6.exists()){
bw
=
new
BufferedWriter(new FileWriter(“d:gout.txt”));
String content5 = intToString(goodout);//数组内容转换成字符串
bw.write(content5);//写入
bw.close();
}
} catch(IOException e){
e.printStackTrace();
}
}
/** * 登入之后加载商超购物管理系统
*/ static void loadmenu1(){
System.out.println(“欢迎进入商超购物管理系统!”);
System.out.println(“tttt商超购物管理系统”);
System.out
.println(“********************************************************************************”);
System.out.println(“tttt1.商品维护”);
System.out.println(“tttt2.前台收银”);
System.out.println(“tttt3.商品管理”);
System.out.println(“tttt4.退出”);
System.out.println(“********************************************************************************”);
System.out.println(“请选择,输入数字或按0退出:”);
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
switch(a){
case 0:
System.out.println(“谢谢您的使用!”);
break;
case 1:
System.out.println(“执行显示商品维护菜单”);
loadmenu2();
break;
case 2:
System.out.println(“执行前台收银”);
loadmenu6();
break;
case 3:
System.out.println(“执行商品管理”);
loadmenu7();
break;
default:
break;
} } /* * 在商超购物管理系统中按1键时 */ static void loadmenu2(){
System.out.println(“tttt商超购物管理系统 商品维护”);
System.out
.println(“********************************************************************************”);
System.out.println(“tttt1.添加商品t”);
System.out.println(“tttt2.更改商品t”);
System.out.println(“tttt3.删除商品t”);
System.out.println(“tttt4.显示所有商品t”);
System.out.println(“tttt5.查询商品t”);
System.out
.println(“********************************************************************************”);
System.out.println(“请选择,输入数字或按0返回上一级菜单:”);
Scanner scan = new Scanner(System.in);
int b = scan.nextInt();
switch(b){
case 0:
loadmenu1();
break;
case 1:
addgoods();
break;
case 2:
System.out.println(“执行更改商品操作”);
loadmenu3();// 修改商品
break;
case 3:
System.out.println(“执行商品删除操作”);
loadmenu4();// 商品删除
break;
case 4:
System.out.println(“显示所有商品”);
System.out.println(“商品名称ttt” + “商品价格ttt” + “商品数量ttt”
+ “备注”);
showgoods();
break;
case 5:
System.out.println(“执行查询商品操作”);
loadmenu5();
break;
default:
break;
} } /* * 在商超购物管理系统中按2键时
*/ static void loadmenu6(){
System.out.println(“tttt商超购物管理系统 前台收银”);
System.out
.println(“********************************************************************************”);
System.out.println(“tttt1.购物结算”);
Scanner scan = new Scanner(System.in);
int ch = scan.nextInt();
switch(ch){
case 0:
loadmenu1();
break;
case 1:
pay();
break;
default:
break;
}
} /* * 在商超购物管理系统中按3键时
*/ static void loadmenu7(){
Scanner scan = new Scanner(System.in);
System.out.println(“ttt商超购物管理系统 商品管理”);
System.out
.println(“********************************************************************************”);
System.out.println(“tttt1.库存查询”);
System.out.println(“tttt2.已出售商品”);
System.out.println(“tttt3.售货员管理”);
System.out.println(“请选择,输入数字或按0返回上一级菜单:”);
int ch = scan.nextInt();
switch(ch){
case 0: loadmenu1();
break;
case 1:
System.out.println(“执行库存查询操作:”);
kusear();
break;
case 2:
System.out.println(“执行已出售商品查询操作”);
besold();
break;
case 3:
System.out.println(“执行售货员管理操作”);
salesman();
break;
default:
break;
}
} /* * 对售货员信息的增添,修改 */ static void salesman()
{
Scanner scan = new Scanner(System.in);
System.out.println(“
1、添加售货员”);
System.out.println(“
2、修改售货员信息”);
System.out.println(“请选择,输入数字或按0返回上一级菜单:”);
int b = scan.nextInt();
switch(b){
case 0:
loadmenu7();//返回上一级
break;
case 1:
addsale();//选择1键,添加售货员
break;
case 2:
modifysale();//更改售货员的信息
break;
default:
break;
} } /* 添加售货员 * */ static void addsale(){
Scanner scan = new Scanner(System.in);
String f;
// sign1 = sign1 + 1;
do {
System.out.println(“添加售货员姓名:”);
String addname = scan.next();
add(cname, addname, sign1);//将新信息添加到相应数组中
System.out.println(“添加售货员登陆密码:”);
String addpass = scan.next();
add(cpass, addpass, sign1);//将新信息添加到相应数组中
// writeArray();
sign1++;//新信息添加后数组下标加1
writeArray();
System.out.println(“是否继续(y/n)”);
f = scan.next();
// writeArray();
} while(f.equals(“y”));
salesman();} /* * 更改售货员的信息 */ static void modifysale(){
String f;
Scanner scan = new Scanner(System.in);
System.out.println(“输入更改员工名称:”);
String newname = scan.next();
int k = searmember(newname);//查询需要改的售货员的信息,并返回其在数组中的下标
if(k >= 0){//判断售货员是否存在
System.out.println(“员工姓名” + “ttt密码”);
System.out.println(cname[k] + “ttt” + cpass[k]);
System.out.println(“选择您要更改的内容:”);
System.out.println(“
1、更改员工姓名:”);
System.out.println(“
2、更改登录密码:”);
int kk = scan.nextInt();
switch(kk){
case 1:
System.out.println(“请输入已更改员工姓名:”);
String newnname = scan.next();
cname[k] = newnname;
writeArray();
System.out.println(“是否继续(y/n)”);
f = scan.next();
if(f.equals(“y”)){
modifysale();
} else {
salesman();
}
break;
case 2:
System.out.println(“请输入已更改密码:”);
String newpass = scan.next();
cpass[k] = newpass;
writeArray();
System.out.println(“是否继续(y/n)”);
// System.out.println(“是否继续(y/n)”);
f = scan.next();
if(f.equals(“y”)){
modifysale();
}
salesman();
break;
default:
break;
}
} } /* * 查询ename姓名的售货员在数组中的下标 */ static int searmember(String ename){
for(int i = 0;i < cname.length;i++){
if(cname[i].equals(ename)){
return i;
}
}
return-1;// 不存在时
} /* * 查询已出售的商品信息 */ static void besold()
{
System.out.println(“商品名称ttt” + “商品价格ttt” + “商品数量ttt” + “备注”);
for(int i = 0;i < goodout.length;i++){
if(goodout[i]!= 0){
System.out.println(goodname[i] + “ttt” + goodprice[i]
+ “ttt” + goodout[i]);
}
}
loadmenu7();} /* * 查询库存中售的商品信息
*/ static void kusear(){
Scanner scan = new Scanner(System.in);
String f;
do {
System.out.println(“输入要查询的商品名称:”);
String sname = scan.next();
int t = ndimsear(sname);//按确切的商品名称进行查询,即非模糊查询,找出商品名称信息的下标
if(t >= 0){
System.out.println(“商品名称ttt” + “商品价格ttt” + “商品数量ttt”
+ “备注”);
System.out.println(goodname[t] + “ttt” + goodprice[t]
+ “ttt” + goodnum[t] + “ttt”);//按下标输出商品相应的信息
} else {
System.out.println(“没有此商品”);
}
System.out.println(“是否继续(y/n)”);
f = scan.next();
} while(f.equals(“y”));
loadmenu7();
} /* * 按确切的商品名称进行查询,即非模糊查询,找出商品名称信息的下标
*/ static int ndimsear(String s){
for(int i = 0;i < goodname.length;i++){
if(goodname[i].equals(s)){
return i;
}
}
return-1;//没查询到时
}
/* * 商品结算
*/ static void pay(){
Scanner scan = new Scanner(System.in);
double sum = 0;
String f;
do {
dimsearch1();//按关键字进行模糊查询,查找可能需要的商品
System.out.println(“请选择商品:”);
String bnam = scan.next();//按查询到的相关商品中选择要购买的商品
System.out.println(“请输入购买数量:”);
int bnum = scan.nextInt();
int fl = seargood(bnam);
System.out.println(bnam + “ttt” + goodprice[fl] + “ttt”
+ “购买数量” + bnum + “ttt” + bnum * goodprice[fl]);
goodnum[fl] = goodnum[fl]sum));
writeArray();//将对数组的更改写入到文件中
loadmenu1();//结束购买返回
} /* * 查找商品返回下标 */ static int seargood(String bbnam){
for(int i = 0;i <= goodname.length;i++){
if(goodname[i].equals(bbnam)){
return i;
}
}
return-1;}
/* * 对商品进行各种查找
*/
static void loadmenu5(){
Scanner scan = new Scanner(System.in);
System.out.println(“
1、按商品数量升序查询”);
System.out.println(“
2、按商品价格升序查询”);
System.out.println(“
3、输入关键字查询商品”);
System.out.println(“请选择,输入数字或按0返回上一级菜单:”);
int choice = scan.nextInt();
switch(choice){
case 0:
loadmenu2();//返回上一级
break;
case 1:
numshenxu();//按商品数量升序进行查找
break;
case 2:
priceshenxu();//按商品价格升序进行查找
break;
case 3:
dimsearch();//按商品的关键字进行查找
break;
default:
break;
}
}
static void dimsearch1(){
int[] k;
Scanner scan = new Scanner(System.in);
System.out.println(“输入商品关键字:”);
String sear = scan.next();
k = Arrays.copyOf(index(sear), index(sear).length);
System.out.println(“商品名称ttt” + “商品价格ttt” + “商品数量ttt” + “备注”);
if(k!= null){
for(int i = 0;i < k.length;i++){
System.out.println(goodname[k[i]] + “ttt” goodprice[k[i]]
+ “ttt” + goodnum[k[i]] + “ttt”);
}
}
} /* * 按商品的关键字进行查找
*/ static void dimsearch()
+ {
String f;
do {
int[] k;
Scanner scan = new Scanner(System.in);
System.out.println(“输入商品关键字:”);
String sear = scan.next();
k = Arrays.copyOf(index(sear), index(sear).length);
System.out.println(“商品名称ttt” + “商品价格ttt” + “商品数量ttt”
+ “备注”);
if(k!= null){
for(int i = 0;i < k.length;i++){
System.out.println(goodname[k[i]] + “ttt”
+ goodnum[k[i]]
+ “ttt”);
}
goodprice[k[i]]
+
“ttt”
+
}
System.out.println(“是否继续(y/n)”);
f = scan.next();} while(f.equals(“y”));loadmenu2();} static int[] index(String ss){ int countt = 0;int counttt = 0;for(int i = 0;i < goodname.length;i++){
if(goodname[i].indexOf(ss)>= 0){
countt++;
} } int[] location = new int[countt];for(int i = 0;i < goodname.length;i++){
if(goodname[i].indexOf(ss)>= 0){
location[counttt] = i;
counttt++;
}
}
return location;} /* * 按商品数量升序进行查找
*/ static void numshenxu(){
int[] newnum = Arrays.copyOf(goodnum, goodnum.length);
double[]
newprice
=
Arrays.copyOf(goodprice, goodprice.length);
String[] goodname.length);
for(int i = 0;i < newnum.lengthi1;i++){
for(int j = 0;j < newprice.length1;j++){
if(newprice[j] < newprice[j + 1]){
int temp = newnum[j];
newnum[j] = newnum[j + 1];
newnum[j + 1] = temp;
double temp1 = newprice[j];
newprice[j] = newprice[j + 1];
newprice[j + 1] = temp1;
String temp2 = newname[j];
newname[j] = newname[j + 1];
newname[j + 1] = temp2;//相应的下标在不同的数
newname
=
Arrays.copyOf(goodname, 组里进行挑换,商品的信息才能保持一致
}
}
}
System.out.println(“商品名称ttt” + “商品价格ttt” + “商品数量ttt” + “备注”);
for(int k = 0;k < newnum.length;k++){
if(newprice[k]!= 0){
System.out.println(newname[k] + “ttt” + newprice[k]
+ “ttt” + newnum[k] + “ttt”);
}
}
loadmenu5();} /* *更改商品信息的操作
*/ static void loadmenu3(){
Scanner scan = new Scanner(System.in);
System.out.println(“输入更改商品名称:”);
String nam = scan.next();
int b = showflage(nam);
print(b);
System.out.println(“选择您要更改的内容:”);
System.out.println(“
1、更改商品名称::”);
System.out.println(“
2、更改商品价格:”);
System.out.println(“
3、更改商品数量:”);
int ch = scan.nextInt();
switch(ch){
case 0:
break;
case 1:
int counnt = 0;
String f = “y”;
while(f.equals(“y”)){
if(counnt!= 0){
// Scanner scan = new Scanner(System.in);
System.out.println(“输入更改商品名称:”);
nam = scan.next();
b = showflage(nam);//查找需要更改商品的下标
print(b);//输出这个商品的各种信息
}
System.out.println(“请输入已更改商品名称”);
String cname = scan.next();
goodname[b] = cname;//更改名称
System.out.println(“是否继续(y/n)”);
f = scan.next();
counnt++;
writeArray();
}
loadmenu2();
break;
case 2:
counnt = 0;
f = “y”;
while(f.equals(“y”)){
if(counnt!= 0){
// Scanner scan = new Scanner(System.in);
System.out.println(“输入更改商品名称”);
nam = scan.next();
b = showflage(nam);
print(b);
}
System.out.println(“请输入已更改商品价格”);
double cprice = scan.nextDouble();
goodprice[b] = cprice;//新价格写入数组
System.out.println(“是否继续(y/n)”);
f = scan.next();
counnt++;
writeArray();
}
loadmenu2();
break;
case 3:
counnt = 0;
f = “y”;
while(f.equals(“y”)){
if(counnt!= 0){
// Scanner scan = new Scanner(System.in);
System.out.println(“输入更改商品名称”);
nam = scan.next();
b = showflage(nam);
print(b);
}
System.out.println(“请输入已更改商品数量”);
int cnum = scan.nextInt();
goodnum[b] = cnum;
counnt++;
writeArray();
System.out.println(“是否继续(y/n)”);
f = scan.next();
}
loadmenu2();
break;
default:
break;
}
} /* * 查询nama这个商品在goodname中的下标
*/ static int showflage(String nama){
int flag = 0;
for(int i = 0;i < goodname.length;i++){
if(goodname[i].equals(nama)){
flag = i;
break;
}
}
return flag;}
static void print(int b){
System.out.println(“商品名称 tt” + “商品价格 tt” + “商品数量 tt” + “备注”);
System.out.println(goodname[b] + “tt” + goodprice[b] + “tt”
+ goodnum[b] + “ tt”);
} /* * 删除商品菜单
*/ static void loadmenu4(){
String f;
int d;
do {
Scanner scan = new Scanner(System.in);
System.out.println(“请输入要删除的商品名称:
String dname = scan.next();
d = showflage(dname);
delete(d);
System.out.println(”是否继续(y/n)“);
f = scan.next();
writeArray();//删除之后重新写入文件
} while(f.equals(”y“));
loadmenu2();}
”);/* * 删除商品 */ static void delete(int dd){
for(int i = dd;i < goodname.length1] = null;
goodprice[goodprice.length1] = 0;
} /* * 查询所有商品
*/ static void showgoods(){
int i = 0;
while(goodprice[i]!= 0){
System.out.print(goodname[i] +
“ttt” goodprice[i] + “ttt”
+
+ goodnum[i] + “ttt”);
if(goodnum[i] < 10){
System.out.println(“ttt*该商品已不足10件!”);
}
System.out.println();
i++;
}
loadmenu2();
} /* * 商品添加操作 */ static void addgoods(){
System.out.println(“执行添加商品操作:t”);
String a;
do {
Scanner scan = new Scanner(System.in);
System.out.println(“输入商品名称:”);
String na = scan.next();
add(goodname, na, sign);
System.out.println(“输入添加商品价格:”);
double pr = scan.nextDouble();
add(goodprice, pr, sign);
System.out.println(“输入添加商品数量:”);
int c = scan.nextInt();
add(goodnum, c, sign);
sign++;
System.out.println(“是否继续(y/n)”);
a = scan.next();
writeArray();
} while(a.equals(“y”));
loadmenu2();
} /* * 将数组信息写入到相应的文件里,启动程序时就要调用这个函数 */ static void writeArray(){
BufferedWriter bw = null;
try {
bw
=
new
BufferedWriter(new FileWriter(“d:gname.txt”));
String content1 = strToString(goodname);
bw.write(content1);
bw.close();
bw
=
new
BufferedWriter(new FileWriter(“d:gprice.txt”));
String content2 = doubleToString(goodprice);
bw.write(content2);
bw.close();
bw
=
new
BufferedWriter(new FileWriter(“d:gnum.txt”));
String content3 = intToString(goodnum);
bw.write(content3);
bw.close();
bw = new BufferedWriter(new FileWriter(“d:cname.txt”));
String content4 = strToString(cname);
bw.write(content4);
bw.close();
bw
=
new
BufferedWriter(new FileWriter(“d:cpass.txt”));
String content5 = strToString(cpass);
bw.write(content5);
bw.close();
bw
=
new
BufferedWriter(new FileWriter(“d:gout.txt”));
String content6 = intToString(goodout);
bw.write(content6);
bw.close();
} catch(IOException e){
e.printStackTrace();
} } /* * 添加商品名称 */ static void add(String[] aa, String n, int b){
if(b == aa.length){
aa =(String[])Arrays.copyOf(aa, aa.length * 2);
}
aa[b] = n;} /* * 添加商品价格
*/ static void add(double[] aa, double pr, int b){
if(b == aa.length){
aa =(double[])Arrays.copyOf(aa, aa.length * 2);
}
aa[b] = pr;} /* * 添加商品数量
*/ static void add(int[] aa, int cc, int b){
if(b == aa.length){
aa =(int[])Arrays.copyOf(aa, aa.length * 2);
}
aa[b] = cc;
}
/** * 从文件中读取信息到相应的数组里
*/ static void readArrays(String name)throws Exception {
BufferedReader br = null;
try {
if(“goodname”.equals(name)){
br
=
new
BufferedReader(new FileReader(“d:gname.txt”));
String content1 = br.readLine();
String[] arr = strToString(content1);
goodname arr.length);
for(int i = 0;i < goodname.length;i++){
if(!goodname[i].equals(“null”)){
sign++;
=
(String[])
Arrays.copyOf(arr,}
}
} else if(“goodprice”.equals(name)){
br
=
new
BufferedReader(new FileReader(“d:gprice.txt”));
String content2 = br.readLine();
double[] arr = doubleToString(content2);
goodprice arr.length);
} else if(“goodnum”.equals(name)){
br
=
new
BufferedReader(new
=
(double[])
Arrays.copyOf(arr, FileReader(“d:gnum.txt”));
String content3 = br.readLine();
int[] arr = intToString(content3);
goodnum =(int[])Arrays.copyOf(arr, arr.length);
} else if(“cname”.equals(name)){
br
=
new
BufferedReader(new FileReader(“d:cname.txt”));
String content4 = br.readLine();
String[] arr = strToString(content4);
cname arr.length);
=(String[])Arrays.copyOf(arr,for(int i = 0;i < cname.length;i++){
if(!cname[i].equals(“null”)){
sign1++;
}
}
} else if(“cpass”.equals(name)){
br
=
new
BufferedReader(new FileReader(“d:cpass.txt”));
String content5 = br.readLine();
String[] arr = strToString(content5);
cpass arr.length);
} else {
br
=
new
BufferedReader(new
=
(String[])
Arrays.copyOf(arr, FileReader(“d:gout.txt”));
String content6 = br.readLine();
int[] arr = intToString(content6);
goodout =(int[])Arrays.copyOf(arr, arr.length);
}
} catch(FileNotFoundException e){
e.printStackTrace();
} catch(IOException e){
e.printStackTrace();
}
} /* * 将字符串转换成字符串数组 */ static String strToString(String[] arry){
// String arrys=“";
// for(int i=0;i // { // arrys=arry+arry[i]+”,“; // } // //arrys=arrys+arry[arry.length-1]; // System.out.println(arrys); // return arrys; StringBuilder sb = new StringBuilder(); for(int i = 0;i < arry.length;i++){ sb.append(arry[i]).append(”,“); } sb.deleteCharAt(sb.length()-1); // System.out.println(sb.toString()); return sb.toString();} /* * 将字符串转换成字符串数组 */ static String[] strToString(String ar){ String[] arry = ar.split(”,“);return arry;} /* * 将int型数组转换成字符串 */ static String intToString(int[] arrr){ String ss = ”“; ss = Arrays.toString(arrr); String sss = ss.replace(”[“,”“).replace(”]“, ”“).replace(” “, ”"); 超市管理信息系统分析与设计 摘要 随着小超市规模的发展不断扩大,商品数量急剧增加,有关商品的各种信息量也成倍增长。超市时时刻刻都需要对商品各种信息进行统计分析。而大型的超市管理系统功能过于强大而造成操作繁琐降低了小超市的工作效率。 超市管理系统是市场上最流行的超市上常用的系统之一,它主要包含以下几个模块:系统权限的设定、原始数据录入、数据的汇总及查询等。从而,实现对进货、销售及员工信息等实现全面、动态、及时的管理。 本文系统的分析了软件开发的背景以过程;首先介绍了软件的开发环境,其次介绍了本软件的详细设计过程:数据库的设计、各个模块的设计和实现,以及具体界面的设计和功能。 关键词:超市,管理信息系统 1.系统概述 1.1现状分析 随着计算机技术的发展,一个崭新的信息化的世界已经展现在我们眼前。如今,你可以随处看到很多不同种类的信息管理系统。超市的发展,其经营管理也变得愈加复杂,早期的售货员站柜台的形式早已不能满足现有销售也的发展,这样就迫切地需要引入新的管理技术。由于所掌握的物资种类众多,订货、管理、发放的渠道各有差异,各类统计报表繁多,因此仓库的库存管理必须编制一套库存管理信息系统,实现计算机化操作。所以说,一个成功的现代化超市需要一个现代的管理系统来保证企业产品的精细化管理,保证最大化利用资源。1.2系统总目标 超市管理的主要目标就是建立一个效率高、无差错、通用性好又节时的超市管理系统。通过对超市所有出入库活动的管理和控制及对仓库数据有效地统计和分析,以保证超市的物流,使决策人员及早发现问题,采取相应措施,调整库存结构缩短储备周期,加速资金周转,最大限度的降低库存占用,随着计算机技术的不断发展,计算机的使用已经十分普遍,每个企业都拥有计算机。使用计算机对库存信息进行管理有着很多人工记录所无法比拟的优点,比如查询快捷、信息安全性高、添加删除方便等。使用的这套库存管理系统是超市经营管理活动中的核心,此系统必须可以用来控制合理的库存费用、适时适量的库存数量,使企业生产活动效率最大化。本库存管理系统是一套对货品入库、出库、库存进行全面管理的系统。在管理内容上,它的主要功能包括:进货管理、出货管理、统计报表、系统管理。 2.系统分析 2.1可行性分析 2.1.1技术可行性 该系统用SQL Server 2008和Microsoft Visual Studio 2010做的,所以,只要在windows环境下安装SQL Server 2008和Microsoft Visual Studio 2010就可运行该程序。我们在上一学期已经掌握了SQL Server 2008的用法,能够进行数据库的构建,随着深入的学习,我们能够具备开发这款软件系统的知识,综上,我们在技术上是可行的。2.1.2经济可行性分析 我们的开发人员都是学生,开发这款软件是为了提高自己的能力,我们有充分的时间完成项目开发,我们也不需要额外开销,并不需要担心资金问题,所以,我们在经济上是可行的。2.2系统需求分析 需求分析是系统开发的首要步骤,也是直接影响系统整体性能和功能的关键步骤。系统的需求分析主要是对系统的可行性、性能和功能进行具体地分析。不合理的需求分析,会使系统的开发环节出现许多错误和走许多弯路,导致系统开发时间长,效率低,系统质量受到影响。2.2.1功能需求分析 功能分析:系统具有仓库管理系统的基本功能。系统分为两个部分,一个是用户部分:用户可以使用用户名和密码登录系统进行操作。一个是系统部分:这部分包括对商品的入库、出库操作,在库货物查询等功能。 模块分析:登录模块:仓库管理人员进入系统必须经过登录。添加商品信息模块:新入库的商品,在进入仓库之前,必须经过仓库管理人员的进行添加。入库模块:仓库中已有的商品才能进行的操作,主要是入库数量上的变化。商品类别管理模块:商品类别来区分各种商品,将商品分类管理。 系统性能分析:本系统操作简单,界面美观,使用本系统的超市管理人员不需要掌握太多的专业知识便可熟练使用。系统能够迅速的将超市管理人员对商品信息的操作(包括商品的入库、出库,商品信息的修改和删除,商品类别的添加和删除等)显示在对应的页面中,达到“即时操作,即时显示”的效果。系统功能完善,包括了一般超市管理系统的所有功能,完全能够满足用户的需要。2.2.2业务流程图 采购单采购入库入库单调拨入库盘盈入库入库单审核货品入库调拨单盘点单库存台账统计报表调拨出库盘亏出库出库单销售出库出库单审核货品出库销售单 图1 业务流程图 2.3数据字典 数据流名:商品信息。 说明:商品信息的存储并对其进行编码,来区别各类商品。数据流来源:人工输入。 数据流去向:数据库并各种报表打印。 数据流组成:{货号,品名,拼音编码,规格,单位,产地,类别,进货价,销售价。} 数据元素:供货商资料。 组成:{供货商号,拼音编码,简称,名称,地址,联系人,业务员,备注。} 数据流名:客户资料。说明:各大客户资料。数据流来源:人工输入。数据流去向:数据库并报表打印。 数据流组成:{客户编号,拼音编码,简称,名称,联系人,地址,邮编,} 数据元素:仓库信息。 组成:{仓库号,仓库名,类别,管理员编号,备注。} 数据元素名:采购订单。说明:用于录入企业的采购订单。 组成:{编号,供货商号,订购日期,有效起日,有效之止日,业务员,制单员,税价合计,扣率,税率,不含税价,税额,备注。} 数据元素名:进货单。说明:用于录入企业的进货单。 组成:{编号,供货商号,进货日期,业务员,制单员,验收员,税价合计,不含税价,税额,订单号,备注。} 数据元素名:销售明细。说明:销售单的从表。 组成:{编号,销售单号,货号,销售数量,销售价,税价合计,扣率,税率,不含税价,税额,仓库号,备注。} 数据元素名:收款单。 说明:用于录入企业收回货款的凭证和销售应收款。 组成:{编号,发票号,填票日期,销售单号,货号,客户编号,数量,销售价,金额,收款日期,详细说明,销售日期,状态,减预收,备注。} 2.4数据流图 超市经理商品信息清单顾客销货单人事信息清单人事信息操作货品管理系统商品信息操作进货单供应商采购单统一信息职工 图 2 数据流顶层图 库存信息查询1:库存管理销售信息库存信息清单采购信息销售信息查询采购信息查询库存信息销售单2:销售管理销售信息清单3:采购管理采购信息清单商品信息查询进货单商品信息商品信息清单:4:商品信息新供货商信息采购信息请求采购单 图3 数据流一层图 P1P1.1F2 采购单采购审核F7 缺货单P1.2P1.3入库检 F10 采购合格单P1.5F11 入库库存修改单E1供应商F1 发货单验货查F12采购不合格单F13入库不合格单P1.4S1库存信息表F8 采购退货单退货审核 采购数据流图 仓储数据流图 销售数据流图 3.系统设计 3.1总体结构设计 本系统包含了超市管理系统所需要的基本功能,能够满足一般用户对于仓库管理的需要,能有效的提高超市管理人员的工作效率。根据系统的需求分析,系统大体分为以下几个模块:系统管理、添加商品信息模块、出库模块、入库模块、信息查询模块。其中,各个模块又有不同的子模块 超市货品管理系统 系统管理出货管理进货管理信息查询 修改用户身份验证注册用户出库单填写采购员信息入库单填写写货品信息货品查询库存查询报表查询3.2数据库设计 3.2.1概念结构设计 用于信息世界的建模,是现实世界到信息世界的第一层抽象。一般采用实体-联系方法,即E-R图。根据数据库需求分析规划出的实体有:库存类型实体、商品类型实体、用户信息实体、销售单实体、账单实体等。各个实体具体的实体属性图如下: 图4组织结构图 性别姓名年龄价格联系电话商品编号商品名称用户号用户名称mm销售n顾客供应商销售时间进货数量编号n商品名称商品商品编号价格成本名称m供货n供应商价格编号联系电话 图5总E-R图 商品编号价格商品名称库存管理供应商供应商名称供应商编号联系电话 图6库存E-R图 商品名称商品编号商品信息价格成本 图7商品信息E-R图 年龄用户号用户联系电话性别姓名 图8用户E-R图 3.2.2逻辑结构设计 采购管理(商品编号,商品名称,价格,供应商,供应商名称,供应商编号,联系电话) 销售管理(商品编号,商品名称,数量,价格,销售时间) 库存管理(供应商编号,供应商名称,联系电话,供应商,价格,商品编号,商品名称) 商品信息(商品名称,商品编号,价格,成本) 员工信息(员工号,姓名,年龄,性别,职位,联系电话) 根据数据库概念结构设计,将数据库概念结构转化为SQL Server 2008所支持的实际数据模型,即数据库的逻辑结构。其各个数据库表的设计结果如下: 图9管理员信息表 图10 货品信息表 图11库存信息查询表 图12仓库人员信息添加管理 图13入库单信息表 4.系统实现 系统的设计是系统开发中的一个重要环节。本章将主要介绍一个基于B/S架构的超市管理系统的总体结构、系统架构和数据库设计。总体结构主要介绍了各个模块之间的关系,数据库设计主要说明了表的建立和数据之间的关系。本系统包含了仓库管理系统所需要的基本功能,能够满足一般用户对于仓库管理的需要,能有效的提高仓库管理人员的工作效率。4.1主界面模块 当仓库管理人员用正确的用户名和密码登录进系统之后,即可直接进入到主界面。 在主界面上,有各个子功能界面的超链接选项,包括添加超市货品、管理超市货品、查询货品、添加用户。当管理人员完成工作后,即可选择退出。 图14 主界面图 代码:第五篇:超市管理系统设计报告
本系统是一个单用户系统。仓库管理人员使用用户名和密码登入系统之后,可进入主界面对系统进行操作。界面:
图15 登陆模块图
代码:
if(this.TextBox1.Text == “" || this.TextBox2.Text == ”“){ Response.Write(”“);} else { SqlConnection con = newSqlConnection(”Data Source=(local);Initial Catalog=chgl;Integrated Security=True“);//连接数据库
// SqlConnection con = new SqlConnection(”server=.;database=mysys;uid=sa;pwd=sa;“);//连接数据库
string str = ”select * from admincsgl where username='“ + TextBox1.Text + ”'and password='“ + TextBox2.Text + ”'“;con.Open();// 打开连接
SqlCommand cmd = newSqlCommand(str, con);// 创建Command对象 SqlDataReader dr = cmd.ExecuteReader();// 执行ExecuteReader()方法 if(dr.Read()){ Session[”username“] = TextBox1.Text;Response.Redirect(”main.aspx“);} else { Response.Write(”“);} dr.Close();con.Close();} 4.2.2添加模块:
当货物进入超市仓库时,超市管理人员可以使用主界面上的“添加超市货品”操作选项进入商品入库界面。在这个界面中,仓库管理人员可以看到现有商品的所有信息,并且可以在相应的商品信息后面点击入库操作选项进行商品的入库操作。界面:
图16 添加模块图
代码:
ConnectionString=”<%$ ConnectionStrings:chglConnectionString5 %>“ DeleteCommand=”DELETE FROM [product] WHERE [procode] = @procode“
InsertCommand=”INSERT INTO [product]([procode], [proname], [pronum], [proprice])VALUES(@procode, @proname, @pronum, @proprice)“ SelectCommand=”SELECT * FROM [product]“
UpdateCommand=”UPDATE [product] SET [proname] = @proname, [pronum] = @pronum, [proprice] = @proprice WHERE [procode] = @procode“> 4.2.3查询模块: 本模块主要功能为商品信息查询。超市管理人员进入该页面后,可以在本模块的界面中查询到所有商品的信息,并且还有关于商品出库和修改商品信息操作的超链接选项。界面:
图17 查询模块图
代码:
SqlConnection con = newSqlConnection(”Data Source=(local);Initial Catalog=chgl;Integrated Security=True“);con.Open();string str = ”select * from product where proname='“ + TextBox1.Text + ”'“;SqlDataAdapter sda = newSqlDataAdapter(str, con);DataSet ds = newDataSet();sda.Fill(ds);this.GridView1.DataSource = ds;this.GridView1.DataBind();con.Close();
图18 查询模块图
代码:
SqlConnection con = newSqlConnection(”Data Source=(local);Initial Catalog=chgl;Integrated Security=True“);con.Open();string str = ”select * from 超市货品信息查询表 where 编号='“ + TextBox1.Text + ”'“;SqlDataAdapter sda = newSqlDataAdapter(str, con);DataSet ds = newDataSet();sda.Fill(ds);this.GridView1.DataSource = ds;this.GridView1.DataBind();con.Close();4.2.4管理模块:
当超市管理人员需要对在库商品进行管理时,只需在管理界面的相应的商品信息后进行操作即可。仓库管理人员可以看到现有商品的所有信息,进行管理。界面:
图19 商品管理模块图
代码:
ConnectionString=”<%$ ConnectionStrings:chglConnectionString4 %>“ DeleteCommand=”DELETE FROM [product] WHERE [procode] = @procode“
InsertCommand=”INSERT INTO [product]([procode], [proname], [pronum], [proprice])VALUES(@procode, @proname, @pronum, @proprice)“ SelectCommand=”SELECT * FROM [product]“
UpdateCommand=”UPDATE [product] SET [proname] = @proname, [pronum] = @pronum, [proprice] = @proprice WHERE [procode] = @procode“> 4.2.5用户添加模块:
当有新的用户注册时,仓库管理人员需点击主界面的“添加用户”选项。在进行信息添加的操作过程中,填写信息,选择注册。当信息填写完毕之后,点击确定将信息进行注册。界面:
图20用户添加模块图
代码:
string username1 = TextBox1.Text;string password1 = TextBox2.Text;string age1 = TextBox4.Text;string email1 = TextBox5.Text;string aihao1 = DropDownList1.Text;SqlConnection con = newSqlConnection(”Data Source=(local);Initial Catalog=chgl;Integrated Security=True“);//连接数据库
string insertString = ”insert into admincsgl(username,password,age,email,aihao)values('“ + username1 + ”','“ + password1 + ”','“ + age1 + ”','“ + email1 + ”','“ + aihao1 + ”')“;con.Open();// 打开连接
SqlCommand cmd = newSqlCommand(insertString, con);// 创建Command对象 SqlDataReader dr = cmd.ExecuteReader();// 执行ExecuteReader()方法
Response.Write(”“);con.Close();4.2.6退出模块:
图21 退出模块
代码:
Session.Abandon();Response.Write(”");
7.系统实施 7.1系统测试
系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法为了发现缺陷并度量产品质量,按照系统的功能和性能需求进行的测试一般使用黑盒测试技术一般由独立的测试人员完成对于模块之间交互性比较强的软件,还会有单独的集成测试,用来发现模块接口之间的错误。系统测试的对象是整个应用软件系统,包括需求分析、系统总体设计、详细设计各阶段的文档以及源程序。系统测试的目的是精心选取那些易于发生错误的测试数据,以十分挑剔的态度,找出软件中的错误,并改正错误。7.2测试原则:
1)由于这是个人力量开发的系统,所以测试的主要任务还是在开发人员身上,为避免这种自己开发自己测试的不足,可考虑请别人对系统进行试用。
2)设计测试方案时,不仅要包括确定的输入数据,而且应包括从系统功能出发,预期的测试结果,然后将运行结果与预期测试结果进行对比以发现有无错误。
3)测试用例不仅要包括合理有效的输入数据,还要包括无效的或不合理的输入数据。
4)不仅要检验软件是否做了该做的事,还要检查软件是否同时作了不该做的事。5)保留测试用例,作为软件文档的组成部分。7.3测试计划:
第一步:模块测试。这一部分工作主要在做项目的过程中完成,以保证每个模块作为一个独立单元能够正确运行。
第二步:组装测试。在各个模块完成后,再将各相关模块连接起来,进行组合测试,以保证各单元模块能从整体上协调运行。第三步:经过组装测试,软件已装配完毕,接下去进行确认测试,进一步检查软件是否达到预期的全部要求,这一阶段除对整个软件的功能、性能进行测试外,还要对配置进行审查,看构件的全部构成成分是否齐全,质量是否合乎要求。
第四步:经过确认测试后,软件已经测试完毕,然而软件只是信息系统的一个组成部分,还要与系统中的其分部分配套运行,所以最后要进行系统测试。就是将信息系统的所有组成部分包括软件、硬件、用户以及环境等综合在一起进行测试,以保证系统的各组成部分协调运行。系统测试要在系统的实际运行环境现场,在用户的直接参与下进行。7.4测试概述:
对于系统是否能完成预定的功能,我们对系统进行了如下的总体系统测试:
首先是系统的用户管理。其中对于设定用户我们选取了三组数据,分别为用户名空、密码空、以及输入密码不统一。通过三组数据的测试,已经达到我们预期功能。在出错情况下会出现对话框提示。用正确用户名及密码重新登陆,系统显示身份验证正确,安全进入。
接着是对三个主要模块库存管理、采购管理、销售管理的测试。这是整个库存管理系统的关键部分。具体测试参见设计小组中各人模块中的详细测试。
为使用户使用方便本系统添加了附项分类。经办人员管理中调用经办人员表,从这张表可以清楚出入库的经办人员名单,对于货品出入库后所产生的问题,能够迅速根据此表明确责任。供货单位管理中调用了供货单位表,从此表可以看出入库货品中供货单位的情况。对于入库货品来源明确。也同时可以保证货品质量。进货单位管理中调用了进货单位表,从此表可以看出出库货品中进货单位的情况。对于出库货品去处明确。也同时可以保证货款及时回收。仓库信息管理中调用仓库信息表。从此表可以看到仓库分类,对于货品仓储地点清楚。
财务处理:为了更好的使用系统,并使财务部能够使用。本系统添加了打印功能。在该功能中可以打印报表:入库单、出库单、经办人以及损益表。
除此之外,为方便使用,还将常用的按钮放置在主窗体上。为使系统数据安全,我们特意增添了数据备份、数据恢复功能。由数据备份功能,用户可以将数据备份在存储设备上。数据恢复功能是在系统出现错乱时,能恢复到之前的数据。7.5详细测试说明: 以下是对库存管理、采购管理和销售管理三大模块功能测试的具体说明。
库存管理模块下设有货品信息处理、货品库存、超储货品和短线货品等四方面的功能。进入货品信息管理下的货品信息,调出数据库中的货品信息表,由此可得到库中货品的具体信息情况;而货品维护则是当货品入库和货品出库发生时,货品基本信息库要在第一时间得到双方面的更新,这就是此窗体的功能;货品库存调用的是数据库中的货品库存表,从而我们可以得知库存货品的编码、名称、期初库存、本期出库、本期入库等具体库存货品信息,以便于查询和管理;超储货品调用了数据库中的超储货品表,从而可以得知是哪些货品超储了,货品的编码、名称、存放仓库等详细信息,以便于下次销售;短线货品是在货品销售后,若没有达到安全库存的要求,则要进行采购,从此窗体调出的短线货品表可以得知那些短线货品的具体信息,便于立即采购;以上是对库存管理模块各功能测试的具体说明。
总结
两周的面向对象课程设计,让我学到了很多实际运用的技能!
在实训中的第一步是编写功能较为单一的小程序,虽然是小程序,但所用的知识却都是我们本学期学习的重点知识。在做题的过程中让我把这些知识复习了一遍,强化了知识。
平时我们学习面向对象几乎都是为了考试或者做一些比较常规的题目,然而,这次给了我们的将所学知识运用于解决实际问题的机会,让人更有激情,这就是编写软件的在雏形,也让我们感受到了编写软件程序的乐趣。但是不仅仅是如此,更为重要的是在运用所学知识的过程中,记住这些知识,并能够广泛的运用!
这一次编写大作业的程序又让我感受到学程序可以锻炼缜密的思维了。因为平时练习的都是小程序,所以句段比较少,一些错误都很容易被检查出来,但是这次实训却是上百段的语句,难以检查,这就需要我们注意细节,真的是细节决定成败,因为不管程序的语句是多是少,但是只要有一条语句或语法不正确,就不能使程序得到所需要的结果。
通过这次的实验让我明白了学习中需要能力,素质,知识之外,更重要的是学会了如何去完成一个任务,懂得了享受工作。当遇到问题,冷静,想办法一点点的排除障碍,到最后获取成功,一种自信心由然而生,这就是工作的乐趣。有时候也需要虚心请教,从别人的身上真得能学习到不自己没有的东西,每一次的挫折只能使我更接近成功。除此以外,我还学会了如何更好地与别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。这次所学知识与实际的应用,理论与实际的相结合,让我大开眼界。也是对以前所学知识的一个初审吧!这次实习对于我以后学习、找工作也真是受益菲浅,在短短的两个星期中让我初步从理性回到感性的重新认识,也让我初步的认识这个社会,对于以后做人所应把握的方向也有所启发!相信这些宝贵的经验会成为我今后成功的重要的基石
参考文献