肯德基点餐系统

本文介绍了一个基于Java开发的肯德基点餐系统,包括kfc.java核心模块,checkDialog.java用于交互的对话框,checkListener.java监听用户操作,以及语音识别功能inVoice。系统还提供了截图展示其实际运行效果。

kfc.java

package xust.edu.cn.view;

import xust.edu.cn.action.checkListener;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class KFC extends JFrame {
    private JLabel jl;
    private JPanel kfcPanel;
    private JPanel[] jp; //5个选项卡的JPanel
    private JButton jCheck,jExit;
    private JSpinner[] deliverSpinner;

    //5个选项卡里面的JSpinner
    private JSpinner[] jsp1;
    private JSpinner[] jsp2;
    private JSpinner[] jsp3;
    private JSpinner[] jsp4;
    private JSpinner[] jsp5;

    //5个选型卡里面的Jpanel
    private JPanel[] jp1;
    private JPanel[] jp2;
    private JPanel[] jp3;
    private JPanel[] jp4;
    private JPanel[] jp5;

    private JTabbedPane jt;

    class goodsPanel extends JPanel{
        private String str;

        public  goodsPanel(String str){
            this.str = str;
        }

        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            ImageIcon icon = new ImageIcon(str);
            Image image = icon.getImage();
            g.drawImage(image,0,0,this.getWidth()-12,this.getHeight()-8,this);
        }
    }
    public KFC(){
        this.init();
        this.setLayouts();
        this.setComponents();
        this.addKFC();
        this.setKFC();
        this.deliverSpinner();
        this.addListener();
    }

    public void init() {
        //创建选项卡
        jt = new JTabbedPane(SwingConstants.LEFT);
        //5个选项卡页面,所以创建5个panel
        jp = new JPanel[5];
        jp[0] = new JPanel(new GridLayout(2,2));
        jp[1] = new JPanel(new GridLayout(2,2));
        jp[2] = new JPanel(new GridLayout(2,2));
        jp[3] = new JPanel(new GridLayout(2,2));
        jp[4] = new JPanel(new GridLayout(2,2));

        kfcPanel = new JPanel(){
            @Override
            public void paintComponent(Graphics g) {
                super.paintComponent(g);
                ImageIcon icon = new ImageIcon("src//back.jpg");
                Image image = icon.getImage();
                g.drawImage(image,0,0,kfcPanel.getWidth(),kfcPanel.getHeight(),kfcPanel);
            }
        };

        //设置选项卡内容
        jt.add("当季主打", jp[0]);
        jt.addTab("桶",jp[1]);
        jt.addTab("美味汉堡",jp[2]);
        jt.addTab("鸡翅/鸡排",jp[3]);
        jt.addTab("甜品",jp[4]);

        //初始化第一个选项卡JPanel
        jp1 = new JPanel[4];
        jp1[0] = new goodsPanel("src//当季主打//1.jpg");
        jp1[1] = new goodsPanel("src//当季主打//2.jpg");
        jp1[2] = new goodsPanel("src//当季主打//3.jpg");
        jp1[3] = new goodsPanel("src//当季主打//4.jpg");

        //初始化第二个选项卡JPanel
        jp2 = new JPanel[4];
        jp2[0] = new goodsPanel("src//桶//1.jpg");
        jp2[1] = new goodsPanel("src//桶//2.jpg");
        jp2[2] = new goodsPanel("src//桶//3.jpg");
        jp2[3] = new goodsPanel("src//桶//4.jpg");

        //初始化第三个选项卡JPanel
        jp3 = new JPanel[4];
        jp3[0] = new goodsPanel("src//美味汉堡//1.jpg");
        jp3[1] = new goodsPanel("src//美味汉堡//2.jpg");
        jp3[2] = new goodsPanel("src//美味汉堡//3.jpg");
        jp3[3] = new goodsPanel("src//美味汉堡//4.jpg");

        //初始化第四个选项卡JPanel
        jp4 = new JPanel[4];
        jp4[0] = new goodsPanel("src//鸡翅、鸡排//1.jpg");
        jp4[1] = new goodsPanel("src//鸡翅、鸡排//2.jpg");
        jp4[2] = new goodsPanel("src//鸡翅、鸡排//3.jpg");
        jp4[3] = new goodsPanel("src//鸡翅、鸡排//4.jpg");

        //初始化第五个选项卡JPanel
        jp5 = new JPanel[4];
        jp5[0] = new goodsPanel("src//甜品//1.jpg");
        jp5[1] = new goodsPanel("src//甜品//2.jpg");
        jp5[2] = new goodsPanel("src//甜品//3.jpg");
        jp5[3] = new goodsPanel("src//甜品//4.jpg");

        //初始化5个选项卡的SpinnerModel
        SpinnerModel[] model1 = new SpinnerModel[4];
        SpinnerModel[] model2 = new SpinnerModel[4];
        SpinnerModel[] model3 = new SpinnerModel[4];
        SpinnerModel[] model4 = new SpinnerModel[4];
        SpinnerModel[] model5 = new SpinnerModel[4];

        //初始化第一个选项卡页面的SpinnerNumberModel和JSpinner
        model1[0] = new SpinnerNumberModel(0,0,10,1);
        model1[1] = new SpinnerNumberModel(0,0,10,1);
        model1[2] = new SpinnerNumberModel(0,0,10,1);
        model1[3] = new SpinnerNumberModel(0,0,10,1);
        jsp1 = new JSpinner[4];
        jsp1[0] = new JSpinner(model1[0]);
        jsp1[0].setBounds(150,190,35,25);
        jsp1[1] = new JSpinner(model1[1]);
        jsp1[1].setBounds(150,190,35,25);
        jsp1[2] = new JSpinner(model1[2]);
        jsp1[2].setBounds(150,190,35,25);
        jsp1[3] = new JSpinner(model1[3]);
        jsp1[3].setBounds(150,190,35,25);

        //初始化第二个选项卡页面的SpinnerNumberModel和JSpinner
        model2[0] = new SpinnerNumberModel(0,0,10,1);
        model2[1] = new SpinnerNumberModel(0,0,10,1);
        model2[2] = new SpinnerNumberModel(0,0,10,1);
        model2[3] = new SpinnerNumberModel(0,0,10,1);
        jsp2 = new JSpinner[4];
        jsp2[0] = new JSpinner(model2[0]);
        jsp2[0].setBounds(150,190,35,25);
        jsp2[1] = new JSpinner(model2[1]);
        jsp2[1].setBounds(150,190,35,25);
        jsp2[2] = new JSpinner(model2[2]);
        jsp2[2].setBounds(150,190,35,25);
        jsp2[3] = new JSpinner(model2[3]);
        jsp2[3].setBounds(150,190,35,25);

        //初始化第三个选项卡页面的SpinnerNumberModel和JSpinner
        model3[0] = new SpinnerNumberModel(0,0,10,1);
        model3[1] = new SpinnerNumberModel(0,0,10,1);
        model3[2] = new SpinnerNumberModel(0,0,10,1);
        model3[3] = new SpinnerNumberModel(0,0,10,1);
        jsp3 = new JSpinner[4];
        jsp3[0] = new JSpinner(model3[0]);
        jsp3[0].setBounds(150,190,35,25);
        jsp3[1] = new JSpinner(model3[1]);
        jsp3[1].setBounds(150,190,35,25);
        jsp3[2] = new JSpinner(model3[2]);
        jsp3[2].setBounds(150,190,35,25);
        jsp3[3] = new JSpinner(model3[3]);
        jsp3[3].setBounds(150,190,35,25);

        //初始化第四个选项卡页面的SpinnerNumberModel和JSpinner
        model4[0] = new SpinnerNumberModel(0,0,10,1);
        model4[1] = new SpinnerNumberModel(0,0,10,1);
        model4[2] = new SpinnerNumberModel(0,0,10,1);
        model4[3] = new SpinnerNumberModel(0,0,10,1);
        jsp4 = new JSpinner[4];
        jsp4[0] = new JSpinner(model4[0]);
        jsp4[0].setBounds(150,190,35,25);
        jsp4[1] = new JSpinner(model4[1]);
        jsp4[1].setBounds(150,190,35,25);
        jsp4[2] = new JSpinner(model4[2]);
        jsp4[2].setBounds(150,190,35,25);
        jsp4[3] = new JSpinner(model4[3]);
        jsp4[3].setBounds(150,190,35,25);

        //初始化第五个选项卡页面的SpinnerNumberModel和JSpinner
        model5[0] = new SpinnerNumberModel(0,0,10,1);
        model5[1] = new SpinnerNumberModel(0,0,10,1);
        model5[2] = new SpinnerNumberModel(0,0,10,1);
        model5[3] = new SpinnerNumberModel(0,0,10,1);
        jsp5 = new JSpinner[4];
        jsp5[0] = new JSpinner(model5[0]);
        jsp5[0].setBounds(150,190,35,25);
        jsp5[1] = new JSpinner(model5[1]);
        jsp5[1].setBounds(150,190,35,25);
        jsp5[2] = new JSpinner(model5[2]);
        jsp5[2].setBounds(150,190,35,25);
        jsp5[3] = new JSpinner(model5[3]);
        jsp5[3].setBounds(150,190,35,25);

        jCheck = new JButton();
        jExit = new JButton();

    }
    public void setLayouts(){
        this.setLayout(null);
        kfcPanel.setLayout(null);
        for(int i = 0;i<4;i++){
            jp1[i].setLayout(null);
            jp2[i].setLayout(null);
            jp3[i].setLayout(null);
            jp4[i].setLayout(null);
            jp5[i].setLayout(null);
        }
    }
    public void addKFC(){
        this.add(kfcPanel);
        this.add(jt);

        //加入按钮
        kfcPanel.add(jCheck);
        kfcPanel.add(jExit);

        //把选项卡内部的panel添加进去
        //第一个选项卡
        jp[0].add(jp1[0]);
        jp[0].add(jp1[1]);
        jp[0].add(jp1[2]);
        jp[0].add(jp1[3]);

        //第二个选项卡
        jp[1].add(jp2[0]);
        jp[1].add(jp2[1]);
        jp[1].add(jp2[2]);
        jp[1].add(jp2[3]);
        //第三个选项卡
        jp[2].add(jp3[0]);
        jp[2].add(jp3[1]);
        jp[2].add(jp3[2]);
        jp[2].add(jp3[3]);
        //第四个选项卡
        jp[3].add(jp4[0]);
        jp[3].add(jp4[1]);
        jp[3].add(jp4[2]);
        jp[3].add(jp4[3]);
        //第五个选项卡
        jp[4].add(jp5[0]);
        jp[4].add(jp5[1]);
        jp[4].add(jp5[2]);
        jp[4].add(jp5[3]);

        //把JSpinner添加到Jpanel里
        //第一页选项卡
        jp1[0].add(jsp1[0]);
        jp1[1].add(jsp1[1]);
        jp1[2].add(jsp1[2]);
        jp1[3].add(jsp1[3]);
        //第二页选项卡
        jp2[0].add(jsp2[0]);
        jp2[1].add(jsp2[1]);
        jp2[2].add(jsp2[2]);
        jp2[3].add(jsp2[3]);
        //第三页选项卡
        jp3[0].add(jsp3[0]);
        jp3[1].add(jsp3[1]);
        jp3[2].add(jsp3[2]);
        jp3[3].add(jsp3[3]);
        //第四页选项卡
        jp4[0].add(jsp4[0]);
        jp4[1].add(jsp4[1]);
        jp4[2].add(jsp4[2]);
        jp4[3].add(jsp4[3]);
        //第五页选项卡
        jp5[0].add(jsp5[0]);
        jp5[1].add(jsp5[1]);
        jp5[2].add(jsp5[2]);
        jp5[3].add(jsp5[3]);

    }
    public void setComponents(){

        kfcPanel.setBounds(0,0,500,100);
        jt.setBounds(0,100,500,470);

        //设置按钮
        jCheck.setBounds(330,82,70,18);
        jExit.setBounds(420,82,70,18);
        //设置按钮图片
        ImageIcon iconCheck = new ImageIcon("src//按钮图片//1.jpg");
        ImageIcon iconCheckStop = new ImageIcon("src//按钮图片//2.jpg");
        iconCheck.setImage(iconCheck.getImage().getScaledInstance(jCheck.getWidth(), jCheck.getHeight(),
                Image.SCALE_DEFAULT));
        iconCheckStop.setImage(iconCheckStop.getImage().getScaledInstance(jCheck.getWidth(), jCheck.getHeight(),
                Image.SCALE_DEFAULT));

        jCheck.setIcon(iconCheck);
        jCheck.setRolloverIcon(iconCheckStop);
        jCheck.setFont(new Font("黑体",Font.BOLD,12));
        jCheck.setForeground(Color.darkGray);
        jCheck.setHorizontalTextPosition(JButton.CENTER);
        jCheck.setText("结账");

        jExit.setIcon(iconCheck);
        jExit.setRolloverIcon(iconCheckStop);
        jExit.setFont(new Font("黑体",Font.BOLD,12));
        jExit.setForeground(Color.darkGray);
        jExit.setHorizontalTextPosition(JButton.CENTER);
        jExit.setText("退出");
    }
    public void deliverSpinner(){
        //把所有JSpinner存起来
        deliverSpinner = new JSpinner[20];
        for(int i = 0;i<4;i++){
            deliverSpinner[i] = jsp1[i];
            deliverSpinner[i+4] = jsp2[i];
            deliverSpinner[i+8] = jsp3[i];
            deliverSpinner[i+12] = jsp4[i];
            deliverSpinner[i+16] = jsp5[i];
        }
    }
    public void addListener(){
        jCheck.addActionListener(new checkListener(this));
        jExit.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if(e.getSource()==jExit){
                    dispose();
                }
            }
        });
    }
    public void setKFC(){
        this.setTitle("KFC点餐");
        this.setSize(500,600);
        this.setLocation(450,50);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);

    }
    public JButton getjCheck(){return jCheck;}
    public JSpinner[] getDeliverSpinner(){return deliverSpinner;}
    public static void main(String[] args) {
        KFC kfc = new KFC();
    }
}

checkDialog.java

package xust.edu.cn.view;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.text.DecimalFormat;

public class checkDialog extends JFrame {
    private JDialog jdg;
    private JPanel jp;
    private JPanel[] littlePanel;
    private KFC jFrameKFC;
    private JLabel[] jlb;
    private JTextField jtf;
    private JButton jb_pay,jb_exit;
    private JTextArea jt;
    private JScrollPane jsp;
    private JCheckBox jcb;
    private checkDialog deliverCheckDialog;

    private double fee = 0.0; //消费额
    private double pay = 0.0; //支付额
    private double returnMoney = 0.0; //找零

    public checkDialog(KFC jfKFC){
        jFrameKFC = jfKFC;
        deliverCheckDialog = this;
        this.init();
        this.setLayouts();
        this.setComponents();
        this.addActionListeners();
        this.addComponent();
        this.setCheckDialog();
    }
    public void init(){
        jdg = new JDialog(jFrameKFC,"结账 页面",true);

        jlb = new JLabel[3];
        jlb[0] = new JLabel();
        jlb[1] = new JLabel();
        jlb[2] = new JLabel();
        jtf = new JTextField();
        jcb = new JCheckBox();

        jt = new JTextArea("尊敬的用户,您选购的商品有:\n");
        jsp = new JScrollPane(jt);

        jb_pay = new JButton();
        jb_exit = new JButton();

        jp = new JPanel(){
            public void paintComponent(Graphics g){
                super.paintComponent(g);
                ImageIcon icon = new ImageIcon("src//check.jpg");
                Image image = icon.getImage();
                g.drawImage(image,0,0,this.getWidth(),this.getHeight(),this);
            }
        };
        littlePanel = new JPanel[3];
        littlePanel[0] = new JPanel();
        littlePanel[1] = new JPanel();
        littlePanel[2] = new JPanel();
    }
    public void setLayouts(){
        jp.setLayout(new GridLayout(3,1));

        littlePanel[0].setLayout(null);
        littlePanel[1].setLayout(new GridLayout(1,1));
        littlePanel[2].setLayout(new GridLayout(1,2));
    }
    public void setComponents(){
        this.outGoods();

        jlb[0].setText("您本次消费金额为:"+fee);
        jlb[1].setText("是否使用优惠券");
        jlb[2].setText("输入支付金额:");

        jb_pay.setText("付钱");
        jb_exit.setText("再逛逛");

        jlb[0].setBounds(10,10,150,20);
        jlb[1].setBounds(10,35,110,20);
        jcb.setBounds(110,35,20,20);
        jlb[2].setBounds(10,60,100,20);
        jtf.setBounds(110,60,40,20);

    }
    public void addComponent(){
        jdg.add(jp);
        jp.add(littlePanel[0]);
        jp.add(littlePanel[1]);
        jp.add(littlePanel[2]);

        littlePanel[0].add(jlb[0]);
        littlePanel[0].add(jlb[1]);
        littlePanel[0].add(jcb);
        littlePanel[0].add(jlb[2]);
        littlePanel[0].add(jtf);
        littlePanel[1].add(jsp);
        littlePanel[2].add(jb_pay);
        littlePanel[2].add(jb_exit);

    }
    public void setCheckDialog(){
        jdg.setSize(200,350);
        jdg.setResizable(false);
        jdg.setLocationRelativeTo(jFrameKFC);
        jdg.setVisible(true);

        jp.setSize(jdg.getWidth(),jdg.getHeight());

        jsp.setVerticalScrollBar(new JScrollBar());
        jsp.setVisible(true);
    }
    public void outGoods(){
        String[] goodsName = {"19.9元葡式蛋挞5只 ","万圣节日辣堡桶S " , "翅桶辣堡奥堡套餐S ","万圣节日劲堡桶S ",
                            "万圣节日辣堡桶S","超级翅桶  ","翅桶辣堡奥堡套餐S ","万圣节日劲堡桶S",
                            "塔可奥堡双人餐S ","嫩牛五方","嫩牛五方辣翅双人餐S ","卷堡S三人餐",
                            "(六块)吮指原味鸡 ","热辣香骨鸡","原味鸡波纹霸薯套餐B","二块香辣鸡翅",
                            "原味圣代(巧克力酱)","原味圣代(草莓酱)","华夫礼盒(3巧克力)","幻黑芝士冰淇淋杯"};
        double[] money = {19.9,67.0,89.0,67.0,
                        67.0,79.0,89.0,67.0,
                        65.0,18.0,69.0,98.0,
                        56.0,11.0,37.5,11.0,
                        10.5,10.0,33.0,12.0};


        for(int i = 0;i<20;i++){
            Object object = jFrameKFC.getDeliverSpinner()[i].getValue();
            int count = Integer.parseInt(String.valueOf(object));
            if(count>0){
                jt.append(goodsName[i]+"*"+count+"\n");
                fee += count*money[i];
            }
        }
        fee = Double.valueOf(new DecimalFormat("#.0").format(fee));
    }
    public void addActionListeners(){
        jtf.addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent e) {
                super.keyTyped(e);
                int k = e.getKeyChar();
                if(k>=KeyEvent.VK_0 && k<=KeyEvent.VK_9){

                }else{
                    e.consume();
                }
            }
        });
        jb_pay.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (e.getSource() == jb_pay && jtf.getText()!=null){
                    pay = Double.valueOf(jtf.getText());
                    double tempFee = fee;
                    if(jcb.isSelected()==true){
                        tempFee = fee*0.8;
                    }
                    if (pay < tempFee) {
                        ImageIcon icon = new ImageIcon("src//tip.jpg");
                        icon.setImage(icon.getImage().getScaledInstance(100, 100, Image.SCALE_DEFAULT));
                        JOptionPane.showMessageDialog(jdg, "您输入的金额过少,请重新输入❤", "温馨提示", JOptionPane.INFORMATION_MESSAGE, icon);
                    } else {
                        jdg.dispose();
                        returnMoney = pay - tempFee;
                        returnMoney = Double.valueOf(new DecimalFormat("#.0").format(returnMoney));
                        new inVoice(deliverCheckDialog);
                    }
                }
            }
        });
        jb_exit.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if(e.getSource()==jb_exit){
                    jdg.dispose();
                }
            }
        });
    }

    public JDialog getJdg(){return jdg;}
    public JTextArea getJt(){return jt;}
    public double getFee(){return fee;}
    public double getPay(){return pay;}
    public double getReturnMoney(){return returnMoney;}
}

