实例介绍
【实例简介】
本系统为学校的选课工作提供一个简便有序的管理平台,使选课排课管理工作规范化,系统化,程序化,提高数据处理速度和准确度,减轻管理人员的工作量。帮助学生在选课系统开放时,不受地点限制完成选修课的申请。
【实例截图】
【核心代码】
添加选课记录核心算法:
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();
}
}
相关软件
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
支持(0) 盖楼(回复)