六孵延、打卡,查詢亲配,統(tǒng)計系統(tǒng)功能實現(xiàn)

1尘应、打卡

1)效果圖
捕獲.PNG
2)畫面實現(xiàn)效果

可以打開串口惶凝,進行卡片信息寫入并讀取卡號實現(xiàn)打卡功能。

3)重要代碼片段及詳細描述

1犬钢、尋卡苍鲜,將RFID的卡號讀出來

string response = "";
            serialPort1.Write(ISO15693Card.COMMAND_WRITE_REG);
            Thread.Sleep(MILLISECOND_IN_SLEEP);
            if (serialPort1.BytesToRead > 0) response = serialPort1.ReadExisting();

            serialPort1.Write(ISO15693Card.COMMAND_SET_AGC);
            Thread.Sleep(MILLISECOND_IN_SLEEP);
            if (serialPort1.BytesToRead > 0) response = serialPort1.ReadExisting();

            serialPort1.Write(ISO15693Card.COMMAND_SET_RECV_MODE);
            Thread.Sleep(MILLISECOND_IN_SLEEP);
            if (serialPort1.BytesToRead > 0) response = serialPort1.ReadExisting();

            serialPort1.Write(ISO15693Card.COMMAND_INVEN_CARD);// 尋卡
            Thread.Sleep(MILLISECOND_IN_SLEEP);
            if (serialPort1.BytesToRead > 0) response = serialPort1.ReadExisting();

            List<ISO15693Card> cards = ISO15693CardHandler.InventoryCard(response);

2、讀取卡上第00塊的數據玷犹,獲得職員編號

 String stuffId = ReadSingleBlock(ISO15693CardHandler.CovertEndian(cards[0].ID), "00"); 

3混滔、向數據庫中插入一條打卡記錄,插入成功后顯示打卡成功

 String connStr = ConfigurationManager.ConnectionStrings["Attendance system"].ConnectionString;
            SqlConnection sqlConn = new SqlConnection(connStr);
            try
            {
                // 連接數據庫
                sqlConn.Open();

                // 構造命令
                String sqlStr = "insert into  record(employee_id, date, time, machine_id) VALUES(@Employee_id, @date,@time, @machine_id)";
                
                SqlCommand cmd = new SqlCommand(sqlStr, sqlConn);

                // SQL字符串參數賦值
                cmd.Parameters.Add(new SqlParameter("@employee_id", stuffId));
                cmd.Parameters.Add(new SqlParameter("@date", DateTime.Now.ToString("yyyy - MM - dd").ToString()));
                cmd.Parameters.Add(new SqlParameter("@time", DateTime.Now.ToString("HH: mm:ss").ToString()));
                cmd.Parameters.Add(new SqlParameter("@machine_id", '1'));


                // 將命令發(fā)送給數據庫
                int res = cmd.ExecuteNonQuery();

                // 根據返回值判斷是否插入成功
                if (res != 0)
                {
                    MessageBox.Show("打卡成功");
                }
                else
                {
                    MessageBox.Show("打卡失敗");
                }
            }
            catch (Exception exp)
            {
                MessageBox.Show("訪問數據庫錯誤:" + exp.Message);
            }
            finally
            {
                sqlConn.Close();
            }
            

        }

2歹颓、查詢

1)效果圖
員工查詢.gif
2)畫面實現(xiàn)效果

員工登錄系統(tǒng)后可查詢自己的歷史打卡記錄坯屿;
管理員登錄系統(tǒng)后可查詢所有員工的打卡記錄。

3)重要代碼片段及詳細描述

1巍扛、窗口加載時领跛,顯示當前時間,顯示當前用戶名

  private void MainForm_Load(object sender, EventArgs e)
        {
           
            // TODO: 這行代碼將數據加載到表“AttendanceDataSet.record”中电湘。您可以根據需要移動或刪除它隔节。
            this.recordTableAdapter.Fill(this.AttendanceDataSet.record);
            this.tssl_CurrentTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            this.tssl_User.Text = UserInfo.userQx + UserInfo.userName;
        }

2、員工查詢打卡信息

  private void tsmi_Search_Click(object sender, EventArgs e)
        {
            RecordForm recordForm = new RecordForm();
            recordForm.MdiParent = this;
            recordForm.WindowState = FormWindowState.Maximized;
            recordForm.Show();
        }

3寂呛、工作時長計算

