C#简单的控制台应用股票交易

时间:2013-03-19 00:21:32

标签: c# arrays console-application user-input finance

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

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

在这种情况下,我希望用户能够继续购买股票或卖出股票,直到他们选择退出申请。该程序应跟踪用户对每个股票代码的总库存量。例如,用户可以在2月12日输入他们购买的100股APPL股票,然后输入他们在2/15/12购买另外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");  
    }
}
}

1 个答案:

答案 0 :(得分:2)

您需要考虑您的要求是什么。您需要跟踪每笔交易吗?或者只是每个股票的总数?您希望此信息持久存在吗?

如果您只想跟踪每个股票的总数,我建议您使用Dictionary而不是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),该类具有股票代码,金额,价格,日期等属性,并将其存储在{ {1}}。