应用实例四:购物折扣计算器

知识点:应用百分数解决实际问题(折扣、纳税、利息)。
功能:模拟购物场景。输入商品原价,选择折扣率(如“八折”、“九五折”),应用自动计算现价、节省金额。可以添加“满减”规则,对比不同折扣方案,培养学生比较和决策能力。
在这里插入图片描述

// DiscountCalculator.ets
@Entry
@Component
struct DiscountCalculator {
  @State originalPrice: number = 200;
  @State discountRate: number = 0.8; // 80%
  @State currentPrice: number = 160;
  @State savedAmount: number = 40;

  build() {
    Column({ space: 20 }) {
      Text('购物折扣计算器')
        .fontSize(28)

      TextInput({ placeholder: '输入商品原价', text: this.originalPrice.toString() })
        .width('80%')
        .type(InputType.Number)
        .onChange((value) => {
          this.originalPrice = parseFloat(value) || 0;
          this.calculate();
        })

      Text('选择折扣:')
      Flex({ wrap: FlexWrap.Wrap, justifyContent: FlexAlign.Center }) {
        Button('九折').onClick(() => { this.discountRate = 0.9; this.calculate(); }).margin(5)
        Button('八五折').onClick(() => { this.discountRate = 0.85; this.calculate(); }).margin(5)
        Button('八折').onClick(() => { this.discountRate = 0.8; this.calculate(); }).margin(5)
        Button('七折').onClick(() => { this.discountRate = 0.7; this.calculate(); }).margin(5)
      }

      Column({ space: 10 }) {
        Text(`折扣率: ${(this.discountRate * 100).toFixed(0)}%`).fontSize(18)
        Text(`现价: ¥${this.currentPrice.toFixed(2)}`).fontSize(24).fontWeight(FontWeight.Bold).fontColor('#E91E63')
        Text(`节省: ¥${this.savedAmount.toFixed(2)}`).fontSize(20).fontColor('#4CAF50')
      }
      .padding(20)
      .backgroundColor('#FFF3E0')
      .borderRadius(10)
    }
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
    .padding(20)
  }

  calculate() {
    this.currentPrice = this.originalPrice * this.discountRate;
    this.savedAmount = this.originalPrice - this.currentPrice;
  }
}
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