网上火车站购票系统(文件存储)

1、登录界面

把用户名和密码存储在user.txt文件里,在登录时,查询用户名和密码是否正确,如果正确,则进入到首页购票,如果用户名不存在,则进入注册界面。代码如下:

package 购票系统;

import java.awt.*;
import java.awt.event.AWTEventListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.*;

@SuppressWarnings("unused")
public class denglu {
JFrame frame=new JFrame("登录");
JLabel label1=new JLabel();
JLabel label2=new JLabel("欢迎来到火车票购票系统",JLabel.CENTER);
JLabel label3=new JLabel("用户登录",JLabel.CENTER);
JLabel label4=new JLabel("用户名",JLabel.CENTER);
JLabel label5=new JLabel("密码",JLabel.CENTER);
JLabel label6=new JLabel("按ESC键退出",JLabel.CENTER);
JTextField n1=new JTextField();
JPasswordField n2=new JPasswordField();
JButton button1=new JButton("登录");
JButton button2=new JButton("注册");
JButton button3=new JButton("管理员登录");
static String tel="null";
public denglu() {
	label2.setFont(new Font("",Font.BOLD,40));
	label3.setFont(new Font("",Font.BOLD,30));
	label4.setFont(new Font("",Font.BOLD,20));
	label5.setFont(new Font("",Font.BOLD,20));
	label5.setFont(new Font("",Font.CENTER_BASELINE,20));
	frame.setLayout(null);
	Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
	frame.setUndecorated(true);
	frame.setSize(screenSize.width, screenSize.height);
	ImageIcon i=new ImageIcon("./1.jpg");
	i.getImage();
	Image temp=i.getImage().getScaledInstance((int)screenSize.getWidth()/2,(int)screenSize.getHeight()-200, Image.SCALE_DEFAULT);
	i=new ImageIcon(temp);
	label1.setIcon(i);
	label1.setBounds(20, 100, screenSize.width/2, screenSize.height-80);
	label2.setBounds(0,50,screenSize.width/2, 100);
	label3.setBounds(screenSize.width/2,250,screenSize.width/2, 100);
	label4.setBounds(screenSize.width/2,350,screenSize.width/4, 30);
	label6.setBounds(screenSize.width-100,0,100, 50);
	n1.setBounds(screenSize.width/2+screenSize.width/6,350,300, 30);
	label5.setBounds(screenSize.width/2,400,screenSize.width/4, 30);
	n2.setBounds(screenSize.width/2+screenSize.width/6,400,300, 30);
	button1.setBounds(screenSize.width/2+200,500,100, 30);
	button2.setBounds(screenSize.width/2+350,500,100, 30);
	button3.setBounds(screenSize.width/2+260,550,150, 30);
	frame.add(label1);
	frame.add(label2);
	frame.add(label3);
	frame.add(label4);
	frame.add(label5);
	frame.add(label6);
	frame.add(n1);
	frame.add(n2);
	frame.add(button1);
	frame.add(button2);
	frame.add(button3);
	frame.setResizable(false);
	frame.setLocationRelativeTo(null);
	frame.setVisible(true);
	Toolkit.getDefaultToolkit().addAWTEventListener((AWTEventListener) new AWTEventListener() {
		public void eventDispatched(AWTEvent event) {
			if (((KeyEvent) event).getID() == KeyEvent.KEY_PRESSED) {
				switch(((KeyEvent)event).getKeyCode()) {
				case KeyEvent.VK_ESCAPE: System.exit(0); break;
				}
			}
			}
		}, AWTEvent.KEY_EVENT_MASK);
	button1.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			@SuppressWarnings("deprecation")
			String sum=n1.getText()+" "+n2.getText();
			boolean cot=false;
			String s;
			try {
				@SuppressWarnings("resource")
				BufferedReader r=new BufferedReader(new FileReader("./user.txt"));
				while((s=r.readLine())!=null) {
					if(s.equals(sum)) {
						cot=true;
						tel=n1.getText();
					}
				}
				if(cot) {
					try {
						BufferedWriter w=new BufferedWriter(new FileWriter("./ex.txt",true));
						String Tel=tel;
						w.write(Tel);
						w.flush();
						w.close();
					} catch (IOException e1) {
						e1.printStackTrace();
					}
					new shouye();
					frame.dispose();
				}else {
					JOptionPane.showMessageDialog(null, "用户名或者密码错误,登录失败!");
				}
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		}
	});

	button3.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
		//	String sum=n1.getText()+" "+n2.getText();
			@SuppressWarnings("deprecation")
			String sum=n1.getText()+" "+n2.getText();
			if(sum.equals("111 111")) {
				    new guanli();
					frame.dispose();
				}else {
					JOptionPane.showMessageDialog(null, "用户名或者密码错误,登录失败!");
				}
			
		}
	});
	
	button2.addActionListener(new ActionListener() {

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			new zhuce();
		}
	});
	



}
public String GetTel() {
	  return tel;
}
public static void main(String[] args) {
	// TODO Auto-generated method stub
    new denglu();
}

}

