這幾天由于要交數據庫課程設計,就做了一個校園自助銀行系統。由于經驗不多,系統做的比較簡單,沒有用三層結構,一些數據庫的操作就在用戶層實現了。以下是這個系統的所有代碼:
軟件設計思路
1、 首先建立一個登陸界面,然后做主界面,主界面有以下5個功能:取款,存款,轉賬,轉賬,信息查詢及歷史賬單查詢,修改密碼
2、 在寫數據連接代碼時,我寫了一個SqlHelper類,具體代碼如下
1
public
class
SqlHelper
2
{
3
//
連接數據庫的字符串
4
static
string
connStr =
@"
Data Source=zhao\SQLEXPRESS;Initial Catalog=校園自助銀行系統;Integrated Security=True
"
;
5
//
返回一個表
6
public
static
DataTable ExecuteDataTable(
string
sql,
params
SqlParameter[] param)
7
{
8
DataTable dt =
new
DataTable();
9
using
(SqlConnection conn =
new
SqlConnection(connStr))
10
{
11
conn.Open();
12
using
(SqlCommand cmd =
new
SqlCommand(sql, conn))
13
14
{
15
if
(param !=
null
)
16
{
17
cmd.Parameters.AddRange(param);
18
}
19
SqlDataAdapter sad =
new
SqlDataAdapter(cmd);
20
sad.Fill(dt);
21
}
22
}
23
return
dt;
24
}
25
//
執行增刪改
26
public
static
int
ExecuteNonQuery(
string
sql,
params
SqlParameter[] param)
27
{
28
int
result = -
1
;
29
using
(SqlConnection conn =
new
SqlConnection(connStr))
30
{
31
conn.Open();
32
using
(SqlCommand cmd =
new
SqlCommand(sql, conn))
33
{
34
if
(param !=
null
)
35
{
36
cmd.Parameters.AddRange(param);
37
}
38
result =
cmd.ExecuteNonQuery();
39
}
40
}
41
return
result;
42
}
43
44
//
獲取登錄用戶的信息
45
public
static
DataRow GetDataRow()
46
{
47
DataTable dt = SqlHelper.ExecuteDataTable(
"
select * from 賬戶信息 where CardNumber=@cardnumber
"
,
new
SqlParameter(
"
@cardnumber
"
, UserCardInfo.usercardinfo));
48
DataRow dr = dt.Rows[
0
];
49
return
dr;
50
51
}
52
}
?
在以后的對數據庫操作的過程中,都是使用以上類中的方法
3、在做登錄界面前,先在主界面使用以下代碼,在軟件運行時,先彈出登錄界面
1
Login login =
new
Login();
//
Login是登錄對話框
2
login.ShowDialog();
?
在進入登錄界面時,我先定義一個隨機數,用于驗證碼功能的實現
1
Random r =
new
Random();
2
lblYanZheng.Text = r.Next(
1000
,
9999
).ToString();
//
驗證碼的范圍是1000到9999
?
以下代碼是具體的登錄代碼
1
int
count =
3
;
2
private
void
btnLogin_Click(
object
sender, EventArgs e)
3
{
4
//
記錄銀行卡號
5
string
cardnumber =
txtCardNumber.Text;
6
//
記錄登錄密碼
7
string
secret =
txtCardSecret.Text;
8
//
查詢數據庫中是否有相對應的用戶
9
string
sqlstr =
"
select * from 賬戶信息 where CardNumber=@cardnumber and Secret=@secret
"
;
10
DataTable dt = SqlHelper.ExecuteDataTable(sqlstr,
new
SqlParameter(
"
@cardnumber
"
, cardnumber),
new
SqlParameter(
"
@secret
"
, secret));
11
//
如果查詢結果大于0個,則表示有該用戶
12
if
(dt.Rows.Count >
0
)
13
{
14
//
如果驗證碼正確,則允許登錄
15
if
(txtYanZheng.Text ==
lblYanZheng.Text)
16
{
17
//
用用戶信息類的usercardinfo變量保存銀行卡號
18
UserCardInfo.usercardinfo =
cardnumber;
19
//
選中查詢結果的第一行
20
DataRow dr = dt.Rows[
0
];
21
DataTable dtUser = SqlHelper.ExecuteDataTable(
"
select * from 用戶 where CardNumber=@cardnumber
"
,
new
SqlParameter(
"
@cardnumber
"
, cardnumber));
22
DataRow drUser = dtUser.Rows[
0
];
23
UserCardInfo.name = drUser[
"
Name
"
].ToString();
24
//
登錄成功后,關閉登錄對話框
25
this
.Close();
26
}
27
else
28
{
29
//
如果驗證碼,則計數器遞減
30
count--
;
31
if
(count <=
0
)
32
{
33
MessageBox.Show(
"
密碼輸錯次數過多,程序即將退出
"
);
34
System.Environment.Exit(
0
);
35
}
36
ShowMsg(
"
驗證碼錯誤,您還有
"
+count+
"
次機會
"
);
37
return
;
38
}
39
}
40
else
41
{
42
//
如果用戶名或密碼錯誤,則計數器遞減
43
if
(dt.Rows.Count <=
0
)
44
{
45
count--
;
46
if
(count <=
0
)
47
{
48
MessageBox.Show(
"
密碼輸錯次數過多,程序即將退出
"
);
49
System.Environment.Exit(
0
);
50
}
51
ShowMsg(
"
銀行賬號或密碼錯誤,您還有
"
+ count +
"
次機會
"
);
52
return
;
53
}
54
//
如果驗證碼錯誤
55
else
if
(txtYanZheng.Text !=
lblYanZheng.Text)
56
{
57
count--
;
58
if
(count <=
0
)
59
{
60
MessageBox.Show(
"
密碼輸錯次數過多,程序即將退出
"
);
61
System.Environment.Exit(
0
);
62
}
63
ShowMsg(
"
驗證碼錯誤,您還有
"
+ count +
"
次機會
"
);
64
return
;
65
}
66
}
67
}
68
69
private
void
btnCancle_Click(
object
sender, EventArgs e)
70
{
71
//
徹底退出程序
72
System.Environment.Exit(
0
);
73
}
74
void
ShowMsg(
string
msg)
75
{
76
//
顯示消息
77
MessageBox.Show(msg);
78
}
79
80
private
void
Login_Load(
object
sender, EventArgs e)
81
{
82
//
設置將關閉按鈕隱藏
83
this
.ControlBox =
false
;
84
}
?
4、進入主界面后
1
//
打開取款對話框
2
private
void
lblQuKuan_Click(
object
sender, EventArgs e)
3
{
4
QuKuan qck =
new
QuKuan();
5
qck.ShowDialog();
6
}
7
//
打開存款對話框
8
private
void
lblCunKuan_Click(
object
sender, EventArgs e)
9
{
10
CunKuan qck =
new
CunKuan();
11
qck.ShowDialog();
12
}
13
//
打開轉賬對話框
14
private
void
lblZhuanZhang_Click(
object
sender, EventArgs e)
15
{
16
ZhuanZhang zz =
new
ZhuanZhang();
17
zz.ShowDialog();
18
}
19
//
打開查詢個人信息對話框
20
private
void
lblChaXun_Click(
object
sender, EventArgs e)
21
{
22
ChaXun cx =
new
ChaXun();
23
cx.ShowDialog();
24
}
25
//
打開修改密碼對話框
26
private
void
lblXiuGai_Click(
object
sender, EventArgs e)
27
{
28
ChangeSecret cs =
new
ChangeSecret();
29
cs.ShowDialog();
30
}
31
32
//
歡迎詞做跑龍燈運動
33
private
void
lbltimer_Tick(
object
sender, EventArgs e)
34
{
35
lblWelcome.Text = lblWelcome.Text.Substring(
1
) +
lblWelcome.Text.First();
36
}
37
38
private
void
切換賬戶ToolStripMenuItem_Click(
object
sender, EventArgs e)
39
{
40
//
打開登錄對話框
41
Login login =
new
Login();
42
login.ShowDialog();
43
44
DataTable dt = SqlHelper.ExecuteDataTable(
"
select * from 用戶 where CardNumber=@cardnumber
"
,
new
SqlParameter(
"
@cardnumber
"
, UserCardInfo.usercardinfo));
45
46
//
更新主界面用戶名稱
47
DataRow dr = dt.Rows[
0
];
48
lblUserInfo.Text = dr[
"
Name
"
].ToString();
49
}
50
51
private
void
安全退出ToolStripMenuItem_Click(
object
sender, EventArgs e)
52
{
53
//
退出應用程序
54
Application.Exit();
55
}
56
57
private
void
Form1_Load(
object
sender, EventArgs e)
58
{
59
//
顯示登錄用戶的名稱
60
lblUserInfo.Text =
""
;
61
DataTable dt = SqlHelper.ExecuteDataTable(
"
select * from 用戶 where CardNumber=@cardnumber
"
,
new
SqlParameter(
"
@cardnumber
"
,UserCardInfo.usercardinfo));
62
DataRow dr = dt.Rows[
0
];
63
lblUserInfo.Text = dr[
"
Name
"
].ToString();
64
}
?
5、在進入主界面后,我定義了一個類UserCardInfo,里面定義了幾個字段,用記錄用戶信息
1
static
class
UserCardInfo
2
{
3
//
保存用戶登錄的卡號
4
public
static
string
usercardinfo;
5
//
保存交易時間
6
public
static
string
time;
7
//
保存交易類型
8
public
static
string
type;
9
//
保存交易金額
10
public
static
string
money;
11
//
保存賬戶余額
12
public
static
string
remain;
13
//
保存用戶姓名
14
public
static
string
name;
15
}
?
6、在做存款取款轉賬功能前,我先寫了CunQunKuan類,用于定義存取款轉賬方法,具體代碼如下:
1
static
class
CunQuKuan
2
{
3
//
如果b為true,則為取款,否則為轉賬
4
public
static
bool
QuKuan(
decimal
money,
bool
b)
5
{
6
DataRow dr =
SqlHelper.GetDataRow();
7
//
先獲得當前用戶的余額
8
decimal
moneyRemain =
decimal
.Parse(dr[
"
Money
"
].ToString());
9
//
如果取款或轉賬的金額大于賬戶余額,則失敗
10
if
(money >
moneyRemain)
11
{
12
MessageBox.Show(
"
余額不足,取款失敗!
"
);
13
return
false
;
14
}
15
else
16
{
17
//
如果成功,則將余額減去所取的金額
18
moneyRemain -=
money;
19
//
更新數據庫,將該用戶的賬戶余額改為取款后的余額
20
SqlHelper.ExecuteNonQuery(
"
update 賬戶信息 set Money=@moneyRemain where CardNumber=@cardnumber
"
,
new
SqlParameter(
"
@moneyRemain
"
, moneyRemain),
new
SqlParameter(
"
@cardnumber
"
, dr[
"
CardNumber
"
].ToString()));
21
if
(b ==
true
)
22
{
23
MessageBox.Show(
"
取款成功!
"
);
24
}
25
else
26
{
27
MessageBox.Show(
"
轉賬成功!
"
);
28
}
29
return
true
;
30
}
31
}
32
33
//
存款的方法
34
public
static
void
CunKuan(
decimal
money)
35
{
36
DataRow dr =
SqlHelper.GetDataRow();
37
decimal
moneyRemain =
decimal
.Parse(dr[
"
Money
"
].ToString());
38
moneyRemain +=
money;
39
SqlHelper.ExecuteNonQuery(
"
update 賬戶信息 set Money=@moneyRemain where CardNumber=@cardnumber
"
,
new
SqlParameter(
"
@moneyRemain
"
, moneyRemain),
new
SqlParameter(
"
@cardnumber
"
, dr[
"
CardNumber
"
].ToString()));
40
MessageBox.Show(
"
存款成功!
"
);
41
}
42
}
?
7、在做好以上工作以后,我做了取款功能,代碼如下:
1
private
void
btnOk_Click(
object
sender, EventArgs e)
2
{
3
decimal
money =
decimal
.Parse(txtMoney.Text);
4
//
執行取款操作,并獲得返回值,如果返回true,則打印憑證
5
bool
b= CunQuKuan.QuKuan(money,
true
);
6
if
(b)
7
{
8
DialogResult result = MessageBox.Show(
"
是否打印憑條
"
,
"
打印憑條
"
, MessageBoxButtons.YesNo);
9
DataRow dr =
SqlHelper.GetDataRow();
10
//
如果點是,則打印憑證
11
if
(result ==
DialogResult.Yes)
12
{
13
//
將標簽的文本改為取款信息
14
lblprint.Text =
string
.Format(
"
卡號:{0}\t\n姓名:{1}\t\n時間:{2}\t\n取款:{3}
"
, dr[
"
CardNumber
"
].ToString(), UserCardInfo.name, DateTime.Now, money.ToString());
15
//
將標簽狀態改為可視
16
lblprint.Visible =
true
;
17
}
18
//
向交易信息中插入取款記錄
19
AddJYInfo.MyMethod(dr,money,
"
取款
"
);
20
}
21
}
22
23
private
void
btnBack_Click(
object
sender, EventArgs e)
24
{
25
//
關閉取款對話框
26
this
.Close();
27
}
28
29
//
當窗口加載的時候,顯示賬戶余額
30
private
void
QuKuan_Load(
object
sender, EventArgs e)
31
{
32
DataRow dr =
SqlHelper.GetDataRow();
33
lblMoneyRemain.Text += dr[
"
Money
"
].ToString();
34
}
?
8、以下是存款功能代碼:
1
private
void
btnOk_Click(
object
sender, EventArgs e)
2
{
3
//
獲得輸入的存款金額
4
decimal
money =
decimal
.Parse(txtMoney.Text);
5
//
執行存款程序
6
CunQuKuan.CunKuan(money);
7
//
返回用戶信息所在行
8
DataRow dr=
SqlHelper.GetDataRow();
9
//
想交易信息中添加存款記錄
10
AddJYInfo.MyMethod(dr, money,
"
存款
"
);
11
}
12
13
private
void
btnBack_Click(
object
sender, EventArgs e)
14
{
15
//
關閉存款對話框
16
this
.Close();
17
}
?
9、以下是轉賬代碼:
1
private
void
btnOk_Click(
object
sender, EventArgs e)
2
{
3
decimal
money =
decimal
.Parse(txtMoney.Text);
4
string
receiver =
txtReceiver.Text;
5
//
獲取轉賬用戶的記錄
6
DataRow dr=
SqlHelper.GetDataRow();
7
//
如果轉賬的金額大于賬戶余額,則禁止轉賬
8
if
(money >
decimal
.Parse(dr[
"
Money
"
].ToString()))
9
{
10
MessageBox.Show(
"
余額不足,轉賬失敗!
"
);
11
return
;
12
}
13
else
14
{
15
DataTable dt = SqlHelper.ExecuteDataTable(
"
select * from 賬戶信息 where CardNumber=@receiver
"
,
new
SqlParameter(
"
@receiver
"
, receiver));
16
//
如果數據庫中存在接收轉賬的用戶
17
if
(dt.Rows.Count >
0
)
18
{
19
DataRow drReceiver = dt.Rows[
0
];
20
//
查詢接收轉賬的用戶的金額
21
decimal
moneyReceiver =
decimal
.Parse(drReceiver[
"
Money
"
].ToString());
22
//
接收者的金額加上轉的金額
23
moneyReceiver +=
money;
24
//
更新接收轉賬的用戶的金額
25
SqlHelper.ExecuteNonQuery(
"
update 賬戶信息 set Money=@moneyReceiver where CardNumber=@receiver
"
,
new
SqlParameter(
"
@moneyReceiver
"
, moneyReceiver),
new
SqlParameter(
"
@receiver
"
, receiver));
26
//
執行取款方法,false表示彈出的消息框為轉賬成功
27
CunQuKuan.QuKuan(money,
false
);
28
dr =
SqlHelper.GetDataRow();
29
//
向交易信息中添加轉賬記錄
30
AddJYInfo.MyMethod(dr, money,
"
轉賬
"
);
31
}
32
else
33
{
34
MessageBox.Show(
"
該用戶不存在,請核對賬戶是否正確
"
);
35
return
;
36
}
37
}
38
39
}
40
41
42
private
void
btnBack_Click(
object
sender, EventArgs e)
43
{
44
//
關閉轉賬對話框
45
this
.Close();
46
}
?
10、同時,為了記錄用戶存款取款轉賬記錄,我定義了AddJYInfo類,代碼如下:
1
class
AddJYInfo
2
{
3
//
向交易信息表中添加交易信息記錄
4
public
static
void
MyMethod(DataRow dr, Decimal money,
string
type)
5
{
6
//
銀行卡號
7
UserCardInfo.usercardinfo = dr[
"
CardNumber
"
].ToString();
8
//
交易金額
9
UserCardInfo.money =
money.ToString();
10
//
交易時間
11
UserCardInfo.time =
DateTime.Now.ToString();
12
//
交易類型
13
UserCardInfo.type =
type;
14
//
交易后賬戶余額
15
UserCardInfo.remain = dr[
"
Money
"
].ToString();
16
//
向數據庫中插入交易記錄
17
string
sql =
"
insert into 交易記錄 (CardNumber,Time,Money,Type,Remain) Values(@usercardinfo, @time,@money,@type,@remain)
"
;
18
SqlHelper.ExecuteNonQuery(sql,
new
SqlParameter(
"
@usercardinfo
"
, UserCardInfo.usercardinfo),
new
SqlParameter(
"
@time
"
, UserCardInfo.time),
new
SqlParameter(
"
@money
"
, UserCardInfo.money),
new
SqlParameter(
"
@type
"
, UserCardInfo.type),
new
SqlParameter(
"
@remain
"
, UserCardInfo.remain));
19
}
20
}
?
11、接下來是信息查詢及歷史交易記錄查詢功能,在做歷史交易記錄查詢功能時,我添加了類AddData,定義了一個根據所選的年份和月份動態添加每個月的天數,代碼如下:
1
class
AddData
2
{
3
public
static
List<
int
> AddDay(
int
year,
int
month)
4
{
5
List<
int
> list =
new
List<
int
>
();
6
if
(month ==
1
|| month ==
3
|| month ==
5
|| month ==
7
|| month ==
9
|| month ==
11
)
7
{
8
list.Clear();
9
for
(
int
i =
1
; i <=
31
; i++
)
10
{
11
list.Add(i);
12
}
13
}
14
else
if
(month ==
4
|| month ==
6
|| month ==
8
|| month ==
10
|| month ==
12
)
15
{
16
list.Clear();
17
for
(
int
i =
1
; i <=
30
; i++
)
18
{
19
list.Add(i);
20
}
21
}
22
else
23
{
24
if
(year %
4
==
0
&& year %
100
!=
0
|| year %
400
==
0
)
25
{
26
list.Clear();
27
for
(
int
i =
1
; i <=
29
; i++
)
28
{
29
list.Add(i);
30
}
31
}
32
else
33
{
34
list.Clear();
35
for
(
int
i =
1
; i <=
28
; i++
)
36
{
37
list.Add(i);
38
}
39
}
40
}
41
return
list;
42
}
43
}
?
12、以下是信息查詢及歷史交易記錄查詢代碼:
1
private
void
ChaXun_Load(
object
sender, EventArgs e)
2
{
3
//
獲取該用戶信息
4
DataRow dr =
SqlHelper.GetDataRow();
5
//
獲得銀行卡號
6
string
cardnumber = dr[
"
CardNumber
"
].ToString();
7
//
將表格控件的數據源綁定
8
dataGridView.DataSource = SqlHelper.ExecuteDataTable(
"
select * from 用戶 where CardNumber=@cardnumber
"
,
new
SqlParameter(
"
@cardnumber
"
, cardnumber));
9
//
選擇起始年份的默認項為下標為0的項
10
cbStartYear.SelectedIndex =
0
;
11
//
選擇截止年份的默認項為下標為0的項
12
cbEndYear.SelectedIndex =
0
;
13
//
選擇起始月份的默認項為下標為5的項
14
cbStartMonth.SelectedIndex =
5
;
15
//
選擇截止月份的默認項為下標為5的項
16
cbEndMonth.SelectedIndex =
5
;
17
}
18
19
private
void
btnOk_Click(
object
sender, EventArgs e)
20
{
21
//
關閉查詢對話框
22
this
.Close();
23
}
24
25
private
void
btnQuery_Click(
object
sender, EventArgs e)
26
{
27
28
int
startyear =
int
.Parse(cbStartYear.SelectedItem.ToString());
29
int
startmonth =
int
.Parse(cbStartMonth.SelectedItem.ToString());
30
31
int
endyear =
int
.Parse(cbEndYear.SelectedItem.ToString());
32
int
endmonth =
int
.Parse(cbEndMonth.SelectedItem.ToString());
33
34
try
35
{
36
int
startday =
int
.Parse(cbStartDay.SelectedItem.ToString());
37
int
endday =
int
.Parse(cbEndDay.SelectedItem.ToString());
38
39
if
(startyear > endyear || (startyear <= endyear && startmonth > endmonth) || (startyear <= endyear && startmonth <= endmonth && startday >
endday))
40
{
41
MessageBox.Show(
"
請輸入正確的查詢日期范圍
"
);
42
return
;
43
}
44
else
45
{
46
DataTable dt = SqlHelper.ExecuteDataTable(
"
select * from 交易記錄 where Year(Time)>=@startyear and Year(Time)<=@endyear and Month(Time)>=@startmonth and Month(Time)<=@endmonth and Day(Time)>=@startday and Day(Time)<=@endday and CardNumber=@cardnumber
"
,
new
SqlParameter(
"
@startyear
"
, startyear),
new
SqlParameter(
"
@endyear
"
, endyear),
new
SqlParameter(
"
@startmonth
"
, startmonth),
new
SqlParameter(
"
@endmonth
"
, endmonth),
new
SqlParameter(
"
@startday
"
, startday),
new
SqlParameter(
"
@endday
"
, endday),
new
SqlParameter(
"
@cardnumber
"
, UserCardInfo.usercardinfo));
47
if
(dt.Rows.Count >
0
)
48
{
49
tableHistory.DataSource =
dt;
50
}
51
else
52
{
53
tableHistory.DataSource =
null
;
54
MessageBox.Show(
"
sorry,未查詢到相關數據
"
);
55
}
56
}
57
}
58
catch
(Exception)
59
{
60
MessageBox.Show(
"
請選擇查詢日期
"
);
61
}
62
63
}
64
//
當起始月份的選擇項索引發生變化時發生的事件
65
private
void
cbStartMonth_SelectedIndexChanged(
object
sender, EventArgs e)
66
{
67
int
month =
int
.Parse(cbStartMonth.SelectedItem.ToString());
68
int
year =
int
.Parse(cbStartYear.SelectedItem.ToString());
69
//
先清空之前已添加的天數
70
cbStartDay.Items.Clear();
71
foreach
(
int
item
in
AddData.AddDay(year, month))
72
{
73
//
向起始天下拉框中添加天數
74
cbStartDay.Items.Add(item);
75
}
76
77
}
78
//
當截止月份的選擇項索引發生變化時發生的事件
79
private
void
cbEndMonth_SelectedIndexChanged(
object
sender, EventArgs e)
80
{
81
int
month =
int
.Parse(cbEndMonth.SelectedItem.ToString());
82
int
year =
int
.Parse(cbEndYear.SelectedItem.ToString());
83
cbEndDay.Items.Clear();
84
foreach
(
int
item
in
AddData.AddDay(year, month))
85
{
86
cbEndDay.Items.Add(item);
87
}
88
89
}
?
13、最后是修改密碼功能,具體代碼如下:
1
//
設置允許改密碼錯誤的次數
2
int
count =
3
;
3
private
void
btnOk_Click(
object
sender, EventArgs e)
4
{
5
//
或舊密碼
6
string
oldpwd =
txtOldPwd.Text;
7
//
獲得輸入的新密碼
8
string
newpwd =
txtNewPwd.Text;
9
//
獲得確認的新密碼
10
string
newpwd2 =
txtNewPwd2.Text;
11
//
查詢該用戶信息
12
DataRow dr =
SqlHelper.GetDataRow();
13
//
如果輸入的舊密碼正確和兩次輸入的新密碼都一致,則修改密碼成功
14
if
(oldpwd == dr[
"
secret
"
].ToString() && newpwd ==
newpwd2)
15
{
16
SqlHelper.ExecuteNonQuery(
"
update 賬戶信息 set Secret=@secret where CardNumber=@cardnumber
"
,
new
SqlParameter(
"
@secret
"
, newpwd),
new
SqlParameter(
"
@cardnumber
"
, dr[
"
CardNumber
"
].ToString()));
17
MessageBox.Show(
"
恭喜您,密碼修改成功!
"
);
18
}
19
//
如果舊密碼錯誤,則要求重新輸入舊密碼,如果輸錯三次,則退出修改密碼對話框
20
else
if
(oldpwd != dr[
"
secret
"
].ToString())
21
{
22
MessageBox.Show(
"
原始密碼不正確,您還剩
"
+ --count +
"
次機會
"
);
23
if
(count <=
0
)
24
{
25
this
.Close();
26
}
27
return
;
28
}
29
//
如果兩次輸入的新密碼不一致
30
else
if
(newpwd !=
newpwd2)
31
{
32
MessageBox.Show(
"
親,您的倆次密碼不一致哦!再檢查一下吧
"
);
33
return
;
34
}
35
36
}
37
38
private
void
btnCancle_Click(
object
sender, EventArgs e)
39
{
40
//
關閉修改密碼對話框
41
this
.Close();
42
}
?
?
最后總結一下做這個系統之后的感受吧,以前學習的時候,不知道為什么別人要定義這個類,為什么這個方法的返回值要是這個類型,其實大可不必糾結這些問題,在自己做的時候,就會發現根據項目的需要,自然而然的需要做這些事情。通過這次實踐,更加加深了我對ADO.Net的理解,在后面的學習過程中,多實踐多練習才是快速掌握知識的正確途徑,沒有一定代碼的積累,是很難成為真正的高手。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

