|
|
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 = "¸ßDZÁ¦Ô±¹¤";
- }
- } 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 "¸ßDZÁ¦Ô±¹¤":
- 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();
¸´ÖÆ´úÂë
|
|