鄭天宇+張玉軍+楊陽+孫一笑
摘要:畢業(yè)設計雙選系統(tǒng)在高校辦公室管理中是個重要的環(huán)節(jié),其中教師和學生的分配問題更為重要。該文在功能上實現(xiàn)了教師和學生的相互選擇和分配問題,使得高校辦公更加簡潔化、網絡化。
關鍵詞:畢業(yè)設計系統(tǒng);功能;ASP.Net;C#
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2018)01-0115-02
在畢業(yè)設計雙選系統(tǒng)中,學生希望選擇到自己心儀的指導教師,教師希望自己的學生能夠勝任畢業(yè)設計的任務要求,系主任希望統(tǒng)計方便、分組便捷,管理員希望每個學生都能分配到教師的隊伍中,滿足這一系列的要求畢業(yè)設計雙選系統(tǒng)才算初步達到要求。本文主要分析并實現(xiàn)了在開發(fā)中比較復雜并重要的功能模塊,方便計算機專業(yè)的初學者能快速找到畢業(yè)設計雙選系統(tǒng)開發(fā)的基本思路與方法。
1 功能需求和分析
1.1 功能需求
本文中的畢業(yè)設計雙選系統(tǒng)目的是方便于學生與教師在畢業(yè)設計過程中的雙向選擇,減少人為統(tǒng)計過程的復雜繁瑣,應用于高校辦公室的一個應用型的管理系統(tǒng)。系統(tǒng)應能實現(xiàn)不同用戶(學生、教師、系主任、管理員)訪問并操作不同的功能模塊。學生:學生選擇教師、修改個人信息、訪問系統(tǒng)公告等。教師:教師選擇學生、修改個人信息、訪問系統(tǒng)公告、導出選擇結果表等。系主任:自動分配剩余學生、教師分組、查看最終選擇結果等。管理員:更新系統(tǒng)公告、對數據進行增刪改差、分配用戶權限等。
1.2 功能分析
基于asp.net技術的畢業(yè)設計管理系統(tǒng)在全國各大高校的信息管理系統(tǒng)中已經廣泛使用,在功能分析上我們只對部分比較復雜的功能進行具體分析。
1) 雙選功能
雙選功能包括學生選擇教師和教師選擇學生,在學生選擇教師中本系統(tǒng)采用的是下拉框的級聯(lián),使系統(tǒng)控制學生先選擇第一志愿再選擇第二志愿,其中第一志愿被選擇的教師不會在第二志愿的下拉框中再次出現(xiàn)避免重復選擇。
2) 自動分配剩余學生功能
在進行完所有人員的選擇后會剩余一部分沒有選擇成功的學生和隊伍未滿的指導教師,所以在系主任的功能模塊上添加了一個可以自動分配剩余學生的按鈕,可以將沒有選擇成功的學生隨機分配到隊伍未滿的教師隊伍中,節(jié)省時間而且公平公正。
2 具體實現(xiàn)
2.1 學生選擇教師功能
除了上文介紹的基本思路外在下拉框的級聯(lián)中需要注意的一點是需要在選擇第一志愿后才能進行第二志愿下拉框的數據綁定,具體實現(xiàn)代碼如下
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 教師選擇學生功能
在此功能模塊中第一志愿和第二志愿的選擇分兩個部分,教師必須先選擇第一志愿里的學生,如果教師可選的人數大于第一志愿可選的人數第二志愿選擇的按鈕才會開啟,具體代碼實現(xiàn)如下
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 剩余學生自動分配功能
在此功能模塊中將已分配的學生和所有的學生取差集后用隨機數的方式將下標進行打亂再分配到不同的教師組別中,實現(xiàn)代碼如下
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
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 結束語
本文中具體介紹的功能模塊具有較強的應用與實用性,能夠適應畢業(yè)設計雙選過程中的大部分的現(xiàn)實需求。在VS2010平臺上進行畢業(yè)設計雙選系統(tǒng)的開發(fā)相對其他平臺比較便捷,有效及時地解決了一些問題,給很多計算機專業(yè)的初學者提供了一個比較明確的開發(fā)思路,減少在開發(fā)中遇到的難題。
參考文獻:
[1] 薩師煊.數據庫系統(tǒng)概論[M].5版.北京:高等教育出版社,2014.
[2] 吳善才.ASP.NET4.0項目開發(fā)實戰(zhàn)密碼[M].北京:清華大學出版社,2016.
[3] 錢冬云.Visual C#.NET數據庫應用程序開發(fā)[M].杭州:浙江大學出版社,2010.