Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.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#_Class_Loops_Object - Fatal编程技术网

简单的C#控制台应用程序,用于获取用户输入并计算每个用户的平均值

简单的C#控制台应用程序,用于获取用户输入并计算每个用户的平均值,c#,class,loops,object,C#,Class,Loops,Object,我需要用C语言编写一个简单的测试控制台应用程序,用于跟踪学校募款活动。下面是预期输出的样子。用户输入提示将放置在循环内,以便程序继续请求输入,直到输入用户等级的“999”。如果输入999值,程序应计算捐款的平均值,并向最大的收款人显示结果和祝贺信息 //创建一个类,该类将实现所需的私有变量。创建类方法以完成所需的功能。在main方法中,实例化一个fundraiser对象,并使用该对象访问私有变量。这个问题有意义吗?你如何创建一个类来完成所有这些任务 Sample output: /*School

我需要用C语言编写一个简单的测试控制台应用程序,用于跟踪学校募款活动。下面是预期输出的样子。用户输入提示将放置在循环内,以便程序继续请求输入,直到输入用户等级的“999”。如果输入999值,程序应计算捐款的平均值,并向最大的收款人显示结果和祝贺信息

//创建一个类,该类将实现所需的私有变量。创建类方法以完成所需的功能。在main方法中,实例化一个fundraiser对象,并使用该对象访问私有变量。这个问题有意义吗?你如何创建一个类来完成所有这些任务

Sample output:
/*School Fund Raiser Tracker Application */

Please enter the grade of the contributor (6, 7 or 8)
(Enter 999  to exit):   6

Please enter the amount of the contribution: 100

Please enter the grade of the contributor (6, 7 or 8)
(Enter 999  to exit):  6

Please enter the amount of the contribution:  200

Please enter the grade of the contributor (6, 7 or 8)
(Enter 999  to exit): 7

Please enter the amount of the contribution:  500

Please enter the grade of the contributor (6, 7 or 8)
(Enter 999  to exit): 7

Please enter the amount of the contribution:  100

Please enter the grade of the contributor (6, 7 or 8)
(Enter 999  to exit):  999

Grade Level       # of Contrib   Total Amount      Average
6                    2                300             150
7                    2                600             300
我的看法是:

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

namespace FundRaiser
{
    public class SchoolFundRaiser
    {
        //public int grade { get; set; }
        //public double contribution { get; set; }
        public double average { get; set; }
        public int numOfContributions { get; set; }


        public void CalculateContribution()
        {
            int grade= 0; double contribution = 0.0;
            double total6 = 0.0, total7 = 0.0, total8 = 0.0, average6 = 0.0, average7 = 0.0, average8 = 0.0;
            int count6 = 0, count7 = 0, count8 = 0;
                while (grade != 999)
                {
                    Console.WriteLine("Please Enter your grade(6, 7, 8). Enter 999 to quit.");
                    grade = Convert.ToInt32(Console.ReadLine());

                    if (grade != 999)
                    {
                        Console.WriteLine("Please Enter the Amount you want to contribute. ");
                        contribution = Convert.ToDouble(Console.ReadLine());
                    }
                    else
                    {
                        Console.WriteLine("Exiting...");
                    }

                    if (grade == 6)
                    {
                        total6 = total6 + contribution;
                        count6 = count6 +1;
                    }

                    if (grade == 7)
                    {
                        total7 = total7 + contribution;
                        count7 = count7 + 1;
                    }

                    else if (grade == 8)
                    {
                        total8 = total8 + contribution;
                        count8= count8 + 1;
                    }



                }

                average6 = total6 / count6;
                average7 = total7 / count7;
                average8 = total8 / count8;

                Console.WriteLine("Grade \t" + "Num of Contributions \t" + "Total Contribution \t" + "Average contribution");
                if (grade == 6)
                {
                    average = average6;
                    numOfContributions = count6;
                    Console.WriteLine(grade + "\t" + numOfContributions + "\t" + total6 + "\t" + average);
                }
                if (grade == 7)
                {
                    average = average7;
                    numOfContributions = count7;
                    Console.WriteLine(grade + "\t" + numOfContributions + "\t" + total7 + "\t" + average);
                }
                else
                {
                    average = average8;
                    numOfContributions = count8;
                    Console.WriteLine(grade + "\t" + numOfContributions + "\t" + total8 + "\t" + average);
                }

        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            SchoolFundRaiser testSchoolFundRaiser = new SchoolFundRaiser();
            testSchoolFundRaiser.CalculateContribution();
        }
    }
}

