コード例 #1
0
ファイル: Auction.cs プロジェクト: KristianHauge/OOPEksamen
        //The method which evaluates whether the auction is being bid on or not
        public bool BidAuction(decimal bid, Buyer buyer)
        {
            //If the buyers balance is larger than the bid and the bid is higher than the current bid
            //and the minimum price, set the bid to the current bid
            if (buyer.Balance >= bid && bid > CurrentBid && bid >= MinPrice)
            {
                CurrentBid = bid;
                //If a highest bidder is already existing, then remove him from event invocation list
                if (HighestBidder != null)
                {
                    if (HighestBidder.Person != null)
                    {
                        HighestBidder.Person.RemoveFromEvent(this);
                    }
                    else
                    {
                        HighestBidder.Company.RemoveFromEvent(this);
                    }
                }
                //Adds the new highest bidder to the event invocation list
                if (buyer.Person != null)
                {
                    buyer.Person.SubscribeToEvent(this);
                }
                else
                {
                    buyer.Company.SubscribeToEvent(this);
                }

                HighestBidder = buyer;
                //Notifies the seller that an interesting bid has been made
                Notify();

                return true;
            }

            else
            {
                return false;
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: KristianHauge/OOPEksamen
        static void Main(string[] args)
        {
            //A number of persons
            PrivatePerson Kristian = new PrivatePerson("Kristian", new DateTime(1989, 01, 02), 150000.0M);
            PrivatePerson Malthe = new PrivatePerson("Malthe", new DateTime(1993, 05, 06), 15000.0M);
            PrivatePerson Martin = new PrivatePerson("Martin", new DateTime(1991, 05, 24), 150000.0M);

            //A number of Companies
            Company Mærsk = new Company("Mærsk", 9999999.0M, 500000.0M);
            Company Arriva = new Company("Arriva", 1923994.0M, 300000.0M);
            Company AalborgTaxa = new Company("Aalborg Taxa", 30000.0M, 15000.0M);

            //A number of vehicles
            Truck randomTruck = new Truck("MAN", "YZ39589");
            Bus randomBus = new Bus("Movia", "LO93840");
            AutoCamper randomAutoCamper = new AutoCamper("Knaus", "SE98311");
            AutoCamper randomAutoCamper2 = new AutoCamper("Knaus", "SE98311");
            PassengerCar randomPassengerCar = new PassengerCar("Volvo", "SU30092");
            PrivatePassengerCar randomPrivatePassengerCar = new PrivatePassengerCar("Lamborghini", "DU94304");
            BusinessPassengerCar randomBusinessPassengerCar = new BusinessPassengerCar("Mercedes", "MO23211");
            Vehicle MartinsVehicle = new PrivatePassengerCar("Lamborghini", "XY12345");
            Vehicle KristiansVehicle = new PrivatePassengerCar("Multipla", "HÆ54960");

            //Create an auction house
            AuctionHouse auctionHouse = new AuctionHouse();

            //Functionality of different vehicles
            Console.WriteLine("First part of the assignment:");
            Console.WriteLine(randomPrivatePassengerCar);
            Console.WriteLine("\n" + randomBusinessPassengerCar);
            Console.WriteLine("\n" + randomTruck);
            Console.WriteLine("\n" + randomBus);
            Console.WriteLine("\n" + randomAutoCamper);

            Console.WriteLine("---------------------------------------------------------");
            Console.WriteLine("Second part of the assignment: ");

            //Assignment of sellers and buyers
            Buyer buyMærsk = new Buyer(Mærsk);
            Buyer buyArriva = new Buyer(Arriva);
            Buyer buyAalborgTaxa = new Buyer(AalborgTaxa);
            Buyer buyMalthe = new Buyer(Malthe);
            Seller sellKristian = new Seller(Kristian);
            Seller sellMartin = new Seller(Martin);

            //Sellers putting vehicles up for sale
            int kristiansAuctionNumber = auctionHouse.PutUpForSale(KristiansVehicle, sellKristian, 10000.0M);
            int martinsAuctionNumber = auctionHouse.PutUpForSale(MartinsVehicle, sellMartin, 7000.0M);

            //Buyer places offer
            Console.WriteLine("Did the offer on Kristian's vehicle pass?: " + auctionHouse.OfferRecived(buyMalthe, kristiansAuctionNumber, 11000.0M));
            Console.WriteLine("Did the offer on Martin's vehicle pass?: " + auctionHouse.OfferRecived(buyMalthe, martinsAuctionNumber, 11000.0M));
            Console.WriteLine();

            //Seller accepts offer
            Console.WriteLine("Malthe's balance before the buy: " + Malthe.Balance);
            Console.WriteLine("Was the transaction complete?: " + auctionHouse.AcceptOffer(sellKristian, kristiansAuctionNumber));
            Console.WriteLine("Malthe's balance after the buy: " + Malthe.Balance);
            Console.WriteLine();

            //Shows that companies can make use of their credit
            Console.WriteLine("Aalborg taxa's balance before buy: " + AalborgTaxa.Balance + " and credit: " + AalborgTaxa.Credit);
            Console.WriteLine("Did the offer on Martin's vehicle pass?: " + auctionHouse.OfferRecived(buyAalborgTaxa, martinsAuctionNumber, 44591.0M));
            Console.WriteLine("Was the transaction complete?: " + auctionHouse.AcceptOffer(sellMartin, martinsAuctionNumber));
            Console.WriteLine("Malthe's balance after the buy: " + AalborgTaxa.Balance + " and credit: " + AalborgTaxa.Credit);
            Console.WriteLine();

            //Create a lot of auctions
            for (int i = 0; i < 10; i++)
            {
                auctionHouse.PutUpForSale(new Truck(genCarName(), genLicense()), sellKristian, (decimal)RandomGenerator.r.Next(1000, 150000));
                auctionHouse.PutUpForSale(new Bus(genCarName(), genLicense()), sellKristian, (decimal)RandomGenerator.r.Next(1000, 150000));
                auctionHouse.PutUpForSale(new AutoCamper(genCarName(), genLicense()), sellKristian, (decimal)RandomGenerator.r.Next(1000, 150000));
                auctionHouse.PutUpForSale(new PassengerCar(genCarName(), genLicense()), sellMartin, (decimal)RandomGenerator.r.Next(1000, 150000));
                auctionHouse.PutUpForSale(new PrivatePassengerCar(genCarName(), genLicense()), sellKristian, (decimal)RandomGenerator.r.Next(1000, 150000));
                auctionHouse.PutUpForSale(new BusinessPassengerCar(genCarName(), genLicense()), sellMartin, (decimal)RandomGenerator.r.Next(1000, 150000));
            }

            //Queries
            Console.WriteLine("Below is a search based on driver's license and weight:");
            List<Vehicle> query1 = auctionHouse.SearchByDriversLicense("D", 13);
            foreach (Vehicle item in query1)
            {
                Console.WriteLine(item.Name);
            }

            Console.WriteLine("\nBelow is search based on vehicle name:");
            List<Vehicle> query2 = auctionHouse.SearchByName("Batmobil");
            foreach (Vehicle item in query2)
            {
                Console.WriteLine(item.Name);
            }

            Console.WriteLine("\nBelow is a search based on a minimum number of seats in vehicles that has a bathroom");
            List<Vehicle> query3 = auctionHouse.SearchByNumSeatsAndBathrooms(7);
            foreach (Vehicle item in query3)
            {
                Console.WriteLine(item.Name);
            }

            Console.WriteLine("\nBelow is a search based on the seller's zip code and a defined radius");
            List<Vehicle> query4 = auctionHouse.SearchByZipCodeAndRadius(4000, 3000);
            foreach (Vehicle item in query4)
            {
                Console.WriteLine(item.Name);
            }

            Console.WriteLine("\nBelow is a search on private cars based on kilometers traveled and a minimum price");
            List<Vehicle> query5 = auctionHouse.SearchPrivateCarByKmAndMinimumPrice(400000, 100000);
            foreach (Vehicle item in query5)
            {
                Console.WriteLine(item.Name);
            }

            System.Console.WriteLine("\nOutputs the average energy class the cars in auction house");
            Console.WriteLine(auctionHouse.AverageEnergyClass());

            Console.ReadLine();
        }
コード例 #3
0
ファイル: Auction.cs プロジェクト: KristianHauge/OOPEksamen
 public PriceArgs(decimal currentBid, Seller salesman, Buyer buyer)
 {
     Price = currentBid;
     Salesman = salesman;
     Buyer = buyer;
 }
コード例 #4
0
        //Method that returns whether the offer has been received or not
        public bool OfferRecived(Buyer buyer, int auctionNumber, decimal bid)
        {
            if (buyer.TempBalanceIfAcceptedBid >= bid)
            {
                buyer.TempBalanceIfAcceptedBid -= bid;

                Auction auction = AuctionList.First(x => x.AuctionNumber == auctionNumber);

                return auction.BidAuction(bid, buyer);
            }
            else
            {
                return false;
            }
        }