第一范文网 - 专业文章范例文档资料分享平台

C语言模拟ATM机

来源:用户分享 时间:2025/5/24 13:44:13 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

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);//消除一个*号 break; default:

temp[0] = '*', temp[1] = '*', temp[2] = '*', temp[3] = '*';//姓名字数大于3时,掩盖姓和名字中的第一个字 strcpy(temp + 2, temp + 4);//消除两个*号 } return temp; }

/**********释放链表空间**********/ void FreeData() { Account* t; while (head) { t = head; head = head->next; free(t); } }

搜索更多关于: C语言模拟ATM机 的文档
C语言模拟ATM机.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c32ock29coh02ra61x73m28mwx1483k01cwv_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top