1. 程式人生 > >豐富“WinForms” 的一個別樣"項目"(學生管理)

豐富“WinForms” 的一個別樣"項目"(學生管理)

單擊 () 下拉框 equal 功能 void each 點擊 ear

一個別樣的WinForms項目,他並沒多麽的新穎,但是它的用處確實有點多,或許會有你需要的地方;如果你對WinForms中那麽多控件無法把握,又或者是你根本就不懂,那我覺得你應該好好看看,如果一個人的人生命運無法去選擇時,那我覺得接受它將是沖刺命運終點的最好動力,一切的不公平都是你為了躲避困難而找的借口,年輕人就需要不平坦的人生道路,通過刻苦奮鬥得來的果實永遠是最甜、平坦的人生亦是最幸福的瞬間。

那首先就是項目的框架分別是:登錄(FrmLogin )——>主界面(FrmMain)——>修改密碼(FrmUpdate)——>添加/修改/刪除學生基本信息等。

框架搭好之後,我們了解一些框架內的代碼吧!至於具體的一些控件呢!只能是自己慢慢去看看,有些註意點大家可以記下,在控件生成後要及時去修改控件的“Name”的屬性,如果夠專業就盡量取專業點名字,那樣對你可能會有幫助的。

當界面形成後,事件會是你填寫代碼的最大障礙,所以WinForms的幾個事件需要認真記住:(單擊)Click,當界面顯示在眼前就形成的(Load),窗體正在運行的(FormClosing),(鼠標在界面移動)mouseClick

1.登錄界面(FrmLogin)

技術分享圖片

點擊登陸進去的代碼:

技術分享圖片
   string str = "Data source=.;Initial catalog=Myschool;Uid=sa";
            SqlConnection con = new SqlConnection(str);
            string sql = "select count(1) from student where studentname=‘"+txtUserName.Text+"‘ and Loginpwd=‘"+txtPwd.Text+"‘";
            SqlCommand cmd = new SqlCommand(sql,con);
            try
            {
                con.Open();
                int count=Convert.ToInt32(cmd.ExecuteScalar());
                if (count>0)
                {
                 //隱藏原界面
                    this.Hide();
                //跳轉至主界面
                    FormMain frm = new FormMain();
                    Tool.pwd = txtPwd.Text;
                    frm.Show();
                }
               
            }
            catch (Exception)
            {

                MessageBox.Show("出現異常");
            }
            finally 
            {
                con.Close();
            }
技術分享圖片

2.跳轉主界面(FrmMain)

技術分享圖片

菜單控件,工具控件、右鍵(contextMenuStrip)控件,ListView控件、視圖等

技術分享圖片

其中有ListView五大視圖:

1.大圖標(LargeIcon)

2.小圖標(SmallIcon)

3.列表(List)

4.詳細信息(Detail)

5.平鋪(Tile)

生成上方主界面ListView代碼:

技術分享圖片
 private void btnBig_Click(object sender, EventArgs e)
        {
            //設置listview的屬性view為大圖標
            lvlist.View = View.LargeIcon;
        }

        private void btnSmall_Click(object sender, EventArgs e)
        {
            //設置listview的屬性view為小圖標
            lvlist.View = View.SmallIcon;
        }

        private void btnTile_Click(object sender, EventArgs e)
        {
            //設置listview的屬性view為平鋪
            lvlist.View = View.Tile;
        }

        private void btnList_Click(object sender, EventArgs e)
        {
            //設置listview的屬性view為列表
            lvlist.View = View.List;

        }

        private void btnDetails_Click(object sender, EventArgs e)
        {
            //設置listview的屬性view為詳細信息
            lvlist.View = View.Details;
        }
技術分享圖片

跳轉至其它的各個功能的窗體:

技術分享圖片
        private void TsmiUpdate_Click(object sender, EventArgs e)
        {
            //修改密碼
            FrmUpdate frm = new FrmUpdate();
            frm.Show();
        }

        private void lvlist_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void StuName_Click(object sender, EventArgs e)
        {
            //查找
            this.Hide();
            FrmColor frm = new FrmColor();
            frm.Show();
        }
