Booking Flight-JAVA

public class BaseFrame extends JFrame{
	
	public BaseFrame(){
		// 设置窗口大小
		this.setSize(800, 600);
		// 隐藏边框
		this.setUndecorated(true);
		// 设置居中
		this.setLocationRelativeTo(null);
		// 设置是否可以改变大小
		this.setResizable(false);
		// 用户单击窗口的关闭按钮时程序执行的操作
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// 窗体布局为空
		this.getContentPane().setLayout(null);
				
	}
	
}
public class MainFrame extends BaseFrame implements ActionListener{	
	JButton buybutton;
	JButton checkbutton;
	JButton rebutton;
	JButton backbutton;
	
	public MainFrame(){
		//
		setTitle("购票系统");	
		FrameBackground.setBG(this, "img/bg1.jpg");
		//
		buybutton=new CustomButton(150,450,"购票",CustomButton.LEFT);
		checkbutton=new CustomButton(500,450,"值机",CustomButton.RIGHT);
		rebutton=new CustomButton(150,500,"退票/改签",CustomButton.LEFT);
		backbutton=new CustomButton(500,500,"退出系统",CustomButton.RIGHT);
		//	
		buybutton.addActionListener(this);
		checkbutton.addActionListener(this);
		rebutton.addActionListener(this);
		backbutton.addActionListener(this);
		add(buybutton);
		add(checkbutton);
		add(rebutton);
		add(backbutton);
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO 自动生成的方法存根
		String s= e.getActionCommand();
		if(s.equals("购票")){
			BuyFrame buyframe=new BuyFrame();
			buyframe.setVisible(true);
		}
		//
		if(s.equals("值机")){
			CheckFrame checkframe=new CheckFrame();
			checkframe.setVisible(true);
		}
		//
		if(s.equals("退票/改签")){
			ReFrame reFrame=new ReFrame();
			reFrame.setVisible(true);
		}
		//
		if(s.equals("退出系统")){
			System.exit(0);//关闭整个界面
		}
		
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		MainFrame mf=new MainFrame();
		mf.setVisible(true);

	}
 }
public class BuyFrame extends BaseFrame implements ActionListener{
	JLabel startLabel;
	JLabel endLabel;
	JLabel IDLabel;
	JLabel nameLabel;
	JLabel flightLabel;
	JLabel startdateLabel;
	JComboBox<String> startComboBox;
	JComboBox<String> endComboBox;
	JTextField IDtextfield;
	JTextField nametextfield;
	JTextField flighttextfield;
	JTextField startdatetextfield;
	String[] startname;
	String[] endname;
	JButton backbutton;
	JButton paybutton;
	
