<4>c语言实现ATM存取款系统(链表)
来源:互联网 发布:制作生日快乐贺卡软件 编辑:程序博客网 时间:2024/05/16 17:37
数组是比较基础的东西,真正的是要会用链表,这样灵活性更高,更方便
#include<stdio.h>#include<String.h>#include<math.h>#include<stdlib.h>#include<windows.h> #define N 100struct info {char account[30];char user[100];long dsit;long pw;struct info *next;}bank[N];/* = {{"2011021232","ouyan",10000,892968}};*/void login();void regist();int menu();int refer();int deposit();int withdraw();int transfer();int resetPW();int judgePW(long ps);int search(char *s,int psw);int searchAC(char *s);/*flagI标记当前登录账户,flagN标记当前转账的账户*/ int n = 0;struct info *pt, *head = NULL, *tail, *p0;main() {int choice = -1;while(1){printf(" 欢迎使用银行存取款系统 \n");printf("\n ================================ \n");printf(" 1.登录 \n");printf(" 2.注册 \n");printf(" 3.退出 \n");printf("\n ================================ \n");printf("\t* 请输入您的选择:");scanf("%d", &choice); switch(choice) {case 1:system("cls"); login();break;case 2:system("cls");regist();break;case 3:exit(0);break;default:printf("输入有误,请重输...\n");break;}}}////////////////////////////////////登录/////////////////////////////////////////// void login() {int i;int flag;char my_act[100];long password; int X = -1;printf("\t\t=================****登录****=================\n\n");printf("\t\t* 输入账户: ");scanf("%s", my_act);printf("\n");printf("\t\t* 输入密码: ");scanf("%ld", &password);flag = search(my_act,password);if(flag == 1) {printf("\t\t登录成功,正在跳转页面...\n"); p0 = pt;Sleep(2000);system("cls");while(1) {X = menu();//成功进入 if(X == 1) {system("cls"); menu();}else return;}}else if(flag == 0) {printf("\t\t账号或密码错误,请重新输入...\n");Sleep(2000);system("cls");return;}}int search(char *s,int psw) {if(head == NULL) {return 0;}pt = head;while(1) {if(strcmp(pt->account, s)==0&&pt->pw==psw) {return 1;}if(pt->next == NULL) break;pt = pt->next;}return 0;}int searchAC(char *s) {if(head == NULL) {return 0;}pt = head;while(1) {if(strcmp(pt->account, s)==0) {return 1;}if(pt->next == NULL) break;pt = pt->next;}return 0;}///////////////////////////////////注册////////////////////////////////////////////void regist() {printf("\t\t=================****注册****=================\n\n");struct info *p1;p1 = (struct info*)malloc(sizeof(struct info));p1->next = NULL;int flag;printf("\t\t请输入您的账户....\n");printf("\t\t");scanf("%s", p1->account);printf("\t\t请输入用户名......\n");printf("\t\t");scanf("%s", p1->user);printf("\t\t输入您的密码......\n");printf("\t\t");scanf("%ld", &p1->pw);flag = search(p1->account,p1->pw);if(flag == 1) {printf("\t\t账户已存在,请重新注册......\n");Sleep(2000);system("cls");return;}else if(flag == 0) {printf("\t\t注册成功\n");//flagN = N; //标记当前注册账户是链表中的第几个 p1->dsit = 0;if(n == 0) {head = p1;tail = p1;n ++;Sleep(2000);system("cls");return;}else {tail->next = p1;tail = p1;n ++;Sleep(2000);system("cls");return;}}}////////////////////////////////主页面////////////////////////////////////////////////int menu() {printf("\t\t=================****主页面****=================\n\n");printf("\t\t====================****************=================\n\n");printf("\t\t* 1. 查询 \n");printf("\t\t* 2. 存钱 \n");printf("\t\t* 3. 取钱 \n");printf("\t\t* 4. 转账 \n");printf("\t\t* 5. 修改密码 \n");printf("\t\t* 6. 安全退出 \n");printf("\t\t=====================================================\n\n");int choice = -1;int Y = -1;printf("\t\t *");printf("我的选择:");scanf("%d", &choice);while(1) {switch(choice) {case 1:system("cls"); Y = refer();break;case 2:system("cls"); Y = deposit();break;case 3:system("cls"); Y = withdraw();break;case 4:system("cls"); Y = transfer();break;case 5:system("cls"); Y = resetPW();break;case 6:system("cls");return 0;default:printf("输入有误,请重输...\n");return 1;}switch(Y) {case 0:printf("出现错误!\n");return 0;break;case 1: /*正常情况menu返回1重新进入menu*/ return 1;break;case 2:Y = deposit();break;case 3:Y = withdraw();break;case 4:Y = transfer();break;case 5:Y = resetPW();break;}}}/////////////////////////////////////查询///////////////////////////////////////////int refer(){printf("\t\t=================****查询****=================\n\n");printf("\t\t* 您的账户余额为:\n");printf("\t\t* %ld\n", p0->dsit);Sleep(3000);system("cls");return 1;}/////////////////////////////////////取款///////////////////////////////////////////int deposit() {long rMoney; printf("\t\t=================****存款****=================\n\n");printf("\t\t* 输入您要存入的钱数(整百):\n\n");printf("\t\t* ");scanf("%ld", &rMoney);if(rMoney%100 != 0) {printf("\t\t* 出现错误,请重试...\n\n");return 2;}p0->dsit += rMoney; printf("\t\t* 存钱成功...\n\n");Sleep(2000);system("cls");return 1;}///////////////////////////////////取款///////////////////////////////////////////int withdraw() {long omoney;printf("\t\t=================****取款****=================\n\n");printf("\t\t* 输入您要取出的钱数...\n\n");printf("\t\t* ");scanf("%ld", &omoney);if(omoney%100 != 0) {printf("\t\t* 出现错误...\n\n");Sleep(2000);system("cls");return 3;}if(omoney > p0->dsit) {printf("\t\t* 余额不足...\n\n");system("cls");return 1;}p0->dsit -= omoney;printf("\t\t* 取钱成功...\n\n");Sleep(2000);system("cls");return 1;}//////////////////////////////////转账/////////////////////////////////////////////int transfer() {struct info *pFlag;char ob[20];int key, i;long money;int flag;printf("\t\t=================****转账****=================\n\n");printf("\t\t* 请输入您要转账的账户...\n");printf("\t\t* ");scanf("%s", ob);flag = searchAC(ob);pFlag = pt;if(flag == 1) {printf("\t\t* 输入要转出的钱数(整百):\n");printf("\t\t* ");scanf("%ld", &money);if(money%100 != 0) {printf("\t\t *");printf("\t\t出现错误,请重试...\n");Sleep(2000);system("cls");return 1;}if(money > p0->dsit) {printf("\t\t* 余额不足.....\n");return 1;}p0->dsit -= money;pFlag->dsit += money;Sleep(2000);printf("\t\t* 转账成功...");Sleep(2000);system("cls");return 1;}else if(flag == 0) {printf("\t\t* 对不起,您输入的账户不存在...\n");printf("*****************请稍等*********************");Sleep(2000);system("cls");return 1;}}//////////////////////////////////修改密码////////////////////////////////////////////int resetPW(){long password1, password2;long newpassword;printf("\t\t=================****修改密码****=================\n\n");printf("\t\t* 请输入原始密码...\n\n");printf("\t\t* ");scanf("%ld", &password1);printf("\t\t* 请再次输入...\n\n");printf("\t\t* ");scanf("%ld", &password2);if(p0->pw == password1 && p0->pw == password2) {printf("\t\t* 输入新密码...\n\n");printf("\t\t* ");scanf("%ld", &newpassword);if(judgePW(newpassword) == 1) {p0->pw = newpassword;printf("\t\t* 密码重置成功...\n\n");Sleep(2000);system("cls");return 1;} else {printf("\t\t* 输入的密码不符合规则,请重试...\n");Sleep(2000);system("cls");return 5;}}else {printf("\t\t* 密码错误...\n");Sleep(2000);system("cls");return 1;}return 1;}//////////////////////////////////////密码判断////////////////////////////////////////int judgePW(long ps) {int n, k;for(k=0; k<6; k++) {n = ps%10;ps = ps/10;if(n < 0 || n > 9){return 2;}}return 1;}
- <4>c语言实现ATM存取款系统(链表)
- <1>c语言实现ATM存取款系统(数组)
- C语言实现 ATM机存取款系统
- <3>c语言实现ATM存取款系统(数组实现)
- <5>c语言实现ATM存取款系统(文件、排序)
- ATM自动存取款系统(第二版)
- 银行ATM存取款机系统
- 银行ATM存取款机系统
- 用C语言控制台程序模拟一个ATM 机存取款流程
- C语言 实现ATM系统
- c语言ATM取款机程序
- 第九章:银行ATM存取款机系统
- C#基础-031 模拟ATM机存取款系统
- 银行ATM存取款机
- 银行ATM机存取款
- ATM银行取款系统
- [c语言]模拟银行atm机,实现存款、取款等业务
- 【学习ios之路:C语言】小程序:实现类似ATM取款机功能.
- <3>c语言实现ATM存取款系统(数组实现)
- Mysql工具集——性能测试工具-MysqlBench
- lightroom使用小结八 调整作品 笔刷滤镜局部调整
- Unity使用NetworkView无法连接的一种解决方法
- lightroom使用小结九 调整作品 锐化和导出作品
- <4>c语言实现ATM存取款系统(链表)
- 2011年北京区域赛I-Activation
- 热门的网站测试工具
- 基于v4l2 ffmpeg x264的视频远程监控
- hdu 1242 &&zoj 1649 Rescue
- poj 3678 Katu Puzzle(2-sat应用)
- fatal:no bootable medium found!system halted
- hdu 1003 Max Sum 最大连续子串和
- poj 3460 Booksort(IDA*)