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, "航班不存在");
}
}});
}
}
运