如果您想让它更优雅,可以使用
字典
和通用
列表
。下面是接受等级和贡献的班级,然后显示每个等级的贡献总数及其平均值

列表中有Count属性用于获取每个等级的贡献数量,还有
Sum()
方法用于获取每个等级的贡献总量,最后还有
Average()
方法用于获取每个等级的平均贡献

contri.Count, contri.Sum(), contri.Average()
在我使用的字典的键-值对中,还有一件事需要注意 一个
列表
,用于显示其值,以便它可以根据用户的需要为每个等级提供尽可能多的贡献,例如:

private Dictionary<string, List<double>> entries = new Dictionary<string, List<double>>();

另一种方法是使用贡献作为对象和字典来按等级保存贡献

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

namespace FundRaiser
{
    class Program
    {
        public class GradeContribution
        {
            public GradeContribution()
            {
                this.Count = 0;
                this.Total = 0.0;
                this.Average = 0.0;
            }

            int grade;

            public int Grade
            {
                get { return grade; }
                set { grade = value; }
            }
            int count;

            public int Count
            {
                get { return count; }
                set { count = value; }
            }
            double total;

            public double Total
            {
                get { return total; }
                set { total = value; }
            }
            double average;

            public double Average
            {
                get { return average; }
                set { average = value; }
            }

        }

        public class SchoolFundRaiser
        {
            Dictionary<int, GradeContribution> contributionReciept;

            public SchoolFundRaiser()
            {
                contributionReciept = new Dictionary<int, GradeContribution>();
            }

            public void CalculateContribution()
            {
                int grade = 0;
                while (grade != 999)
                {
                    Console.WriteLine("Please Enter your grade(6, 7, 8).\n (Enter 999 to quit):");
                    grade = Convert.ToInt32(Console.ReadLine());

                    if (grade != 999)
                    {
                        GetContribution(grade);
                    }
                    else
                    {
                        Console.WriteLine("Exiting...");
                        DisplayContribution();
                    }
                }
            }

            void GetContribution(int grade)
            {
                Console.WriteLine("Please Enter the Amount you want to contribute. ");
                double contribution = Convert.ToDouble(Console.ReadLine());

                if (contributionReciept.ContainsKey(grade))
                {
                    GradeContribution contribute = contributionReciept[grade];
                    contribute.Count++;
                    contribute.Total += contribution;
                    contribute.Average = (contribute.Total / contribute.Count);
                }
                else
                {
                    GradeContribution contribute = new GradeContribution();
                    contribute.Grade = grade;
                    contribute.Count++;
                    contribute.Total += contribution;
                    contribute.Average = (contribute.Total / contribute.Count);
                    contributionReciept.Add(grade,contribute);
                }
            }

            void DisplayContribution()
            {
                var list = contributionReciept.Keys.ToList();
                list.Sort();

                Console.WriteLine("Grade \t" + "Num of Contributions \t" + "Total Contribution \t" + "Average contribution");

                foreach (var grade in list)
                {
                    GradeContribution gc = contributionReciept[grade];
                    Console.WriteLine(gc.Grade + "\t" + gc.Count + "\t" + gc.Total + "\t" + gc.Average);
                }
            }
        }

