c语言程序设计atm自动取款机实验报告

发布时间:2020-06-10 03:19:47   来源:文档文库   
字号:

课程设计报告

课程类别:本科

课程名称:程序设计基础(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

void main()

{

int Num,a,code,ll=0,l=0,p,n,r=0,x,m,Num1,Num2;

int num[10],feng[10],money[10],s[6],t[6];

int i=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)

{

case 1:

{

printf("请输入管理员密码(6位):");

scanf("%d",&code);

fflush(stdin);

if(code!=num[0])

{

printf("密码不正确!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto loop;

}

}

else

{

system("cls");

printf("|-----欢迎进入管理员模式-------|\n");

printf("| 1:查询用户帐户信息 |\n");

printf("| 2:返回欢迎界面 |\n");

printf("|______________________________|\n");

printf(" 请选择:");

scanf("%d",&n);

fflush(stdin);

switch(n)

{

case 1:system("cls");goto guanli;break;

case 2:system("cls");goto loop;break;

}

}

}

case 2:{

system("cls");

goto loop;

break;

}

default:printf("输入错误!\n");break;

}

}

else

{

if(feng[Num]==1)//如果输入的不是管理员帐号,则判断该帐号是否被封.

{

printf("该帐号已被封存!\n");//如果被封,则返回开头.

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto loop;}

}

else//如果没被封,则开始输入密码.

{

printf("请输入密码:");

state:

scanf("%d",&code);

fflush(stdin);

if(code!=num[Num])

{

printf("密码不正确!请重新输入:");

i++;//计算输入错误几次.

if(i<3)

goto state;

else

{

printf("连续三次出错!\n");

++r;//计算连续三次出错共有几次.

if(r<2)//小于2则返回欢迎界面.

{

i=0;

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto loop;

}

}

else//大于2则封存帐户,然后返回欢迎界面.

{

printf("您的帐号已被封存.\n");

feng[Num]=1;

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto loop;

}

}

}

}

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)//进行选择.

{

case 1:system("cls");goto qukuan;break;

case 2:system("cls");goto yuechaxun;break;

case 3:system("cls");goto mimaxiugai;break;

case 4:system("cls");goto zhuanzhang;break;

case 5:system("cls");goto lishijilu;break;

case 6:system("cls");goto loop;break;

default:printf("输入错误!\n");system("cls");goto shuru;

}

}

}

printf("|----取款----|\n");

printf("| 1.取款 |\n");

printf("| 2.返回 |\n");

printf("|------------|\n");

scanf("%d",&x);

fflush(stdin);

switch (x)