运行结果如下:

 2、注册界面:如果登录时用户名不存在,则进入注册界面,注册时用户名用的是电话号码,注册时会首先在文件里查询用户名是否存在,如果用户名存在,则无法注册,否则输入用户名和密码可以显示注册成功,之后可以返回登录,代码如下:

package 购票系统;

import java.awt.*;
import java.awt.event.AWTEventListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.*;

@SuppressWarnings("unused")
public class zhuce {
JFrame fm=new JFrame("用户注册");
JLabel label1=new JLabel("用户名",JLabel.CENTER);
JLabel label2=new JLabel("密码",JLabel.CENTER);
JTextField n1=new JTextField();
JTextField n2=new JTextField();
JButton button1=new JButton("确定");
JButton button2=new JButton("返回");
public zhuce() { 
	fm.setLayout(null);
	label1.setBounds(0,20,50, 40);
	n1.setBounds(80,30,150, 30);
	label2.setBounds(0,70,50, 40);
	n2.setBounds(80,80,150, 30);
	button1.setBounds(50,170,80, 30);
	button2.setBounds(150,170,80, 30);
	fm.add(button1);
	fm.add(button2);
	fm.add(label1);
	fm.add(n1);
	fm.add(label2);
	fm.add(n2);
	fm.setSize(300,300);
	fm.setResizable(false);
	fm.setLocationRelativeTo(null);
	fm.setVisible(true);
	button1.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			try {
				BufferedWriter w=new BufferedWriter(new FileWriter("./user.txt",true));
				String zhanghao=n1.getText();
				String sum=n1.getText()+" "+n2.getText();
				@SuppressWarnings("resource")
				BufferedReader r=new BufferedReader(new FileReader("./user.txt"));
				boolean cot=true;
				String s;
				while((s=r.readLine())!=null) {
					if(sum.equals(s)) {
						cot=false;
					}
				}
				if(cot && zhanghao.length()==11) {
				w.write(sum);
				w.newLine();
				w.flush();
				w.close();
				JOptionPane.showMessageDialog(null, "注册成功!");
				
				try {
					BufferedWriter bw=new BufferedWriter(new FileWriter("./information.txt",true));
					String te="null null null "+sum;
					bw.write(te);
					bw.newLine();
					bw.flush();
					bw.close();
			} catch (IOException e2) {
				e2.printStackTrace();
			}
			
				
					}else {
						JOptionPane.showMessageDialog(null, "账号已经存在");
					}
				} catch (IOException e1) {
					e1.printStackTrace();
				}
		}
	});
			
	button2.addActionListener(new ActionListener() {

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			new denglu();
			fm.dispose();
		}
	});
	
}
}

运行结果如下:

 3、管理员登录,管理员的账号和密码设定为111和111,输入正确的账号和密码后登录到管理员界面,在管理员界面,可以对车票进行增加,修改和删除。代码如下:

package 购票系统;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Calendar;

import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableModel;

