自动发帖软件

标题: JS巧妙地组合使用各种条件语句 [打印本页]

作者: 发帖软件    时间: 4 小时前
标题: JS巧妙地组合使用各种条件语句
JS巧妙地组合使用各种条件语句


JS巧妙地组合使用各种条件语句 群发软件发帖工具

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

  7. // 员工信息构造函数(ES5 兼容)
  8. function Employee(name, department, position, yearsOfService) {
  9.     this.name = name;
  10.     this.department = department;
  11.     this.position = position;
  12.     this.yearsOfService = yearsOfService;
  13.     this.performanceScore = 0;
  14.     this.bonusRate = 0;
  15.     this.baseSalary = 0;
  16. }

  17. // 绩效评估系统
  18. var PerformanceEvaluator = {
  19.    
  20.     // 计算基础绩效分数
  21.     calculateBaseScore: function(employee) {
  22.         var score = 0;
  23.         
  24.         // 使用 switch 语句根据部门设置基础分数
  25.         switch (employee.department) {
  26.             case "技术部":
  27.                 score = 85;
  28.                 break;
  29.             case "销售部":
  30.                 score = 80;
  31.                 break;
  32.             case "市场部":
  33.                 score = 82;
  34.                 break;
  35.             case "人事部":
  36.                 score = 78;
  37.                 break;
  38.             default:
  39.                 score = 75;
  40.         }
  41.         
  42.         return score;
  43.     },
  44.    
  45.     // 根据职位调整分数
  46.     adjustScoreByPosition: function(baseScore, position) {
  47.         var adjustedScore = baseScore;
  48.         
  49.         // 使用 if...else if...else 进行多条件判断
  50.         if (position === "经理") {
  51.             adjustedScore += 10;
  52.         } else if (position === "主管") {
  53.             adjustedScore += 7;
  54.         } else if (position === "高级工程师") {
  55.             adjustedScore += 5;
  56.         } else if (position === "中级工程师") {
  57.             adjustedScore += 3;
  58.         } else {
  59.             adjustedScore += 1;
  60.         }
  61.         
  62.         return adjustedScore;
  63.     },
  64.    
  65.     // 根据工龄调整分数
  66.     adjustScoreByYears: function(score, years) {
  67.         var finalScore = score;
  68.         
  69.         // 复杂的嵌套条件判断
  70.         if (years >= 10) {
  71.             if (years >= 15) {
  72.                 finalScore += 8;
  73.             } else {
  74.                 finalScore += 6;
  75.             }
  76.         } else if (years >= 5) {
  77.             if (years >= 8) {
  78.                 finalScore += 4;
  79.             } else {
  80.                 finalScore += 2;
  81.             }
  82.         } else if (years >= 2) {
  83.             finalScore += 1;
  84.         }
  85.         
  86.         return finalScore;
  87.     },
  88.    
  89.     // 综合评估员工绩效
  90.     evaluateEmployee: function(employee) {
  91.         var baseScore = this.calculateBaseScore(employee);
  92.         var positionAdjusted = this.adjustScoreByPosition(baseScore, employee.position);
  93.         var finalScore = this.adjustScoreByYears(positionAdjusted, employee.yearsOfService);
  94.         
  95.         // 确保分数在合理范围内
  96.         if (finalScore > 100) {
  97.             finalScore = 100;
  98.         } else if (finalScore < 0) {
  99.             finalScore = 0;
  100.         }
  101.         
  102.         employee.performanceScore = finalScore;
  103.         return finalScore;
  104.     }
  105. };

  106. // 奖金计算系统
  107. var BonusCalculator = {
  108.    
  109.     // 根据绩效分数计算奖金比例
  110.     calculateBonusRate: function(performanceScore) {
  111.         var rate = 0;
  112.         
  113.         // 复杂的条件链
  114.         if (performanceScore >= 95) {
  115.             rate = 0.5;  // 50% 奖金
  116.         } else if (performanceScore >= 90) {
  117.             rate = 0.4;  // 40% 奖金
  118.         } else if (performanceScore >= 85) {
  119.             rate = 0.3;  // 30% 奖金
  120.         } else if (performanceScore >= 80) {
  121.             rate = 0.2;  // 20% 奖金
  122.         } else if (performanceScore >= 75) {
  123.             rate = 0.1;  // 10% 奖金
  124.         } else {
  125.             rate = 0;    // 无奖金
  126.         }
  127.         
  128.         return rate;
  129.     },
  130.    
  131.     // 根据部门调整奖金
  132.     adjustBonusByDepartment: function(baseRate, department) {
  133.         var adjustedRate = baseRate;
  134.         
  135.         // 使用 switch 语句处理部门特殊政策
  136.         switch (department) {
  137.             case "销售部":
  138.                 // 销售部门有额外激励
  139.                 if (baseRate > 0) {
  140.                     adjustedRate += 0.1;
  141.                 }
  142.                 break;
  143.             case "技术部":
  144.                 // 技术部门有项目奖金
  145.                 if (baseRate >= 0.3) {
  146.                     adjustedRate += 0.05;
  147.                 }
  148.                 break;
  149.             case "市场部":
  150.                 // 市场部门有季节性调整
  151.                 var currentMonth = new Date().getMonth();
  152.                 if (currentMonth >= 9 && currentMonth <= 11) { // 第四季度
  153.                     if (baseRate > 0) {
  154.                         adjustedRate += 0.08;
  155.                     }
  156.                 }
  157.                 break;
  158.         }
  159.         
  160.         // 确保奖金比例不超过 60%
  161.         if (adjustedRate > 0.6) {
  162.             adjustedRate = 0.6;
  163.         }
  164.         
  165.         return adjustedRate;
  166.     },
  167.    
  168.     // 计算最终奖金
  169.     calculateBonus: function(employee, baseSalary) {
  170.         var baseRate = this.calculateBonusRate(employee.performanceScore);
  171.         var finalRate = this.adjustBonusByDepartment(baseRate, employee.department);
  172.         
  173.         employee.bonusRate = finalRate;
  174.         employee.baseSalary = baseSalary;
  175.         
  176.         return baseSalary * finalRate;
  177.     }
  178. };

  179. // 员工分类系统
  180. var EmployeeClassifier = {
  181.    
  182.     // 根据绩效和工龄分类员工
  183.     classifyEmployee: function(employee) {
  184.         var classification = "";
  185.         
  186.         // 复杂的嵌套条件判断
  187.         if (employee.performanceScore >= 90) {
  188.             if (employee.yearsOfService >= 5) {
  189.                 classification = "核心员工";
  190.             } else {
  191.                 classification = "高潜力员工";
  192.             }
  193.         } else if (employee.performanceScore >= 80) {
  194.             if (employee.yearsOfService >= 8) {
  195.                 classification = "资深员工";
  196.             } else if (employee.yearsOfService >= 3) {
  197.                 classification = "稳定员工";
  198.             } else {
  199.                 classification = "新员工";
  200.             }
  201.         } else if (employee.performanceScore >= 70) {
  202.             if (employee.yearsOfService >= 5) {
  203.                 classification = "待提升员工";
  204.             } else {
  205.                 classification = "观察员工";
  206.             }
  207.         } else {
  208.             classification = "待改进员工";
  209.         }
  210.         
  211.         return classification;
  212.     },
  213.    
  214.     // 生成绩效报告
  215.     generateReport: function(employee) {
  216.         var report = "【员工绩效报告】\n";
  217.         report += "姓名: " + employee.name + "\n";
  218.         report += "部门: " + employee.department + "\n";
  219.         report += "职位: " + employee.position + "\n";
  220.         report += "工龄: " + employee.yearsOfService + "年\n";
  221.         report += "绩效分数: " + employee.performanceScore + "分\n";
  222.         report += "奖金比例: " + (employee.bonusRate * 100) + "%\n";
  223.         report += "员工分类: " + this.classifyEmployee(employee) + "\n";
  224.         
  225.         // 使用 switch 语句添加建议
  226.         var classification = this.classifyEmployee(employee);
  227.         report += "\n【发展建议】\n";
  228.         
  229.         switch (classification) {
  230.             case "核心员工":
  231.                 report += "- 考虑晋升机会\n";
  232.                 report += "- 赋予更多管理职责\n";
  233.                 report += "- 提供股权激励\n";
  234.                 break;
  235.             case "高潜力员工":
  236.                 report += "- 提供专业技能培训\n";
  237.                 report += "- 安排导师指导\n";
  238.                 report += "- 给予挑战性项目\n";
  239.                 break;
  240.             case "资深员工":
  241.                 report += "- 经验分享和传承\n";
  242.                 report += "- 参与重要决策\n";
  243.                 report += "- 保持工作热情\n";
  244.                 break;
  245.             case "稳定员工":
  246.                 report += "- 提升专业技能\n";
  247.                 report += "- 增加工作挑战性\n";
  248.                 report += "- 职业发展规划\n";
  249.                 break;
  250.             case "待提升员工":
  251.                 report += "- 制定改进计划\n";
  252.                 report += "- 提供必要培训\n";
  253.                 report += "- 定期绩效回顾\n";
  254.                 break;
  255.             case "观察员工":
  256.                 report += "- 明确工作期望\n";
  257.                 report += "- 提供指导支持\n";
  258.                 report += "- 设定短期目标\n";
  259.                 break;
  260.             case "待改进员工":
  261.                 report += "- 制定详细改进计划\n";
  262.                 report += "- 考虑岗位调整\n";
  263.                 report += "- 必要时启动PIP流程\n";
  264.                 break;
  265.         }
  266.         
  267.         return report;
  268.     }
  269. };

  270. // 主评估流程
  271. function evaluateEmployeePerformance(name, department, position, yearsOfService, baseSalary) {
  272.    
  273.     // 创建员工对象
  274.     var employee = new Employee(name, department, position, yearsOfService);
  275.    
  276.     // 评估绩效
  277.     var performanceScore = PerformanceEvaluator.evaluateEmployee(employee);
  278.    
  279.     // 计算奖金
  280.     var bonus = BonusCalculator.calculateBonus(employee, baseSalary);
  281.    
  282.     // 生成分类
  283.     var classification = EmployeeClassifier.classifyEmployee(employee);
  284.    
  285.     // 生成报告
  286.     var report = EmployeeClassifier.generateReport(employee);
  287.    
  288.     // 输出结果
  289.     var result = report;
  290.     result += "\n【奖金信息】\n";
  291.     result += "基础工资: ¥" + baseSalary + "\n";
  292.     result += "奖金金额: ¥" + bonus.toFixed(2) + "\n";
  293.     result += "总薪资: ¥" + (baseSalary + bonus).toFixed(2) + "\n";
  294.    
  295.     return result;
  296. }

  297. // 批量评估示例
  298. function batchEvaluateEmployees() {
  299.     var employees = [
  300.         {name: "张三", department: "技术部", position: "高级工程师", years: 6, salary: 15000},
  301.         {name: "李四", department: "销售部", position: "经理", years: 8, salary: 20000},
  302.         {name: "王五", department: "市场部", position: "主管", years: 4, salary: 12000},
  303.         {name: "赵六", department: "人事部", position: "专员", years: 2, salary: 8000},
  304.         {name: "钱七", department: "技术部", position: "经理", years: 12, salary: 25000}
  305.     ];
  306.    
  307.     var allResults = "【批量员工绩效评估结果】\n";
  308.     allResults += "========================================\n\n";
  309.    
  310.     for (var i = 0; i < employees.length; i++) {
  311.         var emp = employees[i];
  312.         allResults += evaluateEmployeePerformance(
  313.             emp.name,
  314.             emp.department,
  315.             emp.position,
  316.             emp.years,
  317.             emp.salary
  318.         );
  319.         allResults += "\n========================================\n\n";
  320.     }
  321.    
  322.     return allResults;
  323. }

  324. // 演示函数
  325. function demonstrateComplexConditionals() {
  326.    
  327.     console.log("=== 复杂条件语句示例 - 员工绩效评估系统 ===\n");
  328.    
  329.     // 单个员工评估示例
  330.     console.log("【单个员工评估示例】");
  331.     var singleResult = evaluateEmployeePerformance("张三", "技术部", "高级工程师", 6, 15000);
  332.     console.log(singleResult);
  333.    
  334.     console.log("\n【批量员工评估示例】");
  335.     var batchResult = batchEvaluateEmployees();
  336.     console.log(batchResult);
  337.    
  338.     // 特殊条件测试
  339.     console.log("【边界条件测试】");
  340.     var edgeCaseResult = evaluateEmployeePerformance("测试员工", "技术部", "实习生", 0, 5000);
  341.     console.log(edgeCaseResult);
  342. }

  343. // 执行演示
  344. demonstrateComplexConditionals();
复制代码







欢迎光临 自动发帖软件 (http://www.fatiegongju.com/) Powered by Discuz! X3.2