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純屬是無聊才學着玩的,也有一點點喜歡在里面,到了大二,其實還是怨自己吧,挺多不會的。張宇同學能帶着我們學習真的是挺感動的,我想,他應該是最有可能走這條路的人,願他能成功。

丁志願:

經過上次團隊合作,我們對這次的作業充滿了信心。雖然這次的作業不是很多,但是我們還是按照要求,合理分工,每個成員都把自己的工作做得很到位。
這次的項目雖然只是一個開頭,但這是很重要的一步,登錄界面。團隊中的成員經過上次的項目磨合,這次更加得心應手。每個人都把自己的工作認真完成,
通過一次次的團隊模式,我們更加了解了自己,每一次的合作就是一次的成長,不論作業難度如何,我們都會努力做到最好。
經過每次的合作,我們也遇到過很多困難,數據庫是上學期的課程,我們在合作過程中,,都在互相幫助,有時會有抱怨,有時會有牢騷,但是在我們的互相
幫助下,都克服了這些難題。每一次的困難都是一個成長路上的考驗,經過一次次的考驗,我們也會一次次的成長起來。
我相信,經過每次的團隊合作,我們會學到更多,要努力克服自己的短處,增加自己的能力。在以后的路上,我們一定會學到更多,也會一步步增加自己的能力。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM