证书打印

                               证书打印

 考生合格证书的打印,考生取得合格的成绩就可以打印证书,成绩不合格的不能打印证书,主要是根据当前登录的用户,当用户登录进入到系统里就会查询当前登录用户的证书信息,

一开始时候我们要重定向一下,因为在验证登录的时候会把当前用户的用户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

                        });

如果是有成绩就获取到用户的最高成绩信息,如果是没有证书的情况就用最高成绩的数据进行新增,如果是有证书但是又不是最高成绩的证书,这种情况直接修改证书信息就行了。