{

case 1:{

if(l>5000)//判断累计取款额.

{

printf("累计取款超过5000元,系统出错.\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto shuru;

}

}

else//若低于5000,则开始取款.

{

if(money[Num]<100)//判断此时余额,进行屏幕打印.

{

printf("余额不足.\n");//以下N个疯狂的循环道理同此.

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");//原谅我吧蒋老师...我实在没想出啥好方法...

goto shuru;

}

}

else if(money[Num]<200)//现金在0~200元之间时。

{

printf("请选择:1.100元 2.返回上一级\n");

scanf("%d",&n);

fflush(stdin);

switch(n)

{

case 1:{

printf("正在取款,请稍候......\n");

money[Num]-=100;

l+=100;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

case 2:goto shuru;break;

default:{

printf("输入错误!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

}

}

else if(money[Num]<500)//现金在0~500元之间时。

{

printf("请选择:1.100元 2.200元 3.返回上一级.\n");

scanf("%d",&n);

fflush(stdin);

switch(n)

{

case 1:{

printf("正在取款,请稍候......\n");

money[Num]-=100;

l+=100;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF){

system("cls");

goto qukuan;}

break;

}

case 2:{

printf("正在取款,请稍候......\n");

money[Num]-=200;

l+=200;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

case 3:goto shuru;break;

default:{

printf("输入错误!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

}

}

else if(money[Num]<1000)//现金在0~1000元之间时。

{

printf("请选择:1.100元 2.200元 3.500元 4.返回上一级.\n");

scanf("%d",&n);

fflush(stdin);

switch(n)

{

case 1:{

printf("正在取款,请稍候......\n");

money[Num]-=100;

l+=100;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;}

break;

}

case 2:{

printf("正在取款,请稍候......\n");

money[Num]-=200;

l+=200;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

case 3:{

printf("正在取款,请稍候......\n");

money[Num]-=500;

l+=500;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

case 4:goto shuru;break;

default:{

printf("输入错误!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

}

}

else if(money[Num]<2000)//现金在0~2000元之间时。

{

printf("请选择:1.100元 2.200元 3.500元 4.1000元 5.返回上一级.\n");

scanf("%d",&n);

fflush(stdin);

switch(n)

{

case 1:{

printf("正在取款,请稍候......\n");

money[Num]-=100;

l+=100;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

case 2:{

printf("正在取款,请稍候......\n");

money[Num]-=200;

l+=200;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF){

system("cls");

goto qukuan;}

break;

}

case 3:{

printf("正在取款,请稍候......\n");

money[Num]-=500;

l+=500;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

case 4:{

printf("正在取款,请稍候......\n");

money[Num]-=1000;

l+=1000;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

case 5:goto shuru;break;

default:{

printf("输入错误!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

}

}

else//现金在2000元以上时。

{

printf("请选择:1.100元 2.200元 3.500元 4.1000元 5.2000元 6.返回上一级.\n");

scanf("%d",&n);

fflush(stdin);

switch(n)

{

case 1:{

printf("正在取款,请稍候......\n");

money[Num]-=100;

l+=100;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;}

break;

}

case 2:{

printf("正在取款,请稍候......\n");

money[Num]-=200;

l+=200;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;}

break;

}

case 3:{

printf("正在取款,请稍候......\n");

money[Num]-=500;

l+=500;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

case 4:{

printf("正在取款,请稍候......\n");

money[Num]-=1000;

l+=1000;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;}

break;

}

case 5:{

printf("正在取款,请稍候......\n");

money[Num]-=2000;

l+=2000;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;}

break;

}

case 6:goto shuru;break;

default:{

printf("输入错误!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;}

break;

}

}

}

}

break;}

case 2:goto shuru;break;

default:{

printf("输入错误!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;}

break;

}

}

printf("|-----修改密码-----|\n");

printf("| 请选择: |\n");

printf("| 1.修改密码。 |\n");

printf("| 2.返回上一级。 |\n");

printf("|__________________|\n");

scanf("%d",&x);

fflush(stdin);

switch(x)

{

case 1:{

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");

goto mimaxiugai;}

}

}//计算出密码。=_=|||凭我的智商只想出了这种方法……

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");

goto mimaxiugai;}

}

case 2:system("cls");goto shuru;break;

default:{

printf("输入错误!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto mimaxiugai;}

break;

}

}

printf("|-----转帐-----|\n");

printf("| 请选择: |\n");

printf("| 1.转帐 |\n");

printf("| 2.返回上一级 |\n");

printf("|______________|\n");

scanf("%d",&x);

fflush(stdin);

switch(x)

{

case 1:{//开始转账。

printf("请输入转账给的用户账号:\n");

scanf("%d",&Num1);

fflush(stdin);

printf("请再次输入账号:\n");//确认。

scanf("%d",&Num2);

fflush(stdin);

if(Num1==Num2)//如果两次输入相同,则进行转账。

{

printf("请输入转账金额:\n");

scanf("%d",&ll);

fflush(stdin);

if(money[Num]>=ll)

{

money[Num]-=ll;

money[Num1]+=ll;

printf("转账成功!!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{system("cls");

goto zhuanzhang;}

}

else

{

printf("余额不足!!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{system("cls");

goto zhuanzhang;}

}

break;

}

else

{//输入不同,则返回。

printf("账号确认失败!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{system("cls");

goto zhuanzhang;}

}

}

case 2:system("cls");goto shuru;break;

default:{

printf("输入错误!!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{system("cls");

goto zhuanzhang;}

break;}

}

printf("|-----余额查询-----|\n");

printf("|当前余额:%6d---|\n",money[Num]);

printf("| 按0返回上一级 |\n");

printf("|__________________|\n");

scanf("%d",&x);

fflush(stdin);

switch(x)//按0返回。

{

case 0:system("cls");goto shuru;break;

default:{

printf("输入错误!请重新输入。\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto yuechaxun;

}

break;

}

}

printf("|------查询用户信息------|\n");

printf("| 1.输入账号. |\n");

printf("| 2.返回上一级. |\n");

printf("|________________________|\n");

printf("请输入选项:");

scanf("%d",&x);

switch(x)

{

case 1:{

printf("请输入账号:");

scanf("%d",&Num);

fflush(stdin);

printf("|--用户名称:%06d-------|\n",Num);

printf("| 用户密码:%06d |\n",num[Num]);

printf("| 用户余额:%6d |\n",money[Num]);

printf("|________________________|\n");

if(feng[Num]==1)

{

printf("该账号已被封存!\n");

printf("是否解封?(Y/N)\n");

scanf("%c",&x);

if((x=='y')||(x=='Y'))

{

feng[Num]=0;

printf("账号已解封!\n");

}

else

break;

}

printf("按0返回上一级。");

scanf("%d",&x);

fflush(stdin);

switch(x)

{

case 0:{

system("cls");

goto guanli;

break;

}

default:break;

}

}

case 2:system("cls");goto guanlimoshi;break;

default:{

printf("输入错误!请重新输入:");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto guanli;

}

break;

}

}

lishijilu:

printf("|----------------历史纪录-----------------|\n");

printf("| 对不起,本功能尚未完善,敬请期待后续……|\n");

printf("| * ^__^ * |\n");

printf("|_________________________________________|\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto shuru;

}

}

}

6.详细设计

6.1 功能流程图

1)设子储户信息流程

2)修改密码流程

6.2 重点设计

主要函数main,enter, getmoney, changepassword, yuerchaxun, banksaves, transaccount, exitcaozuo.

7.测试与调试

欢迎界面

功能界面

取款界面

取款结束界面

余额查询界面

修改密码界面

转账界面

#include

#include

void main()

{

int Num,a,code,ll=0,l=0,p,n,r=0,x,m,Num1,Num2;

int num[10],feng[10],money[10],s[6],t[6];

int i=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)

{

case 1:

{

printf("请输入管理员密码(6位):");

scanf("%d",&code);

fflush(stdin);

if(code!=num[0])

{

printf("密码不正确!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto loop;

}

}

else

{

system("cls");

printf("|-----欢迎进入管理员模式-------|\n");

printf("| 1:查询用户帐户信息 |\n");

printf("| 2:返回欢迎界面 |\n");

printf("|______________________________|\n");

printf(" 请选择:");

scanf("%d",&n);

fflush(stdin);

switch(n)

{

case 1:system("cls");goto guanli;break;

case 2:system("cls");goto loop;break;

}

}

}

case 2:{

system("cls");

goto loop;

break;

}

default:printf("输入错误!\n");break;

}

}

else

{

if(feng[Num]==1)//如果输入的不是管理员帐号,则判断该帐号是否被封.

{

printf("该帐号已被封存!\n");//如果被封,则返回开头.

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto loop;}

}

else//如果没被封,则开始输入密码.

{

printf("请输入密码:");

state:

scanf("%d",&code);

fflush(stdin);

if(code!=num[Num])

{

printf("密码不正确!请重新输入:");

i++;//计算输入错误几次.

if(i<3)

goto state;

else

{

printf("连续三次出错!\n");

++r;//计算连续三次出错共有几次.

if(r<2)//小于2则返回欢迎界面.

{

i=0;

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto loop;

}

}

else//大于2则封存帐户,然后返回欢迎界面.

{

printf("您的帐号已被封存.\n");

feng[Num]=1;

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto loop;

}

}

}

}

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)//进行选择.

