c语言银行自动存取款机模拟.docx
《c语言银行自动存取款机模拟.docx》由会员分享,可在线阅读,更多相关《c语言银行自动存取款机模拟.docx(10页珍藏版)》请在冰豆网上搜索。
c语言银行自动存取款机模拟
沈阳航空航天大学
课程设计
学号21
班级04070101
姓名王翰章
指导教师杨煦
2011年9月28日
##航空航天大学
课程设计任务书
学院:
自动化学院专业:
测控技术与仪器班级:
04070101
学号:
21题目:
自动存取款机模拟
一、课程设计时间
2011~12第1学期第4周,共计1周,20学时。
二、课程设计内容
请你模仿自动存取款机系统,用C语言编写软件完成以下任务:
1.登陆功能:
某个用户输入账户名和密码,可以登陆ATM。
注意:
应有多个用户,并把信息保存在文件中。
2.查询功能:
登陆后,可以查询存款余额。
3.存款功能:
登陆后,可以向账户中存款。
4.取款功能:
登陆后,可以取款。
注意:
取款金额不能超过存款金额。
提示:
用户〔账号、密码、存款余额、利率、开户银行〕
三、课程设计要求
1.程序质量:
✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括、“数据输入〞、“数据保存〞、“信息查询〞、“数据修改〞、“退出〞5项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2.课程设计说明书:
课程完毕后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字
指导教师:
学生签名:
五、成绩
六、教师评语
一、需求分析
根据任务书给定的“课程设计内容〞和“课程设计要求〞作如下的需求分析。
该系统是一个较典型的银行存取款模拟系统,其使用者被假定为银行信用卡用户,系统应该具有安全、稳定、功能齐全的特点。
1.安全性分析
银行存取款机的数据涉与到取款机内储存的所有用户,数据量较大且对##性的需求很高,所以要通过设置密码等手段确保数据不能被随意的删减和修改。
2.稳定性分析
指系统比拟健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。
3.主要功能分析
〔1〕账号与密码输入:
允许用户输入账号、密码,对用户由于疏忽录入的非法数据,能够与时提示并更正。
〔2〕登陆成功界面:
共有三个选项,查询余额、取款、退出分别对应1、2、3选项,假设序号输入不正确会予以提示。
〔3〕余额查询:
选定1后,进入查询界面,用户输入查询条件,系统规那么地在界面显示查询结果,且显示的数据尽量全面。
当输入卡号时,系统需要输入对应的密码〔假设密码错误那么会有相应提示〕密码与卡号相对应可查询到该用户的##、余额。
〔3〕取款:
选定2后,进入取款界面,用户输入取款金额,假设取款金额大于存款金额那么会提示“余额不足〞,假设小于那么会在原余额上扣除取款金额。
〔4〕退出:
选定3后,进入退出界面,系统会延迟3-4秒重新跳回登陆界面,供其他用户使用。
二、设计分析
主要有5个功能模块,每个模块对应一个C语言子函数。
这些函数原型与其功能简述如下:
voiddljm();------登陆成功后出现的界面
voiddl();------登陆
voidcx();------查询
voidqk();------取款
voidtk();------退卡
1、程序总体结构图
图1
2、主要功能模块框图
图2
三、主要界面截图
图1登陆成功后的操作
图2查询与取款
四、技术要点
1、结构体的应用
定义了结构体用来描述用户的##、卡号、密码以与金额。
具体的定义如下:
structatm//ATM自助银行
{
charname[10];
intaccount;//卡号
shortpassword;//密码
floatmoney;//金额
}at[10]={{"ZhaoLin",1,1,4000},{"MaFang",2,2,7000},
{"WangMing",3,3,5888},{"MaJiu",4,4,7543},
{"HangHan",5,5,10000},{"ZhangHu",6,6,4087},
{"MaFang",7,7,2765},{"ZhouLi",8,8,4530},
{"HongShan",9,9,5693},{"YuLi",10,10,7543}};
所定义的结构体主要用于定义数组。
2、循环语句与选择性分支语句的嵌套
while(z!
=-1)
{
printf("\n\n请输入操作序号:
");
scanf("%d",&z);
switch(z)
{
case1:
cx();break;//查询余额
case2:
qk();break;//取款
case3:
tk();break;//退卡
default:
printf("操作序号不合法!
");
return;
}
}
3、关于延迟清屏时间
for(i=0;i<1000000000;i++);//延缓显示时间
system("cls");//清屏
main();//回初始界面,供其他用户使用
此for循环语句可以使清屏函数延缓3-4秒执行,后调用main函数,完成整个操作过程后重新供其他用户登陆。
五、个人总结
在此次课设过程中,我遇到了许多困难,例如如何在没有用户注册的程序中直接能完成登陆,只需建立一个结构体数组,还有如何能做到像ATM机那样一个用户用完之后还能供其他用户使用,这些都是经过查找书籍和上网查找相关资料才得以解决。
所以这次课设对我的帮助很大。
六、参考文献
1谭浩强.C程序设计.:
清华大学,2005
2詹红霞,visualc++6.0程序设计,##:
##电子科技大学,2009
七、源程序
#include
#include
intx;//记录下标
voiddljm();//登录成功后出现的界面
voiddl();//登录
voidcx();//查询
voidqk();//取款
voidtk();//退卡
structatm//ATM自助银行
{
charname[10];
intaccount;//卡号
shortpassword;//密码
floatmoney;//金额
}at[10]={{"ZhaoLin",1,1,4000},{"MaFang",2,2,7000},
{"WangMing",3,3,5888},{"MaJiu",4,4,7543},
{"HangHan",5,5,10000},{"ZhangHu",6,6,4087},
{"MaFang",7,7,2765},{"ZhouLi",8,8,4530},
{"HongShan",9,9,5693},{"YuLi",10,10,7543}};
//主函数
voidmain()
{
printf("******************欢迎使用自动取款机**************\n");
printf("**************************************************\n");
dl();
}
//登录函数
voiddl()
{
inta;//临时记录下标
intaccount;//卡号
shortpassword;//密码
printf("请输入卡号:
");
scanf("%d",&account);
for(a=0;a<=9;a++)
{
if(account==at[a].account)
{
x=a;//将临时变量下标值存储到全局下标变量中
printf("请输入密码:
");
scanf("%d",&password);
if(password==at[a].password)
{
printf("****************丫丫银行欢迎您的登录**************\n");
printf("**************************************************\n");
printf("登录成功,请选择操作\n");
dljm();//登录成功界面
break;
}
else
{
printf("密码输入错误\n");
dl();//递归(调用自己,再来一次)
}
}
}
}
//登录界面
voiddljm()
{
intz;
printf("查询余额---------1\n");
printf("取款---------2\n");
printf("退卡---------3\n");
while
(1)
{
printf("\n\n请输入操作序号:
");
scanf("%d",&z);
switch(z)
{
case1:
cx();break;//查询余额
case2:
qk();break;//取款
case3:
tk();break;//退卡
default:
printf("操作序号不合法!
");
return;
}
}
}
//查询余额
voidcx()
{
printf("%s您卡上余额为%7.2f元",at[x].name,at[x].money);
}
//取款
voidqk()
{
floata;
printf("请输入取款金额:
");
scanf("%f",&a);
if(a>at[x].money)
printf("你的余额不足");
else
{printf("您已取款%7.2f元",a);
at[x].money=at[x].money-a;
}
}
//退卡
voidtk()
{
inti;
printf("请取回您的卡\n");
for(i=0;i<1000000000;i++);//延缓显示时间
system("cls");//清屏
main();//回初始界面,供其他用户使用
}