该实例主要练习函数的定义与函数的调用
主要涉及的语法有全局变量、循环结构(for/while),选择结构(if/switch)
功能描述:
1.输入密码(设定好),正确时进入ATM系统,密码输入错误最多3次,否则显示吞卡
2.ATM系统包括4个功能:查询余额、取款、存款、退卡
3.分别实现上述4个功能
该功能只需简单的输出函数输出首页
并利用转义字符 “\t” (水平制表符,相当于Tab)和 “\n” (换行,相当于回车)调整页面到想要的格式
void index(){
printf("\t\t\t\t\t\t 欢迎使用ATM机\n");//"\t"为制表符,在本程序中主要是用来将显示内容置于页面中间
printf("\t\t\t\t\t\t----------------------\n");
printf("\n");
printf("\t\t\t\t\t\t 中国**银行\n");
printf("\n");
printf("\t\t\t\t\t\t----------------------\n");
printf("\t\t\t\t\t\t 请插入您的银行卡\n");
system("pause");
system("cls");
}
利用if语句判断输入的密码是否与设定(这里简单的默认为123456,没有做复杂处理)一致
如一致则进入主菜单
错误显示重新输入,并设置计数器记录输入次数,大于3次则退出程序
void password(){
int password; //设置整形变量password,存储密码
int count=0; //设置计数器count,记录密码输入次数
while(count<=3){
//循环判断,控制密码输入次数最多3次
printf("\t\t\t\t\t请输入密码:");
scanf("%d",&password);
system("cls");
count++; //每输入一次密码,计数器自加1
//下面判断密码是否与设定密码相等
if(password==123456){
//相等,则说明密码输入正确,进入主菜单
menu();
break;
}
else {
//不相等,下面设计密码错误最多3次机会,否则吞卡
if(count<3){
//如果计数器不超过3,说明还有输入机会
printf("\t\t\t\t\t密码错误,还可以输入%d次\n",3-count);//剩余次数是:(总次数3)-(已经输入的次数)
printf("\t\t\t\t\t(如果密码错误超过3次,ATM机将自动吞卡)\n");
system("pause");
system("cls");
}
else{
//此时密码已经输入3次,但依然不正确,则显示吞卡
printf("\t\t\t\t\t 已吞卡!(服务热线:999999)");
break; //跳出循环,程序结束
}
}
}
}
只要选择不是“0”,则循环显示主菜单,并利用清屏函数将之前循环数次的内容清除,控制每次循环只出现一个主菜单
利用switch语句将选项对应到相应函数
void menu(){
int select;//设置整形变量select,临时存储用户选择
while(select!=0){
//如果用户选择不是0,则循环执行该菜单
printf("\t\t\t\t\t ---欢迎使用ATM机---\n");
printf("\t\t\t\t\t 1---查询余额\n");
printf("\t\t\t\t\t 2---取款\n");
printf("\t\t\t\t\t 3---存款\n");
printf("\t\t\t\t\t 0---退卡\n");
printf("\t\t\t\t\t 请输入您的选项");
scanf("%d",&select);
system("cls");
if(select!=0&&select!=1&&select!=2&&select!=3){
//判断输入的选项是否合法,不合法重新输入
printf("您输入的选项有误,请重新输入\n");
continue;//结束本次循环,开始下一次
}
//判断输入选项,相应选择对应相应函数
switch(select){
case 1:one();break;
case 2:two();break;
case 3:three();break;
}
}
//如果选择是0,则while循环停止,此时select变量中存放的是0,则调用zero()函数
if(select==0)
zero();
}
int deposit=1000;//设置变量deposit存放账户余额,该变量作用于整个系统,因此设置为全局变量
void one(){
printf("\t\t\t\t\t 您的余额为%d\n",deposit);//访问余额变量deposit,并输出
system("pause");
system("cls");
}
变量take暂存取款额
if语句判断输入值是否合法
当不合法时,while语句循环输入取款额,直到输入正确为止
合法时,改变余额(deposit-take)
void two(){
int take; //局部变量take,暂存输入的取款额
while(take>deposit||take%100!=0){
//如果输入不合法,则重新输入
printf("\t\t\t\t\t 请输入取款金额");
scanf("%d",&take);
system("cls");
if(take<deposit&&take%100==0){
//输入合法
deposit=deposit-take; //修改余额
printf("\t\t\t\t\t 请取出现金\n");
system("pause");
system("cls");
}
else{
printf("\t\t\t\t\t 输入有误\n");
printf("\t\t\t\t\t 请重新输入\n");
system("pause");
system("cls");
}
}
}
变量save暂存存款额
if语句判断输入值是否合法
当不合法时,while语句循环输入存款额,直到输入正确为止
合法时,改变余额(deposit+save)
与取款函数套路一致
void three(){
int save; //局部变量save,暂存输入的存款额
while(save%100!=0){
//如果输入不合法,则重新输入
printf("\t\t\t\t\t 请输入存款金额");
scanf("%d",&save);
system("cls");
if(save%100==0){
//输入合法
deposit=deposit+save; //修改余额
printf("\t\t\t\t\t 将现金放入存款口\n");
system("pause");
system("cls");
printf("\t\t\t\t\t 存款成功\n");
system("pause");
system("cls");
}
else{
printf("\t\t\t\t\t 输入有误\n");
printf("\t\t\t\t\t 请重新输入\n");
system("pause");
system("cls");
}
}
}
void zero()
{
printf("\t\t\t\t\t 欢迎您再次使用中国**银行\n");
}
int main(){
index();
password();
return 0;
}
1.system()函数用来调用系统命令
system(“pause”);(起暂停作用,不用的话会导致输出结果一闪而 过,继续之后的命令)
system(“cls”); (起清屏作用)
2.之前上课时老师教的main()函数是void型,也一直都是这样用。但最近看到一个网课上的老师说:main()函数系统调用结束后要返回一个值给操作系统,所以c99标准规定main()函数必须定义成int型,所以我就把程序改了过来*(对main()函数定义成int型有疑问的同学可以参考这条)*
如发现文章有误,请各大佬们不吝赐教