嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 5 元微信扫码支付:5 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
本系统为学校的选课工作提供一个简便有序的管理平台,使选课排课管理工作规范化,系统化,程序化,提高数据处理速度和准确度,减轻管理人员的工作量。帮助学生在选课系统开放时,不受地点限制完成选修课的申请。
添加选课记录核心算法:
private void simpleButtonAddNewCourse_Click(object sender, EventArgs e)//点击添加选课记录按钮
{
/*获取当前选中记录的课程号*/
int selectedHandle = this.gridView2.GetSelectedRows()[0]; //selectedHandle:当前选中的记录
string Cnum = this.gridView2.GetRowCellValue(selectedHandle, "Cnum").ToString(); //Cnum:课程号
//首先判断是否已经选了这门课
/*获取当前选中的课程名*/
string Cname = this.gridView2.GetRowCellValue(selectedHandle, "Cname").ToString(); //Cname:课程名
/*在当前同学已选的课程中查询是否有这门课*/
string sql = "select Cname from Course, SC where SC.Cnum = Course.Cnum and SC.Snum = '" Sno "'and Course.Cname = '" Cname "';";
DataSet dataSet1 = GetData(sql);
string conflict = ""; //定义一个变量用于标识是否存在冲突
foreach (DataRow dataRow in dataSet1.Tables[0].Rows)
{
conflict = conflict dataRow["Cname"].ToString(); //如果已经选了这门课,就令conflict非空
}
if (conflict != "")//conflict非空代表存在冲突,退出执行
{
MessageBox.Show("已选择过此课程!请选择其他课程!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
return;
}
/*其次判断当前课程是否与其他课程有冲突*/
/*对本条课程安排的上课计划与该同学已经选过的课的上课计划做交集,如果交集不为空,即存在冲突*/
sql = "(select Weeknum,Weekday,Lessontime from CourseSchedule where Cnum = '" Cno "' ) InterSect (select Weeknum, Weekday, Lessontime from Course, SC, CourseSchedule where SC.Cnum = CourseSchedule.Cnum and SC.Cnum = Course.Cnum and SC.Snum = '" Snum "')";
DataSet dataSet = GetData(sql);
conflict = "";
foreach (DataRow dataRow in dataSet.Tables[0].Rows)//如果交集不为空,就令将冲突信息赋给conflict
{
conflict = conflict "第" dataRow["Weeknum"].ToString() "周星期" dataRow["Weekday"].ToString() "第" dataRow["Lessontime"].ToString() "节课\n";//成功获取已选人数
}
/*存在冲突就退出执行,并提示冲突信息*/
if (conflict != "")
{
MessageBox.Show("当前选中课程和 " conflict " 的课程有冲突!请选择其他课程!","提示",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);
return;
}
/**没有冲突,继续执行*/
/*获取当前课程已选人数*/
sql = "select Cselsectednum from Course where Cnum='" Cnum "'";
dataSet = GetData(sql);
string Cselsectednum = "",Cload="";//Cselsectednum:当前已选人数,Cmax:当前课程容量
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
Cselsectednum = dataRow["Cselsectednum"].ToString();//成功获取已选人数
}
sql = "select Cmax from Course where Cnum='" Cnum "'";
dataSet = GetData(sql);
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
Cload = dataRow["Cmax"].ToString();//成功获取课程容量
}
int num = int.Parse(Cselected); //将字符串类型的已选人数和课程容量转换为整型
int max = int.Parse(Cload);
//如果已选等于容量,即课程已被选满,即提示信息并退出执行
if (num >= max)
{
MessageBox.Show("当前课程容量已满,请刷新!");
return;
}
else//如果没选满
{
num ; //num值加一,表示该同学选课,之后将用于对课程表中该课程的已选人数属性进行更新
Cselsectednum = num.ToString(); //将更新后的已选人数保存为字符串型,用于之后向学生选课表中插入数据
/*向学生选课表中插入该条记录,更新课程表中该课程的已选人数*/
sql = "insert into SC(Cnum,Snum) values('" Cno "','" Sno "');update Course set Cselsectednum='" Cselsectednum "' where Cnum='" Cno "';";
try
{
string con = "";//con为连接数据库的字符,sql为SQL查询语句
con = "Data Source=VERYDENG;Initial Catalog=UniversityDB;Integrated Security=True";
SqlConnection mycon = new SqlConnection(con);//连接数据库
mycon.Open();//打开数据库
SqlCommand sqlCommand = new SqlCommand(sql, mycon);
sqlCommand.ExecuteNonQuery();//执行这条sql命令
mycon.Close();//关闭数据库
}
catch (Exception)
{
throw;
}
/*刷新选课列表和已选课列表*/
InitCourseAble();
IninCourseSelected();
}
}