基于java+mysql的swing+mysql火车票售票管理系统(java+swing+mysql+gui)

基于java+mysql的swing+mysql火车票售票管理系统(java+swing+mysql+gui)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

管理员管理车票和用户、用户购买车票等

技术框架

Java Swing MySQL

基于java+mysql的Swing+MySQL火车票售票管理系统(java+swing+mysql+gui)

        txtstation_arrival.setBounds(350, 65, 146, 23);
        add(txtstation_arrival);
        txtstation_arrival.setColumns(10);
        txtstation_arrival.setText(ticket.getStation_arrival());

        JLabel label1 = new JLabel("乘车站:");
        label1.setBounds(280, 97, 146, 23);
        add(label1);

        txtstation_depart = new JTextField();
        txtstation_depart.setBounds(350, 97, 146, 23);
        add(txtstation_depart);
        txtstation_depart.setColumns(10);
        txtstation_depart.setText(ticket.getStation_depart());

        JLabel label_20 = new JLabel("发车日期:");
        label_20.setBounds(280, 130, 146, 23);
        add(label_20);

        txtdepart_date = new JTextField();
        txtdepart_date.setBounds(350, 130, 146, 23);
        add(txtdepart_date);
        txtdepart_date.setColumns(10);
        txtdepart_date.setText(ticket.getDepart_date());

        JLabel label_2 = new JLabel("发车时间:");
        label_2.setBounds(280, 162, 146, 23);
        add(label_2);

        txtdepart_time = new JTextField();
        txtdepart_time.setBounds(350, 162, 146, 23);
        add(txtdepart_time);
        txtdepart_time.setColumns(10);
        txtdepart_time.setText(ticket.getDepart_time());

        JLabel label_3 = new JLabel("车次(整数):");
        label_3.setBounds(280, 195, 146, 23);
        add(label_3);

        txtticket_number = new JTextField();
        txtticket_number.setBounds(350, 195, 146, 23);
        add(txtticket_number);
        txtticket_number.setColumns(10);
        txtticket_number.setText(String.valueOf(ticket.getTicket_number()));

        JLabel label_4 = new JLabel("车票余量:");
        label_4.setBounds(280, 227, 146, 23);
                } catch (Exception e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        });
        btnNewButton.setBounds(320, 400, 116, 23);
        add(btnNewButton);

    }

}
/**
 * 添加用户
 */

public class AddUser extends JPanel {
    private JTextField txtname;
    private JTextField txtidentity_number;
    private JTextField txtaccout;
    private JTextField txtPassword;
    private UserDaoImpl userDao;

