李忠玉 甘成 許小旭 余林峰
摘要:考勤點(diǎn)到和課堂問答是高校教學(xué)中的必備環(huán)節(jié),為了提高學(xué)生出勤率和課堂效率,減少教師在課堂考勤的時(shí)間,該文開發(fā)了一款基于C#語言的課堂智能點(diǎn)名系統(tǒng);該系統(tǒng)采用隨機(jī)算法進(jìn)行點(diǎn)名,自動(dòng)記錄出勤情況;在問題環(huán)節(jié),自動(dòng)屏蔽抽問過的學(xué)生。課堂實(shí)踐表明,該系統(tǒng)的運(yùn)行穩(wěn)定有序,能夠改善課堂效率,有一定的推廣意義和實(shí)用價(jià)值。
關(guān)鍵詞:C#程序開發(fā);智能終端;系統(tǒng)設(shè)計(jì);考勤管理
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)11-0069-03
Development and Implementation of Intelligent Terminal Attendance System Based on C#
LI Zhong-yu, GAN Cheng, XU Xiao-xu,YU lin-feng
(School of Computer Science, Chengdu Normal College, Chengdu 611130,China)
Abstract: Attendance and classroom questioning are the necessary links in college teaching. In order to improve student attendance and classroom efficiency, this paper develops a class intelligent attendance system based on c#. The system uses random algorithm to check attendance, record attendance automatically, and automatically screen students who have been questioned. The practice shows that the system is stable and orderly, which can improve the classroom efficiency and has certain practical value.
key words: C# program development; Intelligent terminal;System design;Attendance management
1 背景
課堂考勤和隨機(jī)問答是高??己藢W(xué)生平時(shí)成績(jī)的重要環(huán)節(jié);任課教師和輔導(dǎo)員可以通過考勤情況和課堂問答的效果,來綜合評(píng)價(jià)學(xué)生并對(duì)日常教學(xué)和管理做出相應(yīng)的調(diào)整。研究發(fā)現(xiàn)目前大多數(shù)考勤制度嚴(yán)厲而實(shí)施松散[1];很多任課教師或者輔導(dǎo)員均采用傳統(tǒng)紙質(zhì)點(diǎn)名或者課上簽到的方式;有的信息化手段應(yīng)用比較良好的高校采用APP進(jìn)行點(diǎn)到。但是采用傳統(tǒng)的點(diǎn)到方式不僅費(fèi)時(shí)費(fèi)力,而且會(huì)產(chǎn)生考勤數(shù)據(jù)統(tǒng)計(jì)不方便、代替答到的情況發(fā)生;如果采用APP進(jìn)行定位簽到的話,又會(huì)出現(xiàn)學(xué)生“自由自在玩手機(jī)”的現(xiàn)象發(fā)生。對(duì)于考勤點(diǎn)到系統(tǒng),許多教師進(jìn)行研究的時(shí)候多融入嵌入式技術(shù),有的引入指紋考勤系統(tǒng)[2],有的采用新型的人臉識(shí)別技術(shù)[3]。雖然將這些新型的信息技術(shù)應(yīng)用到課程上可以有效地避免學(xué)生間“代替”等現(xiàn)象的發(fā)生,但是將嵌入式技術(shù)融入課堂點(diǎn)到系統(tǒng)會(huì)無形中增加教學(xué)的成本,也會(huì)在一定程度上耽誤課堂教學(xué)的時(shí)間。例如一款合適的人臉識(shí)別考勤系統(tǒng)價(jià)格比較昂貴;又如果采用指紋簽到系統(tǒng),那可能會(huì)出現(xiàn)課間學(xué)生在教室門口“排長龍”打指紋的現(xiàn)象。鑒于此,該文提出了一款基于C#的智能終端點(diǎn)到系統(tǒng)的設(shè)計(jì)方案,該方案可以直接將點(diǎn)到系統(tǒng)的安裝包安裝在教師終端電腦上,老師點(diǎn)擊開始按鈕就可以自動(dòng)點(diǎn)到,在投影儀上輸出學(xué)號(hào)、姓名和班級(jí)等相關(guān)信息,對(duì)學(xué)生進(jìn)行考勤管理。在進(jìn)行課堂問答時(shí),智能終端能夠自動(dòng)標(biāo)記已被抽問的同學(xué),每次抽問都會(huì)避開已被抽問同學(xué);同時(shí)引入智能算法讓每位同學(xué)被抽點(diǎn)的幾率相同,從而提高課堂問題的公平性和效率。
2 系統(tǒng)功能構(gòu)架設(shè)計(jì)
2.1 總體構(gòu)架思路
該系統(tǒng)具有兩個(gè)登陸終端:學(xué)生端和教師端,具有不同的權(quán)限;可以分別用于機(jī)房教學(xué)環(huán)境和多媒體課堂。在多媒體課堂進(jìn)行教學(xué)時(shí),系統(tǒng)主要被教師用于點(diǎn)到和抽問,此時(shí)教師通過自己的工號(hào)登陸,可以進(jìn)行課堂點(diǎn)到和抽問。在點(diǎn)到或者抽問時(shí)可以采用順序和隨機(jī)兩種方式;當(dāng)在機(jī)房進(jìn)行教學(xué)時(shí),教師在點(diǎn)名或者抽問時(shí),學(xué)生可以通過自己的學(xué)號(hào)登陸后,自行查詢是否自己被抽點(diǎn),如果自己被點(diǎn)到,這時(shí)就需要進(jìn)行確認(rèn)。其簡(jiǎn)單的系統(tǒng)構(gòu)架如下圖1所示:
2.2 系統(tǒng)功能詳解
2.2.1 系統(tǒng)登錄
該系統(tǒng)采用兩級(jí)權(quán)限,通過賦予不同角色的用戶不同的權(quán)限來實(shí)現(xiàn)不同的功能。用戶可以自由選擇自己的用戶類型(老師/學(xué)生),然后輸入自己的用戶名以及密碼直接登陸,如果想要退出系統(tǒng)則可直接點(diǎn)擊取消。如圖2所示:
2.2.2 教師角色用戶功能說明
如果在登錄界面點(diǎn)擊教師類型并輸入賬號(hào)密碼后,則進(jìn)入如圖3所示的班級(jí)選擇界面,教師可以選擇專業(yè)和班級(jí),上課和下課時(shí)可以通過兩個(gè)不同的按鈕進(jìn)行點(diǎn)到,同時(shí)點(diǎn)到時(shí)有兩種點(diǎn)到方式可供選擇,如圖4所示。
1)順序點(diǎn)到方式;教師可以通過點(diǎn)擊上課點(diǎn)到--->開始點(diǎn)名按鈕,對(duì)全班同學(xué)進(jìn)行按學(xué)號(hào)順序點(diǎn)名,點(diǎn)名的結(jié)果可以直接顯示在多媒體教室的投影儀上;如果在機(jī)房上課,則對(duì)界面中出現(xiàn)某位同學(xué)信息,該同學(xué)就需要登錄學(xué)生端進(jìn)行選擇到或者未到。系統(tǒng)會(huì)自動(dòng)對(duì)每位同學(xué)的點(diǎn)到情況進(jìn)行記錄。2)隨機(jī)點(diǎn)到:如果老師只希望隨機(jī)抽點(diǎn)幾位同學(xué),那么老師可以點(diǎn)擊隨機(jī)點(diǎn)到按鈕(同順序點(diǎn)到方式一樣),此時(shí)教師在隨機(jī)點(diǎn)名時(shí)可以標(biāo)記學(xué)生到還是沒到;如圖5所示。
在課堂上老師如果想用隨機(jī)的方式來對(duì)學(xué)生進(jìn)行抽問,那么在學(xué)生回答完問題后,老師可以通過正確、錯(cuò)誤或者未到按鈕來對(duì)學(xué)生進(jìn)行加分、減分,從而學(xué)生的抽問情況進(jìn)行有效的記錄。如圖6所示。
同時(shí),老師如果希望在快要下課的時(shí)候考查下學(xué)生的出勤情況,看看學(xué)生有沒有偷跑的情況,則可以使用下課點(diǎn)到功能,通過點(diǎn)擊下課點(diǎn)到-->開始點(diǎn)名按鈕進(jìn)行開始點(diǎn)名,方式與上課點(diǎn)到相似,但是可以對(duì)“偷跑”學(xué)生進(jìn)行減分處理。
2.2.3 學(xué)生角色身份功能說明
學(xué)生可以通過登陸界面登陸圖1界面之后,會(huì)彈出學(xué)生信息查詢界面如圖7所示,學(xué)生可以在該界面點(diǎn)擊查詢按鈕,可以查詢自己每一節(jié)課的點(diǎn)到情況;系統(tǒng)里面可以顯示自己每節(jié)課被點(diǎn)到的情況和被抽問時(shí)的加減分?jǐn)?shù),里面對(duì)每一節(jié)課有詳細(xì)的日期顯示和點(diǎn)到記錄。
3 關(guān)鍵功能模塊代碼實(shí)現(xiàn)
該系統(tǒng)的主要功能是提供給教師實(shí)現(xiàn)點(diǎn)到和抽問功能,在登錄界面主要是進(jìn)行用戶身份的選擇,當(dāng)以教師身份進(jìn)入界面后,隨即可以進(jìn)行相應(yīng)的一些功能操作;其實(shí)該系統(tǒng)最主要的四個(gè)選擇是上課、下課、點(diǎn)到和抽問環(huán)節(jié);進(jìn)如不同的環(huán)節(jié)后再進(jìn)行下一步的操作?,F(xiàn)將各個(gè)環(huán)節(jié)的關(guān)鍵代碼說明如下:
1)點(diǎn)名界面的布局,使用了4個(gè)panel控件和一個(gè)SplitContainer,其中SplitContainer為父容器,在其左邊放置操作按鈕,上課、下課、抽問和點(diǎn)到。放置四個(gè)panel控件在SplitContainer的右邊,并且隱藏。當(dāng)點(diǎn)擊操作按鈕時(shí),實(shí)質(zhì)是為了讓panel控件出現(xiàn),并控制panel控件出現(xiàn)的位置;同時(shí)在四個(gè)panel控件中,各放置了一個(gè)點(diǎn)名界面。實(shí)現(xiàn)一個(gè)panel控件出現(xiàn)的主程序代碼如下:
private void xkbutton_Click(object sender, EventArgs e)
{
System.Drawing.Graphics graphics = this.CreateGraphics();
graphics.DrawLine(Pens.Black, 429, 0, 429, 652);
下課.Location = new Point(3, 3);
下課.Visible = true;
下課.Size = new Size(795, 569);
上課.Visible = false;
點(diǎn)名.Visible = false;
抽問.Visible = false;}
2)上下課順序點(diǎn)名的實(shí)現(xiàn)。在上課及下課的界面中點(diǎn)擊開始點(diǎn)名按鈕時(shí),程序?qū)⒏鶕?jù)選擇的班級(jí)在后臺(tái)創(chuàng)建一個(gè)新的表,當(dāng)點(diǎn)名時(shí),出現(xiàn)的同學(xué)信息將是這個(gè)表中的第一行數(shù)據(jù)記錄的同學(xué),下一個(gè)時(shí),程序?qū)?huì)把臨時(shí)創(chuàng)建的表中的第一行數(shù)據(jù)刪除,并再次顯示新的第一行數(shù)據(jù)記錄的同學(xué),依次實(shí)現(xiàn)順序點(diǎn)名,主要的程序代碼如下:
①根據(jù)選擇的班級(jí)創(chuàng)建臨時(shí)表,并按學(xué)號(hào)進(jìn)行排序
string banji = label1.Text;
string str = @"DataSource=DESKTOP-L9G0F3R\SQLEXPRESS; Initial Catalog=dianming;Integrated Security=True";
SqlConnection conn = new SqlConnection(str);
conn.Open();
string sql = "select * into linshi from Class where 班級(jí)='" + banji + "' order by 學(xué)號(hào)";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteScalar();
②顯示第一位同學(xué)的姓名學(xué)號(hào)并且刪除主要sql語句
string sql = "select top 1 學(xué)號(hào) from linshi ";
string sql = "select top 1 姓名 from linshi ";
string sql = "delete top (1) from linshi ";
3.3 隨機(jī)點(diǎn)名的實(shí)現(xiàn)
主要是根據(jù)老師選擇的班級(jí)的結(jié)果中,隨機(jī)選取一個(gè)記錄,然后將記錄顯示。并且已經(jīng)被抽取到的同學(xué)將會(huì)被記錄在表中,當(dāng)進(jìn)行下一次抽取的時(shí)候,系統(tǒng)將核對(duì)記錄表中的數(shù)據(jù),當(dāng)查到同一節(jié)課中該同學(xué)已經(jīng)被記錄,則將彈出提示,該同學(xué)已經(jīng)被點(diǎn)到過。主要代碼如下:
①隨機(jī)抽取的sql語句:
string sql = "select top 1學(xué)號(hào),NEWID() as random from Class where 班級(jí)='" + banji + "' order by random";
②已經(jīng)被抽取到的同學(xué)記錄,將不再被抽?。?/p>
string str = @"Data Source=DESKTOP-L9G0F3R\SQLEXPRESS;Initial Catalog=dianming;Integrated Security=True";
SqlConnection conn = new SqlConnection(str);
conn.Open();
string sql = "select * from chuqin where cast(日期 as date) between '" + vipdate + "' and dateadd(d, 1, '" + vipdate + "') and 學(xué)號(hào)='" + xuehao + "'";
//string sql2="";
SqlCommand cmd = new SqlCommand(sql, conn);
int a = Convert.ToInt32(cmd.ExecuteScalar());
if (a > 0)
{ MessageBox.Show("該同學(xué)今天已經(jīng)點(diǎn)到"); }
else{
string sql2 = "insert into chuqin (學(xué)號(hào),姓名,班級(jí),日期,上課點(diǎn)名) values('" + xuehao + "','" + xinming + "','" + banji + "','" + vipdate + "','" + qchuqin + "')";
SqlCommand cmd1 = new SqlCommand(sql2, conn);
int b = Convert.ToInt32(cmd1.ExecuteNonQuery());
if (b > 0)
{ MessageBox.Show("保存成功!");}
3.4 學(xué)生查詢記錄的實(shí)現(xiàn)
當(dāng)學(xué)生身份登陸之后,可以在界面點(diǎn)擊查詢看到自己的點(diǎn)名記錄,該界面主要使用了一個(gè)DataGridView控件,當(dāng)學(xué)生登陸時(shí),輸入自己的賬號(hào),數(shù)據(jù)庫將根據(jù)此來查詢到該生的信息,并將姓名學(xué)號(hào)都顯示出來。點(diǎn)擊查詢按鈕后,程序訪問數(shù)據(jù)庫中有關(guān)出勤的表,SqlDataAdapter填充DataSet,然后綁定給DataGridView,學(xué)生便能看到自己的有關(guān)出勤信息。相關(guān)代碼如下:
string str = @"Data Source=DESKTOP-L9G0F3R\SQLEXPRESS;Initial Catalog=dianming;Integrated Security=True";
SqlConnection conn = new SqlConnection(str);
conn.Open();
string sql = "select * from chuqin where 姓名='" + Stname + "' ";
SqlCommand cmd = new SqlCommand(sql, conn);
DataSet ds = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
conn.Close();
4 結(jié)束語與展望
該文提出了一種采用C#實(shí)現(xiàn)的不同權(quán)限的智能終端點(diǎn)到系統(tǒng)的設(shè)計(jì)方法。該系統(tǒng)的教師用戶可以通過順序和隨機(jī)的模式分別進(jìn)行上課點(diǎn)到和下課點(diǎn)到,同時(shí)老師可以在課堂上采用隨機(jī)抽問的方式對(duì)學(xué)生進(jìn)行考核,同時(shí)根據(jù)學(xué)生回答問題的情況對(duì)其進(jìn)行加分和減分操作;學(xué)生通過使用學(xué)生用戶角色登錄系統(tǒng)可以進(jìn)行點(diǎn)到確認(rèn)和多次課程的點(diǎn)到和抽問信息查詢,使用方便快捷。通過將近一學(xué)期的使用表明,該文提出的設(shè)計(jì)方案設(shè)計(jì)的點(diǎn)到系統(tǒng)的運(yùn)行是穩(wěn)定的,通過系統(tǒng)的應(yīng)用有效地提高了課堂的效率和課堂的出勤率,同時(shí)也減少了教師的工作量,在抽問環(huán)節(jié)引入了隨機(jī)方式,大大提高了學(xué)生參與課堂活動(dòng)的積極性,激發(fā)了學(xué)生的興趣。
作為一款輔助教學(xué)的智能系統(tǒng),該系統(tǒng)還有很多值得完善和改進(jìn)的地方:1)可以引入語音播報(bào)系統(tǒng),在系統(tǒng)進(jìn)行點(diǎn)到或者抽問時(shí),能夠直接通過教室的擴(kuò)音器直接播報(bào)出來;2)可以在系統(tǒng)中加入學(xué)生的圖像信息,當(dāng)出現(xiàn)學(xué)生的姓名和學(xué)號(hào)時(shí)能夠展示學(xué)生的圖像;3)在一學(xué)期的每一門課程結(jié)束過后,能夠?qū)С鰧W(xué)生每一門課程的課堂問答次數(shù),缺勤的次數(shù)等。
參考文獻(xiàn):
[1] 劉富漢.高校學(xué)生考勤制度淺議[J].湖南工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2011, 11(3): 97-98.
[2] 馬梅,樂偉明.基于指紋識(shí)別技術(shù)的考勤“點(diǎn)到”系統(tǒng)設(shè)計(jì)[J].電子技術(shù),2016(7).
[3] 白文慶,董小妮.基于嵌入式人臉識(shí)別考勤系統(tǒng)的設(shè)計(jì)[J].電腦開發(fā)與應(yīng)用, 2015(1):71-72.
[4] 龔根華,王煒立.ADO.NET數(shù)據(jù)訪問技術(shù)[M].北京: 清華大學(xué)出版社,2016.
[5] 孫踐知,張迎新,肖媛媛.C#程序設(shè)計(jì)[M].北京: 清華大學(xué)出版社,2014.
[6] 章通,陳金玉. 網(wǎng)絡(luò)指紋考勤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(2): 73-75.
[7] 陳燕俐,蔡捷.網(wǎng)絡(luò)指紋考勤管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].工業(yè)控制計(jì)算機(jī),2005, 18(12): 52-53.
[8] 段少雄,田捷,李恒華.高效指紋考勤系統(tǒng)的研究與設(shè)計(jì)[J].計(jì)算機(jī)工程,2003, 29(9): 37-38.