Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算总销售额和平均销售额_C#_Arrays_Variable Assignment - Fatal编程技术网

C# 计算总销售额和平均销售额

C# 计算总销售额和平均销售额,c#,arrays,variable-assignment,C#,Arrays,Variable Assignment,任务如下: 总销售额 使用名为Sales.txt的附加文件。创建一个应用程序 将文件内容读入双精度或十进制数组 在ListBox控件中显示数组的内容 计算阵列值、平均销售额、最大销售额和最小销售额的总和 显示总销售额、平均销售额、最高销售额和最低销售额 表单应类似于以下内容: 如何通过键入相应的代码,使数据显示图像的销售部分的总计/平均值/高/低正确显示 我想自己做这件事,所以如果你能提供一个可能与我正在做的事情相关的例子,那将非常有帮助 以下是我到目前为止能够键入的内容: using S

任务如下:

总销售额

使用名为Sales.txt的附加文件。创建一个应用程序

  • 将文件内容读入双精度或十进制数组
  • 在ListBox控件中显示数组的内容
  • 计算阵列值、平均销售额、最大销售额和最小销售额的总和
  • 显示总销售额、平均销售额、最高销售额和最低销售额
  • 表单应类似于以下内容:

如何通过键入相应的代码,使数据显示图像的销售部分的
总计
/
平均值
/
/
正确显示

我想自己做这件事,所以如果你能提供一个可能与我正在做的事情相关的例子,那将非常有帮助

以下是我到目前为止能够键入的内容:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace Total_Sales
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void displayButton_Click(object sender, EventArgs e)
        {
            //declaring array
            const int SIZE = 100;
            decimal[] sales = new decimal[SIZE];

            //varible to hold amount stored in array
            int count = 0;

            decimal additionHolder = 0;

            //declaring streamreader
            StreamReader inputFile;

            //opening the sales file
            inputFile = File.OpenText("../../Sales.txt");

            try
            {
                //pull contents from file into array while there is still items
                //to pull and the array isnt full
                while (!inputFile.EndOfStream && count < sales.Length)
                {
                    sales[count] = decimal.Parse(inputFile.ReadLine());
                    count++;
                }
                //close the file
                inputFile.Close();

                //display contents in listbox
                for (int index = 0; index < count; index++)
                {
                    ListBox.Items.Add(sales[index]);
                }

                
                //add all the values
                for (int index = 0; index < sales.Length; index++)
                {
                    additionHolder += sales[index];
                }
                
                
            }

             
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Windows.Forms;
使用System.IO;
销售总额
{
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
}
私有无效显示按钮\u单击(对象发送者,事件参数e)
{
//声明数组
常数int SIZE=100;
十进制[]销售额=新的十进制[大小];
//可变以保存数组中存储的数量
整数计数=0;
十进制加法器=0;
//声明流阅读器
StreamReader输入文件;
//打开销售文件
inputFile=File.OpenText(“../../Sales.txt”);
尝试
{
//当仍有项目时,将内容从文件拉入数组
//拉动时,阵列未满
而(!inputFile.EndOfStream&&count
从文件中读取值后,只需使用Linq方法并设置文本框控件的文本属性

var total = sales.Sum();
var avg = sales.Average();
var min = sales.Min();
var max = sales.Max();

totalTextBox.Text = total.ToString(); //example for TextBox named totalTextBox
请记住使用添加:)


这里有两个解决方案。第一个使用
数组
,第二个使用
列表
。在这两个示例中,我假定总销售额、平均销售额、最小销售额和最大销售额的文本框分别称为
TotalSales
AverageSales
MinSales
MaxSales

private void displayButton_Click(object sender, EventArgs e)
{
    const int SIZE = 100;
    decimal[] sales = new decimal[SIZE];

    int count = 0;
    decimal totalSales, averageSales, minSales, maxSales;

    StreamReader inputFile;
    inputFile = File.OpenText("../../Sales.txt");

    try
    {
        while (!inputFile.EndOfStream && count < sales.Length)
        {
            sales[count] = decimal.Parse(inputFile.ReadLine());
            minSales = count == 0 ? sales[count] : Math.Min(minSales, sales[count]);
            maxSales = count == 0 ? sales[count] : Math.Max(maxSales, sales[count]);
            totalSales += sales[count];
            ListBox.Items.Add(sales[count]);
            count++;
        }

        inputFile.Close();
        averageSales = totalSales / sales.Length;  

        TotalSales.Text = totalSales;
        AverageSales.Text = averageSale;
        MinSales.Text = minSales;
        MaxSales.Text = maxSales;
    }              
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
正如您所看到的,这段代码更加简洁


顺便说一句,我在没有Visual Studio的情况下编写了这段代码,因此它可能包含一些打字错误。

你可以使用
列表来代替
数组,你应该使用
Linq
来计算总计、最小值等。我会尝试一下,谢谢。我的教科书没有任何关于如何使用Linq来计算C中的总计的内容。使用
linq
,如果我没有错,您可以得到,例如,sum
var total=sales.sum()(不确定它是否正确用于vb.net中的
c
,I prog.)。。。最小值(
sales.Min();
)和平均值(
sales.average())相同。。。等等。那么练习的目的是什么?学习C#?学习winforms?您是否仅限于课本中的材料?如果您不能使用
Linq
,例如
sales.Average()
,您可以在阅读行的同时跟踪最小和最大销售额,并自己计算平均值。我完成了。感谢大家的反馈,谢谢大家的意见。是的,我喜欢它的简洁。
private void displayButton_Click(object sender, EventArgs e)
{
    const int SIZE = 100;
    decimal[] sales = new decimal[SIZE];

    int count = 0;
    decimal totalSales, averageSales, minSales, maxSales;

    StreamReader inputFile;
    inputFile = File.OpenText("../../Sales.txt");

    try
    {
        while (!inputFile.EndOfStream && count < sales.Length)
        {
            sales[count] = decimal.Parse(inputFile.ReadLine());
            minSales = count == 0 ? sales[count] : Math.Min(minSales, sales[count]);
            maxSales = count == 0 ? sales[count] : Math.Max(maxSales, sales[count]);
            totalSales += sales[count];
            ListBox.Items.Add(sales[count]);
            count++;
        }

        inputFile.Close();
        averageSales = totalSales / sales.Length;  

        TotalSales.Text = totalSales;
        AverageSales.Text = averageSale;
        MinSales.Text = minSales;
        MaxSales.Text = maxSales;
    }              
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
private void displayButton_Click(object sender, EventArgs e)
{
    List<decimal> sales = new List<decimal>(); // notice: no size limitation

    StreamReader inputFile;
    inputFile = File.OpenText("../../Sales.txt");

    try
    {
        while (!inputFile.EndOfStream)
        {
            var sale = decimal.Parse(inputFile.ReadLine()); 
            sales.Add(sale);
            ListBox.Items.Add(sale);
        }

        inputFile.Close();

        TotalSales.Text = sales.Sum();
        AverageSales.Text = sales.Average();
        MinSales.Text = sales.Min();
        MaxSales.Text = sales.Max();
    }              
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}