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

团队成员及分工

团队: 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 是否能按时提交每日的工作日志

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

 姓名

张宇

侯贺琦

李锦城

康贺

张玉冕

丁志愿

是否按时到会

100

100

100

90

90

100

会上积极发言

100

100

90

70

80

100

按时完成各自任务

100

100

90

75

80

100

提交每日的工作日志

100

100

90

90

90

100

 工作状况分值

400

400

370

325

340

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纯属是无聊才学着玩的,也有一点点喜欢在里面,到了大二,其实还是怨自己吧,挺多不会的。张宇同学能带着我们学习真的是挺感动的,我想,他应该是最有可能走这条路的人,愿他能成功。

丁志愿:

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

 

原文地址:https://www.cnblogs.com/yumaster/p/5002876.html