Java电器商场小系统--简单的java逻辑

//商场类public class Goods {
int no;    //编号
    String name;  //商品名称
    double price;  //商品价格
    int number;  //商品数量
  //初始化数据方法
    public void setData(int iNo, String sName, double dPrice, int iNumber) {
        no = iNo;
        name = sName;
        price = dPrice;
        number = iNumber;
    }

    // 按格式输出
    public void showGoods() {
        System.out.println(no + "\t\t" + name
                + (name.getBytes().length > 10 ? "\t" : "\t\t") + price
                + "\t\t" + number);
    }
}
//用户类public class User {

    String username;  //用户名
    String password;  //密码
    String nickName;  //昵称// 购物车
    Goods[] cart = new Goods[10];
  //显示用户信息方法
    public void showInfo() {
        System.out.println("用户名:\t" + username);
        System.out.println("密码:\t" + password);
        System.out.println("昵称:\t" + nickName);
    }
  //购买商品 --> 传入商品参数
    public void buyGoods(Goods goods) {
        // 1.购物车中没有该商品
        // 2.购物车中有了该商品
        int index = searchGoodsByName(goods.no);
        if (index != -1) {
            // 购物车已经有了该商品,直接增加数量
            cart[index].number += goods.number;
        } else {
            // 没有呢,就把他放入 第一个为null的位置
            for (int i = 0; i < cart.length; i++) {
                if (cart[i] == null) {
                    cart[i] = goods;
                    return;
                }
            }
            System.out.println("商品已满,请清空购物车后,在来购买");
        }
    }
  //查找购物车是否有相同的商品
    public int searchGoodsByName(int goodsNo) {
        for (int i = 0; i < cart.length; i++) {
            if (cart[i] == null)
                return -1;
            else if (goodsNo == cart[i].no) {
                return i;
            }
        }
        return -1;
    }
  //显示商品
    public void showGoods() {
        System.out.println("商品编号\t\t商品名称\t\t商品价格\t\t库存");
        for (int i = 0; i < cart.length; i++) {
            if (cart[i] == null)
                return;
            cart[i].showGoods();   //调用商场的显示方法 显示商品
        }
    }

    // 返回购物车中需要的金额
    public double getGoodsMoney() {
        double sum = 0;
        for (int i = 0; i < cart.length; i++) {
            if (cart[i] == null)
                break;
            double value = cart[i].price * cart[i].number;
            sum += value;

        }
        return sum;
    }

    // 清空购物车
    public void clearCart() {
        for (int i = 0; i < cart.length; i++) {
            cart[i] = null;
        }
    }
}
import java.util.Scanner;

//商场系统
public class ShoppingManager {

    //用户数组
    User[] users = new User[10];
    //商品数组
    Goods[] goods = new Goods[10];
    Scanner input = new Scanner(System.in);

    //当前登录用户
    User loginUser;

    // 显示menu之前,先初始化数据
    public void init() {
        goods[0] = new Goods();
        goods[0].setData(10101, "海尔冰箱", 3999.9, 50);
        goods[1] = new Goods();
        goods[1].setData(10102, "格力冰箱", 2888.8, 50);
        goods[2] = new Goods();
        goods[2].setData(10103, "TCL冰箱", 3333.0, 100);
        goods[3] = new Goods();
        goods[3].setData(10104, "美的冰箱", 5100.5, 80);
        goods[4] = new Goods();
        goods[4].setData(10105, "海尔空调", 4622, 50);
        goods[5] = new Goods();
        goods[5].setData(10106, "格力空调", 1555, 70);
        goods[6] = new Goods();
        goods[6].setData(10107, "TCL空调", 2100.5, 30);
        goods[7] = new Goods();
        goods[7].setData(10108, "美的空调", 3355.5, 150);
        goods[8] = new Goods();
        goods[8].setData(10109, "小天鹅洗衣机", 2500, 30);
        goods[9] = new Goods();
        goods[9].setData(10110, "西门子冰箱", 3800, 80);

        // 预存用户 测试用的
        User user = new User();
        user.nickName = "李四";
        user.username = "lisi";
        user.password = "123456";
        users[0] = user;
    }

    //显示商场菜单
    public void showMenu() {
        // 初始化商品
        init();
        String choose = "";
        do {
            // 打印菜单系统
            System.out.println("*****************国美电器*****************");
            System.out.println("\t\t1.用户登录");
            System.out.println("\t\t2.用户注册");
            System.out.println("\t\t3.退出系统");
            System.out.println("*****************国美电器*****************");
            choose = input.next();
            switch (choose) {
            case "1":
                userLogin(); //登录
                break;
            case "2":
                userRegister();    //注册
                break;
            case "3":
                System.out.println("退出系统成功!");
                break;
            default:
                System.out.println("输入错误,请重新输入");
                break;
            }
        } while (!choose.equals("3"));
        // 退出系统
        input.close();
    }

    //用户注册
    private void userRegister() {
        System.out.print("请输入用户名:");
        String name = input.next();
        if (isDuplicationName(name)) {
            System.out.println("用户名已存在!注册失败");
            return;
        }
        // 没有重名
        System.out.print("请输入密码:");
        String password = input.next();
        if (password.length() < 6) {
            System.out.println("密码输入错误!注册失败");
            return;
        }
        System.out.print("请输入昵称:");
        String nickName = input.next();
        if (addUser(name, password, nickName)) {
            System.out.println("注册成功");
        } else {
            System.out.println("注册失败,用户已满!");
        }
    }

    //添加用户方法,判断用户数组中是否存在该用户
    public boolean addUser(String username, String password, String nickname) {
        User user = new User();
        user.username = username;
        user.nickName = nickname;
        user.password = password;
        for (int i = 0; i < users.length; i++) {
            if (users[i] == null) {
                users[i] = user;
                return true;
            }
        }
        return false;
    }

    //判断用户名是否存在,返回ture或false
    private boolean isDuplicationName(String name) {
        for (int i = 0; i < users.length; i++) {
            // 为空就跳出循环
            if (users[i] == null)
                break;
            // 有重名
            else if (users[i].username.equals(name))
                return true;
        }
        return false;
    }

    private void userLogin() {
        System.out.print("请输入用户名:");
        String username = input.next();
        System.out.print("请输入密码:");
        String password = input.next();
        User user = login(username, password);
        if (user == null) {
            System.out.println("登录失败!");
        } else {
            // 下一级菜单
            loginUser = user;
            System.out.println("登录成功,你好:" + loginUser.nickName);
            userMenu();    //用户菜单
        }
    }

    public User login(String username, String password) {
        for (int i = 0; i < users.length; i++) {
            if (users[i] == null)
                return null;
            else if (users[i].username.equals(username)
                    && users[i].password.equals(password)) {
                return users[i];
            }
        }
        return null;
    }

    // 用户登录后的菜单
    public void userMenu() {
        String choose = "";
        do {
            System.out.println("1.商品购买");
            System.out.println("2.我的购物车");
            System.out.println("3.个人信息");
            System.out.println("4.注销");
            choose = input.next();
            switch (choose) {
            case "1":
                buyGoods();    //购买商品
                break;
            case "2":
                showMyGoods();    //显示购物车
                break;
            case "3":
                showUserInfo();    //显示用户信息
                break;
            case "4":
                System.out.println("注销成功");
                break;
            default:
                System.out.println("输入错误,请重新输入!");
                break;
            }

        } while (!choose.equals("4"));
    }

    private void showUserInfo() {
        loginUser.showInfo();
    }

    //显示购物车
    private void showMyGoods() {
        System.out.println("********************购物车********************");
        loginUser.showGoods();
        // 开始付款
        System.out.println("\t\t你购买的商品总价格为:" + loginUser.getGoodsMoney());
        // 是否付款
        if (loginUser.getGoodsMoney() == 0)
            return;
        System.out.println("是否付款?Y/N");
        String choose = input.next();
        if (choose.equalsIgnoreCase("y")) {
            // 付款
            System.out.println("输入实付金额:");
            double money = input.nextDouble();
            if (money < loginUser.getGoodsMoney()) {
                System.out.println("输入的金额不够啊!");
            } else {
                double zero = money - loginUser.getGoodsMoney();
                System.out.println("恭喜你付款成功,找您" + zero + "元");
                loginUser.clearCart();
            }
        }
    }

    private void buyGoods() {
        System.out.println("********************商品购买*********************");
        showGoodsList();
        String choose = "";
        while (!choose.equalsIgnoreCase("exit")) {
            System.out.print("请输入需要购买的商品编号,输入exit后退出");
            choose = input.next();
            if (!choose.equalsIgnoreCase("exit")) {
                // 购买商品
                int index = getGoodsIndex(choose);
                if (index == -1) {
                    System.out.println("没有该商品,请重新输入");
                } else {
                    System.out.print("请输入商品数量:");
                    int number = input.nextInt();
                    // 判断由没有这么多库存
                    if (number <= goods[index].number) {
                        // 1.商城需要减少数量
                        // 2.购物车是增加
                        goods[index].number -= number;
                        // 用户买的商品
                        Goods good = new Goods();
                        good.setData(goods[index].no, goods[index].name,
                                goods[index].price, number);
                        loginUser.buyGoods(good);
                        System.out.println("购买成功");
                    } else {
                        System.out.println("商品不够了。。。");
                    }
                }
            }
        }
        // 显示购物车
        showMyGoods();
    }

    //显示商品列表
    public void showGoodsList() {
        System.out.println("商品编号\t\t商品名称\t\t商品价格\t\t库存");
        for (int i = 0; i < goods.length; i++) {
            Goods good = goods[i];
            if (good == null)
                return;
            good.showGoods();
        }
    }

