软件工程atm模拟程序实施.docx
- 文档编号:10789227
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:19
- 大小:85.29KB
软件工程atm模拟程序实施.docx
《软件工程atm模拟程序实施.docx》由会员分享,可在线阅读,更多相关《软件工程atm模拟程序实施.docx(19页珍藏版)》请在冰豆网上搜索。
软件工程atm模拟程序实施
软件工程系统报告书
指导老师:
葛方振
组员:
吕锟(20101204041)
]
目录:
1.引言4
1.1编写目的4
1.2定义4
1.3参考资料4
1.4小组分配5
2.任务概述5
2.1设计内容5
2.2运行环境6
4.功能需求22
4.1功能划分22
4.2功能描述25
4.3功能要求26
5.性能需求26
5.1数据精确度27
6.其它需求27
7.核心代码.....................................................................................................................
1.引言
1.1编写目的
ATM自动提款机系统。
ATM自动取款机是由计算机控制的持卡人自我服务型的金融专用设备。
ATM是英文AutomaticTellerMachine的缩写。
ATM是最普遍的自助银行设备,可以提供最基本的银行服务之一,即出钞交易,有些全功能的产品还可以提供信封存款业务。
在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)转账功能
a.描述:
ATM提供的事务类型为转账。
输入:
认证完成,输入需要转账的金额。
处理:
输入的数量同银行卡余额进行比较。
输出:
显示需要转账的现金的数量,开始初始转账序列。
b.描述:
初始转账序列。
如果转账金额大于银行卡余额则撤销事务。
输入:
顾客输入的金额大于银行卡余额。
处理:
显示错误消息,提示金额大于银行卡余额。
输出:
回到操作界面。
c.描述:
执行事务。
输入:
初始转账序列成功。
处理:
发送请求给银行计算机。
输出:
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='"+Form1.lockID+"'";
SqlCommandccmd=newSqlCommand(ssql,conn);
MessageBox.Show("取款成功");
inti=ccmd.ExecuteNonQuery();
if(i==1)
{
maskedTextBox1.Text="";
}
}
else
{
MessageBox.Show("本机只提供以百元为单位的金额,请正确输入金额!
");
maskedTextBox1.Text="";
}
}
else
{
MessageBox.Show("您的余额不足!
");
maskedTextBox1.Text="";
}
conn.Close();
}
存款
privatevoidbutton2_Click(objectsender,EventArgse)
{
maskedTextBox1.Text="";
}
privatevoidbutton3_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);
stringpresentname=Convert.ToString(dr[1]);
stringcardid="'"+Form1.lockID+"'";
decimalchange=sqje;
stringtime=Convert.ToString(DateTime.Now);
dr.Close();
if(sqje%100==0)
{
MessageBox.Show("操作正在,请稍侯……");
decimalleftmoney=jine+sqje;
stringssql="Updateuserinfosetyue='"+leftmoney+"'whereyonghu='"+Form1.lockID+"'";
SqlCommandccmd=newSqlCommand(ssql,conn);
MessageBox.Show("存款成功!
");
maskedTextBox1.Text="";
inti=ccmd.ExecuteNonQuery();
if(i==1)
{
maskedTextBox1.Text="";
}
else
{
MessageBox.Show("操作失败,请重试!
","提示:
",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show("本机只提供以百元为单位的金额,请正确输入金额!
");
}
}
转账
privatevoidbutton3_Click(objectsender,EventArgse)
{
SqlConnectionconn=newSqlConnection(@"DataSource=.\SQLEXPRESS;
AttachDbFilename=|DataDirectory|\Database1.mdf;IntegratedSecurity=True;Connect
Timeout=30;UserInstance=True");
conn.Open();
stringsql="SELECT*FROMuserinfoWHEREyonghu='"+Form1.lockID+"'";
SqlCommandcmd=newSqlCommand(sql,conn);
SqlDataReaderdr=cmd.ExecuteReader();
dr.Read();
decimaljine=Convert.ToDecimal(dr[2]);
stringwo=Convert.ToString(dr[1]);
decimalsqje=Convert.ToDecimal(maskedTextBox1.Text);
dr.Close();
if(jine>sqje)
{
MessageBox.Show("正在操作,请稍侯……");
decimalleftmoney=jine-sqje;
stringssql="Updateuserinfosetyue='"+leftmoney+"'whereyonghu='"+Form1.lockID+"'";
SqlCommandccmd=newSqlCommand(ssql,conn);
inti=ccmd.ExecuteNonQuery();
if(i==1)
{
stringsqql="select*fromuserinfowhereyonghu='"+maskedTextBox2.Text.Trim()+"'";
SqlCommandcmdd=newSqlCommand(sqql,conn);
SqlDataReaderdrr=cmdd.ExecuteReader();
if(drr.Read())
{
decimalje=Convert.ToDecimal(drr[2]);
stringpresentname=wo;
stringcardid="'"+Form1.lockID+"'";
decimalchange=sqje;
stringtime=Convert.ToString(DateTime.Now);
je=je+sqje;
drr.Close();
stringsqql1="Updateuserinfosetyue='"+je+"'whereyonghu='"+maskedTextBox2.Text.Trim()+"'";
SqlCommandcmmdd=newSqlCommand(sqql1,conn);
intn=cmmdd.ExecuteNonQuery();
if(n==1)
{
MessageBox.Show("转账成功!
");
maskedTextBox2.Text="";
maskedTextBox1.Text="";
}
else
{
MessageBox.Show("转账失败!
");
maskedTextBox2.Text="";
maskedTextBox1.Text="";
}
}
else
{
MessageBox.Show("操作失败,请重试!
","提示:
",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
else
{
}
}
else
{
MessageBox.Show("您的余额不足,请重新输入金额!
");
maskedTextBox1.Text="";
}
}
改密
privatevoidbutton3_Click(objectsender,EventArgse)
{
Form2frm=newForm2();
frm.Show();
this.Hide();
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
maskedTextBox2.Text="";
maskedTextBox1.Text="";
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
SqlConnectionconn=newSqlConnection(@"DataSource=.\SQLEXPRESS;
AttachDbFilename=|DataDirectory|\Database1.mdf;IntegratedSecurity=True;Connect
Timeout=30;UserInstance=True");
conn.Open();
stringpassword1=maskedTextBox2.Text.Trim().ToString();
stringpassword2=maskedTextBox1.Text.Trim().ToString();
if(password1==password2)
{
stringsqql="Updateuserinfosetmima='"+password1+"'whereyonghu='"+Form1.lockID+"'";
SqlCommandcmdd=newSqlCommand(sqql,conn);
inti=cmdd.ExecuteNonQuery();
if(i==1)
{
MessageBox.Show("密码修改成功!
");
maskedTextBox2.Text="";
maskedTextBox1.Text="";
}
else
{
MessageBox.Show("密码修改失败,请重试!
");
}
}
else
{
MessageBox.Show("两次输入密码不一至!
");
maskedTextBox1.Text="";
maskedTextBox2.Text="";
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 atm 模拟 程序 实施