2

私は現在、さまざまな製品や顧客の領収書を記録して印刷できる小規模ビジネス (この場合は小さな映画館) 向けのプログラムを作成するように依頼されたプロジェクトに取り組んでいます。

これまでのところ、顧客が注文したいものを記録する一連のコードがあります。

価格を保存して計算し、領収書がどのように見えるかをコンソールに出力する別のクラスを作成するにはどうすればよいですか?

私は答えを求めているのではなく、いくつかのガイダンスを求めています。

namespace RecieptApp
{
    class Reciept
    {
        public void Main()
        {
            double DoubleDiscount;
            int IntFoodOrdered;
            int IntDrinkOrdered;
            double DoubleFoodSize;
            double DoubleDrinkSize;
            int ACustomer;
            int BCustomer;
            string CustomerDescription;
            string FoodDescription;
            string DrinkDescription;

            Console.Write("How many adults: ");
            ACustomer = Console.Read();
            Console.Write("How many kids: ");
            BCustomer = Console.Read();

            while (true)
            {
                Console.Write("Are you a government employee, current or retired military, or classified disabled? (Please answer yes or no) :");
                string input1 = Console.ReadLine();
                if (input1 == "yes")
                {
                    DoubleDiscount = .15;
                    CustomerDescription = "Special Discount";
                }
                else
                {
                    break;
                }
            }

            while (true)
            {
                Console.WriteLine("Would you like to order some popcorn?");
                string FoodInput1 = Console.ReadLine();
                if (FoodInput1 == "yes")
                {
                    Console.WriteLine("How many would you like?");
                    int.TryParse(Console.ReadLine(), out IntFoodOrdered);
                    while (true)
                    {
                        Console.WriteLine("And would you like that in small or large?");
                        string FoodInput2 = Console.ReadLine();
                        if (FoodInput2 == "small")
                        {
                            DoubleFoodSize = 3.75;
                            FoodDescription = "S";
                        }
                        else
                        {
                            DoubleFoodSize = 6.75;
                            FoodDescription = "L";
                        }
                    }
                }
                else
                {
                    break;
                }
            }

            while (true)
            {
                Console.WriteLine("Would you like to order a drink?");
                string DrinkInput1 = Console.ReadLine();
                if (DrinkInput1 == "yes")
                {
                    Console.WriteLine("How many would you like?");
                    int.TryParse(Console.ReadLine(), out IntDrinkOrdered);
                    while (true)
                    {
                        Console.WriteLine("And Would you like that in small or large?");
                        string DrinkInput2 = Console.ReadLine();
                        if (DrinkInput2 == "small")
                        {
                            DoubleDrinkSize = 2.75;
                            DrinkDescription = "S";
                        }
                        else
                        {
                            DoubleDrinkSize = 5.75;
                            DrinkDescription = "L";
                        }
                    }

                }
            }
            //This is where the other class would go in
            //I just dont know how to go about it so that it would minimized the amount of code I have //to write

            RecieptList Items = new RecieptList();

            Items.AddProduct(ACustomer);
            Items.AddProduct(BCustomer);
            Items.AddProduct(CustomerDescription);
            Items.AddProduct(FoodDescription);
            Items.AddProduct(DrinkDescription);

        }
    }
}
4

1 に答える 1

1

クラスを作成したい場合は、一般的な製品を表すクラスを作成し、その製品から詳細行を取得するメソッドを用意することをお勧めします。

仕方がないので、あなたをSSCCEにしました。非常に単純化されていますが、非常に特殊なケースの要件を満たし、オブジェクトを使用しています。

特定のニーズを満たすためにいくつかの概念を使用するのに十分賢いと確信しています。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{

    public class Product
    {
        public string description;
        public double price;
        //normally you want to use eitehr an int for price(representing cents) or a decimal type, instead of double
        //just using a double here for the sack of simplicity
        // you'll also want to use properties instead of variable fields, but i'm using variable fields for simplicity

        // constructor
        public Product(string description, double price)
        {
            this.description = description;
            this.price = price;
        }

        public string GetDetailLine()
        {
            // google "String.Format" for more information,
            // basically it replaces things in the {0} and {1}, with the other parameters
            // the ":c" in {1:c} part means format as currency
            return String.Format("You ordered {0}.  It costs: {1:c}", description, price);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            List<Product> products = new List<Product>();


            Console.Write("Do You Want a Soda?   ");
            string input = Console.ReadLine();
            //the .ToUpper() part makes it upper case
            if (input.ToUpper() == "YES")
            {
                Product soda = new Product("soda", 2.50);
                products.Add(soda);
            }

            double total = 0; 
            for(int i = 0; i<products.Count; i++)
            {
                Console.WriteLine(products[i].GetDetailLine());
                total += products[i].price;
            }

            //you can also use Console.Writeline like String.Format
            Console.WriteLine("Your Total is:  {0:c}", total);


            // this is just to pause in-case you're debugging from visual studio
            Console.ReadLine();
        }
    }
}
于 2012-12-06T02:44:35.893 に答える