证书打印
考生合格证书的打印,考生取得合格的成绩就可以打印证书,成绩不合格的不能打印证书,主要是根据当前登录的用户,当用户登录进入到系统里就会查询当前登录用户的证书信息,
一开始时候我们要重定向一下,因为在验证登录的时候会把当前用户的用户ID保存到session中,如果再次进入到这个页面的时候就会从session中获取到它的用户ID,所以一开始就需要用重定向,判断session中user是否有值,如果没有值重定向返回到登录页面,
进行登录,登录之后查询证书信息,把信息填写到证书中。还有一个问题是有时候假如是教师登录到这个系统。在证书表中可能是有教师的成绩信息的,也就是说这个考试既有学生参与也有老师参与的。根据用户ID对学生表和教师表都进行查询,如果是学生表返回数据则表示是该用户是学生,如果是教师表返回数据则表示该用户是教师。
这个地方是要注意的,因为我们要获取到当前登录的用户ID,所以在页面就隐藏了一个元素,这个元素是用来接收当前用户登录保存到session的中用户ID
<div style="display:none" id="UserID">@Session["UserID"]</div>
首先要获取登录用户的ID (代码源于老师)
//获取当前登录用户的UserID
var UserID = $("#UserID").text().trim()
请求类型用来一个post请求,这路径用于查询学生表,如果查到返回数据则表明该用户是学生,不返回数据就从教师表查且有数据返回,则表示当前用是老师。传输数据把UserID传输控制器,这里要把上面获取到用户ID转换成intl类型传到控制器,第三个参数是返回的数据类型为json格式,这个参数async: false,设置false状态就是把它的异步关闭了,表示设置为同步请求了,同步就说等返回来数据再一起加载,最后一个参数回调函数用一个data来接收数据,教师也是用同样的方法(如下图)
这里还有一个地方是要注意的,就是成绩与证书操作这里会几种情况出现,第一种情况该用户未参加过考试,没有成绩,第二种情况该用户参加了考试,但是没有合格成绩,第三种情况该用户参加了考试,并且有合格成绩,我们根据用户ID查询到这些信息,并对信息进行处理,判断返回的数据是属于那种情况,得到判断结果提示当前用户,让用户知道什么原因
//成绩&证书操作
function judgeAchievment(UserNum) {
//将传过来的学生学号或者教师编号保存到新的变量作为证书编号
var CertificateNumber = UserNum;
//根据UseID查询用户成绩信息,返回结果有以下三种情况:
//1、该用户未参加过考试,没有成绩
//2、该用户参加了考试,但是没有合格成绩
//3、该用户参加了考试,并且有合格成绩
$.ajax({
type: "post",
url: "SelectUserAchievment",//查询用户是否有合格成绩
data: { UserID: parseInt(UserID) },
dataType: "json",
async: false,
success: function (data) {
if (data == "数据异常") {
alert(data);
}
else if (data == "无成绩") {
alert("你还没有成绩,不能打印证书!");
}
else if (data == "不及格") {
alert("你没有合格成绩,不能打印证书!");
}
else {
//获取最高成绩&最高成绩ID
var Achievement = data[0].Achievement;
var AchievementID = data[0].AchievementID;
//新增or修改证书
//如果没证书则用最高成绩所在的这条数据进行新增
//如果存在证书但是不是最高成绩的证书则修改证书信息
$.ajax({
type: "post",
url: "InsertCertificate",
data: { UserID: parseInt(UserID), Achievement: Achievement, AchievementID: AchievementID, CertificateNumber: CertificateNumber },
dataType: "json",
async: false
});
如果是有成绩就获取到用户的最高成绩信息,如果是没有证书的情况就用最高成绩的数据进行新增,如果是有证书但是又不是最高成绩的证书,这种情况直接修改证书信息就行了。