ATM自动存取款机课程设计.docx
- 文档编号:6262245
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:34
- 大小:531.15KB
ATM自动存取款机课程设计.docx
《ATM自动存取款机课程设计.docx》由会员分享,可在线阅读,更多相关《ATM自动存取款机课程设计.docx(34页珍藏版)》请在冰点文库上搜索。
ATM自动存取款机课程设计
教育信息与技术学院
综合课程设计
IntegratedCurriculumDesign
所在院系
教育信息与技术学院
专业名称
信息工程
班级
1203班
题目
ATM自动存取款机
指导教师
严焰
成员
黄冠林
完成时间
2013年1月2日
一、设计任务及要求:
设计任务:
设计一个自动存取款机的模拟
要求:
1:
登陆功能:
用户输入账户名和密码,可以登陆ATM。
2:
查询功能:
登陆后可以查询存款和余额。
3:
取款功能:
登陆后,可以取款。
注意,取款额不能超过存款余额。
4:
转账功能:
登陆后,可以向其他用户转账。
5:
存款功能;登陆后,可以向账户中存款。
指导教师签名:
2013年1月5日
二、指导教师评语:
指导教师签名:
2013年1月5日
三、成绩
验收盖章
2013年1月6日
ATM自动存取款机模拟
1、设计目的
(1)熟悉C语言程序设计的主要内容,以及C语言中各部分功能的实现、函数和变量的定义和调用,加强对C语言逻辑结构的思维培养,加强学生的创新能力。
(2)掌握C语言中多种头文件的使用;全局变量、局部变量以及静态变量的定义和使用;主函数和子函数的申明、定义和调用;多次使用switch语句和if语句,加深对这两个语句的了解。
(3)了解一个程序员设计一个软件应该经历的步骤与过程,明白设计一个软件首先要考虑的是该软件要实现的功能。
然后再对其功能进行设计和编程。
2、设计思路
本程序的设计主要是实现各个函数间的调用,其中使用的函数有23个,合理利用各个函数间的调用,使得程序的功能更加多样化,操作更加简便,其中设计的功能主要分为两大块。
(1)用户使用的ATM自动存取款机功能,其内部功能包括查询余额、取款、存钱、转账、修改密码、充值话费、退出七个功能;
(2)管理员操作的ATM自动存取款机,其内部功能包括快速查询用户信息、增加用户、删除用户、浏览用户、退出界面5个功能,而快速查询用户信息中又包括修改客户信息的功能,程序可以实现修改客户姓名、卡号、密码、金额的信息。
3、设计原理
功能设计过程
该程序的设计需要调用23个函数能
voiddl();//登陆
voidqk();//取款
voidcx();//查询
voidglydl();//管理员登陆界面
voidsc();//删除用户
voidks();//快速查询用户信息
voidtc();//退卡
voidxg();//修改用户信息
voidxgmmm();//修改用户密码
voidxgkh();//修改卡
voidxgje();//修改金额
voidxgxm();//修改姓名
voidll();//浏览全部用户
voidfhks()//返回快速查询客户界面
voidfhgl();//返回管理员登陆界面
voidhuangguanlin();//管理员操作界面。
voidks();//快速查询用户信息
voiddljm();//登陆成功后出现的界通过调用23个函数分别对struct结构体里的内容进行修改,通过修改能使功能得以实现。
3.1、方案论证
该程序开始时有四个初始值,其中卡号为90000000,密码为88888888为管理员专用账号,其余三个为用户卡号,其卡号分别为10000000、2000000、30000000,密码分别为10000000、20000000、30000000,通过初始值间的值相互间的运算,以及通过函数调用的功能实现操作。
在操作中,用户可以通过登录用户操作界面,选择自己需要的功能,程序通过加减等运算分别对相应的数值进行更改。
管理员可以通过管理员登录界面,实现对用户的信息进行控制,也可以在系统中增加新用户或者删除已存在的用户
3.2、程序的设计
该程序的功能大体分为两大块。
一是用户操作的功能,二是管理员操作的功能,用户操作的功能可以分查询余额、取款、存钱、转账、修改密码、充值话费、退卡七个功能,而管理员操作分为快速查询用户信息、增加用户、删除用户、浏览用户、退出界面5个功能,而快速查询用户信息中又包括修改客户信息的功能,在修改客户信息的功能中通过调用函数,程序可以实现修改客户姓名、卡号、密码、金额的信息功能。
其功能流程图如下:
欢迎使用自动存取款机
客户操作界面管理员操作界面
查询余额取款存款增加用户删除用户
转账修改密码退出浏览用户
快速查询用户信息
修改用户信息返回
修改用户姓名修改用户卡号
修改用户密码修改用户金额
4、程序调试和结果分析
4.1程序调试
(1)ATM登陆界面
(1.1)当输入的卡号时,程序调用voiddl()//登陆函数,当卡号输入为管理员登陆卡号时90000000时将会出现管理员登陆界面,所示如下。
输入卡号后按enter键
(1.2)当输入的卡号为用户卡号时,则出现用户登陆界面
(2)ATM功能调试
(2.1)管理员操作功能调试
当输入管理员登陆密码88888888后按Enter键,系统调用voidhuangguanlin()函数//管理员登陆,进入如下界面:
(2.11)修改用户信息操作调试,输入序号1并按Enter建,出现输入卡号对话宽,将所查询卡号输入,如10000000,并按Enter键,则出现如下界面:
(2.111)当选择了修改客户信息后,系统调用voidxg()//修改,函数。
将弹出如下界面:
(2.1111)当选择修改姓名,并根据对话框提示的操作,在输入姓名对话框中输入修改的姓名,并按Enter键,系统调用voidxgxm()//修改姓名函数,将你需要修改姓名的用户的名字做了修改,操作界面如下。
(2.1.2)增加用户操作功能调试,在管理员操作界面对话框中输入2并按Enter键,系统将会调用voidzj()//增加用户函数,管理员可以分别输入姓名+空格键+卡号+空格键+密码+空格键+金额后按Enter键后系统将自动增加一个客户,操作界面如下:
、
(2.1.3)删除用户操作功能调试,在管理员操作界面输入3并按Enter键后,系统调用voidsc()//删除用户函数,并弹出对话框,管理员输入删除用户卡号并按Enter键后,即可删除该用户,操作界面如下:
(2.1.4)浏览用户操作调试,在管理员操作界面输入4并按Enter键后,系统调用voidll()//浏览用户函数,管理员将可看到所有用户的信息,操作界面如下:
(2.1.5)退出界面调试,在管理员操作界面输入5并按Enter键后,系统调用voidtc()//退出函数,对话框将退出到上一个界面,操作界面如下:
(2.2)用户操作调试,用户在输入卡号与密码后将会弹出如下界面,用户可以按照如下提示去进行操作
(2.2.1)用户执行如上图所示七个功能
(查询余额功能视图)
(取款功能视图)
(存款功能视图)
(转账功能视图)
(充值话费功能视图)
(退卡功能视图)
4.2结果分析
通过复杂的C程序运算,调用多个函数,实现了ATM自动存取款机的多项功能,使用户操作更加方便,同时也使管理员对用户的管理更加方便。
参考文献
[1]《C程序设计》(第四版)谭浩强著
[2]《C语言入门经典》
[3]《CPrimerPlus》
[4]《C语言解惑》
附件
完整程序(分段显示程序)
主函数的定义以及各个子函数的定义,同时给struct结构体进行初始值的声明
//*****************************************************************//
#include
#include
intx,b=3;//记录下标
voiddljm();//登陆成功后出现的界面
voiddl();//登陆
voidcx();//查询
voidqk();//取款
voidck();//存款
voidzz();//转账
voidtk();//退卡
voidczhf();//充值话费
voidxgmm();//修改密码
voidglydl();//管理员登陆界面
voidks();//快速查询用户信息
voidzj();//增加用户
voidsc();//删除用户
voidll();//浏览全部用户
voidtc();//退出
voidxg();//修改用户信息
voidxgkh();//修改卡号
voidxgmmm();//修改用户密码
voidxgje();//修改金额
voidxgxm();//修改姓名
voidfhks();//返回快速查询客户界面
voidfhgl();//返回管理员登陆界面
voidhuangguanlin();//管理员操作界面
structatm//atm自动银行
{charname[10];
intaccount;//卡号
intpassword;//密码
floatmoney;//金额
}
at[10]={
{"ZhaoLin",10000000,10000000,40000},{"MaFang",20000000,20000000,7000},
{"HongShan",90000000,88888888,5693},{"YuLi",300000000,30000000,7543}
};
//主函数
voidmain()
{printf("**********************************************************\n");
printf("**********************\n");
printf("**欢迎使用自动取款机**\n");
printf("**********************\n");
printf("**********************************************************\n");
dl();
}
//*******************************************************//
登陆函数,功能中包括用户的登陆以及管理员的登陆
//*******************************************************//
//登陆函数
voiddl()
{inta,b,T;//临时记录下边
intaccount;//卡号
intpassword;//密码
printf("******************请输入卡号:
");
scanf("%d",&account);
for(a=0;a<=9;a++)
if(account==at[2].account)
{system("cls");//清屏
printf("**************************************************************\n");
printf("**************\n");
printf("******\n");
printf("***管理员,您好!
***\n");
printf("******\n");
printf("**************\n");
printf("**************************************************************\n");
glydl();//管理员登陆
}
elseif(account==at[a].account)
{b=0;
while(b<3)
{b++;
x=a;//将临时变量下标值存储到全局下标变量中
printf("***************************************************************\n");
printf("*****************************************\n");
printf("**在您输入密码前请注意周边环境是否安全**\n");
printf("****************************************\n");
printf("***************************************************************\n");
printf("******************返回请按88\n******************请输入密码:
");
scanf("%d",&password);
if(password==88)
{system("cls");//清屏
main();
}
elseif(password==at[a].password)
{
system("cls");//清屏
printf("**************************************************************\n");
printf("************\n");
printf("****\n");
printf("**冠林银行欢迎你**\n");
printf("****\n");
printf("************\n");
printf("**************************************************************\n");
printf("**************************************************************\n");
printf("**************************************************************\n");
printf("**************************************************************\n");
printf("登陆成功,请选择操作\n");
dljm();//登陆界面
break;
}
else
{printf("******************密码输入错误\n******************请注意,您一天之内不能输错密码超过3次\n");
for(T=0;T<1000000000;T++);//延缓显示时间
system("cls");//清屏
}
}
printf("******************您输入的密码超过有限次数\n******************请您于明天之后到银行营业厅办理取卡手续\n******************再见!
\n");
for(T=0;T<1000000000;T++);//延缓显示时间
system("cls");//清屏
main();
}
{printf("******************您输入的卡号错误,请输入八位有效卡号\n");
for(T=0;T<1000000000;T++);//延缓显示时间
system("cls");//清屏
main();
}
}
//*******************************************************//
用户登陆界面,其中包括用户操作功能的查询余额、取款、存款、修改密码、充值话费、退出等多项功能的
//*******************************************************//
//用户登陆界面
voiddljm()
{intz,T;
printf("***************************************************************\n");
printf("******************查询余额请按1*\n");
printf("******************取款请按2*\n");
printf("******************存款请按3*\n");
printf("******************转账请按4*\n");
printf("******************修改密码请按5*\n");
printf("******************充值话费请按6*\n");
printf("******************退卡请按7*\n");
printf("***************************************************************\n");
printf("******************请输入操作序号:
");
scanf("%d",&z);
switch(z)
{
case1:
cx();break;//查询余额
case2:
qk();break;//取款
case3:
ck();break;//存款
case4:
zz();break;//转账
case5:
xgmm();break;//修改密码
case6:
czhf();break;//充值话费
case7:
tk();break;//退卡
default:
printf("操作序号不合法!
");
for(T=0;T<1000000000;T++);//延缓显示时间
system("cls");//清屏
dljm();
}
dljm();
}
//查询余额
voidcx()
{system("cls");//清屏
printf("\n");
printf("\n");
printf("\n");
printf("%s你卡上余额为%7.2f元\n请继续进行下一步操\n",at[x].name,at[x].money);
}
//取款
voidqk()
{
floata;
printf("******************返回请按0\n请输入取款金额:
");
scanf("%f",&a);
if(a>at[x].money)
{system("cls");//清屏
printf("^-^你的余额不足^-^\n");
}
else
{system("cls");//清屏
printf("\n");
printf("\n");
printf("\n");
printf("你已取款%7.2f元\n",a);
at[x].money=at[x].money-a;
}
}
//存款
voidck()
{
floata;
system("cls");//清屏
printf("\n");
printf("\n");
printf("\n");
printf("******************返回请按0\n请输入存款金额:
");
scanf("%f",&a);
if(a>10000)
{system("cls");//清屏
printf("^-^存的金额过多^-^\n");
}
else
{system("cls");//清屏
printf("\n");
printf("\n");
printf("\n");
printf("你已存款%7.2f元\n",a);
at[x].money=at[x].money+a;
}
}
//转账
voidzz()
{intc,f,T;
floatd;
system("cls");//清屏
printf("\n");
printf("\n");
printf("\n");
printf("******************返回输入88\n******************请输入你要转账的卡号,并按确定键:
");
scanf("%d",&c);
if(c==88)
{system("cls");//清屏
dljm();
}
else
{
for(f=0;f<9;f++)
if(at[f].account==c)
{
printf("******************请输入你要转账的金额");
scanf("%f",&d);
at[f].money=at[f].money+d;
at[x].money=at[x].money-d;
system("cls");//清屏
printf("******************成功向%s\n转账%7.2f元,请进行下一步操作\n",at[f].name,d);
dljm();
}
printf("******************您输入的卡号不存在,请重新输入");
for(T=0;T<1000000000;T++);//延缓显示时间
}
zz();
}
//修改密码
voidxgmm()
{intxg,mm,i,ok;
printf("******************返回输入88\n******************请输入八位有效数字作为新密码:
");
scanf("%d",&xg);
if(xg==88)
{
system("cls");//清屏
dljm();
}
else
{ok=xg/10000000;
if(ok>=1&&ok<=9)
{
printf("******************请再次确认新密码:
");
scanf("%d",&mm);
if(mm==xg)
{
printf("******************密码修改正确");
for(i=0;i<1000000000;i++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ATM 自动 取款 课程设计