inVoice

package xust.edu.cn.view;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class inVoice extends JDialog {
    private checkDialog checkDialog;
    private JPanel jbigPanel;
    private JLabel[] jlb;
    private JScrollPane jsp;
    private JTextArea jt;
    private JButton jb;

    public inVoice(checkDialog jdg){
        checkDialog = jdg;

        this.init();
        this.addComponents();
        this.setComponent();
        this.setLayouts();
        this.addAction();
        this.setInVoice();

    }
    public void init(){
        jbigPanel = new JPanel();

        jlb = new JLabel[3];
        jlb[0] = new JLabel();
        jlb[1] = new JLabel();
        jlb[2] = new JLabel();

        jt = checkDialog.getJt();
        jsp = new JScrollPane(jt);

        jb = new JButton();
    }
    public void setComponent(){
        jbigPanel.setSize(checkDialog.getWidth(),checkDialog.getHeight());

        jlb[0].setText("您本次的消费总额为:"+checkDialog.getFee()+"元");
        jlb[1].setText("您支付金额为"+checkDialog.getPay()+"元");
        jlb[2].setText("找您零钱为:"+checkDialog.getReturnMoney()+"元");

        jb.setText("退出");

        jlb[0].setBounds(10,10,200,20);
        jlb[1].setBounds(10,35,140,20);
        jlb[2].setBounds(10,60,140,20);
        jsp.setBounds(10,90,200,50);
        jb.setBounds(10,150,70,30);

    }
    public void setLayouts(){
        jbigPanel.setLayout(null);
    }
    public void addComponents(){
        this.add(jbigPanel);

        jbigPanel.add(jlb[0]);
        jbigPanel.add(jlb[1]);
        jbigPanel.add(jlb[2]);
        jbigPanel.add(jsp);
        jbigPanel.add(jb);
    }
    public void setInVoice(){
        this.setTitle("谢谢惠顾❤");
        this.setModal(true);
        this.setSize(230,230);
        this.setResizable(false);
        this.setLocationRelativeTo(checkDialog);
        this.setVisible(true);
    }
    public void addAction(){
        jb.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if(e.getSource()==jb){
                    dispose();
                }
            }
        });
    }
}

checkListener.java

package xust.edu.cn.action;

import xust.edu.cn.view.KFC;
import xust.edu.cn.view.checkDialog;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class checkListener implements ActionListener {
    private KFC jf;
    private int goodsNum = 0;
    public checkListener(KFC jfKFC) {
        jf = jfKFC;
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        for (int i = 0; i < 20; i++) {
            Object object = jf.getDeliverSpinner()[i].getValue();
            int count = Integer.parseInt(String.valueOf(object));
            goodsNum += count;
        }
        if(e.getSource() == jf.getjCheck()){
            if(goodsNum>0){
                new checkDialog(jf);
            }
            else {
                ImageIcon icon = new ImageIcon("src//tip.jpg");
                icon.setImage(icon.getImage().getScaledInstance(100,100,Image.SCALE_DEFAULT));
                JOptionPane.showMessageDialog(jf,"请选择商品❤","温馨提示",JOptionPane.INFORMATION_MESSAGE,icon);
            }
            goodsNum = 0;
        }
    }
}

实现截图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值