{

case 1:system("cls");goto qukuan;break;

case 2:system("cls");goto yuechaxun;break;

case 3:system("cls");goto mimaxiugai;break;

case 4:system("cls");goto zhuanzhang;break;

case 5:system("cls");goto lishijilu;break;

case 6:system("cls");goto loop;break;

default:printf("输入错误!\n");system("cls");goto shuru;

}

}

}

printf("|----取款----|\n");

printf("| 1.取款 |\n");

printf("| 2.返回 |\n");

printf("|------------|\n");

scanf("%d",&x);

fflush(stdin);

switch (x)

{

case 1:{

if(l>5000)//判断累计取款额.

{

printf("累计取款超过5000元,系统出错.\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto shuru;

}

}

else//若低于5000,则开始取款.

{

if(money[Num]<100)//判断此时余额,进行屏幕打印.

{

printf("余额不足.\n");//以下N个疯狂的循环道理同此.

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");//原谅我吧蒋老师...我实在没想出啥好方法...

goto shuru;

}

}

else if(money[Num]<200)//现金在0~200元之间时。

{

printf("请选择:1.100元 2.返回上一级\n");

scanf("%d",&n);

fflush(stdin);

switch(n)

{

case 1:{

printf("正在取款,请稍候......\n");

money[Num]-=100;

l+=100;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

case 2:goto shuru;break;

default:{

printf("输入错误!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

}

}

else if(money[Num]<500)//现金在0~500元之间时。

{

printf("请选择:1.100元 2.200元 3.返回上一级.\n");

scanf("%d",&n);

fflush(stdin);

switch(n)

{

case 1:{

printf("正在取款,请稍候......\n");

money[Num]-=100;

l+=100;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF){

system("cls");

goto qukuan;}

break;

}

case 2:{

printf("正在取款,请稍候......\n");

money[Num]-=200;

l+=200;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

case 3:goto shuru;break;

default:{

printf("输入错误!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

}

}

else if(money[Num]<1000)//现金在0~1000元之间时。

{

printf("请选择:1.100元 2.200元 3.500元 4.返回上一级.\n");

scanf("%d",&n);

fflush(stdin);

switch(n)

{

case 1:{

printf("正在取款,请稍候......\n");

money[Num]-=100;

l+=100;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;}

break;

}

case 2:{

printf("正在取款,请稍候......\n");

money[Num]-=200;

l+=200;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

case 3:{

printf("正在取款,请稍候......\n");

money[Num]-=500;

l+=500;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

case 4:goto shuru;break;

default:{

printf("输入错误!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

}

}

else if(money[Num]<2000)//现金在0~2000元之间时。

{

printf("请选择:1.100元 2.200元 3.500元 4.1000元 5.返回上一级.\n");

scanf("%d",&n);

fflush(stdin);

switch(n)

{

case 1:{

printf("正在取款,请稍候......\n");

money[Num]-=100;

l+=100;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

case 2:{

printf("正在取款,请稍候......\n");

money[Num]-=200;

l+=200;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF){

system("cls");

goto qukuan;}

break;

}

case 3:{

printf("正在取款,请稍候......\n");

money[Num]-=500;

l+=500;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

case 4:{

printf("正在取款,请稍候......\n");

money[Num]-=1000;

l+=1000;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

case 5:goto shuru;break;

default:{

printf("输入错误!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

}

}

else//现金在2000元以上时。

{

printf("请选择:1.100元 2.200元 3.500元 4.1000元 5.2000元 6.返回上一级.\n");

scanf("%d",&n);

fflush(stdin);

switch(n)

{

case 1:{

printf("正在取款,请稍候......\n");

money[Num]-=100;

l+=100;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;}

break;

}

case 2:{

printf("正在取款,请稍候......\n");

money[Num]-=200;

l+=200;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;}

break;

}

case 3:{

printf("正在取款,请稍候......\n");

money[Num]-=500;

l+=500;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;

}

break;

}

case 4:{

printf("正在取款,请稍候......\n");

money[Num]-=1000;

l+=1000;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;}

break;

}

case 5:{

printf("正在取款,请稍候......\n");

money[Num]-=2000;

l+=2000;

printf("取款成功!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;}

break;

}

case 6:goto shuru;break;

default:{

printf("输入错误!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;}

break;

}

}

}

}

break;}

case 2:goto shuru;break;

default:{

printf("输入错误!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto qukuan;}

break;

}

}

printf("|-----修改密码-----|\n");

printf("| 请选择: |\n");

printf("| 1.修改密码。 |\n");

printf("| 2.返回上一级。 |\n");

printf("|__________________|\n");

scanf("%d",&x);

fflush(stdin);

switch(x)

{

case 1:{

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");

goto mimaxiugai;}

}

}//计算出密码。=_=|||凭我的智商只想出了这种方法……

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");

goto mimaxiugai;}

}

case 2:system("cls");goto shuru;break;

default:{

printf("输入错误!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto mimaxiugai;}

break;

}

}

printf("|-----转帐-----|\n");

printf("| 请选择: |\n");

printf("| 1.转帐 |\n");

printf("| 2.返回上一级 |\n");

printf("|______________|\n");

scanf("%d",&x);

fflush(stdin);

switch(x)

{

case 1:{//开始转账。

printf("请输入转账给的用户账号:\n");

scanf("%d",&Num1);

fflush(stdin);

printf("请再次输入账号:\n");//确认。

scanf("%d",&Num2);

fflush(stdin);

if(Num1==Num2)//如果两次输入相同,则进行转账。

{

printf("请输入转账金额:\n");

scanf("%d",&ll);

fflush(stdin);

if(money[Num]>=ll)

{

money[Num]-=ll;

money[Num1]+=ll;

printf("转账成功!!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{system("cls");

goto zhuanzhang;}

}

else

{

printf("余额不足!!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{system("cls");

goto zhuanzhang;}

}

break;

}

else

{//输入不同,则返回。

printf("账号确认失败!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{system("cls");

goto zhuanzhang;}

}

}

case 2:system("cls");goto shuru;break;

default:{

printf("输入错误!!\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{system("cls");

goto zhuanzhang;}

break;}

}

printf("|-----余额查询-----|\n");

printf("|当前余额:%6d---|\n",money[Num]);

printf("| 按0返回上一级 |\n");

printf("|__________________|\n");

scanf("%d",&x);

fflush(stdin);

switch(x)//按0返回。

{

case 0:system("cls");goto shuru;break;

default:{

printf("输入错误!请重新输入。\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto yuechaxun;

}

break;

}

}

printf("|------查询用户信息------|\n");

printf("| 1.输入账号. |\n");

printf("| 2.返回上一级. |\n");

printf("|________________________|\n");

printf("请输入选项:");

scanf("%d",&x);

switch(x)

{

case 1:{

printf("请输入账号:");

scanf("%d",&Num);

fflush(stdin);

printf("|--用户名称:%06d-------|\n",Num);

printf("| 用户密码:%06d |\n",num[Num]);

printf("| 用户余额:%6d |\n",money[Num]);

printf("|________________________|\n");

if(feng[Num]==1)

{

printf("该账号已被封存!\n");

printf("是否解封?(Y/N)\n");

scanf("%c",&x);

if((x=='y')||(x=='Y'))

{

feng[Num]=0;

printf("账号已解封!\n");

}

else

break;

}

printf("按0返回上一级。");

scanf("%d",&x);

fflush(stdin);

switch(x)

{

case 0:{

system("cls");

goto guanli;

break;

}

default:break;

}

}

case 2:system("cls");goto guanlimoshi;break;

default:{

printf("输入错误!请重新输入:");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto guanli;

}

break;

}

}

lishijilu:

printf("|----------------历史纪录-----------------|\n");

printf("| 对不起,本功能尚未完善,敬请期待后续……|\n");

printf("| * ^__^ * |\n");

printf("|_________________________________________|\n");

printf("按任意键返回。\n");

while(getchar()!=EOF)

{

system("cls");

goto shuru;

}

}

}

8.总结

8.1 心得体会

见手写纸

8.2 不足与改进

由于初次进行系统的程序设计,层次结构划分不太合理,应在以后的设计中强化此思维,逐渐与工程设计。

Goto过多的采用使程序繁琐

9.参考文献

陈 家 琪 计算机网络安全 上 海 理 工 大 学 电 子 教 材 ,

胡建斌网络与信息安全概论 北京大学网络与信息安全

研究室电子教材,

陈钟信息与网络安全 北京大学信息学院 电子教材,

耿建勇,普士文基于 加密规范的安全数据交换的实

现计算机应用与软件, ,:

郑忠刚,王俊书,郭娜振 局域网络安全分板电脑知识与

技术, ,:

杨强,卢建军,唐善成一种基于 的安全服务决策平

台的具体实现计算机应用, ,:

本文来源:https://www.2haoxitong.net/k/doc/92656f5aa4c30c22590102020740be1e650ecc85.html

《c语言程序设计atm自动取款机实验报告.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式