public void start() { List<Show> shows = new ArrayList<Show>(4); // SHOW 1 Show s1 = new Show(); s1.name = "Family of Four"; s1.day = Day.SAT; s1.runtime = 89; s1.isParquet = false; s1.is3D = false; s1.persons.add(new Person(45, false)); s1.persons.add(new Person(46, false)); float c1 = 11f + 2f + 1.5f; /* 11 (basic) + 2 (loge) + 1.50 (WE) */ s1.persons.add(new Person(12, false)); float c2 = 5.5f + 2f + 1.5f; /* 5.50 (basic) + 2 (loge) + 1.50 (WE) */ s1.persons.add(new Person(21, true)); float c3 = 8f + 2f + 1.5f; /* 8 (basic) + 2 (loge) + 1.50 (WE) */ s1.totalAdmission = 2 * c1 + c2 + c3; shows.add(s1); // SHOW 2 Show s2 = new Show(); s2.name = "Couple"; s2.day = Day.THU; s2.runtime = 124; s2.isParquet = true; s2.is3D = false; s2.persons.add(new Person(23, false)); c1 = 11f - 2f + 1.5f; /* 11 (basic) - 2 (THU) + 1.5 (over) */ s2.persons.add(new Person(25, true)); c2 = 8f - 2f + 1.5f; /* 8 (basic) - 2 (THU) + 1.5 (over) */ s2.totalAdmission = c1 + c2; shows.add(s2); // SHOW 3 Show s3 = new Show(); s3.name = "Senior with Grandson"; s3.day = Day.FRI; s3.runtime = 95; s3.isParquet = true; s3.is3D = true; s3.persons.add(new Person(65, false)); c1 = 6f + 3f; /* 6 (basic) + 3 (3D) */ s3.persons.add(new Person(6, false)); c2 = 5.5f + 3f; /* 5.5 (basic) + 3 (3D) */ s3.totalAdmission = c1 + c2; shows.add(s3); // SHOW 4 Show s4 = new Show(); s4.name = "Group of Kids"; s4.day = Day.SUN; s4.runtime = 91; s4.isParquet = true; s4.is3D = true; s4.persons.add(new Person(10, false)); s4.persons.add(new Person(12, false)); s4.persons.add(new Person(12, false)); s4.persons.add(new Person(11, false)); s4.persons.add(new Person(12, false)); c1 = 5.5f + 3f + 1.5f; /* (for all) = 5.5 (basic) + 3 (3D) + 1.5 (WE) */ s4.totalAdmission = 5 * c1; shows.add(s4); // SHOW 5 Show s5 = new Show(); s5.name = "Student Course"; s5.day = Day.THU; s5.runtime = 120; s5.isParquet = true; s5.is3D = false; for (int i = 0; i < 22; i++) { s5.persons.add(new Person(21 + new Random().nextInt(3), true)); } s5.persons.add(new Person(55, false)); c1 = 6f; /* 6 (basic) */ s5.totalAdmission = s5.persons.size() * c1; shows.add(s5); Collections.shuffle(shows); // TESTS for (Show s : shows) { System.out.println(" ~~ Arriving at your booth: '" + s.name + "' ~~"); // start ticket purchase m_solution.startPurchase(s.runtime, s.day, s.isParquet, s.is3D); System.out.println( "Today (" + s.day + ")" + " they want to see a " + s.runtime + " min. long" + (s.is3D ? " 3D" : "") + " movie" + (s.isParquet ? " from the parquet." : " from the loge.")); // add each ticket Collections.shuffle(s.persons); for (Person p : s.persons) { m_solution.addTicket(p.age, p.isStudent); System.out.println( " -> " + p.age + " years old " + (!p.isStudent ? "person" : "student") + " buys a ticket"); } // finish purchase validate(s.totalAdmission, m_solution.finishPurchase(), s.name); System.out.print("\n"); } }