本畢業設計在基于銀行業務大廳現有業務的基礎上,針對自助銀行的概念和其獨有特點,通過.NET+SQL技術,開發一個簡單的銀行大廳自助信息系統,完成一些自助銀行的業務需求如帳戶信息查詢、帳戶掛失、自助交費、留言、新聞查詢等功能。
本論文從分析目前電子銀行發展現狀入手,具體深入地考察了當前自助銀行的客戶需求,詳細說明了系統的結構設計,后臺數據庫的設計,系統功能設計,最后系統測試的效果,客觀對整個系統進行了總結并對其提出修改意見。
關鍵字:帳戶掛失;自助銀行;.NET技術;C#語言;SQL SERVER數據庫
3.1? 功能需求
本論文根據自助銀行實際功能和用戶的實際需求,在.NET環境下為用戶提供必要的功能服務,其系統分為以下三類用戶:
(1)管理員用戶:這是具有高級權限的一類用戶,要求能夠發布新聞和管理新聞;能夠與用戶進行交流,也就是要求能夠通過發布留言形式處理用戶的問題并且管理留言;要求能及時的處理用戶的掛失申請。
(2)帳號用戶:瀏覽自己的帳戶信息,實現對帳戶密碼的管理;能夠對自己的帳戶活動進行細致的查詢;能夠實現帳戶在緊急情況下的掛失處理;能夠提供便捷服務,如簡單的交費;要求瀏覽最近新聞,和發表看法。
(3)一般用戶:要求瀏覽最近新聞,和發表看法。
4.1? 系統結構簡介
本文論述的銀行大廳自助信息管理系統是基于B/S結構的數據庫應用系統,具體反映為ASP+SQL技術的一種具體實現,根據B/S結構和用戶實際應用特點,實現的功能主要可以在兩類不同的機子上完成:Web服務器和自助機客戶端。在客戶端,主要實現使用用戶的瀏覽功能和提交業務功能。在Web服務器上,主要來實現整個自助銀行功能的后臺處理及存儲功能。后臺數據庫由一系列的具有相互關聯的邏輯關系的表構成。還有一些存儲過程和控件,用于實現其他的功能比如自動編號和圖表生成。
4.2 ?具體功能模塊劃分
根據用戶的需求分析和對系統功能的考量,得到如下的系統功能圖:
5.1? 用戶登陸
5.1.1? 儲戶登陸
圖5-1 用戶登陸頁面
系統會自動判斷身份證號,帳戶號碼,密碼,驗證碼是否為空,還會驗證身份證號是否符合國家規定的標準格式
//驗證碼的實現
asp:TextBox ID="txtCode" runat="server" Font-Size="0.8em" Width="74px" MaxLength="4"></asp:TextBox>
<img alt="點擊刷新驗證碼" src="CodeImg.aspx" height="15" width="45" οnclick="this.src='CodeImg.aspx'" /></td>
if (txtCode.Text != Session["VerifyCode"].ToString())
{Response.Write("<script>alert('" + "驗證碼不正確!" + "');</script>");
return; }
5.1.2? 管理員登陸
圖5-2 管理員登陸頁面
5.2? 查詢帳戶信息
成功登陸系統過后,所要查詢的帳戶信息就會馬上顯示出來。存折類型會用紅色字體注明,掛失時間和處理時間在帳戶正常的時候不會有顯示。信息顯示采用.NET2005的GridView控件(存折帳戶相同):
圖5-3 帳戶顯示效果圖
后臺動作:
SQLstr = "select account as 帳戶,balance as 帳戶余額,estate as 帳戶狀態,firsttime as 掛失時間,secondtime as 處理時間 from account where ucard = '" + Session["logincard"].ToString() + "' and sort = '信用卡'";
//獲取數據庫連接字符串
strConnection = ConfigurationManager.AppSettings.Get("strConnection");
//建立數據庫連接
myConnection = new SqlConnection(strConnection);
myAdapter = new SqlDataAdapter(SQLstr, myConnection);
//定義內存數據庫
Dsak = new DataSet();
myAdapter.Fill(Dsak, "ak");
GVmyaccount_k.DataSource = Dsak.Tables["ak"];
GVmyaccount_k.DataBind();
追加顯示多個帳戶:用戶可以通過繼續輸入帳戶號碼和密碼添加更多的帳戶進行查詢,系統會自動搜尋數據庫中是否存在此帳戶。
圖5-4 帳戶追加功能圖
5.3? 新聞瀏覽
用戶可以瀏覽最近發布的幾條新聞題目,其中新聞題目過多的時候,系統會分頁顯示它們。通過點選題目可以在新的頁面看到新聞的具體內容。
圖5-5 新聞標題顯示效果圖
圖5-6 新聞內容顯示效果圖
管理員可以對新聞內容添加和刪除。
圖5-7 新聞刪除示意
圖5-8 新聞發布示意圖
5.4? 留言管理
任何權限的用戶均可以發布留言,留言必須輸入題目。只有管理員才能回復用戶的留言,已回復留言的內容系統用黃色注明。
圖5-9 處理回復留言
圖5-10 回復示意圖
5.5? 消費日志查詢
用戶通過設置時間起點和終點查詢選擇帳戶的金額發生記錄,可以作為帳戶改變的日志記錄。
圖5-11 帳戶消費查詢示意圖
5.6? 自助交費
本系統提供簡單代收費管理功能,交費項目由管理員后臺添加,用戶需要選擇需要交費的項目和輸入自己的某個帳號和其密碼(定期帳號不能進行交費),便可以繳納不多于自己帳戶余額的金額。交費金額精確到小數點后一位。
圖5-12 自助交費功能圖
SQLstr = "select * from account where account = '" + DDLrepchargeaccount.Text + "'";
//獲取數據庫連接字符串和建立數據庫連接省略……
myAdapter = new SqlDataAdapter(SQLstr, myConnection);
Dsbalance = new DataSet();
myAdapter.Fill(Dsbalance, "balance");
if(Convert.ToInt64(Dsbalance.Tables["balance"].Rows[0]["balance"].ToString())<Convert.ToInt64(TBrepchargemoney.Text))
{
Response.Write("<script language='javascript'>alert('你的帳戶 " + DDLrepchargeaccount.Text + " 沒有足夠的余額來交納此項費用');</script>");
return;
}
SQLstr = "INSERT INTO note(account,citem,csum) VALUES ('" + DDLrepchargeaccount.Text + "','" + DDLrepchargeitem.Text + "','" + TBrepchargemoney.Text + "')";
myCmd = new SqlCommand(SQLstr, myConnection);
myCmd.Connection.Open();
//異常捕獲語句省略……
//扣除消費的金額
Lstr = "update account set balance = '" + Convert.ToString(Convert.ToInt64(Dsbalance.Tables["balance"].Rows[0]["balance"].ToString()) Convert.ToInt64(TBrepchargemoney.Text)) + "' where account = '" + DDLrepchargeaccount.Text + "'";
myCmd = new SqlCommand(SQLstr, myConnection);
myCmd.Connection.Open();
//異常捕獲語句省略……
5.7? 掛失處理
5.7.1? 用戶掛失申請和取消掛失申請
帳號掛失功能主要采用用戶申請掛失,管理員批準掛失;處理完成后用戶申請取消掛失,管理員批準的模式。一般用戶申請掛失后24小時之內,銀行要對申請作出回應,系統會自動記錄申請提交的時間,和處理的時間,方便用戶查看。
圖5-13 用戶掛失申請和取消掛失申請圖
//帳戶狀態改變處理
protected void GridViewreport_SelectedIndexChanged(object sender, EventArgs e)
{
SQLstr = "update account set estate = '掛失處理中',firsttime ='" + DateTime.Now.ToString() + "' where account = '" + GridViewreport.SelectedRow.Cells[1].Text + "'";
myCmd = new SqlCommand(SQLstr, myConnection);
myCmd.Connection.Open();
}
//異常捕獲語句省略……
//帳戶狀態改變處理
protected void GridViewureport_SelectedIndexChanged(object sender, EventArgs e)
{
SQLstr = "update account set estate = '取消掛失中' where account = '" + GridViewureport.SelectedRow.Cells[1].Text.ToString().Trim() + "'";
myCmd = new SqlCommand(SQLstr, myConnection);
myCmd.Connection.Open(); }
//異常捕獲語句省略……
5.7.2? 管理員處理掛失和處理申請掛失
圖5-14 管理員處理掛失和處理申請掛失圖
protected void GridViewadmindeluser_SelectedIndexChanged(object sender, EventArgs e)
{
SQLstr = "select * from account where account = '" + GridViewadmindeluser.SelectedRow.Cells[1].Text + "'";
myAdapter = new SqlDataAdapter(SQLstr, myConnection);
Dsuser = new DataSet();
myAdapter.Fill(Dsuser, "account");
}
if (Dsuser.Tables["account"].Rows[0]["estate"].ToString() == "掛失處理中")
{
SQLstr = "update account set estate = '掛失',secondtime ='" + DateTime.Now.ToString() + "' where account = '" + GridViewadmindeluser.SelectedRow.Cells[1].Text + "'";
}
else
{
SQLstr = "update account set estate = '正常',firsttime = null,secondtime = null where account = '" + GridViewadmindeluser.SelectedRow.Cells[1].Text + "'";
}
myCmd = new SqlCommand(SQLstr, myConnection);
myCmd.Connection.Open();
圖5-15 用戶看到的帳戶狀態改變圖
5.8? 密碼修改
5.8.1? 用戶帳戶密碼修改
系統會要求用戶輸入原有密碼并確認后,便可以將舊有密碼替換成新密碼,系統會自動判斷兩次輸入的新密碼是否一致。
圖5-16 用戶帳戶密碼修改圖
5.8.2? 管理員修改登陸密碼
圖5-17 管理員修改登陸密碼
5.9? 帳號鎖定
此功能是為了防止惡意猜測帳戶密碼的行為,當用戶輸入錯誤密碼,登陸某個帳戶不成功達到五次,此帳號便暫時鎖定,用戶必須申請管理員取消鎖定。
圖5-18 帳號鎖定圖
if (Convert.ToInt32(Session["loginoverflow"].ToString()) >= 5)
{
SQLstr = "INSERT INTO loginoverflow(lofucard,lofip) VALUES ('" + TBuname.Text + "','" + Page.Request.UserHostAddress+ "')";
myCmd = new SqlCommand(SQLstr, myConnection);
myCmd.Connection.Open();
try
{
myCmd.ExecuteNonQuery();
myCmd.Connection.Close();
}
catch
{
myCmd.Connection.Close();
return;
}
{
Response.Redirect("~/index.aspx");
Response.Write("<script language='javascript'>alert('登陸失敗');</script>");
}
}
try
{
strConnection = ConfigurationManager.AppSettings.Get("strConnection");
//獲取數據庫連接字符串
//建立數據庫連接
myConnection = new SqlConnection(strConnection);
SQLstr = "select lofucard as 鎖定帳號,loftime as 鎖定時間 from loginoverflow order by id desc";
myAdapter = new SqlDataAdapter(SQLstr, myConnection);
Dslw = new DataSet();
myAdapter.Fill(Dslw, "ip");
GridViewadmindellw.DataSource = Dslw.Tables["ip"];
GridViewadmindellw.DataBind();
}
catch
{ return;}
}
protected void GridViewadmindellw_SelectedIndexChanged(object sender, EventArgs e)
{
//刪除黑名單中的記錄
SQLstr = "delete loginoverflow where lofucard = '" + GridViewadmindellw.SelectedRow.Cells[1].Text + "' and lofip = '" + ??GridViewadmindellw.SelectedRow.Cells[2].Text + "'";
myCmd = new SqlCommand(SQLstr, myConnection);
myCmd.Connection.Open();
try
{
myCmd.ExecuteNonQuery();
myCmd.Connection.Close();
}
catch
{
myCmd.Connection.Close();
return;
}
Response.Redirect("~/adminipkill.aspx");
}