C#课程设计自动取款机模拟软件设计DOC.docx
《C#课程设计自动取款机模拟软件设计DOC.docx》由会员分享,可在线阅读,更多相关《C#课程设计自动取款机模拟软件设计DOC.docx(33页珍藏版)》请在冰豆网上搜索。
![C#课程设计自动取款机模拟软件设计DOC.docx](https://file1.bdocx.com/fileroot1/2023-6/2/cef8fb45-4bba-4cd5-baf8-3183e5bd542a/cef8fb45-4bba-4cd5-baf8-3183e5bd542a1.gif)
C#课程设计自动取款机模拟软件设计DOC
**学院
课程设计说明书
(2012/2013学年第一学期)
课程名称:
软件程序设计
题目:
自动提款机模拟软件
专业班级:
学生姓名:
放羊娃
学号:
指导教师:
设计周数:
2周
设计成绩:
2013年1月18日
1、课程设计目的
2、系统的分析与设计
2.1需求分析
2.1.1课设任务
2.1.2课设要求
2.2系统的设计
2.2.1数据库的分析与设计
2.2.2逻辑层次的设计
2.3程序设计
2.3.1程序流程图
2.3.2系统实施
3、课程设计总结或结论
4、参考文献
1、课程设计目的
通过c#课程设计,使学生能将学到的面向对象的程序设计思想应用到具体的工作和学习中,加深对类与对象的理解。
进一步巩固所学的c#及数据库的相关理论知识,提高分析和解决实际问题的能力。
2、系统的分析与设计
ATM机很方便,没有休息日,上班时间也长,除了换钱的半个小时左右,可以通宵达旦的工作。
几乎相当于3个银行工作人员倒班干活。
大大提高了银行效率,节约了人力和储户的时间。
缺点是,有些人不会使用,会产生吞卡等现象,给部分人带来麻烦。
但随着人们素质放入提高,这些缺点的影响已经越来越小了。
2.1需求分析
2.1.1课设任务
(1)根据技术要求和现有开发环境,分析题目。
(2)选定设计方案,包括,软件功能结构,画出软件框架结构图,关键程序流程图,数据库中表的结构设计等。
(4)使用C#语言和.net框架,并结合数据库,实现软件。
(5)调试,修改并完善程序。
2.1.2课设要求
(1)仿某银行的运行界面。
(2)用户凭正确的卡号和密码进入系统(若输入密码错误次数达到上限,锁定账号)。
(3)取款、交费、转账、查询余额、修改密码等功能。
(4)其他功能(包括开户,存款,销户等功能)。
2.2系统的设计
(1)输入:
用户通过键盘进行输入。
(2)性能:
可使用户在无任何经验的情况下进行操作ATM自助式服务。
(3)功能方面:
取款、查询余额、修改密码、记录查询、交费、转账。
2.2.1数据库的分析与设计
由自动提款机模拟软件系统的需求分析我们可以知道,本系统应为windows应用窗体的设计,据提供的实验环境及以前所学的理论知识,采用SQL数据库,根据自动提款机模拟软件的功能要求,在Database1数据库中建立两张表来存储信息,分别为userinfo和recordinfo。
userinfo表中用来存储用户的卡号,密码,用户名,余额及用于卡号锁定的字段
表2-1用户基本信息表(userinfo)
列名
数据类型
长度
允许为空
是否为主键
说明
Yonghu
nvarchar
20
否
是
卡号
mima
nvarchar
20
否
否
密码
yue
money
是
否
余额
recordInfo表中用于存储用户的卡号,用户名,存取结余,主要用于数据库的更新操作。
表2-2用户操作信息表(recordInfo)
列名
数据类型
长度
允许为空
是否为主键
说明
yonghu
nvarchar
19
否
是
卡号标识
shijian
datetime
否
否
操作时间
leixing
nvarchar
20
是
否
操作类型
kayue
decimal
(18,0)
是
否
交易金额
2.2.2逻辑层次的设计
本次课设的自动提款机模拟软件系统可以使用户进行登录、取款、转账、查询余额、修改密码、记录查询和交费等基本业务。
ATM自动提款机结构基本框图:
图2-1ATM系统的基本框图
2.3程序设计
用户进入后,点击用户登录进入登陆界面,在登录窗口中输入卡号和密码,判断卡号与密码是否正确,若卡号与密码正确则进入用户操作界面,并根据用户的相关操作给用户提供相应的服务。
若卡号与密码不正确,弹出对话框提示用户确认卡号和密码错误后重新输入,并对输入错误次数进行计数,若输入密码错误次数大于3次,则锁定该帐号。
2.3.1程序流程图
软件设计程序流程图如图2-2所示:
图2-2 程序流程图
2.3.2系统实施
本系统主要通过运用C#的Windows窗体的设计进行开发和实施,主要通过如下几个功能模块来完成系统的具体的实施过程:
(1)用户登陆窗体:
通过登陆界面可以进行用户的登陆过程,进而实现相应的用户操作。
即当用户名与密码都正确时用户就可以登陆进行所需的操作,其界面如图2-3所示:
图2-3 登陆界面
代码如下:
namespaceWindowasd
{
publicpartialclassForm1:
Form
{
publicForm1()
{
InitializeComponent();
}
intc;
publicstaticstringlockID;
privatevoidbutton4_Click(objectsender,EventArgse)
{
maskedTextBox1.Text="";
}
privatevoidbutton3_Click(objectsender,EventArgse)
{
if((maskedTextBox2.Text.Trim()!
=""))
{
SqlConnectionconn=newSqlConnection(@"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;IntegratedSecurity=True;ConnectTimeout=30;UserInstance=True");
conn.Open();
stringssql="select*fromuserinfowhereyonghu='"+maskedTextBox2.Text.Trim()+"'";
SqlCommandccmd=newSqlCommand(ssql,conn);
SqlDataReaderdr1=ccmd.ExecuteReader();
if(dr1.Read())
{
dr1.Close();
lockID=maskedTextBox2.Text.Trim().ToString();
stringisornot="selectmimafromuserinfowhereyonghu='"+maskedTextBox2.Text.Trim().ToString()+"'";
SqlCommandcmd0=newSqlCommand(isornot,conn);
SqlDataReaderdrr=cmd0.ExecuteReader();
if(drr.Read()&&drr["mima"].ToString()=="1")
{
MessageBox.Show("您的帐号已被锁定,请与银行管理员联系!
");
drr.Close();
}
else
{
drr.Close();
stringsql="select*fromuserinfowhereyonghu='"+maskedTextBox2.Text.Trim().ToString()+"'andmima='"+maskedTextBox1.Text.Trim().ToString()+"'";
SqlCommandcmd=newSqlCommand(sql,conn);
SqlDataReaderdr=cmd.ExecuteReader();
if(dr.Read())
{
maskedTextBox2.Text=dr["yonghu"].ToString();
Form2frm=newForm2();
frm.Show();
this.Hide();
}
else
{
if(this.c++<3)
{
MessageBox.Show("您密码不正确,请重新输入!
","提示!
",MessageBoxButtons.OK,MessageBoxIcon.Error);
maskedTextBox2.Text="";
maskedTextBox1.Text="";
}
else
{
dr.Close();
stringsql1="updateuserinfosetmima='1'whereyonghu='"+maskedTextBox2.Text.Trim()+"'";
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);
maskedTextBox2.Text="";
maskedTextBox1.Text="";;
}
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
Application.Exit();
}
privatevoidForm1_Load(objectsender,EventArgse)
{
}
}
(2)ATM自动取款机服务界面,主菜单可以实现以下服务,其界面如图2-4所示:
图2-4 主菜单
代码如下:
namespaceWindowasd
{
publicpartialclassForm2:
Form
{
publicForm2()
{
InitializeComponent();
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
Form3frm=newForm3();
frm.Show();
this.Hide();
}
privatevoidbutton5_Click(objectsender,EventArgse)
{
Form4frm=newForm4();
frm.Show();
this.Hide();
}
privatevoidbutton3_Click(objectsender,EventArgse)
{
Form5frm=newForm5();
frm.Show();
this.Hide();
}
privatevoidbutton4_Click(objectsender,EventArgse)
{
Form6frm=newForm6();
frm.Show();
this.Hide();
}
privatevoidbutton7_Click(objectsender,EventArgse)
{
Form1frm=newForm1();
frm.Show();
this.Hide();
//Application.Exit();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
Form7frm=newForm7();
frm.Show();
this.Hide();
}
privatevoidbutton6_Click(objectsender,EventArgse)
{
Form8frm=newForm8();
frm.Show();
this.Hide();
}
privatevoidForm2_Load(objectsender,EventArgse)
{
}
}
}
(3)取款窗体:
通过该界面用户可以从自己的账户中进行取款操作,但是取款的金额必须在规定范围内且为100元的整数倍,否则无法进行操作,当用户余额不足以提取时提示余额不足,其界面如图2-5所示:
图2-5:
取款界面
代码如下:
namespaceWindowasd
{
publicpartialclassForm3:
Form
{
publicForm3()
{
InitializeComponent();
}
privatevoidbutton3_Click(objectsender,EventArgse)
{
Form2frm=newForm2();
frm.Show();
this.Hide();
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
maskedTextBox1.Text="";
}
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();
}
privatevoidForm3_Load(objectsender,EventArgse)
{
}
}
}
(4)存款窗体:
通过该界面用户可以从自己的账户中进行取存款操作,但是存款的金额必须在规定范围内且为100元的整数倍,否则无法进行操作,其界面如图2-6所示:
图2-6存款界面
代码如下:
namespaceWindowasd
{
publicpartialclassForm4:
Form
{
publicForm4()
{
InitializeComponent();
}
privatevoidbutton3_Click(objectsender,EventArgse)
{
maskedTextBox1.Text="";
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
Form2frm=newForm2();
frm.Show();
this.Hide();
}
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);
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("本机只提供以百元为单位的金额,请正确输入金额!
");
}
}
privatevoidForm4_Load(objectsender,EventArgse)
{
}
}
}
(6)转账窗体:
通过该界面用户可以给除自己外的其他账户进行转账,其界面如图2-7所示:
图2-7转账窗口
代码如下:
namespaceWindowasd
{
publicpartialclassForm5:
Form
{
publicForm5()
{
InitializeComponent();
}
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]);
stringwo=Convert.ToString(dr[1]);
decimalsqje=Convert.ToDecimal(maskedTextBox1.Text);
dr.Close();
if(jine>sqje