证书打印
(开发工具与关键技术:VS .NET MVC 作者:纳兹,撰写日期:2019.06.07,源于:老师上课教程)
下面以学生信息的打印为例。
因为打印证书需要合格的学生信息,所以需要查询学生的信息。首先打印证书需要根据用户ID查询学生学号,因为打印学生证书需要根据学生学号查询该考生的成绩,如果该考生成绩不合格则不能打印证书,成绩不合格没有证书就不能打印;接着根据学号查询证书信息,用try…catch捕获异常,在try里面查询证书信息,因为证书信息需要多张表里面的字段信息,所以用join连表查询出需要查询的信息,这里连接成绩表、用户表、学生表根据学生账号查询出学生的用户名、考试时间、考试合格成绩、打印的证书编号和证书打印时间;然后用returnJson返回查询出来的数据;最后在catch里面捕获一下try里面发生的异常,返回数据异常。
因为一个系统不可能只有一个用户或只有一种用户类型:有学生就有教师,所以需要根据用户查询教师编号,再根据教师编号查询出所有学生的证书信息,操作跟根据学号查询证书信息一样。然后再根据用户ID查询用户成绩信息(账号为学生账号,即用户为学生):先用try…catch捕获异常,在try里面查询学生的成绩信息,然后接着判断该用户是否有成绩信息,根据降序排序之后第一条数据中的成绩为最高成绩,判断当前最高成绩是否及格(即是否大于最低及格标准),如果成立返回查询的数据;否则else返回“不及格”,或者“无成绩”;最后在catch里面捕获一下数据异常。当用户没有成绩时,是不能打印证书的,强行打印证书则会出现下图一的现象,这种情况要么用户不是学生没有成绩,要么成绩不合格不符合打印条件。
最后判断用户是否已经存在证书信息,如果没有则进行新增;如果已经存在证书,用户当前成绩大于目前已有证书,则进行修改:首先实,例化证书表(CertificateITable dbCertificateTable = new CertificateITable());接着根据用户ID查询用户的证书信息,使用Linq查询出需要查询的数据,因为证书信息涉及多表,所以用join连接多表(成绩表、用户表)进行数据查询,查询出证书ID、成绩ID、证书编号、发证单位、发证时间、成绩;接着判断当前用户是否有证书,(if (listCertificate.Count() > 0))判断当前用户已有证书信息;接着判断当前用户的最高成绩大于目前已有的证书成绩,则对该证书进行修改(if (Achievement>listCertificate[0].Achievement)),修改证书即修改打印证书的信息(证书ID、成绩ID、证书编号、地址、打印时间);然后保存修改过后的数据保存到数据库中,更新数据库中的数据信息;当判断出没有证书信息时,需要对该用户进行新增证书的操作(新增证书ID、成绩ID、地址、打印时间),然后保存到数据库;如果判断成立,则返回"success"( return Json(“success”,JsonRequestBehavior.AllowGet))。
以上为打印证书的控制器说明。