课程设计说明书 自助取款机软件程序设计.docx
- 文档编号:6352066
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:23
- 大小:418.70KB
课程设计说明书 自助取款机软件程序设计.docx
《课程设计说明书 自助取款机软件程序设计.docx》由会员分享,可在线阅读,更多相关《课程设计说明书 自助取款机软件程序设计.docx(23页珍藏版)》请在冰豆网上搜索。
课程设计说明书自助取款机软件程序设计
课程设计说明书
课程名称:
软件程序设计
题目:
自助取款机软件程序设计
专业班级:
学生姓名:
学号:
指导教师:
设计周数:
2周
设计成绩:
1、课程设计目的
(1)初步掌握使用C#工具设计一个具体实例的方法,包括软件的设计,以及调试的全过程。
(2)通过本次设计掌握使用c#语言中窗体的建立,各个控件的使用,以及界面的设计。
(3)进一步巩固所学的C#及数据库的相关理论知识,提高软件编程的能力。
(4)本设计进一步加强对面向对象程序设计思想的理解,增强对C#程序语言的灵活运用。
结合数据库知识,网络通信技术,实现基本的应用软件,为以后从事相关行业打下软件编程基础。
2、系统的分析与设计
自动取款机又称ATM,是AutomaticTellerMachine的缩写,意思是自动柜员机,因大部分用于取款,又称自动取款机。
它是一种高度精密的机电一体化装置,利用磁性代码卡或智能卡实现金融交易的自助服务,代替银行柜面人员的工作。
可提取现金、查询余额、进行账户之间资金划拨、余额查询等工作;还可以进行现金存款、存折补登、中间业务等工作。
持卡人可以使用信用卡或储蓄卡,根据密码办理自动取款、查询余额、转账、现金存款,存折补登,购买基金,更改密码,缴纳手机话费等业务。
ATM自动取款机系统向用户提供一个方便、简单、及时、随时随地可以随心所欲存取款的互联的现代计算机化的网络系统。
可以大大减少工作人员,节约人力资源的开销,同时由于手续程序减少也可以减轻业务员的工作负担,有效地提高了整体的工作效率和精确度。
减少了用户办理业务的等待时间;用户可以随时随地可以随心所欲存取款,并且操作简单易懂;用户还可以选择在柜台办理业务或自己在自动提款机和自动取款机办理业务。
2.1需求分析
2.1.1课设任务
(1)分析题目,选定设计方案。
(2)画出软件框架结构图以及关键程序流程图。
(3)使用C#语言和.net框架,并结合数据库,实现软件功能。
(4)调试,修改,反复运行去除BUG,并美化完善程序。
2.1.2课设要求
仿某银行ATM的运行界面;用户凭正确的卡号和密码进入系统(若输入密码错误次数达到上限,锁定帐号);取款、交费、转账、查询余额、修改密码等功能;其它功能(包括开户、存款、销户等功能)。
2.2系统的设计
(1)输入:
用户通过键盘以及系统自带软件盘进行输入,安全快捷。
(2)性能:
可使用户在无任何经验的情况下进行操作ATM自助式服务。
(3)功能方面:
取款、查询余额、修改密码、缴费、转账等功能。
2.2.1数据库的分析与设计
本次课设使用的是SQL数据库,它是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。
它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言语言作为数据输入与管理的接口。
结构化查询语言语句可以嵌套,这使他具有极大的灵活性和强大的功能。
与ACCESS数据库相比,SQLServer数据库属于大型数据库,SQLServer数据库是基于.net的一个重要数据源,它是美国微软公司开发的一款关系型数据库管理系统的产品。
由自动提款机模拟软件系统的需求分析可知,本系统应为windows应用窗体的设计,据提供的实验环境及以前所学的理论知识,采用SQL数据库,根据自动提款机模拟软件的功能要求,在AtmInfo数据库中建立两张表来存储信息,分别为CardInfo和Record。
table1表中用来存储用户的卡号,密码,余额及用于卡号锁定的字段
表2-1用户基本信息表(Table1)
列名
数据类型
长度
允许为空
是否为主键
说明
cardId
nvarchar
20
否
是
卡号
cardPwd
nvarchar
20
否
否
密码
cardYue
nvarchar
20
是
否
账户余额
cardLock
nvarchar
2
是
否
锁定信息
2.2.2逻辑层次的设计
本次课设的自动提款机模拟软件系统可以使用户进行登录、取款、转账、查询余额、修改密码和交费等基本业务。
ATM系统基本结构框图如图2-1所示:
图2-1ATM系统的基本框图
2.3程序设计
用户打开软件后,直接进入登陆界面,登录界面内有温馨提示,在登录窗口中输入卡号和密码,通过数据库的链接校对,判断卡号与密码是否正确,若卡号与密码正确则进入用户操作界面,并根据用户的自主选择给用户提供相应的服务。
若卡号与密码不正确,弹出对话框提示用户确认卡号和密码错误后,点击确认重新输入,并对输入错误次数进行严格计数,如果输入密码错误次数大于3次,则锁定该帐号。
2.3.1程序流程图
软件设计程序流程图如图2-2所示:
图2-2 程序流程图
2.3.2系统实施
本软件系统主要通过运用C#的Windows窗体的设计进行开发和实施,主要通过如下几个功能模块来完成系统的具体的实施过程:
(1)用户登陆窗体:
通过登陆界面可以进行用户的登陆过程,模仿瑞士银行界面,通过界面美化与相应设置,进而实现相应的用户操作。
当用户名与密码都正确时用户就可以登陆进行所需的操作,其界面如图2-3所示:
图2-3 登陆界面
具体实现的代码如下:
if((txtcardID.Text.Trim()!
=""))
{
stringconnString=@"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Xinxi.mdf;IntegratedSecurity=True;ConnectTimeout=30;UserInstance=True";
SqlConnectionconn=newSqlConnection(connString);
conn.Open();
stringssql="select*fromcardXinxiwherecardId='"+txtcardID.Text.Trim()+"'";
SqlCommandccmd=newSqlCommand(ssql,conn);
SqlDataReaderdr1=ccmd.ExecuteReader();
if(dr1.Read())
{
dr1.Close();
userID=txtcardID.Text.Trim().ToString();
stringisornot="selectcardLockfromcardXinxiwherecardId='"+txtcardID.Text.Trim().ToString()+"'";
SqlCommandcmd0=newSqlCommand(isornot,conn);
SqlDataReaderdrr=cmd0.ExecuteReader();
if(drr.Read()&&drr["cardLock"].ToString()=="1")
{
MessageBox.Show("您的帐号已被锁定,请与银行管理员联系!
");
drr.Close();
}
else
{
drr.Close();
stringsql="select*fromcardXinxiwherecardId='"+txtcardID.Text.Trim().ToString()+"'andcardPwd='"+txtPassword.Text.Trim().ToString()+"'";
SqlCommandcmd=newSqlCommand(sql,conn);
SqlDataReaderdr=cmd.ExecuteReader();
if(dr.Read())
{
txtcardID.Text=dr["cardId"].ToString();
FuWufrm=newFuWu();
frm.Show();
this.Hide();
}
else
{
if(this.c++<2)
{
MessageBox.Show("您密码不正确,请重新输入!
","提示!
",MessageBoxButtons.OK,MessageBoxIcon.Error);
txtPassword.Text="";
txtcardID.Text="";
}
else
{
dr.Close();
stringsql1="updatecardXinxisetcardLock='1'wherecardId='"+userID+"'";
SqlCommandcmd1=newSqlCommand(sql1,conn);
if(cmd1.ExecuteNonQuery()==1)
{
MessageBox.Show("您的输入错误已超过三次,帐号将被锁定,请与银行管理员联系!
","错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
}
}
}
else
{
MessageBox.Show("账号不正确");
}
conn.Close();
}
else
{
MessageBox.Show("请输入卡号与密码!
","警告!
!
!
!
",MessageBoxButtons.OK,MessageBoxIcon.Warning);
txtcardID.Text="";
txtPassword.Text="";
}
(2)取款窗口:
在主服务界面内的相应按钮点击后弹出的取款窗口,通过本界面用户可以从自己的账户中进行取款操作,取款的金额必须为100元的整数倍,且不能超过用户余额,由于瑞士银行每日ATM限取2000元人民币,本软件限制用户每日取款上限为2000元,否则则无法进行相应操作,当用户余额不足以提取时提示余额不足,其界面如图2-4所示:
图2-4 取款界面
具体实现的代码如下:
SqlConnectionconn=newSqlConnection(connString);
conn.Open();
stringsql="SELECT*FROMcardXinxiWHEREcardId='"+DengLu.userID+"'";
SqlCommandcmd=newSqlCommand(sql,conn);
SqlDataReaderdr=cmd.ExecuteReader();
dr.Read();
decimaljine=Convert.ToDecimal(dr[2]);
decimalsqje=Convert.ToDecimal(txtMoney.Text);
decimalchange=sqje;
stringpresentname=Convert.ToString(dr[1]);
stringtime=Convert.ToString(DateTime.Now);
dr.Close();
if(jine>sqje)
{
if(sqje%100==0)
{
MessageBox.Show("请在60秒内取出您所需的款项……");
decimalleftmoney=jine-sqje;
stringssql="UpdatecardXinxisetcardYue='"+leftmoney+"'wherecardId='"+DengLu.userID+"'";
SqlCommandccmd=newSqlCommand(ssql,conn);
inti=ccmd.ExecuteNonQuery();
if(i==1)
{
stringsqll5="insertrecordInfo(cardId,acctime,acctiye,exchangemoney)values('"+DengLu.userID+"','"+DateTime.Now+"','取款','"+txtMoney.Text+"')";
SqlCommandcmd5=newSqlCommand(sqll5,conn);
}
else
{
MessageBox.Show("操作失败,请重试","提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show("对不起,本机只能提取百元现金,请输入正确取款金额.","提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
txtMoney.Text="";
}
}
else
{
MessageBox.Show("您的余款不足");
txtMoney.Text="";
}
(4)查询余额窗体:
在主服务窗口中点击余额查询,可查询当前用户银行卡上的可用余额,其界面如图2-5所示:
图2-5 查询余额界面
具体实现的代码如下:
SqlConnectionconn=newSqlConnection(connString);
conn.Open();
stringsql="selectcardYuefromcardXinxiwherecardId='"+DengLu.userID+"'";
SqlCommandcmd=newSqlCommand(sql,conn);
SqlDataReaderdr=cmd.ExecuteReader();
if(dr.Read())
{
txtLeftmoney.Text=Convert.ToDecimal(dr[0]).ToString();
}
dr.Close();
conn.Close();
}
privatevoidYuE_Load(objectsender,EventArgse)
{
stringconnString=@"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Xinxi.mdf;IntegratedSecurity=True;ConnectTimeout=30;UserInstance=True";
SqlConnectionconn=newSqlConnection(connString);
conn.Open();
stringsql="selectcardYuefromcardXinxiwherecardId='"+DengLu.userID+"'";
SqlCommandcmd=newSqlCommand(sql,conn);
SqlDataReaderdr=cmd.ExecuteReader();
if(dr.Read())
{
txtLeftmoney.Text=Convert.ToDecimal(dr[0]).ToString();
}
dr.Close();
conn.Close();
}
(5)交费窗体:
通过主界面中的转账选项打开进入后,在本界面内用户可以给预先绑定的需缴费银行账户中转账,其界面如图2-6所示:
图2-6交费界面
具体实现的代码如下:
SqlConnectionconn=newSqlConnection(connString);
conn.Open();
stringsql="SELECT*FROMcardXinxiWHEREcardId='"+DengLu.userID+"'";
SqlCommandcmd=newSqlCommand(sql,conn);
SqlDataReaderdr=cmd.ExecuteReader();
dr.Read();
decimaljine=Convert.ToDecimal(dr[2]);
decimalsqje=Convert.ToDecimal(txtPaymoney.Text);
stringpresentname=Convert.ToString(dr[1]);
stringcardid="'"+DengLu.userID+"'";
decimalchange=sqje;
stringtime=Convert.ToString(DateTime.Now);
dr.Close();
if(jine>sqje)
{
MessageBox.Show("正在操作,请稍侯……");
decimalleftmoney=jine-sqje;
stringssql="UpdatecardXinxisetcardYue='"+leftmoney+"'wherecardId='"+DengLu.userID+"'";
SqlCommandccmd=newSqlCommand(ssql,conn);
MessageBox.Show("缴费已成功!
");
txtPaymoney.Text="";
inti=ccmd.ExecuteNonQuery();
if(i==1)
{
txtPaymoney.Text="";
}
else
{
MessageBox.Show("操作失败,请重试!
","提示:
",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
stringsqll5="insertrecordInfo(cardId)values('"+DengLu.userID+"')";
SqlCommandcmd5=newSqlCommand(sqll5,conn);
}
else
{
MessageBox.Show("您的余额不足!
");
txtPaymoney.Text="";
}
}
(6)转账窗体:
在主服务界面内开启的转账选项窗口,通过本窗口,用户可以给本行账户并且可以跨行进行转账,其界面如图2-7所示:
图2-7转账界面
具体实现的代码如下:
SqlConnectionconn=newSqlConnection(connString);
conn.Open();
stringsql="SELECT*FROMcardXinxiWHEREcardId='"+DengLu.userID+"'";
SqlCommandcmd=newSqlCommand(sql,conn);
SqlDataReaderdr=cmd.ExecuteReader();
dr.Read();
decimaljine=Convert.ToDecimal(dr[2]);
stringwo=Convert.ToString(dr[1]);
decimalsqje=Convert.ToDecimal(txtTransmoney.Text);
dr.Close();
if(jine>sqje)
{
MessageBox.Show("正在操作中,请稍侯......");
decimalleftmoney=jine-sqje;
stringssql="UpdatecardXinxisetcardYue='"+leftmoney+"'wherecardId='"+DengLu.userID+"'";
SqlCommandccmd=newSqlCommand(ssql,conn);
inti=ccmd.ExecuteNonQuery();
if(i==1)
{
stringsqql="select*fromcardXinxiwherecardId='"+txtTransID.Text.Trim()+"'";
SqlCommandcmdd=newSqlCommand(sqql,conn);
SqlDataReaderdrr=cmdd.ExecuteReader();
if(drr.Read())
{
decimalje=Convert.ToDecimal(drr[2]);
stringpresentname=wo;
stringcardid="'"+DengLu.userID+"'";
decimalchange=sqje;
stringtime=Convert.ToString(DateTime.Now);
je=je+sqje;
drr.Close();
stringsqql1="UpdatecardXinxisetcardYue='"+je+"'wherecardId='"+txtTransID.Text.Trim()+"'";
SqlCommandcmmdd=newSqlCommand(sqql1,conn);
intn=cmmdd.ExecuteNonQuery();
if(n==1)
{
MessageBox.Show("转账已成功");
txtTransID.Text="";
txtTransmoney.Text="";
}
else
{
MessageBox.Show("转账未成功");
txtTransID.Text="";
txtTransmoney.Text="";
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计说明书 自助取款机软件程序设计 课程设计 说明书 自助 取款 软件 程序设计
![提示](https://static.bdocx.com/images/bang_tan.gif)