只会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个,达不到同步的目的。
如果还有不明白的,可以继续问。