@SuppressWarnings("unused")
public class guanli {
	JFrame fram=new JFrame();
	JMenuBar bar=new JMenuBar();
	JMenu menu1=new JMenu("火车票管理");
	JMenuItem item1=new JMenuItem("增加");
	JMenuItem item2=new JMenuItem("修改");
	JMenuItem item3=new JMenuItem("删除");
	JButton but=new JButton("返回");
	String[] columnNames = {"检票口","起点站","终点站","出发时间","到达时间","票价","余票","  "};
	Object[][] data = {
		    {"0","0","0","0","0",0,0,"0"},
		};
//	JTable table = new JTable(data, columnNames);
	@SuppressWarnings("serial")
	JTable table = new JTable(data, columnNames){
		  public boolean isCellEditable(int row, int column) { 
		 	 return false;
		  }
		  };
	String name="./train/1.txt";
	File file=new File(name);
	BufferedReader reader=null;
	String temp=null;
	int line=0;
	String []words=new String[1000];
	JLabel label1=new JLabel("日期:",JLabel.CENTER);
	JLabel label2=new JLabel("车次:",JLabel.CENTER);
	JLabel label3=new JLabel("起点站:",JLabel.CENTER);
	JLabel label4=new JLabel("终点站:",JLabel.CENTER);
	JLabel label5=new JLabel("出发时间:",JLabel.CENTER);
	JLabel label6=new JLabel("到达时间:",JLabel.CENTER);
	JLabel label7=new JLabel("票价:",JLabel.CENTER);
	JLabel label8=new JLabel("余票:",JLabel.CENTER);
	JTextField n1=new JTextField();
	JTextField n2=new JTextField();
	@SuppressWarnings("rawtypes")
	JComboBox n3=new JComboBox();
	@SuppressWarnings("rawtypes")
	JComboBox n4=new JComboBox();
	JTextField n5=new JTextField();
	JTextField n6=new JTextField();
	JTextField n7=new JTextField();
	JTextField n8=new JTextField();
	JButton button1=new JButton("添加");
	JButton button2=new JButton("取消");
	JButton button3=new JButton("删除");
	@SuppressWarnings("rawtypes")
	JComboBox status=new JComboBox();
	Calendar c = Calendar.getInstance();
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public guanli() {
		try{
			   reader=new BufferedReader(new FileReader(file));
			   while((temp=reader.readLine())!=null){
					words[line]=temp;
					line++;
			   }
			}
			catch(Exception e2){
				e2.printStackTrace();
			}
			finally{
				if(reader!=null){
					try{
						reader.close();
					}
					catch(Exception e1){
						e1.printStackTrace();
					}
				}
			}
		Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
	    String ss[][]=new String[1000][];
	    for(int i=0;i<line;i++) {
	    	ss[i]=words[i].split(" ");
	    }
	    DefaultTableCellRenderer dc=new DefaultTableCellRenderer();
		dc.setHorizontalAlignment(JLabel.CENTER);
	    table = new JTable(ss, columnNames);
	    table.setDefaultRenderer(Object.class, dc);
		table.getTableHeader().setFont(new Font("宋体",Font.BOLD,14));
		table.setFont(new Font("宋体",Font.PLAIN,14));
		table.setRowHeight(20);
	        JTableHeader he=table.getTableHeader();
	        he.setBounds(0,0,screenSize.width-400,30);
	    	int d=c.get(Calendar.DAY_OF_MONTH);
	    	int m=(c.get(Calendar.MONTH) + 1);
	    	int y=c.get(Calendar.YEAR);
	    	int [] month1= {31,29,31,30,31,30,31,31,30,31,30,31};
	    	int [] month2= {31,28,31,30,31,30,31,31,30,31,30,31};
	    	int [] month=new int[12];
	    	if(y%400==0||(y%4==0&&y%100!=0)) {
	    		month=month1;
	    	}
	    	else month=month2;
	    	String [] cs= new String[20];
	    	for(int ii=0;ii<20;ii++) {
	    		cs[ii]=y+"-"+m+"-"+d;
	    		d+=1;
	    		if(d>month[m-1]) {
	    			d=1;m++;
	    		}
	    		if(m>12) {
	    			m=1;y++;
	    		}
	    	}
	    	String [] cs1= {"北京","上海","杭州","广州","南京","成都","西安","郑州","重庆","合肥","汉口","武汉","长沙","武昌","太原","苏州","厦门","南昌","沈阳","天津","深圳"};
	    	status=new JComboBox(cs);
	    	n3=new JComboBox(cs1);
	    	n4=new JComboBox(cs1);
	        table.setBounds(0,30,screenSize.width-400,screenSize.height-30);
	        label1.setBounds(screenSize.width-350,50,50, 40);
	    	status.setBounds(screenSize.width-250,60,150, 30);
		    	n1.setBounds(screenSize.width-250,110,150, 30);
	    	label2.setBounds(screenSize.width-350,100,50, 40);
	    	n2.setBounds(screenSize.width-250,110,150, 30);
	    	label3.setBounds(screenSize.width-350,150,50, 40);
	    	n3.setBounds(screenSize.width-250,160,150, 30);
	    	label4.setBounds(screenSize.width-350,200,50, 40);
	    	n4.setBounds(screenSize.width-250,210,150, 30);
	    	label5.setBounds(screenSize.width-350,250,70, 40);
	    	n5.setBounds(screenSize.width-250,260,150, 30);
	    	label6.setBounds(screenSize.width-350,300,70, 40);
	    	n6.setBounds(screenSize.width-250,310,150, 30);
	    	label7.setBounds(screenSize.width-350,350,50, 40);
	    	n7.setBounds(screenSize.width-250,360,150, 30);
	    	label8.setBounds(screenSize.width-350,400,50, 40);
	    	n8.setBounds(screenSize.width-250,410,150, 30);
	    	button1.setBounds(screenSize.width-300,500,80, 30);
	      	button3.setBounds(screenSize.width-300,500,80, 30);
	    	button2.setBounds(screenSize.width-200,500,80, 30);
	        fram.add(he);
	        label1.setVisible(false);
	        status.setVisible(false);
	        label2.setVisible(false);
	        n2.setVisible(false);
	        label3.setVisible(false);
	        n3.setVisible(false);
	        label4.setVisible(false);
	        n4.setVisible(false);
	        label5.setVisible(false);
	        n5.setVisible(false);
	        label6.setVisible(false);
	        n6.setVisible(false);
	        label7.setVisible(false);
	        n7.setVisible(false);
	        label8.setVisible(false);
	        n8.setVisible(false);
	        button1.setVisible(false);
	        button2.setVisible(false);
	        n1.setVisible(false);
	        button3.setVisible(false);
	      fram.add(table);
	      fram.add(label1);
	      fram.add(status);
	      fram.add(label2);
	      fram.add(n2);
	      fram.add(label3);
	      fram.add(n3);
	      fram.add(label4);
	      fram.add(n4);
	      fram.add(label5);
	      fram.add(n5);
	      fram.add(label6);
	      fram.add(n6);
	      fram.add(label7);
	      fram.add(n7);
	      fram.add(label8);
	      fram.add(n8);
	      fram.add(button1);
	      fram.add(button2);
	      fram.add(n1);
	      fram.add(button3);
	    
		fram.setLayout(null);
		bar.add(menu1);
		menu1.add(item1);
		menu1.addSeparator();
		menu1.add(item2);
		menu1.addSeparator();
		menu1.add(item3);
		but.setBounds(screenSize.width-100, 0, 100,30);
		fram.add(but);
		fram.setUndecorated(true); 
		fram.setSize(screenSize);
		fram.setJMenuBar(bar);
		fram.setResizable(false);
		fram.setLocationRelativeTo(null);
		fram.setVisible(true);
		
		but.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				new denglu();
			}
		});
		

		item1.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
		        label1.setVisible(true);
		        status.setVisible(true);
		        label2.setVisible(true);
		        n2.setVisible(true);
		        label3.setVisible(true);
		        n3.setVisible(true);
		        label4.setVisible(true);
		        n4.setVisible(true);
		        label5.setVisible(true);
		        n5.setVisible(true);
		        label6.setVisible(true);
		        n6.setVisible(true);
		        label7.setVisible(true);
		        n7.setVisible(true);
		        label8.setVisible(true);
		        n8.setVisible(true);
		        button1.setVisible(true);
		        button2.setVisible(true);	
		        n1.setVisible(false);
		        button3.setVisible(false);
			
			}});
		
		button1.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				  String str1=status.getSelectedItem().toString();
			        String str2=n2.getText();
			        String str3=n3.getSelectedItem().toString();
			        String str4=n4.getSelectedItem().toString();
			        String str5=n5.getText();
			        String str6=n6.getText();
			        String str7=n7.getText();
			        String str8=n8.getText();
			        String[]data1={str2,str3,str4,str5,str6,str7,str8,"订购"};
			        if(ss.length<=1000) {
			        ss[line]=data1;
			        line++;
			        }
			        TableModel tableModel=new DefaultTableModel(ss,columnNames);
					table.setModel(tableModel);
			    	int a=1;
					int b=0;
					int mo=(c.get(Calendar.MONTH) + 1);
					String []tiqu1=str1.split("-");
					String d=tiqu1[2];
					int dd=Integer.parseInt(d);
					if(mo==12) {
						b=dd-31;
						a+=b;
					}
					if(mo==1) {
						a=0;
						a+=dd;
					}
					String nam="./train/"+a+".txt";
					try {
						BufferedWriter bw=new BufferedWriter(new FileWriter(nam,true));
						String te=str2+" "+str3+" "+str4+" "+str5+" "+str6+" "+str7+" "+str8+" "+"订购";
						bw.write(te);
						bw.newLine();
						bw.flush();
						bw.close();
						JOptionPane.showMessageDialog(null, "添加成功!");
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}});
		button2.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
		        label1.setVisible(false);
		        status.setVisible(false);
		        label2.setVisible(false);
		        n2.setVisible(false);
		        label3.setVisible(false);
		        n3.setVisible(false);
		        label4.setVisible(false);
		        n4.setVisible(false);
		        label5.setVisible(false);
		        n5.setVisible(false);
		        label6.setVisible(false);
		        n6.setVisible(false);
		        label7.setVisible(false);
		        n7.setVisible(false);
		        label8.setVisible(false);
		        n8.setVisible(false);
		        button1.setVisible(false);
		        button2.setVisible(false);
		        n1.setVisible(false);
		        button3.setVisible(false);
			}});
		item2.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
		        label1.setVisible(false);
		        status.setVisible(false);
		        label2.setVisible(false);
		        n2.setVisible(false);
		        label3.setVisible(false);
		        n3.setVisible(false);
		        label4.setVisible(false);
		        n4.setVisible(false);
		        label5.setVisible(false);
		        n5.setVisible(false);
		        label6.setVisible(false);
		        n6.setVisible(false);
		        label7.setVisible(false);
		        n7.setVisible(false);
		        label8.setVisible(false);
		        n8.setVisible(false);
		        button1.setVisible(false);
		        button2.setVisible(false);
		        n1.setVisible(false);
		        button3.setVisible(false);
			}});
		item3.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				 label1.setVisible(true);
			        status.setVisible(true);
			        label2.setVisible(true);
			        n2.setVisible(true);
			        label3.setVisible(true);
			        n3.setVisible(true);
			        label4.setVisible(true);
			        n4.setVisible(true);
			        label5.setVisible(true);
			        n5.setVisible(true);
			        label6.setVisible(true);
			        n6.setVisible(true);
			        label7.setVisible(true);
			        n7.setVisible(true);
			        label8.setVisible(true);
			        n8.setVisible(true);
			        button1.setVisible(false);
			        button2.setVisible(true);	
			        n1.setVisible(false);
			        button3.setVisible(true);
			}});
		button3.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				  String str1=status.getSelectedItem().toString();
			        String str2=n2.getText();
			        String str3=n3.getSelectedItem().toString();
			        String str4=n4.getSelectedItem().toString();
			        String str5=n5.getText();
			        String str6=n6.getText();
			        String str7=n7.getText();
			        String str8=n8.getText();
			        String[]data1={str2,str3,str4,str5,str6,str7,str8,"订购"};
			        boolean cat=false;
			        String q=str2+" "+str3+" "+str4+" "+str5+" "+str6+" "+str7+" "+str8+" "+"订购";
			      //  System.out.println(q);
	
			    	int a=1;
					int b=0;
					int mo=(c.get(Calendar.MONTH) + 1);
					String []tiqu1=str1.split("-");
					String d=tiqu1[2];
					int dd=Integer.parseInt(d);
					if(mo==12) {
						b=dd-31;
						a+=b;
					}
					if(mo==1) {
						a=0;
						a+=dd;
					}
					String nam="./train/"+a+".txt";
					try{
						   reader=new BufferedReader(new FileReader(nam));
						   while((temp=reader.readLine())!=null && line<1000){
								words[line]=temp;
								line++;
						   }
						}
						catch(Exception e2){
							e2.printStackTrace();
						}
						finally{
							if(reader!=null){
								try{
									reader.close();
								}
								catch(Exception e1){
									e1.printStackTrace();
								}
							}
						}
					
					  for(int i=0;i<words.length;i++) {
					//	  System.out.println(words[i]);
				        	if(words[i].equals(q)) {
				        		cat=true;
				        	}
				        }
				        if(cat) {
				        	for(int j=0;j<words.length;j++) {
				        		if(words[j].equals(q)) {
				        			for(int w=0;w<words.length-1;w++) {
				        				words[w]=words[w+1];
				        			}
				        			words[words.length-1]="";
				        			
				        		}
				        	}
				        	try {
								BufferedWriter bw=new BufferedWriter(new FileWriter(nam));
								for(int h=0;h<ss.length;h++) {
								bw.write(words[h]);
								bw.newLine();
								}
								bw.flush();
								bw.close();
								JOptionPane.showMessageDialog(null, "删除成功!");
						} catch (IOException e1) {
							e1.printStackTrace();
						}
				        }
				        else {
				        	JOptionPane.showMessageDialog(null, "航班不存在");	
				        }
				        
			}});
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朱颜辞镜花辞树>

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值