收藏 分销(赏)

北大青鸟第一单元超市收银管理系统.docx

上传人:xrp****65 文档编号:8895909 上传时间:2025-03-07 格式:DOCX 页数:39 大小:56.55KB 下载积分:10 金币
下载 相关 举报
北大青鸟第一单元超市收银管理系统.docx_第1页
第1页 / 共39页
北大青鸟第一单元超市收银管理系统.docx_第2页
第2页 / 共39页


点击查看更多>>
资源描述
包结构 四个包,九个类,一个资源文件 客户端类 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 Client { //定义扫描器,用于键盘输入 public static Scanner input=new Scanner(System.in); //创建客户端业务类对象,调用方法 public static ClientB cb=new ClientB(); public static void main(String[] args) { do{ System.out.println("***********欢迎使用青鸟超市系统*************"); System.out.println("1.登录"+"\n2.退出"); System.out.println("***********请选择1/2*************"); String choice=input.next(); if(choice.equals("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("请输入用户名:"); 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)) { createCashierView(); break; } else { System.out.println("用户名或密码有误,请重新输入"); } } while (true); } /** * 管理员菜单 * 实现管理员功能: * 1.商品入库 2.商品出库 3.新增商品 4.查询全部商品 5.按编号查询商品 6.退出 */ private static void createAdminView() { //循环操作 // 管理员菜单 System.out.println("管理员登录成功,进入管理员界面"); do{ System.out.println("***********欢迎进入青鸟超市库存管理系统*************"); System.out.println("1.商品入库\t2.商品出库\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.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()); } }else{ System.out.println("入库数量必须大于0"); } }else{ System.out.println("无此商品,请选择3新增"); } break; //商品出库,调出库方法 case 2: do{ //提示输入出库商品编号 System.out.println("请选择出库商品编号:"); //定义变量接收编号 String goodid=input.next(); //先查询是否由此商品 if(cb.Find(goodid).getFlag().equals(SysConstans.SYS_SUCCESS)){ //提示输入出库数量 System.out.println("请输入出库数量:"); int count=input.nextInt(); if(count>0){ Datas datas=cb.ChuKu(goodid,count); if(datas.getFlag().equals(SysConstans.SYS_LACK)){ System.out.println("库存不足!"); showGood(datas); break; }else{ System.out.println("出库成功!"); showList(datas); break; } }else{ System.out.println("出库数量必须大于0!"); } }else{ System.out.println("库存中无此商品,请选择3新增"); break; } }while(true); break; case 3: //新增商品,调新增方法 do{ //提示输入新增商品编号 System.out.println("请输入新增商品的编号:"); String newgoodid=input.next(); if(cb.Find(newgoodid).getFlag().equals(SysConstans.SYS_SUCCESS)){ System.out.println("商品已存在"); break; } else{ System.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(); 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 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); default : //提示无此选项 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.退出"); //提示用户输入操作选项 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); //判断返回的标识 if(datas.getFlag().equals(SysConstans.SYS_SUCCESS)){ System.out.println("扫描成功"); showScan(datas); break; }else{ System.out.println("扫描失败"); // showScan(datas); break; } }else{ System.out.println("商品不存在!"); break; } }while(true); break; case 2: //修改数量的方法 //判断购买列表是否为空 if(cb.result().getFlag().equals(SysConstans.SYS_ERROR)){ System.out.println("购买列表中还没有购买物品!"); continue; } //循环操作数据 do{ //提示用户输入要修改的编号,并判断购买列表中是否存在此编号 System.out.println("请输入要修改的商品编号:"); String changeid=input.next(); Datas datas=new Datas(); //调用方法判断是否存在商品编号 if(hasid(changeid)){ //存在,提示修改数量 System.out.println("请输入修改后的数量"); int changenum=input.nextInt(); if(changenum>1){ datas=cb.ChangeCount(changeid,changenum); if(datas.getFlag().equals(SysConstans.SYS_LACK)){ System.out.println("数量不足,请确认!"); showGood(cb.Find(changeid)); continue; }else{ System.out.println("修改成功!"); showScan(cb.result()); break; } }else{ System.out.println("购买数量必须大于0!"); break; } } //如果包含,提示修改数量 System.out.println("购买列表中无此商品,请核实"); continue; }while(true); break; case 3: //调用结账方法 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("商品编号\t\t商品名称\t\t\t\t商品单价\t\t单位\t\t数量"); for(Goods good:datas.getGoodslist()){ System.out.println(good.getGoodid()+"\t\t"+good.getGoodname()+"\t\t"+good.getGoodprice()+"\t\t"+good.getGoodunit()+"\t\t"+good.getGoodcount()); } System.out.println("------------------------------------------------------------------------------------------------"); } /** * 按编号查询商品的方法.得到返回值,直接打印返回值中的商品 * @param datas */ //打印单个商品 private static void showGood(Datas datas){ System.out.println("------------------------------------------------------------------------------------------------"); System.out.println("商品编号\t\t商品名称\t\t\t\t商品单价\t\t单位\t\t数量"); System.out.println(datas.getGood().getGoodid()+"\t\t"+datas.getGood().getGoodname()+"\t\t" +datas.getGood().getGoodprice()+"\t\t"+datas.getGood().getGoodunit()+"\t\t"+datas.getGood().getGoodcount()); System.out.println("------------------------------------------------------------------------------------------------"); } /** * 收银员菜单中的扫描商品的方法后打印扫描商品列表的方法 * * @param datas */ //打印扫描商品列表 private static void showScan(Datas datas){ if(datas.getFlag().equals(SysConstans.SYS_SUCCESS)){ //定义列表接收扫描后的购买列表 ArrayList<Goods> scanlist=datas.getBuylist(); //输出商品列表 System.out.println("商品编号\t商品名称\t\t\t\t数量\t\t单价\t\t金额"); System.out.println("------------------------------------------------------------------------------------------------"); for(Goods good:scanlist){ System.out.println(good.getGoodid()+"\t"+good.getGoodname()+"\t\t"+good.getGoodcount()+"\t\t"+good.getGoodprice()+"\t\t"+ (good.getGoodprice()*good.getGoodcount())); } System.out.println("------------------------------------------------------------------------------------------------"); } } /** * 查询购买列表中是否存在要修改数量的商品 * 参数为商品编号,如果存在,返回true.不存在则返回false * @param id * @return */ //查询购买列表中是否存在要修改数量商品的编号 private static boolean hasid(String id){ Datas datas=new Datas(); 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.println("您的消费金额是:"+money); //提示选择结账方法 if(money!=0){ System.out.println("请选择结账方法:"); System.out.println("1.普通结账\t2.会员结账"); int choice=input.nextInt(); if(choice==1){ //普通会员结账方法 System.out.println("您的消费金额是:"+money); do{ System.out.println("请输入金额:"); int pay=input.nextInt(); if(pay<0){ System.out.println("请输入正确金额!"); }else if(pay<money){ System.out.println("金额不足,请确认!"); }else if(pay>=money){ // System.out.println(); //结账成功.调用结账方法,打印小票,并跳出结账. Over(money, pay); break; }else{ System.out.println("请输入正确格式:"); } }while(true); }else if(choice==2){ //vip会员结账方法,会员卡号2011. System.out.println("您的消费金额是:"+money); System.out.print("请输入您的会员卡号:"); do{ int vip = input.nextInt(); if(vip==2013){ System.out.print("会员卡号正确,请输入您要支付的金额:"); int vippay=input.nextInt(); if(vippay>0){ if(vippay>money){ //金额足够时调用vip结账方法 VipOver(money, vippay); break; }else{ System.out.println("付款金额不足"); } }else{ System.out.println("付款金额必须大于0!"); } }else{ System.out.println("您的会员卡号不正确:"); } }while(true); }else{ System.out.println("无此结账方法"); } }else { System.out.println("您还没有扫描商品"); } } /** * 结账时用到的计算购买金额的方法,如果buylist不为空,则返回购买金额.否则返回0. * * @param result * @return */ //算出购买总金额的方法 private static double sum(Datas result){ //首先判断购买列表是否为空,不为空则算出购买金额 if(cb.result().getFlag().equals(SysConstans.SYS_SUCCESS)){ ArrayList <Goods> list=cb.result().getBuylist(); double sum=0; //购买总额 for(int i=0;i<list.size();i++){ sum+=list.get(i).getGoodprice()*list.get(i).getGoodcount(); } return sum; }else return 0; } //计算购买数量的方法 private static int sumBuyListCount(Datas result){ if(cb.result().getFlag().equals(SysConstans.SYS_SUCCESS)){ ArrayList<Goods> list=cb.result().getBuylist(); int goodscount=0; for(int i=0;i<list.size();i++){ goodscount+=list.get(i).getGoodcount(); } return goodscount; }else{ return 0; } } /** * 普通结账方法.返回结账视图,并清空购买菜单 * @param money * @param pay */ //普通用户结账的方法 private static void Over(double money,int pay){ //首先打印,小票的表头 System.out.println("***************************************************************************************************"); System.out.println("\t\t\t\t青鸟超市"); System.out.println("收银员:1001\t小票号:" + ticket()); //显示购买列表 showbuylist(); //显示购买金额和购买的数量,结账提示 System.out.println("总数量:" + sumBuyListCount(cb.result())+ "\t\t\t应收: " + money); System.out.println("实收: " + pay + "\t\t找零: " + (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 money,int vippay){ //首先打印,小票的表头 System.out.println("***************************************************************************************************"); System.out.println("\t\t\t\t青鸟超市"); System.out.println("收银员:1001\t小票号:" + ticket()); //显示购买列表 showbuylist(); //显示购买金额和购买的数量,结账提示 System.out.println("总数量:" +sumBuyListCount(cb.result()) + "\t\t\t应收: " + money); System.out.println("实收: " + vippay + "\t\t找零: " + (vippay-money)); //Vip积分提示 System.out.println("本次累计积分成功\t\t卡号: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 showbuylist(){ ArrayList <Goods> buylist=cb.result().getBuylist(); System.out.println("序\t\t商品名称(单位)\t\t\t\t数量\t\t单价\t\t金额"); System.out.println("------------------------------------------------------------------------------------------------"); for(int i=0;i<buylist.size();i++){ System.out.println((i+1)+"\t\t("+buylist.get(i).getGoodid()+")"+buylist.get(i).getGoodname()+buylist.get(i).getGoodunit()+"\t\t\t"+buylist.get(i).getGoodcount()+"\t\t"+buylist.get(i).getGoodprice()+"\t\t"+buylist.get(i).getGoodcount()*buylist.get(i).getGoodprice()); } System.out.println("------------------------------------------------------------------------------------------------"); } /** * 得到日期的方法,在结账时显示日期用 * @return */ //显示日期的方法 private static String Date(){ Date date=new Date(); SimpleDateFormat sdf=new SimpleDateFor
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服