gpt4 book ai didi

java - 预订座位并检查是否有空位

转载 作者:行者123 更新时间:2023-12-01 21:59:18 26 4
gpt4 key购买 nike

这是一个学校项目。我已经完成了大部分内容,但我有些事情被困住了。

这是我到目前为止所做的事情:

import java.io.*;
import java.util.*;
class train1
{
public static void main() throws IOException
{
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader x=new BufferedReader(isr);
int tp=0, c=0, no=0, r, o;
boolean flag = true;
boolean ar[][]=new boolean[10][4];
System.out.print("***********WELCOME TO TICKET RESERVATION SYSTEM***********");
System.out.println();
System.out.println();
System.out.println(" TICKET RESERVATION");
while(no<10 && flag==true)
{
System.out.println(" Main Menu");
System.out.println("1. Book Ticket");
System.out.println("2. Exit");
System.out.print("Enter Choice :");
int choice = Integer.parseInt(x.readLine());
switch (choice)
{
case 1:

System.out.println();
System.out.println();
System.out.print("*********TRAIN TICKET RESERVATION COUNTER***********");
System.out.println();
System.out.println("Enter the number for the station as given in the menu below");
System.out.println("1 for Station A");
System.out.println("2 for Station B");
System.out.println("3 for Station C");
System.out.println("4 for Station D");
System.out.println("5 for Station E");


System.out.print("START STATION: ");
int s=Integer.parseInt(x.readLine());
System.out.print("DESTINATION STATION: ");
int d=Integer.parseInt(x.readLine());
s=--s;
d=--d;
**//Here how do I check if seats are available or not?**
int f=0;
String starttime="", reaching="";
if(s==0 && d==1)
{

f = 50;
starttime = "08:00";
reaching = "10:00";
}
if(s==0 && d==2)
{
int a =0;
int b =2;
f = 100;
starttime = "08:00";
reaching = "12:00";
}
if(s==0 && d==3)
{

f = 150;
starttime = "08:00";
reaching = "14:00";
}
if(s==0 && d==4)
{
int a =0;
int b =4;
f = 200;
starttime = "08:00";
reaching = "16:00";
}
if(s==1 && d==2)
{

f = 50;
starttime = "10:00";
reaching = "12:00";
}
if(s==1 && d==3)
{

f = 100;
starttime = "10:00";
reaching = "14:00";
}
if(s==1 && d==4)
{

f = 150;
starttime = "10:00";
reaching = "16:00";
}
if(s==2 && d==3)
{

f = 50;
starttime = "12:00";
reaching = "14:00";
}
if(s==2 && d==4)
{

f = 100;
starttime = "12:00";
reaching = "16:00";
}
if(s==3 && d==4)
{

f = 50;
starttime = "14:00";
reaching = "16:00";
}
if (s==4 || d==0)
{
System.out.println ("Wrong Choice. Your ticket was not booked");

}

for (int i=0; i<no; i++)
{
for (int j=s; j<=d; j++)
{
ar[i][j]=true;
}
}

/*
Now what I have been unable to do is. Suppose a person
is going from station A to B. Then row 1 column 1 is
true, and if the next passenger wants to book from B-D
then how do I get the seat booked in the row 1 if there
is space available. And is seat is not available then
it should go to row 2. How do I do that? What I am
doing is "no++" so it goes to row next every time
*/


System.out.print("ENTER THE NAME: ");
String people=x.readLine();
System.out.print("ENTER THE AGE: ");
int age=Integer.parseInt(x.readLine());
System.out.print("GENDER OF THE PERSON: ");
String gender=x.readLine();
System.out.print("DATE OF JOURNRY: ");
String date2=x.readLine();

System.out.println();
System.out.println();
System.out.println(" *****RESERVATION TICKET*****");

System.out.println("Name :"+people+" "+"Age :"+age+" "+"Gender :"+gender+" ");




System.out.println();
System.out.println("START STATION: "+s);
System.out.println("Boarding time: " + starttime);
System.out.println("DESTINATION STATION: "+d);
System.out.println("Expected time of Arrival:" + reaching);
System.out.println();
System.out.println("TOTAL AMOUNT: "+ f);
System.out.println();
System.out.println(" ***WISH YOU A HAPPY AND SAFE JOURNEY***");
System.out.println("COURTESY: ROMIT RAILWAY STATION");


break;


case 2:
flag=false;
System.out.println ("You have exited");
break;
default: System.out.println("Choice Does not Exit");


}
no=no++;
}
}

让我告诉你它是如何运作的。主菜单必须包含 2 个选项,一是预订,二是退出。我已经这么做了。现在我们需要输入我在选择预订时所做的登机和目的地。

现在程序必须检查是否有可用座位。这就是我被困住的地方。我创建了一个 2D 数组,其中包含 10 行和 4 列。每当订票时,我都会将其存储为 true,并且最初所有地方都是 false。现在,每当预订新机票时,数组状态都会发生变化。我也这么做过。

我一直无法做到的是:假设一个人要从A站到B站。那么第1行第1列为真,如果下一位乘客想从B-D预订那么我如何预订座位如果有可用空间,则为第 1 行。如果没有座位,那么应该去第 2 排。我该怎么做?

此外,如果所有座位都已满,那么它必须告诉我没有座位。我怎么做?我不太了解 Java,因为我使用 BlueJ。所以如果有人能给BlueJ一些建议就更好了。

我是 10 年级的学生,所以请不要打扰 SQL 系统。

最佳答案

您的第一个问题,关于 A-B 和 B-D 无法用您的数据结构来回答,因为您按车站(起点、中间和目的地)存储车票。为了解决这个问题,您可以切换到不使用站点而是使用轨迹(即 AB、BC、CD 等)的数据结构。然后,您需要翻译用户输入(“从 A 到 B”将变为“轨迹 1 (AB)”,“从 B 到 D”变为“轨迹 2 (BC) 和 3 (CD)”,现在没有重叠)。

要解决您的其他问题,您必须重新考虑如何处理“否”变量。首先,让第 126 行的循环每次从 0 开始运行是没有意义的(据我所知),您只预订一张票,并且在当前的代码中,您预订的座位号存储在 no 中。因此,您只需要设置数组的索引(当然,对于每个站点/轨迹)。

您必须在用户输入后检查您的数据结构,以确定是否存在一个座位索引(数组的第一个维度),而不是在每个循环中简单地递增 no用户请求的所有站点(或轨迹)上仍然有空间。如果是,请预订,如果不是:没有座位。

(编辑:提示:您不应该使用另一个巨大的 if 语句来执行此操作,而是使用 for 循环、一些简单的 if 语句以及可能的一个或更多 boolean 变量来跟踪结果。您还可以查看 break 甚至 continue,它们是在 for 循环中使用的有用语句.)

(或者,您可以检查每个轨迹是否有可用座位:用户预订机票的机会更大,但他/她可能必须更换座位......)。

作为旁注,为了加分:代码的大部分是 if 语句,将起点站和终点站(sd)转换为 f (票价)、开始时间和停止时间。如果有 10 个电台,代码的长度会怎样?它会爆炸,因为您需要 81 个 if 语句!有一种更简单的方法可以做到这一点。提示:将每种情况的 d - s 与费用进行比较。你看到一个模式了吗?现在将 d 与开始时间进行比较。你看到一个模式了吗?与 s 相同。看看是否可以简化代码,以便(“将来”)可以扩展到 10 个站点,而无需编写大量代码。

关于java - 预订座位并检查是否有空位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33853632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com