YYPOST群发软件 发表于 2025-12-31 08:35:17

JS巧妙地组合使用各种条件语句

JS巧妙地组合使用各种条件语句




/**
* 复杂条件语句示例 - 员工绩效评估和奖金计算系统
* 展示 ES5 兼容的复杂条件逻辑实现
* 适用于 AIWROK IDE 和 Rhino 引擎环境
*🍎交流QQ群711841924群一,苹果内测群,528816639
*/

// 员工信息构造函数(ES5 兼容)
function Employee(name, department, position, yearsOfService) {
    this.name = name;
    this.department = department;
    this.position = position;
    this.yearsOfService = yearsOfService;
    this.performanceScore = 0;
    this.bonusRate = 0;
    this.baseSalary = 0;
}

// 绩效评估系统
var PerformanceEvaluator = {
   
    // 计算基础绩效分数
    calculateBaseScore: function(employee) {
      var score = 0;
      
      // 使用 switch 语句根据部门设置基础分数
      switch (employee.department) {
            case "技术部":
                score = 85;
                break;
            case "销售部":
                score = 80;
                break;
            case "市场部":
                score = 82;
                break;
            case "人事部":
                score = 78;
                break;
            default:
                score = 75;
      }
      
      return score;
    },
   
    // 根据职位调整分数
    adjustScoreByPosition: function(baseScore, position) {
      var adjustedScore = baseScore;
      
      // 使用 if...else if...else 进行多条件判断
      if (position === "经理") {
            adjustedScore += 10;
      } else if (position === "主管") {
            adjustedScore += 7;
      } else if (position === "高级工程师") {
            adjustedScore += 5;
      } else if (position === "中级工程师") {
            adjustedScore += 3;
      } else {
            adjustedScore += 1;
      }
      
      return adjustedScore;
    },
   
    // 根据工龄调整分数
    adjustScoreByYears: function(score, years) {
      var finalScore = score;
      
      // 复杂的嵌套条件判断
      if (years >= 10) {
            if (years >= 15) {
                finalScore += 8;
            } else {
                finalScore += 6;
            }
      } else if (years >= 5) {
            if (years >= 8) {
                finalScore += 4;
            } else {
                finalScore += 2;
            }
      } else if (years >= 2) {
            finalScore += 1;
      }
      
      return finalScore;
    },
   
    // 综合评估员工绩效
    evaluateEmployee: function(employee) {
      var baseScore = this.calculateBaseScore(employee);
      var positionAdjusted = this.adjustScoreByPosition(baseScore, employee.position);
      var finalScore = this.adjustScoreByYears(positionAdjusted, employee.yearsOfService);
      
      // 确保分数在合理范围内
      if (finalScore > 100) {
            finalScore = 100;
      } else if (finalScore < 0) {
            finalScore = 0;
      }
      
      employee.performanceScore = finalScore;
      return finalScore;
    }
};

// 奖金计算系统
var BonusCalculator = {
   
    // 根据绩效分数计算奖金比例
    calculateBonusRate: function(performanceScore) {
      var rate = 0;
      
      // 复杂的条件链
      if (performanceScore >= 95) {
            rate = 0.5;// 50% 奖金
      } else if (performanceScore >= 90) {
            rate = 0.4;// 40% 奖金
      } else if (performanceScore >= 85) {
            rate = 0.3;// 30% 奖金
      } else if (performanceScore >= 80) {
            rate = 0.2;// 20% 奖金
      } else if (performanceScore >= 75) {
            rate = 0.1;// 10% 奖金
      } else {
            rate = 0;    // 无奖金
      }
      
      return rate;
    },
   
    // 根据部门调整奖金
    adjustBonusByDepartment: function(baseRate, department) {
      var adjustedRate = baseRate;
      
      // 使用 switch 语句处理部门特殊政策
      switch (department) {
            case "销售部":
                // 销售部门有额外激励
                if (baseRate > 0) {
                  adjustedRate += 0.1;
                }
                break;
            case "技术部":
                // 技术部门有项目奖金
                if (baseRate >= 0.3) {
                  adjustedRate += 0.05;
                }
                break;
            case "市场部":
                // 市场部门有季节性调整
                var currentMonth = new Date().getMonth();
                if (currentMonth >= 9 && currentMonth <= 11) { // 第四季度
                  if (baseRate > 0) {
                        adjustedRate += 0.08;
                  }
                }
                break;
      }
      
      // 确保奖金比例不超过 60%
      if (adjustedRate > 0.6) {
            adjustedRate = 0.6;
      }
      
      return adjustedRate;
    },
   
    // 计算最终奖金
    calculateBonus: function(employee, baseSalary) {
      var baseRate = this.calculateBonusRate(employee.performanceScore);
      var finalRate = this.adjustBonusByDepartment(baseRate, employee.department);
      
      employee.bonusRate = finalRate;
      employee.baseSalary = baseSalary;
      
      return baseSalary * finalRate;
    }
};

