精美學生管理系統


半個學期即將完美結束,精美的學生管理系統也終於亮相啦,哈哈!

話不多說,切入正題。

首先,要了解完成學生管理系統的步驟:

總共有幾個模塊,我就逐一講解:

完成登錄頁面模塊:

判斷“登錄”是否成功的代碼:

 1   private void btnLogin_Click(object sender, EventArgs e)
 2         {
 3             string str = DBHelper.str;
 4             SqlConnection con = new SqlConnection(str);
 5             string sql = "select count(1) from student where studentname='" + txtnamea.Text + "' and loginpwd='" + txtpwdtu.Text + "' ";
 6             SqlCommand cmd = new SqlCommand(sql,con);
 7             con.Open();
 8             int count = Convert.ToInt32(cmd.ExecuteScalar());
 9             if (count > 0)
10             {
11                 //MessageBox.Show("登陸成功");
12                 this.Hide();
13                 //Welcome frm = new Welcome();
14               
15                 //frm.name= txtnamea.Text;
16                 //frm.Show();
17             }
18             con.Close();
19             //用戶名,密碼和登錄類型都不能為空
20             if (CheckInput())
21             {
22                 //顯示系統管理員主窗體                                          
23                 //隱藏登錄窗體
24                 this.Hide();
25             }
26             FrmAdminMain frm = new FrmAdminMain();
27             //方法1:
28             //frm.pwd=txtpwdtu.Text;
29             //方法2:
30             Tool.pwd = txtpwdtu.Text;
31             frm.Show();
32         }
 1  if (this.txtnamea.Text.Trim().Equals(string.Empty))
 2             {
 3                 MessageBox.Show("請輸入用戶名", caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
 4                 this.txtnamea.Focus();
 5                 return false;
 6             }
 7             else if (this.txtpwdtu.Text.Trim().Equals(string.Empty))
 8             {
 9                 MessageBox.Show("請輸入密碼", caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
10                 this.txtpwdtu.Focus();
11                 return false;
12             }
13             else if (this.cboLoginType.Text.Trim().Equals(string.Empty))
14             {
15                 MessageBox.Show("請輸入登錄類型", caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
16                 this.cboLoginType.Focus();
17                 return false;
18             }
19             else
20             {
21                 return true;
22             }

修改密碼的窗體:

修改密碼的代碼:

 1  private void FrmChangePwd_Load(object sender, EventArgs e)
 2         {
 3             //顏色變化
 4             this.BackColor = Color.Red;
 5             //顯示舊密碼到就文本框里面
 6             txtoldpwd.Text = Tool.pwd;
 7         }
 8 
 9         private void btnqueren_Click(object sender, EventArgs e)
10         {
11             string num = txtnewpwd.Text;
12             string str = DBHelper.str;
13           
14             string sql = "update student set loginpwd='" + num + "' where loginpwd='" + txtoldpwd.Text + "'";
15             SqlConnection con = new SqlConnection(str);
16             SqlCommand cmd = new SqlCommand(sql, con);
17             con.Open();
18             if (txtconfrimpwd.Text.Equals(num))
19             {
20                 int com = Convert.ToInt32(cmd.ExecuteScalar());     
21             }
22           
23             DialogResult result = MessageBox.Show("確定要修改密碼嗎?","溫馨提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
24             if (result==DialogResult.Yes)
25             {
26                 this.Close();
27             }
28             con.Close();

制作管理員窗體:

怎樣做才使“窗體跳轉”的代碼:

  //選擇"新增學生"時打開"編輯學生信息"窗體
        private void 編輯學生信息ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmEditStudent frm = new FrmEditStudent();
            frm.MdiParent = this;
            frm.Show();
        }

        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("確認要退出嗎?", "溫馨提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (result == DialogResult.Yes)
            {
                this.Close();
            }
        }
        //選擇“窗口”中的查詢學生時顯示的“窗體”
        private void 查詢學生信息ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmSearchByName frm = new FrmSearchByName();
            frm.MdiParent = this.MdiParent;
            frm.Show();
        }

        //選擇“幫助”中的”關於“時顯示的窗體
        private void 關於ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmAbout frm = new FrmAbout();
            frm.MdiParent = this.MdiParent;
            frm.Show();
        }
        private void 修改密碼ToolStripMenuItem_Click(object sender, EventArgs e)
        {          
            FrmChangePwd frm = new FrmChangePwd();
            frm.MdiParent = this.MdiParent;
            //讓修改密碼前,給其pwd賦值
            //frm.pwd = pwd;
            frm.Show();
        }
        private void toolStripDropDownButton1_Click_2(object sender, EventArgs e)
        {
            FrmEditStudent frm = new FrmEditStudent();
            frm.MdiParent = this.MdiParent;
          
            frm.Show();
        }

        private void toolStripDropDownButton2_Click(object sender, EventArgs e)
        {
            FrmSearchByName frm = new FrmSearchByName();
            frm.MdiParent = this.MdiParent;
            frm.Show();

編輯學生窗體:

怎么樣才能得到所有“年級名稱”的代碼:

 1     //加載年級到下拉框信息
 2         public void LoadGrade() {
 3 
 4             //拿到所有年級名稱
 5             string str = DBHelper.str;
 6             SqlConnection con = new SqlConnection(str);
 7             string sql = "select gradename from grade";
 8             SqlCommand cmd = new SqlCommand(sql, con);
 9 
10             con.Open();
11             SqlDataReader dr = cmd.ExecuteReader();
12 
13             if (dr != null)
14             {
15                 if (dr.HasRows)
16                 {
17                     while (dr.Read())
18                     {
19                         string gname = dr["gradename"].ToString();
20                         //將年級放到下拉框中
21                         cbograde.Items.Add(gname);
22                     }
23                 }
24             }

拿到所有“學生信息”的代碼:

 1   //通過學生學號更改信息
 2         public void LoadStudentbyStudentno() {
 3             string str = DBHelper.str;
 4             SqlConnection con = new SqlConnection(str);
 5          
 6             string sql = "select *from student where studentno=" + studentNo + "";
 7             SqlCommand cmd = new SqlCommand(sql,con);
 8           
 9             try
10             {
11                 con.Open();
12                 SqlDataReader dr = cmd.ExecuteReader();
13                 //一列拆解,復制到當前的文本框
14                 while (dr.Read())
15                 {
16                   //獲取名字
17                     string stuname = dr["studentname"].ToString();
18                     txtname.Text = stuname;
19                     //獲取電話
20                     string stuphone = dr["phone"].ToString();
21                     txtphone.Text = stuphone;
22                     //獲取地址
23                     string stuadress = dr["address"].ToString();
24                     txtadress.Text = stuadress;
25                     //獲取郵件
26                     string stuemail= dr["email"].ToString();
27                     txtemail.Text = stuemail;
28                     ////獲取密碼
29                     //string strpwd=dr["LoginPwd"].ToString();
30                     //txtpwd.Text = strpwd;
31                     ////確認密碼
32                     //txttruepwd.Text = strpwd;                               
33                     //獲取出生日期
34                     DateTime day =Convert.ToDateTime( dr["birthday"]);
35                     cbobirthdatetime.Value = day;
36                     //獲取年級名稱
37                     int getid = Convert.ToInt32(dr["gradeid"]);
38                     string gradename = GetidName(getid);
39                     cbograde.Text = gradename;
40                     //獲取性別
41                     string genders=dr["gender"].ToString();
42                     if (genders.Equals("0"))
43                     {
44                         rbtnFemale.Checked = true;
45                     }
46                     if(genders.Equals("1")) {
47 
48                         rbtnMale.Checked = true;
49                     }
50                  

將“年級編號”轉化為“年級名稱”的代碼:

 1   //將年級編號轉換為年級名稱
 2         public string GetidName(int getid)
 3         {
 4             string str = DBHelper.str;
 5             SqlConnection con = new SqlConnection(str);
 6          
 7                string sql = "select gradename from grade where gradeid=" + getid + "";
 8             SqlCommand cmd = new SqlCommand(sql, con);
 9             string getname = "";
10             try
11             {
12                 con.Open();
13                 getname = cmd.ExecuteScalar().ToString();
14             }
15             catch (Exception)
16             {
17 
18             }
19             finally
20             {
21                con.Close();
22             }
23             return getname;

當你點擊“修改”的時候,”編輯窗體“變為“修改信息的窗體”的代碼:

 1  private void FrmEditStudent_Load(object sender, EventArgs e)
 2         {
 3             LoadGrade();
 4             //當點修改按鈕時,變成修改窗體
 5             if (studentNo != 0)
 6             {
 7                 this.Text = "修改學生信息";
 8                 btnsave.Text = "修改";
 9             }
10             else {
11                 this.Text = "編輯學生信息";
12                 btnsave.Text = "保存";          
13             }
14                         
15             txtnano.Text = studentNo.ToString();
16             LoadStudentbyStudentno();
17         }

修改“學生信息”的代碼:

 1    public void updateInfo() {
 2             //修改密碼
 3             string pwd = txtpwd.Text;
 4             //修改姓名
 5             string studentname = txtname.Text;
 6             //修改性別
 7             string studentgender = string.Empty;
 8             if (rbtnFemale.Checked)//
 9             {
10                 studentgender = "0";
11             }
12             else if (rbtnMale.Checked)//
13             {
14                 studentgender = "1";
15             }
16             //如何給下拉框綁定數據
17             int getid = GetIdByName();
18             //修改電話
19             string phone = txtphone.Text;
20             //修改地址
21             string adrers = txtadress.Text;
22             //修改日期
23             DateTime birthdate = this.cbobirthdatetime.Value;
24             //修改郵件
25             string emailt = txtemail.Text;
26             string sql =string.Format("update student set loginpwd='{0}',studentname='{1}',gender='{2}',gradeid='{3}',phone='{4}',address='{5}',birthday='{6}',email='{7}' where studentno={8}", pwd, studentname, studentgender, getid, phone, adrers, birthdate, emailt,studentNo);
27             string str = DBHelper.str;
28             SqlConnection con = new SqlConnection(str);
29             SqlCommand cmd = new SqlCommand(sql, con);
30             con.Open();
31             int count = cmd.ExecuteNonQuery();
32             if (count>0)
33             {
34                 //調用查詢窗口的一個DataSelect()方法
35                 frmselectInfo.DataSelect();
36                 MessageBox.Show("修改成功");
37             }
38             else
39             {
40                 MessageBox.Show("失敗");
41             }
 1 //根據學號是否為0,判定該按鈕用來執行“添加”還是“修改”
 2             if (studentNo != 0)
 3             {
 4                 //修改
 5                 updateInfo();
 6             }
 7             else
 8             {
 9                 //添加
10                 AddStudent();
11             }

將“年級名稱”變為“年級名稱”的代碼:

 1   //該方法將年級名稱轉換成年級編號
 2         public int GetIdByName()
 3         {
 4             string str = DBHelper.str;
 5             SqlConnection con = new SqlConnection(str);
 6             string sql = "select gradeid from grade where gradename='" + cbograde.Text + "'";
 7             SqlCommand cmd = new SqlCommand(sql, con);
 8             int getid = 0;
 9             try
10             {
11                 con.Open();
12                 getid = Convert.ToInt32(cmd.ExecuteScalar());
13             }

按姓名查詢學生信息的窗體:

查詢和在Load事件中提前顯示的代碼:

 1     private void FrmSearchByName_Load(object sender, EventArgs e)
 2         {
 3             //在Load事件中編寫代碼提前顯示
 4             //查詢
 5             string sql = @"select Studentno,Studentname,Gender,gradename
 6                             from student,grade
 7                             where student.gradeid=grade.gradeid ";
 8             LoadFrmListView(sql);
 9         }
10         //查詢數據
11         public void DataSelect()
12         {
13             lvlistview.Items.Clear();
14             string sql = @"select studentno,studentname,Gender,gradename from student,grade   
15            where student.gradeid=grade.gradeid and studentname like '%" + txtsearchname.Text + "%'";
16             LoadFrmListView(sql);
17         }

獲取學號的代碼:

 1   private void 修改ToolStripMenuItem_Click(object sender, EventArgs e)
 2         {
 3 
 4             if (this.lvlistview.SelectedItems.Count > 0)
 5             {
 6                 FrmEditStudent frm = new FrmEditStudent();
 7                 //將選中的學號傳遞到"編輯學生信息窗體"
 8                 //frm.studentNo = Convert.ToInt32(this.lvlistview.SelectedItems[0].Text);也可以
 9                 frm.studentNo = Convert.ToInt32(this.lvlistview.SelectedItems[0].SubItems[0].Text);
10                 frm.MdiParent = this.MdiParent;
11                 frm.frmselectInfo = this;
12                 frm.Show();

獲取學生信息的代碼::

 1    //獲取學號
 2                             int stuNo = Convert.ToInt32(dr["studentno"]);
 3                             //第二列獲取姓名 stuname
 4                             string stuName = Convert.ToString(dr["studentname"]);
 5                             //第三列 獲取 性別
 6                             string stugender = Convert.ToString(dr["gender"]);
 7                             //獲取年級名稱
 8                             string gname = Convert.ToString(dr["gradename"]);
 9                             //
10                             ListViewItem lvItem = new ListViewItem(stuNo.ToString());
11                             lvItem.SubItems.Add(stuName);//接收學生名字
12                             lvItem.SubItems.Add(stugender);//接收學生性別
13                             lvItem.SubItems.Add(gname);//接收學生年級名稱
14                             //讓lvItem和ListView關聯
15                             lvlistview.Items.Add(lvItem);
16                         }

關於我們的窗體:

計時器的Tick事件處理方法,定時變換圖片框中的圖片代碼:

 1  private void timetime_Tick(object sender, EventArgs e)
 2         {
 3             //如果當前顯示的圖片索引沒有到最大值就繼續增加
 4             if (index < imglist.Images.Count - 1)
 5             {
 6                 index++;
 7             }
 8             else {
 9                 index = 0;
10             }
11             //設置圖片框顯示的圖片
12             this.pictureBox1.Image = imglist.Images[index];

按年級查詢學生信息的的窗體:

加載年級的代碼:

 1   //加載年級信息
 2         public void LoadGradeInfo() {
 3 
 4             //創建數據庫連接
 5             string str = DBHelper.str;
 6             SqlConnection con = new SqlConnection(str);
 7             //string sql = "select studentno,studentname,gender,birthday from student";    
 8             string sql = "select gradeid,gradename from Grade";
 9             SqlDataAdapter da = new SqlDataAdapter(sql, con);
10             DataSet ds = new DataSet();
11             da.Fill(ds,"Grade");
12             DataRow row =ds.Tables["Grade"].NewRow();
13             row[0]=-1;
14             row[1] = "全部";
15             ds.Tables["Grade"].Rows.InsertAt(row,0);
16            
17             cbograde.DataSource = ds.Tables["Grade"];
18             //ValueMember下拉框顯示的隱藏值
19             cbograde.ValueMember = "gradeid";
20             //DisplayMember下拉框顯示的真實值
21             cbograde.DisplayMember = "Gradename";
22             cbograde.SelectedIndex = 0;                                                                                                                                                                                                                                                                                                     
23         }   

修改的代碼:

 1  //保存修改
 2         private void btnSAve_Click(object sender, EventArgs e)
 3         {
 4             DialogResult result = MessageBox.Show("確定要修改嗎?",caption,MessageBoxButtons.YesNo,MessageBoxIcon.Question);
 5             if (result==DialogResult.Yes)//確認保存修改
 6             {
 7                 //使用SqlCommandBuilder構建增刪改的command操作
 8                 SqlCommandBuilder sq = new SqlCommandBuilder(da);
 9                 //將數據集中student表的數據交給數據庫更新
10                 da.Update(ds, "student");
11             }

刪除信息的窗體:

獲取信息代碼:

 1  public void FillTables(){
 2            string str = DBHelper.str;
 3            //取消英文列自動生成,就是沒寫列名稱時,不能用英文列代替
 4            dgstudenlist.AutoGenerateColumns = false;
 5            SqlConnection con = new SqlConnection(str);
 6            string sql = "select studentno,studentname,gender,gradename,phone from student,grade where student.gradeid=grade.gradeid";
 7            SqlDataAdapter da = new SqlDataAdapter(sql, con);
 8            DataSet ds = new DataSet();
 9            da.Fill(ds, "student");
10            this.dgstudenlist.DataSource = ds.Tables["student"]; 
11         }
12         private void FrmStudentList_Load(object sender, EventArgs e)
13         {
14             FillTables();
15         }

刪除操作的代碼:

 1    //確認刪除操作
 2                 DialogResult result = MessageBox.Show("確認刪除改學生嗎?同時會刪除該學生的成績!!!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
 3                 if (result == DialogResult.Yes)
 4                 {
 5                     if (dgstudenlist.SelectedRows.Count > 0)
 6                     {
 7                         //獲得選中的學生的學號
 8                         int studentno = Convert.ToInt32(dgstudenlist.SelectedRows[0].Cells["studentno"].Value);
 9                     }
10                     string str = DBHelper.str;
11                     SqlConnection con = new SqlConnection(str);
12                     string sql = string.Format("delete from result where studentno={0}", StudentNO);
13                     con.Open();
14                     SqlCommand cmd = new SqlCommand(sql, con);
15                     int count = cmd.ExecuteNonQuery();
16                     //刪除學生信息
17                     sql = string.Format("delete from student where studentno={0}", StudentNO);
18                     cmd.CommandText = sql;
19                     int result1 = cmd.ExecuteNonQuery();
20                     if (result1 == 1)
21                     {
22                         MessageBox.Show("刪除成公!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
23                         //重新查詢數據,綁定數據源,重新帥選
24                         FillTables();
25                     }
26                     con.Close();

其中一些重要代碼: 

1.向數據集年級表的第一行添加數據“全部”或者“請選擇”的代碼:

 

 1 1    DataRow row = ds.Tables["Grade"].NewRow();//形成行對象
 2  2             row["gradeid"] = -1;//給該行的列賦值 
 3  3             row["gradename"] = "全部";
 4  4             ds.Tables["Grade"].Rows.InsertAt(row, 0);//行對象和Table產生關系
 5  5 
 6  6 
 7  7 或者  8  8 
 9  9        //01.形成行對象   table.NewRow()
10 10             DataTable table = ds.Tables[0];
11 11             DataRow dr=table.NewRow();
12 12             //02.給該行的列賦值 dr[0]=-1;  
13 13             dr[0] = -1;
14 14             dr[1] = "請選擇";
15 15            //03.讓行對象和Table產生關系table.Rows.InsertAt()
16 16             table.Rows.InsertAt(dr,0);

 

2.向下拉框賦值,即年級名稱,隱藏年級編號:

 1       SqlDataAdapter da = new SqlDataAdapter(sql, con);
 2             DataSet ds = new DataSet();
 3             da.Fill(ds, "Grade");   
 4       cbograde.DataSource = ds.Tables["Grade"];
 5             //ValueMember下拉框顯示的隱藏值gradeid
 6             cbograde.ValueMember = "gradeid";
 7             //DisplayMember下拉框顯示的真實值Gradename
 8             cbograde.DisplayMember = "Gradename";
 9             cbograde.SelectedIndex = 0;        //索引為0
10             con.Close();

 

 

                                                        有不足之處,望大家多多指教哈

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM