评教系统——学生评教提交

背景

  上篇博客主要讲了如何从后台动态获取考核项目和考核选项,这篇我们讲下如何将学生的考核项目和考核选项对应起来提交到服务器进行处理。

  继上篇中,绑定考核项目和考核选项的时候,用的是JSTL和EL表达式通过两次嵌套循环实现了绑定考核项目和考核选项。


<span style="font-size:14px;"><!--绑定考核项目和每个考核项目的选项 -->
<c:forEach items="${assessContentlist}" var="a"
	varStatus="status">
	<tr>
		<td><div id="${status.index+1}" name="assessSelectedDiv">
				<c:out value="${status.index+1}" />、${a.assessContent}<br>
				<c:forEach items="${a.weights}" var="b">
					<input type="radio" name="${a.id}" value="${b.id}"class="answer">${b.weightContent}	
					<br />
				</c:forEach>
			</div></td>
	</tr>
</c:forEach></span>


思路

  在用JSTL表达式输出考核项目的时候,将考核项目放在了div中,每个div的Id设置成数字<div

 id="${status.index+1}" name="assessSelectedDiv">,以便和循环变量联系起来。当学生选择完毕之后,如何对

应的获取到学生和考核项目和考核选项成了一个问题!后来查看生成的Html页面,发现考核项目和考核选项都放在了

<tr>标签中,有多少个考核项目就有多少个<tr>标签。通过获取<tr>的数量来确定循环,然后在内循环中获取对应的

数据,当对应的获取到,放入JavaScript对象的各个属性中。至此,开始着手实现。



实现:

  主要是Js的面向对象

<span style="font-size:14px;">function checkResult() {
	
	//获取界面已经选择的单选按钮
	var selected = $(":radio:checked").length;
	//获取应该评选的数量(后台绑定过来的)
	var shoudSelected = document.getElementById("hidAssessProjectCount").value;

	//这是变量数组,用来存放一个一个的js对象
	var assessAndWeightList = [];

	//确定外边大循环的次数
	var trlength = $("tr:gt(0)").length;

	for (i = 1; i <= trlength + 1; i++) {
		var count = 1;
		//获取到了每个div
		var x = document.getElementById(i);
		//获取某个div下面的input数量,然后循环
		var radioCount = x.getElementsByTagName("input").length;
		for (j = 0; j < radioCount; j++) {
			//判断哪个input被选中了
			if (x.getElementsByTagName("input")[j].checked == true) {
			//获取到所选择的radio的值
			//定义一个对象变量:
			assessAndWeight = new Object();
			var weightId = x.getElementsByTagName("input")[j].value;
			var assessId = x.getElementsByTagName("input")[j].name;
			assessAndWeight.assessId = assessId;
			assessAndWeight.weightId = weightId;
			//获取学生id,教师Id,课程Id,课程类型Id
			assessAndWeight.templateId = document.getElementById("templateId").value;
			assessAndWeight.studentId = document.getElementById("studentId").value;
			assessAndWeight.teacherId = document.getElementById("teacherId").value;
			assessAndWeight.courseId = document.getElementById("courseId").value;
			assessAndWeight.courseType = document.getElementById("courseTypeId").value;
			//将被选中的连同考核项目Id一起放入数组中去。
			assessAndWeightList.push(assessAndWeight);

			} else {
			//用来判断所给出的考核项目的选项是否一个也没有选择。
			count++;
			}
			}
			//如果某个div下的radio一个也没有选择,那么
			if (count == radioCount + 1) {
				alert("您第" + i + "道题没有选择");
				document.getElementById("tiaozhuan").href = "#" + i;
				document.getElementById('tiaozhuan').click();
				//设置一下div字体颜色,如果没评的话,设置为红色
				//document.getElementById(i).style.color = "red";
				document.getElementById(i).style.cssText = "border: 1px solid red;";

				for (j = 0; j < radioCount; j++) {
				$("input").mousedown(
				function() {document.getElementById(i).style.color = "#000000";
				document.getElementById(i).style.cssText = "border: 0px solid red;";
				});
				}

				for (j = 0; j < radioCount; j++) {
				$("label").mousedown(
				function() {document.getElementById(i).style.color = "#000000";
				document.getElementById(i).style.cssText = "border: 0px solid red;";
				});
				}

				return false;
			}
		}

		//将获取对象集合转成Json对象结合
		//var stringResult=assessAndWeightList.serializeArray();
		var stringResult = JSON.stringify(assessAndWeightList);
		//alert(stringResult);
		var ifPj = document.getElementById("ifPj").value;
		$.ajax({
		type : "post",
		url : "${pageContext.request.contextPath}/studentAssessResult",
		data : {
			stringResult : stringResult,
			IfPj : ifPj
		},
		datatype : "json",
		success : function(data) {						
		<span style="white-space: pre;">	</span>window.location.href = "${pageContext.request.contextPath}/studentAssess";

			},
		error : function(data) {
			$.messager.alert("警告", "网络故障!", "error");
			}
		})		
	}
</script></span>


controller处理:


  

