java小型超市管理系统

2023-06-30

第一篇:java小型超市管理系统

基于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(" 欢迎使用商超购物管理系统 ");

System.out.println(" 1.登录系统 ");

System.out.println(" 2.退出 ");

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(" 商超购物管理系统");

System.out

.println("********************************************************************************");

System.out.println(" 1.商品维护");

System.out.println(" 2.前台收银");

System.out.println(" 3.商品管理");

System.out.println(" 4.退出");

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(" 商超购物管理系统 商品维护");

System.out

.println("********************************************************************************");

System.out.println(" 1.添加商品 ");

System.out.println(" 2.更改商品 ");

System.out.println(" 3.删除商品 ");

System.out.println(" 4.显示所有商品 ");

System.out.println(" 5.查询商品 ");

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("商品名称 " + "商品价格 " + "商品数量 "

+ "备注");

showgoods();

break;

case 5:

System.out.println("执行查询商品操作");

loadmenu5();

break;

default:

break;

} } /* * 在商超购物管理系统中按2键时

*/ static void loadmenu6() {

System.out.println(" 商超购物管理系统 前台收银");

System.out

.println("********************************************************************************");

System.out.println(" 1.购物结算");

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(" 商超购物管理系统 商品管理");

System.out

.println("********************************************************************************");

System.out.println(" 1.库存查询");

System.out.println(" 2.已出售商品");

System.out.println(" 3.售货员管理");

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("员工姓名" + " 密码");

System.out.println(cname[k] + " " + 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("商品名称 " + "商品价格 " + "商品数量 " + "备注");

for (int i = 0; i < goodout.length; i++) {

if (goodout[i] != 0) {

System.out.println(goodname[i] + " " + goodprice[i]

+ " " + 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("商品名称 " + "商品价格 " + "商品数量 "

+ "备注");

System.out.println(goodname[t] + " " + goodprice[t]

+ " " + goodnum[t] + " ");//按下标输出商品相应的信息

} 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 + " " + goodprice[fl] + " "

+ "购买数量" + bnum + " " + 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("商品名称 " + "商品价格 " + "商品数量 " + "备注");

if (k != null) {

for (int i = 0; i < k.length; i++) {

System.out.println(goodname[k[i]] + " " goodprice[k[i]]

+ " " + goodnum[k[i]] + " ");

}

}

} /* * 按商品的关键字进行查找

*/ 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("商品名称 " + "商品价格 " + "商品数量 "

+ "备注");

if (k != null) {

for (int i = 0; i < k.length; i++) {

System.out.println(goodname[k[i]] + " "

+ goodnum[k[i]]

+ " ");

}

goodprice[k[i]]

+

" "

+

}

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("商品名称 " + "商品价格 " + "商品数量 " + "备注");

for (int k = 0; k < newnum.length; k++) {

if (newprice[k] != 0) {

System.out.println(newname[k] + " " + newprice[k]

+ " " + newnum[k] + " ");

}

}

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("商品名称 " + "商品价格 " + "商品数量 " + "备注");

System.out.println(goodname[b] + " " + goodprice[b] + " "

+ goodnum[b] + " ");

} /* * 删除商品菜单

*/ 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] +

" " goodprice[i] + " "

+

+ goodnum[i] + " ");

if (goodnum[i] < 10) {

System.out.println(" *该商品已不足10件!");

}

System.out.println();

i++;

}

