基于ASP.Net的毕业设计双选系统中几个关键问题的研究

2018-02-02 12:48郑天宇张玉军杨阳孙一笑
电脑知识与技术 2018年1期
关键词:功能

郑天宇+张玉军+杨阳+孙一笑

摘要:毕业设计双选系统在高校办公室管理中是个重要的环节,其中教师和学生的分配问题更为重要。该文在功能上实现了教师和学生的相互选择和分配问题,使得高校办公更加简洁化、网络化。

关键词:毕业设计系统;功能;ASP.Net;C#

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)01-0115-02

在毕业设计双选系统中,学生希望选择到自己心仪的指导教师,教师希望自己的学生能够胜任毕业设计的任务要求,系主任希望统计方便、分组便捷,管理员希望每个学生都能分配到教师的队伍中,满足这一系列的要求毕业设计双选系统才算初步达到要求。本文主要分析并实现了在开发中比较复杂并重要的功能模块,方便计算机专业的初学者能快速找到毕业设计双选系统开发的基本思路与方法。

1 功能需求和分析

1.1 功能需求

本文中的毕业设计双选系统目的是方便于学生与教师在毕业设计过程中的双向选择,减少人为统计过程的复杂繁琐,应用于高校办公室的一个应用型的管理系统。系统应能实现不同用户(学生、教师、系主任、管理员)访问并操作不同的功能模块。学生:学生选择教师、修改个人信息、访问系统公告等。教师:教师选择学生、修改个人信息、访问系统公告、导出选择结果表等。系主任:自动分配剩余学生、教师分组、查看最终选择结果等。管理员:更新系统公告、对数据进行增删改差、分配用户权限等。

1.2 功能分析

基于asp.net技术的毕业设计管理系统在全国各大高校的信息管理系统中已经广泛使用,在功能分析上我们只对部分比较复杂的功能进行具体分析。

1) 双选功能

双选功能包括学生选择教师和教师选择学生,在学生选择教师中本系统采用的是下拉框的级联,使系统控制学生先选择第一志愿再选择第二志愿,其中第一志愿被选择的教师不会在第二志愿的下拉框中再次出现避免重复选择。

2) 自动分配剩余学生功能

在进行完所有人员的选择后会剩余一部分没有选择成功的学生和队伍未满的指导教师,所以在系主任的功能模块上添加了一个可以自动分配剩余学生的按钮,可以将没有选择成功的学生随机分配到队伍未满的教师队伍中,节省时间而且公平公正。

2 具体实现

2.1 学生选择教师功能

除了上文介绍的基本思路外在下拉框的级联中需要注意的一点是需要在选择第一志愿后才能进行第二志愿下拉框的数据绑定,具体实现代码如下

protected void Volunteer1_SelectedIndexChanged(object sender, EventArgs e)

{DataBase db = new DataBase();string sql = "select tno,tname from teacher_information where tname!='"+ Volunteer1.SelectedValue + "'";DataSet ds = db.GetDataSet(sql);Volunteer2.DataSource = ds;Volunteer2.DataTextField = "tname";Volunteer2.DataValueField = "tno";Volunteer2.DataBind();Volunteer2.Items.Insert(0, new ListItem("=請先选择第一志愿=", "0"));}

其中DataBase是一个数据库操作类可以直接获得DataSet,前台的样式如图1

2.2 教师选择学生功能

在此功能模块中第一志愿和第二志愿的选择分两个部分,教师必须先选择第一志愿里的学生,如果教师可选的人数大于第一志愿可选的人数第二志愿选择的按钮才会开启,具体代码实现如下

string sql ="select students_information.sno,class,name from choose_result,students_information where choose_result.sno=students_information.sno and tno='" + username + "'and zhiyuanNum=1";

DataSet ds = db.GetDataSet(sql);

GridView1.DataSource = ds.Tables[0];

GridView1.DataBind();

string sqll ="select students_information.sno,class,name from choose_result,students_information where choose_result.sno=students_information.sno and tno='" +

username + "'and zhiyuanNum=2";

DataSet dss = db.GetDataSet(sqll);

GridView2.DataSource = dss.Tables[0];

GridView2.DataBind();

int num = db.GetChooseNum(username);

choose_num.Text = Convert.ToString(num);

if (num == 0)

{btn_First.Enabled = false;btn_Second.Enabled = false;}endprint

else if( GridView1.Rows.Count > num )

btn_Second.Enabled = false;

前台的样式如图2

2.3 剩余学生自动分配功能

在此功能模块中将已分配的学生和所有的学生取差集后用随机数的方式将下标进行打乱再分配到不同的教师组别中,实现代码如下

protected void distribute_Click(object sender, EventArgs e)

{DialogResult dr = MessageBox.Show("是否自动分配剩余学生","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button2,MessageBoxOptions.DefaultDesktopOnly);

if (dr == DialogResult.OK)

{string different_set ="select students_information.sno,class,name from students_information where students_information.sno not in(select finally.sno from finally)";string sql = "select choose_num,tno from teacher_information";

DataBase db = new DataBase(); DataSet ds_different = db.GetDataSet(different_set);

DataSet ds_sql = db.GetDataSet(sql); List list = new List();

for (int i = 0; i < ds_sql.Tables[0].Rows.Count; i++)

{int k = Convert.ToInt32(ds_sql.Tables[0].Rows[i]["choose_num"]);

for (int j = 0; j < ds_different.Tables[0].Rows.Count; j++)

{Random r = new Random();int num = r.Next(0, ds_different.Tables[0].Rows.Count);//隨机下标if (k != 0 && !list.Contains(num))

{list.Add(num);//保证不重复

string Sno = ds_different.Tables[0].Rows[num]["sno"].ToString();

string Class = ds_different.Tables[0].Rows[num]["class"].ToString();

string Name = ds_different.Tables[0].Rows[num]["name"].ToString();

string tno = ds_sql.Tables[0].Rows[i]["tno"].ToString();

string insert_sql = "insert into finally values('" + tno + "','" + Sno + "','" + Class + "','" +Name + "' )";db.InsertOrUpdate(insert_sql);k—;

ds_sql.Tables[0].Rows[i]["choose_num"] = Convert.ChangeType(k, TypeCode.Object);

string update = "update teacher_information set choose_num ='"+ k +"'where tno='"+ tno +"'";db.InsertOrUpdate(update); ds_different.Tables[0].Rows[num].Delete();}

else if( k == 0 ){break;}else{j—;}}}MessageBox.Show("分配成功!");}else{MessageBox.Show("取消自动分配!");}}

3 结束语

本文中具体介绍的功能模块具有较强的应用与实用性,能够适应毕业设计双选过程中的大部分的现实需求。在VS2010平台上进行毕业设计双选系统的开发相对其他平台比较便捷,有效及时地解决了一些问题,给很多计算机专业的初学者提供了一个比较明确的开发思路,减少在开发中遇到的难题。

参考文献:

[1] 萨师煊.数据库系统概论[M].5版.北京:高等教育出版社,2014.

[2] 吴善才.ASP.NET4.0项目开发实战密码[M].北京:清华大学出版社,2016.

[3] 钱冬云.Visual C#.NET数据库应用程序开发[M].杭州:浙江大学出版社,2010.

猜你喜欢
功能
关于非首都功能疏解的几点思考
中西医结合治疗甲状腺功能亢进症31例
辨证施护在轻度认知功能损害中的应用