首页 > 学院 > 开发设计 > 正文

精美学生管理系统

2019-11-14 13:43:17
字体:
来源:转载
供稿:网友

半个学期即将完美结束,精美的学生管理系统也终于亮相啦,哈哈!

话不多说,切入正题。

首先,要了解完成学生管理系统的步骤:

总共有几个模块,我就逐一讲解:

完成登录页面模块:

判断“登录”是否成功的代码:

 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             else20             {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             try10             {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             try11             {12                 con.Open();13                 getname = cmd.ExecuteScalar().ToString();14             }15             catch (Exception)16             {17 18             }19             finally20             {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             else39             {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             try10             {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;        //索引为010             con.Close();

 

 

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

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表