int[] intlist = JsonConvert.DeserializeObject<int[]>(strInfo.Infone);//反序列化成整型数组
DataTable dt_BanJiChengJiDangAn = myFRMFuXiuChengJiDaYin.Select_BanJiChengJiDangAn(intlist[0], intlist[1]);//按班提取辅修学生成绩
for (int i = 0; i < dt_BanJiChengJiDangAn.Rows.Count; i++) //遍历dt_BanJiChengJiDangAn所有行
{
dt_BanJiChengJiDangAn.Rows[i]["成绩总评"] = Math.Round(Convert.ToDouble(dt_BanJiChengJiDangAn.Rows[i]["成绩总评"].ToString().Trim()));
//对每一行数据中列["成绩总评"]小数点后的数据进行截断
}
DataTable dt_BanJiChengJi = new DataTable();//新建一个dt_BanJiChengJi用来存储被算法筛选后的数据
dt_BanJiChengJi.Columns.Add("辅修班名", typeof(string));//向dt_BanJiChengJi插入列
dt_BanJiChengJi.Columns.Add("课程名称", typeof(string));//向dt_BanJiChengJi插入列
dt_BanJiChengJi.Columns.Add("学号", typeof(string));//向dt_BanJiChengJi插入列
dt_BanJiChengJi.Columns.Add("学生姓名", typeof(string));//向dt_BanJiChengJi插入列
dt_BanJiChengJi.Columns.Add("成绩总评", typeof(string));//向dt_BanJiChengJi插入列
dt_BanJiChengJi.Columns.Add("评语", typeof(string));//向dt_BanJiChengJi插入列
dt_BanJiChengJi.Columns.Add("总学时", typeof(string));//向dt_BanJiChengJi插入列
dt_BanJiChengJi.Columns.Add("总学分", typeof(string));//向dt_BanJiChengJi插入列
dt_BanJiChengJi.Columns.Add("ChengJiCiShuLeiBie", typeof(string));//向dt_BanJiChengJi插入列
dt_BanJiChengJi.Columns.Add("年度学期", typeof(string));//向dt_BanJiChengJi插入列
string chengJiZongPing_ZhengKao = "";//定义并初始化字符串,用于存放正考成绩
string chengJiZongPing_ZhengChangBuKao = "";//定义并初始化字符串,用于存放正常补考成绩
string chengJiZongPing_BiYeQianBuKao = "";//定义并初始化字符串,用于存放毕业前补考成绩
string chengJiZongPing_BiYeHouBuKao = "";//定义并初始化字符串,用于存放毕业后补考成绩
for (int i = 0; i < dt_BanJiChengJiDangAn.Rows.Count; i++)//遍历dt_BanJiChengJiDangAn所有行
{
DataRow drow = dt_BanJiChengJi.NewRow();//实例化dt_BanJiChengJi行
for (int j = 0; j < dt_BanJiChengJiDangAn.Rows.Count; j++)//遍历dt_BanJiChengJiDangAn所有行
{
if (dt_BanJiChengJiDangAn.Rows[i]["学号"].ToString().Trim() == dt_BanJiChengJiDangAn.Rows[j]["学号"].ToString().Trim() &&
dt_BanJiChengJiDangAn.Rows[i]["课程名称"].ToString().Trim() == dt_BanJiChengJiDangAn.Rows[j]["课程名称"].ToString().Trim())
//判断是否同一个学生同一课程的数据
{
if (Convert.ToInt32(dt_BanJiChengJiDangAn.Rows[i]["ChengJiCiShuLeiBie"].ToString().Trim()) ==1 &&
Convert.ToInt32(dt_BanJiChengJiDangAn.Rows[j]["ChengJiCiShuLeiBie"].ToString().Trim())!= 1)
//判断第i行和第j行的列["ChengJiCiShuLeiBie"]的值是否等于1
{
chengJiZongPing_ZhengKao = dt_BanJiChengJiDangAn.Rows[i]["成绩总评"].ToString().Trim();
//获取第i行的列["成绩总评"]的值
if (Convert.ToInt32(dt_BanJiChengJiDangAn.Rows[j]["ChengJiCiShuLeiBie"].ToString().Trim()) == 2)
//判断第j行的列["ChengJiCiShuLeiBie"]的值是否等于2
{
chengJiZongPing_ZhengChangBuKao = dt_BanJiChengJiDangAn.Rows[j]["成绩总评"].ToString().Trim();
//获取第j行的列["成绩总评"]的值
}
if (Convert.ToInt32(dt_BanJiChengJiDangAn.Rows[j]["ChengJiCiShuLeiBie"].ToString().Trim()) == 3)
//判断第j行的列["ChengJiCiShuLeiBie"]的值是否等于3
{
chengJiZongPing_BiYeQianBuKao = dt_BanJiChengJiDangAn.Rows[j]["成绩总评"].ToString().Trim();
//获取第j行的列["成绩总评"]的值
}
if (Convert.ToInt32(dt_BanJiChengJiDangAn.Rows[j]["ChengJiCiShuLeiBie"].ToString().Trim()) == 4)
//判断第j行的列["ChengJiCiShuLeiBie"]的值是否等于4
{
chengJiZongPing_BiYeHouBuKao = dt_BanJiChengJiDangAn.Rows[j]["成绩总评"].ToString().Trim();
//获取第j行的列["成绩总评"]的值
}
if (chengJiZongPing_ZhengChangBuKao != "" && chengJiZongPing_BiYeQianBuKao == ""&& chengJiZongPing_BiYeHouBuKao == "")
//判断正常补考成绩、毕业前补考成绩、毕业后补考成绩的值是否为空
{
dt_BanJiChengJiDangAn.Rows[i]["成绩总评"] = chengJiZongPing_ZhengKao + "/" + chengJiZongPing_ZhengChangBuKao;
//将重置后的成绩总评数据赋给相应的列
}
if (chengJiZongPing_ZhengChangBuKao != "" && chengJiZongPing_BiYeQianBuKao != "" && chengJiZongPing_BiYeHouBuKao == "")
//判断正常补考成绩、毕业前补考成绩、毕业后补考成绩的值是否为空
{
dt_BanJiChengJiDangAn.Rows[i]["成绩总评"] = chengJiZongPing_ZhengKao + "/" + chengJiZongPing_BiYeQianBuKao;
//将重置后的成绩总评数据赋给相应的列
}
if (chengJiZongPing_ZhengChangBuKao != "" && chengJiZongPing_BiYeQianBuKao != "" && chengJiZongPing_BiYeHouBuKao != "")
//判断正常补考成绩、毕业前补考成绩、毕业后补考成绩的值是否为空
{
dt_BanJiChengJiDangAn.Rows[i]["成绩总评"] = chengJiZongPing_ZhengKao + "/" + chengJiZongPing_BiYeHouBuKao;
//将重置后的成绩总评数据赋给相应的列
}
}
}
}
drow["辅修班名"] = dt_BanJiChengJiDangAn.Rows[i]["辅修班名"].ToString();//辅修班名
drow["课程名称"] = dt_BanJiChengJiDangAn.Rows[i]["课程名称"].ToString();//课程名称
drow["学号"] = dt_BanJiChengJiDangAn.Rows[i]["学号"].ToString();//学号
drow["学生姓名"] = dt_BanJiChengJiDangAn.Rows[i]["学生姓名"].ToString();//学生姓名
drow["成绩总评"] = dt_BanJiChengJiDangAn.Rows[i]["成绩总评"].ToString();//成绩总评
drow["评语"] = dt_BanJiChengJiDangAn.Rows[i]["评语"].ToString();//评语
drow["总学时"] = dt_BanJiChengJiDangAn.Rows[i]["总学时"].ToString();//总学时
drow["总学分"] = dt_BanJiChengJiDangAn.Rows[i]["总学分"].ToString();//总学分
drow["ChengJiCiShuLeiBie"] = dt_BanJiChengJiDangAn.Rows[i]["ChengJiCiShuLeiBie"].ToString();//ChengJiCiShuLeiBie
drow["年度学期"] = dt_BanJiChengJiDangAn.Rows[i]["年度学期"].ToString();//年度学期
dt_BanJiChengJi.Rows.Add(drow);//将新增行添加到新建表中
chengJiZongPing_ZhengKao = "";//重置字符串的值
chengJiZongPing_ZhengChangBuKao = "";//重置字符串的值
chengJiZongPing_BiYeQianBuKao = "";//重置字符串的值
chengJiZongPing_BiYeHouBuKao = "";//重置字符串的值
}
for (int i = 0; i < dt_BanJiChengJi.Rows.Count; i++)//遍历dt_BanJiChengJi所有行
{
for (int j = 0; j < dt_BanJiChengJi.Rows.Count; j++)//遍历dt_BanJiChengJi所有行
{
if (i != j && dt_BanJiChengJi.Rows[i]["学号"].ToString() == dt_BanJiChengJi.Rows[j]["学号"].ToString() &&//是否同一学生
dt_BanJiChengJi.Rows[i]["课程名称"].ToString() == dt_BanJiChengJi.Rows[j]["课程名称"].ToString())//是否同一课程
{
if (dt_BanJiChengJi.Rows[i]["成绩总评"].ToString().Length > dt_BanJiChengJi.Rows[j]["成绩总评"].ToString().Length)
//比较同一学生统一课程的成绩总评的长短
{
dt_BanJiChengJi.Rows.RemoveAt(j);//移除重复项
j--;//j递减
}
else
{
dt_BanJiChengJi.Rows.RemoveAt(i);//移除重复项
j--;//j递减
}
}
}
}