zoukankan      html  css  js  c++  java
  • 学生管理系统1

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

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

    完成登录页面模块:

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

    复制代码
     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();
    复制代码
  • 相关阅读:
    [LeetCode]2. Add Two Numbers链表相加
    Integration between Dynamics 365 and Dynamics 365 Finance and Operation
    向视图列添加自定义图标和提示信息 -- PowerApps / Dynamics365
    Update the Power Apps portals solution
    Migrate portal configuration
    Use variable to setup related components visible
    Loyalty management on Retail of Dynamic 365
    Modern Fluent UI controls in Power Apps
    Change screen size and orientation of a canvas app in Power App
    Communication Plan for Power Platform
  • 原文地址:https://www.cnblogs.com/zzp0320/p/7908135.html
Copyright © 2011-2022 走看看