Beispiel #1
0
        public static void Processor()
        {
            OrderClass order = Decoder.getDecodedValue(MultiBufferCell.getOne());

            int  numberOfTicketsToBeBooked = order.amount;
            long cc = order.cardNo;

            for (int i = 0; i < 5; i++)
            {
                Airlines al = new Airlines();
                al.encryptFunc(order.cardNo, order.amount);

                int unitPrice = Airlines.getCurrentPrice(); // get unit price from airlines

                double totalPrice = unitPrice * numberOfTicketsToBeBooked + 0.05 * unitPrice * numberOfTicketsToBeBooked + 30;
                Thread.Sleep(1000);
                Console.WriteLine();
                Console.WriteLine("*************************************************");
                Console.WriteLine("Following Order is being processed.");
                Console.WriteLine("Order booked for - {0}", order.senderId);
                Console.WriteLine("Order booked by - {0}", order.receiverId);
                Console.WriteLine("Number of tickets booked - {0}", numberOfTicketsToBeBooked);
                Console.WriteLine("Unit Price for each ticket - {0}", unitPrice);
                Console.WriteLine("Total amount charged(including taxes and destination charges) = {0}", totalPrice);
                Console.WriteLine("*************************************************");
                Console.WriteLine();
                Thread.Sleep(3000);
                ConfirmationClass.setOne(String.Format("Order Processed for {0}", order.senderId));
                lock (threadLock1)
                {
                    Airlines.numberOfBookedTickets += numberOfTicketsToBeBooked;
                }
            }
        }
        public void travelAgencyFunc()
        {
            while (Airlines.priceCutCount < Airlines.maximumPriceCut)
            {
                Airlines air           = new Airlines();
                Int32    originalPrice = air.getPrice();
                Random   rand          = new Random();
                Int32    p             = Airlines.getCurrentPrice();
                String   airlineThread = air.getThreadName();

                Int32 ticketsToOrder = rand.Next(1, 20);

                if (p < originalPrice)
                {
                    // Create a orderClass object for current booking
                    OrderClass order = new OrderClass();

                    if (Thread.CurrentThread.Name.Equals("Travel Agency 1"))
                    {
                        order.cardNo = bankAccounts.creditCardNumber[0];
                    }
                    else if (Thread.CurrentThread.Name.Equals("Travel Agency 2"))
                    {
                        order.cardNo = bankAccounts.creditCardNumber[1];
                    }
                    else if (Thread.CurrentThread.Name.Equals("Travel Agency 3"))
                    {
                        order.cardNo = bankAccounts.creditCardNumber[2];
                    }
                    else if (Thread.CurrentThread.Name.Equals("Travel Agency 4"))
                    {
                        order.cardNo = bankAccounts.creditCardNumber[3];
                    }
                    else if (Thread.CurrentThread.Name.Equals("Travel Agency 5"))
                    {
                        order.cardNo = bankAccounts.creditCardNumber[4];
                    }

                    order.senderId = Thread.CurrentThread.Name;

                    order.receiverId = airlineThread;
                    order.amount     = ticketsToOrder;
                    order.unitPrice  = p;

                    String startTime = DateTime.Now.ToString("HH:mm:ss tt");
                    MultiBufferCell.setOne(Encoder(order));

                    String confirmation = ConfirmationClass.getOne();
                    String endTime      = DateTime.Now.ToString("HH:mm:ss tt");

                    Thread.Sleep(1000);
                    Console.WriteLine("Order was sent at {0} by {1}. Order was processed at {2} by the airline.", startTime, Thread.CurrentThread.Name, endTime);

                    lock (threadLocker) {
                        Thread.Sleep(1000);
                        Console.WriteLine("{0} depositing amount in its bank account.", Thread.CurrentThread.Name);
                        float deposit = rand.Next(4000, 6000);
                        if (Thread.CurrentThread.Name.Equals("Travel Agency 1"))
                        {
                            TravelAgency.bankAccounts.balance[0] += (int)deposit;
                            Thread.Sleep(1000);
                            Console.WriteLine("Current available balance in your account is {0}", TravelAgency.bankAccounts.balance[0]);
                        }
                        else if (Thread.CurrentThread.Name.Equals("Travel Agency 2"))
                        {
                            TravelAgency.bankAccounts.balance[1] += (int)deposit;
                            Thread.Sleep(1000);
                            Console.WriteLine("Current available balance in your account is {0}", TravelAgency.bankAccounts.balance[1]);
                        }
                        else if (Thread.CurrentThread.Name.Equals("Travel Agency 3"))
                        {
                            TravelAgency.bankAccounts.balance[2] += (int)deposit;
                            Thread.Sleep(1000);
                            Console.WriteLine("Current available balance in your account is {0}", TravelAgency.bankAccounts.balance[2]);
                        }
                        else if (Thread.CurrentThread.Name.Equals("Travel Agency 4"))
                        {
                            TravelAgency.bankAccounts.balance[3] += (int)deposit;
                            Thread.Sleep(1000);
                            Console.WriteLine("Current available balance in your account is {0}", TravelAgency.bankAccounts.balance[3]);
                        }
                        else if (Thread.CurrentThread.Name.Equals("Travel Agency 5"))
                        {
                            TravelAgency.bankAccounts.balance[4] += (int)deposit;
                            Thread.Sleep(1000);
                            Console.WriteLine("Current available balance in your account is {0}", TravelAgency.bankAccounts.balance[4]);
                        }
                    }
                }
            }
        }