	BuyFrame(){
		this.setTitle("购票界面");
		FrameBackground.setBG(this, "img/bg2.jpg");
		//起始地,目的地字符串
		startname= new String[]{"大连","北京","上海","广州","深圳","成都","昆明","哈尔滨","长春","沈阳","天津","西安","乌鲁木齐","郑州","武汉","无锡","南京","温州","重庆","三亚","厦门","长沙","青岛","杭州"};
		endname= new String[]{"大连","北京","上海","广州","深圳","成都","昆明","哈尔滨","长春","沈阳","天津","西安","乌鲁木齐","郑州","武汉","无锡","南京","温州","重庆","三亚","厦门","长沙","青岛","杭州"};
		//添加起始地标签,文本
		startLabel=new JLabel("startadderss");
		startLabel.setHorizontalAlignment(SwingConstants.RIGHT);
		startLabel.setBounds(250, 100, 80, 30);
		startComboBox=new JComboBox<String>(startname);
		startComboBox.setBounds(350, 100, 200, 30);
		this.add(startLabel);
		this.add(startComboBox);
		//添加目的地标签,文本
		endLabel=new JLabel("endadderss");
		endLabel.setHorizontalAlignment(SwingConstants.RIGHT);
		endLabel.setBounds(250, 150, 80, 30);
		endComboBox=new JComboBox<String>(endname);
		endComboBox.setBounds(350, 150, 200, 30);
		this.add(endLabel);
		this.add(endComboBox);
		//添加ID标签,文本
		IDLabel=new JLabel("IDNumber");
		IDLabel.setHorizontalAlignment(SwingConstants.RIGHT);
		IDLabel.setBounds(250, 200, 80, 30);
		IDtextfield=new JTextField();
		IDtextfield.setBounds(350, 200, 200, 30);
		this.add(IDLabel);
		this.add(IDtextfield);
		//添加姓名标签,文本
		nameLabel=new JLabel("Name");
		nameLabel.setHorizontalAlignment(SwingConstants.RIGHT);
		nameLabel.setBounds(250, 250, 80, 30);
		nametextfield=new JTextField();
		nametextfield.setBounds(350, 250, 200, 30);
		this.add(nameLabel);
		this.add(nametextfield);
		//添加航班标签,文本
		flightLabel=new JLabel("Flight");
		flightLabel.setHorizontalAlignment(SwingConstants.RIGHT);
		flightLabel.setBounds(250, 300, 80, 30);
		flighttextfield=new JTextField();
		flighttextfield.setBounds(350,300, 200, 30);
		this.add(flightLabel);
		this.add(flighttextfield);
		//添加点击航班文本鼠标事件
		flighttextfield.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				Ticket ticket=new Ticket();
				ticket.setStartaddress(startname[startComboBox.getSelectedIndex()]);
				ticket.setEndaddress(endname[endComboBox.getSelectedIndex()]);
				SelsctFlight selectflight=new SelsctFlight(ticket,flighttextfield);	//在表格中加入起止地,并设置文本框返回值
				selectflight.setVisible(true);
			}
		});
		//添加出发时间标签,文本
		startdateLabel=new JLabel("StartDate");
		startdateLabel.setHorizontalAlignment(SwingConstants.RIGHT);//设置文本靠右
		startdateLabel.setBounds(250,350, 80, 30);
		startdatetextfield=new JTextField();
		startdatetextfield.setBounds(350,350, 200, 30);
		this.add(startdateLabel);
		this.add(startdatetextfield);
		//日历工具
		CalendarPanel calendar = new CalendarPanel(startdatetextfield, "yyyy-MM-dd HH:mm:ss");
		calendar.initCalendarPanel();
		this.add(calendar);	 //一定要添加组件
		//添加返回键
		backbutton=new CustomButton(150,500,"返回",CustomButton.LEFT);
		paybutton=new CustomButton(500,500,"购票",CustomButton.RIGHT);
		backbutton.addActionListener(this);
		paybutton.addActionListener(this);
		this.add(backbutton);
		this.add(paybutton);
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO 自动生成的方法存根
		String s = e.getActionCommand();
		if(s.equals("返回")){
			this.dispose();//关闭当前界面
		}
		if(s.equals("购票")){
			boolean sigh=true;	//设置支付界面是否打开值
			//获得文本信息
			String startAddress = startname[startComboBox.getSelectedIndex()];
			String endAddress = endname[endComboBox.getSelectedIndex()];
			String idnum = IDtextfield.getText();
			String name = nametextfield.getText();
			String startdate = startdatetextfield.getText();
			//错误提示
			if (startAddress.equals(endAddress)) {
				JOptionPane.showMessageDialog(BuyFrame.this, "始发地和目的地不能相同!","提示信息", JOptionPane.ERROR_MESSAGE);
				return;
			}
			if ("".equals(idnum)||!idnum.matches("\\d{18}")) {	
				JOptionPane.showMessageDialog(BuyFrame.this, "身份证号为空或输入错误,请重新填写身份证号!","提示信息", JOptionPane.ERROR_MESSAGE);
				return;
			}
			                              
			if ("".equals(name)) {
				JOptionPane.showMessageDialog(BuyFrame.this, "姓名不能为空,请填写姓名!","提示信息", JOptionPane.ERROR_MESSAGE);
				return;
			}
			
			if ("".equals(startdate)) {
				JOptionPane.showMessageDialog(BuyFrame.this, "出行时间不能为空,请填写出行时间!","提示信息", JOptionPane.ERROR_MESSAGE);
				return;
			}
			if(sigh){
				//
				Ticket ticket=new Ticket();
				ticket.setStartaddress(startname[startComboBox.getSelectedIndex()]);
				ticket.setEndaddress(endname[endComboBox.getSelectedIndex()]);
				ticket.setName(nametextfield.getText());
				ticket.setStartdate(startdatetextfield.getText());
				ticket.setIdNum(IDtextfield.getText());
				ticket.setOrderNum(OrderUtil.generateOrderNo());
				//
				PayFrame payframe=new PayFrame(this,ticket);
				payframe.setVisible(true);
				//写入机票
//				Flight flight=new Flight();	
//				flight.setFlight("Hx2025");
//				flight.setStartaddress("大连");
//				flight.setEndaddress("上海");
//				flight.setStarttime("2018-09-1");
//				flight.setEndtime("2018-09-2");
//				flight.setPlant("华夏航空");
//				flight.setShape("波音737");
//				flight.setPrice("¥200");
//				
//				ArrayList<Flight> flightlist=DataOperateUtil.readFlightData("flight");
//				flightlist.add(flight);
//				DataOperateUtil.writeFlightData(flightlist);	
			}
		}
	}

}
public class SelsctFlight extends BaseFrame implements ActionListener{
	//
	JLabel tip;
	JScrollPane scrollPane;
	JTable checktable;
	JButton backbutton,surebutton;
	JTextField flighttf;
	int selectedRow=-1;
	String flights;
	//
	public SelsctFlight(Ticket ticket,JTextField flighttf){

		this.setTitle("查询");
		FrameBackground.setBG(this, "img/bg2.jpg");
		this.flighttf=flighttf;
		//
		tip=new JLabel("航班列表:");
		tip.setBounds(100, 50,300, 50);
		tip.setHorizontalAlignment(SwingConstants.LEFT);
		//读取flight文件中的航班信息
		ArrayList<Flight> flightlist=DataOperateUtil.readFlightData();	
		ArrayList<Flight> resultlist=new ArrayList<Flight>();
		//将起止地相同的放入resultlist中
		for(Flight flight:flightlist){
			if(flight.getStartaddress().equals(ticket.getStartaddress())&flight.getEndaddress().equals(ticket.getEndaddress())) {
				resultlist.add(flight);
			}
		}
		//使用向量创建表格
		Vector columnNames=new Vector();
		columnNames.add("航班号");
		columnNames.add("始发地");
		columnNames.add("目的地");
		columnNames.add("出发时间");
		columnNames.add("到达时间");
		columnNames.add("航空公司");
		columnNames.add("机型");
		columnNames.add("价格");
		Vector tableValues=new Vector();
		for(Flight flight:resultlist) {
			Vector row=new Vector();
			row.add(flight.getFlight());
			row.add(flight.getStartaddress());
			row.add(flight.getEndaddress());
			row.add(flight.getStarttime());
			row.add(flight.getEndtime());
			row.add(flight.getPlant());
			row.add(flight.getShape());
			row.add(flight.getPrice());
			tableValues.add(row);
		}
		DefaultTableModel tableModel=new DefaultTableModel(tableValues,columnNames);
		checktable=new JTable(tableModel);
		checktable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);//设置只允许选择一行
		checktable.addMouseListener(new MouseAdapter() {	//为表格添加鼠标事件监听
			public void mouseClicked(MouseEvent e) {	//发生了点击事件
				selectedRow=checktable.getSelectedRow();	//获得被选中行的索引
				flights=(String)tableModel.getValueAt(selectedRow, 0);	//从表格模型中获得航班号
				
			}

		});
		//
		scrollPane=new JScrollPane();
		scrollPane.setBounds(100, 100, 600, 350);
		scrollPane.setViewportView(checktable);
		//
		backbutton=new CustomButton(150, 450,"返回",CustomButton.LEFT);
		surebutton=new CustomButton(500, 450,"确认",CustomButton.RIGHT);
		backbutton.addActionListener(this);
		surebutton.addActionListener(this);
		//
		this.add(tip);
		this.add(scrollPane);
		this.add(backbutton);
		this.add(surebutton);
	}
	

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO 自动生成的方法存根
		String s = e.getActionCommand();
		//
		if(s.equals("返回")){
			this.dispose();
		}
		if(s.equals("确认")){
			//如果未选择航班则弹出提示信息
			if(selectedRow==-1) {
				JOptionPane.showMessageDialog(SelsctFlight.this, "请选择航班!","提示信息", JOptionPane.ERROR_MESSAGE);
				return;
			}else {
				this.setVisible(false);
				//返回文本框航班号
				flighttf.setText(flights);
			}
		}
	}

}
public class PayFrame extends BaseFrame implements ActionListener{
	JRadioButton way1,way2,way3;
	JButton backbutton,surebutton;
	boolean visible;
	JFrame buyframe;
	Ticket ticket;
	String selectedValue=null;
		
