超市1.0

思路

  1. 对于写一个超市系统,我们需要知道超市都有什么功能,而很明显的功能是能购买东西。
  2. 当我们知道能购买东西,就存在商品名称和商品价格还有商品序号。所以我们就需要定义一个方法,用来存放商品有关的属性。
  3. 当已知商品之后,我们就发现要有人买商品,而人又需要带钱买商品,以及可以定义一个人名。这时我们定义一个类用来存放人这个方法。
  4. 定义完这两个方法之后,我们需要再有个平台进行购物,这时我们就可以定义个方法,用来执行所需的操作。
  5. 目前需要的已经都列出来了,然后写代码并完善思路。

操作

  1. 首先建立一个启动类。建立完启动类之后我又新建了三个类,一个用来表示用户,一个用来表示超市,一个用来表示账单,其中账单中定义了种类,价格,库存量
String name;
    int price;//存放各个种类的价格
    int serNumber;//存放产品序号
    int kNumber;//存放每个数量
  1. 而用户中定义了两个属性,一个是姓名,一个是有多少钱。
String name;
int money;
  1. 然后我们剩下一个shop类,我们将在这里写所需要的代码。对于1.0版本,我们只进行一些简单的应用,后面会进行拓展。

java编程实现简单超市管理 java编写超市购物程序_开发语言

  1. 在shop类中,我们需要知道自己需要干什么,首先我们需要商品,既然有商品了还需要给商品赋值,比如商品名和商品价格还有商品序号。
  2. 一般商品不会只有一个,可能会有好多个,所以我们需要一个数组用来存商品,这时我们定义一个数组,而数组就要有数组类型。我们就需要知道需要什么数据类型的数组。
  3. 很明显需要的是跟商品各个属性都能匹配上的引用数据类型,故我们 new 一个Product类型的数组。
Product[] productkind = new Product[5];
  1. 这一次的超市1.0我们就不进行输数据然后定义各个商品了,这一次我们用最原始的方法,直接new对象,然后给对象赋值,再给数组传进去。商品名可以随意写,但是要跟你定义的数据类型相同,比如我们的商品名称用的是String类型,输入的就要是String类型。
  2. new的五个对象
Product product1 = new Product();
        Product product2 = new Product();
        Product product3 = new Product();
        Product product4 = new Product();
        Product product5 = new Product();
  1. 定义的值
product1.name="苹果";
        product2.name="香蕉";
        product3.name="梨";
        product4.name="橘子";
        product5.name="西瓜";
       //给各个产品起名字

        product1.price=10;
        product2.price=10;
        product3.price=10;
        product4.price=10;
        product5.price=10;

        //给各个产品定数量

        product1.serNumber =0;
        product2.serNumber =1;
        product3.serNumber =2;
        product4.serNumber =3;
        product5.serNumber =4;
        //给各个产品拍序号

        product1.kNumber =10;
        product2.kNumber =20;
        product3.kNumber =15;
        product4.kNumber =14;
        product5.kNumber =15;
        //给各个产品数量
  1. 然后再将对象赋给数组各个量
productkind[0] = product1;
        productkind[1] = product2;
        productkind[2] = product3;
        productkind[3] = product4;
        productkind[4] = product5;
  1. 准备工作做完,我们就可以开始正式编写了。
    对于Java程序编写思路,我们可以一边写想要的功能一边建立新的方法,或者可以用身临其境的方式来写代码。
  2. 进入网上超市,会让我们看到有什么商品,显示商品序号,商品名称,商品价格,以及库存数量。
  3. 然后我们就可以用for循环来将数组中的每个值进行打印。