    // 判断购买的商品在数组中的位置
    /**
     *
     * @param no
     *            输入的商品编号
     * @return 找到 返回索引号,没有找到返回-1
     */
    public int getGoodsIndex(String no) {
        // 将编号转成int
        // int iNo = Integer.parseInt(sNo);
        for (int i = 0; i < goods.length; i++) {
            if ((goods[i].no + "").equals(no)) {
                return i;
            }
        }
        return -1;
    }

}
//测试类
public class Test {

    public static void main(String[] args) {
        ShoppingManager manager = new ShoppingManager();
        manager.showMenu();
    }
}
时间: 2024-09-30 07:48:04

Java电器商场小系统--简单的java逻辑的相关文章

java客房管理小项目,适合java小白练手的项目!

java客房管理小项目 这个客房管理小项目,适合java初学者练手.功能虽然不多,但是内容很齐全! 喜欢这样文章的可以关注我,我会持续更新,你们的关注是我更新的动力!需要更多java学习资料的也可以私信我! 祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早生贵子,从不掉发!共有5层,每层10间客房,以数字101--509标示:具有入住,退房,搜索,退出四个简单功能: public class Hotel { static final int floor = 5; static fina

java基础学习02(简单的java程序)

简单的java程序 一.完成的目标 1. 理解java程序的基本组成 2. 如何对程序代码进行注释 3. java标识符的命名规则 4. 了解java中的关键字 5. 使用java定义变量或声明变量 二.一个简单的java程序 public class TestJava{ public static void main(String [] args){ //操作一个简单的范例,输出和乘方 int num = 10; //定义一个整型变量 num = 30; //修改变量 System.out.p

Java多线程知识小抄集(三)

本文主要整理博主遇到的Java多线程的相关知识点,适合速记,故命名为"小抄集".本文没有特别重点,每一项针对一个多线程知识做一个概要性总结,也有一些会带一点例子,习题方便理解和记忆. 51. SimpleDateFormat非线程安全 当多个线程共享一个SimpleDateFormat实例的时候,就会出现难以预料的异常. 主要原因是parse()方法使用calendar来生成返回的Date实例,而每次parse之前,都会把calendar里的相关属性清除掉.问题是这个calendar是

Java基础——第一个记事本代码与Java注释

一 .使用记事本编辑java文件: 1.打开记事本,重命名文件名,文件拓展名“.java”.(必须要的,系统才能识别java文件) 2.编写一个简单的java代码: public class HelloWorld{ public static void main(String[] args){ System.out.println("HelloWorld"); } } 另:记事本文件名应必须与class 后面的类名“HelloWorld”相同,否则编译不到.  3.打开命令提示符,wi

java小系统 数据库 图书馆

图书管理系统                          目录 第一章 研究前提................................................................................1 第二章 系统分析................................................................................3 第三章 数据库分析..........................

java学习的一些预备知识和一些简单的java小程序

1先了解一些基本的dos命令 dir     ·列出当前目录下的文件和文件夹 md      创建文件夹 rd        删除文件夹(文件下没有子文件) del "文件夹名"    可以删除带子文件的文件夹 cd..    使文件夹目录一层一层后退 cd\    回到根目录 haha>1.txt    创建文档,并将haha写入到1.txt文档中 del 1.txt    删除文件(不走回收站) del  *.txt    只删除txt文件 exit    退出命令行 set

【小C出品】java基础类之System简单使用

原文:[小C出品]java基础类之System简单使用 源代码下载地址:http://www.zuidaima.com/share/1588678829394944.htm 版权声明:本文为博主原创文章,未经博主允许不得转载.

OSGI(面向Java的动态模型系统)

基本简介编辑 OSGI服务平台提供在多种网络设备上无需重启的动态改变构造的功能.为了最小化耦合度和促使这些耦合度可管理,OSGi技术提供一种面向服务的架构,它能使这些组件动态地发现对方.OSGi联 OSGI 盟已经开发了为例如象HTTP服务器.配置.日志.安全.用户管理.XML等很多公共功能标准组件接口.这些组件的兼容性插件实现可以从进行了不同优化和使用代价的不同计算机服务提供商得到.然而,服务接口能够基于专有权基础上开发. 因为OSGi技术为集成提供了预建立和预测试的组件子系统,所以OSGi技

编写运行最简单的java程序——使用记事本编写java程序

第一个java程序--使用记事本编辑 经过上篇文章的java环境搭建成功的小伙伴们可以在自己的计算机上编写属于自己的java程序了yo~ 还没有搭建环境变量的小伙伴请转移到上一篇的随笔中去完成搭建. 连接地址:http://www.cnblogs.com/hysum/p/7084380.html 现在我们可以通过使用记事本来编辑我们的第一个java小程序. 第一步 .使用记事本编辑程序代码 用记事本编写的是java的源代码文件,里面的代码就是我们平时学习的java代码.生成的文件后缀是.java