loadmenu2();

} /* * 商品添加操作 */ static void addgoods() {

System.out.println("执行添加商品操作: ");

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(" ", "");

第二篇:小型超市商品信息管理系统

计算机系统开发综合训练(3)

小型超市商品信息管理系统

目录

1. 引言 .......................................................................................................................... 3

1.1系统开发目的 ................................................................................................. 3 1.2背景说明 ......................................................................................................... 3 1.3项目确立 ......................................................................................................... 3 1.4应用范围 ......................................................................................................... 3 2. 主要步骤 .................................................................................................................. 4

2.1建立系统功能模型 ......................................................................................... 4

2.1.1需求说明: .......................................................................................... 4 2.1.2 系统顶级用例图 ................................................................................. 5 2.1.3主要业务系统的用例图 ...................................................................... 5

1.员工用例图: .................................................................................... 5 2.售货员用例图 .................................................................................... 6 3. 库存管理员用例图 .......................................................................... 7 4.订货员用例图 .................................................................................... 7 5.统计分析员用例图 ............................................................................ 8 6. 系统管理员用例图 .......................................................................... 9 2.1.4 主要业务活动图 ............................................................................... 10 货物管理活动图.................................................................................. 10 2.2建立系统静态结构模型 ............................................................................... 11 2.2.1业务系统的详细类图 ........................................................................ 11 1.员工登录模块类图 .......................................................................... 11 2. 订货模块类图 ................................................................................ 12 3.库存管理模块类图 .......................................................................... 12 4. 统计分析模块类图 ........................................................................ 13 5. 销售模块类图 ................................................................................ 14 2.3建立系统动态模型 ....................................................................................... 15 2.3.1主要业务用例的顺序图和合作图 .................................................... 15 1.商品销售顺序图和合作图 .............................................................. 15 2.商品入库顺序图和合作图 .............................................................. 17 3. 商品出库顺序图 ............................................................................ 18 4.商品查询顺序图 .............................................................................. 19 2.3.2主要业务对象的状态图 .................................................................... 19 1.商品状态图 ...................................................................................... 19 2.商品销售状态图 .............................................................................. 20 2.4 绘制系统实现模型 ...................................................................................... 21 2.4.1商品信息管理系统构件图 ................................................................ 21 2.4.2 商品信息管理系统配置图 ............................................................... 22 3.系统的主要框架 .............................................................................................. 22 4.实验心得体会 .......................................................................................................... 30

1.引言

随着网络办公系统的方便性及其进一步普及,越来越来的公司、企业在管理上都采用了专门的系统来管理公司的业务和流程。 由此,系统管理应运而生。

本项目针对超市管理系统进行需求说明,旨在为超市提供方便,快捷的结账体系,准确,高效的库存和财务管理系统,等。让顾客在超市购物更加快捷方便,让超市的管理和运行工作更加完善,方便。因为超市管理系统是基于超市内部普通员工和管理人员的系统,所以非本超市员工是无权进行操作的。该超市管理系统的用户:库存管理员,售货员,统计分析员,顾客,系统管理员,订货员。

1.1系统开发目的

1.大大提高超市的运作效率;

2.通过全面的信息采集和处理,辅助提高超市的决策水平;

3.使用本系统,可以迅速提升超市的管理水平,为降低经营成本, 提高效益,增强超市扩张力, 提供有效的技术保障。

1.2背景说明

任何一个超市需要一个超市管理系统。该系统需要有顾客查询计算机、库存查询计算机、柜员终端机及中央计算机组成的网络系统。超市需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息。面对不同种类的信息,需要合理的数据库结构来保存数据信息,需要有效的程序结构支持各种数据操作的执行。如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市营业者努力追求的目标。

1.3项目确立

该超市管理系统主要分为两大系统,分别是前台销售系统和后台管理系统:前台销售系统包括对商品信息的录入和进行收银业务,后台管理系统分为统计系统、销售管理、库存管理、和人员管理。实现对超市的更加方便又好管理。

1.4应用范围

本系统适应于各种小型的超市。 2.主要步骤

2.1建立系统功能模型

2.1.1需求说明:

超市信息管理系统是一个面向超市用来进行超市日常信息处理的管理信息系统。该信息系统能够方便的为超市的售货员提供各种日常售货功能,也能够为超市的管理者提供各种管理功能,如进货、统计商品等。

(1)超市信息管理系统能够支持售货员日常售货功能。每一个售货员通过自己的用户名称和密码登录到售货系统中,为顾客提供服务。在售货员为顾客提供售货服务时,售货员接收顾客购买商品,根据系统的定价计算出商品的总价,顾客付款并接受售货员打印的货物清单,系统自动保存顾客购买商品记录。

(2)超市信息管理系统能够为超市的管理者提供管理功能。超市的管理包括库存管理、订货管理、报表管理和售货人员管理和系统维护等。库存管理员负责超市的库存管理;订货员负责超市的订货管理;统计分析员负责超市的统计分析管理;系统管理员负责超市的售货人员管理和系统维护。每种管理者都通过自己的用户名称和密码登录到各自的管理系统中。

(3)库存管理包括商品入库管理、处理盘点信息、处理报销商品信息和一些信息的管理设置信息。这些设置信息包括供应商信息、商品信息和特殊商品信息。库存管理员每天对商品进行一次盘点,当发现库存商品有损坏时,及时处理报损信息。当商品到货时,库存管理员检查商品是否合格后并将合格的商品进行入库。当商品进入卖场时,商品进行出库处理。

(4)订货管理是对超市所缺货物进行的订货处理,包括统计订货商品和制作订单等步骤。当订货员发现库存商品低于库存下限时,根据系统供应商信息,制作订单进行商品订货处理。

(5)统计分析管理包括查询商品信息、查询销售信息、查询供应商信息、查询缺货信息、查询报表信息和查询特殊商品信息,并制作报表。统计分析员使用系统的统计分析功能,了解商品信息、销售信息、供应商信息、库存信息和特殊商品信息,以便能够制定出合理的销售计划。

(6)系统管理包括维护员工信息、维护会员信息和系统维护。系统管理员通过系统管理功能,能够了解公司员工信息、会员信息,还能够对系统进行维护工作。 2.1.2 系统顶级用例图

销售管理售货员系统管理员顾客库存管理库存管理员订货 管理员工订货员身份 验证统计分析员统计查询

整个超市管理系统的每个用例之间的关系的描述如上述“顶级用例图”所示,可以通过此用例图来明确各执行者和用例之间的关系。

2.1.3主要业务系统的用例图

1.员工用例图:

修改员工信息身份验证员工<><>修改密码

员工是超市售货员和超市管理者的抽象,它所包含的行为是超市售货员和超市管理者共同的行为。员工在本系统中通过合法的身份验证;能够修改自身信息和密码。 2.售货员用例图

获取商品信息<>销售商品售货员<>更新销售信息<>打印购物清单顾客<>计算价格

售货员能够通过该系统进行销售商品活动。当售货员销售商品时,首先获取商品信息,然后将销售信息更新,如果顾客需要打印购物清单,则需要打印购物清单,在购物清单中需要对商品信息进行计价处理。 3.库存管理员用例图

盘点商品报销处理<>商品入库库存管理员检查商品商品出库<>更新供应商信息库存信息管理<>更新商品信息

库存管理员能够通过该系统进行如下活动:

(1)盘点商品。超市库存管理员每天需要对超市商品信息进行盘点。 (2)报销处理。超市库存管理员对超市损坏商品进行报销处理。

(3)商品入库。当商品到货时,库存管理员检查商品是否合格后并将合格的商品进行入库。

(4)商品出库。当商品进入卖场时,商品进行出库处理。

(5)管理设置。库存管理员负责供应商信息和商品基本信息的管理设置。 4.订货员用例图

<>统计订货商品订货管理订货员<>制作订单 订货员能够通过该系统进行订货管理活动。订货员首先根据商品缺货信息统计订货商品,根据需要订货商品信息制定出订单。

5.统计分析员用例图

查询商品基本信息查询销售信息统计分析员查询供应商信息查询缺货信息查询报损信息

统计分析员负责超市的统计分析管理,它能够通过该系统进行如下活动:

(1)查询商品基本信息。统计分析员能够查询商品的基本信息,根据商品的基本信息,制定出相应的方案。

(2)查询销售信息。统计分析员根据销售情况,制定合理的销售方案。 (3)查询供应商信息。统计分析员能够查询供应商信息。 (4)查询缺货信息。统计分析员能够查询缺货信息。 (5)查询报损信息。统计分析员能够查询报损信息。 6.系统管理员用例图

维护会员信息维护员工信息系统管理员系统设置

系统管理员能够通过该系统进行如下活动:

(1)维护会员信息。系统管理员能够维护超市会员的信息,如添加会员、删除会员和修改会员信息等。

(2)维护员工信息。系统管理员能够维护超市员工的信息,如添加员工、删除员工和修改员工信息等。

(3)系统设置。系统管理员能够根据一些需要进行必要的系统设置。

2.1.4 主要业务活动图

货物管理活动图

管理员系统验证登录【用户名,密码】登录【失败】显示错误验证不通过【成功】验证成功登录失败选择货物加载货物加载选择的货物显示 加载货物加载错误数据加载错误加载成功显示货物货物信息已加载修改货物保存货物信息显示报错错误错误加载数据已保存数据保存错误

“货物管理活动图”描述了完成一个货物管理信息操作所需要的活动,同时描述了该活动的序列.超市工作人员从“管理员”泳道开始“登录”活动,首先进入系统泳道验证用户名及其密码是否正确,“验证登录”泳道开展登录验证活动,通过与数据库连接判断登录是否合法。登录成功后通过逻辑判断加载货物是否成功,进而转移到用户界面中显示加载成功信息或显示加载出错信息。最后成功后保存数据。

2.2建立系统静态结构模型

2.2.1业务系统的详细类图

下面各个系统的详细类图描述了超市商品信息管理系统中所有的类及其属性与功能,还有类之间的直接关系。 1.员工登录模块类图

个人信息*-员工号:Integer-员工名字:String-数据:Date员 工-员工号:Integer-姓名:String-性别:String+个人信息()+修改密码()***密码-数据:Date 2.订货模块类图

订单信息1..*-货物:String-数据:Date订货 员-员工号-姓名-性别+统计订单信息()+制作订单()111..*订单-订单号:Integer-货物:String-数据:Date

3.库存管理模块类图

供应商信息-供应商编号:Integer-供应商名称:String-详细信息:Date库存管理 员-员工号:Integer-姓名:String-性别:String+检查商品()+供应商信息()+基本信息()+盘点商品()+报销处理()11..*11..*商品基本信息-商品编号:Integer-商品名称:String-数据:Date 4.统计分析模块类图

供应商信息1..*-供应商编号:Integer-供应商名称:String-详细信息:Date销售信息-商品编号:Integer-商品名称:String-数据:Date11..*统计分 析员-员工号:Integer-姓名:String-性别:String+查询商品基本信息()+查询销售信息()+查询供应商信息()+查询缺货信息()+查询报损信息()11商品基本信息111..*-商品编号:Integer-商品名称:String-数据:Date1..*缺货信息-商品编号:Integer-商品名称:String-数据:Date报销信息1..*-商品编号:Integer-商品名称:String-数据:Date 5.销售模块类图

销售信息*-商品编号:Integer-商品名称:String-数据:Date*销售员-员工号I:nteger-姓名:String-性别:String*+商品信()息+更新销售记录()+打印购物清单()**商品基本信息*-商品编号:Integer-商品名称:String-数据:Date顾 客-顾客编号:Integer-数据:Date+请求打印购物清单()**购物清单-清单编号:integer-数据:Date

2.3建立系统动态模型

2.3.1主要业务用例的顺序图和合作图

1.商品销售顺序图和合作图

顾客售货员商品管理界面1 : 购买商品()2 : 处理销售()3 : 获取商品信息()4 : 返回商品信息5 : 计价处理()8 : 付钱()7 : 显示处理商品9 : 交付商品6 : 更新商品记录()10 : 带走商品()

工作流程如下:

(1)顾客希望通过售货员购买商品,售货员希望通过售货管理子系统处理商品销售。

(2)顾客将购买商品提交给售货员。

(3)售货员通过销售管理子系统中的管理商品界面获取商品信息。 (4)管理商品界面根据商品的编号将商品类实例化并请求该商品信息。

(5)商品类实例化对象根据商品的编号加载商品信息并提供给管理商品界面。 (6)管理商品界面对商品进行计价处理。 (7)管理商品界面更新销售商品信息。 (8)管理商品界面显示处理商品。 (9)售货员将货物提交给顾客。 2.商品入库顺序图和合作图

库存管理员入库单商品入库单数据库商品数据库1 : 输入入库单对象()2 : 录入数据库()3 : 返回入库单对象4 : 修改商品信息()5 : 录入数据库()6 : 返回更新

工作流程如下:

(1)库存管理员希望通过库存管理子系统将购买的货物处理入库

(2)库存管理员通过库存管理子系统中的商品入库单获取商品信息。 (3)商品入库单根据商品的编号将商品类实例化并录入入库单数据库中。 (4)商品类实例化对象根据商品的编号加载商品信息并返回给库存管理员。 (5)库存管理员通过商品入库界面修改商品信息。

(6)商品界面通过商品类实例化对象修改商品信息并录入到商品数据库中。 (7)商品类实例化对象库存管理员返回更新修改信息。 3.商品出库顺序图

库存管理员进货订单商品商品出库缺货清单商品数据库缺货单数据库1 : 返回订单2 : 审核订单()3 : 查询商品库存量()4 : 进入数据库查询()5 : 返回查询结果6 : 商品出库()7 : 返回出库信息8 : 添加缺货清单()9 : 录入数据库()10 : 返回缺货信息工作流程如下:

(1)订货员希望通过订货管理子系统处理商品订货管理。

(2)订货员通过订货管理子系统中的进货订单界面获取待订货商品信息。 (3)商品界面将商品类实例化并根据商品的数量应当满足的条件请求有关商品信息。

(4)商品类实例化对象根据商品的数量应当满足的条件加载商品信息并提供给缺货清单界面。

(5)订货员通过订货管理子系统中的缺货清单界面获取待订货厂商信息。 (6)订货管理界面将供应商类实例化并根据商品的类型请求有关供应商信息。 (7)供应商类实例化对象加载供应商信息并提供给缺货清单界面。 (8)订货员通过订货管理子系统中的缺货清单界面制作相关订单。 (9)订货管理界面制作相关缺货清单并显示给订货员。 4.商品查询顺序图

售货员商品管理商品商品数据库1 : 输入查询条件()2 : 搜索查询商品()3 : 由数据库获取商品信息()5 : 返回商品信息6 : 返回查询对象的信息4 : 返回查询的信息

工作流程如下:

(1)售货员希望通过商品管理系统查询商品信息。

(2)售货员通过商品管理系统中的查询商品信息界面获取商品信息。

(3)查询商品管理界面根据商品的属性或特征将商品类实例化并请求该类商品信息。

(4)商品类实例化对象加载商品信息,并返回给商品管理界面。 (5)查询商品信息界面显示该类商品信息。

(6)查询商品信息界面将该类商品报表显示给销售员。

2.3.2主要业务对象的状态图

1.商品状态图

商品库存管理商品被销售合格未入库商品商品入库入库商品不合格商品报损

在超市信息管理系统中,我们将有明确状态转换的类进行描述,以下我们以商品的状态图为例,简单进行说明。

商品包含以下的状态:刚被购买还未入库后的商品、被添加能够出售的商品、商品被出售、商品被回收。它们之间的转化规则是:

(1)刚被购买后的商品可以通过库存管理员添加成为入库的商品。 (2)当入库商品被出售,商品处于被销售状态。

(3)当商品由于过期、损坏等因素造成的不合格时,商品报损并回收。

2.商品销售状态图

商品销售售货员输入购物清单更新库存库存更新后有货显示库存更新后无货缺货清单统计分析员入库缺货商品采购订货单

商品销售状态图描述了商品对象所具有的各种状态和这个对象从一种状态到另一种状态的转换,以及影响商品这些状态的流通事件。 2.4 绘制系统实现模型

2.4.1商品信息管理系统构件图

管理员数据库销售员数据库商品信息页面货物数据库销售信息页面Persistent,增加,删除,更新页面

在超市信息管理系统中,我们通过构件映射到系统的实现类中,说明该构件物理实现的逻辑类。例如,在超市信息管理系统中,我们可以对创建货物管理构件图所对应的构件进行映射。 2.4.2 商品信息管理系统配置图

系统管理子系统:员工登录管理售货管理子系统:售货员库存管理子系统:商品库存SQL数据库服务器:商品数据库统计分析子系统:商品统计分析订货管理子系统:商品订货管理在超市信息管理系统中,系统包括五种子系统,分别是:前台售货管理子系统,系统管理子系统,库存管理子系统,订货管理子系统,统计分析子系统。售货员通过售货管理子系统进行商品更新跟收银;系统管理员通过系统管理子系统进行系统维护和员工信息维护;库存管理员通过其子系统进行商品库存管理和维护;订货管理员通过订货管理子系统进行商品订货管理;统计分析员通过统计分析子系统进行商品统计分析。最后这些数据都存储在商品数据库中。

3.系统的主要框架

选取Java设计语言,执行正向工程后得出各个类的代码如下:

// // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : 报销信息.java // @ Date : 7/8 // @ Author : // // public class 报销信息 { private Object 商品编号:Integer; private Object 商品名称:String; private Object 数据:Date; } // // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : 订货 员.java // @ Date : 7/8 // @ Author : // //

public class 订货 员 { private Object 员工号; private Object 姓名; private Object 性别; public void 统计订单信息() {

}

public void 制作订单() {

} } // // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : 购物清单.java // @ Date : 7/8 // @ Author : // //

public class 购物清单 { private Object 清单编号:integer; private Object 数据:Date; } // // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : 密码.java // @ Date : 7/8 // @ Author : // //

public class 密码 extends 员 工 { private Object 数据:Date; } // // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : 订单.java // @ Date : 7/8 // @ Author : // //

public class 订单 { private Object 订单号:Integer; private Object 货物:String; private Object 数据:Date; } // // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : 个人信息.java // @ Date : 7/8 // @ Author : // //

public class 个人信息 extends 员 工 { private Object 员工号:Integer; private Object 员工名字:String; private Object 数据:Date; } // // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : 顾 客.java // @ Date : 7/8 // @ Author : // //

public class 顾 客 { private Object 顾客编号:Integer; private Object 数据:Date; public void 请求打印购物清单() {

} } // // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : 缺货信息.java // @ Date : 7/8 // @ Author : // //

public class 缺货信息 { private Object 商品编号:Integer; private Object 商品名称:String; private Object 数据:Date; } // // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : 缺货信息.java // @ Date : 7/8 // @ Author : // //

public class 缺货信息 { private Object 商品编号:Integer; private Object 商品名称:String; private Object 数据:Date; } // // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : 销售员.java // @ Date : 7/8 // @ Author : // //

public class 销售员 { private Object 员工号:Integer; private Object 姓名:String; private Object 性别:String; public void 商品信息() {

}

public void 更新销售记录() {

}

public void 打印购物清单() {

} } // // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : 员 工.java // @ Date : 7/8 // @ Author : // //

public class 员 工 { private Object 员工号:Integer; private Object 姓名:String; private Object 性别:String; public void 个人信息() {

}

public void 修改密码() {

} } // // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : 订单信息.java // @ Date : 7/8 // @ Author : // //

public class 订单信息 { private Object 货物:String; private Object 数据:Date; } // // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : 供应商信息.java // @ Date : 7/8 // @ Author : // //

public class 供应商信息 { private Object 供应商编号:Integer; private Object 供应商名称:String; private Object 详细信息:Date; } // // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : 库存管理 员.java // @ Date : 7/8 // @ Author : // //

public class 库存管理 员 { private Object 员工号:Integer; private Object 姓名:String; private Object 性别:String; public void 检查商品() {

}

public void 供应商信息() {

}

public void 基本信息() {

}

public void 盘点商品() {

} public void 报销处理() {

} } // // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : 商品基本信息.java // @ Date : 7/8 // @ Author : // //

public class 商品基本信息 { private Object 商品编号:Integer; private Object 商品名称:String; private Object 数据:Date; } // // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : 统计分 析员.java // @ Date : 7/8 // @ Author : // //

public class 统计分 析员 { private Object 员工号:Integer; private Object 姓名:String; private Object 性别:String; public void 查询商品基本信息() {

}

public void 查询销售信息() {

}

public void 查询供应商信息() {

}

public void 查询缺货信息() {

}

public void 查询报损信息() {

} } // // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : 销售信息.java // @ Date : 7/8 // @ Author : // //

public class 销售信息 { private Object 商品编号:Integer; private Object 商品名称:String; private Object 数据:Date; } 4.实验心得体会

这次UML的综合训练,是我对于这门课的基础知识掌握得更加的坚牢可靠,类似于10中基本图形,UML建模的各种方法和建模工具的使用方法。通过这次的实验也使我更加认识到UML在软件开发阶段的重要性,它真的是一个很好的建模分析工具。

每次自己亲手做实验总是会有很多的收获,从原因和结果的总结分析我就知道了知识是要灵活应用才行。所以,书本里的例题会了是远远不够的,你或许会的只是这道题而不是解开这道题的方法。很高兴这次实验能够把知识融会贯通,真正学会。

第三篇:小型超市系统分析报告

1 课题说明

1.1课题名称小型超市管理系统

1.2 开发背景

众所周知,超市的商品的存储和调配是不可忽视的问题,好的后备调配对前台的产品销售有很大的帮助,也可以很大程度上提高产品的销售效率,满足消费者的消费需求。如果可以能够实时掌握销售流程及销售情况,则可以有效地加速商品的周转率并提高服务质量,而且可以减少产品售价不符等所产生的问题。顾客的消费要求的是希望在超市购物中能基本上都能购得所需的商品,并且还要既保证商品质量还要享受优质,方便的服务。但在超市日常管理中,商品的进、销、存等决策以经验为主,缺乏实时分析功能,管理人员对及时传递资料的要求始终得不到满足。为此,在选题过程中,我们开发小组选择了超市管理系统设计题目,依靠现代化的计算机信息处理技术来管理超市,从而节省了大量的人力、物力,改善了员工的工作条件,减轻了劳动强度,并且能够快速反映出商品的进、销、存等状况和各种反馈信息分析,使管理人员快速对市场的变化做出相应的决策,加快超市经营管理效率。

1.3 开发思路

超市的管理至关重要,对商品的管理包括进、销、存三个方面,将从这方面入手建立一个超市的管理系统,减轻了超市的管理员、营业员和库存管理员等的工作量,从而是超市更加便于管理。

2 需求调查报告

2.1 功能需求

①在需要时生成商品库存情况报告,实时报告商品库存情况,如库存量不足时,课生成缺货报告,并提供商品种类、来源信息等。②采购员采购商品后,及时录入商品信息等数据并更新。③货架上商品卖到一定数量时实时生成提货报告并提

供商品的库存信息以及剩余信息。④在收银处,随时录入卖出的商品信息。⑤当超市客户大批量需要某商品时,允许直接从商品仓库中提货,此时应及时更新数据库信息。⑥在某段时间内,当某商品卖出数量较大,受到欢迎,可将此类商品打印输出,用于市场导购和商品采购指导。

第四篇: 小型超市管理系统开发实例

一.项目论证和计划 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、 用户工作流程

与超市运转相关的群体主要有顾客、销售员和超市工作人员。围绕着三大群体,我们设计了以下流程。进货或销售商品时,用户要对订单或销售单进行核对审查,这时不同的用户需要填写与各自身份相对应的信息,经系统默认,进入到相应的界面,通过指导查询所需信息,如进货信息、销售信息和商品信息等。

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) 根据不同的目的取得不同的商品权限。

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

上一篇:红楼梦读书笔记1200字下一篇:高速公路2010质量规划