System.out.println("\t\t***欢迎来到超市,请选购商品***");
            System.out.println("商品名\t\t商品价格\t\t商品序号\t\t商品数量");
            for (int i = 0; i < 5; i++) {
                System.out.println(productkind[i].name + "\t\t\t" + productkind[i].price + "\t\t\t" +
                        productkind[i].serNumber + "\t\t\t" + productkind[i].kNumber);
                //将所有产品信息罗列出来
            }
  1. 用户能查询到商品之后,就可以根据序号然后选择想要购买哪种商品,这时,我们就需要让用户输入一个随机数,从而代表商品序列号,当用户输入的序列号找不到时,就退出操作。
  2. 而根据序列号输出想要购买的商品,我们可以用switch语句进行判断。当switch中值为哪一个时,就可以进行哪一个操作,当然后面有简单的方法,这里先用这种方法便于接受。
  3. 对于输入一个随机数,我们用的是scanner方法
Scanner scanner = new Scanner(System.in);
当需要输入哪种数据类型,只需要在方法调用的时候输入.next(你想用的数据类型)

java编程实现简单超市管理 java编写超市购物程序_java_02

  1. 代码
System.out.println("\t\t\t请输入想要购买的商品序号");
                System.out.println("你可以输入0—4数字进行产品选择,或者输入其他数字进行结束购物");
                int a = scanner.nextInt();//用户输入一个数,并用这个数在下面进行switch
                switch (a) {
                    case 0: {
                        //商品
                    }
                    case 1:{
                        
                    }
                    case 2:{
                        
                    }
                    case 3:{
                        
                    }
                    case 4:{
                        
                    }
                    default:{
                        
                    }
                }
  1. 定义完switch后,用户选择哪个数,就可以直接进入到case里边执行。而我们想要执行的就可以在case里边编写。比如怕用户是点错了,可以再让用户输出个布尔类型变量以保证准确性。当用户输入true,就可以执行。然后选择购买数量。
boolean ok = scanner.nextBoolean();//为了确保用户不是错点,让用户输入布尔值以证明
                        if (ok) {
                            System.out.println("请输入购买商品数量:");
                            int b = scanner.nextInt();//选择购买数量
                        }
  1. 写到这个的时候我们需要判断库存数量是否大于购买数量,以及用户所带的钱是否大于所需要的钱。这时就需要我们知道用户的钱的值,以及判断库存量和购买量,对于用户的值我们可以在启动类里边写,然后把参数传给这个方法。所以这个方法就可以修改为public void shop( User user),而是否有返回值,后面看需求在进行更改。