Beispiel #3
0
        static void Main(string[] args)
        {
            Console.WriteLine("CSE 598 Assignemnt 2.");
            Console.WriteLine("Press Enter to start the application.");
            Console.ReadKey();
            Airlines     air         = new Airlines();
            TravelAgency ta          = new TravelAgency();
            BankService  bankDetails = new BankService();

            Airlines.priceCut += new priceCutEvent(ta.ticketsOnSale);

            Random rand = new Random();

            Thread[] tas  = new Thread[5];
            Thread[] airs = new Thread[3];

            Thread.Sleep(1000);
            Console.WriteLine("Starting Airline threads.");

            for (Int32 j = 0; j < 3; j++)
            {
                airs[j]      = new Thread(new ThreadStart(air.airlineFunction));
                airs[j].Name = "Airline " + (j + 1).ToString();
                airs[j].Start();
            }
            Thread.Sleep(1000);
            Console.WriteLine("Started airline treads.");

            int counter = 127000;

            int[] threadNumber = new int[5];

            for (int i = 0; i < 5; i++)
            {
                bankDetails.creditCardNumber[i] = counter;
                bankDetails.travelAgencyName[i] = String.Format("Travel Agency {0}", i + 1);
                bankDetails.balance[i]          = rand.Next(20000, 30000);
                counter++;
            }

            TravelAgency.BankObject(bankDetails);
            Thread.Sleep(1000);
            Console.WriteLine("Starting travel agency threads.");

            for (Int32 i = 0; i < 5; i++)
            {
                tas[i]      = new Thread(new ThreadStart(ta.travelAgencyFunc));
                tas[i].Name = "Travel Agency " + (i + 1).ToString();
                tas[i].Start();
            }
            Thread.Sleep(1000);
            Console.WriteLine("Started travel agency threads.");

            for (Int32 i = 0; i < 3; i++)
            {
                airs[i].Join();
            }

            for (Int32 i = 0; i < 5; i++)
            {
                tas[i].Join();
            }

            Thread.Sleep(3000);
            Console.WriteLine();
            Console.WriteLine("Thank you for shopping with us.");
            Thread.Sleep(1000);
            Console.WriteLine("Press any key to close the application");
            Console.ReadKey();
            Environment.Exit(0);
        }