C#登录窗口及验证(+SQL)

258 阅读7分钟

团队成员及分工

团队: Blue 团队共有六人

姓名:     学号后四位:       贡献分:

张   宇(队长)  1152          1+1.7=2.7分

丁志愿          1011          1+1=2分

侯贺琦          1027          1+1=2分

李锦城          1040          1+0.3=1.3分

张玉冕          1153                  1分

康   贺          1169                  1分

1.确定团队成员绩效评估方法 -->个人在团队中的绩效

2.需求分析及设计思路     由张 宇、侯贺琦 负责

3.界面设计及文档记录     由康贺、张玉冕负责

4.具体代码编写(程序设计) 每个成员都要认领自己认为可以完成的任务

5.测试与调试                由丁志愿、李锦城负责

目标:为了顺利完成团队任务,促进每一个成员的学习。

A 每次集合是否按时到场

B 是否能促进团队的团结。

C 是否能按时在团队合作中按时完成编码任务

D 是否能按时提交每日的工作日志

达到以上要求,根据每个人对团队所做的贡献来评分,凡做一件不利于团队团结和项目进度的行为皆扣相应的分数。

 姓名张宇侯贺琦李锦城康贺张玉冕丁志愿
是否按时到会1001001009090100
会上积极发言100100907080100
按时完成各自任务100100907580100
提交每日的工作日志100100909090100
 工作状况分值400400370325340 400 

 

用户需求:

可以通过输入用户名和密码来进行登录!并且在登录的时候,如果用户名不存在,亦或是密码不对,此时要给出提示!

具体设计思路:

第一步:先创建一个数据库!毕竟没有用户也没办法登录是吧,在VS服务器资源管理器里新建一个名为repair的数据库,添加一个名为user_info的表,并插入了两条测试记录!
第二步:新建一个窗体,摆上三个Lable,两个文本框,两个按钮,给每个控件起一个好记的Name,界面布置一下!
第三步:准备工作做好,下面开始写登录按钮事件,这时就要连接数据库了,那么新建一个DBConn类,把连接字符串封装到DBConn.cs里面。
第四步:请看代码实现↓↓↓

代码实现:

DBConn.cs

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Data.SqlClient;
 6 using System.Data;
 7 
 8 namespace sixth
 9 {
10     class DBConn
11     {
12         //连接字符串
13         public static string connStr = "Data Source=.;Initial Catalog=repair;Integrated Security=True;Pooling=False";
14         public static SqlConnection conn = new SqlConnection(connStr);
15     }
16 }

FormLogin.cs

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Windows.Forms;
 9 using System.Data.SqlClient;
10 
11 namespace sixth
12 {
13     public partial class FormLogin : Form
14     {
15         public FormLogin()
16         {
17             InitializeComponent();
18         }
19 
20         private void btnLogin_Click(object sender, EventArgs e)
21         {
22             try
23             {
24                 if (txtUsn.Text.Trim() == "")
25                 {
26                     labMessage.Text ="用户名不能为空!";
27                     txtUsn.Focus();//获取焦点
28                     return;
29                 }
30                 else if (txtPwd.Text.Trim() == "")
31                 {
32                     labMessage.Text ="密码不能为空!";
33                     txtPwd.Focus();
34                     return;
35                 }
36 
37                 //老师说了:下面这种方法会有通过文本框输入SQL语句来恶意损坏数据库的可能,所以用了参数的形式来获取文本框的值!
38                 //string sqlStr = "select userName,passWord from user_info where userName='" + txtUsn.Text.Trim() + "'";
39                 
40                 string sqlStr = "select userName,passWord from user_info where userName=@userName";
41                 DataSet ds = new DataSet();
42                 DBConn.conn.ConnectionString = DBConn.connStr;
43                 DBConn.conn.Open();
44                 SqlCommand cmd = new SqlCommand(sqlStr, DBConn.conn);
45                 cmd.Parameters.Add(new SqlParameter("@userName", SqlDbType.VarChar, 50));//添加参数
46                 cmd.Parameters["@userName"].Value = txtUsn.Text;//把用户名文本框里的东西给@userName
47                 SqlDataReader sdr = cmd.ExecuteReader();
48                 if (!sdr.Read())//因为是通过userName查询数据的,所以如果没有读到这条数据,肯定是用户名不存在
49                 {
50                     labMessage.Text = "用户名不存在!请重新输入";
51                     txtUsn.Text = "";//文本框置空
52                     txtPwd.Text = "";
53                     txtUsn.Focus();
54                 }
55                 else if (sdr["passWord"].ToString().Trim() == txtPwd.Text.Trim())
56                 {
57                     labMessage.Text = "恭喜您已成功登录!";
58                 }
59                 else
60                 {
61                     labMessage.Text = "密码错误!请重新输入!";
62                     txtPwd.Text = "";
63                     txtPwd.Focus();
64                 }
65             }
66             catch (Exception ex)
67             {
68                 labMessage.Text = "登录异常:" + ex.Message;
69                 txtUsn.Text = "";
70                 txtPwd.Text = "";
71                 txtUsn.Focus();
72             }
73             finally
74             {
75                 DBConn.conn.Close();//最重要的是要关闭数据库!
76             }
77         }
78 
79         private void btnCancel_Click(object sender, EventArgs e)
80         {
81             Application.Exit();//退出
82         }
83     }
84 }

 测试:

