0

嗨,我是 C# 新手,我正在尝试构建一个非常简单的股票跟踪控制台应用程序,用户在其中输入有关股票的一些信息,程序保存并使用输入。我一直在浏览在线教程,但我似乎无法将它们放在一起。

我想请用户选择是要卖出股票、买入股票还是退出程序。如果他们选择买入或卖出股票,程序将要求他们输入股票代码、购买的股票数量和支付的价格。

在这种情况下,我希望用户能够继续购买或出售股票,直到他们选择退出应用程序。该程序应跟踪用户对每个股票代码的总库存量。例如,用户可以输入他们在 2012 年 2 月 1 日购买了 100 股 APPL 股票,然后输入他们在 2012 年 2 月 15 日又购买了 50 股 APPL 股票,然后在 3 日卖出了 25 股 APPL 股票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

您需要考虑您的要求到底是什么。您需要跟踪每笔交易吗?还是只是每只股票的总数?您希望这些信息持久存在吗?

如果您只是要跟踪每只股票的总数,我建议您使用Dictionary而不是您ArrayList的 s。像这样的东西:

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 回答