import java.awt.Color;
import java.awt.FlowLayout;
import java.util.*;
import javax.swing.*;import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JFrame;
import javax.swing.event.AncestorListener;
public class TrainTicketClass extends JFrame implements Runnable{
public static final int DEFAULT_WIDTH=500;
public static final int DEFAULT_HEIGHT=600;
private int TicketNum1=100;//重庆到贵阳火车票100张;
private int TicketNum2=200;//重庆到北京火车票200张;
private int TicketNum3=300;//重庆到广东火车票300张;
TrainTicketClass begin;
JButton []button=new JButton[6];
public TrainTicketClass(){
super("罗彬制作的火车站售票系统模拟");
}
public void run(){
Thread.sleep(1000);
begin.TrainTicketClass1();
}
public void TrainTicketClass1(){
JTextField text;
text=new JTextField("欢迎来到火车站售票查询");
getContentPane().add(text);
SimpleJPanelClass panel=new SimpleJPanelClass();
getContentPane().add(panel);
FlowLayout layout;
layout=new FlowLayout(FlowLayout.LEFT,10,30);
layout.setVgap(20);
layout.setHgap(200);
getContentPane().setLayout(layout); button[0]=new JButton("售票查询");//完成
button[1]=new JButton("退票办理");//完成
button[2]=new JButton("车次查询");//完成
button[3]=new JButton("票价查询");//完成
button[4]=new JButton("余票查询");//完成
button[5]=new JButton("车次到站时间查询");
getContentPane().add(button[0],"center");
getContentPane().add(button[1],"center");
getContentPane().add(button[2],"center");
getContentPane().add(button[3],"center");
getContentPane().add(button[4],"center");
getContentPane().add(button[5],"center");
button[0].addActionListener(new TicketCheckBookTicket());//售票查询的监听器类
//button[1].addAncestorListener(new ()); /*
button[0].addActionListener((ActionListener) this);
button[1].addActionListener((ActionListener) this);
button[2].addActionListener((ActionListener) this);
button[3].addActionListener((ActionListener) this);
button[4].addActionListener((ActionListener) this);
button[5].addActionListener((ActionListener) this);
*/
this.setLocation(300,300);
this.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
this.setVisible(true);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TrainTicketClass frame=new TrainTicketClass();
Thread t1=new Thread();
t1.start();
//TicketCheckBookTicket checkbookticket=new TicketCheckBookTicket();
//TrainTicketClass thread=new TrainTicketClass();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
//button[0].addActionListener(new TicketCheckBookTicket());//售票查询的监听器类 //乘客购票
class TicketCheckBookTicket implements ActionListener{//购票的监听器
public void actionPerformed(ActionEvent event) {
Scanner in=new Scanner(System.in);
// TODO Auto-generated method stub
int number;
boolean quit=true;
System.out.println();
System.out.println("1:重庆-----〉贵阳");
System.out.println("2:重庆-----〉北京");
System.out.println("3:重庆-----〉广东");
System.out.println("请选择要购买的车次:");
number=in.nextInt();
while(quit){
switch(number){
case 1:BookTicket_cq_gy();//订购重庆到贵阳的火车票
break;
case 2:BookTicket_cq_bj();//订购重庆到北京的火车票
break;
case 3:BookTicket_cq_gd();//订购重庆到广东的火车票
break;
default:System.out.println("是否继续订购(Y/N)");
break;
}
}
}
//订购重庆到贵阳的火车票
public void BookTicket_cq_gy(){
synchronized(this){
if(TicketNum1>0){
System.out.println("恭喜你成功订购一张重庆到贵阳的车票");
TicketNum1--;
}
else{
System.out.println("不好意思,重庆到贵阳的车票已经卖完");
}
}
}
//订购重庆到北京的火车票
public void BookTicket_cq_bj(){
synchronized(this){
if(TicketNum2>0){
System.out.println("恭喜你成功订购一张重庆到北京的火车票");
TicketNum2--;
}
else{
System.out.println("不好意思,重庆到北京的火车票已卖完");
}
}
}
//订购重庆到广东的火车票
public void BookTicket_cq_gd(){
synchronized(this){
if(TicketNum3>0){
System.out.println("恭喜你成功订购一张重庆到广东的火车票");
TicketNum3--;
}
else{
System.out.println("不好意思,重庆到广东的火车票已卖完");
}
}
}
}
//乘客购票到此完成
class TicketRemainTicket implements ActionListener{//查询各个车次剩余票数查询的监听器 @Override
public void actionPerformed(ActionEvent event) {
Scanner in=new Scanner(System.in);
// TODO Auto-generated method stub
int number;
boolean quit=true;
System.out.println();
System.out.println("1:重庆-----〉贵阳");
System.out.println("2:重庆-----〉北京");
System.out.println("3:重庆-----〉广东");
System.out.println("请选择要查询的车次:");
number=in.nextInt();
while(quit){
switch(number){
case 1:RemainTicket_cq_gy();//重庆到贵阳的剩余火车票
break;
case 2:RemainTicket_cq_bj();//重庆到北京的剩余火车票
break;
case 3:RemainTicket_cq_gd();//重庆到广东的剩余火车票
break;
}
}
}
public void RemainTicket_cq_gy(){//查询重庆到贵阳的剩余火车票
if(TicketNum1<=0){
System.out.println("重庆到贵阳的火车票已全部售完");
}
else{
System.out.println("重庆到贵阳的火车票剩余"+TicketNum1+"张");
}
}
public void RemainTicket_cq_bj(){//查询重庆到北京的剩余火车票
if(TicketNum2<=0){
System.out.println("重庆到北京的火车票已全部售完");
}
else{
System.out.println("重庆到北京的火车票剩余"+TicketNum2+"张");
}
}
public void RemainTicket_cq_gd(){//查询重庆到广东的剩余火车票
if(TicketNum3<=0){
System.out.println("重庆到广东的火车票已全部售完");
}
else{
System.out.println("重庆到广东的火车票剩余"+TicketNum3+"张");
}
}
}
//查询票剩余到此完成
class TicketCancel implements ActionListener{//办理火车票退票的监听器
public void actionPerformed(ActionEvent event) {
Scanner in=new Scanner(System.in);
// TODO Auto-generated method stub
int number;
boolean quit=true;
System.out.println();
System.out.println("1:重庆-----〉贵阳");
System.out.println("2:重庆-----〉北京");
System.out.println("3:重庆-----〉广东");
System.out.println("请选择要退票的车次:");
number=in.nextInt();
while(quit){
switch(number){
case 1:CancelTicket_cq_gy();//重庆到贵阳的剩余火车票
break;
case 2:CancelTicket_cq_bj();//重庆到北京的剩余火车票
break;
case 3:CancelTicket_cq_gd();//重庆到广东的剩余火车票
break;
}
}
}
//退重庆到贵阳的票
public void CancelTicket_cq_gy(){
System.out.println("是否确定退票(1:退票/2:不退票)");
Scanner in =new Scanner(System.in);
char choice;
choice=(char) in.nextInt();
if(choice=='1'){
synchronized(this){
System.out.println("恭喜你成功退票(重庆--〉贵阳)");
TicketNum1++;
}
}else{
System.out.println("输入有误,退票失败,不给你机会返回到主界面再给你解释,懒得再加代码了");
}
}
//退重庆到广东的票
public void CancelTicket_cq_bj(){//
System.out.println("是否确定退票(1:退票/2:不退票)");
Scanner in =new Scanner(System.in);
char choice;
choice=(char) in.nextInt();
if(choice=='1'){
synchronized(this){
System.out.println("恭喜你成功退票(重庆--〉北京)");
TicketNum1++;
}
}else{
System.out.println("输入有误,退票失败,不给你机会返回到主界面再给你解释,懒得再加代码了");
}
}
public void CancelTicket_cq_gd(){
System.out.println("是否确定退票(1:退票/2:不退票)");
Scanner in =new Scanner(System.in);
char choice;
choice=(char) in.nextInt();
if(choice=='1'){
synchronized(this){
System.out.println("恭喜你成功退票(重庆-〉广东)");
TicketNum1++;
}
}else{
System.out.println("输入有误,退票失败,不给你机会返回到主界面再给你解释,懒得再加代码了");
}
}
}
}
自学java不到一个月,想实现一个简单的火车订票系统,我想实现的是当运行时出现java gui用户界面,然后选择相应选项,比如订票,退票,车次查询,我遇到情况时当我点击订票出发监听器的时候,假如有多个人同时进行操作,那么多线程的代码应该怎么加,加在监听器方法里面还是哪里,没用数据库知识,我只是做个简单的。终究原因是当出发监听器运行多线程,客户静茹等待,模拟订票,退票等等的小号时间,就想知道那段代码怎么加。自学,帮忙解答。多线程
class TicketCheCi implements ActionListener{//车次查询的监听器 @Override
public void actionPerformed(ActionEvent event) {
Scanner in=new Scanner(System.in);
// TODO Auto-generated method stub
int number;
boolean quit=true;
System.out.println();
System.out.println("1:重庆-----〉贵阳");
System.out.println("2:重庆-----〉北京");
System.out.println("3:重庆-----〉广东");
System.out.println("请选择要退票的车次:");
number=in.nextInt();
while(quit){
switch(number){
case 1:CheCiTicket_cq_gy();//重庆到贵阳的剩余火车票
break;
case 2:CheCiTicket_cq_bj();//重庆到北京的剩余火车票
break;
case 3:CheCiTicket_cq_gd();//重庆到广东的剩余火车票
break;
}
}
}
//下面必须用数据库连接,我就不写数据库的了。
public void CheCiTicket_cq_gy(){//查询重庆到贵阳的车次
System.out.println("重庆到贵阳的火车有K9517"+"余票:"+TicketNum1);
}
public void CheCiTicket_cq_bj(){//查询重庆到贵阳的车次
System.out.println("重庆到北京的火车有8867"+"余票:"+TicketNum2);
}
public void CheCiTicket_cq_gd(){//查询重庆到贵阳的车次
System.out.println("重庆到广东的火车有D8818"+"余票:"+TicketNum3);
}
}
//乘客查询余票到此完成
class TicketPrice implements ActionListener{ @Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
// TODO Auto-generated method stub
int number;
boolean quit=true;
System.out.println();
System.out.println("1:重庆-----〉贵阳");
System.out.println("2:重庆-----〉北京");
System.out.println("3:重庆-----〉广东");
System.out.println("请选择要退票的车次:");
number=in.nextInt();
while(quit){
switch(number){
case 1:PriceTicket_cq_gy();//重庆到贵阳的剩余火车票
break;
case 2:PriceTicket_cq_bj();//重庆到北京的剩余火车票
break;
case 3:PriceTicket_cq_gd();//重庆到广东的剩余火车票
break;
}
}
}
//重庆到重庆的票价查询
public void PriceTicket_cq_gy(){
System.out.println("重庆到贵阳:");
System.out.println("硬座:90");
System.out.println("卧铺:120");
}
//重庆到北京的票价
public void PriceTicket_cq_bj(){
System.out.println("重庆到北京:");
System.out.println("硬座:300");
System.out.println("卧铺:400");
}
//重庆到广东的票价
public void PriceTicket_cq_gd(){
System.out.println("重庆到广东:");
System.out.println("硬座:300");
System.out.println("卧铺:400");
}
}
//乘客查询目的站到达时间到此完成
class ArriveTime implements ActionListener{//车次到达的监听器 @Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
// TODO Auto-generated method stub
int number;
boolean quit=true;
System.out.println();
System.out.println("1:重庆-----〉贵阳");
System.out.println("2:重庆-----〉北京");
System.out.println("3:重庆-----〉广东");
System.out.println("请选择要退票的车次:");
number=in.nextInt();
while(quit){
switch(number){
case 1:ArriveTime_cq_gy();//重庆到贵阳的剩余火车票
break;
case 2:ArriveTime_cq_bj();//重庆到北京的剩余火车票
break;
case 3:ArriveTime_cq_gd();//重庆到广东的剩余火车票
break;
}
}
}
//到达贵阳时间
public void ArriveTime_cq_gy(){
System.out.println("到达贵阳时间为早上7点左右");
}
//到达广东时间
public void ArriveTime_cq_bj(){
System.out.println("到达广东时间为早上晚上10点左右");
}
//到达北京时间
public void ArriveTime_cq_gd(){
System.out.println("到达北京时间为早上10点左右");
}
}这是剩余的
YourWorkingThread worker = new YourWorkingThread();
// 这里可能设置写参数,比如你的票,或者用户信息什么乱七八糟,可能需要的数据
....
worker.start();