您的位置:首页 > 其它

ATM模拟机续作

2016-12-22 19:03 225 查看

ATM2.0

继上次的ATM1.0之后,ATM2.0又出现了,这次的程序设计在我伟大的巧姐老师帮助下,完善了许多,我觉得还算比较成功的,但仍然存在许多bug(我觉得),不过没有关系,现在我正学文件操作,等彻底掌握后,就可以实现更多的功能了

/*
**程序说明:模拟ATM机 (这个初步的还不能建立用户个人档案)
**设计时间:2016.12.7—2016.12.9
**设计者:LAN7
*/
#include<stdio.h>
#include<stdlib.h>
/*************************************************************************
定义一个取款的函数
*************************************************************************/
int qukuan(int money)
{
printf("请输入您的取款金额(友情提示:本机取款金额为100的整数倍):");
int m;//定义变量m,来判断money值是否有变动
scanf("%d",&m);
if(m<=0)//存款金额为负,非法操作,退出
{
printf("警告!小熊孩子不要作\n");
return money;
}
else if(m>money)//所取金额大于存款,非法操作,退出
{
printf("对不起,你太穷了,没那么多钱!\n");
return money;
}
else if(m%100!=0)//存入金额格式不对,非法操作,退出
{
printf("你个智障,会数钱吗!\n");
return money;
}
else //正确操作,返回值改变
{
money = money - m;
return money;//取款后的金额
}
}
/*************************************************************************
定义一个存款的函数
*************************************************************************/
int cunkuan()
{
int money;//存款金额
printf("请输入您的存款金额(友情提示:本机存款金额低于100000,且存款金额为100的整数倍):");
scanf("%d",&money);
if(money<=0)//输入的存款金额非法
{
printf("警告!小熊孩子不要作\n");
return 0;
}
else if(money>100000)//输入金额过大
{
printf("您存入的金额过大。。。本机。。本机操作有些吃力。。。\n");//需改一下,这个不属于非法操作。。!!!!!!!!!!!!!!!!!!!!!!!
return 0;
}
else if(money%100!=0)//输入金额格式不对
{
printf("你会数钱吗,RMB有这样的嘛!!\n");
return 0;
}
else if(money>0&&money<100000)//正确合法的金钱值
{
return money;//返回金钱值
}
else//用户操作非法
{
printf("不要输入其他什么鬼画符,本机拒绝识别!\n");
return 0;
}
}
/*************************************************************************
定义一个显示主页面的函数
*************************************************************************/
void show()
{
system("cls");//清屏,将上次操作记录清除
int i;
char c,b;
c=21;
b=1;
for(i=1;i<=40;i++)//主界面边框的构建,VC和DevC不太一样,DevC的21的Ascii码的字符显示不出来。。。。
{
printf("%c ",c);
}
printf("\n\n");
for(i=1;i<=15;i++)//使字体居中,
{
printf("  ");
}
printf("欢迎使用用ATM存款机\n\n");//标题
for(i=1;i<=18;i++)
{
printf("  ");
}
printf("1.存款\n\n");//选项一
for(i=1;i<=18;i++)
{
printf("  ");
}
printf("2.取款\n\n");//选项二
for(i=1;i<=18;i++)
{
printf("  ");
}
printf("3.查询\n\n");//选项三
for(i=1;i<=18;i++)
{
printf("  ");
}
printf("0.退出\n\n");//选项四
for(i=1;i<=27;i++)
{
printf(" ");
}
printf("请根据您的需要选出功能号%c\n\n",b);
printf("\n");
for(i=1;i<=40;i++)//打印出格式底线
{
printf("%c ",c);
}
printf("\n");
}
/*************************************************************************
定义一个对下一步操作判断的函数
*************************************************************************/
int choose()
{
int v;
printf("请选择您的下一步操作   1->继续 0->退出\n");
scanf("%d",&v);//用户的选择
if(v==1)
{
show();//选1为继续,重新加载主页面
return 0;
}
if(v==0)
{
printf("欢迎您的再次使用!");//选0直接退出程序
return 0;
}
else
{
show();
return 0;
}

}
/*************************************************************************
定义条例说明函数
*************************************************************************/
void tl()
{
system("cls");//清屏,重新加载页面
long long i,time;
int k,m,j,v,l,t=0,p;
char b[130]={"故本机将你的账户余额清零!!"};//14个字符
char a[300]="警告由于您对于本机太不尊重了!!!";//17个字符
for(i=1;i<=40;i++)//条例阅读界面显示
{
printf("**");
}
printf("\n\n");
for(i=1;i<=20;i++)//使字体居中,
{
printf("  ");
}
printf("条     例\n\n\n");
for(i=1;i<=40;i++)//条例阅读界面显示
{
printf("**");
}
printf("\n\n\n");
for(i=1;i<=9;i++)//使字体居中,
{
printf("  ");
}
printf("1:本机知道你是有智慧的人,请不要多次戏弄本机!\n\n");//条例一
for(i=1;i<=9;i++)//使字体居中,
{
printf("  ");
}
printf("2:除上述1、2、3选项,请不要输入其他违法指令\n\n");//条例二
for(i=1;i<=9;i++)//使字体居中,
{
printf("  ");
}
printf("3:存取款时请不要输入非法金额,不然会让他人觉的你很智障!!!\n\n");//条例三
for(i=1;i<=9;i++)//使字体居中,
{
printf("  ");
}
printf("4:你的钱在我手里!!在我手里!!在我手里!!\n\n\n\n\n"); //条例四
for(i=1;i<=40;i++)//条例阅读界面显示
{
printf("**");
}
printf("\n\n");
for(i=1;i<=3;i++)//三次,使用户确定选择三次
{
t = 0;
for(j=1;j<=12;j++)//使字体居中,
{
printf("  ");
}
printf("你确定看仔细了!!!   1->确定 0->不确定\n");
scanf("%d",&k);//用户的选择
if(k==1)//选择1,继续执行,直到满三次
{
continue;
}
else if(k==0)//选择0,打印警告
{
for(j=1;j<=12;j++)//使字体居中,
{
printf("  ");
}
printf("不确定也没用!!!继续给我看!!\n");
}
else//用户输入非提示操作,由t来标志
{
t = 1;
break;
}
}
if(t==1)//t值为1,表示如果用户在阅读条例时输入违法操作
{
printf("\n\n\n\n\n\n\n\n\n\n\n\n");
system("cls");//先清屏,留以空间警告
printf("\n\n\n\n\n\n\n\n");
for(i=1;i<=15;i++)//使字体居中,
{
printf("  ");
}
printf("搁这你也不老实是吧!\n");
for(i=1;i<=1500000000;i++);//时间延迟
{
}
for(v=1;v<=5;v++)//警告显示,闪烁5次
{
system("cls");//每次闪烁后都需要清屏
for(i=1;i<=300000000;i++);//时间延迟
printf("\n\n\n\n\n\n\n\n");
for(i=1;i<=20;i++)//使字体居中,
{
printf("  ");
}
printf("警告!!\n");
for(i=1;i<=15;i++)//使字体居中,
{
printf("  ");
}
printf("本机将你的账户余额清零!!\n");
for(i=1;i<=15;i++)//使字体居中,
{
printf("  ");
}
printf("本机将你的账户余额清零!!\n");
for(i=1;i<=15;i++)//使字体居中,
{
printf("  ");
}
printf("本机将你的账户余额清零!!\n");
for(i=1;i<=300000000;i++);
}
system("cls");
printf("\n\n\n\n\n\n\n\n\n");
for(i=1;i<=16;i++)//使字体居中,
{
printf("  ");
}
printf("怕了吧,怕就不要那么作了!\n\n\n\n\n");
for(i=1;i<=2000000000;i++)
{
}
}
/****************************************************
说明,本段代码本想使汉字一个一个出来。。可是汉字在
数组中的存储好像是两个空间存一个字。。。出不来效果
****************************************************
for(v=0;v<34;v=v+2)//变量V每增加一次,便多输一个字
{
system("cls");//每次多输一个字便清屏
printf("\n\n\n\n\n\n\n\n\n\n\n\n");
for(i=1;i<=10;i++)//使字体居中,
{
printf("  ");
}
for(i=0;i<v;i++)//变量v与i相结合,达到每次多输出一个字的效果
{
printf("%c ",a[i]);
for(time=1;time<=500000000;time++);//
{
}
}
}
for(v=0;v<28;v=v+2)//这个for循环的效果和上一个一样,只不过输出的句子不一样
{
system("cls");
printf("\n\n\n\n\n\n\n\n\n\n\n\n");
for(i=1;i<=10;i++)//使字体居中,
{
printf("  ");
}
for(i=0;i<v;i++)
{
printf("%c ",b[i]);
for(time=1;time<=500000000;time++);
{
}
}
}
*/
}
/*************************************************************************
正式的主函数来了
*************************************************************************/
int main()
{
long long q;
char n1;
//freopen("data.in", "r", stdin);
//freopen("data.out", "w", stdout);
int money,n,sum,change;//变量sum用来存储非法操作次数
money = 0;//记录存储用户的存款金额
sum = 0;//记录存储用户非法操作的次数
show();//初次打印主界面
while(1)
{
scanf("%s",&n1);
if(n1>='0'&&n1<='3')
{
n=n1-'0';
}
else
{
printf("请输入正确操作!!!小熊孩子不要作!!!\n");
sum++;
choose();
}
if(n==1)//客户选择服务一
{
change = money;//change该变量把钱数保存下来
money = money+cunkuan();
if(change==money)//如果操作前后money值未改变,表明该用户进行非法操作
{
sum++; //非法操作次数增加一次
}
else
{
printf("存款成功!您的账户余额为:%d\n\n\n",money);
}
choose();//进行完本次操作后进行选择
}
else if(n==2)//客户选择服务二
{
change = money;
money = qukuan(money);
if(change==money)//如果操作前后money值未改变,表明该用户进行非法操作
{
sum++;//非法操作次数增加一次
}
else
{
printf("取款成功!您的账户余额为:%d\n\n\n",money);
}
choose();//进行完本次操作后进行选择

}
else if(n==3)//客户选择服务三
{
printf("您的余额为:%d\n",money);
choose();//非法操作次数增加一次
}
else if(n==0)//客户服务选择四
{
printf("欢迎您的再次使用!\n");
return 0;
}
/*else if(n<0||n>3)
{
printf("请输入正确操作!!!小熊孩子不要作!!!\n");
sum++;
choose();
}*/
if(sum>=3)//用户非法输入达到三次后,就退出本系统。。。。。。额,其实还是可以改改,改个弹出个使用说明
{
printf("因为您的多次智障操作,本机不开心,本机有情绪!本机拒绝为你服务!!\n");
printf("请阅读本条例后再次使用本机\n");
for(q=1;q<=3000000000;q++)//时间延迟
{
}
tl();//用户违法操作达到三次后就出现条例阅读页面
sum = 0;
show();
}//当触发该条件后,执行完相应函数后,并没有跳出那个页面,也就是说这个while的循环并没有进行,为什么!
if(sum>0)//有非法操作的时候,自动记录打印
{
printf("警告:您已进行%d次非法操作,请注意您的操作\n",sum);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ATM2-0