	PayFrame(JFrame buyframe,Ticket ticket){
		this.ticket=ticket;
		this.buyframe=buyframe;
		this.setTitle("支付界面");
		FrameBackground.setBG(this, "img/bg2.jpg");
		init();
		
	}
	public void init() {
		way1=new JRadioButton("支付宝");
		way1.setBounds(350,100,100,30);
		this.add(way1);
		way1.addActionListener(new ActionListener() {	//为单选按钮添加监听事件	
			@Override
			public void actionPerformed(ActionEvent e) {
				JRadioButton temp=(JRadioButton)e.getSource();	
				if(temp.isSelected()){
					selectedValue=temp.getText();//获得选择按钮的内容
				}
				
			}
		});
		//
		way2=new JRadioButton("微信");
		way2.setBounds(350,150,100,30);
		this.add(way2);
		way2.addActionListener(new ActionListener() {		
			@Override
			public void actionPerformed(ActionEvent e) {
				JRadioButton temp=(JRadioButton)e.getSource();
				if(temp.isSelected()){
					selectedValue=temp.getText();
				}
				
			}
		});
		//
		way3=new JRadioButton("银行卡");
		way3.setBounds(350,200,100,30);
		this.add(way3);
		way3.addActionListener(new ActionListener() {		
			@Override
			public void actionPerformed(ActionEvent e) {
				JRadioButton temp=(JRadioButton)e.getSource();
				if(temp.isSelected()){
					selectedValue=temp.getText();
				}
				
			}
		});
		//
		backbutton=new CustomButton(150,450,"返回",CustomButton.LEFT);
		surebutton=new CustomButton(500,450,"支付",CustomButton.RIGHT);
		backbutton.addActionListener(this);
		surebutton.addActionListener(this);
		this.add(backbutton);
		this.add(surebutton);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO 自动生成的方法存根
		String s = e.getActionCommand();
		if(s.equals("返回")){
			this.dispose();
		}
		if(s.equals("支付")){
			if (selectedValue.equals("支付宝")) {
				//弹出支付成功的窗体
				JOptionPane.showMessageDialog(this, "支付宝支付成功!",
						"支付宝支付成功!", JOptionPane.ERROR_MESSAGE);
			}
			if (selectedValue.equals("微信")) {
				//弹出支付成功的窗体
				JOptionPane.showMessageDialog(this, "微信支付成功!",
						"微信支付成功!", JOptionPane.ERROR_MESSAGE);
			}
			if (selectedValue.equals("银行卡")) {
				//弹出支付成功的窗体
				JOptionPane.showMessageDialog(this, "银行卡支付成功!",
						"银行卡支付成功!", JOptionPane.ERROR_MESSAGE);
			}
			this.setVisible(false);	
			buyframe.setVisible(false);
			//支付成功后写入ticket
			ArrayList<Ticket> ticketlist=DataOperateUtil.readTicketData();
			ticketlist.add(ticket);
			DataOperateUtil.writeTicketData(ticketlist);
			//
			BuyFrame buyframe=new BuyFrame();
			buyframe.setVisible(true);
		}
	}

}
public class CheckFrame extends BaseFrame implements ActionListener{
	JLabel tipLabel;
	JTextField checktext;
	JButton backbutton,surebutton;
	