<span style="font-family:SimHei;"><span style="font-size:18px;">	</span><span style="font-size:14px;">@RequestMapping("/studentAssessResult")
	public String studentAssessResult(HttpServletRequest request,
			HttpServletResponse response) {
		try {

			// 获取传递的Json组
			String jsonResultString = request.getParameter("stringResult");
			// 获取传递的Json组
			String IfPj = request.getParameter("IfPj");
			// 将Json组转成Json对象
			JSONArray jsonarray = JSONArray.fromObject(jsonResultString);
			// 将学生评价结果json转换为list
			List list = (List) JSONArray.toCollection(jsonarray,StudentAssessResult.class);

			studentAssessResultBean.saveEntitys(list);

			try {
				// 更新是否评教字段
				StudentTeachClass studentTeachClass = schoolTeachingBean
						.findEntityById(IfPj);
				studentTeachClass.setId(IfPj);
				studentTeachClass.setIsPj("是");
				schoolTeachingBean.updateIsPjOrIsKs(studentTeachClass);
				// 更新是否评教字段

			} catch (Exception e) {
				throw e;
			}

		} catch (Exception e) {
			throw e;
		}

		return "/studentAssess";
	}</span></span>


效果:

  第一道体没选择


  

  跳转到第一道题,并加上红色边框


 

  选择之后,红框消失




  主要的知识点:JavaScript中的对象和对象集合,Json转换工具,还有就是Jquery 操作dom元素。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
欢迎使用我们的项目源码!以下是我们提供的一些ASP.NET项目的简介: asp.net仪器设备管理与实现.zip: 这个项目是一个ASP.NET编写的仪器设备管理系统,旨在帮助实验室或科研机构管理和维护仪器设备的使用和维修情况。系统包括设备信息管理、借用归还管理、维修管理等功能模块。管理员可以在系统中录入设备信息、记录设备的借用和归还情况,并能够跟踪设备的维修状态。这个系统提高了仪器设备管理的效率和可靠性,帮助机构更好地利用和维护设备资源。 asp.net银行大厅自助信息系统的开发与实现.zip: 这个项目是一个ASP.NET编写的银行大厅自助信息系统,用于帮助银行提供更便捷和高效的服务。系统包括取款、存款、转账、查询等功能模块。用户可以通过系统进行自助操作,无需排队等待柜台服务。系统提供了简洁明了的界面和易于操作的功能,提升了银行大厅的服务质量和效率。 ASP.NET邮件收发程序的设计与开发.zip: 这个项目是一个ASP.NET编写的邮件收发程序,用于帮助用户进行邮件的收发和管理。系统具有注册、登录、发送、接收、删除邮件等功能。用户可以通过系统进行邮件的发送和接收,并能够管理自己的邮件收件箱。这个系统提供了一个方便和安全的方式来管理个人和商务邮件,帮助用户更好地组织和处理邮件。 ASP.NET在线毕业提交系统的设计与实现.zip: 这个项目是一个ASP.NET编写的在线毕业提交系统,用于帮助学生和教师进行毕业相关的文件提交和审核。系统包括文件上传、审核、通知等功能模块。学生可以通过系统提交毕业论文、答辩材料等文件,教师可以在系统中进行审核和评分。这个系统简化了毕业流程的管理,提高了审核的效率和准确性。 ASP.NET在线二手交易系统的设计与实现.zip: 这个项目是一个ASP.NET编写的在线二手交易系统,用于帮助用户进行二手商品的买卖交易。系统具有商品发布、浏览、购买、评价等功能。用户可以在系统中发布自己的二手商品信息,浏览和购买其他用户发布的商品,并能够进行交易评价。这个系统提供了一个安全和便捷的平台,促进了二手商品的流通和交易。 Asp.net在线考勤系统研发.zip: 这个项目是一个ASP.NET编写的在线考勤系统,用于帮助企业或学校管理和统计员工或学生的考勤情况。系统具有考勤记录、统计和报表生成等功能。管理员可以在系统中记录员工或学生的考勤情况,并能够通过系统生成考勤统计报表。这个系统简化了考勤管理的流程,提高了管理的效率和准确性。 ASP.NET在线英语自学系统——课程及自测管理的设计.zip: 这个项目是一个ASP.NET编写的在线英语自学系统,用于帮助学生自主学习英语课程和进行自测练习。系统具有课程管理、自测练习、成绩统计等功能。学生可以在系统中选择不同的英语课程进行学习,并能够进行自测练习并查看成绩。这个系统提供了一个灵活和有效的方式来学习和练习英语,提高了学生的学习效果和自主学习能力。 ASP.NET智能评教系统.zip: 这个项目是一个ASP.NET编写的智能评教系统,用于帮助学校或教育机构进行教师评教和教学质量评估。系统具有评教表管理、评教结果分析等功能。学生可以在系统中对教师进行评教,并能够查看评教结果和分析报告。这个系统提供了一个科学和客观的评估方式,帮助学校改进教学质量和提升教师水平。 asp.net中图像的检索技术毕业设计源码.zip: 这个项目是一个ASP.NET编写的图像检索技术的毕业设计源码,用于研究和实现图像检索的相关算法和技术。系统具有图像上传、特征提取、检索等功能。用户可以在系统中上传图像,并能够通过系统进行图像的特征提取和相似图像的检索。这个项目提供了一个学术研究和实验的平台,帮助研究人员深入了解和应用图像检索技术。 ASP.NET中小企业OA系统的设计与实现.zip: 这个项目是一个ASP.NET编写的中小企业OA系统,用于帮助企业进行办公自动化和流程管理。系统具有员工管理、日程安排、公告通知、审批流程等功能。员工可以在系统中管理个人信息、查看日程安排和参与审批流程。这个系统提供了一个集中和高效的办公平台,帮助企业提高工作效率和管理水平。 如果您对以上任何项目感兴趣,请随时联系我们获取更多详细信息和源码下载链接。我们期待与您合作,共同实现项目的成功!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值