技術分享圖片

3.修改密碼(FrmUpdate)

技術分享圖片

技術分享圖片

判斷密碼是否為空,修改密碼是否成功

技術分享圖片
 private void btnupdate_Click(object sender, EventArgs e)
        {
             string name = string.Empty;
            if (txtoldpwd.Text==name)
            {
               DialogResult result=MessageBox.Show("原密碼為空","通知",MessageBoxButtons.YesNo,MessageBoxIcon.Information);
               if (result==DialogResult.No)
               {
                   this.Close();
               }
            }
             if (txtnewpwd.Text == name)
            {
                DialogResult result = MessageBox.Show("新密碼密碼為空", "通知", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                if (result == DialogResult.No)
                {
                    this.Close();
                }
            }
             if(txtOK.Text == name)
            {
                DialogResult result = MessageBox.Show("確認密碼為空", "通知", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                if (result == DialogResult.No)
                {
                    this.Close();
                }
            }
             if (txtoldpwd.Text != name && txtnewpwd.Text != name && txtOK.Text != name)
             {
                 string str = "Data source=.;Initial catalog=Myschool;Uid=sa";
                 SqlConnection conn = new SqlConnection(str);
                 string sql = "update student set Loginpwd=‘" + txtnewpwd.Text + "‘ where Loginpwd=‘" + txtoldpwd.Text + "‘";
                 SqlCommand cmd = new SqlCommand(sql, conn);
                 try
                 {
                     conn.Open();
                     if (txtOK.Text.Equals(txtnewpwd.Text))
                     {
                         int count = cmd.ExecuteNonQuery();
                         if (count > 0)
                         {
                             MessageBox.Show("修改成功");
                         }
                     }                                    
                 }
                 catch (Exception)
                 {

                     MessageBox.Show("異常!"); ;
                 }
                 finally
                 {
                     conn.Close();
                 }
             }
        }
        private void FrmUpdate_Load(object sender, EventArgs e)
        {
            txtoldpwd.Text = Tool.pwd;
        }
       private void btncancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }
技術分享圖片

4.查找學生信息(FrmReseach)

技術分享圖片

技術分享圖片

從查找可以跳轉到添加/修改/刪除窗體

技術分享圖片
  private void btnselect_Click(object sender, EventArgs e)
        {
            UpdateSelect();
        }
        //按學生編號查找的方法
        public void LoadDataFromDBToListView(string sql)
        {
            string str = "data source=.;initial catalog=MySchool;uid=sa";
            SqlConnection con = new SqlConnection(str);

            SqlCommand cmd = new SqlCommand(sql, con);
            try
            {
                con.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            //每從DB中讀取出一條數據,需要形成一個ListViewItem對象,代表的是ListView中的一行
                            int stuNo = Convert.ToInt32(dr["studentno"]);
                            //第二列 學生名字
                            string stuName = Convert.ToString(dr["studentname"]);
                            //第三列  性別
                            string stugender = Convert.ToString(dr["gender"]);
                            //第四列  年級名稱
                            string gname = Convert.ToString(dr["gradename"]);
                            //第五列  電話
                            string phone = Convert.ToString(dr["phone"]);
                            //第六列   地址
                            string address = Convert.ToString(dr["address"]);
                            //第七列   郵箱
                            string email = Convert.ToString(dr["email"]);
                            //第八列   出生日期
                            string birthday = Convert.ToString(dr["birthday"]);
                            ListViewItem lvItem = new ListViewItem(stuNo.ToString());
                            lvItem.SubItems.Add(stuName);
                            lvItem.SubItems.Add(stugender);
                            lvItem.SubItems.Add(gname);
                            lvItem.SubItems.Add(phone);
                            lvItem.SubItems.Add(address);
                            lvItem.SubItems.Add(email);
                            lvItem.SubItems.Add(birthday);
                            //讓lvItem和ListView關聯
                           lvlist.Items.Add(lvItem);
                           lvlist.FullRowSelect = true;
                           lvlist.ContextMenuStrip = ctmslist;
                        }
                        dr.Close();
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("異常!"); ;
            }
            finally
            {
                con.Close();
            }
        }
        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string sql = @"select Studentno,Studentname,Gender,gradename
                          ,phone,address,email,birthday from student,grade
                            where student.gradeid=grade.gradeid";
            LoadDataFromDBToListView(sql);
        }
        public void UpdateSelect()
        {
            lvlist.Items.Clear();
            string sql = @"select Studentno,Studentname,Gender,gradename,phone,address
                            ,email,birthday from student,grade
                            where student.gradeid=grade.gradeid and studentname like ‘%" + txtname.Text + "%‘ ";
            LoadDataFromDBToListView(sql);
        }
        private void TsStudentInfo_Click(object sender, EventArgs e)
        {
            int stuno=Convert.ToInt32(lvlist.SelectedItems[0].Text);
            FrmEditStu frm = new FrmEditStu();
            frm.stuno = stuno;
            frm.frmselect = this;
            frm.Show();
        }

        private void FrmColor_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
        }

        private void 刪除學生信息ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            int sno = Convert.ToInt32(lvlist.SelectedItems[0].Text);
            FrmEditStu frm = new FrmEditStu();
            frm.stuno = sno;
            frm.frmselect = this;
            frm.Show();
        }
