You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript账单生成程序开发:含10%折扣规则实现需求

完善后的JavaScript实现方案

原代码存在的问题

  • 不符合需求逻辑:直接要求输入账单金额,而非购买数量(需求规定单价固定100元,总价需由数量计算得出)
  • 数据类型处理不当:手机号转换为Number会丢失开头的0,应保留字符串类型
  • 缺少输入验证:未对姓名、手机号、购买数量的合法性做校验
  • 输出信息不完整:未展示顾客姓名、手机号、购买数量等关键信息,格式不够清晰

修正后的代码

const billMaker = () => {
  // 获取用户输入并做基础验证
  let customerName = prompt("请输入顾客姓名");
  while (!customerName || customerName.trim() === "") {
    customerName = prompt("姓名不能为空,请重新输入顾客姓名");
  }

  let phoneNumber = prompt("请输入顾客手机号");
  // 简单的手机号格式验证(11位数字)
  const phoneRegex = /^1[3-9]\d{9}$/;
  while (!phoneRegex.test(phoneNumber)) {
    phoneNumber = prompt("手机号格式不正确,请输入11位有效手机号");
  }

  let purchaseQuantity = prompt("请输入购买数量");
  purchaseQuantity = parseInt(purchaseQuantity);
  while (isNaN(purchaseQuantity) || purchaseQuantity <= 0) {
    purchaseQuantity = parseInt(prompt("数量必须是正整数,请重新输入购买数量"));
  }

  // 计算原价和最终应付金额
  const unitPrice = 100;
  const originalTotal = purchaseQuantity * unitPrice;
  let finalAmount = originalTotal;
  let discountInfo = "";

  if (originalTotal > 1000) {
    finalAmount = originalTotal * 0.9;
    discountInfo = "(享受10%折扣)";
  }

  // 整理输出信息
  return `
顾客姓名:${customerName}
手机号:${phoneNumber}
购买数量:${purchaseQuantity}件
原价:${originalTotal}元
最终应付金额:${finalAmount.toFixed(2)}元 ${discountInfo}
${customerName},欢迎再次光临!
  `.trim();
};

console.log(billMaker());

关键修改说明

  • 贴合需求逻辑:改为询问购买数量,通过数量×100元计算原价,完全匹配需求设定
  • 输入验证:
    • 确保姓名非空
    • 用正则验证手机号为11位有效格式
    • 确保购买数量是正整数
  • 数据类型优化:手机号保留字符串类型,避免开头0丢失
  • 输出信息优化:清晰展示所有关键信息,用toFixed(2)保证金额保留两位小数,折扣信息明确
  • 代码可读性:变量名采用驼峰命名法,拆分逻辑步骤,添加必要注释

内容的提问来源于stack exchange,提问作者Pradyot Sinha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 20:35:24