|
|
# 做决策:学生成绩处理器
|
|
|
|
|
|
## 学习目标
|
|
|
|
|
|
在此作业中,您将通过构建一个处理来自不同评分系统的学生成绩的程序来练习本课的决策概念。您将使用 `if...else` 语句、比较运算符和逻辑运算符来确定哪些学生通过了课程。
|
|
|
|
|
|
## 挑战
|
|
|
|
|
|
您供职的学校最近与另一所学校合并。现在,您需要处理来自两种完全不同评分系统的学生成绩,并确定哪些学生及格。这是练习条件逻辑的绝佳机会!
|
|
|
|
|
|
### 理解评分系统
|
|
|
|
|
|
#### 第一评分系统(数字)
|
|
|
- 成绩以 1-5 数字表示
|
|
|
- **及格分数**:3 及以上(3、4 或 5)
|
|
|
- **不及格分数**:低于 3(1 或 2)
|
|
|
|
|
|
#### 第二评分系统(字母等级)
|
|
|
- 成绩使用字母:`A`、`A-`、`B`、`B-`、`C`、`C-`
|
|
|
- **及格等级**:`A`、`A-`、`B`、`B-`、`C`、`C-`(列出的所有等级均为及格)
|
|
|
- **注意**:该系统不包含像 `D` 或 `F` 这样的不及格等级
|
|
|
|
|
|
### 您的任务
|
|
|
|
|
|
给定以下数组 `allStudents`,表示所有学生及其成绩,构建一个新数组 `studentsWhoPass`,包含根据各自评分系统及格的所有学生。
|
|
|
|
|
|
```javascript
|
|
|
let allStudents = [
|
|
|
'A', // 等级 - 及格
|
|
|
'B-', // 等级 - 及格
|
|
|
1, // 数值等级 - 不及格
|
|
|
4, // 数值等级 - 及格
|
|
|
5, // 数值等级 - 及格
|
|
|
2 // 数值等级 - 不及格
|
|
|
];
|
|
|
|
|
|
let studentsWhoPass = [];
|
|
|
```
|
|
|
|
|
|
### 逐步方法
|
|
|
|
|
|
1. **设置循环** 遍历 `allStudents` 数组中的每个成绩
|
|
|
2. **检查成绩类型**(是数字还是字符串?)
|
|
|
3. **应用相应的评分系统规则**:
|
|
|
- 数字:检查成绩是否 >= 3
|
|
|
- 字符串:检查是否为有效及格字母等级之一
|
|
|
4. **将及格成绩** 添加到 `studentsWhoPass` 数组中
|
|
|
|
|
|
### 有用的代码技巧
|
|
|
|
|
|
使用本课的这些 JavaScript 概念:
|
|
|
|
|
|
- **typeof 运算符**:`typeof grade === 'number'` 用于检查是否为数字成绩
|
|
|
- **比较运算符**:`>=` 用于比较数字成绩
|
|
|
- **逻辑运算符**:`||` 用于检查多个字母等级条件
|
|
|
- **if...else 语句**:处理不同的评分系统
|
|
|
- **数组方法**:`.push()` 将及格成绩添加到新数组
|
|
|
|
|
|
### 预期输出
|
|
|
|
|
|
运行程序时,`studentsWhoPass` 应包含:`['A', 'B-', 4, 5]`
|
|
|
|
|
|
**这些成绩及格原因:**
|
|
|
- `'A'` 和 `'B-'` 是有效的字母等级(此系统的所有字母等级均及格)
|
|
|
- `4` 和 `5` 是 >= 3 的数字成绩
|
|
|
- `1` 和 `2` 不及格,因为它们是 < 3 的数字成绩
|
|
|
|
|
|
## 测试您的解决方案
|
|
|
|
|
|
用不同场景测试您的代码:
|
|
|
|
|
|
```javascript
|
|
|
// 使用不同的成绩组合进行测试
|
|
|
let testGrades1 = ['A-', 3, 'C', 1, 'B'];
|
|
|
let testGrades2 = [5, 'A', 2, 'C-', 4];
|
|
|
|
|
|
// 你的解决方案应适用于任何有效成绩的组合
|
|
|
```
|
|
|
|
|
|
## 额外挑战
|
|
|
|
|
|
完成基本作业后,尝试以下扩展:
|
|
|
|
|
|
1. **添加验证**:检查无效成绩(如负数或无效字母)
|
|
|
2. **统计计数**:计算通过和未通过的学生数量
|
|
|
3. **成绩转换**:将所有成绩转换为单一数字系统(A=5,B=4,C=3 等)
|
|
|
|
|
|
## 评分标准
|
|
|
|
|
|
| 标准 | 优秀 (4) | 良好 (3) | 进行中 (2) | 初学 (1) |
|
|
|
|----------|---------------|----------------|----------------|---------------|
|
|
|
| **功能性** | 程序正确识别来自两个系统的所有及格成绩 | 程序有轻微问题或边缘情况 | 程序部分正常,但存在逻辑错误 | 程序严重错误或无法运行 |
|
|
|
| **代码结构** | 代码整洁、组织有序且使用适当的 if...else 逻辑 | 结构良好,条件语句恰当 | 结构可接受,组织上有些问题 | 结构差,逻辑难以理解 |
|
|
|
| **概念应用** | 有效使用比较运算符、逻辑运算符和条件语句 | 很好地使用课程概念,有少许缺漏 | 有部分使用课程概念但缺少关键元素 | 课程概念应用有限 |
|
|
|
| **问题解决** | 清晰理解问题,方案优雅 | 解决方案良好,逻辑扎实 | 能解决,但有些混淆 | 方案不清晰,未展现理解 |
|
|
|
|
|
|
## 提交指南
|
|
|
|
|
|
1. **充分测试代码**,使用提供的示例
|
|
|
2. **添加注释**,解释您的逻辑,尤其是条件语句
|
|
|
3. **验证输出** 是否符合预期:`['A', 'B-', 4, 5]`
|
|
|
4. **考虑边缘情况**,如空数组或意外的数据类型
|
|
|
|
|
|
> 💡 **专业提示**:从简单开始!先实现基本功能,然后添加更复杂的特性。记住,目标是用本课学到的工具练习决策逻辑。
|
|
|
|
|
|
---
|
|
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
|
**免责声明**:
|
|
|
本文档使用AI翻译服务 [Co-op Translator](https://github.com/Azure/co-op-translator) 进行翻译。虽然我们努力保证准确性,但请注意自动翻译可能存在错误或不准确之处。原始文档的母语版本应被视为权威来源。对于关键信息,建议使用专业人工翻译。我们不对因使用本翻译而产生的任何误解或误释承担责任。
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |