Java学习日记:超市管理系统(简易数组版)

这个博客展示了如何创建一个简单的超市管理系统,包括货物类、用户输入方法类以及管理系统主框架。用户通过登录验证后,可以进行货物查询、新增、删除和修改操作,所有操作都基于键盘输入与控制台输出。程序中还包含一个猜数字游戏作为登录前提,增加了互动性。

之前学习的内容很简单

前提:

1.单创一个货物类用于创建货物的各项属性(get set tostring 有参无参)

public class Goods {
    private int id;
    private double price;
    private String name;

    public Goods() {
    }

    public Goods(int id, double price, String name) {
        this.id = id;
        this.price = price;
        this.name = name;
    }
    @Override
    public String toString() {
        return id+"\t"+price+"\t"+name;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

2.再单创建一个键盘录入方法类,用于我们与计算机的交流

该类可以先设置一个键盘录入,需要用到的时候直接调用

在调用方法的时候可以设置一个有参构造用来提示用户需要做什么

public class Myuser {
    static Scanner sc = new Scanner(System.in);

    public static int getInt(String tip){
        System.out.println(tip);
        return sc.nextInt();
    }
    public static double getdouble(String tip){
        System.out.println(tip);
        return sc.nextDouble();
    }
    public static String getString(String tip){
        System.out.println(tip);
        return sc.next();
    }
}

3,构建我们的管理系统主框架

一:登录前提(main方法里直接调用)>>>>>>>(show方法)

设置了一个猜数字游戏,没猜对就重复循环直至猜对进入show方法

while (true) {
            int random = Myuser.getInt("请输入一个幸运数字");
            int i = new Random().nextInt(5);
            if (i == random) {
                show();
                break;
            } else {
                System.out.println("没猜对再试试");
                System.out.println("-----------------------------");
            }
        }

二:登录系统(调用show方法)>>>>>>>(body方法)

设置登录用户与密码

通过对用户名与密码的对比来继续向下运行,密码错误就退出程序,对了就调用body方法

public static void show() {
        System.out.println("欢迎使用超市管理系统");
        String user = "kxbb99";
        String password = "888888";
        String users = Myuser.getString("请输入用户名");
        String passwords = Myuser.getString("请输入密码");
        if (user.equals(users)&&password.equals(passwords)){
            body();
        }else {
            System.out.println("抱歉,用户名或者密码错误");
            System.exit(0);
        }
    }

三:任务管理系统(body方法)
先设置一个货物数组(调用之前创的货物类),且要存些已有的数据

 Goods[] goods = new Goods[4];
        goods[0] = new Goods(1, 11, "qq糖");
        goods[1] = new Goods(2, 22, "ww糖");
        goods[2] = new Goods(3, 33, "ee糖");
        goods[3] = new Goods(4, 44, "rr糖");

进入主程序(用while(true)一直循环)

先对系统界面进行打印

while (true){
            System.out.println("=================欢迎来到超市管理系统==================");
            System.out.println("1:货物查询\t\2:新增货物\t3:删除货物\t4:修改货物\t5:退出");
            int choseNum = Myuser.getInt("请输入你要操作的编号");

对输入的chosenum进行if判断

1:货物查询(for遍历数组)

if (choseNum == 1) {
                for (int i = 0; i < goods.length; i++) {
                    System.out.println(goods[i]);
                }
            }

2:新增货物(先将数组长度扩大一再进行录入)

数组用Arrays.copyOf方法复制扩大一位

for遍历判断是否有输入的编码重复

用length-1来定位最新加的一个数组

set方法来添加新的数据

else if (choseNum == 2) {
                goods = Arrays.copyOf(goods, goods.length + 1);
                goods[goods.length-1] = new Goods();
                int newid = Myuser.getInt("请输入新商品的编号");
                double newprice = Myuser.getdouble("请输入新商品的价格");
                String newname = Myuser.getString("请输入新商品的名称");
                for (int i = 0; i < goods.length; i++) {
                    if (newid == goods[i].getId()) {
                        System.out.println("已经存在" + newid + "编号");
                        System.exit(0);
                    }
                }
                goods[goods.length-1].setId(newid);
                goods[goods.length-1].setPrice(newprice);
                goods[goods.length-1].setName(newname);
            }

3:删除货物

for遍历判断是否有输入的编码

删除赋值null就行了(但会打印出来null,这就很无语)

这里感觉写的有些问题(但都是老东西了懒得纠结了)

else if (choseNum == 3){
                int delid = Myuser.getInt("请输入要删除商品的编号");
                for (int i = 0; i < goods.length; i++) {
                    if (delid == goods[i].getId()){
                        goods[i]=null;
                    }
                }
            }

4:修改货物

用for遍历定位到要修改的数组,set修改

(这里没有设置编码不存在的对策,因为懒)

else if (choseNum == 4){
                int reid = Myuser.getInt("请输入需要修改的编号");
                for (int i = 0; i < goods.length; i++) {
                    if (reid == goods[i].getId()){
                        int newid = Myuser.getInt("请输入修改的新id");
                        double newprice = Myuser.getdouble("请输入修改的新价格");
                        String newname = Myuser.getString("请输入修改的新名称");
                        goods[reid].setId(newid);
                        goods[reid].setPrice(newprice);
                        goods[reid].setName(newname);
                    }
                }
            }

5:退出系统

else if (choseNum ==5){
                System.out.println("感谢使用超市管理系统");
                System.exit(0);
            }

6:输入了1-5以外的数字

提示输入有误

else {
                System.out.println("输入的数字错误重新输入");
            }

所有代码:

代码有些小问题但懒得改了

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        while (true) {
            int random = Myuser.getInt("请输入一个幸运数字");
            int i = new Random().nextInt(1);
            if (i == random) {
                show();
                break;
            } else {
                System.out.println("没猜对再试试");
                System.out.println("-----------------------------");
            }
        }
    }

    public static void show() {
        System.out.println("欢迎使用超市管理系统");
        String user = "kxbb99";
        String password = "888888";
        String users = Myuser.getString("请输入用户名");
        String passwords = Myuser.getString("请输入密码");
        if (user.equals(users)&&password.equals(passwords)){
            body();
        }else {
            System.out.println("抱歉,用户名或者密码错误");
            System.exit(0);
        }
    }

    public static void body() {

        Goods[] goods = new Goods[4];
        goods[0] = new Goods(1, 11, "qq糖");
        goods[1] = new Goods(2, 22, "ww糖");
        goods[2] = new Goods(3, 33, "ee糖");
        goods[3] = new Goods(4, 44, "rr糖");

        while (true){
            System.out.println("=================欢迎来到超市管理系统==================");
            System.out.println("1:货物查询\t\2:新增货物\t3:删除货物\t4:修改货物\t5:退出");
            int choseNum = Myuser.getInt("请输入你要操作的编号");

            if (choseNum == 1) {
                for (int i = 0; i < goods.length; i++) {
                    System.out.println(goods[i]);
                }
            }
            else if (choseNum == 2) {
                goods = Arrays.copyOf(goods, goods.length + 1);
                goods[goods.length-1] = new Goods();
                int newid = Myuser.getInt("请输入新商品的编号");
                double newprice = Myuser.getdouble("请输入新商品的价格");
                String newname = Myuser.getString("请输入新商品的名称");
                for (int i = 0; i < goods.length; i++) {
                    if (newid == goods[i].getId()) {
                        System.out.println("已经存在" + newid + "编号");
                        System.exit(0);
                    }
                }
                goods[goods.length-1].setId(newid);
                goods[goods.length-1].setPrice(newprice);
                goods[goods.length-1].setName(newname);
            }
            else if (choseNum == 3){
                int delid = Myuser.getInt("请输入要删除商品的编号");
                for (int i = 0; i < goods.length; i++) {
                    if (delid == goods[i].getId()){
                        goods[i]=null;
                    }
                }
            }
            else if (choseNum == 4){
                int reid = Myuser.getInt("请输入需要修改的编号");
                for (int i = 0; i < goods.length; i++) {
                    if (reid == goods[i].getId()){
                        int newid = Myuser.getInt("请输入修改的新id");
                        double newprice = Myuser.getdouble("请输入修改的新价格");
                        String newname = Myuser.getString("请输入修改的新名称");
                        goods[reid].setId(newid);
                        goods[reid].setPrice(newprice);
                        goods[reid].setName(newname);
                    }
                }
            }
            else if (choseNum ==5){
                System.out.println("感谢使用超市管理系统");
                System.exit(0);
            }
            else {
                System.out.println("输入的数字错误重新输入");
            }
        }
    }
}
class Myuser {
    static Scanner sc = new Scanner(System.in);

    public static int getInt(String tip){
        System.out.println(tip);
        return sc.nextInt();
    }
    public static double getdouble(String tip){
        System.out.println(tip);
        return sc.nextDouble();
    }
    public static String getString(String tip){
        System.out.println(tip);
        return sc.next();
    }
}
class Goods {
    private int id;
    private double price;
    private String name;

    public Goods() {
    }

    public Goods(int id, double price, String name) {
        this.id = id;
        this.price = price;
        this.name = name;
    }
    @Override
    public String toString() {
        return id+"\t"+price+"\t"+name;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值