《北大青鸟第一单元超市收银管理系统.doc》由会员分享,可在线阅读,更多相关《北大青鸟第一单元超市收银管理系统.doc(39页珍藏版)》请在三一办公上搜索。
1、包结构四个包,九个类,一个资源文件客户端类package com.supermarket.Client;/* * 客户端界面 */import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.Scanner;import com.supermarket.Tools.Datas;import com.supermarket.Tools.SysConstans;import com.supermarket.entity.Goods;public class Cl
2、ient /定义扫描器,用于键盘输入public static Scanner input=new Scanner(System.in);/创建客户端业务类对象,调用方法public static ClientB cb=new ClientB();public static void main(String args) doSystem.out.println(*欢迎使用青鸟超市系统*);System.out.println(1.登录+n2.退出);System.out.println(*请选择1/2*);String choice=input.next();if(choice.equals(
3、1)/登录视图createLoginView();break;else if(choice.equals(2)/退出System.exit(0);else/输入有误,报错System.out.println(无此选项!);while(true);System.out.println(*谢谢使用青鸟超市系统*);/* * 登录视图 * 通过输入的用户名与密码验证用户身份,管理员则进入管理界面,收银员则进入收银界面,都不是则提示错误,并重新进行输入 */public static void createLoginView()do /提示登录信息System.out.println(请输入用户名:)
4、;String name = input.next();System.out.println(请输入密码:);String password = input.next();/调用客户端登录方法,接收返回值,判断登录者的身份Datas datas = cb.doLogin(name, password); /判断是管理员还是收银员if (datas.getFlag().equals(SysConstans.SYS_ADMIN) createAdminView();break; else if (datas.getFlag().equals(SysConstans.SYS_CASHIER) cre
5、ateCashierView();break; else System.out.println(用户名或密码有误,请重新输入); while (true);/* * 管理员菜单 * 实现管理员功能: * 1.商品入库2.商品出库3.新增商品4.查询全部商品5.按编号查询商品6.退出 */private static void createAdminView() /循环操作/ 管理员菜单System.out.println(管理员登录成功,进入管理员界面);doSystem.out.println(*欢迎进入青鸟超市库存管理系统*);System.out.println(1.商品入库t2.商品出
6、库t3.新增商品t4.查询全部商品t5.按序号查询商品t6.退出);/提示用户选择System.out.println(请输入您的选择);int choice=input.nextInt();switch(choice)/商品入库,调入库方法case 1:/提示输入要入库的编号System.out.println(请输入入库商品编号:);/定义变量接收输入的编号String goodnum=input.next();/调用方法判断库存中是否有要入库的商品if(cb.Find(goodnum).getFlag().equals(SysConstans.SYS_SUCCESS)System.out
7、.println(请输入入库数量:);int count=input.nextInt();if(count=0)Datas datas=cb.RuKu(goodnum,count);if(datas.getFlag().equals(SysConstans.SYS_SUCCESS)System.out.println(入库成功!);showList(cb.FindAll();elseSystem.out.println(入库数量必须大于0);elseSystem.out.println(无此商品,请选择3新增);break;/商品出库,调出库方法case 2:do/提示输入出库商品编号Syst
8、em.out.println(请选择出库商品编号:);/定义变量接收编号String goodid=input.next();/先查询是否由此商品if(cb.Find(goodid).getFlag().equals(SysConstans.SYS_SUCCESS)/提示输入出库数量System.out.println(请输入出库数量:);int count=input.nextInt();if(count0)Datas datas=cb.ChuKu(goodid,count);if(datas.getFlag().equals(SysConstans.SYS_LACK)System.out.
9、println(库存不足!);showGood(datas);break;elseSystem.out.println(出库成功!);showList(datas);break;elseSystem.out.println(出库数量必须大于0!);elseSystem.out.println(库存中无此商品,请选择3新增);break;while(true);break;case 3:/新增商品,调新增方法do/提示输入新增商品编号System.out.println(请输入新增商品的编号:);String newgoodid=input.next();if(cb.Find(newgoodid
10、).getFlag().equals(SysConstans.SYS_SUCCESS)System.out.println(商品已存在);break;elseSystem.out.println(请输入商品名称:);String name=input.next();System.out.println(请输入商品单价:);double price=input.nextDouble();System.out.println(请输入商品单位:);String unit=input.next();System.out.println(请输入商品数量:);int count=input.nextInt
11、();Goods good=new Goods(newgoodid,(name+t),price,unit,count);/把要新增的商品通过调用方法传给业务类,并接收返回值Datas datas=cb.Add(good);System.out.println(新增商品成功!);/打印商品列表showList(cb.FindAll();break;while(true);break;/查询全部商品的方法case 4:/查询商品,调用showList方法参数为Datas类型,是FindAll传回来的showList(cb.FindAll();break;/按编号查询商品,调按编号查询方法case
12、 5:/提示输入编号System.out.println(请输入要查询的编号:);/定义变量接收输入String id=input.next(); /判断库存中是否存在编号为goodid的商品Datas datas=cb.Find(id); /如果存在,调用方法,打印商品 if(datas.getFlag().equals(SysConstans.SYS_SUCCESS) showGood(datas); else System.out.println(没有此商品); break;case 6:/退出System.out.println(管理员退出成功!);System.exit(0);def
13、ault :/提示无此选项System.out.println(无此选项,请重新输入:);while(true);/* * 收银员管理界面. * 实现收银员的功能: * 1.扫描商品2.修改购买商品的数量3.结账4.退出 */收银员管理界面private static void createCashierView() /循环操作收银界面while(true)System.out.println(收银员登录成功,进入收银员界面);System.out.println(*欢迎进入青鸟超市收银管理系统*);System.out.println(1.扫描商品t2.修改数量t3.结账t4.退出);/提示
14、用户输入操作选项System.out.println(请输入您的选择:);int choice=input.nextInt();switch(choice)case 1:/调用扫描方法do/提示输入扫描编号System.out.println(请输入要扫描的商品编号:);String scannum=input.next();/如果查询到编号,说明商品存在,否则商品不存在if(cb.Find(scannum).getFlag().equals(SysConstans.SYS_SUCCESS)/如果商品存在,调用扫描的方法Datas datas=cb.scan(scannum);/判断返回的标识
15、if(datas.getFlag().equals(SysConstans.SYS_SUCCESS)System.out.println(扫描成功);showScan(datas);break;elseSystem.out.println(扫描失败);/showScan(datas);break;elseSystem.out.println(商品不存在!);break;while(true);break;case 2:/修改数量的方法/判断购买列表是否为空if(cb.result().getFlag().equals(SysConstans.SYS_ERROR)System.out.print
16、ln(购买列表中还没有购买物品!);continue;/循环操作数据do/提示用户输入要修改的编号,并判断购买列表中是否存在此编号System.out.println(请输入要修改的商品编号:);String changeid=input.next();Datas datas=new Datas();/调用方法判断是否存在商品编号if(hasid(changeid)/存在,提示修改数量System.out.println(请输入修改后的数量);int changenum=input.nextInt();if(changenum1) datas=cb.ChangeCount(changeid,c
17、hangenum);if(datas.getFlag().equals(SysConstans.SYS_LACK)System.out.println(数量不足,请确认!);showGood(cb.Find(changeid);continue;elseSystem.out.println(修改成功!);showScan(cb.result();break;elseSystem.out.println(购买数量必须大于0!);break;/如果包含,提示修改数量System.out.println(购买列表中无此商品,请核实);continue;while(true);break;case 3
18、:/调用结账方法creatOver();break;case 4:/退出System.out.println(收银员退出系统成功!);System.exit(0);default:/错误提示System.out.println(输入有问题,请重新输入:);/* * 打印商品列表的方法,参数是Datas类型,无返回值 * 通过调用客户端业务类的方法得到返回值,打印商品列表 * param datas */打印商品列表private static void showList(Datas datas)System.out.println(-);System.out.println(商品编号tt商品名
19、称tttt商品单价tt单位tt数量);for(Goods good:datas.getGoodslist()System.out.println(good.getGoodid()+tt+good.getGoodname()+tt+good.getGoodprice()+tt+good.getGoodunit()+tt+good.getGoodcount();System.out.println(-);/* * 按编号查询商品的方法.得到返回值,直接打印返回值中的商品 * param datas */打印单个商品private static void showGood(Datas datas)S
20、ystem.out.println(-);System.out.println(商品编号tt商品名称tttt商品单价tt单位tt数量);System.out.println(datas.getGood().getGoodid()+tt+datas.getGood().getGoodname()+tt+datas.getGood().getGoodprice()+tt+datas.getGood().getGoodunit()+tt+datas.getGood().getGoodcount();System.out.println(-);/* * 收银员菜单中的扫描商品的方法后打印扫描商品列表的
21、方法 * * param datas */打印扫描商品列表private static void showScan(Datas datas)if(datas.getFlag().equals(SysConstans.SYS_SUCCESS)/定义列表接收扫描后的购买列表ArrayList scanlist=datas.getBuylist();/输出商品列表System.out.println(商品编号t商品名称tttt数量tt单价tt金额);System.out.println(-);for(Goods good:scanlist)System.out.println(good.getGoo
22、did()+t+good.getGoodname()+tt+good.getGoodcount()+tt+good.getGoodprice()+tt+(good.getGoodprice()*good.getGoodcount();System.out.println(-);/* * 查询购买列表中是否存在要修改数量的商品 * 参数为商品编号,如果存在,返回true.不存在则返回false * param id * return */查询购买列表中是否存在要修改数量商品的编号private static boolean hasid(String id)Datas datas=new Data
23、s();datas.setBuylist(cb.result().getBuylist();for(Goods good:datas.getBuylist()if(good.getGoodid().equals(id)return true;return false;/* * 结账方法,分为普通结账和会员结账 * 普通结账和会员结账,分别调用普通结账方法和会员结账方法 */结账方法private static void creatOver() /首先打印购买列表,算出总金额.调用普通结账,或vip结账double money=sum(cb.result();/System.out.printl
24、n(您的消费金额是:+money);/提示选择结账方法if(money!=0)System.out.println(请选择结账方法:);System.out.println(1.普通结账t2.会员结账);int choice=input.nextInt();if(choice=1)/普通会员结账方法System.out.println(您的消费金额是:+money);doSystem.out.println(请输入金额:);int pay=input.nextInt();if(pay0)System.out.println(请输入正确金额!);else if(pay=money)/System
25、.out.println();/结账成功.调用结账方法,打印小票,并跳出结账.Over(money, pay);break;elseSystem.out.println(请输入正确格式:);while(true);else if(choice=2)/vip会员结账方法,会员卡号2011.System.out.println(您的消费金额是:+money);System.out.print(请输入您的会员卡号:);doint vip = input.nextInt();if(vip=2013)System.out.print(会员卡号正确,请输入您要支付的金额:);int vippay=inpu
26、t.nextInt();if(vippay0)if(vippaymoney)/金额足够时调用vip结账方法VipOver(money, vippay);break;elseSystem.out.println(付款金额不足);elseSystem.out.println(付款金额必须大于0!);elseSystem.out.println(您的会员卡号不正确:);while(true);elseSystem.out.println(无此结账方法);else System.out.println(您还没有扫描商品);/* * 结账时用到的计算购买金额的方法,如果buylist不为空,则返回购买金
27、额.否则返回0. * * param result * return */算出购买总金额的方法private static double sum(Datas result)/首先判断购买列表是否为空,不为空则算出购买金额if(cb.result().getFlag().equals(SysConstans.SYS_SUCCESS)ArrayList list=cb.result().getBuylist();double sum=0;/购买总额for(int i=0;ilist.size();i+)sum+=list.get(i).getGoodprice()*list.get(i).getG
28、oodcount();return sum;elsereturn 0;/计算购买数量的方法private static int sumBuyListCount(Datas result)if(cb.result().getFlag().equals(SysConstans.SYS_SUCCESS)ArrayList list=cb.result().getBuylist();int goodscount=0;for(int i=0;ilist.size();i+)goodscount+=list.get(i).getGoodcount();return goodscount;elseretur
29、n 0;/* * 普通结账方法.返回结账视图,并清空购买菜单 * param money * param pay */普通用户结账的方法private static void Over(double money,int pay)/首先打印,小票的表头System.out.println(*);System.out.println(tttt青鸟超市);System.out.println(收银员:1001t小票号: + ticket();/显示购买列表showbuylist();/显示购买金额和购买的数量,结账提示System.out.println(总数量: + sumBuyListCount
30、(cb.result()+ ttt应收: + money);System.out.println(实收: + pay + tt找零: + (pay-money);System.out.println(Date();System.out.println(此小票是您退换货及核对积分的凭证,请妥善保存!);System.out.println(*);/购买列表清空cb.clear();/* * Vip会员结账方法.返回结账视图,累计会员积分,并清空购买菜单 * param money * param pay */vip用户结账方法private static void VipOver(double
31、money,int vippay)/首先打印,小票的表头System.out.println(*);System.out.println(tttt青鸟超市);System.out.println(收银员:1001t小票号: + ticket();/显示购买列表showbuylist();/显示购买金额和购买的数量,结账提示System.out.println(总数量: +sumBuyListCount(cb.result() + ttt应收: + money);System.out.println(实收: + vippay + tt找零: + (vippay-money);/Vip积分提示Sy
32、stem.out.println(本次累计积分成功tt卡号:2011);System.out.println(消费前积分 + 本次消费积分 = 消费后积分);System.out.println(2000+(int)money+=+(2000+(int)money);System.out.println(Date();System.out.println(此小票是您退换货及核对积分的凭证,请妥善保存!);System.out.println(*);/购买列表清空cb.clear();/* * 打印购买菜单的方法. */打印购买列表的方法private static void showbuyli
33、st()ArrayList buylist=cb.result().getBuylist();System.out.println(序tt商品名称(单位)tttt数量tt单价tt金额);System.out.println(-);for(int i=0;ibuylist.size();i+)System.out.println(i+1)+tt(+buylist.get(i).getGoodid()+)+buylist.get(i).getGoodname()+buylist.get(i).getGoodunit()+ttt+buylist.get(i).getGoodcount()+tt+buylist.get(i).getGoodprice()+tt+buylist.get(i).getGoodcount()*buylist.get(i).getGoodprice();System.out.println(-);/* * 得到日期的方法,在结账时显示日期用 * return */显示日期的方法private static String Date()Date date=new Date();SimpleDateFormat sdf=new SimpleDateF
链接地址:https://www.31ppt.com/p-3447437.html