    /**
     * Create the panel.
     */
    public AddUser() {
        setLayout(null);

        JLabel label = new JLabel("用户姓名:");
        label.setBounds(250, 100, 70, 23);
        add(label);

        txtname = new JTextField();
        txtname.setBounds(350, 100, 180, 23);
        add(txtname);
    public UpdataUser(User user) {
        setLayout(null);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(500, 100, 800, 800);
        contentPane = new JPanel();

        JLabel label = new JLabel("用户姓名:");
        label.setBounds(250, 100, 70, 23);
        add(label);

        txtname = new JTextField();
        txtname.setBounds(350, 100, 180, 23);
        add(txtname);
        txtname.setColumns(10);
        txtname.setText(user.getName());

        JLabel label_1 = new JLabel("证件号码");
        label_1.setBounds(250, 170, 70, 23);
        add(label_1);

        txtidentity_number = new JTextField();
        txtidentity_number.setBounds(350, 170, 180, 23);
        add(txtidentity_number);
        txtidentity_number.setColumns(10);
        txtidentity_number.setText(user.getIdentity_number());

        JLabel label_2 = new JLabel("账号");
        label_2.setBounds(250, 240, 70, 23);
        add(label_2);

        txtaccout = new JTextField();
        txtaccout.setBounds(350, 240, 180, 23);
        add(txtaccout);
        txtaccout.setColumns(10);
        txtaccout.setText(user.getAccount());

        JLabel label_3 = new JLabel("密码");
        label_3.setBounds(250, 310, 70, 23);
        add(label_3);

        txtPassword = new JTextField();
        txtPassword.setBounds(350, 310, 180, 23);
        add(txtPassword);
        txtPassword.setColumns(10);
        txtPassword.setText(user.getPassword());

        userDao = new UserDaoImpl();

        JButton btnNewButton = new JButton("修改用户");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {

        List<User> user = new ArrayList<>();
        while (rs.next()) {
            int userid0 = rs.getInt(1);
            String name = rs.getString(2);
            String identity_number = rs.getString(3);
            String account = rs.getString(4);
            String password = rs.getString(5);
            User user0 = new User(userid0, name, identity_number, account, password);
            user.add(user0);
        }
        Util.closeAll(con, stmt, rs);
        return user;
    }

    public List<User> queryAll() throws SQLException {
        Connection con = Util.getConnection();
        String sqladd = "select * from user";
        PreparedStatement stmt = con.prepareStatement(sqladd);
        ResultSet rs = stmt.executeQuery();
        List<User> user = new ArrayList<>();
        while (rs.next()) {
            int userid0 = rs.getInt(1);
            String name = rs.getString(2);
            String identity_number = rs.getString(3);
            String account = rs.getString(4);
            String password = rs.getString(5);
            User user0 = new User(userid0, name, identity_number, account, password);
            user.add(user0);
        }
        Util.closeAll(con, stmt, rs);
        return user;
    }

    @Override
    public boolean SlectAcPs(String account, String password) throws SQLException {
        boolean flag = false;
        String sql = "select account,password from user";
        Connection con = Util.getConnection();
        PreparedStatement stmt = con.prepareStatement(sql);
        ResultSet rr = stmt.executeQuery();
        while (rr.next()) {
            String account1 = rr.getString(1);
        add(label_8);

        txtticket_office = new JTextField();
        txtticket_office.setBounds(350, 357, 146, 23);
        add(txtticket_office);
        txttickets_left.setColumns(10);

        ticketDao = new TicketImpl();
        JButton btnNewButton = new JButton("添加车票");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {

                if (txtstation_arrival.getText().equals("")) {    //判断用户输入是否为空;
                    JOptionPane.showMessageDialog(null, "请输入到达站", "警告对话框", JOptionPane.WARNING_MESSAGE);
                    return;
                } else if (txtstation_depart.getText().equals("")) {
                    JOptionPane.showMessageDialog(null, "请输入乘车站", "警告对话框", JOptionPane.WARNING_MESSAGE);
                    return;
                } else if (txtdepart_date.getText().equals("")) {
                    JOptionPane.showMessageDialog(null, "请输入发车日期", "警告对话框", JOptionPane.WARNING_MESSAGE);
                    return;
                } else if (txtdepart_time.getText().equals("")) {
                    JOptionPane.showMessageDialog(null, "请输入发车时间", "警告对话框", JOptionPane.WARNING_MESSAGE);
                    return;
                } else if (txtticket_number.getText().equals("")) {
                    JOptionPane.showMessageDialog(null, "请输入车次", "警告对话框", JOptionPane.WARNING_MESSAGE);
                    return;
                } else if (txttickets_left.getText().equals("")) {
                    JOptionPane.showMessageDialog(null, "请输入余票", "警告对话框", JOptionPane.WARNING_MESSAGE);
                    return;
                } else if (txtfares.getText().equals("")) {
                    JOptionPane.showMessageDialog(null, "请输入票价", "警告对话框", JOptionPane.WARNING_MESSAGE);
                    return;
                } else if (txtticket_office.getText().equals("")) {
                    JOptionPane.showMessageDialog(null, "请输入发售站", "警告对话框", JOptionPane.WARNING_MESSAGE);
                    return;
                }

                String station_arrival = txtstation_arrival.getText();
                String station_depart = txtstation_depart.getText();
                String depart_date = txtdepart_date.getText();
                String depart_time = txtdepart_time.getText();
                String ticket_number0 = txtticket_number.getText();
                int ticket_number = Integer.parseInt(ticket_number0);
                Seattype seattype = (Seattype) cmbseattype.getSelectedItem();
                String seattypeid = String.valueOf(seattype.getSeattypename()).toString();
                Tickettype tickettype = (Tickettype) cmbtickettype.getSelectedItem();
                query.del();
            } catch (SQLException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        Usermanagement_ui ss = new Usermanagement_ui();
        ss.setVisible(true);
    }

}

	
/**
 * 用户车票操作界面
 */

public class User_user_db extends JPanel {
    private JTable table;
    private DefaultTableModel model;// 用于存储表格数据
    private String oldValue = "";// 保存单元格编辑 前的值
    private UserTicketDao usertickrtdao;
    private UserDao userdao;
    private TickeDao ticketdao;
        textacc = a;
    }

    public void setpassField(JTextField b) {
        textpass = b;
    }

    public void setnameField(JTextField c) {
        textname = c;
    }

    public void setidentity_numberField(JTextField f) {
        textidentity_number = f;
    }

    public void setokButton(JButton b1) {
        okButton = b1;
    }

    public void setresetButton(JButton b2) {
        resetButton = b2;
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == okButton) {
            if (textacc.getText().equals(""))            //判断用户输入是否为空;
                JOptionPane.showMessageDialog(null, "请输入账号", "警告对话框", JOptionPane.WARNING_MESSAGE);
            else if (textpass.getText().equals(""))
                JOptionPane.showMessageDialog(null, "请输入密码", "警告对话框", JOptionPane.WARNING_MESSAGE);
            else if (textname.getText().equals(""))
                JOptionPane.showMessageDialog(null, "请输入姓名", "警告对话框", JOptionPane.WARNING_MESSAGE);
            else if (textidentity_number.getText().equals(""))
                JOptionPane.showMessageDialog(null, "请输入身份证号", "警告对话框", JOptionPane.WARNING_MESSAGE);
            else {
                String acc = textacc.getText();
                String pass = textpass.getText();
                String name = textname.getText();
                String identity_number = textidentity_number.getText();
                if (acc.trim().length() < 1) {
                    JOptionPane.showMessageDialog(null, "账号必须大于0位!");

                    return;
                }
                if (pass.trim().length() < 1) {
                    JOptionPane.showMessageDialog(null, "密码必须大于0位!");

                    return;
                }

                try {

                    userdao = new UserDaoImpl();
        contentPane = new JPanel();

        JLabel label = new JLabel("到达站:");
        label.setBounds(280, 65, 146, 23);
        add(label);

        txtstation_arrival = new JTextField();
        txtstation_arrival.setBounds(350, 65, 146, 23);
        add(txtstation_arrival);
        txtstation_arrival.setColumns(10);
        txtstation_arrival.setText(ticket.getStation_arrival());

        JLabel label1 = new JLabel("乘车站:");
        label1.setBounds(280, 97, 146, 23);
        add(label1);

        txtstation_depart = new JTextField();
        txtstation_depart.setBounds(350, 97, 146, 23);
        add(txtstation_depart);
        txtstation_depart.setColumns(10);
        txtstation_depart.setText(ticket.getStation_depart());

        JLabel label_20 = new JLabel("发车日期:");
        label_20.setBounds(280, 130, 146, 23);
        add(label_20);

        txtdepart_date = new JTextField();
        txtdepart_date.setBounds(350, 130, 146, 23);
        add(txtdepart_date);
        txtdepart_date.setColumns(10);
        txtdepart_date.setText(ticket.getDepart_date());

        JLabel label_2 = new JLabel("发车时间:");
        label_2.setBounds(280, 162, 146, 23);
        add(label_2);

        txtdepart_time = new JTextField();
        txtdepart_time.setBounds(350, 162, 146, 23);
        add(txtdepart_time);
        txtdepart_time.setColumns(10);
        txtdepart_time.setText(ticket.getDepart_time());

        JLabel label_3 = new JLabel("车次(整数):");
        label_3.setBounds(280, 195, 146, 23);
        add(label_3);

        txtticket_number = new JTextField();
        txtticket_number.setBounds(350, 195, 146, 23);
        add(txtticket_number);
        txtticket_number.setColumns(10);
        txtticket_number.setText(String.valueOf(ticket.getTicket_number()));
            }
        });
        btnNewButton.setBounds(320, 400, 116, 23);
        add(btnNewButton);

    }

}
/**
 * 添加用户
 */

public class AddUser extends JPanel {
    private JTextField txtname;
    private JTextField txtidentity_number;
    private JTextField txtaccout;
    private JTextField txtPassword;
    private UserDaoImpl userDao;

    /**
     * Create the panel.
     */
    public AddUser() {
        setLayout(null);

        JLabel label = new JLabel("用户姓名:");
        label.setBounds(250, 100, 70, 23);
        add(label);

        txtname = new JTextField();
        txtname.setBounds(350, 100, 180, 23);
        add(txtname);
        txtname.setColumns(10);

        JLabel label_1 = new JLabel("证件号码");
        label_1.setBounds(250, 170, 70, 23);
        add(label_1);

        txtidentity_number = new JTextField();
        txtidentity_number.setBounds(350, 170, 180, 23);
        add(txtidentity_number);
        return userticketuserid;
    }

    public void setUserticketuserid(int userticketuserid) {
        this.userticketuserid = userticketuserid;
    }

    public int getUserticketticketid() {
        return userticketticketid;
    }

    public void setUserticketticketid(int userticketticketid) {
        this.userticketticketid = userticketticketid;
    }

    public String getUserticketname() {
        return userticketname;
    }

    public String getUserticketidentity_number() {
        return userticketidentity_number;
    }

    public void setUserticketidentity_number(String userticketidentity_number) {
        this.userticketidentity_number = userticketidentity_number;
    }

    public void setUserticketname(String userticketname) {
        this.userticketname = userticketname;
    }

    public String getUserticketstation_arrival() {
        return userticketstation_arrival;
    }

    public void setUserticketstation_arrival(String userticketstation_arrival) {
        this.userticketstation_arrival = userticketstation_arrival;
    }

    public String getUserticketstation_depart() {
        return userticketstation_depart;
    }

    public void setUserticketstation_depart(String userticketstation_depart) {
        this.userticketstation_depart = userticketstation_depart;

public class UserTicketImpl implements UserTicketDao {

    @Override
    public boolean add(int userticketuserid, int userticketticketid, String userticketname,
                       String userticketidentity_number, String userticketstation_arrival, String userticketstation_depart,
                       String userticketdepart_date, String userticketdepart_time, int userticketticket_number,
                       String userticketseattype, String usertickettickettype, String userticketfares,
                       String userticketticket_office) throws Exception {
        Connection con = Util.getConnection();
        String sqladd = "insert into userticket(userticketuserid,userticketticketid,userticketname,userticketidentity_number,userticketstation_arrival,"
                + "userticketstation_depart,userticketdepart_date,"
                + "userticketdepart_time,userticketticket_number,userticketseattype,"
                + "usertickettickettype,userticketfares,userticketticket_office) values"
                + "(?,?,?,?,?,?,?,?,?,?,?,?,?)";
        PreparedStatement stmt = con.prepareStatement(sqladd);
        stmt.setInt(1, userticketuserid);
        stmt.setInt(2, userticketticketid);
        stmt.setString(3, userticketname);
        stmt.setString(4, userticketidentity_number);
        stmt.setString(5, userticketstation_arrival);
        stmt.setString(6, userticketstation_depart);
        stmt.setString(7, userticketdepart_date);
        stmt.setString(8, userticketdepart_time);
        stmt.setInt(9, userticketticket_number);
        stmt.setString(10, userticketseattype);
        stmt.setString(11, usertickettickettype);
        stmt.setString(12, userticketfares);
        stmt.setString(13, userticketticket_office);
        stmt.executeUpdate();
        return true;
    }

    @Override
    public boolean update(UserTicket UserTicket) throws SQLException {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void delete(int userticketid) throws SQLException {
        Connection con = Util.getConnection();
        String sqladd = "delete from userticket where userticketid=?";
        PreparedStatement stmt = con.prepareStatement(sqladd);
    String userticketidentity_number;
    String userticketstation_arrival;
    String userticketstation_depart;
    String userticketdepart_date;
    String userticketdepart_time;
    int userticketticket_number;
    String userticketseattype;
    String usertickettickettype;
    String userticketfares;
    String userticketticket_office;

    public int getUserticketid() {
        return userticketid;
    }

    public void setUserticketid(int userticketid) {
        this.userticketid = userticketid;
    }

    public int getUserticketuserid() {
        return userticketuserid;
    }

    public void setUserticketuserid(int userticketuserid) {
        this.userticketuserid = userticketuserid;
    }

    public int getUserticketticketid() {
        return userticketticketid;
    }

    public void setUserticketticketid(int userticketticketid) {
        this.userticketticketid = userticketticketid;
    }

    public String getUserticketname() {
        return userticketname;
    }

    public String getUserticketidentity_number() {
        return userticketidentity_number;
    }

    public void setUserticketidentity_number(String userticketidentity_number) {
        this.userticketidentity_number = userticketidentity_number;
    }

        PreparedStatement stmt = con.prepareStatement(sqladd);
        ResultSet rs = stmt.executeQuery();
        List<UserTicket> userticket = new ArrayList<>();
        while (rs.next()) {
            int userticketid = rs.getInt(1);
            int userticketuserid = rs.getInt(2);
            int userticketticketid0 = rs.getInt(3);
            String userticketname = rs.getString(4);
            String userticketidentity_number = rs.getString(5);
            String userticketstation_arrival = rs.getString(6);
            String userticketstation_depart = rs.getString(7);
            String userticketdepart_date = rs.getString(8);
            String userticketdepart_time = rs.getString(9);
            int userticketticket_number = rs.getInt(10);
            String userticketseattype = rs.getString(11);
            String usertickettickettype = rs.getString(12);
            String userticketfares = rs.getString(13);
            String userticketticket_office = rs.getString(14);

            UserTicket userticket0 = new UserTicket(userticketid, userticketuserid, userticketticketid0,
                    userticketname, userticketidentity_number, userticketstation_arrival,
                    userticketstation_depart, userticketdepart_date,
                    userticketdepart_time, userticketticket_number, userticketseattype,
                    usertickettickettype, userticketfares, userticketticket_office);

            userticket.add(userticket0);
        }
        Util.closeAll(con, stmt, rs);
        return userticket;
    }

    @Override
    public boolean buyTicket(int ticketid, int userid) throws Exception {
        Connection con = Util.getConnection();

        String sqlll = "update ticket set tickets_left=tickets_left-1 where ticketid = ?";
        PreparedStatement stmttt = con.prepareStatement(sqlll);
        stmttt.setInt(1, ticketid);
        stmttt.executeUpdate();

        ResultSet rs = null;
        Util.closeAll(con, stmttt, rs);
        return true;
    }

    @Override
        // 为表格绑定修改值后的事件
        model.addTableModelListener(new TableModelListener() {

            @Override
            public void tableChanged(TableModelEvent e) {
                if (e.getColumn() < 0)
                    return;
                String nVal = table.getValueAt(e.getLastRow(), e.getColumn())
                        .toString();
                // 如果旧的值 和新的值一样,直接 返回
                if (nVal.equals(oldValue)) {
                    return;
                }
                // 判断当前编辑的单元格是否是主键列
                if (e.getColumn() == 0) {
                    // 还原旧的值
                    table.setValueAt(oldValue, e.getLastRow(), e.getColumn());
                    return;
                }
                // 更新数据

                int ticketid = Integer.valueOf(table.getValueAt(e.getLastRow(), 0).toString());
                String station_arrival = table.getValueAt(e.getLastRow(), 1).toString();
                String station_depart = table.getValueAt(e.getLastRow(), 2).toString();
                String depart_date = table.getValueAt(e.getLastRow(), 3).toString();
                String depart_time = table.getValueAt(e.getLastRow(), 4).toString();
                int ticket_number = Integer.valueOf(table.getValueAt(e.getLastRow(), 5).toString());
                String seattype = table.getValueAt(e.getLastRow(), 6).toString();
                String tickettype = table.getValueAt(e.getLastRow(), 7).toString();

                int tickets_left = Integer.valueOf(table.getValueAt(e.getLastRow(), 8).toString());
                String fares = table.getValueAt(e.getLastRow(), 9).toString();
                String ticket_office = table.getValueAt(e.getLastRow(), 10).toString();
                Ticket ticket = new Ticket(ticketid, station_arrival, station_depart, depart_date, depart_time, ticket_number
                        , seattype, tickettype, tickets_left, fares, ticket_office);
                try {
                    ticketimpl.update(ticket);
                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                try {
                    loadData();
                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        });
/**
 * 用户信息修改
 */

public class UpdataUser extends JFrame {

    JPanel contentPane;
    private JTextField txtname;
    private JTextField txtidentity_number;
    private JTextField txtaccout;
    private JTextField txtPassword;
    private UserDaoImpl userDao;

    public UpdataUser(User user) {
        setLayout(null);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(500, 100, 800, 800);
        contentPane = new JPanel();

        JLabel label = new JLabel("用户姓名:");
        label.setBounds(250, 100, 70, 23);
        add(label);

        txtname = new JTextField();
        txtname.setBounds(350, 100, 180, 23);
        add(txtname);
        txtname.setColumns(10);
        txtname.setText(user.getName());
    }

}
/**
 * 管理员用户操作UI
 */

public class Usermanagement_ui extends JFrame implements ActionListener {
    JPanel panelBottom;
    JPanel contentPane;
    private JButton yhQue;
    private JButton yhDel;
    private JButton yhAdd;
    private JButton yhUpdata;
    private JButton yuchonfzhi;
    private JButton tuichu;
    private JButton tzcp;
    private AddUser add;
    private QueryUser query;
    private UpdataUser updata;

    public Usermanagement_ui() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(500, 100, 800, 800);

        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);

        JPanel panel = new JPanel();
        contentPane.add(panel, BorderLayout.NORTH);

        panel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));//流式居中
public class Ticketmanagement_ui extends JFrame implements ActionListener {

    JPanel contentPane4;
    JPanel contentPane;
    JPanel panelBottom;
    private JButton tzyh;
    private JButton btnQue;
    private JButton btnDel;
    private JButton btnAdd;
    private JButton tuichu;
    private JButton btnUpd;
    private AddTicket add;
    private QueryTicket query;

    public Ticketmanagement_ui() {

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(500, 100, 800, 800);

        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);

        JPanel panel = new JPanel();
        contentPane.add(panel, BorderLayout.NORTH);

        panel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));//流式居中

        btnQue = new JButton("查看车票信息");
        panel.add(btnQue);
        btnQue.setActionCommand("que");

        btnDel = new JButton("删除所选");
        panel.add(btnDel);
        btnDel.setActionCommand("del");

        btnAdd = new JButton("添加车票");
        panel.add(btnAdd);
        btnAdd.setActionCommand("add");

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值