C# 用if else 进行成绩分组,0到60为不合格,60到75为合格,75到85为良好,85到100为优秀
时间: 2024-09-07 08:02:49 浏览: 55
在C#中,可以使用if-else条件判断语句来根据成绩将学生分为不同的等级。根据您提供的分组标准,可以编写如下代码示例:
```csharp
int score; // 假设已经有一个成绩变量score
string grade;
if (score < 0 || score > 100) {
// 成绩不在0到100的正常范围内
grade = "成绩无效";
} else if (score < 60) {
// 0到60分为不合格
grade = "不合格";
} else if (score < 75) {
// 60到75分为合格
grade = "合格";
} else if (score < 85) {
// 75到85分为良好
grade = "良好";
} else {
// 85到100分为优秀
grade = "优秀";
}
```
在这段代码中,首先判断成绩是否在有效范围内(0到100之间)。如果不是,输出“成绩无效”。接着通过一系列的if-else语句,根据不同的成绩区间,将成绩划分到“不合格”、“合格”、“良好”或“优秀”四个等级中,并将相应的等级存储在grade变量中。
相关问题
C#窗体程序编写一个绘图程序,要求随机产生 10 个成绩,生成散点图并统计优良率、合格率与不合格率。
好的,这是一个比较复杂的问题,需要分几个步骤来完成。
首先,我们需要在窗体中添加一个按钮和一个画布控件,用于生成散点图和展示统计结果。
然后,在按钮的点击事件中,我们可以使用 Random 类来随机生成 10 个成绩,并将这些成绩绘制到画布上。代码如下:
```csharp
private void button1_Click(object sender, EventArgs e)
{
Random random = new Random();
int[] scores = new int[10];
for (int i = 0; i < 10; i++)
{
scores[i] = random.Next(0, 101);
int x = i * 30 + 30; // 计算点的横坐标
int y = this.canvas.Height - scores[i]; // 计算点的纵坐标(因为坐标轴的原点在左上角)
this.canvas.CreateGraphics().DrawEllipse(Pens.Blue, x, y, 5, 5); // 绘制点
}
}
```
接下来,我们需要统计优良率、合格率和不合格率。我们可以定义三个变量用于统计,然后遍历成绩数组,根据不同的成绩范围进行累加。代码如下:
```csharp
int excellentCount = 0; // 优秀数
int goodCount = 0; // 良好数
int passCount = 0; // 合格数
int failCount = 0; // 不合格数
for (int i = 0; i < 10; i++)
{
if (scores[i] >= 90)
{
excellentCount++;
}
else if (scores[i] >= 80)
{
goodCount++;
}
else if (scores[i] >= 60)
{
passCount++;
}
else
{
failCount++;
}
}
```
最后,我们将统计结果展示在窗体上。我们可以使用 Label 控件来显示每个等级的人数和比例。代码如下:
```csharp
int totalCount = excellentCount + goodCount + passCount + failCount; // 总人数
this.excellentLabel.Text = "优秀:" + excellentCount + "(" + (excellentCount * 100.0 / totalCount).ToString("0.00") + "%)";
this.goodLabel.Text = "良好:" + goodCount + "(" + (goodCount * 100.0 / totalCount).ToString("0.00") + "%)";
this.passLabel.Text = "合格:" + passCount + "(" + (passCount * 100.0 / totalCount).ToString("0.00") + "%)";
this.failLabel.Text = "不合格:" + failCount + "(" + (failCount * 100.0 / totalCount).ToString("0.00") + "%)";
```
最终的窗体界面可能会像这样:
![绘图程序界面](https://img-blog.csdnimg.cn/20211205180952779.png)
完整的代码如下:
c#将第一次测试数据(测试总数,ok数,ng数,合格率)保存到本地,下此开启软件,数据显示到相应的组件中,继续测试,数据继续增加,关闭软件时,测试数据更新为第二次的测试数据,再次开启软件,显示更新后的数据,以此类推
要实现这个功能,你可以考虑使用文件存储来保存测试数据。具体实现步骤如下:
1. 在程序启动时,读取保存测试数据的文件,如果文件不存在则创建一个新的文件。
2. 在程序运行过程中,每次进行测试时,更新测试数据的记录。
3. 在程序关闭时,将最新的测试数据保存到文件中。
4. 在程序下次启动时,读取保存的测试数据并显示到相应的组件中。
下面是一个示例代码,供你参考:
```csharp
using System.IO;
using System.Windows.Forms;
namespace TestApp
{
public partial class MainForm : Form
{
private int _totalTests;
private int _okTests;
private int _ngTests;
private double _passRate;
private const string DataFileName = "test_data.txt";
public MainForm()
{
InitializeComponent();
// 读取保存的测试数据
LoadTestData();
// 更新显示
UpdateDisplay();
}
private void btnTest_Click(object sender, EventArgs e)
{
// 进行测试
_totalTests++;
if (IsTestOk())
{
_okTests++;
}
else
{
_ngTests++;
}
_passRate = (double)_okTests / _totalTests;
// 更新显示
UpdateDisplay();
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
// 保存测试数据
SaveTestData();
}
private void LoadTestData()
{
if (File.Exists(DataFileName))
{
string[] lines = File.ReadAllLines(DataFileName);
if (lines.Length == 4)
{
int.TryParse(lines[0], out _totalTests);
int.TryParse(lines[1], out _okTests);
int.TryParse(lines[2], out _ngTests);
double.TryParse(lines[3], out _passRate);
}
}
}
private void SaveTestData()
{
string[] lines = { _totalTests.ToString(), _okTests.ToString(), _ngTests.ToString(), _passRate.ToString() };
File.WriteAllLines(DataFileName, lines);
}
private void UpdateDisplay()
{
txtTotalTests.Text = _totalTests.ToString();
txtOkTests.Text = _okTests.ToString();
txtNgTests.Text = _ngTests.ToString();
txtPassRate.Text = _passRate.ToString("P");
}
private bool IsTestOk()
{
// 进行测试,返回测试结果
return true;
}
}
}
```
阅读全文