技術分享圖片

技術分享圖片

5.添加學生信息(FrmEditStu)

技術分享圖片

修改學生信息:

技術分享圖片

技術分享圖片

刪除學生信息:

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

添加到數據庫:

技術分享圖片
  private void btnSave_Click(object sender, EventArgs e)
        {
            //接收到的學號
            //判斷學號是否為空來選擇sql語句
            //判斷是否要刪除信息
            if (sno!=0)
            {
                DialogResult result=MessageBox.Show("是否刪除?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Error);
                if (result==DialogResult.Yes)
                {
                    //刪除
                    this.Hide();
                    ChangDelete();
                }
            }
                if (stuno!=0)
                {
                    //修改
                    this.Hide();
                    GetUpdate();
                }            
                else
                {
                    //新增
                    this.Hide();
                     GetSave();
                }                  
          }          
            //判斷stuno是否有值來修改select語句
            //新增
             public void GetSave()
        {
            string pwd = txtpwd.Text;//密碼
            string pwdTrue = txtPwdTrue.Text;//確認密碼
            string name = txtStuName.Text;//學生名
            string stuGender = string.Empty;//取單選列表
            if (rbtnGenderTure.Checked)
            {
                stuGender = "1";
            }
            else
            {
                stuGender = "0";
            }
            //給下拉框取值
            int gid = GetIdByName();
            string phone = txtPhone.Text;//電話
            string address = txtAddress.Text;//地址
            DateTime dt = dtBirthday.Value;//日期
            string stuEmail = txtEmail.Text;//郵箱
            //StudentNo, LoginPwd, StudentName, Gender, GradeId, Phone, Address, Birthday, Email
            string sql = "insert into student values(‘" + pwd + "‘,‘" + name + "‘,‘" + stuGender + "‘," + gid + ",‘" + phone + "‘,‘" + address + "‘,‘" + dt + "‘,‘" + stuEmail + "‘)";
            string str = "Data source=.;initial catalog=MySchool;uid=sa";
            SqlConnection con = new SqlConnection(str);
            SqlCommand cmd = new SqlCommand(sql, con);
            con.Open();
            if (pwd.Equals(pwdTrue))
            {
                int count = cmd.ExecuteNonQuery();
                if (count > 0)
                {
                    frmselect.UpdateSelect();
                    MessageBox.Show("成功!");
                }
                con.Close();
            }
            else
            {
                MessageBox.Show("前後密碼不匹配");
            }       
        }
            //修改
             public void GetUpdate()
             {               
                 string name = txtStuName.Text;//學生名
                 string stuGender = string.Empty;//取單選列表
                 if (rbtnGenderTure.Checked)
                 {
                     stuGender = "1";
                 }
                 else
                 {
                     stuGender = "0";
                 }
                 //給下拉框取值
                 int gid = GetIdByName();
                 string phone = txtPhone.Text;//電話
                 string address = txtAddress.Text;//地址
                 DateTime dt = dtBirthday.Value;//日期
                 string stuEmail = txtEmail.Text;//郵箱
                 //StudentNo, LoginPwd, StudentName, Gender, GradeId, Phone, Address, Birthday, Email
                 string sql = @"update student set studentname=‘" + name +
                     "‘,gender=‘" + stuGender + "‘,gradeid=‘" + gid + "‘,phone=‘" +
                     phone + "‘,address=‘"+address+"‘,birthday=‘"+dt+"‘,email=‘"+stuEmail+
                       "‘ where studentno="+txtStuNo.Text+"";        
                 string str = "Data source=.;initial catalog=MySchool;uid=sa";
                 SqlConnection con = new SqlConnection(str);
                 SqlCommand cmd = new SqlCommand(sql, con);
                     con.Open();                             
                     int count = cmd.ExecuteNonQuery();
                     con.Close();
                     if (count > 0)
                     {
                         frmselect.UpdateSelect();
                         MessageBox.Show("成功!");
                     }                                             
             }
            //刪除
             public void ChangDelete()
             {
                 string pwd = txtpwd.Text;//密碼
                 string pwdTrue = txtPwdTrue.Text;//確認密碼
                 string name = txtStuName.Text;//學生名
                 string stuGender = string.Empty;//取單選列表
                 if (rbtnGenderTure.Checked)
                 {
                     stuGender = "1";
                 }
                 else
                 {
                     stuGender = "0";
                 }
                 //給下拉框取值
                 int gid = GetIdByName();
                 string phone = txtPhone.Text;//電話
                 string address = txtAddress.Text;//地址
                 DateTime dt = dtBirthday.Value;//日期
                 string stuEmail = txtEmail.Text;//郵箱
                 //StudentNo, LoginPwd, StudentName, Gender, GradeId, Phone, Address, Birthday, Email
                 string sql = @"delete from student where studentno=‘"+txtStuNo.Text+"‘ ";
                 string str = "Data source=.;initial catalog=MySchool;uid=sa";
                 SqlConnection con = new SqlConnection(str);
                 SqlCommand cmd = new SqlCommand(sql, con);
                 con.Open();
                 if (pwd.Equals(pwdTrue))
                 {
                     int count = cmd.ExecuteNonQuery();
                     if (count > 0)
                     {
                         frmselect.UpdateSelect();
                         MessageBox.Show("成功!");
                     }
                 }
                 else
                 {
                     MessageBox.Show("前後密碼不匹配");
                 }
                 con.Close();
             }
            //根據對應條件查詢班級id
             public int GetIdByName()
        {
             string str = "Data source=.;initial catalog=MySchool;uid=sa";
             SqlConnection con = new SqlConnection(str);
             string sql = "select gradeid from grade where gradename=‘"+cmbGrade.Text+"‘";
             SqlCommand cmd = new SqlCommand(sql, con);
             int gid = 0;
             try
             {
                con.Open();
                gid =Convert.ToInt32(cmd.ExecuteScalar());
             }
             catch (Exception)
             {

                MessageBox.Show("網絡異常");
             }
             finally
             {
                con.Close();
             }
              return gid;
        }
            //根據對應條件查詢班級gname
             public string GetNameById(int gid)
             {
                 string str = "Data source=.;initial catalog=MySchool;uid=sa";
                 SqlConnection con = new SqlConnection(str);
                 string sql = "select gradename from grade where gradeid=" + gid + "";
                 SqlCommand cmd = new SqlCommand(sql, con);
                 string name = "";
                 try
                 {
                     con.Open();
                     name =cmd.ExecuteScalar().ToString();
                 }
                 catch (Exception)
                 {

                     MessageBox.Show("網絡異常");
                 }
                 finally
                 {
                     con.Close();
                 }
                 return name;
             }
             //加載年級下拉框
             public void LoadGrade()
             {
                 //拿到所有年級名稱
                 string str = "Data source=.;Initial catalog=MySchool;uid=sa";
                 SqlConnection con = new SqlConnection(str);
                 string sql = "select gradename from grade";
                 SqlCommand cmd = new SqlCommand(sql, con);
                 try
                 {
                     con.Open();
                     SqlDataReader dr = cmd.ExecuteReader();
                     if (dr != null)
                     {
                         if (dr.HasRows)
                         {
                             while (dr.Read())
                             {
                                 string gname = dr["gradename"].ToString();
                                 //每讀到一個年級名稱,我就將"S1",添加到下拉框
                                 cmbGrade.Items.Add(gname);
                             }
                         }
                     }
                 }
                 catch (Exception ex)
                 {
                     MessageBox.Show("網絡異常");
                 }
                 finally
                 {
                     con.Close();
                 }
             }
             //根據學號加載其他信息
             public void LoadStuInfoByStuNo()
             {
                 string str = "Data source=.;Initial catalog=MySchool;uid=sa";
                 SqlConnection con = new SqlConnection(str);
                 string sql = "select * from student where studentno="+stuno+"";
                 SqlCommand cmd = new SqlCommand(sql, con);
                 try
                 {
                     con.Open();
                     SqlDataReader dr = cmd.ExecuteReader();
                     txtStuNo.Text = stuno.ToString();
                     if (dr!=null)
                     {
                         if (dr.HasRows)
                         {
                             while (dr.Read())
                             {
                                 string stuname = dr["studentname"].ToString();
                                 txtStuName.Text = stuname;//姓名
                                 string stuGender = dr["gender"].ToString();
                                 if (stuGender == "1")
                                 {
                                     rbtnGenderTure.Checked = true;
                                 }
                                 else if (stuGender == "0")
                                 {
                                     rbtnGender.Checked = true;
                                 }//性別
                                 int gid = Convert.ToInt32(dr["gradeid"]);
                                 string gname = GetNameById(gid);
                                 cmbGrade.Text = gname;//年級
                                 string stuphone = dr["phone"].ToString();
                                 txtPhone.Text = stuphone;//電話
                                 string stuaddress = dr["address"].ToString();
                                 txtAddress.Text = stuaddress;//地址
                                 string stuemail = dr["email"].ToString();
                                 txtEmail.Text = stuemail;//郵箱
                                 DateTime stubirthday = Convert.ToDateTime(dr["birthday"]);
                                 dtBirthday.Value = stubirthday;//出生日期    
                             }
                         }
                     }
                 }
                 catch (Exception)
                 {
                     MessageBox.Show("異常!!"); ;
                 }
                 finally 
                 {
                 
                 }
             }
            
        private void FrmEditStu_Load(object sender, EventArgs e)
        {   
            //判斷學號是否為空來選擇sql語句
            if ( sno != 0)
            {
                DialogResult result = MessageBox.Show("是否刪除?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Error);
                if (result == DialogResult.Yes)
                {
                    this.Text = "刪除學生信息";
                    btnSave.Text = "刪除";
                    LoadStuInfoByStuNo();
                }
            }
                if(stuno!=0)
                {
                    this.Text = "修改學生信息";
                    btnSave.Text = "修改";
                    LoadStuInfoByStuNo();
                }           
            else
            {
                btnSave.Text = "保存";
                LoadGrade();
            }
        }
        private void FrmEditStu_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
        }
        private void btnClear_Click(object sender, EventArgs e)
        {
            this.Close();
        }
技術分享圖片

6.動態圖片時鐘

技術分享圖片

計時控件:

技術分享圖片

通過時間來讓幾張圖連接形成動態的計時:

技術分享圖片
  private int index = 0;
        private void timers_Tick(object sender, EventArgs e)
        {
            if (index<imglist.Images.Count-1)
            {
                index++;
            }
            else
            {
                index = 0;
            }
            piclist.Image = imglist.Images[index];
        }
技術分享圖片

WinForms很重要,雖說難度不是很大,但它的內容太多,之間的融合又太復雜,所以難易與否只有自己知道,但只要認真聽課、刻苦學習,我想時間會給我們大家最好的結果,所以我希望大家能指出我的一些不足之處,相信我們的互幫互助能讓我們都變得更好。

豐富“WinForms” 的一個別樣"項目"(學生管理)