李忠玉 甘成 許小旭 余林峰
摘要:考勤點到和課堂問答是高校教學中的必備環(huán)節(jié),為了提高學生出勤率和課堂效率,減少教師在課堂考勤的時間,該文開發(fā)了一款基于C#語言的課堂智能點名系統(tǒng);該系統(tǒng)采用隨機算法進行點名,自動記錄出勤情況;在問題環(huán)節(jié),自動屏蔽抽問過的學生。課堂實踐表明,該系統(tǒng)的運行穩(wěn)定有序,能夠改善課堂效率,有一定的推廣意義和實用價值。
關(guān)鍵詞:C#程序開發(fā);智能終端;系統(tǒng)設(shè)計;考勤管理
中圖分類號:TP311 文獻標識碼:A 文章編號: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 背景
課堂考勤和隨機問答是高??己藢W生平時成績的重要環(huán)節(jié);任課教師和輔導員可以通過考勤情況和課堂問答的效果,來綜合評價學生并對日常教學和管理做出相應的調(diào)整。研究發(fā)現(xiàn)目前大多數(shù)考勤制度嚴厲而實施松散[1];很多任課教師或者輔導員均采用傳統(tǒng)紙質(zhì)點名或者課上簽到的方式;有的信息化手段應用比較良好的高校采用APP進行點到。但是采用傳統(tǒng)的點到方式不僅費時費力,而且會產(chǎn)生考勤數(shù)據(jù)統(tǒng)計不方便、代替答到的情況發(fā)生;如果采用APP進行定位簽到的話,又會出現(xiàn)學生“自由自在玩手機”的現(xiàn)象發(fā)生。對于考勤點到系統(tǒng),許多教師進行研究的時候多融入嵌入式技術(shù),有的引入指紋考勤系統(tǒng)[2],有的采用新型的人臉識別技術(shù)[3]。雖然將這些新型的信息技術(shù)應用到課程上可以有效地避免學生間“代替”等現(xiàn)象的發(fā)生,但是將嵌入式技術(shù)融入課堂點到系統(tǒng)會無形中增加教學的成本,也會在一定程度上耽誤課堂教學的時間。例如一款合適的人臉識別考勤系統(tǒng)價格比較昂貴;又如果采用指紋簽到系統(tǒng),那可能會出現(xiàn)課間學生在教室門口“排長龍”打指紋的現(xiàn)象。鑒于此,該文提出了一款基于C#的智能終端點到系統(tǒng)的設(shè)計方案,該方案可以直接將點到系統(tǒng)的安裝包安裝在教師終端電腦上,老師點擊開始按鈕就可以自動點到,在投影儀上輸出學號、姓名和班級等相關(guān)信息,對學生進行考勤管理。在進行課堂問答時,智能終端能夠自動標記已被抽問的同學,每次抽問都會避開已被抽問同學;同時引入智能算法讓每位同學被抽點的幾率相同,從而提高課堂問題的公平性和效率。
2 系統(tǒng)功能構(gòu)架設(shè)計
2.1 總體構(gòu)架思路
該系統(tǒng)具有兩個登陸終端:學生端和教師端,具有不同的權(quán)限;可以分別用于機房教學環(huán)境和多媒體課堂。在多媒體課堂進行教學時,系統(tǒng)主要被教師用于點到和抽問,此時教師通過自己的工號登陸,可以進行課堂點到和抽問。在點到或者抽問時可以采用順序和隨機兩種方式;當在機房進行教學時,教師在點名或者抽問時,學生可以通過自己的學號登陸后,自行查詢是否自己被抽點,如果自己被點到,這時就需要進行確認。其簡單的系統(tǒng)構(gòu)架如下圖1所示:
2.2 系統(tǒng)功能詳解
2.2.1 系統(tǒng)登錄
該系統(tǒng)采用兩級權(quán)限,通過賦予不同角色的用戶不同的權(quán)限來實現(xiàn)不同的功能。用戶可以自由選擇自己的用戶類型(老師/學生),然后輸入自己的用戶名以及密碼直接登陸,如果想要退出系統(tǒng)則可直接點擊取消。如圖2所示:
2.2.2 教師角色用戶功能說明
如果在登錄界面點擊教師類型并輸入賬號密碼后,則進入如圖3所示的班級選擇界面,教師可以選擇專業(yè)和班級,上課和下課時可以通過兩個不同的按鈕進行點到,同時點到時有兩種點到方式可供選擇,如圖4所示。
1)順序點到方式;教師可以通過點擊上課點到--->開始點名按鈕,對全班同學進行按學號順序點名,點名的結(jié)果可以直接顯示在多媒體教室的投影儀上;如果在機房上課,則對界面中出現(xiàn)某位同學信息,該同學就需要登錄學生端進行選擇到或者未到。系統(tǒng)會自動對每位同學的點到情況進行記錄。2)隨機點到:如果老師只希望隨機抽點幾位同學,那么老師可以點擊隨機點到按鈕(同順序點到方式一樣),此時教師在隨機點名時可以標記學生到還是沒到;如圖5所示。
在課堂上老師如果想用隨機的方式來對學生進行抽問,那么在學生回答完問題后,老師可以通過正確、錯誤或者未到按鈕來對學生進行加分、減分,從而學生的抽問情況進行有效的記錄。如圖6所示。
同時,老師如果希望在快要下課的時候考查下學生的出勤情況,看看學生有沒有偷跑的情況,則可以使用下課點到功能,通過點擊下課點到-->開始點名按鈕進行開始點名,方式與上課點到相似,但是可以對“偷跑”學生進行減分處理。
2.2.3 學生角色身份功能說明
學生可以通過登陸界面登陸圖1界面之后,會彈出學生信息查詢界面如圖7所示,學生可以在該界面點擊查詢按鈕,可以查詢自己每一節(jié)課的點到情況;系統(tǒng)里面可以顯示自己每節(jié)課被點到的情況和被抽問時的加減分數(shù),里面對每一節(jié)課有詳細的日期顯示和點到記錄。
3 關(guān)鍵功能模塊代碼實現(xiàn)
該系統(tǒng)的主要功能是提供給教師實現(xiàn)點到和抽問功能,在登錄界面主要是進行用戶身份的選擇,當以教師身份進入界面后,隨即可以進行相應的一些功能操作;其實該系統(tǒng)最主要的四個選擇是上課、下課、點到和抽問環(huán)節(jié);進如不同的環(huán)節(jié)后再進行下一步的操作。現(xiàn)將各個環(huán)節(jié)的關(guān)鍵代碼說明如下:
1)點名界面的布局,使用了4個panel控件和一個SplitContainer,其中SplitContainer為父容器,在其左邊放置操作按鈕,上課、下課、抽問和點到。放置四個panel控件在SplitContainer的右邊,并且隱藏。當點擊操作按鈕時,實質(zhì)是為了讓panel控件出現(xiàn),并控制panel控件出現(xiàn)的位置;同時在四個panel控件中,各放置了一個點名界面。實現(xiàn)一個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;
點名.Visible = false;
抽問.Visible = false;}
2)上下課順序點名的實現(xiàn)。在上課及下課的界面中點擊開始點名按鈕時,程序?qū)⒏鶕?jù)選擇的班級在后臺創(chuàng)建一個新的表,當點名時,出現(xiàn)的同學信息將是這個表中的第一行數(shù)據(jù)記錄的同學,下一個時,程序?qū)雅R時創(chuàng)建的表中的第一行數(shù)據(jù)刪除,并再次顯示新的第一行數(shù)據(jù)記錄的同學,依次實現(xiàn)順序點名,主要的程序代碼如下:
①根據(jù)選擇的班級創(chuàng)建臨時表,并按學號進行排序
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 班級='" + banji + "' order by 學號";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteScalar();
②顯示第一位同學的姓名學號并且刪除主要sql語句
string sql = "select top 1 學號 from linshi ";
string sql = "select top 1 姓名 from linshi ";
string sql = "delete top (1) from linshi ";
3.3 隨機點名的實現(xiàn)
主要是根據(jù)老師選擇的班級的結(jié)果中,隨機選取一個記錄,然后將記錄顯示。并且已經(jīng)被抽取到的同學將會被記錄在表中,當進行下一次抽取的時候,系統(tǒng)將核對記錄表中的數(shù)據(jù),當查到同一節(jié)課中該同學已經(jīng)被記錄,則將彈出提示,該同學已經(jīng)被點到過。主要代碼如下:
①隨機抽取的sql語句:
string sql = "select top 1學號,NEWID() as random from Class where 班級='" + banji + "' order by random";
②已經(jīng)被抽取到的同學記錄,將不再被抽?。?/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 學號='" + xuehao + "'";
//string sql2="";
SqlCommand cmd = new SqlCommand(sql, conn);
int a = Convert.ToInt32(cmd.ExecuteScalar());
if (a > 0)
{ MessageBox.Show("該同學今天已經(jīng)點到"); }
else{
string sql2 = "insert into chuqin (學號,姓名,班級,日期,上課點名) 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 學生查詢記錄的實現(xiàn)
當學生身份登陸之后,可以在界面點擊查詢看到自己的點名記錄,該界面主要使用了一個DataGridView控件,當學生登陸時,輸入自己的賬號,數(shù)據(jù)庫將根據(jù)此來查詢到該生的信息,并將姓名學號都顯示出來。點擊查詢按鈕后,程序訪問數(shù)據(jù)庫中有關(guān)出勤的表,SqlDataAdapter填充DataSet,然后綁定給DataGridView,學生便能看到自己的有關(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#實現(xiàn)的不同權(quán)限的智能終端點到系統(tǒng)的設(shè)計方法。該系統(tǒng)的教師用戶可以通過順序和隨機的模式分別進行上課點到和下課點到,同時老師可以在課堂上采用隨機抽問的方式對學生進行考核,同時根據(jù)學生回答問題的情況對其進行加分和減分操作;學生通過使用學生用戶角色登錄系統(tǒng)可以進行點到確認和多次課程的點到和抽問信息查詢,使用方便快捷。通過將近一學期的使用表明,該文提出的設(shè)計方案設(shè)計的點到系統(tǒng)的運行是穩(wěn)定的,通過系統(tǒng)的應用有效地提高了課堂的效率和課堂的出勤率,同時也減少了教師的工作量,在抽問環(huán)節(jié)引入了隨機方式,大大提高了學生參與課堂活動的積極性,激發(fā)了學生的興趣。
作為一款輔助教學的智能系統(tǒng),該系統(tǒng)還有很多值得完善和改進的地方:1)可以引入語音播報系統(tǒng),在系統(tǒng)進行點到或者抽問時,能夠直接通過教室的擴音器直接播報出來;2)可以在系統(tǒng)中加入學生的圖像信息,當出現(xiàn)學生的姓名和學號時能夠展示學生的圖像;3)在一學期的每一門課程結(jié)束過后,能夠?qū)С鰧W生每一門課程的課堂問答次數(shù),缺勤的次數(shù)等。
參考文獻:
[1] 劉富漢.高校學生考勤制度淺議[J].湖南工業(yè)職業(yè)技術(shù)學院學報,2011, 11(3): 97-98.
[2] 馬梅,樂偉明.基于指紋識別技術(shù)的考勤“點到”系統(tǒng)設(shè)計[J].電子技術(shù),2016(7).
[3] 白文慶,董小妮.基于嵌入式人臉識別考勤系統(tǒng)的設(shè)計[J].電腦開發(fā)與應用, 2015(1):71-72.
[4] 龔根華,王煒立.ADO.NET數(shù)據(jù)訪問技術(shù)[M].北京: 清華大學出版社,2016.
[5] 孫踐知,張迎新,肖媛媛.C#程序設(shè)計[M].北京: 清華大學出版社,2014.
[6] 章通,陳金玉. 網(wǎng)絡指紋考勤系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機應用與軟件,2011,28(2): 73-75.
[7] 陳燕俐,蔡捷.網(wǎng)絡指紋考勤管理系統(tǒng)的設(shè)計與實現(xiàn)[J].工業(yè)控制計算機,2005, 18(12): 52-53.
[8] 段少雄,田捷,李恒華.高效指紋考勤系統(tǒng)的研究與設(shè)計[J].計算機工程,2003, 29(9): 37-38.