第一篇:探讨提高小型超市运作效率的管理系统
探讨提高小型超市运作效率的管理系统
21世纪,超市的竞争也进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。技术的提升和管理的升级是超市业的竞争核心。零售领域目前呈多元发展趋势,多种业态:超市、仓储店、便利店、特许加盟店、专卖店、货仓等相互并存。如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市营业者努力追求的目标。In twenty-first Century, the supermarket competition also entered a brand-new domain, the competition is no longer the scale of competition, but competition, management of technology competition, talent competition.Improvement in technology and management upgrading is the core competition of the supermarket industry.The retail sector is diversified development trend, many kinds of forms: supermarkets, warehouse stores, convenience stores, franchise shops, stores, warehouses and other coexist.How in the fierce competition to increase sales, reduce operating costs and expand business scale, become the supermarket business goal.1.3项目确立1.3 project establishment针对超市的特点,为
了帮助超市解决现在面临的问题,提高小型超市的竞争力,我们将开发以下系统:前台POS销售系统、后台管理系统,其中这两个子系统又包含其它一些子功能。In view of the characteristics of the supermarket, in order to help resolve the supermarket now facing problems, improve the competitiveness of small supermarkets, we will develop the following systems: the POS sales system, background management system, this two subsystems which also contains some other functions.1.4应用范围1.4 scope of application本系统适应于各种小型的超市。This system is suitable for various small supermarket.1.5 定义The 1.5 definition(1)商品条形码:每种商品具有唯一的条形码,对于某些价格一样的商品,可以使用自定义条形码。(1)the commodity bar code: each commodity has a unique bar code, for some of the same price goods, you can use a custom code.(2)交易清单:包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号。(2)the transaction list: including the transaction flow account, each kind of commodity, quantity, name of the commodity, the total amount of the transaction
time, responsible for the cashier staff number.(3)商品积压:在一定时期内,远无法完成销售计划的商品会造成积压。(3)the backlog of goods: in a certain period of time to complete the sales plan, far cannot cause the backlog of goods.(4)促销:在一定时期内,某些商品会按低于原价的促销价格销售。(4)the promotion: in a certain period of time, some commodities will according to sales promotion price is lower than the original price.库存告警提示:当商品的库存数量低于库存报警数量时发出提示。Inventory alarm: when the number of goods inventory is lower than the inventory alarm quantity issued tips.(5)盘点:计算出库存、销售额、盈利等经营指标。(5)inventory: calculate inventory, sales, profitability and other business indexes.2.1系统功能 2.1 system(1)、零售前台(POS)管理系统,本系统必须具有以下功能:(1), the retail front(POS)management system, the system must have the following features:商品录入:根据超巿业务特点制定相关功能,可以通过输入唯一编号、扫描条形码、商品名称等来实现精确或模糊的商品扫描录入。该扫描录入方法可以充分保证各种电脑操作水平层次的人员均能准确快
速地进行商品扫描录入。The entry of goods: formulated according
to
the
supermarket
business characteristics of related functions, can input a unique number, bar code scanning, name of the commodity to commodity scanning input precise or fuzzy.The scanning input method can fully guarantee all kinds of computer operation level personnel can goods scanning input accurately and rapidly.收银业务:通过扫描条形码或者直接输入商品名称(对于同类多件商品采用一次录入加数量的方式)自动计算本次交易的总金额。在顾客付款后,自动计算找零,同时打印交易清单(包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号)。如果顾客是本店会员并持有本人会员卡,则在交易前先扫描会员卡,并对所购物品全部实行95折优惠,并将所购物品的总金额累计到该会员的总消费金额中。会员卡的有效期限为一年,满一年未续卡者,该会员卡将被注销。Cashier: by scanning bar code or directly enter the name of the commodity(similar to multiple items with an input plus the number of ways)automatically calculate the total amount of the transaction.In the customer payment, automatically calculate the
change, at the same time print transaction list(including transaction flow account, each kind of commodity, quantity, name of the commodity, the total amount of the transaction time, responsible for the cashier staff number).If the customer is our membership and hold my membership card, the transaction before scanning membership card, and the goods all the 5% off discount, and the total amount of the items purchased the cumulative total amount of consumption of the membership.Valid membership card is one year, not continued card full a year, the membership card will be cancelled.安全性:OS登陆、退出、海吉布换班与操作锁定等权限验证保护;断电自动保护最大限度防止意外及恶意非法操作。Safety: OS landing, exit, shift and operation lock authorization protection;power off automatically the maximum protection to prevent accidental and malicious illegal operation.独立作业:有的断网收银即在网络服务器断开或网络不通的情况下,收银机仍能正常作业Independent operation: some fault net silver in the network server disconnect or network access conditions, the cash register can still work
normally(2)、后台管理系统,本系统必须具备以下功能(2), the backstage management system management system, the system must have the following functions进货管理: 根据销售情况及库存情况,自动制定进货计划(亦可手工制定修改),可以避免盲目进货造成商品积压。按计划单有选择性地进行自动入库登记。综合查询打印计划进货与入库记录及金额。Stock management: according to sales and inventory, to automatically formulate purchase plan(or manual Amendment), can avoid blind purchase caused the backlog of goods.According to the plan of single selectively automatic registration.Integrated query print plan of purchase and storage records and the amount of.销售管理: 商品正常销售、促销与限量、限期及禁止销售控制。风冷冷却器综合查询各种销售明细记录、各地收银员收银记录以及交结账情况等。按多种方式统计生成销售排行榜,灵活察看和打印商品销售日、月、年报表。Sales management: commodity sales promotion and limited, normal, within a time limit and prohibit the sale of control.Integrated query various sales subsidiary records, all cashiers silver record and check etc..In a variety of ways statistics generated
sales charts, flexible view and print sales day, month, year report.库存管理: 综合查询库存明细记录。库存状态自动告警提示。山东锅炉如库存过剩、少货、缺货等。软件为您预警,避免库存商品积压损失和缺货。库存自动盘点计算。Inventory management: Integrated Query inventory records.The inventory status of automatic alarm.Such as the excess inventory, less goods, shortage.Software for your warning, avoid inventory backlog of goods loss and shortage.Inventory automatic checking calculation.人员管理: 员工、会员、供货商、厂商等基本信息登记管理。员工操作权限管理。客户销售权限管理。Personnel management: staff members, suppliers, manufacturers, and other basic information registration management.Operation authority management staff.Customer sales management.7
第二篇:小型超市管理系统
小型超市管理系统一:需求分析
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.系统部署图
在超市信息管理系统中,系统包括四种节点,分别是:前台售货节点,售货员使用,负责货物销售;库存管理节点,库存管理员通过该节点进行库存管理和维护;订货管理节点,订货管理员通过该节点进行订货管理;统计分析节点,统计分析员通过该节点进行统计分析;系统管理节点,系统管理员通过该节点进行系统维护和员工信息维护。
第三篇:基于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(” “, ”"); 2013 管理现代化成果报告 优化库房管理提高运作效率 申报单位:锡林郭勒电业局修试管理处 2014年3月 2013管理现代化成果报告 目 录 1、前言.......................................................................................................1 2、成果实施背景.......................................................................................1 3、内涵和做法...........................................................................................3 3.1成果内涵及思路............................................................................3 3.2 RFID仓储管理系统的详细介绍..................................................4 3.3 方案确定........................................................................................8 3.4 成果实施......................................................................................10 4、实施效果.............................................................................................11 4.1 实施后效果.................................................................................11 4.2 实施后效益.................................................................................12 2013管理现代化成果报告 2013 管理现代化成果报告 1、前言 锡林郭勒电业局修试管理处(以下简称修试处)是业务归口于内蒙古电力科学研究院,是锡盟地区唯一一家专业从事电网及电力用户输变配电设备调试、预试、故障分析处理、检修维护的单位,承担着全盟电力设备安全运行的责任。 锡林郭勒草原肥沃,历史悠久,人文荟萃,与蒙古国、河北省接壤,具有对外贯通欧亚、区内连接东西、北开南联的重要作用。修试处下属继电保护、直流、谐波、高压试验、变电检修、油务试验、电测仪表七个专业,承担着12座220kV变电站、16座110kV变电站、16座35kV变电站的检修维护工作。多年来,修试处坚决贯彻落实集团公司战略部署,坚持“一反、两防、三抓”工作思路,大力弘扬“忠诚敬业、追求卓越”的企业精神,牢记“四个服务”宗旨,着力推动公司发展方式和电网发展方式转变,在各项工作中取得了较好成绩,有力地确保了锡盟电力安全有效供应。 2、成果实施背景 随着电网的不断扩大变电站逐年在增加修试处所管辖的设备剧增,相应的试验设备、备品备件的数量和种类也在增加。截至2013年底,35kV及以上继电保护装臵共有 655 套,其中:线路保护 289 套,母线保护 46 套,变压器保护 130 套,过压及远跳保护 2 套,2013管理现代化成果报告 电抗器保护 5 套,断路器/辅助保护 84 套,故障录波装臵 38 套,35kV及以上其他装臵 61 套。保护及自动装臵的种类共有66种,其中各电压等级的母线保护共5个厂家5种型号,各电压等级的变压器保护共11个厂家21种型号,各电压等级的线路保护共13个厂家30种型号,各电压等级的故障录波装臵6个厂家10种型号。 而修试处各岗位人员配臵严重不足,这样使人员的工作压力进一步增大。修试处近几年人员的学历水平不断上升,因此也在力争用更先进、更科学的手段提高工作效率,提高人力资源利用率,以缓解人员不足带来的工作压力。为了更加方便快捷管理试验设备及备品备件,管理处必须在库房管理上进行创新。 在传统的库房管理中,不仅出库入库都仅依靠手工操作,工作量非常大,而且由于库存商品种类较多,导致备品备件的实时库存不能准确确定,因此无法进行有效库房管理。一方面缺乏对备品备件情况的有效监控,另一方面,对备品备件的实时信息也缺乏有效的统计和管理。由于不能及时了解库存情况的动态变化,故而无法执行科学合理的订货计划。可见传统的手工仓储管理已远远不能适应和满足我们的要求。随着信息技术的发展,基于网络、数据库、条码技术和无线射频的出现,把库房管理员从日常的进出库、记账和盘点等繁琐的手工业务中彻底解脱出来,提高了工作效率;把静态的手工帐务管理变为实时、动态的电子台账,能随时掌握库存信息,不仅查询统计迅速准确,而且可以为生产和订货计划提供依据,强化质量管理,使库房 2013管理现代化成果报告 管理跨上新的台阶。 3、内涵和做法 3.1成果内涵及思路 电网发展的同时相应的试验设备、备品备件的数量和种类也在增加。而管理处人员有限,有时会有抢修任务,工作时间不确定,无法安排专人管理库房。人力资源匮乏和工作量不断增大的矛盾日益突出,因此提高工作效率,提高人力资源利用率,改进现有管理机制势在必行。现以提高库房管理为切入点,寻找一种既经济高效又具有操作维护简单的方法去改变现在的库房管理机制,用科技的力量提高工作效率。 首先研究小组提出设想,能否建立一个可以自动识别试验装臵的系统,并在服务器上一目了然的能够呈现出来,而且这种设别技术最好不需要人为去专门的扫描,而是在一定范围内自动检测,自动扫描,将检测到的信息上传至服务器,这便能达到自动化、智能化的创新理念,同时,这种范围扫描式的检测方式,还能满足当试验设备被拿走时,服务器会扫描不到,生成一条信息,这便是自动出库。围绕这一出发点,研究小组展开了深入的研究。 研究小组自主开发了一套软件管理系统,即RFID(Radio Frequency Idendification)无线射频识别技术的仓储管理系统。系统中所需的硬件部分RFID仓储管理系统完全能够达到管理处以 2013管理现代化成果报告 前提出的设想,能够实现自动扫描、自动识别,自动记录的要求。该系统由读写器通过向识别芯片发射信号,识别芯片收到该信号后会向读写器回馈一个信号,通过识别不同的回馈代码可以区分设备,给不同的芯片定义各个设备,便可以实现自动扫描和自动识别功能。这便是RFID识别采集部分,它是实施管理功能的基础和手段。有了这部分后,还需要后台数据库管理系统,这是整个系统运行的核心。 3.2 RFID仓储管理系统的详细介绍 3.2.1 系统的扫描与识别技术介绍 在智能的库房管理系统中,设备的出入库环节是最为重要的,如果在出入库过程中出现问题,就会导致库存信息错误,严重影响到库房管理系统中的其他过程,同时也会影响到之后的工作安排,RFID电子标签是识别设备信息的唯一标识,在读取到标签的信息后,将关联到后台的数据库中,并且可以在库房管理系统的界面上进行相关的操作。通过天线发出一定频率的射频信号,当RFID标签进入读写器工作场时,其天线产生感应电流,从而RFID标签获得能量被激活并向读写器发送出自身编码等信息;读写器接收到来自标签的载波信号,对接收的信号进行解调和解码后送至计算机主机进行处理;计算机针对不同的设定做出相应的处理和控制,发出指令信号;RFID标签的数据解调部分从接收到的射频脉冲中解调出数据并送到控制逻辑,控制逻辑接收指令完成存储、发送数据或其 2013管理现代化成果报告 他操作。 RFID系统的识读过程包括以下4步: (1)读写器将设定数据的无线电载波信号经过发射天线向外发射。(2)当射频标签进入发射天线的工作区时,射频标签被激活后即将自身信息代码经天线发射出去。 (3)系统的接收天线接收到射频标签发出的载波信号,经天线的调制器传给读写器,读写器对接收到的信号进行解调、解码,送后台电脑控制器。 (4)计算机控制器根据逻辑运算判断射频标签的合法性,针对不同的设定作出相应的处理和控制,发出指令信号控制执行机构的动作。从而完成与物体有关信息查询、收费、放行、统计、管理等应用。 图一 RFID仓储管理系统结构图 3.2.2 RFID中间件 2013管理现代化成果报告 RFID中间件是处于RFID读写设备与后端应用之间的程序,它提供了对不同数据采集设备的硬件管理,对来自这些设备的数据进行过滤、分组、计数、存储等处理,并为后端的应用程序提供符合要求的数据。 中间件具有以下功能: 3.2.2.1 对读写器或数据采集设备的管理。在不同的应用中可能会使用不同品牌型号的读写设备,各读写设备的通信协议不一定相同,因此需要一个公用的设备管理层来驱动不同品牌型号的读写设备共同工作。有的定义也把这一功能升格为数据源的驱动与管理,因为同样的数据可能来自RFID标签或条形码数据发生设备。对读写器或数据采集设备的管理还包括了对逻辑读写设备的管理。 3.2.2.2 数据处理。来自不同数据源的数据需要经过滤、分组、计数等处理才能提供给后端应用。从RFID读写器接收的数据往往有大量的重复数据。这是因为RFID读写器每个读周期都会把所有在读写范围内的标签读出并上传给中间件,而不管这一标签在上一周期内是否已被读到,在读写范围内停留的标签会被重复读取。另一个造成数据重复的原因是由于读写范围重叠的不同读写器,将同一标签的数据同时上传到中间件。除了要处理重复的数据,中间件还需要对这些数据根据应用程序的要求进行分组、计数等处理,形成各应用程序所需要的事件数据。 3.2.2.3 访问安全控制。对于来自不同RFID应用程序的数据请求进 2013管理现代化成果报告 行身份验证,以确保应用程序有访问相关数据的权限。对标签的访问进行身份的双向验证以确保隐私的保护与数据的安全。对需通过网络传输的消息进行加密与身份认证,以确保RFID应用系统安全性。3.2.2.4 提供符合标准的接口。接口有两个部分,一是对下层的硬件设备接口,需要能和多种读写设备进行通信;另一个是对访问中间件的上层应用,需要定义符合标准的统一接口,以便更多的应用程序能和中间件通信。 3.2.2.5 集中统一的管理界面。提供一个GUI可以让中间件管理人员对中间件的各系统进行配臵、管理。 3.2.2.6 负载均衡。有些分布式的RFID中间件具有负载均衡的功能,可以根据每个服务器的负载自动进行流量分配以提高整个系统的处理能力。 3.2.3 建立数据库及编程 有了信息录入读取工具和RFID中间件之后,下一步便是建立数据库,只有建立好数据库,识别的芯片才能变成对应的设备,也才会具有可操作性。数据库主要是设备信息与芯片代码的对应录入。这个过程总最难突破的是编程,如果从市场上购买这套系统需要10万元左右。随着修试管理处近年高级人才的广泛纳入,管理处为了节约开支组建了一支,以贾义为核心主创队伍自主开发了管理系统。 数据库录入首先统计出所有需要录入该系统的设备,并对每个 2013管理现代化成果报告 设备分配芯片,通过程序逻辑,将设备与芯片代码捆绑,当检测到芯片代码时,反馈给操作人员的是对应设备的变动状态,例如“XXX装臵离开库房 时间:X年X月X日X时X分X秒”,并且将这些记录存储至服务器,以便日后查阅。3.2.4联网配臵信息共享 3.2.4.1 应用在各个办公区域内员工与领导的办公计算机,通过办公软件随时了解库存信息。 3.2.4.2 在库房配臵一台电脑,联接领导计算机监控管理。3.2.4.3 当携带有电子标签的设备物品在上班期间需要带出时需由员工通过办公电脑网络系统上填写出入库单,发送流程到领导那里,经领导审批后方可出库,如果在上班期间之外,管理系统会发给领导一个备忘录,这样物品可以出库,待上班期间补签审批手续。若没有领导审批出入库或者出入库的设备与填写的出入库单申请的设备不符合,系统将报警。 3.2.4.4 授权后的标签移动到大门识读器附近后,识读器会根据领导监控管理计算机的授权情况自动登记带出的载体设备并传给领导管理计算机一个带出记录。 3.2.4.5 管理计算机通过网络把记录传给数据库服务器,并由服务器记录下来。3.3 方案确定 在成果实施前我们制定了2套方案,下面是对两套方案进行分析 2013管理现代化成果报告 对比然后选择最佳方案。3.3.1 方案1: 图二 系统网络结构图 方案1中整个网络用已经建立的办公网络,服务器用信通数据库服务器。优点:无需建立新的网络,无需装设服务器,整个系统功能可以通过办公电脑来实现。缺点:系统维护不方便,如果信通的服务器出现故障,整个管理系统就会瘫痪。 方案2整个网络需要重新建立(整个库房管理系统是一个独立的系统),需要重新装设服务器,并且要完成以下功能还需要在领导办公区域内在装设一台用作库房管理的计算机。优点:系统维护方便,不用受其他部门的制约。缺点:系统成本增加(建立新的网络、增加服务器和数台计算机)。 研究小组通过咨询信息通信处有关专家以及结合现有的成本预算确定了 2013管理现代化成果报告 总服务器上申请一个新的IP地址即可。这样就大大缩小了预算成本。3.4 成果实施 3.4.1组成系统所需购臵的硬件 硬件部分组成:台式计算机(服务器所需电脑)1台、交换机(带光口)1台、网线若干、射频读卡器2台、射频标签1000个。3.4.2实施方法 将管理的设备(备品备件)与射频标签固定在一起(但不能将射频标签臵于完全金属外壳封闭的装臵内,因为信号会被屏蔽掉);射频读卡器安装于库房顶部的中心位臵,以便于读卡器实时对标签发出查寻命令,接收到命令的标签会给予回复;计算机(服务器)放臵于库房内,将服务器连接于单位的局域网,各级人员可以通过办公电脑访问系统执行相应的操作。3.4.3软件实施 3.4.3.1 首先,建立数据库,将对各个射频标签进行定义(包括该标签对应的设备名称、型号、生产厂家、数量等),并将这些定义的数据存储于数据库中。 3.4.3.2编写应用程序,其中包括设备出入库的整个网络审批过程、设备查询功能、系统报警功能等。整个程序采用模块化结构的思想设计。 3.4.3.3编写用户管理程序,其中包括领导级、库房管理级、生产 2013管理现代化成果报告 级等不同级别人员在整个系统中的管理权限。 4、实施效果 4.1 实施后效果 工作人员或领导可以通过办公网络实时了解库存现状,包括设备的状态、备品备件的数量及型号,是否有满足生产现场需要的设备;在工作时间,当有设备出入库时,工作人员通过办公网络填写相应的出入库单,然后发送流程到相关领导及库房管理员那里,经相关领导及库房管理人员审核批准后,对应的设备可以出入库。如果出入库的设备与出入库单不符合,或者没有经过审核批准非法出入库,系统自动报警。(在非工作时间,出入库单处于领导待审核状态,系统不应不经报警,但应最好记录,待工作时间系统提示审核) 解决的问题及优势 电子产品代替人工,大大提高准确性。原来的记录方式需要填写出、入库单,需要书写设备型号数量等信息,当出入库的设备数量很大时,便容易发生漏记、错记的情况。基于RFID的仓储管理系统保障了数据采集的准确性,采用点对点的扫描反馈技术,从根本上避免了人为错误的发生。 电磁波通讯,计算机识别,大大提升效率。库房的设备物资需要定期进行盘点,传统的方式需要对库房的每一件设备进行清点,工作 2013管理现代化成果报告 量大,效率低下,而以RFID技术为核心的新系统,可以实现对货物的状态进行监视,只需查看服务器上相关的数据,即可一目了然,提高了仓储作业的工作效率,降低了仓储业务在各个环节上的时间,大大提高了工作效率。4.2 实施后效益 4.2.1 经济效益 成本计算: 1台服务器计算机为5000元、交换机1台为2200元、网线一盘100元、射频读卡器2台共8000元、射频标签1000个共32000元。硬件部分总投入为47300元。 软件:为自主开发,不需要费用。如果从市场上购买软件则需要10万元,因此节省软件成本费用10万元。 4.2.2 社会效益 仓储是现代生产企业中很重要的一环,合理优化的仓储管理可以大幅度的提高企业工作效率,增加企业的社会、经济效益,使用RFID 仓储管理系统将为我们未来的工作提供更大的便利。 首先使用RFID 仓储管理将大幅提高部门管理水平与运作效率,工作人员通过系统了解库存状况,减少了物理盘点的执行,避免了人工及时间的浪费,随时掌握库存动态,及时统筹调度设备的出入库。能及时对备品备件的消耗予以补充,减少因不了解库存情况造成的备品囤积浪费,从而也降低了生产成本。 2013管理现代化成果报告 其次在对电网设备维护、检修、消缺及大修技改工作时通过仓储管理准确的提取检修设备及备品备件,能保障工作顺利进行,提高工作效率,迅速准确的处理工作,依靠自动化更好的管理使用资源,减少设备发运错误、多余等现象,提高生产效率从而加强了企业的竞争能力。 再次RFID 仓储管理系统的使用可以合理的安排日常工作,管理更加规范顺利,不需要大量的库房管理人员,这样就减少了企业人员的浪费,提高了人才的利用率。 仓储管理系统模式还可以多元化利用,如办公设备及备品备件,产线固定化资产等都可以通过仓储管理系统达到合理调配,统筹管理的目的。还可以复制到其他库房或单位,最大化的服务整个企业。 优化人员、设施和设备的成本是提高企业竞争力,增加企业经济和社会效益的重要保证,在提高服务水平,降低库存,节约时间,成本最小化的压力下,仓储管理显然是越来越重要。 小型超市管理系统设计说明书 系统概述 小型超市管理系统的设计对一个超市的运转是十分重要的。改革开放以来,我国逐步进入市场经济,外国企业的进入,给我国的本土经济带来巨大的冲击。因此,为了使我们自身的企业更好地应对外来竞争的压力,我们的企业迫切地需要管理制度的完善。 小型超市管理系统是现存信息系统中较为复杂的一类,这是由超市自身的目标、任务和性质所决定的。它应用于用户权限管理、进货管理、销售管理、顾客管理和用户注册管理等几个方面,牵涉的信息种类较多。这也同时是一款信息查询系统,体现出超市当前的库存商品数量、价格以及销售情况。方便了顾客购买商品,而且对超市的管理、销售、进货以及经理决策起着至关重要的作用。依靠现代化信息处理技术来管理超市,大大节省了人力、物力,改善了员工的工作条件,方便了广大消费者,提高了企业的效率,增加其收益。 超市管理的信息化建设工作具有长期性、复杂性和多变性,所以超市管理系统也不是一个简单的、封闭的、静止的系统,它是会随时间推移在应用广度和深度上逐步变化和发展的系统。需求分析 需求分析分为三个部分:需求的文字表述、数据流图、数据字典。 一、需求分析: 小型超市管理系统的设计的服务对象是广大顾客及超市的管理人员。它涉及的面广、数据量大,如果对整个系统不能很好的 设计,将会给超市的效益带来巨大压力,如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市努力追求的目标。下面是我们队该系统所做的详细分析: 1、用户工作流程 与超市运转相关的群体主要有顾客、销售员和超市工作人员。围绕着三大群体,我们设计了以下流程。进货或销售商品时,用户要对订单或销售单进行核对审查,这时不同的用户需要填写与各自身份相对应的信息,经系统默认,进入到相应的界面,通过指导查询所需信息,如进货信息、销售信息和商品信息等。 2、用户业务需求 (1)、该软件将为不同的用户提供不同的操作权限,当用户不同时,根据对用户权限的判断,决定该用户进入哪一界面;(2)、该管理软件将对商品进行资料统计和管理,提供详细的商品信息,方便顾客查询; (3)、该软件将对商品的订货单和销售单进行录入管理和统计,使销售员和超市管理人员及时了解超市的销售情况;(4)、该软件将为用户提供账号管理工具,以便对用户账号进行管理,包括用户的添加、修改、编辑和删除等操作。 3、系统的设计目标 实现超市数据的信息化管理,提高超市在运作中的效率,减少人力的消耗,提高管理质量,将超市信息管理环节简单化。 4、用户对系统的要求 1)、信息要求 由于系统的使用主体是顾客和销售员,因此对系统的信息要求可分为以下几个方面: a.用户信息 用户的基本信息,主要包括用户的名称,密码,住址,权限,姓名及年龄信息; b.商品信息 商品的基本信息,主要包括商品的名称,数量,产地,价格,大小等信息; c.订货信息 订货的基本信息,包括商品的名称和数量,顾客姓名,销售日期,商品的大小和价格等; d.进货信息 进货的基本信息,主要包括所订购商品的名称和数量,订购生产厂家,订购日期,订购状态和订购人姓名等。 2)、处理要求 a.用户注册或登录 用户通过这个功能,可以注册成为会员或员工,也可以进入到系统主界面进行操作,用户可以是系统管理员,顾客,或销售员; b.商品查询与购买 顾客通过这个功能,可以浏览所有的商品,或者通过商品的某种信息,分项查询找到需要的商品后进行订货购买; c.订货单查询 通过这个功能,顾客可以根据自己的需求修改订单或下订单; d.销售情况查询 通过这个功能,销售员可以查询到商品的所有销售信息,了解超市的销售情况。安全性与完整性要求 1)、安全性要求 a.系统应设置访问用户的标识以鉴别用户是否合法,并要求合法用户设置密码,保证用户身份不被盗用; b.系统应对不同的数据设置不同的访问级别,限制访问用户可以查询和处理的数据的类别和内容; c.系统应对不同用户设置不同的权限,区分不同的用户,如顾客,超市管理人员和销售员; 顾客:查询某种或全部商品,下订单购买商品; 超市管理人员:进行用户管理,增加、删除或修改用户; 销售员:查询全部商品信息,或分享查询销售情况。2)、完整性要求 a.各种信息记录的完整性,信息记录内容不能为空; b.各种数据间相互的联系的正确性; c.相同的数据在不同记录中的一致性。 5、确定系统的边界 经过前面的需求分析,确定有计算机完成的工作时对数据进行各种管 理和处理,具体的工作内容见第二部分,由手工完成的工作主要有对原始数据的录入;不能由计算机生成的,各种数据的更新,包括数据变化后的修改,数据的增加,失效数据或无用数据的删除等;系统的日常维护。 二、系统功能的设计和划分 根据如上的需求分析,我们可将本系统按照所完成的功能划分成以下几个子系统: 用户权限管理子系统 进货管理子系统 销售管理子系统 顾客管理子系统 用户注册管理子系统 后台管理子系统 各子系统完成的功能如下: 1、用户权限管理子系统 (1)系统管理员具有所有的数据和功能权限,能查看进货管理表单、销售管理表单,能管理普通用户; (2)普通用户具有查询商品、订购商品和修改个人信息等功能;(3)销售员除了具有一般用户的权限外,还可以进行销售报表的查询等; 2、进货管理子系统 (1)用户查询或分项查询订货单; (2)下订单或更改订单状态; 3、销售管理子系统 让销售员能够进行销售信息的查询,及时了解超市的销售情况; 4、顾客管理子系统 (1)顾客可以浏览所有的商品信息;(2)可以通过分项功能查询,找到所需商品;(3)直接订货或购买商品; 5、用户注册管理子系统 (1)填写个人信息,注册成为会员;(2)根据不同的目的取得不同的商品权限。第四篇:优化库房管理提高运作效率
第五篇:小型超市管理系统设计说明书