北大青鸟第一单元超市收银管理系统解析.docx
《北大青鸟第一单元超市收银管理系统解析.docx》由会员分享,可在线阅读,更多相关《北大青鸟第一单元超市收银管理系统解析.docx(61页珍藏版)》请在冰豆网上搜索。
北大青鸟第一单元超市收银管理系统解析
包结构
四个包,九个类,一个资源文件
客户端类
packagecom.supermarket.Client;
/**
*客户端界面
*/
importjava.text.SimpleDateFormat;
importjava.util.ArrayList;
importjava.util.Date;
importjava.util.Scanner;
importcom.supermarket.Tools.Datas;
importcom.supermarket.Tools.SysConstans;
importcom.supermarket.entity.Goods;
publicclassClient{
//定义扫描器,用于键盘输入
publicstaticScannerinput=newScanner(System.in);
//创建客户端业务类对象,调用方法
publicstaticClientBcb=newClientB();
publicstaticvoidmain(String[]args){
do{
System.out.println("***********欢迎使用青鸟超市系统*************");
System.out.println("1.登录"+"\n2.退出");
System.out.println("***********请选择1/2*************");
Stringchoice=input.next();
if(choice.equals("1")){
//登录视图
createLoginView();
break;
}
elseif(choice.equals("2")){
//退出
System.exit(0);
}
else{
//输入有误,报错
System.out.println("无此选项!
");
}
}while(true);
System.out.println("***********谢谢使用青鸟超市系统*************");
}
/**
*登录视图
*通过输入的用户名与密码验证用户身份,管理员则进入管理界面,收银员则进入收银界面,都不是则提示错误,并重新进行输入
*/
publicstaticvoidcreateLoginView(){
do{
//提示登录信息
System.out.println("请输入用户名:
");
Stringname=input.next();
System.out.println("请输入密码:
");
Stringpassword=input.next();
//调用客户端登录方法,接收返回值,判断登录者的身份
Datasdatas=cb.doLogin(name,password);
//判断是管理员还是收银员
if(datas.getFlag().equals(SysConstans.SYS_ADMIN)){
createAdminView();
break;
}elseif(datas.getFlag().equals(SysConstans.SYS_CASHIER)){
createCashierView();
break;
}else{
System.out.println("用户名或密码有误,请重新输入");
}
}while(true);
}
/**
*管理员菜单
*实现管理员功能:
*1.商品入库2.商品出库3.新增商品4.查询全部商品5.按编号查询商品6.退出
*/
privatestaticvoidcreateAdminView(){
//循环操作
//管理员菜单
System.out.println("管理员登录成功,进入管理员界面");
do{
System.out.println("***********欢迎进入青鸟超市库存管理系统*************");
System.out.println("1.商品入库\t2.商品出库\t3.新增商品\t4.查询全部商品\t5.按序号查询商品\t6.退出");
//提示用户选择
System.out.println("请输入您的选择");
intchoice=input.nextInt();
switch(choice){
//商品入库,调入库方法
case1:
//提示输入要入库的编号
System.out.println("请输入入库商品编号:
");
//定义变量接收输入的编号
Stringgoodnum=input.next();
//调用方法判断库存中是否有要入库的商品
if(cb.Find(goodnum).getFlag().equals(SysConstans.SYS_SUCCESS)){
System.out.println("请输入入库数量:
");
intcount=input.nextInt();
if(count>=0){
Datasdatas=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;
//商品出库,调出库方法
case2:
do{//提示输入出库商品编号
System.out.println("请选择出库商品编号:
");
//定义变量接收编号
Stringgoodid=input.next();
//先查询是否由此商品
if(cb.Find(goodid).getFlag().equals(SysConstans.SYS_SUCCESS)){
//提示输入出库数量
System.out.println("请输入出库数量:
");
intcount=input.nextInt();
if(count>0){
Datasdatas=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;
case3:
//新增商品,调新增方法
do{//提示输入新增商品编号
System.out.println("请输入新增商品的编号:
");
Stringnewgoodid=input.next();
if(cb.Find(newgoodid).getFlag().equals(SysConstans.SYS_SUCCESS)){
System.out.println("商品已存在");
break;
}
else{
System.out.println("请输入商品名称:
");
Stringname=input.next();
System.out.println("请输入商品单价:
");
doubleprice=input.nextDouble();
System.out.println("请输入商品单位:
");
Stringunit=input.next();
System.out.println("请输入商品数量:
");
intcount=input.nextInt();
Goodsgood=newGoods(newgoodid,(name+"\t"),price,unit,count);
//把要新增的商品通过调用方法传给业务类,并接收返回值
Datasdatas=cb.Add(good);
System.out.println("新增商品成功!
");
//打印商品列表
showList(cb.FindAll());
break;
}
}while(true);
break;
//查询全部商品的方法
case4:
//查询商品,调用showList方法参数为Datas类型,是FindAll传回来的
showList(cb.FindAll());
break;
//按编号查询商品,调按编号查询方法
case5:
//提示输入编号
System.out.println("请输入要查询的编号:
");
//定义变量接收输入
Stringid=input.next();
//判断库存中是否存在编号为goodid的商品
Datasdatas=cb.Find(id);
//如果存在,调用方法,打印商品
if(datas.getFlag().equals(SysConstans.SYS_SUCCESS)){
showGood(datas);
}else{
System.out.println("没有此商品");
}
break;
case6:
//退出
System.out.println("管理员退出成功!
");
System.exit(0);
default:
//提示无此选项
System.out.println("无此选项,请重新输入:
");
}
}while(true);
}
/**
*收银员管理界面.
*实现收银员的功能:
*1.扫描商品2.修改购买商品的数量3.结账4.退出
*/
//收银员管理界面
privatestaticvoidcreateCashierView(){
//循环操作收银界面
while(true){
System.out.println("收银员登录成功,进入收银员界面");
System.out.println("***********欢迎进入青鸟超市收银管理系统*************");
System.out.println("1.扫描商品\t2.修改数量\t3.结账\t4.退出");
//提示用户输入操作选项
System.out.println("请输入您的选择:
");
intchoice=input.nextInt();
switch(choice){
case1:
//调用扫描方法
do{
//提示输入扫描编号
System.out.println("请输入要扫描的商品编号:
");
Stringscannum=input.next();
//如果查询到编号,说明商品存在,否则商品不存在
if(cb.Find(scannum).getFlag().equals(SysConstans.SYS_SUCCESS)){
//如果商品存在,调用扫描的方法
Datasdatas=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;
case2:
//修改数量的方法
//判断购买列表是否为空
if(cb.result().getFlag().equals(SysConstans.SYS_ERROR)){
System.out.println("购买列表中还没有购买物品!
");
continue;
}
//循环操作数据
do{
//提示用户输入要修改的编号,并判断购买列表中是否存在此编号
System.out.println("请输入要修改的商品编号:
");
Stringchangeid=input.next();
Datasdatas=newDatas();
//调用方法判断是否存在商品编号
if(hasid(changeid)){
//存在,提示修改数量
System.out.println("请输入修改后的数量");
intchangenum=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;
case3:
//调用结账方法
creatOver();
break;
case4:
//退出
System.out.println("收银员退出系统成功!
");
System.exit(0);
default:
//错误提示
System.out.println("输入有问题,请重新输入:
");
}
}
}
/**
*打印商品列表的方法,参数是Datas类型,无返回值
*通过调用客户端业务类的方法得到返回值,打印商品列表
*@paramdatas
*/
//打印商品列表
privatestaticvoidshowList(Datasdatas){
System.out.println("------------------------------------------------------------------------------------------------");
System.out.println("商品编号\t\t商品名称\t\t\t\t商品单价\t\t单位\t\t数量");
for(Goodsgood:
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("------------------------------------------------------------------------------------------------");
}
/**
*按编号查询商品的方法.得到返回值,直接打印返回值中的商品
*@paramdatas
*/
//打印单个商品
privatestaticvoidshowGood(Datasdatas){
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("------------------------------------------------------------------------------------------------");
}
/**
*收银员菜单中的扫描商品的方法后打印扫描商品列表的方法
*
*@paramdatas
*/
//打印扫描商品列表
privatestaticvoidshowScan(Datasdatas){
if(datas.getFlag().equals(SysConstans.SYS_SUCCESS)){
//定义列表接收扫描后的购买列表
ArrayListscanlist=datas.getBuylist();
//输出商品列表
System.out.println("商品编号\t商品名称\t\t\t\t数量\t\t单价\t\t金额");
System.out.println("------------------------------------------------------------------------------------------------");
for(Goodsgood:
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
*@paramid
*@return
*/
//查询购买列表中是否存在要修改数量商品的编号
privatestaticbooleanhasid(Stringid){
Datasdatas=newDatas();
datas.setBuylist(cb.result().getBuylist());
for(Goodsgood:
datas.getBuylist()){
if(good.getGoodid().equals(id)){
returntrue;
}
}
returnfalse;
}
/**
*结账方法,分为普通结账和会员结账
*普通结账和会员结账,分别调用普通结账方法和会员结账方法
*/
//结账方法
privatestaticvoidcreatOver(){
//首先打印购买列表,算出总金额.调用普通结账,或vip结账
doublemoney=sum(cb.result());
//Sys