// 员工分类系统
var EmployeeClassifier = {
   
    // 根据绩效和工龄分类员工
    classifyEmployee: function(employee) {
      var classification = "";
      
      // 复杂的嵌套条件判断
      if (employee.performanceScore >= 90) {
            if (employee.yearsOfService >= 5) {
                classification = "核心员工";
            } else {
                classification = "高潜力员工";
            }
      } else if (employee.performanceScore >= 80) {
            if (employee.yearsOfService >= 8) {
                classification = "资深员工";
            } else if (employee.yearsOfService >= 3) {
                classification = "稳定员工";
            } else {
                classification = "新员工";
            }
      } else if (employee.performanceScore >= 70) {
            if (employee.yearsOfService >= 5) {
                classification = "待提升员工";
            } else {
                classification = "观察员工";
            }
      } else {
            classification = "待改进员工";
      }
      
      return classification;
    },
   
    // 生成绩效报告
    generateReport: function(employee) {
      var report = "【员工绩效报告】\n";
      report += "姓名: " + employee.name + "\n";
      report += "部门: " + employee.department + "\n";
      report += "职位: " + employee.position + "\n";
      report += "工龄: " + employee.yearsOfService + "年\n";
      report += "绩效分数: " + employee.performanceScore + "分\n";
      report += "奖金比例: " + (employee.bonusRate * 100) + "%\n";
      report += "员工分类: " + this.classifyEmployee(employee) + "\n";
      
      // 使用 switch 语句添加建议
      var classification = this.classifyEmployee(employee);
      report += "\n【发展建议】\n";
      
      switch (classification) {
            case "核心员工":
                report += "- 考虑晋升机会\n";
                report += "- 赋予更多管理职责\n";
                report += "- 提供股权激励\n";
                break;
            case "高潜力员工":
                report += "- 提供专业技能培训\n";
                report += "- 安排导师指导\n";
                report += "- 给予挑战性项目\n";
                break;
            case "资深员工":
                report += "- 经验分享和传承\n";
                report += "- 参与重要决策\n";
                report += "- 保持工作热情\n";
                break;
            case "稳定员工":
                report += "- 提升专业技能\n";
                report += "- 增加工作挑战性\n";
                report += "- 职业发展规划\n";
                break;
            case "待提升员工":
                report += "- 制定改进计划\n";
                report += "- 提供必要培训\n";
                report += "- 定期绩效回顾\n";
                break;
            case "观察员工":
                report += "- 明确工作期望\n";
                report += "- 提供指导支持\n";
                report += "- 设定短期目标\n";
                break;
            case "待改进员工":
                report += "- 制定详细改进计划\n";
                report += "- 考虑岗位调整\n";
                report += "- 必要时启动PIP流程\n";
                break;
      }
      
      return report;
    }
};

// 主评估流程
function evaluateEmployeePerformance(name, department, position, yearsOfService, baseSalary) {
   
    // 创建员工对象
    var employee = new Employee(name, department, position, yearsOfService);
   
    // 评估绩效
    var performanceScore = PerformanceEvaluator.evaluateEmployee(employee);
   
    // 计算奖金
    var bonus = BonusCalculator.calculateBonus(employee, baseSalary);
   
    // 生成分类
    var classification = EmployeeClassifier.classifyEmployee(employee);
   
    // 生成报告
    var report = EmployeeClassifier.generateReport(employee);
   
    // 输出结果
    var result = report;
    result += "\n【奖金信息】\n";
    result += "基础工资: ¥" + baseSalary + "\n";
    result += "奖金金额: ¥" + bonus.toFixed(2) + "\n";
    result += "总薪资: ¥" + (baseSalary + bonus).toFixed(2) + "\n";
   
    return result;
}

// 批量评估示例
function batchEvaluateEmployees() {
    var employees = [
      {name: "张三", department: "技术部", position: "高级工程师", years: 6, salary: 15000},
      {name: "李四", department: "销售部", position: "经理", years: 8, salary: 20000},
      {name: "王五", department: "市场部", position: "主管", years: 4, salary: 12000},
      {name: "赵六", department: "人事部", position: "专员", years: 2, salary: 8000},
      {name: "钱七", department: "技术部", position: "经理", years: 12, salary: 25000}
    ];
   
    var allResults = "【批量员工绩效评估结果】\n";
    allResults += "========================================\n\n";
   
    for (var i = 0; i < employees.length; i++) {
      var emp = employees;
      allResults += evaluateEmployeePerformance(
            emp.name,
            emp.department,
            emp.position,
            emp.years,
            emp.salary
      );
      allResults += "\n========================================\n\n";
    }
   
    return allResults;
}

// 演示函数
function demonstrateComplexConditionals() {
   
    console.log("=== 复杂条件语句示例 - 员工绩效评估系统 ===\n");
   
    // 单个员工评估示例
    console.log("【单个员工评估示例】");
    var singleResult = evaluateEmployeePerformance("张三", "技术部", "高级工程师", 6, 15000);
    console.log(singleResult);
   
    console.log("\n【批量员工评估示例】");
    var batchResult = batchEvaluateEmployees();
    console.log(batchResult);
   
    // 特殊条件测试
    console.log("【边界条件测试】");
    var edgeCaseResult = evaluateEmployeePerformance("测试员工", "技术部", "实习生", 0, 5000);
    console.log(edgeCaseResult);
}

// 执行演示
demonstrateComplexConditionals();

页: [1]
查看完整版本: JS巧妙地组合使用各种条件语句