软件工程atm模拟程序实施Word格式.docx
《软件工程atm模拟程序实施Word格式.docx》由会员分享,可在线阅读,更多相关《软件工程atm模拟程序实施Word格式.docx(19页珍藏版)》请在冰点文库上搜索。
在ATM自动取款机上也可以进行账户查询、修改密码和转账的业务。
作为自助式金融服务终端,除了提供金融业务功能之外,ATM自动取款机还具有维护、测试、事件报告、监控和管理等多种功能。
在银行业务流程当中起着承上启下的作用,其重要性不言而喻。
但是,目前许多银行在具体的一些业务流程处理过程中仍然使用手工操作的方式来实施,不仅费时、费力,效率低下,而且无法达到理想的效果。
1.2定义
专业术语与缩略词
帐号:
在银行中,事物应用的单个帐号。
每个顾客可以拥有多个帐号。
用户:
拥有银行的一个或多个帐号的人。
可以是一个人或多个人,或者是公司。
相同的人,拥有不同的银行帐号被认为是不同的落户。
ATM:
ATM是AutomaticTellerMachine的缩写,意为自动取款机。
是一种高度精密的机电一体化设备,利用磁卡或智能IC卡储存用户信息并通过加密键盘输入密码然后通过银行内部网络验证并进行各种交易的金融自助设备。
1.3参考资料
[4]ATM自动取款机系统——项目开发计划书
[5]ATM自动取款机系统——可行性分析报告
1.4小组分配
1,组长:
吕锟(学号:
20101204041)
陈瑛(学号:
20101204002)
沈东东(学号:
20101204051)
2,工作分配
陈瑛:
写开题报告及后期报告
软件功能策划
沈东东:
后期工作
吕锟:
界面设计
软件设计
程序代码设计
7.项目进度计划安排
第3周~第4周:
写需求分析报告
第4周~第5周:
设计方案
第5周~第9周:
设计
第9周~第10周:
写界面设计报告
第10周~第11周:
测试
2.任务概述
2.1设计内容
完成一个管理类的综合型设计:
银行ATM模拟存取系统。
该系统应该具有以下功能:
1)账户管理功能
a)账户登录:
输入账户、密码,验证是否能够登录该系统;
b)密码修改:
输入两次相同的密码方可修改。
2)账务管理功能
a)存款:
每笔存款金额大于0元小于等于1000元,以50元为基本单位。
需记录交易日期和时间。
b)取款:
每笔取款金额大于等于100元小于等于2000元,以50元为基本单位。
c)转账:
每笔转账金额大于等于100元小于等于5000元。
3)查询功能
a)余额查询
2.2运行环境
软件环境:
操作系统:
MicrosoftWindowsXP或更高版本
支持浏览器:
InternetExplorer7.0及其以上版本
开发环境:
MicrosoftSQLServer2005
4.功能需求
4.1功能划分
首先进行系统分析,简单的来说该系统大概需要以下五个模块:
1.身份验证模块
2.取款模块
3.查询余额模块
4.转账模块
5.修改密码模块
图3-5功能图1
键盘输入模块需求
图3-7键盘输入模块的数据流程图
IC卡认证模块需求:
显示模块需求:
4.2功能描述
(1)取款功能
a.描述:
ATM提供的事务类型为取款。
输入:
认证完成,输入需要提取的金额。
处理:
输入的数量同max(50000,ATM机余额,银行卡余额)进行比较。
输出:
显示需要提取的现金的数量,开始初始取款序列。
b.描述:
初始取款序列。
如果所取金额大于max(50000,ATM机余额,银行卡余额)则撤销事务。
顾客输入的金额大于max(50000,ATM机余额,银行卡余额)。
显示错误消息,提示金额大于50000或ATM机余额或银行卡余额。
回到操作界面。
c.描述:
执行事务。
输入:
初始取款序列成功。
处理:
发送请求给银行计算机。
输出:
ATM机弹出所取金额,更新并保存信息,显示取款成功。
(3)查询余额功能
描述:
ATM提供的事务类型为查询余额。
认证完成,选择查询余额功能。
系统连接数据库,查找所属余额信息。
显示余额信息。
(4)转账功能
ATM提供的事务类型为转账。
认证完成,输入需要转账的金额。
输入的数量同银行卡余额进行比较。
显示需要转账的现金的数量,开始初始转账序列。
初始转账序列。
如果转账金额大于银行卡余额则撤销事务。
顾客输入的金额大于银行卡余额。
显示错误消息,提示金额大于银行卡余额。
初始转账序列成功。
ATM机执行转账操作,更新并保存信息,显示转账成功。
(5)修改密码功能
a.描述:
ATM提供的事务类型为修改密码。
认证完成,输入旧密码和新密码,新密码要输入两次。
验证旧密码,并将两次输入的新密码进行比对。
开始初始修改密码序列。
b.描述:
初始修改密码序列,旧密码错误或两次新密码输入不同,撤销序列。
旧密码错误或顾客两次输入的新密码不同。
显示错误消息,提示密码错误或两次输入密码不同。
重新回到密码修改界面。
c.描述:
初始修改密码序列成功。
更新账户密码。
更新并保存信息,显示修改密码成功。
4.3功能要求
(1)在查询过程中,要求系统显示该帐户卡上所有的余额。
(2)在取款过程中,该系统只支持交易金额为50的倍数,一次取款额最大为50000。
(3)在转帐过程中,该系统支持任何用户输入的数据。
(4)交易结束时,系统知道更新帐户上的数据,保持帐户余额的一致性。
(5)交易完成后,用户可以点击“取卡”退出本系统。
(6)本系统可以进行各个银行的金额交易。
(7)当交易金额超过当前帐户余额时,系统自己提示“余额不足”,返回操作页面,当系统遇到任何不对输入时,显示提示信息,返回操作页面。
5.性能需求
5.1数据精确度
(1)银行卡中信息表中的“余额“采用float型,精确到小数点后两位;
(2)取款时输入的金额为整数(50的倍数);
(3)转账金额采用float型,精确到小数点后两位。
6.其它需求
易用性:
系统设计应具有良好的易用性、操作简便,符合常规Windows操作环境下的用户使用习惯。
同时,尽量减少用户的记忆工作量,如在信息录入时尽可能充分利用数据字典进行选择录入,以提高用户工作效率。
在系统查询功能设计时,应提供多种查询条件的复合查询,让用户可以快速、精确地得到相关信息。
同时,系统设计应具有良好的健壮性,如对各种用户各种错误输入应能及时识别并给出相应提示。
安全性:
系统中所有涉及敏感信息如登录口令等,服务器端应设置严格安全访问控制策略,从而保证系统安全性和操作责任的可追溯性。
7.核心代码
取款
privatevoidbutton1_Click(objectsender,EventArgse)
{
SqlConnectionconn=newSqlConnection(@"
DataSource=.\SQLEXPRESS;
AttachDbFilename=|DataDirectory|\Database1.mdf;
IntegratedSecurity=True;
ConnectTimeout=30;
UserInstance=True"
);
conn.Open();
stringsql="
SELECT*FROMuserinfoWHEREyonghu='
"
+Form1.lockID+"
'
;
SqlCommandcmd=newSqlCommand(sql,conn);
SqlDataReaderdr=cmd.ExecuteReader();
dr.Read();
decimaljine=Convert.ToDecimal(dr[2]);
decimalsqje=Convert.ToDecimal(maskedTextBox1.Text);
decimalchange=sqje;
stringpresentname=Convert.ToString(dr[1]);
stringcardid="
+Form1.lockID+"
;
stringtime=Convert.ToString(DateTime.Now);
dr.Close();
if(jine>
sqje)
{
if(sqje%100==0)
MessageBox.Show("
请在秒内取款……"
decimalleftmoney=jine-sqje;
stringssql="
Updateuserinfosetyue='
+leftmoney+"
'
whereyonghu='
SqlCommandccmd=newSqlCommand(ssql,conn);
取款成功"
inti=ccmd.ExecuteNonQuery();
if(i==1)
maskedTextBox1.Text="
}
else
本机只提供以百元为单位的金额,请正确输入金额!
您的余额不足!
conn.Close();
}
存款
privatevoidbutton2_Click(objectsender,EventArgse)
maskedTextBox1.Text="
privatevoidbutton3_Click(objectsender,EventArgse)
SqlCommandcmd=newSqlCommand(sql,conn);
decimaljine=Convert.ToDecimal(dr[2]);
decimalsqje=Convert.ToDecimal(maskedTextBox1.Text);
stringpresentname=Convert.ToString(dr[1]);
stringcardid="
+Form1.lockID+"
if(sqje%100==0)
操作正在,请稍侯……"
decimalleftmoney=jine+sqje;
stringssql="
+leftmoney+"
whereyonghu='
+Form1.lockID+"
存款成功!
操作失败,请重试!
"
提示:
MessageBoxButtons.OK,MessageBoxIcon.Error);
转账
privatevoidbutton3_Click(objectsender,EventArgse)
SqlConnectionconn=newSqlConnection(@"
DataSource=.\SQLEXPRESS;
Connect
Timeout=30;
stringsql="
+Form1.lockID+"
stringwo=Convert.ToString(dr[1]);
正在操作,请稍侯……"
stringsqql="
select*fromuserinfowhereyonghu='
+maskedTextBox2.Text.Trim()+"
SqlCommandcmdd=newSqlCommand(sqql,conn);
SqlDataReaderdrr=cmdd.ExecuteReader();
if(drr.Read())
decimalje=Convert.ToDecimal(drr[2]);
stringpresentname=wo;
stringtime=Convert.ToString(DateTime.Now);
je=je+sqje;
drr.Close();
stringsqql1="
Updateuserinfosetyue='
+je+"
whereyonghu='
SqlCommandcmmdd=newSqlCommand(sqql1,conn);
intn=cmmdd.ExecuteNonQuery();
if(n==1)
转账成功!
maskedTextBox2.Text="
转账失败!
else
您的余额不足,请重新输入金额!
改密
Form2frm=newForm2();
frm.Show();
this.Hide();
privatevoidbutton2_Click(objectsender,EventArgse)
maskedTextBox2.Text="
privatevoidbutton1_Click(objectsender,EventArgse)
stringpassword1=maskedTextBox2.Text.Trim().ToString();
stringpassword2=maskedTextBox1.Text.Trim().ToString();
if(password1==password2)
Updateuserinfosetmima='
+password1+"
whereyonghu='
inti=cmdd.ExecuteNonQuery();
密码修改成功!
密码修改失败,请重试!
两次输入密码不一至!