好文档 - 专业文书写作范文服务资料分享网站

C语言模拟ATM机

天下 分享 时间: 加入收藏 我要投稿 点赞

scanf(\switch (choose) {

case '1': continue;//继续取款

case '2': PrintBalance(); system(\输出余额 case '3': return;//返回主函数

case '0': FreeData(); exit(0);//退出系统 default:

PR(\响铃 printf(\输入错误,请重新选择\\n\ //解决用户可能的输入错误 system(\ } } } while (1); }

/**********取款**********/ void WithdrawalOt(long money) { if (now_acc->balance < money) { }

}

PR(\响铃

PR(\您的余额不足%ld\\n\\n\system(\return;

PR(\正在处理,请稍候...\\n\now_acc->balance -= money; Save();

Log(-money, now_acc->no); PR(\取款成功\\n\\n\system(\

/**********存款**********/ void Depositing() { long money; do { PR(\请输入存款金额(50的倍数),单次存款金额不得超过20000元:\ fflush(stdin); scanf(\ if (money < 0 || money > 20000 || money % 50) {//解决输入金额为负数、超过20000、不是50的倍数的情况 PR(\响铃

}

}

PR(\输入有误,请重新输入\\n\system(\continue;

PR(\正在处理,请稍候...\\n\ now_acc->balance += money; Save();//保存账户数据 Log(money, now_acc->no);//保存存取数据 PR(\存款成功\\n\\n\ system(\ break; } while (1);

/**********保存账户信息**********/ void Save() { FILE *fp; int i = 1; char ch; if (!(fp = fopen(\ { PR(\响铃 PR(\读取帐户信息失败!accounts.txt无法打开\\n\ exit(0); }

for (Account *i = head; i; i = i->next)//写入账户信息 fprintf(fp, \ fclose(fp); }

/**********修改密码**********/ void Modifiy() { char oldpass[7], newpass1[7], newpass2[7]; do {

PR(\请输入原密码:\fflush(stdin); gets(oldpass);

if (strlen(oldpass) != 6) { PR(\密码应为6位\\n\ system(\ continue; }

if (strcmp(oldpass, now_acc->password))

{//解决密码输入有误,出于安全性的考虑,原密码输入错误时不提供返回功能 PR(\密码有误,请重新输入\\n\\n\ system(\ continue; } else break; } while (1); do { PR(\请输入六位新密码:\ fflush(stdin); scanf(\ if (strlen(newpass1) != 6) {

}

PR(\密码应为6位\\n\system(\continue;

PR(\请再次输入新密码:\fflush(stdin);

scanf(\

if (strcmp(newpass1, newpass2))

{//两次输入密码不一致时 PR(\密码不一致(输入*取消修改)\\n\ fflush(stdin); if (getchar() == '*') break; } else {//输入一致时 strcpy(now_acc->password, newpass1);//修改密码 Save();//保存用户数据 PR(\密码修改成功!\\n\\n\ system(\ break; } } while (1); }

/**********转账**********/ void Transfer() { Account* aimsite;//转入卡号在链表中的地址

long money;//转账金额 if (now_acc->balance < 50) {//当账户余额不足50时 PR(\响铃 PR(\您的余额不足50,无法转账\\n\\n\ system(\ return; } do {

char aim[17];//转入卡号

PR(\请输入转入卡/折号(16位):\fflush(stdin); gets(aim);

if (strlen(aim) != 16) {

PR(\卡号应为16位\\n\ system(\ continue; } if (!(strcmp(aim, now_acc->no))) {//解决转账双方卡号相同的情况 PR(\双方账户相同,请核对后重试(输入*取消转账)\\n\ if (getchar() == '*') return; continue; } if (aimsite = FindbyNo(aim)) break;//找到转入卡号对应信息时 else { PR(\未找到该卡号,输入*取消转账\\n\ if (getchar() == '*') return; continue; }

} while (1);

PR(\汇款目标用户名为:%s\\n\PR(\是否确认无误?(输入*确认,否则退出)\fflush(stdin);

if (getchar() != '*') return; do {

}

PR(\请输入转账金额(50的倍数):\fflush(stdin);

scanf(\

if (now_acc->balance < money) {

PR(\响铃 PR(\您的余额不足%lu,请重新输入转账金额\\n\\n\ system(\ continue; }

if (money % 50)

{//当输入金额不是50的倍数时 PR(\响铃 PR(\输入有误,请重新输入\\n\ continue; }

PR(\转账中,请稍候...\\n\ now_acc->balance -= money; aimsite->balance += money; Save();//保存账户数据 Log(-money, now_acc->no);//当前账户存取记录 Log(money, aimsite->no);//转入卡存取记录 PR(\转账成功\\n\\n\ system(\ break; } while (1);

/**********掩盖部分用户名**********/ char *CoverUpName(const char *name) { char temp[20]; strcpy(temp, name);

int words = 0;//用于存放姓名的字数 for (char* i = temp; *i; i += 2) words++;//计算姓名的字数 switch (words) {

case 2: temp[0] = '*', temp[1] = '*';//当姓名字数为2时,掩盖姓 strcpy(temp + 1, temp + 2);//消除一个*号 break; case 3: temp[2] = '*', temp[3] = '*';//当姓名字数为3时,掩盖名字中的第一个字 strcpy(temp + 3, temp + 4);//消除一个*号

C语言模拟ATM机

scanf(\switch(choose){case'1':continue;//继续取款case'2':PrintBalance();system(\输出余额case'3':return;//返回主函数case'0':FreeData();exit(0);//退出系统
推荐度:
点击下载文档文档为doc格式
6cap93iism9kcek7hm3l8mqar1rud1013hd
领取福利

微信扫码领取福利

微信扫码分享