吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7666|回复: 21
收起左侧

[其他转载] c#编写简单的学生管理系统

  [复制链接]
老棉资源库 发表于 2019-11-25 22:47
心得:在查询数据时,如果查询的内容只是作为某个判断的条件,直接执行用SqlCommand执行语句,

如果要在Lable或者DataGirdView中显示出来查询的结果。此时,分两种情况:SqlDataReader逐条查询,SqlDataAdapter结果查询

问题:在用参数接收comboBox信息时,为什么报错,改为占位符的形式就可以(最后一部分代码)
一,首先创建三个表student、teacherInfo、stndentInfo 分别用于存放学生基本信息、老师账户和密码、学生的学号和密码
          20180513164215919.png
二,分别建立老师和学生的登陆入口,从而完成不同的操作人员的数据库的要求
2018051316443597.png
为了区别不同的登陆人员,先定义两个RadioButton,由于学生人数比老师人数多的多,在学生的RadioButton的控件属性check中,选择为默认。
[C#] 纯文本查看 复制代码
 private void btnOk_Click(object sender, EventArgs e)
        {
            if (rbtnStudent.Checked)
            {   
                //选择的是学生对象
                using (SqlConnection conn = new SqlConnection("Data Source=DESKTOP-BEUJ3C4;Initial Catalog=School2;User ID=sa;Password =2323010676;"))
                {
                    conn.Open();
                    //打开数据库的连接
 
                    String sql = "select * from stndentInfo where sno = @sno and spw = @spw";
                    //创建数据库的操作字符串
 
                    SqlCommand cmd = new SqlCommand(sql, conn); 
                    //对指定的对象,操作字符串内容
 
                    cmd.Parameters.Add(new SqlParameter("@sno", txtNo.Text));
                    //用参数代替占位符,线性更安全
                    cmd.Parameters.Add(new SqlParameter("@spw", txtPw.Text));
 
                    SqlDataReader reader = cmd.ExecuteReader();//操作
 
                    if (reader.Read())
                    {
                        //如果查询到内容,跳转到Information界面,同时关闭当前界面
                        Information info = new Information(); 
                        info.Show();
                        this.Hide();
                    }
                    else
                    {
                        MessageBox.Show("请输入正确信息!");
                    }
                }
            }
            else
            {
                //这里只有两个选项,就没写条件,其余同上,注意对应的数据关系,表是不同的
                using (SqlConnection conn = new SqlConnection("Data Source=DESKTOP-BEUJ3C4;Initial Catalog=School2;User ID=sa;Password =2323010676;"))
                {
                    conn.Open();
 
                    String sql = "select * from teacherInfo where userT = @userT and pwT = @pwT";
 
                    SqlCommand cmd = new SqlCommand(sql, conn);
                    cmd.Parameters.Add(new SqlParameter("@userT", txtNo.Text));
                    cmd.Parameters.Add(new SqlParameter("@pwT", txtPw.Text));
 
                    SqlDataReader reader = cmd.ExecuteReader();
 
                    if (reader.Read())
                    {
                        teacherUse teac = new teacherUse();
                        teac.Show();
                        this.Hide();
                    }
                    else
                    {
                        MessageBox.Show("请输入正确信息!");
                    }
                }
            }
        }
 
        //如果取消操作,关闭程序
        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }

