项目研发总结:考生志愿填报及申请修改
作者:焦旭涛
本次任务完成时间:209年03月01日~2019年03月30日
开发工具与关键技术:Visual Studio 2015、MVC
完成模块功能:志愿填报、志愿申请修改
一、功能实现
考生进入系统可进行团队与导师志愿的填报
根据学院规则,考生至少报一个团队,每个团队必须报考一个导师,团队与导师不能重复,考生可选择是否调剂导师。提交成功后,“确认提交” 按钮 变为 “确认修改” 按钮,考生可在规定时间内再进行志愿的修改
如果时间已过录取时间,则考生的志愿无法再自行修改,但是可以通过申请的方式进行志愿的修改。
选择新的志愿后,点击“提交申请” 即可完成志愿的修改申请。
申请成功后,申请信息将发送到管理人所属属的申请修改审核页面。
管理在申请修改审核页面能够看到考生提交的申请,并可以进行同意与拒绝的操作。
二、经典代码
考生提交时对数据进行判断是否符合填报规则。
//封装方法,判断数组是否有重复元素
function isRepeat(arr) {
var hash = {};
for (var i in arr) {
if (arr[i] != 0) {
if (hash[arr[i]])
return false;
hash[arr[i]] = true;
}
}
return true;
}
//提交
function SubmitToCollege()
{
var MentorTeamOne = $('#MentorTeamOne').val();
var MentorTeamTwo = $('#MentorTeamTwo').val();
var MentorTeamThree = $('#MentorTeamThree').val();
var MentorTeamOne_one = $('#MentorTeamOne_one').val();
var MentorTeamOne_two = $('#MentorTeamOne_two').val();
var MentorTeamOne_three = $('#MentorTeamOne_three').val();
var MentorTeamTwo_one = $('#MentorTeamTwo_one').val();
var MentorTeamTwo_two = $('#MentorTeamTwo_two').val();
var MentorTeamTwo_three = $('#MentorTeamTwo_three').val();
var MentorTeamThree_one = $('#MentorTeamThree_one').val();
var MentorTeamThree_two = $('#MentorTeamThree_two').val();
var MentorTeamThree_three = $('#MentorTeamThree_three').val();
var ExamineeID = $('#ExamineeID').val();
var wrongTips = "";
var boolWrongTips = false;
var TheamIDs = [MentorTeamOne, MentorTeamTwo, MentorTeamThree];
var TeamOne = [MentorTeamOne_one, MentorTeamOne_two, MentorTeamOne_three];
var TeamTwo = [MentorTeamTwo_one, MentorTeamTwo_two, MentorTeamTwo_three];
var TeamThree = [MentorTeamThree_one, MentorTeamThree_two, MentorTeamThree_three];
var count = 0;
//判断是否选择团队
if (count >= 1) {
//判断第一导师团队
if (MentorTeamOne > 0) {
//判断团队是否相同
if (isRepeat(TheamIDs)) {
//判断第一团队导师是否选择
if (MentorTeamOne > 0 && MentorTeamOne_one > 0) {
//判断第一团队导师是否重复
if (isRepeat(TeamOne)) {
//判断第二团队导师是否选择
if (MentorTeamTwo > 0 && MentorTeamTwo_one > 0) {
//判断第二团队导师是否重复
if (isRepeat(TeamTwo)) {
//判断第三团队导师是否选择
if (MentorTeamThree > 0 && MentorTeamThree_one > 0) {
//判断第三团队导师是否重复
if (isRepeat(TeamThree)) {
//报考
kssftbzy(ExamineeID);
} else {
alert("提交失败!\n第三团队导师重复!");
$("#theacherMengSS").css("display", "none");
}
} else {
//报考
if (MentorTeamThree == 0) {
//报考
kssftbzy(ExamineeID)
} else {
alert("提交失败!\n【第三团队】请至少选择一位导师!");
$("#theacherMengSS").css("display", "none");
}
}
} else {
alert("提交失败!\n第二团队导师重复!");
$("#theacherMengSS").css("display", "none");
}
} else {
if (MentorTeamTwo == 0) {
//报考
if (MentorTeamThree > 0) {
alert("提交失败!\n请先填写第二团队!");
$("#theacherMengSS").css("display", "none");
} else {
kssftbzy(ExamineeID)
}
} else {
alert("提交失败!\n【第二团队】请至少选择一位导师!");
$("#theacherMengSS").css("display", "none");
}
}
} else {
alert("提交失败!\n第一团队导师重复!");
$("#theacherMengSS").css("display", "none");
}
} else {
alert("提交失败!\n【第一团队】请至少选择一位导师!");
$("#theacherMengSS").css("display", "none");
}
} else {
alert("提交失败!\n选择的团队不能重复!");
$("#theacherMengSS").css("display", "none");
}
} else {
alert("提交失败!\n请选择第一导师团队!");
$("#theacherMengSS").css("display", "none");
}
} else {
alert("提交失败!\n至少选择一个团队!");
$("#theacherMengSS").css("display", "none");
}
}
三、开发过程中遇到的问题与总结
这次报考系统的升级,在开发过程中遇到最头疼的问题是对代码的优化,考生志愿填报的规则判断逻辑有些复杂,源代码的判断嵌套的if……else……多达上千行,最后我直接将判断代码进行重写,对重复的代码全部进行封装,提交时只有规则的逻辑判断这样更有益于代码维护与优化性也更加容易的读懂。这让我明白代码的简化重要性以及在编写代码要考虑到后期的维护是否方便。