只會C語言
一. 需求分析
1.設計題目:車票管理系統
用JAVA語言和數據結構知識設計設計車票管理系統。要求如下所述:
一車站每天有n個發車班次,每個班次都有一個班次號(1、2、3…n),固定的發車時間,固定的路線(起始站、終點站),大致的行車時間,固定的額定載客量。如:
班次 發車時間 起點站 終點站 行車時間 額定載量 已定票人數
1 8:00 武漢 廣州 2 45 30
2 6:30 武漢 成都 3 40 40
3 7:00 武漢 成都 3 40 20
4 10:00 武漢 成都 3 40 2
…
根據以上情況設計出相應的車票管理系統,具體功能如下:
1) 錄入功能
錄入班次信息,可不定時地增加班次數據
2) 瀏覽功能
瀏覽班次信息,可顯示出所有班次當前狀況(如果當前系統時間超過了某班次的發車時間,則顯示「此班已發出」的提示信息)。
3) 查詢功能
查詢路線:可按班次號查詢,可按終點站查詢。
4) 售票功能
當查詢出已定票人數小於額定載量且當前系統時間小於發車時間時才能售票,自動更新已售票人數。
5) 退票功能
退票時,輸入退票的班次,當本班車未發出時才能退票,自動更新已售票人數。
6) 文件保存
可自行增加其他符合業務邏輯的功能
2.設計要求
a.根據題目功能需求,自己定義合適的存儲結構、類、參數等;
b.提供友好的用戶界面,方便用戶操作。
3. 系統功能需求分析
a. 錄入班次信息,可不定時地增加班次數據。
b. 瀏覽班次信息,可顯示出所有班次當前狀況(如果當前系統時間超過了某班次的發車時間,則顯示「此班已發出」的提示信息)。
c. 查詢路線:可按班次號查詢,可按終點站查詢。
d. 當查詢出已定票人數小於額定載量且當前系統時間小於發車時間時才能售票,自動更新已售票人數。
f. 退票時,輸入退票的班次,當本班車未發出時才能退票,自動更新已售票人數。
❷ 誰有java寫的調用12306介面 實現車票查詢的例子 急用~~!!
http://code.juhe.cn/docs/764,聚合數據上的
❸ 基於java的火車票售票系統,源代碼,最好有資料庫,謝謝了!
12306這個系統是完整的,而且是大量數據測試過的
❹ Java編程 假設有火車票1000張,創建10個線程模擬10個售票點,每個售票點100毫秒售出一張票。
packagetmp;
publicclassTest{
privatestaticintk=0;//售出票數
privatestaticintcount=1000;//總票數
(intn){
if(k<count){
k++;
System.out.println("第"+n+"售票點售出第"+k+"張票");
returntrue;
}
returnfalse;
}
{//售票點
intn;//售票點編號
publicSellPot(intn){
this.n=n;
}
publicvoidrun(){
while(sell(n)){
try{
Thread.sleep(100);
}catch(InterruptedExceptione){
e.printStackTrace();
}
}
}
}
publicstaticvoidmain(String[]args){
for(inti=1;i<=10;i++){
newSellPot(i).start();
}
}
}
//銀行匯款
publicclassTest2{
privatestaticintk=0;//總匯款
(intm,inti,intn){
k+=m;
System.out.println("第"+n+"個顧客進行第"+(i+1)+"次匯款,銀行接收總匯款"+k);
}
{//售票點
intn;//顧客編號
publicCostum(intn){
this.n=n;
}
publicvoidrun(){
for(inti=0;i<3;i++){
send(100,i,n);//匯款100
try{
Thread.sleep(100);
}catch(InterruptedExceptione){
e.printStackTrace();
}
}
}
}
publicstaticvoidmain(String[]args){
for(inti=1;i<=3;i++){
newCostum(i).start();
}
}
}
❺ java中,用static 變數,實現賣火車票,假如有三個窗口,每個窗口都在賣一輛火車的票, 買的票不能重復!
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;
System.out.println("售票機編號:"+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);
sale1.start();
sale2.start();
sale3.start();
sale4.start();
sale5.start();
}
}
不考慮死鎖問題
❻ java多線程問題:模擬10個人在3個窗口買票的過程
public class TicketsSystem {
public static void main(String[] args) {
SellThread st = new SellThread();
Thread th1 = new Thread(st);
th1.start();
Thread th2 = new Thread(st);
th2.start();
Thread th3 = new Thread(st);
th3.start();
}
}
class SellThread implements Runnable {
private int number=10;
String s = new String();
public void run() {
while (number > 0) {
synchronized (s) {
System.out.println("第" + number + "個人在"
+ Thread.currentThread().getName() + "買票");
}
number--;
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
synchronized (s)的s是synchronized 的參數,synchronized 的參數可以是任意對象,我定義了一個String類型的對象s,方便看程序而已。
但是要注意,s的定義一定要在run方法之外,不然還會出現負數。因為你啟動了3個線程,每個線程都調用了run方法,在每個線程就會在run方法里邊產生自己的s對象,一共會產生3個,達不到同步的目的。
如果還有不明白的,可以繼續問。