第一篇:小型超市管理系统开发实例
小型超市管理系统开发实例
一.项目论证和计划 1.1系统调查
社会生活的现代化,使得市场的走向发生巨大变化,由于经济的发展,人们对生活的需求已经不再满足于丰衣足食的低度要求,许多人们往往不是单纯为满足生活必需去购买,而是凭着喜欢、意欲和感观去购买。如果一个商店能够打动顾客、吸引顾客,自然会顾客盈门,而近几年新兴产业中超级市场的现代化管理方式和便捷的购物方式,尤其是它轻松的购物环境。往往是打动顾客,吸引顾客的最主要的原因,且良好的周密的销售服务更是赢得信誉、吸引顾客的优势所在。商品经济的高速现代化发展也促进了竞争,使一切不甘落后的商家都争先恐后地采用最新的管理方法来加强自己的竞争地位。因此,超市经营者如果不掌握当今市场发展的这一走向,不能将超市现代化经营作为努力开拓的目标,就无法使经营活络、财源茂盛。随着计算机网络技术以及数据库技术的迅速发展,管理信息系统得到了广泛应用。对于一个超市来讲:货品数量少则数以百计,多则数以万计;另外,不同超市的实际情况也有所不同。要对这些货品进行统一、高效的管理,靠人工完成工作量庞大、难免有错漏之处。为此,一个自动化的超市货品管理系统的开发非常必要。
当今社会,超市的竞争也进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。技术的提升和管理的升级是超市业的竞争核心。零售领域目前呈多元发展趋势,多种业态:超市、仓储店、便利店、特许加盟店、专卖店、货仓等相互并存。如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市营业者努力追求的目标。作为国内市场的一些中小型超市,它们在信息化过程中的步伐要落后于大中型超市,而对于这些企业的资源管理,信息的存储和处理也显得迫切需要。要适应市场竞争就需要有高效的处理方式和管理方法,因此加快超市的信息化进程是必可少的。
1.2 新系统的总体功能需求和性能要求
针对超市的特点,为了帮助超市解决现在面临的问题,提高小型超市的竞争力,我们将开发以下系统:前台POS销售系统、后台管理系统,其中这两个子系统又包含其他一些子功能。并且系统要做到以下几点:
(1).简单性
系统设计尽量简单,以实现使用方便,提高效率,节省开支,提高系统的运行质量。
(2).灵活性
系统对外界条件变化有较强的适应性
(3).完整性
系统是各个子系统的集合,作为一个有机的整体存在。因此,要求各个
子系统的功能尽量规范,数据采集统一,语言描述一致。(4).可靠性
小型超市管理系统可以用于支持超市的各项管理工作。
1.3 系统开发的框架
二.可行性分析
1.管理可行性分析
管理可行性分析管理可行性分析管理可行性分析 超市的经营者大多具备电脑基本操作知识,对于必要的专业操作经短期培训即可;管理基础工作和各项管理制度比较健全,执行严格,原始数据采集完整,保存良好。2.经济可行性分析
经济可行性分析经济可行性分析经济可行性分析 超市管理系统的投入,能够提高工作效率,减少工作人员,从而减少人力资本的投入,根据核算,系统投入三个月后,就能够基本收回开发系统的投资,从经济角度来说,本系统开发完全必要。
3.技术可行性分析(1).硬件:电脑一台(2).软件:操作系统:中文Windows 2007开发系统:Microsoft Visual Foxpro 6.0,安装SQL Server 2000的服务器版本 系统本身对硬件和软件的要求都不高且系统兼容性很强,平台的移植性也很好,因此无论在系统的硬件及软件上都满足开发的要求。
(3).本系统涉及到的技术因素: 管理系统的开发方法,使用面向对象开发方法开发软件系统。网络和通信技术,开发小组有基于C/S开发的经验,C/S机构规划和技术设计,开发小组有应用数据库开发经验。数据库技术,开发小组能使用Visual Foxpro 6.0 编程。
(4).运行上的可行性:操作简单:简单的操作规则使操作人员能轻松掌握。查询方便:用户可设定任意条件和任意的查询项目进行检索。统计灵活:任意条件下任意项目的产品入库时间、数量等的统计及查询项目均可进行交叉统计。
三.需求分析
3.1 数据流分析
顶层数据流图
零售前台(POS)管理系统数据流图
3.2 系统流程图
3.3 数据字典
商品信息
包括品名,仓库号,唯一标码,条形码,进货价,销售价,进货地,供货商号。仓库信息
包括仓库号,仓库名,类别,管理员工号,备注。员工信息
包括姓名,电话,工号,部门编号。会员信息
会员编号,会员名,电话,入会日期。供货商信息
包括供货商号,名称,地址,电话,联系人。销售信息
包括正常销售、促销与限量、限期禁止销售控制、销售明细记录、各地收银员收银记录、交结账信息,收银员工号。部门信息
包括部门编号,员工姓名,员工工号。
四.总体设计
4.1 功能模块图
4.2 层次方框图
4.3 IPO图
4.4 系统的功能结构图
4.5 工作流程模拟图
4.6系统数据库关系说明图
五.详细设计
5.1 前台销售(POS)功能流程图
5.2 后台管理功能流程图
第二篇:小型超市管理系统
小型超市管理系统一:需求分析
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(” “, ”"); 商品管理 第一章 门店商品进销存管理 一、订货 1、店长依据《门店作业手册》规范,及时了解陈列商品及库存商品的数量情 况,结合销售动态,仓库容量,每日仔细填写订单签字后传至采购部,无 订单门店次日出现断货现象,由店长负责,但是下订单后,必须保证次日 货物送达有存放位置,否则由店长自行解决,不得占用营业场地。 2、采购部接到订单后,汇总各门店相同商品,做同一代理商统一订货订单,必须标明送货门店地址、电话、送达时间,如因不知地址无法送货出现断 货由采购部责任人负责,如因供应商不给送货出现断货,由采购部考核供 应商 3、供应商接到订单,必须准时将货物送达指定门店,如出现不送情况,店 长及时反馈运营部,由运营部督促采购部落实完成。 4、店长要结合销售情况,保证各产品的安全库存,不得出现断货现象。 二、收货 1、供应商送达货物后,门店进行验货,必须保证生产日期在保质期三分之一 内,无破损,出现外包装破损的,开箱逐一验收,规格、单价与合同一致,数量与订单一致,高于订单数量以外的货不收,否则出现差异由收货人承 担。 2、所有项目核对无误后,在票据签字,将票据交店长或副店长审核签字确认,然后由店长留存一联入账并转财务,票据必须必须保证有送货人签字。 3、带促销品的商品,促销品依据收货方式签收,妥善保管。 4、供应商清仓商品,必须带采购部及企划部签署活动方案,方可收货。 5、供应商送达货物后,门店必须依据订单接收,否则造成供应商不给送送货 由店长负责,出现过大量囤货由店长负责。 三、销售 依据《门店作业手册》及《企划手册》执行,结合超市陈列方式陈列做好销售,不得出现货架空缺,仓库集货现象,否则由店长负责,给予经济处罚。 四、退换货 1、破损退换货:一袋或个别商品出现破碎或破损造成批量污染的需要退货的,由店长和送货人协调解决退货,发现后及时退货;批量破损,如门 店原因造成或者收货不注意,由店长与供应商协调解决,协调无果由店长 负责,如出现特殊情况(气体饮料自行开启等)非门店造成,门店报营 运部,由营运部督促采购部协调解决,解决无果按采购制度执行。 2、临期商品退换货:滞销商品出现临期商品(保质期三分之二以上商品) 需要退换货的,由门店报营运部,由营运部督促采购部协调解决,解决 无果按采购制度执行。 五、供应商结账方式及门店账务核销、损耗标准: 依据财务部制定相关流程及方式、制度执行。 第二章 商品销售定位管理 一、为了保证门店商品商品销售最大化,做好快速淘汰与引进制,现将商品统称 做如下分类:新品、战略性商品、主力商品、稳定性商品、。 二、新品:首期开店,依据大宗采购原则引进商品,运营期间逐步采购回商品或 地区新引进商品,全部定位新品。 1、新品引进方式:大宗采购法;门店和采购部及时掌握市场信息(所有员工协助),发现比较好的新品及时引进; 2、新品淘汰: A、大宗采购的所有商品依据销售数据,结合门店所在商圈消费习惯,逐步单店淘汰,如出现所有门店全部滞销的,及时淘汰。 B、引进的新上市产品培养期不超2各月,依据销售数据及时转入一下 三种范畴内或淘汰。 3、陈列位置: A、大宗采购引进老产品按照门店陈列式陈列; B、新上市商品尽可能陈列在堆头或端架; 三、战略性商品:淘汰滞销品后的知名厂家商品或进口商品;每天在无促销活动 有较大销售量的商品,利润较大商品,统称战略性商品。 1、商品淘汰:所有商品都有生命期,依据销售量,结合社区商圈消费习惯 及时转入稳定商品行列或淘汰。 2、陈列位置:依据门店方式尽可能陈列于消费者视线范围,便于拿取的地 方。 四、主力商品:每个促销档期的促销商品,季节性商品统称主力商品。 1、商品淘汰:依据促销档期销售数据分析,促销期间没有较大量的提升,取消所在门店的以后促销资格,季节性商品依据销售数据,及时转入稳 定商稳定性商品或淘汰。 2、陈列位置,尽可能陈列于堆头、端架,并有POP指示。 五、稳定性商品:除了上述商品外,每日有销量的商品,统称稳定性商品。 1、商品淘汰:依据销售数据,出现滞销商品及时淘汰。 2、陈列位置:依据超市陈列法陈列于货架偏下或偏上方。 第三章 商品库存管理 一、库房管理: 1、门店仓库设置:根据实际情况,尽量避免占用营业面积,可以在不影响 消费者购物的情况下搭建二层架,作为临时库房。 2、仓库内设施:因门店仓库面积小,单品数量多,单品存货量小,避免互 相堆压,出现商品找不到,过期现象,尽量在库内用角钢 加木板做囤货货架。 二、库位及商品存放管理: 1、库位管理:店长必须做好商品库位管理,按大类分区,然后在大类里按 小类分区,再按单品分区,退货区(根据退货量可以灵活掌 握),除退货区,其他库区必须固定。 2、商品存放管理:A、所有商品必须保证现金先出原则,入库时必须注意 将旧货应放到外边,不得用新货遮挡旧货。 B、做好仓库防护工作:防鼠、防火、防水、防压、防 腐、防锈、防爆、防晒、防倒塌、防潮、防盗、防 蛀、防电。 C、数量管理:凡不直接上货架需要入库的商品,店长 要另建台账,做好入库数量,每出一次 详细记录一次,要求有取货人的签字。 否则在盘点时出现差异由店长承担。 三、商品库存管理; 1、商品库存管理解释:凡门店签收未销售出去的商品都属库存商品。 2、库存管理:销售区陈列商品必须做台账,仓库库区商品存放必须做台账; 陈列商品台账数量+库区商品台账数量=实际库存数量 商品实际库存+销售数量=实际进货量 3、商品记账方式: 实际进货量:按照门店签收数量记录总量,然后分开2笔记录——销售 区量、库房区量; 销 售 量:依据日报表数据,必须和收银台一致,从销售区台账里核 减; 商品实际库存量:每次从库房出库,从库房区台账数量核减,在销售区 数量加上。 4、库存商品损耗:按照财务制度制定损耗执行,盘点时出现盘亏,如果损耗 数量还不足,由店长承担;如果盘赢,无损耗,给予店长 奖励,减去损耗还多,多出部分归超市所有,同时追究店 长责任。 5、促销赠品同样按上述方式管理。 四、安全库存管理: 1、计算公司:安全库存=(预计最大消耗量-平均消耗量)*采购周期。 2、为了不影响门店销售额,不出现断货现象,必须保证有安全库存。 3、安全库存由店长负责,店长依据销售信息及送货周期,有预见性的提前订 货,否则出现断货由店长负责,特殊情况除外(如突然性的大型团购),如 出现类似的情况,及时联系采购部,加急订货、送货,或者和顾客预约时 间。 五、现金进货管理: 1、原则:保证不断货,避免扰乱供货商送货积极性,尽量做到每次进货量少,订货频次高,尤其是保质期偏短商品。 2、如出现现金进货商品出现滞销或积压,店长应及时向营运部反馈,营运部 协调各门店,各部门协助处理,采购部和供应商落实促销赠品,企划部做 促销规划,各门店处理后,由积压门店做退货,协助处理门店做进货处理,算作处理门店销量,如协助门店无法卖出,将货退回积压商品店,由店长 负责。 六、账期进货管理: 1、原则:店长根据库房库容量,货架牌面陈列量,可适当放大进货量。 2、店长应每次例会及时反应货量状况,出现滞销或积压,尤其临近保质期3 分之二时间时,务必及时反馈,否则由出现过期由店长承担。 3、出现滞销或积压,供应部第一时间联系供应商提供促销支持,企划部依据 促销支持做促销策划,需要各店互调促销的由供应商出车及人力协助,负 责取消促销,直接做退货处理。 第四章 商品质量管理 一、收货时注意事项: 1、包装或标签破损; 2、包装或标签折裂; 3、包装或标签污染; 4、包装或标签变色; 5、包装或标签划伤; 6、包装或标签变形; 7、液体商品渗漏。 二、陈列存放时注意事项: 1、包装或标签划伤; 2、包装或标签变形; 3、包装或标签污染; 4、液体商品挤压、碰撞; 5、踩踏、坐卧商品;6超出包装承重范围。 三、搬运时注意事项: 1、野蛮搬运; 2、踩踏、坐卧商品; 3、包装或标签划伤; 4、包装或标签污染; 5、液体商品挤压、碰撞;6包装或标签折裂。 四、卫生清洁时注意事项: 1、包装或标签划伤; 2、包装或标签污染; 3、包装或标签折裂; 4、包装或标签损坏; 5、液体商品渗漏;6液体商品挤压、碰撞; 7、商品凌乱堆放; 8、踩踏、坐卧商品。 综上所述,除第一条可以拒收,其他均由损坏人赔偿,发现渗漏现象及时报店长,注意污染其他商品。 江西农业大学 本科生毕业设计(论文)开题报告 题目:小型OA系统开发 学院:计算机与信息工程学院 专业:计算机科学与技术 班级:计科1002班 学号: 20102151 姓 填表日期: 年月日 一、选题的依据及意义: 随着现代信息技术的飞速发展,尤其是计算机、网络通信以及自动化等技术的突飞猛进,使得办公自动化在技术和应用上得到了更高层次的发展,成为现代信息化社会的重要标志之一,同时也是企业信息化建设的重要组成部分。 所谓办公自动化系统即Office Automation,也可简称为OA系统。它是将现代化办公和计算机网络功能结合起来的一种新型的办公方式。OA系统以计算机网络为依托,在企业内部进行畅通的信息交流。组织机构内部的人员通过网络可跨越时间、地点协同工作。各个部门在信息共享的基础上进行协作,便于明确各个部门甚至每个员工的责任,而决策层可以迅速综合来自各个方面的信息,并以此为依据制定企业的战略决策。 通常的办公室业务,主要是进行大量文件的处理。而采用计算机网络技术传递文档,是办公室自动化的基本特征。在引入办公室自动化后除传统的办公室角色外,还要加入部分管理设备的专业技术人员。技术设备——计算机是另一因素。包括:计算机、复印机、电话机、传真机、网络设备等等,这些统称为硬设备或硬件。另外,各种信息设备中还需要有管理设备的软件。包括计算机的操作系统、网络操作系统、文字处理软件等等。显然办公自动化系统是一个“人-机”系统,二者缺一不可。 在办公管理中,工作人员之间最基本的联系是沟通(Communication)、协调(Cooperation)和控制(Control),即所谓的3C概念。而办公自动化就是利用先进的信息技术将办公过程电子化、数字化,从而创造一个集成的办公环境,使所有的办公人员都在同一个桌面环境进行协同工作。 在办公自动化系统中通过建立企业内部的通信平台及信息发布平台,来保证组织内部的通信和信息交流,为企业提供一个信息发布和交流的场所,从而使员工能够了解单位的发展动态及各种规章制度。同时企业的工作流程和各类文档要实现的自动化,进一步规范各项工作,使企业内部的文档能够按权限进行保存、共享和使用,提高单位协同工作的效率。 二、国内外研究现状及发展趋势(含文献综述): 办公自动化OA于50年代在美国等西方国家首先兴起,70年代中期,美国 首先利用微型计算机系统实现办公自动化以来,在发达国家已得到迅速的发展。美国联邦政府高度重视办公自动化的发展和应用,到 1984 年,90%以上的政府机构作上了电子邮件系统和电子报表系统,70%以上的政府机构准备增加其他管理支持软件、文件查询与报告生成程序、数据库管理系统等。到 1987年,美国联邦政府大约有 20%的官员和雇员可以在家里通过计算机网络进行办公或利用各处数据资源。在目前,办公自动化系统中普遍采用各种先进的设备,如语言合成、语音识别、多媒体技术、光盘等,使办公更加自动化、现代化。美国发展办公自动化大体经历了3个阶段。 1975 年前为第一阶段,采用单机设备,以文字处理机、复印机、传真机、专用交换机等为主,完成单项业务的自动化。 1975—1982年为第二阶段,该阶段采用部分综合设备,如专用自动交换机与文字、话音通信系统等,以实现关键竞争业务运行自动化。 1983年以后为第三阶段,该阶段采用系统综合设备,如多功能工作站、电子邮件等其他办公设备并入计算机网络,各办公室之间不仅能传递数据,而且能传递语音、图形和图像等信息,并采用多种决策支持软件,使办公人员不仅能快速获得所需信息,而且能在很短的时间内作出判断与决策,从而大大地提高办公效率和办公质量。 中国的OA系统起源于政府的公文和档案管理。由于计划经济体制的影响,政府对企业的管理除了依靠法律、法规之外,还有大量的行政指令和指示。企业在进行许多决策的时候,也经常需要向主管的政府部门请示汇报。另外,当时的政府官员和企业领导经常是你我难以分辨,并且存在着比较严格的对应关系,即企业领导和政府官员行政级别挂钩,因此在企业应用红头文件就比较自然。此时的OA系统的特点:以公文处理、档案管理为核心的办公管理系统,其实办公就是办文。 同样国内的OA发展历程大体也可以分为几个阶段: 第一代OA:以email、个人office办公软件处理为核心,个人来处理日常工作,在组织内缺乏很好的沟通渠道。 第二代OA:主要是以传统的收发文管理,档案管理为主。加入了很多的辅助功能如,BBS、公告板、名片夹、日程安排、报告管理、图书管理、车辆管理、企业大事记等小功能。这些功能相对独立,这样的功能也可以用内部网站的形式 实现。这些功能对于企业没有实际的大的帮助。 第三代OA:第二代的OA产品在功能上加强了,加入了很多功能。例如加入了文档管理、人事的管理、资产的管理,特别是在流程方面逐步得到了加强。他的功能还是相对对立,尤其是与企业的业务还是没有挂接上来,也是停留在将工作电子化的程度。 第四代OA:当我们的目光移开办公自动化系统,我们就会发现,在企业除了办公自动化系统之外,还有财务、库存、生产、销售、人力等管理系统。由于大量的信息孤岛式的建设,他们之间很少能够紧密协调起来。就前端来说,我们经常需要进行退出一个系统然后再进入另一个系统,并且发现数据常常不一致,我可以比较肯定地说,目前中国具有信息系统的企业绝大部分都是这种情况。他们往往具有多个供应商提供的多个系统,但很少集成。也有少数企业采用ERP套件,集成了其中的一部分,全部集成的企业凤毛麟角,也可能正在产生之中。 第五代OA:随着3G移动网络的部署,办公已经进入了移动时代。手机办公或者叫移动办公,是利用无线网络实现办公的技术。它将原有办公系统上的OA功能迁移到手机。移动办公系统具有传统办公系统无法比拟的优越性。移动办公系统使业务软摆脱时间和场所局限,随时随地进行与企业业务平台沟通,有效提高管理效率,推动企业效益增长。手机办公也涵盖了手机移动执法和手机移动商务。 三、本课题研究内容: 本课题所研究的办公自动化系统是针对于大中型的协同办公专用系统。最大限度的提高办公效率和办公质量,改善办公环境和条件。 该系统采用B/S模式,基于WEB形式,用户工作界面通过WWW浏览器来实现,部分事务逻辑在前端(Browser)实现,主要事务逻辑在服务器端(Server)实现,形成所谓三层结构系统(3-tier system)。从而简化了用户客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。 具体包括: 1、网站首页的布局设计。 2、用户管理:注册、修改、删除新部门及新员工信息。(管理员功能) 3、公文流转系统(收文、发文、签报) (1)公文的起草、提交、审批、填写意见等环节; (2)自主定义流程并配置每个环节的不同权限; (3)收发文的类型配置:可以有多个收发文表单的选择、流程的选择; (4)文件编号,印章样式,红头文件等的配置; (5)对收发文进行归档、统计、排序、查看、搜索等操作; 4、个人事务:个人事务(我的待办、我的待阅、我的已阅、我的已办、我的办结)、个人邮箱(收发邮件,查看、删除邮件)、通讯录。 5、行政管理:会议管理、车辆管理、用印管理。 6、公共信息:行政公告、部门文档。 四、本课题研究方案: 本人主要通过图书馆馆藏图书以及互联网资源获取行业相关的各类文献书籍,了解我国企业尤其是中大型企业在协同办公中存在的问题,办公效率亟待提高。在此基础上进行相关设计开发。 1、系统数据库的设计: 利用IBM公司的Lotus Notes/Domino平台进行数据表的创建、视图的创建。数据存储采用Domino文档型数据库 2、开发语言包括: JavaScript、Html、Lotus Script、公式等 3、嵌套元素: 在页面或表单中嵌入视图、Java小程序、导航器等其他页面与表单中的元素。 五、研究目标、主要特色及工作进度: 第一阶段(约3周) 确定毕业论文题目,搜集相关资料,理解课题。 第二阶段(约3周) 在学习并了解课题相关背景的基础上,完成开题报告,成功开题。 第三阶段(约4周) 学习设计与开发相关书籍,进行需求分析并完成概要设计。 第四阶段(约5周) 设计和实现系统的各个模块,并进行系统调试,进一步修改、完善系统。 第五阶段(约5周) 准备毕业论文所需资料,在业务与技术两个层面进行正文的撰写。 第六阶段(约3周) 修改并完成毕业论文,准备答辩 六、参考文献: [1] 张翠玲.浅谈办公自动化的意义[J].中国科技纵横,2010(14)[2] 陶德超.办公自动化的现状及发展[J].信息与电脑,2011(9) [3] 石丽霞.LotusDominoDesigner6应用程序开发指南[M].北京:中国水利水电出版社,2004 [4] 武坤.中文Lotus Domino/Notes R7应用教程[M].北京:机械工业出版社,2007 [5] [美] Paul Wilton Jeremy McPeak著,高宇辉等译.JavaScript入门经典[M].北京:清华大学出版社,2011 [6] [美] Nicholas C.Zakas著,李松峰译.JavaScript高级程序设计[M].北京:人民邮电出版社,2010 [7] [美] Freeman.E著,林旺译.Head First HTML与CSS、XHTML中文版[M].北京:中国电力出版社,2008第四篇:小型连锁超市商品管理
第五篇:《小型OA系统开发》(开题报告)