2015-04-04 56 views
-2

我正在创建一个程序,用于获取不同日期到中心的访问次数信息。我正在使用数组来跟踪这些信息,但我还需要创建一个方法,以最少的访问次数调用当天,然后将其显示在输出中。C# - 使用数组的方法难度很大

class ScienceCentreVisitation 
{ 
    private string centreName; 
    private string city; 
    private decimal ticketPrice; 
    private string[] visitDate; 
    private int[] adultVisitors; 
    private decimal[] totalRevenue; 


    //constructors 
    public ScienceCentreVisitation() 
    { 

    } 

    public ScienceCentreVisitation(string cent) 
    { 
     centreName = cent; 
    } 

    public ScienceCentreVisitation(string cent, string cit, decimal price, string[] date, int[] visit, decimal[] rev) 
    { 
     visitDate = new string[date.Length]; 
     adultVisitors = new int[visit.Length]; 
     totalRevenue = new decimal[rev.Length]; 
     Array.Copy(date, 0, visitDate, 0, date.Length); 
     Array.Copy(visit, 0, adultVisitors, 0, adultVisitors.Length); 
     Array.Copy(rev, 0, totalRevenue, 0, rev.Length); 
     centreName = cent; 
     city = cit; 
     ticketPrice = price; 
    } 

    //properties 
    public string CentreName 
    { 
     get 
     { 
      return centreName; 
     } 
     set 
     { 
      centreName = value; 
     } 
    } 

    public string City 
    { 
     get 
     { 
      return city; 
     } 
     set 
     { 
      city = value; 
     } 
    } 

    public decimal TicketPrice 
    { 
     get 
     { 
      return ticketPrice; 
     } 
     set 
     { 
      ticketPrice = value; 
     } 
    } 

    public string[] VisitDate 
    { 
     get 
     { 
      return visitDate; 
     } 
     set 
     { 
      visitDate = value; 
     } 
    } 

    public int[] AdultVisitors 
    { 
     get 
     { 
      return adultVisitors; 
     } 
     set 
     { 
      adultVisitors = value; 
     } 
    } 

    public decimal[] TotalRevenue 
    { 
     get 
     { 
      return totalRevenue; 
     } 
     set 
     { 
      totalRevenue = value; 
     } 
    } 

    //methods 
    public decimal CalculateTotalRevenue() 
    { 
     decimal totalRev; 

     int cntOfValidEntries; 
     int total = 0; 
     foreach (int c in adultVisitors) 
      total += c; 
     cntOfValidEntries = TestForZeros(); 
     totalRev = (decimal)total/cntOfValidEntries; 
     return totalRev; 
    } 

    public int TestForZeros() 
    { 
     int numberOfTrueVisits = 0; 
     foreach (int cnt in adultVisitors) 
      if (cnt != 0) 
       numberOfTrueVisits++; 
     return numberOfTrueVisits; 
    } 

    public int GetIndexOfLeastVisited() 
    { 
     int minVisIndex = 0; 

     for (int i = 1; i < adultVisitors.Length; i++) 
      if (adultVisitors[i] < adultVisitors[minVisIndex]) 
       minVisIndex = i; 
     return minVisIndex; 
    } 

    public int GetLeastVisited() 
    { 
     return adultVisitors[GetIndexOfLeastVisited()]; 
    } 

    public string GetDateWithLeastVisited() 
    { 
     return visitDate[GetIndexOfLeastVisited()]; 
    } 

    public int GetIndexOfMostRevenue() 
    { 
     int maxRevIndex = 0; 

     for (int i = 1; i < totalRevenue.Length; i++) 
      if (totalRevenue[i] > totalRevenue[maxRevIndex]) 
       maxRevIndex = i; 
     return maxRevIndex; 
    } 

    public decimal GetMostRevenue() 
    { 
     return totalRevenue[GetIndexOfMostRevenue()]; 
    } 

    public string GetDateWithMostRevenue() 
    { 
     return visitDate[GetIndexOfMostRevenue()]; 
    } 

    public override string ToString() 
    { 
     return "Name of Centre: " + centreName + 
       "\nCity: " + city + 
       "\n Price of ticket: " + ticketPrice + 
       "\nDate of Least One-Day Adult Visitors:\t\t" + GetDateWithLeastVisited() + 
       "\nNumber of Least One-Day Adult Visitors:\t\t" + GetLeastVisited() + 
       "\nDate of Most Total Revenue Collected:\t\t" + GetDateWithMostRevenue() + 
       "\nHighest Total Revenue Collected:\t\t" + GetMostRevenue(); 
    } 
} 

其他类:

class ScienceCentreApp 
{ 
    static void Main(string[] args) 
    { 
     string centreName; 
     string city; 
     decimal ticketPrice = 0; 
     int visitorCnt; 
     string[] dArray = new String[5]; 
     int[] adultVisitors = new int[5]; 
     decimal[] totalRevenue = new decimal[5]; 
     char enterMoreData = 'Y'; 
     ScienceCentreVisitation scv; 


     do 
     { 
      visitorCnt = GetData(out centreName, out city, out ticketPrice, dArray, adultVisitors, totalRevenue); 
      scv = new ScienceCentreVisitation(centreName, city, ticketPrice, dArray, adultVisitors, totalRevenue); 
      Console.Clear(); 
      Console.WriteLine(scv); 

      Console.Write("\n\n\n\nDo you want to enter more data - " + 
          "(Enter y or n)? "); 
      if (char.TryParse(Console.ReadLine(), out enterMoreData) == false) 
       Console.WriteLine("Invalid data entered - " + 
            "No recorded for your respones"); 
     } while (enterMoreData == 'y' || enterMoreData == 'y'); 

     Console.ReadKey(); 
    } 

    public static int GetData(out string centreName, out string city, out decimal ticketPrice, string[] dArray, int[] adultVisitors, decimal[] totalRevenue) 
    { 
     int i, 
      loopCnt; 

     Console.Clear(); 
     Console.Write("Name of Centre: "); 
     centreName = Console.ReadLine(); 
     Console.Write("City: "); 
     city = Console.ReadLine(); 
     Console.Write("Ticket Price: "); 
     string inValue = Console.ReadLine(); 
     ticketPrice = Convert.ToDecimal(inValue); 

     Console.Write("How many records for {0}? ", centreName); 
     string inValue1 = Console.ReadLine(); 
     if (int.TryParse(inValue1, out loopCnt) == false) 
      Console.WriteLine("Invalid data entered - " + 
           "0 recorded for number of records"); 
     for (i = 0; i < loopCnt; i++) 
     { 
      Console.Write("\nDate (mm/dd/yyyy): "); 
      dArray[i] = Console.ReadLine(); 
      if (dArray[i] == "") 
      { 
       Console.WriteLine("No date entered - " + 
            "Unknown recorded for visits"); 
       dArray[i] = "Unknown"; 
      } 
      Console.Write("Number of One-Day Adult Visitors: "); 
      inValue1 = Console.ReadLine(); 
      if (int.TryParse(inValue1, out adultVisitors[i]) == false) 
       Console.WriteLine("Invalid data entered - " + 
            "0 recorded for adults visited"); 
     } 
     return i; 
    } 
} 

我有它之前,我做了一些改变,以我的程序工作,但现在它使未来的空白,当我运行它。任何想法为什么?

+1

我认为,如果您发布了大量代码并希望每个人都为您进行调试,则应该上传整个代码。我们可以使用它,运行它,通过Visual Studio进行调试,而不是阅读大量代码和调试。这将为每个人节省大量的时间 – Gintama 2015-04-04 17:38:57

回答