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