System.out.println("\t\t\t请问你是要购买苹果吗");
                        System.out.println("请输入true或者false以保证你没有选错商品");
                        System.out.println("输入true代表购买,输入false代表重新选择");
                        boolean ok = scanner.nextBoolean();//为了确保用户不是错点,让用户输入布尔值以证明
                        if (ok) {
                            System.out.println("请输入购买商品数量:");
                            int b = scanner.nextInt();//选择购买数量
                            if (user.money > b * productkind[a].price) {//当所带的钱比需要的钱多时,进入
                                if (b <= productkind[a].kNumber) {//当需求数量小于等于库存数量时,进入
                                }else{
                                    System.out.println("库存不够,请重新减少数量购买或者退出购买");
                                }
                            }else{
                                 System.out.println("就这么一点钱还想来买" + productkind[a].name + "?赶紧回家洗洗睡吧!");
                            }
  1. 写到这我们就基本上可以正常运行了。但是发现如果我们买完一次之后程序就会直接结束了,这时为了判断是否想要继续购买,我们可以再switch外面加一个while,让用户执行完一次之后再输入一次布尔值,true时继续循环,false跳出循环。
  2. 当买完之后,我们需要更新数据,这时就可以更新每个量。而为了存每个量以及为了购物结束的时候能输出一个账单,我们可以再新建一个类,用来建立账单,而账单里存放消费金额以及用户信息。
  3. 即ordet里
User user;
    int totalMoney;
ordet.totalMoney = ordet.totalMoney + b * productkind[a].price;
                                    //消费金额等于之前消费金额+现在所需金额
   productkind[a].kNumber = productkind[a].kNumber - b;
                                    //库存数量等于之前数量-现在需求数量
   user.money = user.money - b * productkind[a].price;
                                    //用户剩余金额等于用户之前金额-现在所需要的钱
       ordet.user = user;
                                    //后续返回Ordet类型,将ordet的user指向user
      apple = apple + b;
                                    //已买数量
   System.out.println("你目前还剩" + user.money + "人民币");
   System.out.println("你已消费" + ordet.totalMoney + "人民币");
 System.out.println("目前库存还剩" + productkind[a].kNumber + "个" + productkind[a].name);
                                    //输出
  1. 当我们购买完商品之后,可以输出一个账单,而账单输出可以直接用ordet和product输出
System.out.println("购买了 + product1.name + ", 共花费了" + ordet.totalMoney);
  1. 至此,程序结束。shop1代码如下
package com.shop1;



        import java.util.Scanner;

public class Shopping {
    Scanner scanner =new Scanner(System.in);//new输出数方法

    /**
     *
     * @param user  用user作传参类型
     * @return      返回Ordet类型,
     */
    public Ordet shop( User user){

        //

//        int [] knumber={10,20,20,10,23};
//        String [] name = {"苹果","香蕉","梨","橘子","西瓜"};
//        int [] serNumber = {0,1,2,3,4};
//        int [] price = {10,10,10,10,10};
        Adm adm = new Adm();
        //

        Ordet ordet = new Ordet();
        Product product1 = new Product();
        Product product2 = new Product();
        Product product3 = new Product();
        Product product4 = new Product();
        Product product5 = new Product();
        //new五个对象用来存放各个属性
//
//      //  User user = new User();

        product1.name="苹果";
        product2.name="香蕉";
        product3.name="梨";
        product4.name="橘子";
        product5.name="西瓜";
//        //给各个产品起名字
//
        product1.price=10;
        product2.price=10;
        product3.price=10;
        product4.price=10;
        product5.price=10;

        //给各个产品定数量

        product1.serNumber =0;
        product2.serNumber =1;
        product3.serNumber =2;
        product4.serNumber =3;
        product5.serNumber =4;
        //给各个产品拍序号

        product1.kNumber =10;
        product2.kNumber =20;
        product3.kNumber =15;
        product4.kNumber =14;
        product5.kNumber =15;
        //给各个产品数量
//
        Product[] productkind = new Product[5];
        productkind[0] = product1;
        productkind[1] = product2;
        productkind[2] = product3;
        productkind[3] = product4;
        productkind[4] = product5;
//
        //new一个Product类型的数组,用来存放刚刚定义的各个属性值

//        for (int i = 0; i < 5; i++) {
//            productkind[i].kNumber=knumber[i];
//            productkind[i].name=name[i];
//            productkind[i].serNumber=serNumber[i];
//            productkind[i].price = price[i];
//        }

            System.out.println("\t\t***欢迎来到超市,请选购商品***");
            System.out.println("商品名\t\t商品价格\t\t商品序号\t\t商品数量");
            for (int i = 0; i < 5; i++) {
                System.out.println(productkind[i].name + "\t\t\t" + productkind[i].price + "\t\t\t" +
                        productkind[i].serNumber + "\t\t\t" + productkind[i].kNumber);
                //将所有产品信息罗列出来
            }
            System.out.println("输入商品序号代表选择商品,输出商品序号之外的数字代表退出购买");
            boolean flag = true;    //定义一个布尔类型的变量用来进行后续判断
            int apple = 0;
            int banana = 0;
            int pear = 0;
            int orange = 0;
            int watermelon = 0;

            //定义一个变量用来给后续购买数量赋值
            while (flag) {//只要用户不自己选择退出,一直循环
                System.out.println("\t\t\t请输入想要购买的商品序号");
                System.out.println("你可以输入0—4数字进行产品选择,或者输入其他数字进行结束购物");
                int a = scanner.nextInt();//用户输入一个数,并用这个数在下面进行switch
                switch (a) {
                    case 0: {
                        System.out.println("\t\t\t请问你是要购买苹果吗");
                        System.out.println("请输入true或者false以保证你没有选错商品");
                        System.out.println("输入true代表购买,输入false代表重新选择");
                        boolean ok = scanner.nextBoolean();//为了确保用户不是错点,让用户输入布尔值以证明
                        if (ok) {
                            System.out.println("请输入购买商品数量:");
                            int b = scanner.nextInt();//选择购买数量
                            if (user.money > b * productkind[a].price) {//当所带的钱比需要的钱多时,进入
                                if (b <= productkind[a].kNumber) {//当需求数量小于等于库存数量时,进入
                                    ordet.totalMoney = ordet.totalMoney + b * productkind[a].price;
                                    //消费金额等于之前消费金额+现在所需金额
                                    productkind[a].kNumber = productkind[a].kNumber - b;
                                    //库存数量等于之前数量-现在需求数量
                                    user.money = user.money - b * productkind[a].price;
                                    //用户剩余金额等于用户之前金额-现在所需要的钱
                                    ordet.user = user;
                                    //后续返回Ordet类型,将ordet的user指向user
                                    apple = apple + b;
                                    //已买数量
                                    System.out.println("你目前还剩" + user.money + "人民币");
                                    System.out.println("你已消费" + ordet.totalMoney + "人民币");
                                    System.out.println("目前库存还剩" + productkind[a].kNumber + "个" + productkind[a].name);
                                    //输出

                                } else {
                                    System.out.println("库存不够,请重新减少数量购买或者退出购买");
                                }
                            } else {
                                System.out.println("就这么一点钱还想来买" + productkind[a].name + "?赶紧回家洗洗睡吧!");

                            }
                            break;
                        } else {
                            System.out.println("取消购买,请重新选择商品号");
                            break;
                        }
                    }

                    case 1: {
                        System.out.println("请输入购买商品数量1:");
                        break;

                    }
                    case 2: {
                        System.out.println("请输入购买商品数量:");
                        break;

                    }
                    case 3: {
                        System.out.println("请输入购买商品数量:");
                        break;

                    }
                    case 4: {
                        System.out.println("请输入购买商品数量:");
                        break;

                    }
                    default: {
                        flag = false;
                        System.out.println("结束购买");
                        if (ordet.totalMoney > 0) {
                            System.out.println("谢谢" + user.name + "的光临,这是你的账单,请核对后再走");
                        }
                        if (apple > 0) {
                            System.out.println("购买了" + apple + "个" + product1.name + ", 共花费了" + ordet.totalMoney);
                            // System.out.println("购买了"+apple+"个"+productkind[a].name+", 共花费了"+ordet.totalMoney);
                        }

                        break;

                    }
                }

                }

        return ordet;
    }
}
  1. 启动类代码如下
package com.shop1;

import java.util.Scanner;

public class MainText {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Shopping shopping = new Shopping();

       // Ordet ordet = new Ordet();
        User user =new User();
        Adm adm = new Adm();
        System.out.println("请问你是用户还是管理员");
        System.out.println("用户输入1,管理员输入2,输入其它数代表取消访问");
        int n=scanner.nextInt();
        if(n==1){
            System.out.println("请问你是要访问超市吗?");
            System.out.println("请输入true或者false");
            boolean o = scanner.nextBoolean();
            if(o){
                System.out.println("为了防范疫情,我们需要实名登记,请输入你的姓名");
                user.name=scanner.next();
                System.out.println("我们这是贵族超市,不带钱不给进,请输入你有多少钱");
                user.money=scanner.nextInt();
                if(user.money>0){
                    shopping.shop(user);

                }else{
                    System.out.println("没钱还想来超市?一边去");
                }
            }else{
                System.out.println("不来超市的话请不要在我们门口,耽误我们做生意");
            }
        }else if(n==2){
            adm.prf();

        }else{
            System.out.println("赶紧滚");

        }



    }
}