0

こんにちは、私は C# が初めてで、ユーザーが株式に関する情報を入力すると、プログラムがその入力を保存して使用する、非常に単純な株式追跡コンソール アプリケーションを構築しようとしています。私はオンラインチュートリアルを行ってきましたが、すべてをまとめることができないようです.

株を売るか、株を買うか、プログラムを終了するかをユーザーに選択してもらいたいです。彼らが株式の売買を選択すると、プログラムは株式ティッカー、購入した株式の金額、および支払った価格を入力するように求めます。

この場合、ユーザーがアプリケーションを終了することを選択するまで、株の購入または株の売却を継続できるようにしたいと考えています。プログラムは、ティッカーごとにユーザーが保有する株式の合計額を追跡する必要があります。たとえば、ユーザーは、2012 年 2 月 1 日に APPL 株を 100 株購入したと入力し、2012 年 2 月 15 日に追加で APPL 株を 50 株購入し、3 月 3 日に APPL 株を 25 株売却したと入力できます。 1/12。

プログラムは情報を追跡し、ユーザーが終了することを選択すると、プログラムは残りの共有数を出力します。上記の例では、125 株が残っています。

最終的には、これをリアルタイムの株式取引プログラムに変えたいと思っていますが、今のところ、私は小さな一歩を踏み出しています。

これまでに書いたコードを以下に含めます。ユーザー入力を処理する最善の方法がわかりません。

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

namespace StockTracker
{
class Program
{
    static void Main(string[] args)
    {

        while (true)
        {
            Console.WriteLine("Welcome to the Stock Tracker");
            Console.WriteLine("--------------------------------");
            Console.WriteLine("Please choose from the following options:");
            Console.WriteLine("1) Buy Stock, 2) Sell Stock, 0) Exit");

            ArrayList Array1 = new ArrayList();
            ArrayList Array2 = new ArrayList();

            string userValue = Console.ReadLine();
            string message = "";


            double price;
            int amount;
            string stockTicker;


            switch (userValue)
            {

                case "1":
                    Console.WriteLine("Enter ticker to buy:");
                    stockTicker = Console.ReadLine();
                    Array1.Add(stockTicker);
                    Console.WriteLine("Enter stock price");
                    price = double.Parse(Console.ReadLine());
                    Array1.Add(price);
                    Console.WriteLine("Enter Quantity");
                    amount = int.Parse(Console.ReadLine());
                    Array1.Add(amount);
                    Console.WriteLine("***Stock Purchased***");
                    break;


                case "2":
                    //message = "Enter stock ticker to sell";
                    Console.WriteLine("Enter stocker ticker to sell");
                    stockTicker = Console.ReadLine();
                    Array2.Add(stockTicker);
                    Console.WriteLine("Enter Quantity");
                    amount = int.Parse(Console.ReadLine());
                    Array2.Add(amount);
                    Console.WriteLine("***Stock Sold***");
                    break;


                case "0":
                    Console.WriteLine("Good Bye!");
                    return;

                default:
                    message = "Invalid entry";
                    break;

            }

            Console.Write(message);
            Console.ReadLine();
            Console.WriteLine();


        } //while (userValue != "0");  
    }
}
}
4

1 に答える 1

2

要件が正確に何であるかを考える必要があります。すべての取引を追跡する必要がありますか? それとも各銘柄の合計ですか?この情報を保持しますか?

各株式の総数を追跡するだけの場合は、辞書の代わりに辞書ArrayListを使用することをお勧めします。このようなもの:

Dictionary<string,int> myStocks = new Dictionary<string,int>();
//....
            case "1":
                Console.WriteLine("Enter ticker to buy:");
                stockTicker = Console.ReadLine();
                Console.WriteLine("Enter stock price");
                price = double.Parse(Console.ReadLine());
                Console.WriteLine("Enter Quantity");
                amount = int.Parse(Console.ReadLine());
                int currAmount = 0;
                myStocks.TryGetValue(stockTicker,out currAmount);
                myStocks[stockTicker] = currAmount + amount;
                Console.WriteLine("***Stock Purchased***");
                break;

名前と金額の両方を別々に追跡する必要がある場合はTrade、銘柄記号、金額、価格、日付などのプロパティを持つクラス ( と呼びます) を作成し、それらを に格納する必要がありList<Trade>ます。

于 2013-03-19T00:45:12.737 に答える