程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 員工考勤信息管理小程序,考勤信息管理小程序

員工考勤信息管理小程序,考勤信息管理小程序

編輯:C#入門知識

員工考勤信息管理小程序,考勤信息管理小程序


雖然這是個小程序,但是呢還是用到了許多的知識點的.主要是""使用集合組織相關數據."",這個知識點非常重要.

在以後搞大型的項目,絕對離不開"集合組織數據".例如:ArrayList動態存儲數據,HashTable的數據結構(哈希表).

泛型集合:List<T>和Dictionary<K,V>

泛型類.

下面呢就是一個"員工信息管理"小程序.用來強化知識點.

首先,創幾個類:

SE類

  public  class SE
    {
        public string ID { get; set; }
        public int Age { get; set; }
        public Sex Gender { get; set; }
        public string Name { get; set; }
    }

Gen類(枚舉)

  public  class Gen
    {      
     //   public static 實現考勤信息管理.Gender 男 { get; set; }
    }
 
  public enum Sex
  {
      
      男, 女
  }

Record類

{
  public  class Record
    {
      //簽到時間
      public DateTime SingInTime { get; set; }
      //簽退時間
      public DateTime SingOutTime { get; set; }
      //工號
      public string ID { get; set; }
      //員工姓名
      public string Name { get; set; }

 管理信息:

添加信息:

代碼段:

 public int MaintanceType { get; set; }
        //保存父窗體的引用
        public FrmMain FrmParent { get; set; }
        //初始化

        //保存按鈕的響應
        private void btnOk_Click(object sender, EventArgs e)
        {
            try
            {
                SE pr = new SE();
                pr.ID = this.txtID1.Text.Trim();//工號
                pr.Age = Int32.Parse(this.txtAge1.Text.Trim());//年齡

                if (this.cmbgender1.SelectedIndex.ToString() == "男")//性別 
                {
                    pr.Gender = Sex.男;
                    //這個也可以:pr.Gender=(Sex)(Enum.Parse(typeof(Sex),"男"));
                }
                else
                {
                    pr.Gender = Sex.女;
                }
                pr.Name = this.txtName1.Text.Trim();//名字
                //添加操作
                //工號唯一性驗證
                if (this.MaintanceType == 1)
                {
                    foreach (SE item in FrmParent.programmerList)
                    {
                        if (item.ID == pr.ID)
                        {
                            MessageBox.Show("此工號已存在");
                            return;

                        }
                    }
                    FrmParent.programmerList.Add(pr);
                }
                this.Close();
            }
            catch (Exception)
            {
                MessageBox.Show("出錯啦");

            }
            finally
            {

                this.FrmParent.BindGrid(FrmParent.programmerList);
            }

 

看看主界面:

主界面的主要代碼

查詢信息:

 

  //查詢信息
        private void btnLook_Click(object sender, EventArgs e)
        {
            //根據員工號進行模糊查詢
            List<SE> teapList = new List<SE>();//用臨時列表保存查詢到的信息
            foreach (SE item in this.programmerList)
            {
                if (item.ID.IndexOf(this.txtID.Text.Trim()) != -1)//indexof()實現模糊查詢
                {
                    teapList.Add(item);

                }

            }
            this.dgvlist.DataSource = new BindingList<SE>(teapList);

        }

 

刪除信息:

   private void toolStripButton3_Click(object sender, EventArgs e)
        {
            if (this.dgvlist.SelectedRows.Count == 0)
            {
                MessageBox.Show("你還未選中要刪除的信息,請選擇!");
                return;

            }
            DialogResult result = MessageBox.Show("確認要刪除嗎?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
            if (DialogResult.OK != result)
            {
                return;
            }
            string sid = dgvlist.CurrentRow.Cells["ID"].Value.ToString();
            foreach (SE item in programmerList)
            {
                if (item.ID == sid)
                {
                    programmerList.Remove(item);
                    break;

                }
            }
            //刷新
            BindGrid(programmerList);
            MessageBox.Show("刪除成功!");
        }

簽到:

代碼段:

 //簽到菜單項,
        private void 簽到ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //驗證
            //確保有選中的行
            if (this.dgvlist.SelectedRows.Count != 1)
            {
                MessageBox.Show("請選擇要簽到的人");
                return;
            }
            //確保沒有簽到過
            string id = dgvlist.CurrentRow.Cells["ID"].Value.ToString();
            foreach (string item in recordList.Keys)
            {
                if (id == item)
                {
                    MessageBox.Show("您以前到過");
                    return;
                }

            }
            //執行簽到
            Record record = new Record();
            record.ID = id;
            record.Name = dgvlist.CurrentRow.Cells["Name"].Value.ToString();
            record.SingInTime = DateTime.Now;//獲取當前系統時間
            this.recordList.Add(record.ID, record);//添加到記錄中
            MessageBox.Show("簽到成功!!");

        }

簽退:

  //簽退操作
        private void 簽退ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //確保有選中行
            if (this.dgvlist.SelectedRows.Count != 1)
            {
                MessageBox.Show("請選擇!");
                return;
            }
            string id = dgvlist.CurrentRow.Cells["ID"].Value.ToString();
            bool isOut = false;//標識是否已簽過到
            foreach (string item in recordList.Keys)
            {
                if (item == id)
                {
                    //執行簽到,設置簽退時間
                    this.recordList[item].SingOutTime = DateTime.Now;
                    MessageBox.Show("簽退成功!");
                    isOut = true;
                    break;
                }
            }
            if (!isOut)
            {
                MessageBox.Show("很抱歉,尚未簽到!");
            }
        }


打卡記錄:

 

   //打卡記錄
        public Dictionary<string, Record> recordList { get; set; }
        //數據綁定
        private void BindRecords()
        {        
            lblcount.Text = "共有"+recordList.Count+"條打卡記錄";
            //將Dictionary<K,V>綁定到DataGridView控件
          
            BindingSource bs = new BindingSource();
            #region 綁定數據源 BindingSource
            /*
           *    封裝窗體的數據源。
             public BindingSource();
      //
      // 摘要:
      //     初始化 System.Windows.Forms.BindingSource 類的新實例,並將 System.Windows.Forms.BindingSource
      //     添加到指定的容器。
      //
      // 參數:
      //   container:
      //     要將當前 System.Windows.Forms.BindingSource 添加到的 System.ComponentModel.IContainer。
          
             * 
                    public BindingSource(IContainer container);
        //
        // 摘要:
        //     用指定的數據源和數據成員初始化 System.Windows.Forms.BindingSource 類的新實例。
        //
        // 參數:
        //   dataSource:
        //     System.Windows.Forms.BindingSource 的數據源。
        //
        //   dataMember:
        //     要綁定到的數據源中的特定列或列表名稱。
        public BindingSource(object dataSource, string dataMember);

        // 摘要:
        //     獲取一個值,該值指示是否可以編輯基礎列表中的項。
        //
        // 返回結果:
        //     true 指示列表項可以編輯;否則為 false。
             
             
             */
            #endregion
           
            bs.DataSource = recordList.Values;
            dgvlist.DataSource = bs;

        }

        private void FrmRecord_Load(object sender, EventArgs e)
        {
            BindRecords();
        }

 

這樣最後呢,就可以完完整整的掌握了這些知識點------------------------------------

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved