【C语言学习】编写银行存取款机——基础小白练习应用
2019-07-30 本文已影响0人
榆野铃爱
心得感悟
纸上得来终觉浅,绝知此事要躬行。学过的C语言都忘得差不多了,所以今天的课程以及任务对我来说还是很艰难的,连写scanf
都忘了加&
,语法错误层出不穷,bug一个接着一个。但是同时我也收获颇丰,上学期我基本都是照着课本敲代码,让我自己写根本无从下手,这次练习全都靠自己想出来,一次次修改完成的,十分有成就感。这个程序难易程度刚好,非常适合有一定基础的小白去提高C语言的编程能力。
1. 目的:
- 锻炼程序逻辑思维
- 熟悉基本数据类型
- 能正确地使用条件语句和循环语句
- 多加练习C语言
2. 技术
- 分析程序框架
- 完成各个程序框架部分
- 将复杂部分放入另一个函数(函数的应用)
3. 技术的使用
1. 分析程序框架
- 欢迎界面
- 要求最多输入4次密码并判断密码正误
- 管理所有功能界面
- 实现的功能:存款
- 实现的功能:取款
- 实现的功能:设置密码
- 实现的功能:退出
- 实现的功能:判断不合理输入
2. 完成各个程序框架部分
- 欢迎界面
printf("********************************************\n\n");
printf(" 欢迎使用\n\n");
printf("********************************************\n\n");
- 要求最多输入4次密码并判断密码正误
for(i=0;i<4;++i)
{
printf("\n请输入密码:");
scanf_s("%d",&inputkey);
if(inputkey == key)
{
//操作选项,提示输入
printf("1.存款\n2.取款\n3.设置密码\n4.退出\n\n请选择所需操作:");
application();
}
else
printf("密码错误!还有%d次机会!",3-i);
}
if(i==4)
printf("\n四次密码输入错误!银行卡已冻结,请联系客服!");
system("pause");
return 0;
- 管理所有功能界面
实现的功能共有四个,加上输入不合法的情况共五个,可考虑使用switch
语句进行统一管理
switch(choice){
case 1: //存款
case 2: //取款
case 3: //设置密码
case 4: //退出
default: //判断不合法情况
- 实现的功能:存款
case 1:
printf("\n请输入存款金额:");
scanf_s("%d",&new_money);
money += new_money;
printf("存款成功!余额为:%d\n",money);
printf("已返回主菜单!\n");
break;
- 实现的功能:取款
case 2:
while(1)
{
printf("\n请输入取款金额:");
scanf_s("%d",&new_money);
if(money >= new_money)
{
money -= new_money;
printf("取款成功!余额为:%d\n",money);
printf("已返回主菜单!\n");
break;
}
else
{
printf("余额不足!是否继续?Y或N:");
scanf_s("%s",&j);
if(j == 'Y')
continue;
else
printf("已返回主菜单!\n");
break;
}
}
break;
- 实现的功能:设置密码
case 3:
for(i=0;i<4;++i)
{
printf("\n请输入原始密码:");
scanf_s("%d",&inputkey);
if(inputkey == key)
{
printf("密码正确!请输入新密码:");
scanf_s("%d",&new_key1);
printf("请再入确认新密码:");
scanf_s("%d",&new_key2);
if(new_key1 == new_key2)
{
key = new_key2;
printf("密码修改成功!您的密码为:%d\n",key);
printf("已返回主菜单!\n");
break;
}
else
printf("两次密码不相同!请重新操作!\n");
printf("已返回主菜单!\n");
break;
}
else
printf("密码错误!还有%d次机会!",3-i);
}
if(i==4)
{
printf("\n四次密码输入错误!银行卡已冻结,退出系统!");
exit(0);
}
break;
- 实现的功能:退出
case 4:
printf("\n退出成功!\n\n");
break;
- 实现的功能:判断不合理输入
default:
printf("输入不合法!请重新输入:");
break;
3. 将复杂部分放入另一个函数(函数的应用)
可以看出,实现功能的代码较为复杂,且整个编码使用循环和条件语句实现,关联性较强,不好拆开,综合考虑,将整个实现功能的代码装入另一个函数,使主函数更加简洁
void application (void)
{
while(1){
scanf_s("%d",&choice);//获取输入
switch(choice){
case 1: //存款
case 2: //取款
case 3: //设置密码
case 4: //退出
default: //判断输入不合法情况
}
}
}
注意在主函数前加上函数声明,在主函数应用处调用
- 函数声明
void application (void);
- 函数调用
if(inputkey == key)
{
//操作选项,提示输入
printf("1.存款\n2.取款\n3.设置密码\n4.退出\n\n请选择所需操作:");
application();
}