三,对应的学生的功能:完成修改密码,添加新的学生信息(为了方便),这里需要引起重视的是,这里的date类型需要进行转换,注意和老师界面查询是的date类型做出区分。
20180513170256599.png
插入数据
[C#] 纯文本查看 复制代码
 private void btnOk_Click(object sender, EventArgs e)
        {
            using (SqlConnection conn = new SqlConnection("Data Source=DESKTOP-BEUJ3C4;Initial Catalog=School2;User ID=sa;Password =2323010676;"))
            {
                conn.Open();
 
                String sql = "insert into student(sno,sname,smajor,sbirthday,sSex) values (@sno,@sname,@smajor,@ssbirthday,@sSex)";
 
                SqlCommand cmd = new SqlCommand(sql, conn);
 
                cmd.Parameters.Add(new SqlParameter("@sno",txtNo.Text));
                cmd.Parameters.Add(new SqlParameter("@sname",txtStname.Text));
                cmd.Parameters.Add(new SqlParameter("@smajor",cobMajor.Text));
                cmd.Parameters.Add(new SqlParameter("@ssbirthday",dtpBirth.Value.Date)); 
                //这里的时间格式需要注意,直接的读取时间,是字符串类型,                                                                            
                //不好转换,将其用Date类型读取
 
                cmd.Parameters.Add(new SqlParameter("@sSex",cobSex.Text));
 
                int rows = cmd.ExecuteNonQuery();//执行插入语句
                if ( rows > 0)
                {
                    MessageBox.Show("信息录入成功");
                }
                else
                {
                    MessageBox.Show("请输入准确信息");
                }
            }
   
        }

修改密码
20180513170833498.png
[C#] 纯文本查看 复制代码
 private void btnOk_Click(object sender, EventArgs e)
        {
            using (SqlConnection conn = new SqlConnection("Data Source=DESKTOP-BEUJ3C4;Initial Catalog=School2;User ID=sa;Password =2323010676;"))
            {
                conn.Open();
 
                
                if (txtNewpw.Text == txtCheckpw.Text)
                {
                    string sql = String.Format("update stndentInfo set spw = @spw where sno = @sno");
 
                    
                    SqlCommand cmd = new SqlCommand(sql, conn);
 
                   
                    cmd.Parameters.Add(new SqlParameter("@sno", txtUser.Text));
                    //这里注意也要写成txt.User.Text转换的是文本框里面的内容
                    cmd.Parameters.Add(new SqlParameter("@spw", txtCheckpw.Text));
 
                    int rows = cmd.ExecuteNonQuery();
                    //这句话时执行的语句的必要的控制性的一句话
 
                    MessageBox.Show("新密码已经修改完成");
                }
                else
                {
                    MessageBox.Show("请输入两次相同的密码");
                }
               
            }
        }

四,对应的老师的功能:查询学生的详细信息,注意date格式的转换,以及完成查询后的标签内容的转换
20180513170938586.png
[C#] 纯文本查看 复制代码
private void btnOk_Click(object sender, EventArgs e)
        {
            if(txtSno.Text == null)
            {
                MessageBox.Show("请输入学号");
            }
            else
            {
                using (SqlConnection conn = new SqlConnection("Data Source=DESKTOP-BEUJ3C4;Initial Catalog=School2;User ID=sa;Password =2323010676;"))
                {
                    conn.Open();
 
 
 
                    String sql = "select * from student where sno = @sno";
 
                    SqlCommand cmd = new SqlCommand(sql,conn);
 
                    cmd.Parameters.Add(new SqlParameter("@sno", txtSno.Text));
 
                    SqlDataReader reader = cmd.ExecuteReader();
 
                    if (reader.Read())
                    {
                        txtMajor.Text = reader.GetString(reader.GetOrdinal("smajor"));
                        txtSex.Text = reader.GetString(reader.GetOrdinal("sSex"));
                        txtName.Text = reader.GetString(reader.GetOrdinal("sname"));
 
                        DateTime dt = reader.GetDateTime(reader.GetOrdinal("sbirthday"));
                        //用Datetime格式接收时间对象
                        txtBirthday.Text = dt.ToShortDateString();
                        //将需要显示的内容转化成能在lable控件中显示的字符串                        
                    }
                    else
                    {
                        //清除上一次查询标签中的内容,不然下次查询不显示查询出来的内容
                        txtSno.Text = null;
                        txtSex.Text = null;
                        txtName.Text = null;
                        txtMajor.Text = null;
                        txtBirthday.Text = null;
                        MessageBox.Show("抱歉,没有查到对应学号的学生信息");
                    }
 
                }
            }
        }

b.分组对学生进行查询,将结果添加进DataGirdView控件中,注意前面也提到了Anchor控制位置
20180520111901217.png
[C#] 纯文本查看 复制代码
public partial class 学生信息查询 : Form
    {
        public 学生信息查询()
        {
            InitializeComponent();
        }
 
        private void 学生信息查询_Load(object sender, EventArgs e)
        {
            //加载界面时,即添加下拉框里面的内容
            cbxinfo.Items.Add("地信专业");
            cbxinfo.Items.Add("测绘专业");
            cbxinfo.Items.Add("物理专业");
            cbxinfo.Items.Add("外语专业");
            cbxinfo.Items.Add("中文专业");
            cbxinfo.Items.Add("计算机专业");
 
        }
 
        private void btnOk_Click(object sender, EventArgs e)
        {
            using (SqlConnection conn = new SqlConnection("Data Source=DESKTOP-BEUJ3C4;Initial Catalog=School;User ID=sa;Password =2323010676;"))
                //这里使用的数据库是,前面查询信息作业添加的school数据库,用于存放学生的基本信息,及考试信息
            {
                conn.Open();
 
                //String sql = "select * from student where 所属专业 =@所属专业";
 
                String sql = String.Format( "select * from student where 所属专业 ='{0}'",cbxinfo.Text);
 
                SqlCommand cmd = new SqlCommand();
                //创建数据库命令对象
                // cmd.Parameters.Add(new SqlParameter("@所属专业",cbxinfo.Text));
                //将下拉框里面的文本代替参数信息  用参数不行,不知为什么,改用占位符
 
                SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
                //逐行查询,区别于SqlDataReader聚合查询
                DataSet ds = new DataSet(); 
                //创建容器,存放查询出来的对象
                sda.Fill(ds);//将对象填充容器
 
                dgvShow.DataSource = ds.Tables[0];
                //绑定数据,将查询出来的第一个表数据显示在dgvShow中
 
            }
        }
    }

20180520112027980.png

免费评分

参与人数 9吾爱币 +7 热心值 +8 收起 理由
zx5706112 + 1 + 1 谢谢@Thanks!
z666z + 1 + 1 谢谢@Thanks!
lene + 1 + 1 想起了四五年前的自己,,实习的时候没事也喜欢写这种Form
爱喝牛奶的小孩 + 1 热心回复!
lhqzzy + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
zxy少女欣 + 1 谢谢@Thanks!
Dragonzhang + 1 成品分享一下嘛
伍六柒CK + 1 + 1 用心讨论,共获提升!
独行风云 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

凌凌壹 发表于 2020-3-25 15:58
linlik 发表于 2019-12-31 10:53
直接吧数据库连接信息写进客户端?这样的话完全没安全性啊

正好最近在学习数据库这块,可否指点一下这个安全性。
缥缈的心情 发表于 2021-9-23 21:48
额.
数据库编程,越学复杂.,
后期大型开发维护,全部写的储存过程.
WINFORM中只有界面,和功能调用,数据传输. 储存过程要写上百个...
光是看就能累死人.
hjhj123 发表于 2019-11-25 22:56
衣架 发表于 2019-11-25 22:57
支持楼主 干得漂亮
 楼主| 老棉资源库 发表于 2019-11-25 23:02

教程已经写得非常详细了,你如果不想做只要成品我给你发一个吧,这是我同学的作业,他不会写,非让我做
Dragonzhang 发表于 2019-11-25 23:14
老棉资源库 发表于 2019-11-25 23:02
教程已经写得非常详细了,你如果不想做只要成品我给你发一个吧,这是我同学的作业,他不会写,非让我做{: ...

我也想要成品
一人之下123456 发表于 2019-11-25 23:43
感谢分享,学习学习
zxd8888 发表于 2019-11-26 00:25
想学习一下,没有完整版
smallmouse228 发表于 2019-11-30 13:32
做的漂亮,呵呵
18986097696 发表于 2019-12-1 16:19
@老棉资源库 能不能发个成品谢谢啦   970105413@qq.com
ctf513 发表于 2019-12-2 21:51
想要成品 楼主能发下吗? 感谢感谢  
416773409@qq.com
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-3-29 10:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表