代码模拟重庆高考平行志愿录取过程
class Candidate { constructor(id, score, rank, volunteers) { this.id = id; this.score = score; this.rank = rank; this.volunteers = volunteers; // Array of { schoolId, majorCode } } } class School { constructor(id, name, capacity, scoreLines) { this.id = id; this.name = name; this.capacity = capacity; this.currentCount = 0; this.scoreLines = scoreLines; // Map of { majorCode: scoreLine } } canAdmit(candidateScore, majorCode) { const scoreLine = this.scoreLines[majorCode]; if (scoreLine === undefined) { console.error(`No score line found for major code ${majorCode} in school ${this.name}`); return false; } return candidateScore >= scoreLine && this.currentCount < this.capacity; } admitStudent() { this.currentCount++; } } function sortCandidates(candidates) { return candidates.sort((a, b) => b.score - a.score || a.rank - b.rank); // Assuming rank breaks ties } function simulateAdmission(candidates, schools) { const sortedCandidates = sortCandidates(candidates); for (let candidate of sortedCandidates) { for (let volunteer of candidate.volunteers) { const school = schools.find(s => s.id === volunteer.schoolId); if (school && school.canAdmit(candidate.score, volunteer.majorCode)) { console.log(`Candidate ${candidate.id} with score ${candidate.score} is admitted to ${school.name} for major code ${volunteer.majorCode}`); school.admitStudent(); break; // Stop checking other volunteers once admitted } } } // Optional: Print schools' current enrollment status for (let school of schools) { console.log(`School ${school.name} has admitted ${school.currentCount} students.`); } } // Example data const candidates = [ new Candidate(1, 650, 1, [{ schoolId: 1, majorCode: '501' }]), new Candidate(2, 645, 2, [{ schoolId: 2, majorCode: '509' }]), // Add more candidates as needed ]; const schools = [ new School(1, "School A", 100, { '501': 645 }), new School(2, "School B", 150, { '509': 640 }), // Add more schools with corresponding score lines ]; // Simulate the admission process simulateAdmission(candidates, schools);
说明
-
Candidate 类:志愿列表中的对象现在包含学校ID和专业代码。
-
School 类:包含一个
scoreLines
对象,用于存储每个专业代码的录取分数线。canAdmit
方法接受考生分数和专业代码作为参数,并根据这些信息判断是否可以录取考生。 -
simulateAdmission 函数:在检查考生是否符合录取条件时,会传递考生分数和专业代码给
canAdmit
方法。 -
示例数据:考生志愿包含专业代码,学校数据包含对应专业代码的录取分数线。
谢谢您的来访,欢迎关注交流!以下是我的个人联系方式
电子邮箱:spring.wind2006@163.com,QQ:402085437,微信号:tm402085437