 | |  |  | 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[i];
- 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();
复制代码
| |  | |  |
|