        static void Main(string[] args)
        {
            SchoolFundRaiser testSchoolFundRaiser = new SchoolFundRaiser();
            testSchoolFundRaiser.CalculateContribution();
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
名称空间筹款人
{
班级计划
{
公共课成绩贡献
{
公共捐款()
{
这个.Count=0;
这个。总计=0.0;
平均值=0.0;
}
国际等级;
公共整数级
{
获取{返回等级;}
设置{grade=value;}
}
整数计数;
公共整数计数
{
获取{返回计数;}
设置{count=value;}
}
双倍总数;
公共双倍总额
{
获取{return total;}
设置{total=value;}
}
双倍平均;
公众双倍平均
{
获取{返回平均值;}
设置{average=value;}
}
}
公营学校筹款活动
{
词典贡献接收;
公立学校筹款人()
{
ContributionReceipt=新字典();
}
公共无效计算分配()
{
int等级=0;
而(等级!=999)
{
Console.WriteLine(“请输入您的成绩(6、7、8)。\n(输入999退出):”;
grade=Convert.ToInt32(Console.ReadLine());
如果(等级!=999)
{
成绩贡献(年级);
}
其他的
{
控制台。写入线(“退出…”);
显示贡献();
}
}
}
无效贡献(整数级)
{
Console.WriteLine(“请输入您想要贡献的金额。”);
double contribution=Convert.ToDouble(Console.ReadLine());
if(捐款接收容器(等级))
{
成绩贡献=贡献接受[成绩];
贡献.Count++;
贡献。总额+=贡献;
contribute.Average=(contribute.Total/contribute.Count);
}
其他的
{
成绩贡献=新成绩贡献();
贡献。等级=等级;
贡献.Count++;
贡献。总额+=贡献;
contribute.Average=(contribute.Total/contribute.Count);
贡献接收添加(等级,贡献);
}
}
void贡献()
{
var list=contributionReceipt.Keys.ToList();
list.Sort();
Console.WriteLine(“等级\t”+“贡献数量\t”+“贡献总量\t”+“平均贡献”);
foreach(列表中的var等级)
{
GradeContribution gc=贡献接收[等级];
控制台写入线(gc.Grade+“\t”+gc.Count+“\t”+gc.Total+“\t”+gc.Average);
}
}
}
静态void Main(字符串[]参数)
{
学校筹款人testSchoolFundRaiser=新学校筹款人();
testSchoolFundRaiser.CalculateAttribute();
}
}
}

您至少试过什么吗?如果是这样,请将其张贴在这里。@Szymon出于某种原因,它选择不显示我的代码。Ctrl+K错误?您的代码看起来很好。问题是什么?我讨厌我设计课堂的方式。我想使用数组而不是所有这些变量。。我如何创建数组来跟踪所有可能等级(6、7或8)的用户输入以及它们各自的贡献,以便稍后使用它们来计算平均值、总数等
 SchoolFundRaising FR = new SchoolFundRaising();
 FR.getContributionsGrades();
 FR.displayContributionsSummary();
    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FundRaiser
{
    class Program
    {
        public class GradeContribution
        {
            public GradeContribution()
            {
                this.Count = 0;
                this.Total = 0.0;
                this.Average = 0.0;
            }

            int grade;

            public int Grade
            {
                get { return grade; }
                set { grade = value; }
            }
            int count;

            public int Count
            {
                get { return count; }
                set { count = value; }
            }
            double total;

            public double Total
            {
                get { return total; }
                set { total = value; }
            }
            double average;

            public double Average
            {
                get { return average; }
                set { average = value; }
            }

        }

        public class SchoolFundRaiser
        {
            Dictionary<int, GradeContribution> contributionReciept;

            public SchoolFundRaiser()
            {
                contributionReciept = new Dictionary<int, GradeContribution>();
            }

            public void CalculateContribution()
            {
                int grade = 0;
                while (grade != 999)
                {
                    Console.WriteLine("Please Enter your grade(6, 7, 8).\n (Enter 999 to quit):");
                    grade = Convert.ToInt32(Console.ReadLine());

                    if (grade != 999)
                    {
                        GetContribution(grade);
                    }
                    else
                    {
                        Console.WriteLine("Exiting...");
                        DisplayContribution();
                    }
                }
            }

            void GetContribution(int grade)
            {
                Console.WriteLine("Please Enter the Amount you want to contribute. ");
                double contribution = Convert.ToDouble(Console.ReadLine());

                if (contributionReciept.ContainsKey(grade))
                {
                    GradeContribution contribute = contributionReciept[grade];
                    contribute.Count++;
                    contribute.Total += contribution;
                    contribute.Average = (contribute.Total / contribute.Count);
                }
                else
                {
                    GradeContribution contribute = new GradeContribution();
                    contribute.Grade = grade;
                    contribute.Count++;
                    contribute.Total += contribution;
                    contribute.Average = (contribute.Total / contribute.Count);
                    contributionReciept.Add(grade,contribute);
                }
            }

            void DisplayContribution()
            {
                var list = contributionReciept.Keys.ToList();
                list.Sort();

                Console.WriteLine("Grade \t" + "Num of Contributions \t" + "Total Contribution \t" + "Average contribution");

                foreach (var grade in list)
                {
                    GradeContribution gc = contributionReciept[grade];
                    Console.WriteLine(gc.Grade + "\t" + gc.Count + "\t" + gc.Total + "\t" + gc.Average);
                }
            }
        }

        static void Main(string[] args)
        {
            SchoolFundRaiser testSchoolFundRaiser = new SchoolFundRaiser();
            testSchoolFundRaiser.CalculateContribution();
        }
    }
}