ATM课程设计报告ATM交易管理系统.docx
《ATM课程设计报告ATM交易管理系统.docx》由会员分享,可在线阅读,更多相关《ATM课程设计报告ATM交易管理系统.docx(29页珍藏版)》请在冰豆网上搜索。
ATM课程设计报告ATM交易管理系统
课程设计报告
课程名称:
精通C#与,NET4.0数据库开发
题目:
ATM交易管理系统
学生姓名:
学号:
指导教师:
1、课程设计目的
(1)通过本次设计掌握使用c#语言中窗体的建立,各个控件的使用,以及界面的设计
(2)进一步巩固所学的C#及数据库的相关理论知识,提高分析和解决实际问题的能力
(3)初步掌握使用C#工具设计一个具体实例的方法,包括软件的设计,调试的全过程
2、系统的分析与设计
ATM应用系统为更进一步的提供银行交易服务,实现24小时不间断自助服务,对提高银行间的业务竞争能力有很大的帮助。
通过ATM系统的项目实施和建设可以更进一步的提供自身竞争力,紧跟网路技术的潮流,为银行业务的进一步的电子化、自动化迈出坚实的一步。
本次课设实现了一个银行业务自动取款系统,客户通过ATM系统可以实现基本的业务操作。
2.1需求分析
2.1.1课设任务
(1)根据技术要求和现有开发环境,分析题目
(2)选定设计方案
(3)画出软件框架结构图,关键程序流程图
(4)使用C#语言和.net框架,并结合数据库,实现软件
(5)调试,修改并完善程序
2.1.2课设要求
(1)仿某银行ATM的运行界面
(2)凭正确的卡号和密码进入系统
(3)实现存款、取款、余额查询登记本业务操作
2.2系统的设计
本系统属于中小型的银行取款系统,可以为银行用户提供各项基本服务,通过本系统可以达到以下目标:
(1)功能方面:
取款、存款、修改密码、余额查询
(2)性能:
可使用户在无任何经验的情况下进行操作ATM自助式服务
2.2.1数据库的分析与设计
本次数据库是利用ACCESS建立,共包含三张表userInfo、cardInfo、transInfo。
表的具体要求如下:
表一userInfo
列名
数据类型
长度
允许为空
是否为主键
说明
customerID
int
4
否
是
客户唯一编号,自增
customerName
nvarchar
10
否
否
客户姓名
customerPID
nvarchar
18
否
否
身份证号
Telephone
nvarchar
13
否
否
客户电话
Address
nvarchar
50
否
否
地址
表二cardInfo
列名
数据类型
长度
允许为空
是否为主键
说明
cardID
char
19
否
是
卡号
cardType
nvarchar
5
否
否
卡类型
savingType
nvzrchar
8
否
否
存款类型
openDate
datetime
20
否
否
开户日期
openMoney
money
50
是
否
交易金额
Balance
money
50
是
否
余额
passWord
char
6
否
否
密码
isLoss
bit
否
否
是否挂失
customerID
int
4
否
否
客户编号
表三transInfo
列名
数据类型
长度
允许为空
是否为主键
说明
transId
int
4
否
是
交易明细号
transData
datatime
8
否
否
交易日期
transType
char
4
否
否
交易类型
cardID
char
19
否
否
卡号
transMoney
money
50
否
否
交易金额
表的实现:
表一:
表二:
表三:
2.2.2逻辑层次的设计
本次课设的自动提款机模拟软件系统可以使用户进行登录、取款、存款、查询余额、修改密码等基本业务。
ATM系统基本结构框图如图1所示:
图1ATM系统的基本框图
2.2.3界面的设计
根据个人业务界面所提供的按钮,用户可以进行取款,存款、查询余额,修改密码等操作,个人业务界面如图2所示:
图2个人业务界面
2.3程序设计
用户进入系统后,点击用户登录进入登陆界面,在登录窗口中输入卡号和密码,判断卡号与密码是否正确,若卡号与密码正确则进入用户操作界面,并根据用户的相关操作给用户提供相应的服务。
若卡号与密码不正确,弹出对话框提示用户确认卡号和密码错误后重新输入,并对输入错误次数进行计数,若输入密码错误次数大于3次,则锁定该帐号。
2.3.1程序流程图
软件设计程序流程图如图3所示:
图3 程序流程图
2.3.2系统实施
本系统主要通过运用C#的Windows窗体的设计进行开发和实施,主要通过如下几个功能模块来完成系统的具体的实施过程:
(1)用户登陆窗体:
通过登陆界面可以进行用户的登陆过程,进而实现相应的用户操作。
即当用户名与密码都正确时用户就可以登陆进行所需的操作,其界面如图所示:
若密码与账号不匹配,则出现下图提示:
图 登陆界面
具体实现的代码如下:
namespaceATM自动取款机设计
{publicpartialclassfrmzuichu:
Form
{publicfrmzuichu()
{
InitializeComponent();
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
Form1form1=newForm1();
this.Hide();
form1.Show();
}
privatevoidbutton3_Click(objectsender,EventArgse)
{
Application.ExitThread();
Application.Exit();
}
}
}
publicpartialclassForm1:
Form
{
publicForm1()
{
InitializeComponent();
}
publicinta=0;
publicstringb;
publicinti=0;
publicstaticstring帐号;
publicstaticstring密码;
privatevoidbutton12_Click(objectsender,EventArgse)
{
stringconnString=@"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ziliaoku.mdf;IntegratedSecurity=True;UserInstance=True";
SqlConnectionconn=newSqlConnection(connString);
stringsql="SELECT锁定FROMxinxiWHERE帐号='"+textBox2.Text.Trim()+"'";
using(SqlConnectionconna=newSqlConnection(connString))
{
conn.Open();
SqlCommandcmd=newSqlCommand(sql,conn);
SqlDataReaderdr=cmd.ExecuteReader();
if(dr.Read())
{
b=dr["锁定"].ToString();
}
dr.Close();
}
stringsql1="SELECT*FROMxinxiWHERE帐号='"+textBox2.Text.Trim()+"'";
stringsql2="SELECT*FROMxinxiWHERE帐号='"+textBox2.Text.Trim()+"'AND密码='"+textBox1.Text.Trim()+"'";
//try
//{
if(OperateDB.ExecuteReader(sql1))
{
if(b=="0")
{
if(OperateDB.ExecuteReader(sql2))
{
帐¨º号?
=textBox2.Text.Trim();
密¨¹码?
=textBox1.Text.Trim();
frmMainmain=newfrmMain();
main.Show();
this.Hide();
}
else
{
a=a+1;
if(a>2)
{
OperateDB.ExecuteNonQuery("UPDATExinxiSET锁定='1'WHERE帐号='"+textBox2.Text.Trim()+"'");
frmTunKatunka=newfrmTunKa();
tunka.Show();
this.Hide();
}
else
{
MessageBox.Show("密码不正确,请重新输入!
注意最多可输入三次!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
}
else
{
MessageBox.Show("该帐号已被锁定,请与银行管理员联系!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
else
{
MessageBox.Show("此用户不存在,请重新输入帐号!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
//}
//catch
//{
//MessageBox.Show("软件错误!
");
//}
}
privatevoidbutton13_Click(objectsender,EventArgse)
{
textBox1.Text="";
textBox1.Text="";
}
privatevoidgroupBox1_Enter(objectsender,EventArgse)
{
}
privatevoidtextBox2_MouseEnter(objectsender,EventArgse)
{
textBox2.Focus();
}
privatevoidtextBox1_MouseEnter(objectsender,EventArgse)
{
textBox1.Focus();
}
privatevoidtextBox2_KeyPress(objectsender,KeyPressEventArgse)
{
if(e.KeyChar==(char)13)//13表示回车
{
textBox1.Focus();
}
}
privatevoidtextBox1_KeyPress(objectsender,KeyPressEventArgse)
{
if(e.KeyChar==(char)13)
button12_Click(sender,e);
}
privatevoidForm1_Load(objectsender,EventArgse)
{
textBox2.Focus();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
frmzuichuzuichu=newfrmzuichu();
this.Hide();
zuichu.Show();
}
}
(2)个人业务窗体:
根据界面所提供的按钮用户可以进行取款,存款,查询余额等操作,其界面如图所示:
图 个人业务界面
具体实现的代码如下:
privatevoidbutton1_Click(objectsender,EventArgse)
{
frmQuKuanqukuan=newfrmQuKuan();
qukuan.Show();
this.Hide();
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
frmCunKuancunkuan=newfrmCunKuan();
//frmCKQRckqr=newfrmCKQR();
cunkuan.Show();
this.Hide();
//Thread.Sleep(5000);
//cunkuan.Close();
//ckqr.Show();
}
privatevoidbutton3_Click(objectsender,EventArgse)
{
frmYuEChaXunyuechaxun=newfrmYuEChaXun();
yuechaxun.Show();
this.Hide();
}
privatevoidbutton4_Click(objectsender,EventArgse)
{
frmXiuGaiMiMaxiugaimima=newfrmXiuGaiMiMa();
xiugaimima.Show();
this.Hide();
}
privatevoidbutton7_Click(objectsender,EventArgse)
{
frmShaoDeng3shaodeng3=newfrmShaoDeng3();
shaodeng3.Show();
this.Close();
}
(3)取款窗体:
通过该界面用户可以从自己的账户中进行取款操作,但是取款的金额必须在规定范围内且为100元的整数倍,否则无法进行操作,当用户余额不足以提取时提示余额不足,其界面如图所示:
取款错误提示:
图 取款界面
具体实现的代码如下:
publicpartialclassfrmQuKuan:
Form
{
publicfrmQuKuan()
{
InitializeComponent();
}
publicintabc;
privatevoidbutton12_Click(objectsender,EventArgse)
{
stringab=textBox1.Text.Trim();
inta=Convert.ToInt16(ab);
stringconnString=@"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ziliaoku.mdf;IntegratedSecurity=True;UserInstance=True";
SqlConnectionconn=newSqlConnection(connString);
stringsql="SELECT储蓄FROMxinxiWHERE帐号='"+Form1.帐号+"'";
using(SqlConnectionconna=newSqlConnection(connString))
{
conn.Open();
SqlCommandcmd=newSqlCommand(sql,conn);
SqlDataReaderdr=cmd.ExecuteReader();
if(dr.Read())
{
stringbc=dr["储蓄"].ToString();
abc=Convert.ToInt32(bc);
}
dr.Close();
}
if(a<=abc)
{
if(a!
=0)
{
if((a%100)==0)
{
if(OperateDB.ExecuteNonQuery("DECLARE@xcintEXECUTEdbo.StoredProcedure1'"+Form1.帐号?
+"','"+textBox1.Text.Trim()+"',@xcOUT")==1)
{
frmShaoDeng1shaodeng1=newfrmShaoDeng1();
frmTiQuXianJintiquxianjin=newfrmTiQuXianJin();
frmMainmain=newfrmMain();
shaodeng1.Show();
shaodeng1.Focus();
this.Close();
}
}
else
{
frmQKTSqkts=newfrmQKTS();
qkts.Show();
qkts.Focus();
this.Hide();
}
}
else
{
this.Hide();
//Thread.Sleep(5000);
//qkje1.Close();
////this.Focus();
//timer5.Start();
}
}
else
{
textBox1.Text="";
frmYEBZyebz=newfrmYEBZ();
yebz.Show();
yebz.Focus();
this.Hide();
}
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
frmMainmain=newfrmMain();
this.Hide();
main.Show();
}
privatevoidbutton13_Click(objectsender,EventArgse)
{
textBox1.Text="";
}
}
(4)查询余额窗体:
在业务类型窗体上点击余额查询,可查询当前用户银行卡上的可用余额,其界面如图所示:
图 查询余额界面
具体实现的代码如下:
publicpartialclassfrmYuEChaXun:
Form
{
publicfrmYuEChaXun()
{
InitializeComponent();
}
privatevoidfrmYuEChaXun_Load(objectsender,EventArgse)
{
stringconnString=@"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ziliaoku.mdf;IntegratedSecurity=True;UserInstance=True";
SqlConnectionconn=newSqlConnection(connString);
stringsql="SELECT储蓄FROMxinxiWHERE帐号='"+Form1.帐号+"'";
using(SqlConnectionconna=newSqlConnection(connString))
{
conn.Open();
SqlCommandcmd=newSqlCommand(sql,conn);
SqlDataReaderdr=cmd.ExecuteReader();
if(dr.Read())
{
textBox1.Text=dr["储蓄"].ToString();
}
dr.Close();
}
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
this.Close();
frmMainmain=newfrmMain();
main.Show();
}
privatevoiddataGridView1_CellContentClick(objectsender,DataGridViewCellEventArgse)
{
//stringsql="SELECT储蓄FROMxinxiWHERE帐号="+Form1.帐号+"'";
//DataSetmyDs=OperateDB.ExecuteDataset(sql);
//dataGridView1.DataSource=myDs.Tables[0].DefaultView;
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
frmShaoDeng3shaodeng3=newfrmShaoDeng3();
shaodeng3.Show();
this.Close();
}
}
(5)修改密码窗体:
通过该界面用户可以给自己的账户进行修改密码的操作,两次输入的新密码一样将修改成功,否则将失败,其界面如图所示:
修改提示:
图修改密码界面
具体实现的代码如下:
publicpartialclassfrmXiuGaiMiMa:
Form
{
publicfrmXiuGaiMiMa()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
if(textBox3.Text.Trim()==textBox2.Text.Trim())
{
try
{
if(OperateDB.ExecuteNonQuery("UPDATExinxiSET密码='"+textBox2.Text.Trim()+"'WHERE帐号='"+Form1.帐号+"'")==1)
{
frmXGCGxgcg=newfrmXGCG();
xgcg.Show();
xgcg.Focus();
this.Hide();
}
else
{
frmXGSBxgsb=newfrmXGSB();
xgsb.Show();
xgsb.Focus();
this.Hide();