家庭作业给予分层棒球运动员的薪水。创建一个程序,根据以下业务规则计算玩家将获得的工资。请务必参考上面列出的一般编程指南。为您的项目命名:TieredPlayerSalaryViaIF - 您的姓名
第1级:在一个赛季的1到49次点击中,玩家每次击中每次击中获得17,500美元。 第2层:对于50到99次点击,玩家每次击中每次击中获得20,000美元。 第3层:对于100到149次点击,玩家每次点击获得22,500美元。 第4层:对于150次或更多次点击,玩家每次点击都会获得25,000美元的点击量。 然后考虑All Star和MVP(最有价值球员)奖项:输入:让用户输入玩家的名字,命中数,一个复选框以指示他们是否是全明星,以及第二个复选框以指示他们是否是MVP。然后使用“计算”按钮处理数据。仅当用户输入玩家姓名(输入的任何非空格字符构成输入名称)时才处理数据。仅在用户输入有效命中数时才处理数据。有效命中计数是一个大于零的整数,但小于或等于300.以编程方式验证命中计数 - 不要使用屏蔽文本框。使用我们覆盖的验证方法而不是try..catch来执行验证。添加“清除”按钮以清除数据输入字段,复选框和计算。
处理/输出:根据玩家获得的等级计算玩家的收入,并显示计算的工资和等级数。使用if()...决策结构来确定Tier数和每个命中数$(不要使用开关(..case ...)决策结构)。根据All Star / MVP复选框设置确定任何额外工资金额。 除了允许输入当前玩家名称,点击详细信息并根据上述计算当前玩家的工资之外,还在窗口上显示单独的摘要信息集,显示领先玩家的姓名,命中数,工资和等级数对于到目前为止已经处理过所有玩家最多点击次数的玩家,因为Window已打开或者上次单击Clear按钮。你只需要跟踪一个领先的玩家,而不是所有进入的玩家。如果有一个或多个关系,那么输入命中率最高的第一个玩家将成为领导者。
this is the code i have but the if statements give errors
应该是根据点击次数和玩家名称成为领导者的分层棒球运动员薪水并显示球员薪水
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;
namespace TieredPlayerSalaryViaIF___Ionut_Cozma
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string Playername;
int Hits = 0;
Boolean MVP = false;
Boolean AllStart = false;
int Tier = 0;
int HitSalarymulti = 0;
double bonuspercentage = 1;
double ActualSalary = 0;
string LeaderName;
int LeaderHits = 0;
double LeaderSalary;
int LeaderTier;
private void Calcbtn_Click(object sender, EventArgs e)
{
Playername = nameTextbox.Text;
Hits = int.Parse(HitsTextbox.Text);
if (Mvpcheckbox.Checked)
{
MVP = true;
}
if (AllStartcheckbox.Checked)
{
AllStart = true;
}
// this part wont run even tough i think i put the hits and the greater than and less then in the right context ??
and the if statement if its in the right context
if (Hits <= 49 + Hits => 1)
{
Tier = 1;
Salarymulti = 17,500;
}
else if (Hits >= 50 + Hits <= 99)
{
Tier = 2;
Salarymulti = 20,000;
}
else if (Hits <= 100 + Hits => 149 )
{
Tier = 3;
Salarymulti = 22,500;
}
else if (Hits <= 150 Hits )
{
Tier = 4;
Salarymulti = 25,000
}
else (Hits <= 150 + Hits => )
else MessageBox.Show("insert hits entry");
return;
if (MVP || AllStart)
bonuspercentage = 1.2;
{
bonuspercentage = 1.25;
}
ActualSalary = Hits * Salarymulti;
bonuspercentage
Salarylbl.Text = ActualSalary.Tostring("C");
Tierlbl.Text = Tier.ToString("C");
if (Hits >LeaderHits)
{
Leadernamelbl.Text = Playername;
Leaderhitslbl.Text = Hits.ToString();
leadersalarylbl.Text = ActualSalary.ToString();
LeaderTier.Text = Tier.ToString();
}
Playername = PlayerNameUsvText.Text;
if (PlayerName is null 0 Whitesapce)
{
MessageBox.Show(" Error message improper name");
return;
}
// need help with this part if i wrote it right
switch (Tier)
{
case 1:
Salarymulti = 17,500;
case 2:
Salarymulti = 20,000;
case: 3
Salarymulti = 22,500;
default 4:
Salarymulti = 25,000;
}
// the code wont run right because the case and the if statements dont seem to be made correct i tried research online but i cant really find close code to mine
}
private void clrbtn_Click(object sender, EventArgs e)
{
}
}
}
[the error part of the code ][2]
答案 0 :(得分:2)
虽然我不确定你在学习中的位置。这是您理解面向对象编程的价值的好时机。您的表单无论外观多么好,都与您正在使用的对象或一个属性应如何与另一个属性交互的逻辑无关。在这种情况下,一个BaseBall播放器。您可以自己创建一个类似于以下内容的对象:
public class BallPlayer
{
public string Name { get; set; }
public int NumberOfHits { get; set; }
public bool IsMvp { get; set; }
public bool IsAllStar { get; set; }
public double SalaryPerHit
{
get
{
var salary = 10.0;
if( NumberOfHits < 150 )
salary = 15;
else if( NumberOfHits < 200 )
salary = 20;
else if( NumberofHits < 250 )
salary = 25;
return salary;
}
}
public double BonusMultiplier
{
get
{
var multiplier = 1.0;
if( IsMvp ) multiplier = 1.1;
else if( IsAllStar ) multiplier = 1.2;
return multiplier;
}
}
public double CalculateSalary() =>
SalaryPerHit * BonusMultiplier * NumberOfHits;
}
在表单中,您将创建BallPlayer
的实例,更改后的控件将更新BallPlayer
的关联属性。请注意,有些值已被故意更改,因为这有助于您更好地了解如何改进代码。