一,首先创建三个表student、teacherInfo、stndentInfo 分别用于存放学生基本信息、老师账户和密码、学生的学号和密码
二,分别建立老师和学生的登陆入口,从而完成不同的操作人员的数据库的要求
为了区别不同的登陆人员,先定义两个RadioButton,由于学生人数比老师人数多的多,在学生的RadioButton的控件属性check中,选择为默认。
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类型做出区分。
插入数据
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("请输入准确信息"); } } }
修改密码
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格式的转换,以及完成查询后的标签内容的转换
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("抱歉,没有查到对应学号的学生信息"); } } } }