代码实现:
#import <Foundation/Foundation.h>
// 函数声明部分
int validateInput(int num ,int min , int max);
int isCunZai(int a[] ,int b);
int isKeyRight(int keys[]);
void doAdd();
void doDelete();
void doList();
void setSecret();
int acountIndex = 0;// 账户对应的下标
int main(int argc,const char * argv[]) {
// 定义一个存储账户的数组acount
int acounts[]={147258,258147,784512,124578,852741};
//定义一个存储密码的数组key
int keys[] = {10000,10001,10086,100811,123456};
// 定义一个存储钱的数组rmb
int rmb[] = {100000 , 100000 , 100000 , 100000 , 100000};
//判断账号是否存在
//用于接收账户
int acount = 0;
// 提示输入账号
printf("Enter your acount:\n");
scanf("%d" , &acount);
if (isCunZai(acounts, acount)) {
return 0;
}
//判断密码是否正确
if (isKeyRight(keys)==1)
return 0;
// 打印面板
while (1) {
int hf = 0;
//打印面板
printf("*******************************\n");
printf("*****欢迎使用XXX银行 **********\n");
printf("***** 1、取款 2、存款 **********\n");
printf("***** 3、查看剩余金额 **********\n");
printf("***** 4、修改密码 **********\n");
printf("***** 5、退出系统 **********\n");
printf("*******************************\n");
printf("请输入1 - 5编号对应的功能:\n");
scanf("%d" , &hf);
validateInput(hf, 1, 5);
switch (hf) {
case 1:
doDelete(rmb);
break;
case 2:
doAdd(rmb);
break;
case 3:
doList(rmb);
break;
case 4:
setSecret(keys);
break;
case 5:
printf("系统退出中...\n");
printf("系统已经退出\n");
return 0;
break;
default:
printf("输入错误,请重新输入\n");
break;
}
}
return 0;
}
// 为判断输入的账号是否存在作准备
BOOL isExist(int a[] ,int b)
{
int i = 0;
while (i < 5) {
if (b == a[i]) {
return YES;
}
i++;
}
return NO;
}
// 记录账户的下标
int idx(int a[] ,int b)
{
int num = 0;
for (int i = 0; i < 5; i++) {
if (a[i] == b) {
num = i;
break;
}
}
return num;
}
// 判断账号是否在账户列表中
int isCunZai(int a[] ,int b)
{
int flag = 0;
int num = 1;
while (1)
{
// 定义变量用来接受账户
int acount = 0;
if (num == 5)
{
printf("连续5次输入错误,账户已被拉黑,系统退出中。。。");
printf("系统已经退出");
flag = 1;
break;
}
if (isExist(a, b))
{
// 记录 账号的下标 并退出循环
acountIndex = idx(a, b);
break;
}else {
num++;
}
// 提示输入账号
printf("Enter your acount:\n");
scanf("%d" , &acount);
}
return flag;
}
// 判断密码是否正确
int isKeyRight(int keys[])
{
int key = 0 , num1 = 1 ,q=0;
while (1) {
// 提示输入密码
printf("Enter your key:\n");
scanf("%d" , &key);
if (num1 == 3) {
printf("24小时内禁止操作该卡!");
q=1;
break;
}
if (key == keys[acountIndex]) {
break;
} else {
printf("你还剩余%d次机会\n" , 3 - num1);
num1++;
}
}
return q;
}
//判断编号是否合法
int validateInput(int num ,int min , int max){
if (num < min || num > max) {
printf("非法的输入!\n");
return 1;
}
return 0;
}
// 存款
void doAdd(int rmb[])
{
int rmb1 = 0;
printf("你选择的是存款\n");
printf("请输入存款金额\n");
scanf("%d" , &rmb1);
rmb[acountIndex] += rmb1;
}
// 取款
void doDelete(int rmb[])
{
int rmb1 = 0;
printf("你选择的是取款:\n");
printf("请输入取款金额:\n");
scanf("%d" , &rmb1);
rmb[acountIndex] -= rmb1;
}
// 查剩余金额
void doList(int rmb[])
{
printf("你选择的是查看余额:\n");
printf("账户所剩金额为: %d\n",rmb[acountIndex]);
}
// 修改密码
void setSecret(int keys[])
{
int key = 0;
int num = 0;
printf("你选择的是修改密码:\n");
printf("请输入新的密码:\n");
scanf("%d" , &key);
printf("你确认要修改密码么? 1.确认 2.取消\n");
scanf("%d" , &num);
if (num == 1) {
keys[acountIndex] = num;
}
}
试运行结果: