渲染风格:
6. 自测题目
题目1:成绩统计工具(覆盖:变量与数据类型、函数、条件/循环语句)
覆盖知识点
ArkTS变量定义与类型注解、函数定义/调用、for循环、if-else条件判断、数组操作
需求
- 定义一个数字类型数组
scores: number[],手动初始化3个学生成绩(如[85, 92, 58]); - 编写函数
calcScoreStats(scores: number[]): {}:- 用
for循环计算成绩总和; - 基于总和计算平均分(保留1位小数);
- 用
if-else判断平均分等级(≥90:"优秀";80-89:"良好";60-79:"及格";<60:"不及格");
- 用
- 调用函数并在控制台打印结果(格式:
总和:235,平均分:78.3,等级:及格)。
参考代码
// 先定义返回类型接口
interface ScoreStats {
sum: number;
avg: number;
level: string;
}
// 定义成绩数组(变量与数据类型)
let scores: number[] = [85, 92, 58];
// 定义统计函数
function calcScoreStats(scores: number[]): ScoreStats {
let sum: number = 0;
// for循环计算总和
for (let i = 0; i < scores.length; i++) {
sum += scores[i];
}
// 计算平均分并保留1位小数
let avg: number = Number((sum / scores.length).toFixed(1));
let level: string = "";
// 条件判断等级
if (avg >= 90) {
level = "优秀";
} else if (avg >= 80) {
level = "良好";
} else if (avg >= 60) {
level = "及格";
} else {
level = "不及格";
}
return { sum, avg, level };
}
// 调用函数并打印结果
const result = calcScoreStats(scores);
console.log(`总和:${result.sum},平均分:${result.avg},等级:${result.level}`);
题目2:商品信息模型(覆盖:类的定义、接口实现、数据类型)
覆盖知识点
ArkTS接口定义、类的实现、构造函数、方法重写、类型约束
需求
- 定义接口
IGoods,约束商品的属性和方法:- 属性:
id: number(商品ID)、name: string(商品名称)、price: number(价格); - 方法:
getDesc(): string(返回商品描述字符串);
- 属性:
- 定义类
Goods实现IGoods接口:- 构造函数接收
id、name、price初始化属性; - 实现
getDesc()方法,返回格式:"商品ID:1,名称:华为手机,价格:3999元";
- 构造函数接收
- 实例化2个
Goods对象,调用getDesc()方法并在控制台打印结果。
参考代码
// 定义商品接口
interface IGoods {
id: number;
name: string;
price: number;
getDesc(): string;
}
// 定义类实现接口
class Goods implements IGoods {
id: number;
name: string;
price: number;
// 构造函数初始化属性
constructor(id: number, name: string, price: number) {
this.id = id;
this.name = name;
this.price = price;
}
// 实现接口的方法
getDesc(): string {
return `商品ID:${this.id},名称:${this.name},价格:${this.price}元`;
}
}
// 实例化对象并调用方法
const phone = new Goods(1, "华为手机", 3999);
const headphone = new Goods(2, "蓝牙耳机", 299);
console.log(phone.getDesc()); // 输出:商品ID:1,名称:华为手机,价格:3999元
console.log(headphone.getDesc()); // 输出:商品ID:2,名称:蓝牙耳机,价格:299元
题目3:模块化复用(覆盖:模块导入导出)
覆盖知识点
ArkTS模块导出(export)、导入(import)、模块间依赖调用
需求
- 新建2个文件:
utils/CalcUtil.ets:将题目1的calcScoreStats函数移入,并用export暴露;model/GoodsModel.ets:将题目2的IGoods接口、Goods类移入,并用export暴露;
- 新建主文件
main.ets,通过import导入上述函数、接口、类:- 调用
calcScoreStats处理新的成绩数组[78, 88, 95]; - 实例化1个新的
Goods对象(如ID=3,名称=平板,价格=2499);
- 调用
- 在控制台打印所有结果,验证模块化调用是否正常。
参考代码
1. utils/CalcUtil.ets(导出函数)
// 先定义返回类型接口
export interface ScoreStats {
sum: number;
avg: number;
level: string;
}
// 定义统计函数
export function calcScoreStats(scores: number[]): ScoreStats {
let sum: number = 0;
// for循环计算总和
for (let i = 0; i < scores.length; i++) {
sum += scores[i];
}
// 计算平均分并保留1位小数
let avg: number = Number((sum / scores.length).toFixed(1));
let level: string = "";
// 条件判断等级
if (avg >= 90) {
level = "优秀";
} else if (avg >= 80) {
level = "良好";
} else if (avg >= 60) {
level = "及格";
} else {
level = "不及格";
}
return { sum, avg, level };
}
2. model/GoodsModel.ets(导出接口和类)
// 导出接口
export interface IGoods {
id: number;
name: string;
price: number;
getDesc(): string;
}
// 导出类
export class Goods implements IGoods {
id: number;
name: string;
price: number;
constructor(id: number, name: string, price: number) {
this.id = id;
this.name = name;
this.price = price;
}
getDesc(): string {
return `商品ID:${this.id},名称:${this.name},价格:${this.price}元`;
}
}
3. index.ets(导入并调用)
import { Goods, IGoods } from '../model/GoodsModel';
import { calcScoreStats } from '../utils/CalcUtil';
// 调用成绩统计函数
const newScores: number[] = [78, 88, 95];
const scoreResult = calcScoreStats(newScores);
console.log("新成绩统计结果:", JSON.stringify(scoreResult));
// 实例化商品对象
const pad: IGoods = new Goods(3, "平板", 2499);
console.log("新商品信息:", pad.getDesc());