	CheckFrame(){
		this.setTitle("值机界面");
		FrameBackground.setBG(this, "img/bg2.jpg");
		//
		tipLabel=new JLabel("请输入您购票时的订单号或乘机人的身份证号:");
		tipLabel.setHorizontalAlignment(SwingConstants.LEFT);
		tipLabel.setBounds(250, 100,300, 30);
		//
		checktext=new JTextField();
		checktext.setBounds(250, 150,200, 30);
		//
		backbutton=new CustomButton(150, 450,"返回",CustomButton.LEFT);
		surebutton=new CustomButton(500, 450,"确认",CustomButton.RIGHT);
		backbutton.addActionListener(this);
		surebutton.addActionListener(this);
		//
		this.add(tipLabel);
		this.add(checktext);
		this.add(backbutton);
		this.add(surebutton);
		
	}
	

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO 自动生成的方法存根
		String s = e.getActionCommand();
		if(s.equals("返回")){
			this.dispose();
		}
		if(s.equals("确认")){
			
			if(checktext.getText().equals(" "))
			{	
				JOptionPane.showMessageDialog(this,"请输入身份证号或订单号!","请输入", JOptionPane.ERROR_MESSAGE);
				return ;
			}
			Checking checking=null;
			try {
				checking = new Checking(checktext.getText());
			} catch (IOException e1) {
				// TODO 自动生成的 catch 块
				e1.printStackTrace();
			}
			checking.setVisible(true);
		}
	}

}
public class Checking extends BaseFrame implements ActionListener{
	//
	JLabel tip;
	JScrollPane scrollPane;
	JTable checktable;
	JButton backbutton,surebutton;
	Ticket ticket;
	public Checking(String string) throws IOException{
		this.setTitle("查询");
		FrameBackground.setBG(this, "img/bg2.jpg");
		tip=new JLabel("购票订单列表:");
		tip.setBounds(100, 50,300, 50);
		tip.setHorizontalAlignment(SwingConstants.LEFT);
		//	
		ArrayList<Ticket> resultlist=new ArrayList<Ticket>();
		ArrayList<Ticket> ticketlist=DataOperateUtil.readTicketData();	
		for(Ticket ticket:ticketlist){
			if(ticket.getIdNum().equals(string)|ticket.getOrderNum().equals(string)) {
				resultlist.add(ticket);
			}
		}
		
		Vector columnNames=new Vector();//{"订单号","始发地","目的地","乘机人","身份证号","日期"};
		columnNames.add("订单号");
		columnNames.add("始发地");
		columnNames.add("目的地");
		columnNames.add("乘机人");
		columnNames.add("身份证号");
		columnNames.add("日期");
		Vector tableValues=new Vector();
		for(Ticket ticket:resultlist) {
			Vector row=new Vector();
			row.add(ticket.getOrderNum());
			row.add(ticket.getStartaddress());
			row.add(ticket.getEndaddress());
			row.add(ticket.getName());
			row.add(ticket.getIdNum());
			row.add(ticket.getStartdate());
			tableValues.add(row);
		}
		
		checktable=new JTable(tableValues,columnNames);
		//
		scrollPane=new JScrollPane();
		scrollPane.setBounds(100, 100, 600, 350);
		scrollPane.setViewportView(checktable);
		//
		backbutton=new CustomButton(150, 500,"返回",CustomButton.LEFT);
		surebutton=new CustomButton(500, 500,"确认",CustomButton.RIGHT);
		backbutton.addActionListener(this);
		surebutton.addActionListener(this);
		//
		this.add(tip);
		this.add(scrollPane);
		this.add(backbutton);
		this.add(surebutton);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO 自动生成的方法存根
		String s = e.getActionCommand();
		//
		if(s.equals("返回")){
			this.dispose();
		}
		//
		if(s.equals("确认")){
			JOptionPane.showMessageDialog(Checking.this,"选坐成功!","生成订单号", JOptionPane.ERROR_MESSAGE);
			Checking.this.setVisible(false);
		}
	}

}


