【毕设】班级管理系统——找回密码模块
【模块介绍】
首先检测用户是否在登录状态下,若用户在登录状态下,则跳过用户名检测环节,直接进入随机密保验证和修改密码环节,修改成功后,则注销原用户登录。若用户之前并未登陆,则在随机密保验证和修改密码环节之前得先判断段所要修改的用户名是否存在。只有存在后才能进入下一环节。本设计思路来源腾讯QQ密码按密保问题修改。图5.3(a),图5.3(b)和图5.3(c)分别显示用户名检测,随机密保验证和修改密码环节的相关界面。
【界面设计】
【程序流程图】
【核心代码】
相关参数说明: private List<int> ids = new List<int>();//存储密保信息 private List<string> keys = new List<string>();//存储密保答案 private string[] str = new string[] { "您小学班主任的姓名叫什么?", "您高中的班主任叫什么?", "您父亲的姓名叫什么?", "您母亲的姓名叫什么?", "您的男(女)朋友叫什么?", "您的学号是多少?", "您的出生地点在哪?" };//密保问题 int m;//记录密保随机数 关键代码: string cm = String.Format("select count(*) from LoginInfo where Luser='{0}'", txtUserName.Text);//判断用户名是否存在 using (SqlConnection conCon = new SqlConnection(strCon)) { conCon.Open(); SqlCommand sc = new SqlCommand(cm, conn); int k = (int)sc.ExecuteScalar();//记录搜索结果 if (k == 1) { pnlKey.Visible = true;//显示随机密保验证界面 lblUserName.Text = "用户名:" + txtUserName.Text; string com = String.Format("select L_ID1,L_key1,L_ID2,L_key2,L_ID3, L_key3 from LoginInfo where Luser='{0}'", txtUserName.Text);//查询该用户名所设置的相关密保问题及对应答案 SqlCommand sc1 = new SqlCommand(com, conCon); SqlDataReader reader = sc1.ExecuteReader(); while (reader.Read()) { ids.Add(read.GetInt16(0));//读取密保问题一代号 ids.Add(read.GetInt16(2));//读取密保问题二代号 ids.Add(read.GetInt16(4));//读取密保问题三代号 keys.Add(read.GetString(1));//读取密保一答案 keys.Add(read.GetString(3));//读取密保二答案 keys.Add(read.GetString(5));//读取密保三答案 } Random r = new Random();//定义随机变量 m = r.Next(ids.Count);//生成随机密保代号 lblQuestion.Text = "密保问题:" + str[ids[m]];//显示随机密保问题 } else { MessageBox.Show("该用户名不存在。"); } }