java如何写火车站售票系统窗口

java如何写火车站售票系统窗口,第1张

很简单 我给你个我写的程序,你可以参考一下 不懂的问我。

public class Shoupiao {

public static void main(String[] args) {

chushou c1=new chushou("A地火车站",10);

c1start();//调用Thread中的run方法需要用start();

chushou c2=new chushou("B地火车站",5);

c2start();

chushou c3=new chushou("C地火车站",8);

c3start();

try {

c1join(); //执行完 c1 c2 c3 在继续执行 目的让结束最后输出

c2join();

c3join();

} catch (Exception e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

Systemoutprintln("结束");

}

}

//新建一个类

class chushou extends Thread{//用继承Thread的方法来实现多线程

String iname;

public void run() {

for(int i=inumber;i>0;i--){

Systemoutprintln(iname+"火车票卖出一张"+"剩余"+(i-1)+"张");

try {

Threadsleep(100);

} catch (Exception e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

}

int inumber;

public String getIname() {

return iname;

}

public void setIname(String iname) {

thisiname = iname;

}

public int getInumber() {

return inumber;

}

public void setInumber(int inumber) {

thisinumber = inumber;

}

public chushou(String iname, int inumber) {

thisiname = iname;

thisinumber = inumber;

}

}

public class SaleTicket extends Thread{

static int mark=0;

static int ticket[]=new int [100];

int SaleTicketNo;

SaleTicket(int num){

SaleTicketNo=num;

}

public void run() {

// compute primes larger than minPrime

for(int i=0;i<100;i++)

{

if(ticket[i]==0){

ticket[i]=1;

mark=mark+1;

Systemoutprintln("售票机编号:"+SaleTicketNo+" 票号:"+i+" 张次:"+mark);

}

}

}

}

public class Test {

/

@param args

/

public static void main(String[] args) {

SaleTicket sale1=new SaleTicket(101);

SaleTicket sale2=new SaleTicket(102);

SaleTicket sale3=new SaleTicket(103);

SaleTicket sale4=new SaleTicket(104);

SaleTicket sale5=new SaleTicket(105);

sale1start();

sale2start();

sale3start();

sale4start();

sale5start();

}

}

不考虑死锁问题

public class TicketsSystem {

public static void main(String[] args) {

SellThread st = new SellThread();

Thread th1 = new Thread(st);

th1start();

Thread th2 = new Thread(st);

th2start();

Thread th3 = new Thread(st);

th3start();

}

}

class SellThread implements Runnable {

private int number=10;

String s = new String();

public void run() {

while (number > 0) {

synchronized (s) {

Systemoutprintln("第" + number + "个人在"

+ ThreadcurrentThread()getName() + "买票");

}

number--;

try {

Threadsleep(10);

} catch (InterruptedException e) {

eprintStackTrace();

}

}

}

}

synchronized (s)的s是synchronized 的参数,synchronized 的参数可以是任意对象,我定义了一个String类型的对象s,方便看程序而已。

但是要注意,s的定义一定要在run方法之外,不然还会出现负数。因为你启动了3个线程,每个线程都调用了run方法,在每个线程就会在run方法里边产生自己的s对象,一共会产生3个,达不到同步的目的。

如果还有不明白的,可以继续问。

public class ShowDemo{

public static void main(String[] rags)throws Exception{

MyThread mt= new MyThread();

Thread th1 = new Thread(mt,"售票一");

Thread th2 = new Thread(mt,"售票二");

Thread th3 = new Thread(mt,"售票三");

Thread th4 = new Thread(mt,"售票四");

th1start();th2start();th3start();th4start();

}

}

class MyThread implements Runnable{

int ticket=1;

public void run(){

while(ticket<=100){

if("售票一"equals(ThreadcurrentThread()getName()) && ticket%2!=0){

Systemoutprintln("售票一售出:"+ticket++);

}

if("售票二"equals(ThreadcurrentThread()getName()) && ticket%2!=0){

Systemoutprintln("售票二售出:"+ticket++);

}

if("售票三"equals(ThreadcurrentThread()getName()) && ticket%2==0){

Systemoutprintln("售票三售出:"+ticket++);

}

if("售票四"equals(ThreadcurrentThread()getName()) && ticket%4==0){

Systemoutprintln("售票四售出:"+ticket++);

}

}

}

}

能详细说明一下买票按钮的功能是什么吗

程序有几个问题:

第一,maipiao类名要首字母大写,变量的定义尽量不要使用中文

第二,Sell A; 没有初始化,然后你就开始了调用

第三,public void actionPerformed(ActionEvent e),放在Maipiao类里面,什么时候被调用??

第四,多线程的public void run()方法,同样在Maipiao类中,可是它没有被调用

问题有不少,我实在修改不下去了,明天白天如果有空就帮你重写一个

终于给你修改完了,要的话留邮箱

很简单, 出票里加锁就行了完整代码:

public class Test {

public static void main(String[] args) {

for(int i=0; i<3; i++){

new Thread("线程 " + i){

public void run() {

while(true){

int p = getNumber();

if(p >0 ){

Systemoutprintln(getName() + " 票号: " + p);

}else{

Systemoutprintln("没票了");

break;

}

}

};

}start();

}

}

public static int num = 100; //总票数

/

  synchronized 同步锁

  @return

 /

public static synchronized int getNumber(){

if(num >0){

return num --; //如果大于0, 则返回当前票并减少一张

}

return 0;

}

}

public class Buy{

Object seller=new Object();

int twantyNumber=0;

int tenNumber=0;

int fiveNumber=1;

int all=5;

public Buy(){

printmony();

buyer zhao=new buyer("赵",2,20);

buyer qian=new buyer("钱",1,20);

buyer sun=new buyer("孙",1,10);

buyer li=new buyer("李",2,10);

buyer zhou=new buyer("周",1,5);

zhaostart();

qianstart();

sunstart();

listart();

zhoustart();

}

class buyer extends Thread{

int number=0;

int mony=0;

String name=null;

boolean hasBuyed=false;

public buyer(String name,int number,int mony) {

thisnumber=number;

thismony=mony;

this name=name;

}

void print(int i){

if(i==0){Systemoutprintln(name+" 正在买 "+number+" 张票 "+ mony+ "元钱");

}

if(i==1){Systemoutprintln(name+" 已经买完 !");

printmony();

}

}

public void run(){

while(!hasBuyed){

synchronized (seller) {

int charge=mony-number5;

if((tenNumber>=charge/10&&fiveNumber>=(charge%10)/5)||charge==0){

print(0);

if(mony==20)twantyNumber++;

if(mony==10)tenNumber++;

if(mony==5)fiveNumber++;

tenNumber-=charge/10;

fiveNumber-=(charge%10)/5;

try {

Threadsleep(1000);

} catch (InterruptedException e) {

eprintStackTrace();

}

print(1);

hasBuyed=true;

sellernotifyAll();

}else{

try {

sellerwait();

} catch (InterruptedException e) {

eprintStackTrace();

}

}

}

}

}

}

void printmony(){

Systemoutprintln("\t 售票员的钱数:");

Systemoutprintln("\t\t\t20元\t10元\t五元");

Systemoutprintln("\t\t\t"+twantyNumber+"张\t"+tenNumber+"张\t"+fiveNumber+"张");

}

public static void main(String[] s){

new Buy();

}

}

结果:

售票员的钱数:

20元 10元 五元

0张 0张 1张

孙 正在买 1 张票 10元钱

孙 已经买完 !

售票员的钱数:

20元 10元 五元

0张 1张 0张

赵 正在买 2 张票 20元钱

赵 已经买完 !

售票员的钱数:

20元 10元 五元

1张 0张 0张

周 正在买 1 张票 5元钱

周 已经买完 !

售票员的钱数:

20元 10元 五元

1张 0张 1张

李 正在买 2 张票 10元钱

李 已经买完 !

售票员的钱数:

20元 10元 五元

1张 1张 1张

钱 正在买 1 张票 20元钱

钱 已经买完 !

售票员的钱数:

20元 10元 五元

2张 0张 0张

以上就是关于java如何写火车站售票系统窗口全部的内容,包括:java如何写火车站售票系统窗口、java中,用static 变量,实现卖火车票,假如有三个窗口,每个窗口都在卖一辆火车的票, 买的票不能重复!、java多线程问题:模拟10个人在3个窗口买票的过程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9613771.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存