1.数据库、表格及测试数据

2.成功登录

3.用户名不存在;其实当用户名不存在的时候,是让文本框置空的,这里为了
方便展示

4.密码错误,密码文本框置空,焦点转移至此

PSP耗时分析:

 

团队编程总结:

一个团队,要做好一个项目,要有十分全面的考虑以及分析。可能一个人并不能把整个项目都考虑的非常到位,所以**Team Leader先组织开个小会,以便收集大家的意见。其实这次,大家都挺积极的配合,个别同志由于各种原因大家也都能理解。但我们始终遵循一条原则,多劳多得!
其实这次只是一个开始,但我们一样要按照流程来完成任务,要把开始做到完美,那么后续工作才可以陆续开来。
**

********团队编程之个人总结:
侯贺琦:
这次的作业比较简单,当然,是相对于我们队长来说。他能带动我们完成任务,已经是功不可没。虽然任务简单,但队长仍旧分为几个小任务来交给我们完成,这次的做作业有用到数据库的知识,我数据库是最薄弱的,不得不重拾以前的知识,我面对库时真的是手忙脚乱慌得一塌糊涂,毕竟也是上个学期挂掉数据库的人,然而这并没有什么用,关键时刻还得靠队长,此时队长挺身而出,狂补数据库连接知识,最终将其完成。其实窗体应用挺好的,我喜欢窗体的方方正正。其实怎么说,代码这东西与我无缘,我并不是那么喜欢,大一时的HTML纯属是无聊才学着玩的,也有一点点喜欢在里面,到了大二,其实还是怨自己吧,挺多不会的。张宇同学能带着我们学习真的是挺感动的,我想,他应该是最有可能走这条路的人,愿他能成功。\


**丁志愿:
**

经过上次团队合作,我们对这次的作业充满了信心。虽然这次的作业不是很多,但是我们还是按照要求,合理分工,每个成员都把自己的工作做得很到位。
这次的项目虽然只是一个开头,但这是很重要的一步,登录界面。团队中的成员经过上次的项目磨合,这次更加得心应手。每个人都把自己的工作认真完成,
通过一次次的团队模式,我们更加了解了自己,每一次的合作就是一次的成长,不论作业难度如何,我们都会努力做到最好。
经过每次的合作,我们也遇到过很多困难,数据库是上学期的课程,我们在合作过程中,,都在互相帮助,有时会有抱怨,有时会有牢骚,但是在我们的互相
帮助下,都克服了这些难题。每一次的困难都是一个成长路上的考验,经过一次次的考验,我们也会一次次的成长起来。
我相信,经过每次的团队合作,我们会学到更多,要努力克服自己的短处,增加自己的能力。在以后的路上,我们一定会学到更多,也会一步步增加自己的能力。