鱼C论坛

 找回密码
 立即注册
查看: 2920|回复: 1

[学习笔记] 商品系统

[复制链接]
发表于 2021-10-25 13:20:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
package shangpin;

import java.util.InputMismatchException;
import java.util.Scanner;
class OutNumException extends Exception

{

        OutNumException(){

        super("购买数量超出库存!");

        }

}
class OutNumException2 extends Exception

{

        OutNumException2(){

        super("请输入正确的序号!");

        }

}
class ShangPin{

        String name;        //商品名称
        double price;        //商品价格
        int num;                //库存量
        ShangPin(){}
        ShangPin(String name,double price,int num){
                this.name = name;
                
                this.num = num;
                
                this.price=price;

        }
        void print() {

                System.out.println("库存为:" + num +"名为:" + name+"价格为"+price);

        }

}

class Food extends ShangPin{

        String name;

        int num,data;//保质期

        double price;
        Food(){}
        Food(int num,int data,String name,double price) {

                this.num = num;

                this.name = name;

                this.data = data;
                
                this.price=price;

        }
        void print() {

                System.out.println("库存为:" + num +" 商品名为:" + name+" 价格为"+price+" 保质期"+data+"天");


        }
}
        
class Clothes extends ShangPin{

                String name,size;

                int num;//保质期

                double price;
                Clothes(){}
                Clothes(int num,String name,String size,double price) {

                        this.num = num;

                        this.name = name;

                        this.size = size;
                        
                        this.price=price;
                        

                }
                void print() {

                        System.out.println("库存为:" + num +" 商品名为:" + name+" 价格为"+price+" 型号"+size);


                }
                
}

public class ShangPing {



        public static void main(String[] args) {

                // TODO Auto-generated method stub

                Scanner sc = new Scanner(System.in);

                ShangPin[] e = new ShangPin[6];
                Clothes[] o = new Clothes[3];
                Food[] f = new Food[3];
                double money;
                //服装
                o[0]=new Clothes(10, "T恤","S", 100);
                o[1]=new Clothes(13, "T恤","M", 110);
                o[2]=new Clothes(20, "T恤","L", 120);
//食物
                f[0]=new Food(30,30,"辣条",5.0);
                f[1]=new Food(5,3,"面包",4.5);
                f[2]=new Food(14,90,"泡面",4.4);
         e[0]=f[0];
         e[1]=f[1];
         e[2]=f[2];
         e[3]=o[0];
         e[4]=o[1];
         e[5]=o[2];
         System.out.println("当前库存:\n");
         for(int i=0;i<6;i++)
         {
                 e[i].print();
         }
while(true)
{
try {
        System.out.println("请输入你要购买的商品:\n");
        System.out.println("1.食物\t2.衣服\t3.我全都要\n");
        
        int n=sc.nextInt();
        if(n<1||n>3)
        {
                throw new OutNumException2();
        }
        switch(n) {
        case 1:
                System.out.println("1.辣条\t2.面包\t3.泡面\n");
                System.out.println("请输入购买的数量:\n");
                int a=sc.nextInt();
                int b=sc.nextInt();
                int c=sc.nextInt();
                if(f[0].num<a||f[1].num<b||f[2].num<c)
                {
                        throw new OutNumException();
                }
                f[0].num-=a;
                f[1].num-=b;
                f[2].num-=c;
        
                money=f[0].price*a+f[1].price*b+f[2].price*c;
                
                System.out.println("剩余库存:\n");
                System.out.println("购买成功,应支付"+money+"元\n");
                 for(int i=0;i<6;i++)
         {
                 e[i].print();
         }
                 break;
        case 2:
                System.out.println("1.S\t2.M\t3.L\n");
                System.out.println("请输入购买的数量:\n");
                int a1=sc.nextInt();
                int b1=sc.nextInt();
                int c1=sc.nextInt();
                if(o[0].num<a1||o[1].num<b1||o[2].num<c1)
                {
                        throw new OutNumException();
                }
                o[0].num-=a1;
                o[1].num-=b1;
                o[2].num-=c1;
                money=o[0].price*a1+o[1].price*b1+o[2].price*c1;
                
                System.out.println("剩余库存:\n");
                System.out.println("购买成功,应支付"+money+"元\n");
                 for(int i=0;i<6;i++)
         {
                 e[i].print();
         }
                 break;
        case 3:
                System.out.println("1.辣条\t2.面包\t3.泡面\t4.S\t5.M\t6.L\n");
                System.out.println("请输入购买的数量:\n");
                int a2=sc.nextInt();
                int b2=sc.nextInt();
                int c2=sc.nextInt();
                int a3=sc.nextInt();
                int b3=sc.nextInt();
                int c3=sc.nextInt();
                if(f[0].num<a2||f[1].num<b2||f[2].num<c2||o[0].num<a3||o[1].num<b3||o[2].num<c3)
                {
                        throw new OutNumException();
                }
                f[0].num-=a2;
                f[1].num-=b2;
                f[2].num-=c2;
                o[0].num-=a3;
                o[1].num-=b3;
                o[2].num-=c3;
                money=f[0].price*a2+f[1].price*b2+f[2].price*c2+o[0].price*a3+o[1].price*b3+o[2].price*c3;
                
                System.out.println("剩余库存:\n");
                System.out.println("购买成功,应支付"+money+"元\n");
                 for(int i=0;i<6;i++)
         {
                 e[i].print();
         }
                 break;
                
        }
        break;
        }

catch (InputMismatchException e1) {

        System.out.println("输入类型错误");
        sc.next();

}
        catch(OutNumException e1)
{
                System.out.println(e1.getMessage());
} catch (OutNumException2 e1) {
                // TODO Auto-generated catch block
        System.out.println(e1.getMessage());
        }
        
        }
}
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-25 19:15:47 | 显示全部楼层
建议代码分模块重构一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-7 04:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表