String sqlStr = @"select t4.department, t4.name, t3.date, t3.start_time, t3.end_time, t3.diff from (
                                   select t1.employee_id, t1.date, t1.time as start_time, t2.time as end_time, datediff(n,t1.time,t2.time) as diff 
                                   from record t1
                                   inner join record t2 
                                   on t1.date = t2.date 
                                   and t1.employee_id=t2.employee_id 
                                   and t1.machine_id=1 
                                   and t2.machine_id=2
                                   and t1.date>=@begin
                                   and t1.date<=@end
                               ) t3, employee t4 where t3.employee_id=t4.id and t3.diff<540 and t4.department=@department";

3怎诫、統(tǒng)計

1)效果圖
統(tǒng)計.PNG

詳情.PNG
2)畫面實現(xiàn)效果

管理員登錄系統(tǒng),可以查看統(tǒng)計部門考勤情況

3)重要代碼片段及詳細描述

1贷痪、查看部門考勤


        private void 統(tǒng)計部門考勤DToolStripMenuItem_Click(object sender, EventArgs e)
        {
            BmRecordForm bmrecordForm = new BmRecordForm();
            bmrecordForm.MdiParent = this;
            bmrecordForm.WindowState = FormWindowState.Maximized;
            bmrecordForm.Show();
        }

2幻妓、連接到數據庫

 String connStr = ConfigurationManager.ConnectionStrings["Attendance"].ConnectionString;
            SqlConnection sqlConn = new SqlConnection(connStr);

            try
            {
                sqlConn.Open();
                {
                    String sqlStr = @"select t4.department, t4.name, t3.date, t3.start_time, t3.end_time, t3.diff from (
                                    select t1.employee_id, t1.date, t1.time as start_time, t2.time as end_time, datediff(n,t1.time,t2.time) as diff 
                                    from record t1
                                    inner join record t2 
                                    on t1.date = t2.date 
                                    and t1.employee_id=t2.employee_id 
                                    and t1.machine_id=1 
                                    and t2.machine_id=2
                                    and t1.date>=@begin
                                    and t1.date<=@end
                                ) t3, employee t4 where t3.employee_id=t4.id and t3.diff<540 and t4.department=@department";

 SqlCommand cmd = new SqlCommand(sqlStr, sqlConn);
                    cmd.Parameters.Add(new SqlParameter("@begin", this.begin.ToShortDateString()));
                    cmd.Parameters.Add(new SqlParameter("@end", this.end.ToShortDateString()));
                    cmd.Parameters.Add(new SqlParameter("@department", this.department));

                    SqlDataAdapter adp = new SqlDataAdapter();
                    adp.SelectCommand = cmd;

3、綁定數據表

                 DataSet ds = new DataSet();
                    // 自定義一個表(MyGoods)來標識數據庫的GOODS表
                    adp.Fill(ds, "Attendance");

                    // 指定DataGridView的數據源為DataSet的MyGoods表
                    this.dataGridView1.DataSource = ds.Tables["Attendance"];
                }
            }
            catch (Exception exp)
            {
                MessageBox.Show("訪問數據庫錯誤:" + exp.Message);

            }
            finally
            {
                sqlConn.Close();
            }
        }

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末劫拢,一起剝皮案震驚了整個濱河市肉津,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌舱沧,老刑警劉巖妹沙,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異熟吏,居然都是意外死亡距糖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門牵寺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悍引,“玉大人,你說我怎么就攤上這事帽氓∪そ铮” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵黎休,是天一觀的道長浓领。 經常有香客問我玉凯,道長,這世上最難降的妖魔是什么镊逝? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任壮啊,我火速辦了婚禮嫉鲸,結果婚禮上撑蒜,老公的妹妹穿的比我還像新娘。我一直安慰自己玄渗,他們只是感情好座菠,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著藤树,像睡著了一般浴滴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上岁钓,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天升略,我揣著相機與錄音,去河邊找鬼屡限。 笑死品嚣,一個胖子當著我的面吹牛,可吹牛的內容都是我干的钧大。 我是一名探鬼主播翰撑,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼啊央!你這毒婦竟也來了斯够?” 一聲冷哼從身側響起案怯,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后定铜,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡踢匣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年秃诵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帐我。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡坎炼,死狀恐怖,靈堂內的尸體忽然破棺而出拦键,到底是詐尸還是另有隱情谣光,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布芬为,位于F島的核電站萄金,受9級特大地震影響蟀悦,放射性物質發(fā)生泄漏。R本人自食惡果不足惜氧敢,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一日戈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧孙乖,春花似錦浙炼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至恋拷,卻和暖如春资厉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蔬顾。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工宴偿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人诀豁。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓窄刘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親且叁。 傳聞我的和親對象是個殘疾皇子都哭,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354