c语言程序设计atm自动取款机实验报告修订版.docx
《c语言程序设计atm自动取款机实验报告修订版.docx》由会员分享,可在线阅读,更多相关《c语言程序设计atm自动取款机实验报告修订版.docx(57页珍藏版)》请在冰豆网上搜索。
c语言程序设计atm自动取款机实验报告修订版
集团标准化小组:
[VVOPPT-JOPP28-JPPTL98-LOPPNN]
c语言程序设计atm自动取款机实验报告
课程设计报告
课程类别:
本科
课程名称:
程序设计基础(C语言)
课程代号:
指导教师:
银行ATM自动取款机系统课程设计
姓名:
学号:
姓名:
学号:
姓名:
学号:
学院:
班级:
1.课程设计内容
2.课程设计要求
3.可行性研究
4.需求分析
5.概要设计
5.1功能模块图
5.2功能模块描述
5.3数据结构
6.详细设计
6.1功能流程图
6.2重点设计
7.测试与调试
8.总结
8.1心得体会
8.2不足与改进
9.参考文献
1.课程设计内容
模拟银行的自动取款机ATM使用过程中的界面和用户交互过程
2.课程设计要求
(1)要求利用面向过程的方法以及C语言的编程思想来完成系统的设计;
(2)在系统的设计中,要求运用菜单和文件实现系统功能。
(3)在基本要求达到后,可进行创新设计,如存款、代缴电话费等,或设计友好的界面等。
3.可行性研究
系统是一个基于局域网、互联网和WINDOWS操作的系统,现有技术已较为成熟,利用现有技术完全可以实现系统开发目标。
同时具有优秀的软件需求人员、软件设计人员、和具有丰富经验的软件测试人员。
4.需求分析
在市场经济的蓬勃发展和人们日益繁忙的条件下,现有的银行系统往往需要客户在办理手续时等待很长的时间,这不仅会浪费很多宝贵的时间,也会使得银行的业务人员十分的繁忙,需要很大的人力和财力。
5.概要设计
5.1功能模块图
此处除了系统的模块划分,还要重点描述三人分工情况,分工一定要明确。
5.2功能模块描述
5.3数据结构
#include
#include
voidmain()
{
intNum,a,code,ll=0,l=0,p,n,r=0,x,m,Num1,Num2;
intnum[10],feng[10],money[10],s[6],t[6];
inti=0;
for(p=0;p<9;p++)
{
num[p]=000000;
money[p]=5000;
feng[p]=0;
}
loop:
//首先...请陈老师原谅我N多的goto...
printf("_______________________________\n");
printf("||\n");
printf("|欢迎使用ATM自动取款机|\n");
printf("||\n");
printf("|~第一小组热情开发~|\n");
printf("|_______________________________|\n");
printf("请输入卡号:
");
scanf("%d",&Num);
fflush(stdin);
if(Num==00)
{
printf("是否进入管理员模式?
1/2:
");//是否进入管理员模式。
scanf("%d",&a);
fflush(stdin);
switch(a)
{
case1:
{
printf("请输入管理员密码(6位):
");
scanf("%d",&code);
fflush(stdin);
if(code!
=num[0])
{
printf("密码不正确!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoloop;
}
}
else
{
system("cls");
printf("|-----欢迎进入管理员模式-------|\n");
printf("|1:
查询用户帐户信息|\n");
printf("|2:
返回欢迎界面|\n");
printf("|______________________________|\n");
printf("请选择:
");
scanf("%d",&n);
fflush(stdin);
switch(n)
{
case1:
system("cls");gotoguanli;break;
case2:
system("cls");gotoloop;break;
}
}
}
case2:
{
system("cls");
gotoloop;
break;
}
default:
printf("输入错误!
\n");break;
}
}
else
{
if(feng[Num]==1)//如果输入的不是管理员帐号,则判断该帐号是否被封.
{
printf("该帐号已被封存!
\n");//如果被封,则返回开头.
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoloop;}
}
else//如果没被封,则开始输入密码.
{
printf("请输入密码:
");
state:
scanf("%d",&code);
fflush(stdin);
if(code!
=num[Num])
{
printf("密码不正确!
请重新输入:
");
i++;//计算输入错误几次.
if(i<3)
gotostate;
else
{
printf("连续三次出错!
\n");
++r;//计算连续三次出错共有几次.
if(r<2)//小于2则返回欢迎界面.
{
i=0;
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoloop;
}
}
else//大于2则封存帐户,然后返回欢迎界面.
{
printf("您的帐号已被封存.\n");
feng[Num]=1;
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoloop;
}
}
}
}
else//如果密码输入正确,则进入用户页面.
{
system("cls");
shuru:
printf("|---欢迎使用ATM自动取款机---|\n");
printf("|1.取款2.余额查询|\n");
printf("|3.密码修改4.转帐|\n");
printf("|5.历史交易纪录查询|\n");
printf("|6.返回欢迎界面|\n");
printf("|___________________________|\n");
printf("请输入选项:
\n");
scanf("%d",&x);
fflush(stdin);
switch(x)//进行选择.
{
case1:
system("cls");gotoqukuan;break;
case2:
system("cls");gotoyuechaxun;break;
case3:
system("cls");gotomimaxiugai;break;
case4:
system("cls");gotozhuanzhang;break;
case5:
system("cls");gotolishijilu;break;
case6:
system("cls");gotoloop;break;
default:
printf("输入错误!
\n");system("cls");gotoshuru;
}
}
}
printf("|----取款----|\n");
printf("|1.取款|\n");
printf("|2.返回|\n");
printf("|------------|\n");
scanf("%d",&x);
fflush(stdin);
switch(x)
{
case1:
{
if(l>5000)//判断累计取款额.
{
printf("累计取款超过5000元,系统出错.\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoshuru;
}
}
else//若低于5000,则开始取款.
{
if(money[Num]<100)//判断此时余额,进行屏幕打印.
{
printf("余额不足.\n");//以下N个疯狂的循环道理同此.
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");//原谅我吧蒋老师...我实在没想出啥好方法...
gotoshuru;
}
}
elseif(money[Num]<200)//现金在0~200元之间时。
{
printf("请选择:
1.100元2.返回上一级\n");
scanf("%d",&n);
fflush(stdin);
switch(n)
{
case1:
{
printf("正在取款,请稍候......\n");
money[Num]-=100;
l+=100;
printf("取款成功!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;
}
break;
}
case2:
gotoshuru;break;
default:
{
printf("输入错误!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;
}
break;
}
}
}
elseif(money[Num]<500)//现金在0~500元之间时。
{
printf("请选择:
1.100元2.200元3.返回上一级.\n");
scanf("%d",&n);
fflush(stdin);
switch(n)
{
case1:
{
printf("正在取款,请稍候......\n");
money[Num]-=100;
l+=100;
printf("取款成功!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF){
system("cls");
gotoqukuan;}
break;
}
case2:
{
printf("正在取款,请稍候......\n");
money[Num]-=200;
l+=200;
printf("取款成功!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;
}
break;
}
case3:
gotoshuru;break;
default:
{
printf("输入错误!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;
}
break;
}
}
}
elseif(money[Num]<1000)//现金在0~1000元之间时。
{
printf("请选择:
1.100元2.200元3.500元4.返回上一级.\n");
scanf("%d",&n);
fflush(stdin);
switch(n)
{
case1:
{
printf("正在取款,请稍候......\n");
money[Num]-=100;
l+=100;
printf("取款成功!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;}
break;
}
case2:
{
printf("正在取款,请稍候......\n");
money[Num]-=200;
l+=200;
printf("取款成功!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;
}
break;
}
case3:
{
printf("正在取款,请稍候......\n");
money[Num]-=500;
l+=500;
printf("取款成功!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;
}
break;
}
case4:
gotoshuru;break;
default:
{
printf("输入错误!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;
}
break;
}
}
}
elseif(money[Num]<2000)//现金在0~2000元之间时。
{
printf("请选择:
1.100元2.200元3.500元4.1000元5.返回上一级.\n");
scanf("%d",&n);
fflush(stdin);
switch(n)
{
case1:
{
printf("正在取款,请稍候......\n");
money[Num]-=100;
l+=100;
printf("取款成功!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;
}
break;
}
case2:
{
printf("正在取款,请稍候......\n");
money[Num]-=200;
l+=200;
printf("取款成功!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF){
system("cls");
gotoqukuan;}
break;
}
case3:
{
printf("正在取款,请稍候......\n");
money[Num]-=500;
l+=500;
printf("取款成功!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;
}
break;
}
case4:
{
printf("正在取款,请稍候......\n");
money[Num]-=1000;
l+=1000;
printf("取款成功!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;
}
break;
}
case5:
gotoshuru;break;
default:
{
printf("输入错误!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;
}
break;
}
}
}
else//现金在2000元以上时。
{
printf("请选择:
1.100元2.200元3.500元4.1000元5.2000元6.返回上一级.\n");
scanf("%d",&n);
fflush(stdin);
switch(n)
{
case1:
{
printf("正在取款,请稍候......\n");
money[Num]-=100;
l+=100;
printf("取款成功!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;}
break;
}
case2:
{
printf("正在取款,请稍候......\n");
money[Num]-=200;
l+=200;
printf("取款成功!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;}
break;
}
case3:
{
printf("正在取款,请稍候......\n");
money[Num]-=500;
l+=500;
printf("取款成功!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;
}
break;
}
case4:
{
printf("正在取款,请稍候......\n");
money[Num]-=1000;
l+=1000;
printf("取款成功!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;}
break;
}
case5:
{
printf("正在取款,请稍候......\n");
money[Num]-=2000;
l+=2000;
printf("取款成功!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;}
break;
}
case6:
gotoshuru;break;
default:
{
printf("输入错误!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;}
break;
}
}
}
}
break;}
case2:
gotoshuru;break;
default:
{
printf("输入错误!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotoqukuan;}
break;
}
}
printf("|-----修改密码-----|\n");
printf("|请选择:
|\n");
printf("|1.修改密码。
|\n");
printf("|2.返回上一级。
|\n");
printf("|__________________|\n");
scanf("%d",&x);
fflush(stdin);
switch(x)
{
case1:
{
printf("请输入新密码(六位):
\n");//第一次输入。
for(m=0;m<=5;m++)
{
s[m]=getch();//这里,输入时可以显示*,但是不能用退格健。
printf("*");//退格键会被当作一个字符输入。
问题有待解决……
}
printf("请重新输入密码(六位):
\n");//第二次输入。
for(m=0;m<=5;m++)
{
t[m]=getch();
printf("*");
}
for(m=0;m<=5;m++)//判断两次输入是否相同。
{
if(s[m]!
=t[m])
{
printf("输入与第一遍不符!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotomimaxiugai;}
}
}//计算出密码。
=_=|||凭我的智商只想出了这种方法……
num[Num]=s[0]*100000+s[1]*10000+s[2]*1000+s[3]*100+s[4]*10+s[5];
//此种计算密码的方法是错误的,但是没有发现哪里出了错。
希望老师帮忙解决下~谢啦~~
printf("密码修改完成!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{system("cls");
gotomimaxiugai;}
}
case2:
system("cls");gotoshuru;break;
default:
{
printf("输入错误!
\n");
printf("按任意键返回。
\n");
while(getchar()!
=EOF)
{
system("cls");
gotomimaxiugai;}
break;
}
}
printf("|-----转帐-----|\n");
printf("|请选择:
|\n");
printf("|1.转帐|\n");
printf("|2.返回上一级|\n");
printf("|______________|\n");
scanf("%d",&x);
fflush(stdin);
switch(x)
{
case1:
{//开始转账。
printf("请输入转账给的用户账号:
\n");
scanf("%d",&Num1);
fflush(stdin);
printf("请再次输入账号:
\n");//确认。
scanf("%d",&Num2);
fflush(stdin);
if(Num1==Num2)//如果两次输入