包结构
四个包,九个类,一个资源文件
客户端类
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
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();
//结账成功.调用结账方法,打印小票,并跳出结账.
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 list=cb.result().getBuylist();
double sum=0;
//购买总额
for(int i=0;i list=cb.result().getBuylist();
int goodscount=0;
for(int i=0;i 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
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
相关搜索