ASP.NET银行大厅自助信息系统的开发与实现
本毕业设计在基于银行业务大厅现有业务的基础上,针对自助银行的概念和其独有特点,通过.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");
}
相关文章:
ASP.NET银行大厅自助信息系统的开发与实现
摘 要 本毕业设计在基于银行业务大厅现有业务的基础上,针对自助银行的概念和其独有特点,通过.NETSQL技术,开发一个简单的银行大厅自助信息系统,完成一些自助银行的业务需求如帐户信息查询、帐户挂失、自助交费、留言、新闻查询…...
学习Vue3中reactive
学习Vue3中reactive 一、前言1、响应式对象2、对象属性的访问3、嵌套响应式对象4、避免直接修改响应式对象5、ref vs reactive 一、前言 在 Vue 3 中,reactive 是一个用于创建响应式对象的函数。响应式对象是 Vue 3 中数据驱动视图的核心,它们的属性的变…...
【Transformer-BEV编码(10)】CVPR2021 PYVA 第一个明确提到 cross-attention decoder可用于视图转BEV
论文信息 论文名:Projecting Your View Attentively: Monocular Road Scene Layout Estimation via Cross-view Transformation 中文:通过交叉视图变换(crossview transform module)估计单目道路场景布局 数据集:KITT…...
nestJs中跨库查询
app.module.ts中配置 模块的module中 注意实体类在写的时候和数据库中的表名一样 service中使用一下...
Java编程思想
面向对象编程(OOP)-CSDN博客 面向对象(OOP)的主要特点-CSDN博客 接口(Interface)和抽象类(Abstract Class)编程思想-CSDN博客 接口(Interface)和抽象类(Abstract Class)区别-CSDN博客 抽象类(Abstract Class)-CSDN博客 普通类和抽象类-CSDN博客 内部类编程思想-CSDN博客 …...
数组(Java)
数组 数组是相同类型元素的集合。 数组的定义和使用 数组的创建 数组名又叫引用变量,简称引用 下面代码段中new表示创建新的对象 T[ ] 数组名 new T[ N ];//数组名又叫引用变量,简称变量 //T:表示数组中存放元素的类型 //T[]…...
接口自动化测试框架搭建
🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号:互联网杂货铺,回复1 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、原理及特点 参数放在XML文件中进行管理用httpClien…...
(四十二)第 6 章 树和二叉树(树的二叉链表(孩子-兄弟)存储)
1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ? strrch…...
测试萌新Python学习(五)接口自动化测试requests
requests 接口自动化测试requests库基本实现请求-GET基本实现请求-POST基本实现请求-补充 sessionCookie和Session案例params 接口自动化测试 概念程序驱动代替人工驱动去实现接口测试 实现方式 测试工具(jmeter, postman, …)编码工具(python, java, …) 比较 工具 优点:…...
Python 机器学习 基础 之 监督学习 [朴素贝叶斯分类器] / [决策树] 算法 的简单说明 / [graphviz] 绘制决策树
Python 机器学习 基础 之 监督学习 [朴素贝叶斯分类器] / [决策树] 算法 的简单说明 / [graphviz] 绘制决策树 目录 Python 机器学习 基础 之 监督学习 [朴素贝叶斯分类器] / [决策树] 算法 的简单说明 / [graphviz] 绘制决策树 一、简单介绍 二、监督学习 算法 说明前的 数…...
QT日志类SimpleQtLogger的简单记录
在现代软件开发中,日志记录是必不可少的部分。它不仅帮助开发者在调试和维护软件时了解程序的运行状态,还能提供关键的错误信息。对于使用Qt框架开发应用程序的开发者来说,选择一个合适的日志库至关重要。本文将详细介绍Qt日志库SimpleQtLogg…...
设计模式:观察者模式
观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式通常被用来实现事件处理系统、实时数据更新、…...
ICode国际青少年编程竞赛- Python-5级训练场-带参数函数
ICode国际青少年编程竞赛- Python-5级训练场-带参数函数 1、 def get_item(a):Dev.step(a)Dev.step(-a) get_item(4) Spaceship.step(2) get_item(2) Spaceship.step(3) get_item(5) Spaceship.step(2) get_item(3) Spaceship.step(3) get_item(4)2、 def get_item(a): D…...
运维别卷系列 - 云原生监控平台 之 02.prometheus exporter 实践
文章目录 [toc]exporter 简介常用的 exporternode-exporter 实践创建 svc创建 daemonsetprometheus 配置服务发现 exporter 简介 随着 Prometheus 的流行,很多系统都已经自带了用于 Prometheus 监控的接口,例如 etcd、Kubernetes、CoreDNS 等,…...
OSPF基本配置
1.启动OSPF进程 [rijospf1 router-id 1.1.1.1 --- 手工配置RID [r1-ospf-1) 2,创建区域 [r1-ospf-1]area 0 [r1-ospf-1-area-0.0.0.0) 3,宣告 目的:1,只有被宣告网段中的接口才能被激活。 --- 激活接口 ---- 只有激活的接口才能收发OSPF的…...
HIVE大数据平台SQL优化分享
相信很多小伙伴在面试的时候,必然跳不过去的一个问题就是SQL脚本的优化,这是很多面试官爱问的问题,也是可以证明你实力进阶的一个重要的能力。 下面给大家分享一个重量级的大数据行业sql技能---hive大数据平台SQL优化。 此文章是大数据平台…...
JS算法-十大排序算法(上)
思想小剧场 如果我的相对论被证明是正确的,德国人就会说我是德国人,法国人会说我是一个世界公民;如果我的相对论被否定了,法国佬就会骂我是德国鬼子,而德国人就会把我归为犹太人。—爱因斯坦 以下案例都是升序 const a…...
c++编程(11)——string类的模拟实现
欢迎来到博主的专栏——c编程 博主ID:代码小豪 文章目录 前言string类的模拟实现string的成员对象构造、赋值、析构访问成员对象的接口访问字符串中的元素迭代器对字符序列的插入、删除元素操作mystring类的相关操作 mystring类的所有模拟实现以及测试案例 前言 本…...
Python从0到POC编写--函数
数学函数: 1. len len() 函数返回对象(字符、列表、元组等)长度或项目个数, 例如: str "python" len(str)2. range range() 函数返回的是一个可迭代对象(类型是对象),…...
【教程】Linux/Jetson 安装X11VNC同步屏幕内容
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,请不吝给个[点赞、收藏、关注]哦~ 目录 背景说明 实际效果 安装步骤 安装 x11vnc 配置 x11vnc 配置 x11vnc 作为系统服务 使用 VNC 客户端连接 背景说明 通常vnc-server是单…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果