public class ReFrame extends BaseFrame implements ActionListener{

	JLabel tipLabel;
	JTextField checktext;
	JButton backbutton,surebutton;
	
	ReFrame(){
		this.setTitle("退票/改签界面");
		FrameBackground.setBG(this, "img/bg2.jpg");
		//
		tipLabel=new JLabel("请输入您购票时的订单号或乘机人的身份证号:");
		tipLabel.setBounds(250, 100, 200, 30);
		//
		checktext=new JTextField();
		checktext.setBounds(250, 150,200, 30);
		//
		backbutton=new CustomButton(150, 450,"返回",CustomButton.LEFT);
		surebutton=new CustomButton(500, 450,"确认",CustomButton.RIGHT);
		backbutton.addActionListener(this);
		surebutton.addActionListener(this);
		//
		this.add(tipLabel);
		this.add(checktext);
		this.add(backbutton);
		this.add(surebutton);
		
	}
	

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO 自动生成的方法存根
		String s = e.getActionCommand();
		if(s.equals("返回")){
			this.dispose();
		}
		if(s.equals("确认")){
			//
			//String idnum=checktext.getText();
			//
			Reing re=new Reing(checktext.getText());
			re.setVisible(true);
		}
	}

}
public class Reing extends BaseFrame implements ActionListener{
	//
	JLabel tip;
	JScrollPane scrollPane;
	JTable checktable;
	JButton backbutton,refundbutton,changebutton;
	public Reing(String string){
		this.setTitle("查询");
		FrameBackground.setBG(this, "img/bg2.jpg");
		//
		tip=new JLabel("购票订单列表:");
		tip.setBounds(100, 50,300, 50);
		tip.setHorizontalAlignment(SwingConstants.LEFT);
		//
		ArrayList<Ticket> resultlist=new ArrayList<Ticket>();
		ArrayList<Ticket> ticketlist=DataOperateUtil.readTicketData();	
		for(Ticket ticket:ticketlist){
			if(ticket.getIdNum().equals(string)|ticket.getOrderNum().equals(string)) {
				resultlist.add(ticket);
			}
		}
		
		Vector columnNames=new Vector();//{"订单号","始发地","目的地","乘机人","身份证号","日期"};
		columnNames.add("订单号");
		columnNames.add("始发地");
		columnNames.add("目的地");
		columnNames.add("乘机人");
		columnNames.add("身份证号");
		columnNames.add("日期");
		Vector tableValues=new Vector();
		for(Ticket ticket:resultlist) {
			Vector row=new Vector();
			row.add(ticket.getOrderNum());
			row.add(ticket.getStartaddress());
			row.add(ticket.getEndaddress());
			row.add(ticket.getName());
			row.add(ticket.getIdNum());
			row.add(ticket.getStartdate());
			tableValues.add(row);
		}
		checktable=new JTable(tableValues,columnNames);
		//
		scrollPane=new JScrollPane();
		scrollPane.setBounds(100, 100, 600, 350);
		scrollPane.setViewportView(checktable);
		//
		backbutton=new CustomButton(100,500,"返回",CustomButton.LEFT);
		refundbutton=new CustomButton(350,500,"退票",CustomButton.RIGHT);
		changebutton=new CustomButton(530,500,"改签",CustomButton.RIGHT);
		backbutton.addActionListener(this);
		refundbutton.addActionListener(this);
		changebutton.addActionListener(this);
		//
		this.add(tip);
		this.add(scrollPane);
		this.add(backbutton);
		this.add(refundbutton);
		this.add(changebutton);
		
		
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO 自动生成的方法存根
		String s = e.getActionCommand();
		//
		if(s.equals("返回")){
			this.dispose();
		}
		//
		if(s.equals("退票")){
			//
			
		}
		//
		if(s.equals("改签")){
			//
			
		}
	}

}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值