c语言Atm的简单实现

合集下载

C语言 ATM 程序设计

C语言 ATM 程序设计

C语言 ATM 程序设计概述:本文将详细介绍如何使用C语言设计一个简单的ATM(自动取款机)程序。

ATM程序的主要功能包括用户登录、查询余额、取款、存款和退出等。

1. 用户登录:用户需要输入正确的账户号码和密码才干成功登录。

账户号码和密码可以存储在一个预定义的用户数据库中。

用户输入账户号码和密码后,程序将验证其有效性并赋予相应的登录状态。

2. 查询余额:用户成功登录后,可以选择查询余额。

程序将从用户数据库中获取用户的余额信息并显示在屏幕上。

3. 取款:用户成功登录后,可以选择取款。

用户需要输入取款金额,程序将验证用户账户余额是否足够。

如果余额足够,则扣除相应金额并更新用户数据库中的余额信息;如果余额不足,则提示用户余额不足。

4. 存款:用户成功登录后,可以选择存款。

用户需要输入存款金额,程序将将其加到用户账户的余额中,并更新用户数据库中的余额信息。

5. 退出:用户可以选择退出程序。

退出前,程序将提示用户是否确认退出,并根据用户的选择执行相应的操作。

6. 错误处理:程序需要对用户的输入进行错误处理。

例如,当用户输入错误的账户号码或者密码时,程序应该赋予相应的错误提示;当用户输入非法金额时,程序应该赋予相应的错误提示。

7. 数据存储:程序需要使用文件或者数据库来存储用户的账户信息和余额信息。

可以使用文本文件、二进制文件或者关系型数据库等。

8. 用户界面:程序需要提供一个友好的用户界面,以便用户能够轻松地进行操作。

可以使用控制台界面或者图形界面,根据需要选择合适的界面设计。

9. 安全性:程序需要确保用户的账户信息和余额信息的安全性。

可以使用加密算法来加密用户的密码,在存储和传输过程中保护用户的隐私。

10. 测试和调试:在完成程序的编写后,需要进行充分的测试和调试,以确保程序的稳定性和正确性。

可以编写测试用例,并对程序进行单元测试和集成测试。

总结:本文详细介绍了使用C语言设计一个简单的ATM程序的要求和功能。

C语言ATM自动存取款机全套代码

C语言ATM自动存取款机全套代码

C语言ATM自动存取款机全套代码#include#include#include#include#include#define N 6char b[N]={'8','8','8','8','8','8'};//存放密码int money=5000;int securitytime=3;void Login();void JieMian();void SaveMoney();void GetMoney();void Query();void Return();//密码验证函数,验证成功返回1,否则返回0void Login(){char a[20],ch; //用户登录密码,用以验证int i=0,n=1,k;printf("\n\t\t欢迎使用ICBC ATM自动存取款机\n"); printf("\n请输入密码:");for(n=1;n<=5;n++){while((a[i]=getch())!=13){ i=i+1;printf("*");//将用户输入的密码以*显示}for(k=0;k<6;k++)if(a[k]!=b[k]) break;if (k==6){printf("\n密码正确,请继续!!\n");JieMian(); }else//printf("\n密码错误,请重新输入:\n");printf("\n密码错误,您还有%d次机会,请重新输入:\n",5-n);}printf("\n您已经输入5次错误,您的卡将被没收,请去相关网点办理!\n");exit(1);}// 界面设计void JieMian(){int SelectKey;//system("cls");//清屏幕函数while(1){puts("\n= = = = = = = = = = = = = = = =");puts("| 请选择相应功能: |");puts("| 1. 修改密码PassWord |");puts("| 2. 查询功能Query |");puts("| 3. 取款功能Get Money |");puts("| 4. 存款功能Save Money | ");puts("| 5. 转帐功能Trans Money | ");puts("| 6. 退出功能Return | ");puts("\n= = = = = = = = = = = = = = = = ");printf("\n请选择功能:");scanf("%d",&SelectKey);switch(SelectKey){ case 1:printf("\n修改密码功能\n");//PassWord();break;case 2:printf("\n查询功能\n");Query();break;case 3:printf("\n取款功能\n");GetMoney();break;case 4:printf("\n存款功能\n");SaveMoney();break;case 5:printf("\n转帐功能\n");//Trans();break;case 6:printf("\n退出功能\n");Return();break;}}}/*Query查询功能*/void Query(){system("cls");puts("================================== ==");printf("| Your Query balance is $%ld |\n",money);puts("| Press any key to return... |");puts("================================== ==");return;}/*GetMoney取钱功能*/void GetMoney(){char GetMoney;char kahao[20];long y;//输入待转入的相关信息//卡号,姓名do{puts("=================================");puts("| Please select GetMoney: |");puts("| 1. $100 |");puts("| 2. $200 |");puts("| 3. other |");puts("| 4. Return |");puts("=================================");GetMoney = getch();}while(GetMoney!='1'&&GetMoney!='2'&&GetMoney!='3' && GetMoney!='4');switch(GetMoney){case '1':system("cls");if(money>100){puts("================================== =========");puts("| Your GetMoney is $100,Thank you! |");puts("| Press any key to return... |");puts("===========================================");money=money-100;printf("\n您的余额为%d",money);}else printf("\n您的余额不足!");getch();break;case '2':system("cls");if(money>200){puts("================================== ======");puts("| Your GetMoney is $200,Thank you! |");puts("| Press any key to return... |");puts("================================== ======");money=money-200;printf("\n 您的余额为%d",money);}else printf("\n您的余额不足!");getch();break;case '3':system("cls");printf("please get some money:");scanf("%ld",&y);if(money>y){money=money-y;printf("\n您的余额为%d",money);}else{printf("\n您的余额不足!");printf("\n您的余额为%d",money);}getch();break;case '4': break;}return;}/*SaveMoney存钱功能*/void SaveMoney(){ char SaveMoney;long y;do{system("cls");puts("================================== ========");puts("| Please select Save Money: |");puts("| 1. $100 |");puts("| 2. $500 |");puts("| 3. $1000 |");puts("| 4. other |");puts("| 5. Return |");puts("================================== ========");SaveMoney = getch();}while(SaveMoney!='1'&&SaveMoney!='2'&& SaveMoney!='3'&&SaveMoney!='4'&&SaveMoney!='5');switch(SaveMoney){ case '1':{{system("cls");puts("================================== =========");puts("| Your save money is $100,Thank you! |");puts("| Press any key to return... |");puts("================================== ========");}money=money+100;printf("\n您的余额为%d",money);getch();}break;case '2':{system("cls");puts("================================== ============");puts("| Your Save Money is $500,Thank you! |");puts("| Press any key to return... |");puts("================================== ============");money=money+500;printf("\n您的余额为%d",money);getch();}break;case '3':{system("cls");puts("============================================");puts("| Your Save Money is $1000,Thank you! |");puts("| Press any key to return... |");puts("================================== ==========");money=money+1000;printf("\n您的余额为%d",money);getch();}break;case '4':{system("cls");puts("================================== ===========");puts("| Your Save some Money,Thank you! |");puts("| Press any key to return... |");puts("================================== ===========");puts("please save some money:");scanf("%ld",&y);if(y%100!=0)printf("该存款机只能处理整百的操作,请核查!!");else{money=money+y;printf("\n您的余额为%d",money);}getch();}break;case '5':break; }return;}/*Return,退出功能*/void Return(){system("cls");puts("================================== ==");puts("| Thank you for your using! |");puts("| RETURN! |");puts("================================== ==");exit(1);}//主函数int main(){Login();}上一页下一页。

c语言Atm的简单实现

c语言Atm的简单实现

信息科学与工程学院《数据结构》课程设计报告课程设计名称: ATM得设计与实现专业班级:学生姓名:学号: 2指导教师:课程设计时间:2016-2017学年第二学期计算机科学与技术专业课程设计任务书目录1 需求分析 (1)1、1存款 (1)1、2取款 (1)1、3查瞧流水账 (1)1、4排序 (1)1、5修改密码 (2)1、6查瞧ATM使用情况 (2)1、7录入信息 (2)1、8恢复限额 (2)2概要设计 (3)2、1数据类型得定义 (3)2、2功能模块结构图 (4)3运行环境 (6)4开发工具与编程语言 (6)5详细设计 (6)5、1主函数 (7)5、2 录入函数 (8)5、3加载与存储函数 (8)5、4 输出流水账函数 (9)5、5 查瞧ATM使用情况函数 (9)6程序编码 (10)7运行结果 (12)8心得体会 (14)9参考文献 (14)1需求分析ATM自助机——便于储户存钱、取钱。

按功能分为两大系统:个人用户系统与银行后台系统;个人用户系统————登录(输入正确得账号或密码才能进入)、存款、取款、查瞧流水账(查瞧用户最近存取款情况)、排序(此为超级用户功能,可以查瞧所有人得余额)、修改密码(修改个人登录密码);银行后台系统————atm使用情况(便于银行人员管理atm机)、录入信息(包括录入用户及其银行卡号信息与录入atm 信息)、恢复限额(每天6点恢复所有人得取款上限)。

1、1存款输入金额,存入ATM,当前AMT以及自己得余额会增加并且自动生成流水账。

1、2取款输入取款金额,判断它就是否小于ATM总金额并且小于当天得限额,当前得ATM金额减少,自己得余额与限额也会减少。

1、3查瞧流水账输出自己近段时间内得所有操作,发生额,以及时间。

1、4排序此为超级用户功能,实现以余额对所有用户排序并且输出一些信息。

1、5修改密码修改用户登录密码。

1、6查瞧ATM使用情况查瞧每一台ATM得使用情况,输出存取款发生额及其次数。

用c语言编写的一个ATM取款机程序

用c语言编写的一个ATM取款机程序

⽤c语⾔编写的⼀个ATM取款机程序学了⼀个多星期的c语⾔了,⽼师布置来了作业,⽤C编写个ATM机的模拟程序,客户界⾯有,取款,2存款,3转账,4退出。

并且要求输⼊错误后,有三次机会重输,定义输⼊密码hellowold,⽤switch分⽀。

#include<stdio.h>#include<string.h>#define key "hellowold"//定义密码#define zhanghu "123456789"#define line "==================\n"int num;//选择类型char arr[20];//定义数组char password[20];//定义数组int money;//取款⾦额int i=0;int main(){printf(line);printf("\t1取款\n");printf("\t2存款\n");printf("\t3转账\n");printf("\t4退出\n");printf(line);printf("请选择操作类型: \n");scanf("%d",&num);switch(num){case1:{ do{printf("请输⼊密码:\n");scanf("%s",&password);if(strcmp(key,password)==0){printf("请输⼊取款⾦额:\n");scanf("%d",&money);printf("请取⾛你的%d⽑爷爷",money);break;}else{printf("密码输⼊错误");}i++;}while((strcmp(key,password)!=0)&&i<=2);}}第⼆步存款,定义账号#include<stdio.h>#include<string.h>#define key "hellowold"//定义密码#define zhanghu "#define other "ni de mao ye ye"#define line "==================\n"int num;//选择类型char arr[20];//定义数组char password[20];//定义数组char others[20];int money;//取款⾦额int num2;//存款⾦额int i=0;int main(){printf(line);printf("\t1取款\n");printf("\t2存款\n");printf("\t3转账\n");printf("\t4退出\n");printf(line);printf("请选择操作类型: \n");scanf("%d",&num);switch(num){case1:{ do{printf("请输⼊密码:\n");scanf("%s",&password);if(strcmp(key,password)==0){printf("请输⼊取款⾦额:\n");scanf("%d",&money);printf("请取⾛你的%d⽑爷爷",money);break;}else{printf("密码输⼊错误");}i++;}while((strcmp(key,password)!=0)&&i<=2);break;}今天先变到这⾥吧,作业还多着了,排版不是很好看,就将就这看吧。

C语言模拟ATM机的编写程序

C语言模拟ATM机的编写程序

C语言模拟ATM机的编写程序#include <stdio.h>void main(){long int a,b,c,d,e,f,g,k,l,m,n,o,p,h;n=0;h=10000;k=123456;loop0: printf("\t\t\t欢迎使用中国邮政ATM取款机!\n\n");printf("请插入你的银行卡,并输入你的密码,三次密码输入错误,将终止程序:\n");scanf("%ld",&l);if(k==l){loop1: printf("请输入你选择的操作类型:\n");printf("请输入0-4进行选择:\n");printf("1:<转账>\t2:<查询>\t3:<取款>\t4:<修改密码>\t0:<取卡>\n");scanf("%ld",&a);switch(a){case 1: printf("请输入转账账号:\n");scanf("%d",&o);printf("请输入你需要转账的金额:\n");scanf("%d",&p);printf("请输入你选择的操作类型:\n");printf("请输入0或1进行选择:\n");printf("1:<确认>\t0:<返回>\n");h=10000-p;scanf("%ld",&b);switch(b){case 1:printf("\n转账%d元人民币成功!\n\n",p);goto loop1;break;case 0:goto loop1;break;default :printf("\n无此操作项!\n\n");goto loop1;}break;loop4:case 2:printf("请输入你选择的操作类型:\n");printf("请输入0-2进行选择:\n");printf("1:<查询余额>\t2:<查询明细>\t0:<返回>\n");scanf("%ld",&c);switch(c){case 1:printf("\n你的余额为:%5d\n\n",h);goto loop1;break;case 2:printf("\n你的账单为:******。

c语言atm机编程代码

c语言atm机编程代码

c语言atm机编程代码下面是一个简单的C语言ATM机编程代码示例:#include <stdio.h>// ATM机账户结构体typedef struct {int account_number;float balance;} Account;// 初始化账户信息void init_account(Account *account, int acc_no, float bal) { account->account_number = acc_no;account->balance = bal;}// 存款void deposit(Account *account, float amount) {account->balance += amount;}// 取款void withdraw(Account *account, float amount) {if (account->balance >= amount) {account->balance -= amount;} else {printf("余额不足!\n");}}// 查询余额void check_balance(Account *account) {printf("当前余额:%.2f\n", account->balance); }// 主函数int main() {Account my_account;int choice;float amount;// 初始化账户信息init_account(&my_account, 123456789, 5000.0);// ATM机操作菜单printf("欢迎使用ATM机!\n");printf("请选择操作:\n");printf("1. 存款\n");printf("2. 取款\n");printf("3. 查询余额\n");printf("0. 退出\n");do {printf("请输入操作代码:");scanf("%d", &choice);switch (choice) {case 1:printf("请输入存款金额:");scanf("%f", &amount);deposit(&my_account, amount); break;case 2:printf("请输入取款金额:");scanf("%f", &amount);withdraw(&my_account, amount); break;case 3:check_balance(&my_account);break;case 0:printf("退出程序!\n");break;default:printf("无效的操作!\n");}} while (choice != 0);return 0;}。

C语言ATM机代码,简单版。

C语言ATM机代码,简单版。

C语⾔ATM机代码,简单版。

#include <stdio.h>void main(){int i,j;int code=0,flag=0;int choice1=0,choice2=0,choice3=0;int RMB=100000,WB=100000;int cash1=0,cash2=0;char instruct='n';printf("************************************************************\n");printf("* *\n");printf("* *\n");printf("* 欢迎使⽤怪精 ATM取款机 *\n");printf("* *\n");printf("* 监制: rain version number:1.0.1 *\n");printf("* *\n"); printf("* *\n"); printf("************************************************************\n");printf("请键⼊您的密码:\n"); /*密码为9527*/for(i=0;i<3;i++){scanf("%d",&code);system("cls");if(code==9527){break;}if(code!=9527){printf("密码有误!请重新输⼊:\n");flag+=1;}}if(flag==3){printf("密码错误超限,请回去⾯壁思过,再见!");return;}while(instruct=='N'|| instruct=='n' ){if(code==9527){printf("请选择您所需服务!\n");printf("1.查询余额 2.取款 3.退出");scanf("%d",&choice1);system("cls");switch(choice1){case 1:printf("1.⼈民币 2.外汇");scanf("%d",&choice2);system("cls");switch(choice2){case 1:printf("您的⼈民币账户余额:¥%d\n",RMB);break;case 2:printf("您的外币账户余额:$%d\n",WB);break;}break;case 2:printf("1.⼈民币 2.外币");scanf("%d",&choice3);system("cls");switch(choice3){case 1:printf("请输⼊取款⾦额:\n");scanf("%d",&cash1);RMB=RMB-cash1;printf("您的账户余额为:¥%d\n",RMB); break;case 2:printf("请输⼊取款⾦额:\n");scanf("%d",&cash2);WB=WB-cash2;printf("您的账户余额为:$%d\n",WB); break;}break;case 3:break;}printf("是否退出程序<y表⽰是,n表⽰否>:"); scanf("%s",&instruct);}}}。

c语言银行自动存取款机模拟

c语言银行自动存取款机模拟

C语言银行自动存取款机模拟介绍本文档将介绍如何使用C语言编写一个简单的银行自动存取款机模拟程序。

该程序可以模拟银行客户进行存款和取款操作,并实时更新账户余额。

功能此银行自动存取款机模拟程序具有以下功能:•登录功能:用户可以输入账号和密码进行登录。

•存款功能:用户可以输入存款金额进行存款,存款成功后会更新账户余额。

•取款功能:用户可以输入取款金额进行取款,取款成功后会更新账户余额。

•查询余额功能:用户可以查看账户余额。

•退出功能:用户可以选择退出程序。

程序设计数据结构在程序中,需要定义一个结构体来表示银行客户的账户信息。

每个账户包含账号、密码和余额:struct Account {int accountNumber;char password[20];double balance;};登录功能首先,用户需要输入账号和密码进行登录。

可以定义一个函数来实现登录功能:int login(struct Account *accounts, int numAccounts, int accountNumber, char *password) {for (int i = 0; i < numAccounts; i++) {if (accounts[i].accountNumber == accountNumber && strcmp(accounts[i].password, password) == 0) {return i; // 返回账号在数组中的索引}}return -1; // 登录失败,返回-1}存款和取款功能存款和取款功能可以分别定义两个函数来实现。

存款函数会增加账户余额,取款函数会减少账户余额。

```c void deposit(struct Account *account, double amount) { account->balance += amount; }void withdraw(struct Account *account, double amount) { if (account->balance >= amount) { account->balance -= amount; printf(。

c语言atm机的编程

c语言atm机的编程

C语言ATM机的编程1. 简介ATM(Automated Teller Machine)机是一种自动提款机,它能够为用户提供多种服务,如取款、存款、查询余额、转账等。

本文将介绍如何使用C语言编写一个简单的ATM机程序。

2. 功能需求我们的ATM机程序需要实现以下功能: 1. 用户登录:用户可以输入正确的账号和密码进行登录。

2. 查询余额:用户登录成功后可以查询账户余额。

3. 存款:用户登录成功后可以存入指定金额到账户中。

4. 取款:用户登录成功后可以从账户中取出指定金额。

5. 转账:用户登录成功后可以将指定金额转入其他账户。

3. 程序设计我们将使用结构体来表示用户信息及其相关操作。

首先定义一个结构体User,其中包含用户名、密码和余额三个字段:typedef struct {char username[20];char password[20];double balance;} User;接下来,我们需要实现几个函数来完成不同的操作。

首先是登录函数login():int login(User* users, int numUsers) {char username[20];char password[20];printf("请输入用户名: ");scanf("%s", username);printf("请输入密码: ");scanf("%s", password);for (int i = 0; i < numUsers; i++) {if (strcmp(username, users[i].username) == 0 && strcmp(password, users[i].password) == 0) {printf("登录成功!\n");return i; // 返回用户索引}}printf("用户名或密码错误!\n");return -1; // 登录失败}登录函数会提示用户输入用户名和密码,并与已有的用户信息进行匹配。

C语言实现ATM系统程序的完整代码

C语言实现ATM系统程序的完整代码

C语⾔实现ATM系统程序的完整代码实现效果如图:代码如下:#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>//开户信息typedef struct _Person{char name[20];char account[20];char password[7];float money;}Person;//结点typedef struct _Node{Person P; //客户struct _Node* next;}Node;Node* HeadNode = NULL;//链表头/*----------------函数--------------------*/void Login();void Menu();void Register();void LoginMenu(Node* pNode);void FindAccount(Node* pNode);void DrawMoney(Node* pNode);void Deposit(Node* pNode);void Transfer(Node* pNode);void LoginMenu(Node* pNode);//主菜单void Menu(){printf("\n\t\t\t欢迎进⼊ATM银⾏管理系统\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");}//注册void Register(){Node* NewNode = (Node*)malloc(sizeof(Node));NewNode->next = NULL;NewNode->P.money = 0;printf("请输⼊您的名字:");scanf("%s", NewNode->);printf("请输⼊您的密码:");scanf("%s", NewNode->P.password);char Password[7];printf("请再次输⼊您的密码:");scanf("%s", Password);for (int i = 1; i < 4; i++){if (strcmp(NewNode->P.password, Password) != 0){printf("您输⼊的密码有误,还有%d次机会.\n", 3 - i);printf("请再次输⼊您的密码:");scanf("%s", Password);}else{srand((unsigned int)time(NULL));sprintf(NewNode->P.account, "%d%d%d%d%d", rand() % 9000 + 1000, rand() % 9000 + 1000, rand() % 9000 + 1000, rand() % 9000 + 1000, rand() % 900 + 100);//头插法if (HeadNode == NULL){HeadNode = NewNode;}else{NewNode->next = HeadNode;HeadNode = NewNode;}printf("\n\n\n\n\t\t\t\t恭喜你已经成功注册账户,以下是您的账户信息.\n");printf("\t\t\t\t姓名:%s\n", NewNode->);printf("\t\t\t\t账户:%s\n", NewNode->P.account);printf("\t\t\t\t余额:%.2f\n", NewNode->P.money);getch();return 1;}}printf("您的账号已被锁定,请稍后再试.");return 1;}//取款void DrawMoney(Node* pNode){Node* mNode = pNode;float Money = 0;printf("欢迎进⼊ATM银⾏管理系统\n");printf("请选择你取款⾦额\n");printf("100\t\t2000\n");printf("500\t\t5000\n");printf("10000\t\t其他⾦额\n");scanf("%f", &Money);mNode->P.money = mNode->P.money - Money;return mNode;}//存款void Deposit(Node* pNode){Node* mNode = pNode;float Money = 0;printf("请存取您的⾦额:");scanf("%f", &Money);mNode->P.money = mNode->P.money + Money;return mNode;}//转账void Transfer(Node* pNode){Node* TNode = HeadNode;char Account[20];printf("请输⼊转账的号码:");scanf("%s", Account);while (TNode != NULL){if (strcmp(TNode->P.account, Account) != 0){TNode = TNode->next;continue;}else{float Money = 0;printf("请输⼊您要转账的⾦额:");printf("100\t\t2000\n");printf("500\t\t5000\n");printf("10000\t\t其他⾦额\n");scanf("%f", &Money);TNode->P.money = TNode->P.money + Money;pNode->P.money = pNode->P.money - Money;return 1;}}return 1;}//登录菜单void LoginMenu(Node * pNode){while (1){printf("欢迎进⼊ATM银⾏管理系统\n");printf("请选择以下服务:\n");printf("1.取款\t\t2.查询\n");printf("3.存款\t\t4.转账\n");printf("5.修改密码\t6.退出\n");char ch = getch();switch (ch){case '1':DrawMoney(pNode);break;case '2':printf("您的账户余额为:%.2f", pNode->P.money);getch();break;case '3':Deposit(pNode);break;case '4':Transfer(pNode);break;case '5':break;case '6':return 0;break;default:break;}system("cls");}}//登录void Login(){system("cls");Node* pNode = HeadNode;char P_account[20];char P_password[7];printf("请输⼊您的卡号:");scanf("%s", P_account);while (pNode != NULL){if (strcmp(P_account,pNode->P.account) != 0){pNode = pNode->next;continue;}else{for (int i = 1; i < 4; i++){printf("请输⼊您的密码:");scanf("%s", P_password);if (strcmp(P_password, pNode->P.password) != 0){printf("您输⼊的密码有误,还有%d次机会.\n", 3 - i);}else{system("cls");LoginMenu(pNode);return 1;}}printf("\n对不起,您输⼊的密码有误,请重新登录.\n");system("pause");return 1;}}return 1;}//系统帮助信息void Help(){system("cls");printf( "\n\n\n\n\t——————————-----—---——ATM系统帮助----------------------------------------\n""\t1、初始界⾯:客户插卡前或者退卡后ATM显⽰的界⾯,提⽰客户插卡操作及银⾏⼴告.\n""\t2、⾝份认证:需要客户插⼊银⾏卡后输⼊密码来验证所有权.\n""\t3、吞卡:客服若连续输⼊密码3次错误后,则将卡吞⼊ATM内.\n""\t4、账户:账户由银⾏卡的卡号、密码、银⾏系统⽤户信息组成.\n""\t5、业务操作:由查询余额、取款、存款、转账、取卡等事项组成.\n""\t6、查询余额:显⽰该账户中剩余⾦额.\n""\t7、取款:根据客户输⼊的⾦额从账户中扣除相应的⾦额,客户可以提取相应数额的现⾦.\n""\t8、存款:客户存⼊现⾦,账户根据现⾦数额增加剩余⾦额.\n""\t9、转账:客户输⼊另外⼀个账户号码和⾦额,从本账户的余额中减去该⾦额,增加到那个账号中.\n" "\t10、打印凭条:凭条由⽇期,银⾏卡的卡号,交易流⽔号组成.\n""\t11、取卡:客户取回银⾏卡.\n""\t————————————————-------------------------------------------------------\n");getch();return 1;}//查询账号void FindAccount(Node* pNode){Node* FNode = pNode;char AccountName[7];printf("请输⼊账号姓名:");scanf("%s", AccountName);while (FNode != NULL){if (strcmp(AccountName, FNode->) != 0){FNode = FNode->next;continue;}else{printf("该姓名的账户为:%s", FNode->P.account);return 1;}}printf("抱歉!该姓名未注册账号.");return 1;}int main(){system("color b0");while (1){system("cls");Menu();char ch = _getch();switch (ch){case '1':Register();break;case '2':Login();break;case '3':Help();break;case '4':FindAccount(HeadNode);getch();break;case '5':exit(0);default:break;}}return 0;}到此这篇关于C语⾔实现ATM系统程序的完整代码的⽂章就介绍到这了,更多相关c语⾔ATM系统程序内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

C语言编程银行ATM存取款系统实现源码

C语言编程银行ATM存取款系统实现源码

C语⾔编程银⾏ATM存取款系统实现源码⽬录⼀、课程设计的⽬的⼆、课程设计的题⽬三、设计内容银⾏ATM存取款系统实现的效果源码业务流程1、⽤户开户2、登录流程3、密码修改这⾥使⽤的运⾏⼯具是DEV C++。

⽼铁们⼀定要看仔细了。

是DEV C++仅供借鉴:这个是⼤⼀时期写的。

⼤四的时候整理了⼀下(本⼈C语⾔学的也不太好)。

肯定很多不⾜和存在漏洞的地⽅、仅供借鉴、仅供借鉴。

⼀、课程设计的⽬的掌握C语⾔程序设计的基础知识、基本理论、原理和实现技术。

⼆、课程设计的题⽬银⾏ATM存取款系统三、设计内容(主要技术关键的分析、解决思路和⽅案⽐较等)银⾏ATM存取款系统银⾏ATM存取款系统业务描述如下:银⾏ATM存取款系统能为⽤户提供存款、取款、查询、转账和修改密码的功能。

为了模拟真实的ATM业务环境,本系统必须实现存款、取款、查询、转账、修改密码以及开户的功能。

⽤户通过开户业务在本系统开⽴银⾏账户,之后可以通过该银⾏账户登陆ATM系统,在系统中实现存款、取款、查询账户信息、修改密码的操作。

本系统各个业务有如下注意点:(1)登陆系统⽤户登陆之前,必须在登陆界⾯输⼊其银⾏账户,通过其正确输⼊的银⾏账户登陆系统。

(2)开户业务要使⽤本系统必须⾸先执⾏开户业务开⽴新的银⾏账户,并且将此新开的银⾏存储于⽂件当中。

同时,系统以⾝份证号码作为开户的充分条件,即⼀个⾝份证号码只能开⽴⼀次银⾏账户。

(3)存款业务客户登陆系统后,选择存款业务,即可以将输⼊的存款⾦额存⼊相应的账户。

(4)取款业务客户登陆系统后,选择取款业务,即可以将输⼊的取款⾦额从相应的银⾏账户取出,但是取款⾦额必须⼤于⽬前的账户余额。

(5)查询业务客户登陆系统后,可以选择查询业务,查询账户余额。

(6)转账业务客户登陆系统后,可以选择转账业务,进⾏转账。

注意的是转账的⽬的账户必须是本系统已经存在的银⾏账户。

(7)修改密码客户登陆系统后,可以选择修改密码业务,进⾏密码修改。

ATM 机 C语言

ATM 机  C语言

//[Y2-GS1221E23-卞治华]ATM取款机#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>#include <conio.h>#include <ctype.h>#define CURU 72#define CURD 80#define CURL 75#define CURR 77#define ESC 27#define N 7void zhuCe();//注册函数void dengLu();//登陆函数void save();//保存信息void choice();//选择操作void service();//服务选择void exit();//退出系统void yangZhen();//验证函数void userInterface();//用户选择界面void choiceInterface();//选择界面void serviceChoice();//服务菜单void init();//系统初始化,将用户信息写入custom.txt的文件int login(int a,char b[]);//登录密码验证int accountJudge(int a);//用户账号验证void depositAccount();//存款界面void withdrawals();//取款界面void inquireAccount();//查询界面void transfer();//转账界面void playingGame();//猜拳游戏void wanNianLi();//万年历int isLeapYear(int m);//闰年、平年判定int days(int y,int m);//天数判定int week(int y,int m,int d);//星期判定void print(int y,int m); //自定义函数, 打印万年历int getAccount();//从系统中自动获取帐号int cash;//保存存取款金额static int t;//保存登录后用户帐号的下标,方便进行存取转操作static int s;//保存成功登录后,所要转向的用户账号的下标,方便进行转账操作struct user{int account;//用户账号char name[20];//用户姓名char passwd[7];//用户密码float creid;//用户帐户金额}custom[N]={{1000,"admin","000001",500},{1001,"bianzhihua","111111",6000},{1002,"zhangtao ","222222",3566},{1003,"jiyuan","333333",24455},{1004,"wangrui","777777",12345},{1005,"liuc ong","000000",34343}};typedef struct user USER;void main()//登录函数和验证函数我将其都放在choice()中作为界面中的一个选项{userInterface();//用户选择界面choice();//选择操作}void init()//系统初始化,将用户信息写入custom.txt的文件{FILE *fp;int i;fp = fopen("e:\\custom.txt","rw");printf("系统已启动,数据入库中……\n");for( i=0; i<N; i++ ){fwrite(&custom[i],sizeof(USER),1,fp);}save();fclose(fp);}void dengLu()//登录函数{int i=0;int result;int tempaccount;//存放用户登录卡号char temppasswd[7];//存放用户登录密码system("cls");printf("**********************************************************\n");printf("* *\n");printf("* 用户登录账号验证*\n");;printf("* *\n");printf("**********************************************************\n");do{printf("请输入您的银行卡号:");scanf("%d",&tempaccount);printf("请输入您的银行密码:");scanf("%s",temppasswd);result = login(tempaccount,temppasswd);if( result==1 ){service();break;}else{printf("第%d次登录失败!\n",i+1);}i++;}while( i<3 );if( i==3 ){system("cls");printf("********************************************************************* ****\n");printf("-->三次密码错误,卡已被吞<--\n");printf("-->请带上个人身份证件到附近最近的工商银行取卡! <--\n");printf("-->如给你造成任何不便,敬请原谅<--\n");printf("********************************************************************* ****\n");system("pause");exit(0);}}void yangZhen()//验证函数{FILE *fp;int i;fp = fopen("e:\\custom.txt","r");char tempname[20];char temppasswd[7];system("cls");printf("**********************************************************\n");printf("* *\n");printf("* 用户账号验证*\n");;printf("* *\n");printf("**********************************************************\n");printf("请输入您的用户姓名:");scanf("%s",tempname);printf("请输入您的银行密码:");scanf("%s",temppasswd);for ( i=0; i<N; i++ ){fread( &custom[i],sizeof(USER),1,fp );if( strcmp(tempname,custom[i].name)==0 && strcmp(temppasswd,custom[i].passwd)==0 ){printf("*** 系统中存在该用户! ***\n");choice();break;}}if( i==N )printf("*** 系统中没有该用户! ***\n");choice();}int login( int a,char b[] )//登录密码验证{FILE *fp;int i;fp = fopen("e:\\custom.txt","rw");for ( i=0; i<N; i++ ){fread(&custom[i],sizeof(USER),1,fp);if( (a==custom[i].account) && strcmp(b,custom[i].passwd)==0 ){t = i;//保存用户帐号的下标,方便进行存取转操作break;}}if( i== N)return 0;elsereturn 1;}void service()//服务选择{int i;system("pause");system("cls");printf(" -->恭喜您已成功登录中国工商银行自动取款机系统!<-- \n");serviceChoice();printf("\t请输入操作类型:");scanf("%d",&i);switch(i){case 1: depositAccount(); break;//存款界面case 2: withdrawals(); break;//取款界面case 3: inquireAccount(); break;//查询界面case 4: transfer(); break;//转账界面case 5: playingGame(); break;//猜拳游戏case 6: wanNianLi(); break;//万年历case 7: choice(); break;//返回default:printf("\t你所输入的选择不存在,请重新输入!\n");service();}}void save()//文件打开与否判断{FILE *fp;int i;if( (fp=fopen("e:\\custom.txt","wb")) == NULL ){printf("cannot open file\n");return;}for(i=0;i<N;i++)/*二进制写*/if( fwrite(&custom[i],sizeof(USER),1,fp) != 1 )printf("file write error\n");/*出错处理*/fclose(fp); /*关闭文件*/}void userInterface()//用户界面(ATM的开始界面){printf("**********************************************************\n");printf("** **\n");printf("* 欢迎使用中国工商银行自动取款机*\n");printf("** **\n");printf("**********************************************************\n\n"); }void choiceInterface()//界面选择{printf("***********欢迎使用中国工商银行自动取款系统***************\n"); printf("* *\n"); printf("* 1.注册*\n");printf("* 2.登录*\n");printf("* 3.验证*\n");printf("* 4.取卡*\n");printf("* *\n"); printf("**********************************************************\n");}void serviceChoice()//服务菜单{printf("**********************************************************\n");printf("* 欢迎使用中国工商银行自动取款机*\n");printf("* *\n");printf("* 1:存款*\n");printf("* 2:取款*\n");printf("* 3:查询*\n");printf("* 4:转账*\n");printf("* 5:游戏*\n");printf("* 6:万年历*\n");printf("* 7:返回*\n");printf("* *\n");printf("**********************************************************\n\n"); }void choice()//选择{system("pause");system("cls");choiceInterface();int chose;printf("请选择您所要服务的类型:");scanf("%d",&chose);printf("\n");switch(chose){case 1:zhuCe();break;//注册case 2:dengLu();break;//登录case 3:yangZhen();//验证case 4:exit();//退出default:printf("\t您所输入的数据非法,请重新选择!\n");choice();}}void exit()//退出{system("cls");printf("**********************************************************\n");printf("* *\n");printf("* 用户退出*\n");;printf("* *\n");printf("**********************************************************\n");printf("--》欢迎您下次再次使用本自动取款机《--\n");exit(0);}int getAccount()//从系统中自动获取帐号{static int account = 1005;account++;return account;}void zhuCe()//注册函数{FILE *fp;int count = 0;//记录用户密码错误次数char temppasswd2[7];fp = fopen( "e:\\custominformation.txt","a" );//向文件尾追加用户数据system("cls");printf("**********************************************************\n");printf("* *\n");printf("* 欢迎新用户注册*\n");;printf("* *\n");printf("**********************************************************\n");custom[6].account=getAccount();printf("系统自动分配给你的用户帐号为:%d\n",custom[6].account);printf("请输入你要注册帐号的用户姓名:");scanf("%s",custom[6].name);do{if( count>=1){printf("--注册账号前后密码不一致,请重新输入--\n");}printf("请输入您要注册账号的用户密码:");scanf("%s",custom[6].passwd);printf("请再次输入您要注册账号的用户密码:");scanf("%s",temppasswd2);count++;}while( strcmp(custom[6].passwd,temppasswd2)!=0 );custom[6].creid = 0;//初始帐户存款金额为0元init();choice();}void depositAccount()//存款界面{FILE *fp;int cash;fp = fopen( "e:\\custominformation.txt","rw" );system("cls");printf("**********************************************************\n");printf("* *\n");printf("* 欢迎用户存款*\n");;printf("* *\n");printf("**********************************************************\n");printf("\t请输入你所要存款的金额(元):");scanf("%d",&cash);custom[t].creid += cash;if( cash%50==0 ){printf("->存款成功:尊敬的用户%s,您账户现有余额:%.2f元<-\n",custom[t].name ,custom[t].creid);}else{system("cls");printf("*******************存款提示界面***********************\n");printf("* *\n");printf("-->本取款机只能识别并接收100元面额的人民币! <--\n");printf("* *\n");printf("******************************************************\n");system("pause");system("cls");depositAccount();}service();}void withdrawals()//取款界面{FILE *fp;fp = fopen( "e:\\custominformation.txt","w" );system("cls");printf("**********************************************************\n");printf("* *\n");printf("* 欢迎用户取款*\n");;printf("* *\n");printf("**********************************************************\n");printf("\t请输入你所要取款的金额(元):");scanf("%d",&cash);custom[t].creid -= cash;if( cash%100==0 && custom[t].creid > 0 )printf("->取款成功:尊敬的用户%s,您账户现有余额:%.2f元<-\n",custom[t].name,custom[t].creid);else if( custom[t].creid<=0 ){printf("-->您的账户余额不足,取款失败,请见谅!<--\n");custom[t].creid += cash;}else{system("cls");printf("********************取款提示界面**********************\n");printf("* *\n");printf("-->本取款机仅能取出若干100元面额的人民币<--\n");printf("* *\n");printf("******************************************************\n");system("pause");system("ClS");serviceChoice();withdrawals();}service();}void inquireAccount()//查询界面{system("cls");printf("**********************************************************\n");printf("* *\n");printf("* 账户金额查询*\n");;printf("* *\n");printf("**********************************************************\n");printf("\t尊敬的用户,你的卡上剩余金额为:%.2f元\n",custom[t].creid );service();}void transfer()//转账界面{int i = 0;int result = 0;system("cls");printf("**********************************************************\n");printf("* *\n");printf("* 转帐*\n");;printf("* *\n");printf("**********************************************************\n");do{int tempaccount1;int tempaccount2;printf("\t请输入你所要转向的账户用户编号:");scanf("%d",&tempaccount1);printf("\t请再次输入你所要转向的账户用户编号:");scanf("%d",&tempaccount2);if( tempaccount1 != tempaccount2 ){printf("\t两次输入的用户帐户不一样,请重新输入!\n");}else{result = accountJudge( tempaccount1 );//用户账号验证if( result == 1 ){while(1){printf("\t请输入您所要转帐金额:");scanf("%d",&cash);custom[t].creid -= cash;if( custom[t].creid>0 ){FILE *fp;fp = fopen( "e:\\custominformation.txt","w" );custom[s].creid += cash;printf("转账成功,你已成功向%s用户转入%d元,你账户现有余额为:%.2f元\n",custom[s].name,cash,custom[t].creid);service();}else{printf("\t您的账户余额不足,转账失败,请见谅!\n");custom[t].creid += cash;}}}else{printf("-->对不起,您所输入的用户帐号不存在!<--\n");}}i++;}while( i < 3 );if( i==3 ){printf("-->三次转账用户帐号错误,请仔细核对用户帐号后,再重新选择操作!<--\n");system("pause");}service();}int accountJudge( int a )//用户账号验证{FILE *fp;int i;fp = fopen("e:\\custom.txt","rw");for ( i=0; i<N; i++ ){fread(&custom[i],sizeof(USER),1,fp);if( a == custom[i].account ){s = i;//保存所要转向的用户账号的下标,方便进行转账操作break;}}if( i== N)//判断用户账户在不在:1-存在0-不存在return 0;elsereturn 1;}void playingGame()//猜拳游戏{system("PAUSE");//暂停system("CLS");//清屏int user;//用户出拳int machine;//机器出拳int count;//统计比赛场数int uWin; //用户出拳胜int mWin; //机器出拳胜int tie;//平局int n;//比赛场数int m;//几局胜int score[2]={0,0};//积分统计count = 0;srand( (unsigned)time( NULL ) );machine = rand()%3;printf(" *******************************\n");printf(" * 猜拳游戏*\n");printf(" * 0:剪刀1:石头2:布*\n");printf(" * 胜者:3分失败:0分平局:1分*\n");printf(" ********************************\n");printf("\n\n\t用户自定义比赛体制:\n");printf("\t比赛场数:");scanf("%d",&n);while( !(n>0) ){printf("/*所输数据非法,请重新输入比赛场数*/\n\t比赛场数:");scanf("%d",&n);}m = n/2+1;printf("\t您选择实行%d局%d胜制:\n",n,m);while( count<n ){printf("\t学生出拳:");scanf("%d",&user);while( !(user>=0 && user<=2) ){printf("/*所输数据非法,请学生重新出拳*/\n\t学生出拳:");scanf("%d",&user);}printf("\t机器出拳:%d\n",machine);if( user == machine ){printf("\t第%d局为平局!\n",count+1);score[0]++;score[1]++;}else if( user == 0 && machine == 2 || user == 1 && machine == 0 || user == 2 && machine == 1 ){printf("\t第%d局为用户赢!\n",count+1);score[0] += 3;uWin ++;}else{printf("\t第%d局为机器赢!\n",count+1);score[1] += 3;mWin ++;}count++;}if( uWin<mWin )printf("赛制(%d局%d胜制):最后胜利者是-->机器\n",n,m);else if ( uWin > mWin )printf("赛制(%d局%d胜制):最后胜利者是-->用户\n",n,m);elseprintf("赛制(%d局%d胜制):双方都是胜利者-->平局\n",n,m);printf("最后积分结果--用户:%d分,机器:%d分\n",score[0],score[1]);service();}void wanNianLi()//万年历{int month;//月份int year;//年char ch;int m[12]={0};printf("请输入所要查询的年份:");scanf("%d",&year);printf("请输入所要查询的月份:");scanf("%d",&month);do{system("cls"); //调用DOS清屏命令print(year,month); //自定义函数, 打印万年历ch = getch(); //获得无回显控制台输入字符if(ch == ESC) //ESC键,退出循环,结束程序break;else if(ch == 0) //若值为零,则用户敲了功能键,继续获取后续代码。

C语言如何实现ATM机存取款系统

C语言如何实现ATM机存取款系统

C语言如何实现ATM机存取款系统C语言如何实现ATM机存取款系统C语言利用结构体和构造函数并且采用输入输出文件实现ATM机系统。

下面是店铺为大家带来的关于C语言如何实现ATM机存取款系统的知识,欢迎阅读。

C语言如何实现ATM机存取款系统利用结构体和构造函数并且采用输入输出文件实现ATM机系统。

主要功能有:利用三种方法查询、开户、登陆、菜单、取款、修改密码、存款、转账、创建个人信息、输出、删除、增加、退出。

是一个功能齐全,完备的ATM机系统。

#include#include#includestruct per //定义结构体{char name[20];char ID[20];int money;char mima[6];struct per * next;};typedef struct person //定义另一结构体{struct per kehu;struct person *next;}L;void chaxun(struct per *head); //各个函数的声明void kaihu(struct per *head);void denglu(struct per *head);void caidan(struct per *head);void qukuan(struct per *head);void xgmm(struct per *head);void cunkuan(struct per *head);void zhuanzhang(struct per *head);void chuangjian(struct person **Phead);void shuchu(struct person *Phead);void shanchu(struct person **Phead);void zengjia(struct person **Phead);void chaxun1(struct person *Phead);void chaxun2(struct person *Phead);void chaxun3(struct person *Phead);void tuichu();void menu();/*主函数*///////////////////////////////////////////////////void main(){char x;char choose; //choose为定义输入选择的变量int flag=1;struct person *Phead=NULL; //Phead为定义二层头指针struct per *head=NULL; //head为定义一层头指针printf("***************************** ");printf("**欢迎使用ATM自动取款机系统** ");printf("***************************** ");printf("—————————————— ");printf("| 1 开户 | ");printf("—————————————— ");printf("| 2 登陆 | ");printf("—————————————— "); printf("| 3 前台客户信息查询中心| ");printf("—————————————— "); printf("| 4 请选择您的需求 | ");printf("—————————————— "); scanf("%s",&x);system("cls");switch(x){case '1':system("cls");kaihu(head); //调用开户函数break;case '2':system("cls");denglu(head); //调用登陆函数break;case '3':system("cls");menu(); //调用后台菜单函数break;}while(flag){system("cls");menu(); //调用后台菜单函数choose=get);switch(choose){case '1':chuangjian(&Phead);shuchu(Phead); //调用后台输出函数system("pause");break;case '2':chaxun1(Phead); //调用后台卡号查询函数system("pause");system("cls");break;case '3':chaxun2(Phead); //调用后台姓名查询函数system("pause");system("cls");break;case '4':chaxun3(Phead); //调用后台余额查询函数system("pause");system("cls");break;case '5':shanchu(&Phead); //调用后台删除用户函数system("pause");system("cls");break;case '6':zengjia(&Phead); //调用后台增加用户函数system("pause");system("cls");break;case '7':shuchu(Phead); //调用后台输出函数函数system("pause");system("cls");break;case '8':shuchu(Phead);system("pause");break;case '0':flag=0;printf("The end. ");break;}}}/*开户函数*/////////////////////////////////////////////////////////void kaihu(struct per *head){head=NULL;FILE *fp; //定义文件指针struct per *p1=NULL,*p2=NULL; //p1,p2为定义链表指针p1=(struct per*)malloc(sizeof(struct per)); //开辟内存单元printf("请输入您的姓名: "); //请数据输入链表中scanf("%s",p1->name);printf("请设置您的卡号: ");scanf("%s",p1->ID);printf("请设置您银行卡密码: ");scanf("%s",p1->mima);p1->money=0;p1->next=NULL;printf("您的个人信息为");printf("姓名:%s 卡号:%s 余额:%4d ",p1->name,p1->ID,p1->money);if(NULL==head) //为新用户开辟内存单元{head=(struct per *)malloc(sizeof(struct per));head->next=p1; //进行头插法,将其作为第一个节点}else //为新增客户开辟内存单元{for(p2=head;p2->next!=NULL;p2=p2->next); //进行尾插p2->next=p1;}if((fp=fopen("save.txt","ab+"))==NULL) //打开文件{printf("cannot poen file ");return;}if(fwrite(p1,sizeof(struct per),1,fp)!=1) //将链表信息写入文件中printf("file write error ");fclose(fp);printf(" ");printf("恭喜您开户成功,请登录 ");system("pause");system("cls");denglu(head);}//登陆函数/////////////////////////////////////////////////////void denglu(struct per *head){char d[20];char mima[20];int i,j;FILE *fp; //定义文件指针struct per *p,*q=NULL;if((fp=fopen("save.txt","rb+"))==NULL) //打开一个二进制文件,为读方式{printf("不能打开文件 "); //如不能打开,则结束程序}p=(struct per*)malloc(sizeof(struct per)); //申请空间head=p;while(!feof(fp)) //循环读数据直到文件尾结束{if(1!=fread(p,sizeof(struct per),1,fp))break; //如果没读到数据,跳出循环p->next=(struct per *)malloc(sizeof(struct per)); //为下一个结点申请空间q=p; //保存当前节点的指针,作为下一结点的前驱p=p->next; //指针后移,新读入数据链到当前表尾}q->next=NULL; //最后一个结点的后继指针为空fclose(fp);printf(" ********************** ");printf(" ***欢迎来都建设银行*** ");printf(" ********************** ");for(j=1;j<4;j++) //限制卡号输入的次数的循环{printf("请输入您的卡号 ");scanf("%s",d);for(q=head;q!=NULL;q=q->next) //遍历链表{if(strcmp(q->ID,d)!=0) //核对账号{continue; //跳出循环}else{for(i=1;i<4;i++) //限制密码输入的次数的循环{printf(" 请输入您的密码 ");scanf("%s",mima);if(strcmp(q->mima,mima)!=0) //核对密码{printf("密码不正确。

C语言模拟ATM提款机

C语言模拟ATM提款机

C语言模拟ATM提款机1.运用结构体2.运用文件调用源代码:#include "stdio.h"#include "stdlib.h"#include "conio.h"#define N 200void zhanghao(); //账号void xuanzhe(); //选择函数void enter_ATM(); //账号输入函数void input_code(); //密码输入函数void caozuo(); //基本操作界面void qukuan(); //取款函数void success(); //操作成功函数void delay(); //延时函数void YU_E(); //余额查询函数void cunkuan(); //存款函数void panduan(double z); //判断取款是否合法函数void exit(); //退出界面函数void mima(); //密码修改void zhuanzhang(); //转账函数void read(); //文件写入函数void write(); //文件读取函数void guanli(); //管理员函数void tequancode(); //管理员密码void hu(); //户void xinxi(); //信息void gmima(); //管理员改密void CAOZUO(); //管理员操作函数void yinghang(); //银行账户查询函数void jia(); //账户添加函数void shanchu(); //账户删除函数typedef struct{long int zhanghao;int mima;double yu_e;}atm;atm guan[N];int k;////////////////////////////////////////////////////////////主函数void main(){xuanzhe();}////////////////////////////////////////////////////////////功能选择函数void xuanzhe(){system("cls");printf("* 请选择功能*\n");printf("* 1.管理员 2.用户*\n");switch(getch()){case '1':tequancode();break;case '2':enter_ATM();break;default:{printf("\a非法输入");delay();system("cls");xuanzhe();};break;}}///////////////////////////////////////////////////////////柜台机账号输入函数void enter_ATM(){delay();system("cls");read();printf("* 欢迎使用ATM 柜台机*\n");printf("* 请输入卡号*\n");long int user;scanf("%d",&user);if(user==0){printf("* 账号错误*\n");enter_ATM();}else if(user!=(guan[k].zhanghao)){for(k=1;k<N;k++){if(user==(guan[k].zhanghao))input_code( );}system("cls");printf("* 账户不存在,请从新输入*\n");enter_ATM();}elseinput_code( );}////////////////////////////////////////////////////////////////密码输入函数void input_code( ){long int code;int temp=3;read();system("cls");printf("* 请输入密码*\n");scanf("%d",&code);while(code!=guan[k].mima){temp--;system("cls");printf("* 密码错误,请重新输入*\n");printf("* 您还有");printf("%d",temp);printf(" 次机会*\n");scanf("%d",&code);if(temp==1){system("cls");printf("* 您已经3 次输入密码*\n");printf("* 系统将退出操作*\n");delay();enter_ATM();}}caozuo();}//////////////////////////////////////////////////////////////////主操作界面函数void caozuo( ){system("cls");printf("********************************\n");printf("* 1.修改密码*\n");printf("* 2.查询余额*\n");printf("* 3.取款*\n");printf("* 4.存款*\n");printf("* 5.转账*\n");printf("* 6.退出*\n");printf("********************************\n");switch(getch( )){case '1': mima(); break;case '2': YU_E(); break;case '3': qukuan(); break;case '4': cunkuan(); break;case '5': zhuanzhang();break;case '6': exit(); break;default:{printf("\a非法操作\n");caozuo();};}}//////////////////////////////////////////////////////////////////////密码修改函数void mima(){long int mm1,mm2,mm3;int temp;system("cls");printf("旧密码:");scanf("%d",&mm1);printf("\n");if(mm1!=guan[k].mima){system("cls");printf("旧密码错误,请重新输入\n");delay();mima();}printf("新密码:");scanf("%d",&mm2);if(mm2<100000||mm2>999999){system("cls");printf(" 密码必须等于6位数\n");delay();mima();}temp=mm2%111111;if(temp==0){system("cls");printf(" 密码过于简单\n");printf(" 请重新输入!\n");delay( );mima( );}printf("\n");printf("确认新密码:");scanf("%d",&mm3);if(mm2!=mm3){system("cls");printf("确认密码不一致,请重新输入\n");delay( );mima();}if(mm3=mm2){guan[k].mima=mm3;write();success();}}////////////////////////////////////////////////////////////////////余额查询函数void YU_E(){read();system("cls");printf("你的余额为:%lf\n",(guan[k].yu_e));printf("1.返回 2.退出\n");switch(getch()){case '1': caozuo(); break;case '2': exit(); break;}}/////////////////////////////////////////////////////////////////////////取款函数void qukuan(){double temp;system("cls");printf(" 请选择您要取款的金额\n");printf(" 1.100 2.200 \n");printf(" 3.500 4.800 \n");printf(" 5.1000 6.其它\n");printf(" \n");printf(" 7.返回8.退出\n");switch(getch()){case '1': panduan(100); break;case '2': panduan(200); break;case '3': panduan(500); break;case '4': panduan(800); break;case '5': panduan(1000); break;case '6':system("cls");printf("请输入您要取款的金额:");scanf("%lf",&temp);panduan(temp); break;case '7':caozuo(); break;case '8':exit(); break;}}///////////////////////////////////////////////////////////////////判断取款是否合法函数void panduan(double z){int beishu;if(z>(guan[k].yu_e)){system("cls");printf(" 余额不足!\n");printf(" 请重新操作\n");printf(" 1.返回 2.退出\n");switch(getch()){case '1': qukuan();case '2': exit();}}beishu=(int)z%100;if(beishu!=0){system("cls");delay( );printf(" 本ATM机只支持100 的人民币\n");printf(" 请重新操作\n");printf(" \n");printf(" 1.返回 2.退出\n");switch(getch()){case '1': qukuan();case '2': exit();}}if(z==5000.00||z>5000.00){system("cls");printf(" 每次取款不能超过5000 元\n");printf(" 请重新操作\n");printf(" \n");printf(" 1.返回 2.退出\n");switch(getch()){case '1': qukuan();case '2': exit();}}(guan[k].yu_e)-=z;write();success();}/////////////////////////////////////////////////////////////////存款函数void cunkuan( ){double cun;system("cls");printf(" 请放入人民币:");scanf("%lf",&cun);while(cun<0){system("cls");printf(" 非法存款\n");printf(" 请重新放入人民币\n");scanf("%lf",&cun);}(guan[k].yu_e)+=cun;write();success();}/////////////////////////////////////////////////////////////////转账号函数void zhuanzhang(){int i,hao;double money;long int a=2109999999;system("cls");delay();read();printf("* 请输入账号*\n");scanf("%d",&hao);printf("* 请输入金额*\n");scanf("%lf",&money);if(hao<1000000000||hao>a){printf("* 账号错误,操作取消*\n");delay();delay();caozuo();}else if(money>guan[k].yu_e||money<0){printf("* 金额错误,操作取消*\n");delay();delay();caozuo();}else{read();for(i=1;i<N;i++){if(guan[i].zhanghao==hao)break;}guan[k].yu_e-=money;guan[i].yu_e+=money;write();success();}}///////////////////////////////////////////////////////延时函数void delay( ){long int bl1;int bl2;for(bl1=600000;bl1>0;bl1--){for(bl2=300;bl2>0;bl2--);}}/////////////////////////////////////////////////操作成功函数void success( ){system("cls");printf(" 操作已成功\n");printf(" \n");printf(" 1.返回 2.退出\n");switch(getch()){case '1':caozuo(); break;case '2':exit(); break;}}//////////////////////////////////////////////系统退出函数void exit(){system("cls");printf("* 欢迎您的再次使用*\n");printf("* 系统正在退出... *\n");delay();xuanzhe();}////////////////////////////////////////////////////文件读取函数void read(){int i;FILE *fp;fp=fopen("xinxi.txt","r");if(fp==NULL){printf("打开文件失败\n");return;}for(i=0;i<N;i++){fscanf(fp,"%d ",&(guan[i].zhanghao));fscanf(fp,"%d ",&(guan[i].mima));fscanf(fp,"%lf\n",&(guan[i].yu_e));}fclose(fp);}/////////////////////////////////////////////////////////////文件写入函数void write(){int i;FILE *fp;fp=fopen("xinxi.txt","w");if(fp==NULL){printf("打开文件失败\n");return;}for(i=0;i<N;i++){fprintf(fp,"%d ",guan[i].zhanghao);fprintf(fp,"%d ",guan[i].mima);fprintf(fp,"%lf\n",guan[i].yu_e);}fclose(fp);}void tequancode( ){long int code;int temp=2;read();system("cls");printf("* 请输入管理员密码*\n");scanf("%d",&code);while(code!=guan[0].mima){system("cls");printf("* 密码错误,请重新输入*\n");printf("* 您还有");printf("%d",temp);printf(" 次机会*\n");scanf("%d",&code);temp--;if(temp==0){system("cls");printf("*\a 您已经3 次输入密码*\n");printf("* 系统将退出操作*\n");delay();xuanzhe();}}guanli();}////////////////////////////////////////////////////////////////管理员函数void guanli(){system("cls");delay();printf("* 1.信息查询*\n");printf("* 2.操作*\n");printf("* 3.退出*\n");switch(getch()){case '1':zhanghao();break;case '2':CAOZUO();break;case '3':exit();break;default:{printf("\a非法操作");guanli();};}}/////////////////////////////////////账号void zhanghao(){system("cls");read();printf(" 请输入账号\n");long int user;scanf("%d",&user);if(user!=(guan[k].zhanghao)){for(k=1;k<N;k++){if(user==(guan[k].zhanghao))hu();}system("cls");printf("* 账户不存在,请从新输入*\n");delay();guanli();}else{delay();hu( );}}////////////////////////////////////////////////账户void hu(){system("cls");printf("* 1.信息 2.改密码*\n");printf("* 3.返回 4.退出*\n");switch(getch()){case '1':xinxi();break;case '2':gmima();break;case '3':zhanghao();break;case '4':guanli();break;default:{printf("\a非法操作\n");hu();};}}///////////////////////////////////////////////信息void xinxi(){system("cls");read();printf("*账号密码余额*\n");printf("%d ",guan[k].zhanghao);printf("%d ",guan[k].mima);printf("%lf \n",guan[k].yu_e);printf("* 1.返回 2.退出*\n");switch(getch()){case '1':hu();break;case '2':guanli();break;}}///////////////////////////////////////////管理员改密void gmima(){long int mm1,mm2,mm3;char temp;system("cls");printf("旧密码:");scanf("%d",&mm1);printf("\n");if(mm1!=guan[k].mima){system("cls");printf("旧密码错误,请重新输入\n");delay();gmima();}printf("新密码:");scanf("%d",&mm2);if(mm2<100000||mm2>999999){system("cls");printf(" 密码必须等于6位数\n");printf(" 请重新输入!\n");delay();gmima();}temp=mm2%111111;if(temp==0){system("cls");printf(" 密码过于简单\n");printf(" 请重新输入!\n");delay( );gmima( );}printf("\n");printf("确认新密码:");scanf("%d",&mm3);if(mm2!=mm3){system("cls");printf("确认密码不一致,请重新输入\n");delay( );gmima();}if(mm3=mm2){guan[k].mima=mm3;write();hu();}}///////////////////////////////////////////管理员操作函数void CAOZUO(){system("cls");delay();printf("* 1.查询所有账户*\n");printf("* 2.添加账户*\n");printf("* 3.删除账户*\n");printf("* 4.返回 5.退出*\n");switch(getch()){case '1':yinghang();break;case '2':jia();break;case '3':shanchu();break;case '4':guanli();break;case '5':xuanzhe();break;default:{printf("\a非法操作\n");CAOZUO();};}}//////////////////////////////////////////银行账户查询函数void yinghang(){system("cls");delay();read();printf("*账号密码余额*\n");for(;k<N;k++){if(guan[k].zhanghao!=0&&guan[k].zhanghao>0){printf("%d ",guan[k].zhanghao);printf("%d ",guan[k].mima);printf("%lf\n",guan[k].yu_e);}}printf("* 1.返回 2.退出*\n");switch(getch()){case '1':CAOZUO();break;case '2':guanli();break;}}//////////////////////////////////////////账户添加函数void jia(){int mm1,mm2;int temp;system("cls");delay();read();printf("* 请输入密码*\n");scanf("%d",&mm1);if(mm1<100000||mm1>999999){system("cls");printf(" 密码必须等于6位数\n");printf(" 请重新输入: \n");delay();scanf("%d",&mm1);}temp=mm1%111111;if(temp==0){system("cls");printf(" 密码过于简单\n");printf(" 请重新输入: \n");delay( );scanf("%d",&mm1);}printf("\n");printf("确认密码:\n");scanf("%d",&mm2);if(mm1!=mm2){system("cls");printf("确认密码不一致,操作取消\n");delay( );CAOZUO();}if(mm1=mm2){for(;k<N;k++){if(guan[k].zhanghao==0){guan[k].zhanghao=guan[k-1].zhanghao+1;guan[k].mima=mm2;write();break;}}printf("账号创建成功!\n");printf("您的账号是%d,请妥善保管!\n",guan[k].zhanghao);printf("* 1.返回 2.退出*\n");switch(getch()){case '1':CAOZUO();break;case '2':guanli();break;}}}/////////////////////////////////////////账户删除函数void shanchu(){system("cls");delay();read();printf("* 请输入账号*\n");long int user;scanf("%d",&user);if(user==0){printf("* 账号错误,操作取消*\n");CAOZUO();}else if(user!=(guan[k].zhanghao)){for(k=1;k<N;k++){if(user==(guan[k].zhanghao)){for(;k<N;k++){guan[k].zhanghao=guan[k+1].zhanghao;guan[k].mima=guan[k+1].mima;guan[k].yu_e=guan[k+1].yu_e;write();}printf("账号删除成功!\n");printf("* 1.返回 2.退出*\n");switch(getch()){case '1':CAOZUO();break;case '2':guanli();break;}}}system("cls");printf("* 账户不存在*\n");delay();CAOZUO();}else{for(;k<N;k++){guan[k].zhanghao=guan[k+1].zhanghao;guan[k].mima=guan[k+1].mima;guan[k].yu_e=guan[k+1].yu_e;write();}printf("账号删除成功!\n");printf("* 1.返回 2.退出*\n");switch(getch()){case '1':CAOZUO();break;case '2':guanli();break;}}}。

c语言模拟ATM机程序

c语言模拟ATM机程序
case 3: Zhuanzhang(&Y,&a[6]);break;
case 4: Xiugai(&a[6]);break;
case 5: Cunkuan(&Y);break;
case 6: exit(0);break;
default:printf("输入错误,请重新输入\n");
}
lp2:printf("继续操作请按1,退卡请按2\n");
else
{printf("非法操作,强制退出\n");
}
}
void Qukuan()
{
int i,j;
printf("1、100\t2、200\t3、500\t4、800\t5、请输入金额\n");
scanf("%d",&i);
switch(i)
{
case 1: panduan(100);break;
printf请选择服务项目n1取款t2查询服务t3转账服务t4修改密码t5存款t6退卡n
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
long int Y=100000;int c=0;char a[6]={'1','2','3','4','5','6'};
else
lp4:{
printf("请输入新密码:\n");
k=getch();
while(k!='\r'&&l<6)

C语言ATM程序模拟

C语言ATM程序模拟

C语言A T M程序模拟As a person, we must have independent thoughts and personality.一、课题要求1、当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统。

2、查询余额:初始余额为10000元。

3、ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。

4、ATM存款:不能出现负存款。

5、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。

二、代码#include ""#include ""#include ""#include ""#include ""void gotoxy(int x,int y); 改密码 *\n");printf("* 2.查询余额 *\n");printf("* 3.取款 *\n");printf("* 4.实时存款 *\n");printf("* 5.退出 *\n");printf("********************************\n");switch(getch()){case '1': mima(); break;case '2': yu_e(); break;case '3': qukuan(); break;case '4': cunkuan(); break;case '5': exit(); break;default:printf("error\n");}}回 2.退出 *\n");printf("* *\n"); printf("* *\n"); printf("********************************\n"); switch(getch()){case '1': caozuo(); break;case '2': exit(); break;}}. *\n");printf("* *\n"); printf("* *\n");printf("********************************\n"); delay();delay();system("cls");printf("********************************\n"); printf("* *\n"); printf("* 您的余额为 *\n"); printf("* *\n"); printf(" ");printf("%d",YU_E);printf("\n* *\n"); printf("* 1.返回 2.退出 *\n"); printf("********************************\n"); switch(getch()){case '1': caozuo(); break;case '2': exit(); break;}}它 *\n");printf("* *\n"); printf("* 7.返回 8.退出 *\n"); printf("********************************\n");switch(getch()){case '1': panduan(100); break;case '2': panduan(200); break;case '3': panduan(500); break;case '4': panduan(800); break;case '5': panduan(1000); break;case '6':system("cls");printf("********************************\n");printf("* *\n");printf("* 请输入您要取款的金额 *\n");printf("* *\n");printf("* *\n");printf("* *\n");printf("* *\n");printf("********************************\n");gotoxy(14,4);scanf("%d",&temp);panduan(temp); break;case '7':caozuo(); break;case '8':exit(); break;}}回 2.退出 *\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1': qukuan();case '2': exit();}}beishu=z%100;if(beishu!=0){system("cls");delay();printf("********************************\n");printf("* *\n");printf("* 本ATM机只支持 100 的人民币 *\n");printf("* 请重新操作 *\n");printf("* *\n");printf("* 1.返回 2.退出 *\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1': qukuan();case '2': exit();}}if(z==5000||z>5000){system("cls");printf("********************************\n");printf("* *\n");printf("* 每次取款不能超过 5000 元 *\n");printf("* 请重新操作 *\n");printf("* *\n");printf("* 1.返回 2.退出 *\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1': qukuan();case '2': exit();}}YU_E=YU_E-z;success();}. *\n");printf("* *\n"); printf("* *\n"); printf("********************************\n"); delay();delay();system("cls");printf("********************************\n"); printf("* *\n"); printf("* 操作已成功 *\n"); printf("* *\n"); printf("* 1.返回 2.退出 *\n"); printf("* *\n"); printf("* *\n"); printf("********************************\n"); switch(getch()){case '1':caozuo(); break;case '2':exit(); break;}}. *\n");printf("* *\n");printf("* *\n");printf("********************************\n");delay();delay();enter_ATM();}//================================================================/ ///============== 简单转移函数=============//void zhuangyi(){mima();}//========================================//三、部分效果截图。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息科学与工程学院《数据结构》课程设计报告课程设计名称: ATM得设计与实现专业班级:学生姓名:学号: 2指导教师:课程设计时间:2016-2017学年第二学期计算机科学与技术专业课程设计任务书目录1 需求分析 (1)1、1存款 (1)1、2取款 (1)1、3查瞧流水账 (1)1、4排序 (1)1、5修改密码 (2)1、6查瞧ATM使用情况 (2)1、7录入信息 (2)1、8恢复限额 (2)2概要设计 (3)2、1数据类型得定义 (3)2、2功能模块结构图 (4)3运行环境 (6)4开发工具与编程语言 (6)5详细设计 (6)5、1主函数 (7)5、2 录入函数 (8)5、3加载与存储函数 (8)5、4 输出流水账函数 (9)5、5 查瞧ATM使用情况函数 (9)6程序编码 (10)7运行结果 (12)8心得体会 (14)9参考文献 (14)1需求分析ATM自助机——便于储户存钱、取钱。

按功能分为两大系统:个人用户系统与银行后台系统;个人用户系统————登录(输入正确得账号或密码才能进入)、存款、取款、查瞧流水账(查瞧用户最近存取款情况)、排序(此为超级用户功能,可以查瞧所有人得余额)、修改密码(修改个人登录密码);银行后台系统————atm使用情况(便于银行人员管理atm机)、录入信息(包括录入用户及其银行卡号信息与录入atm 信息)、恢复限额(每天6点恢复所有人得取款上限)。

1、1存款输入金额,存入ATM,当前AMT以及自己得余额会增加并且自动生成流水账。

1、2取款输入取款金额,判断它就是否小于ATM总金额并且小于当天得限额,当前得ATM金额减少,自己得余额与限额也会减少。

1、3查瞧流水账输出自己近段时间内得所有操作,发生额,以及时间。

1、4排序此为超级用户功能,实现以余额对所有用户排序并且输出一些信息。

1、5修改密码修改用户登录密码。

1、6查瞧ATM使用情况查瞧每一台ATM得使用情况,输出存取款发生额及其次数。

1、7录入信息能录入用户、银行卡以及ATM得信息。

根据提示一步步输入数据,存入数组中,最后存入文件。

1、8恢复限额恢复用户一天得限额。

2概要设计2、1数据类型得定义1.定义用户类型typedef struct node typedef struct {char number[5];//用户编号char User_name[11];//用户名char password[7];//密码int kind;//用户类型}User;2.定义时间类型typedef struct{int year;int month;int day;}Data;3.定义银行卡类型typedef struct{char cardnumber[20];//银行卡号char Idcard[19];//身份证号int balance;//余额Data open;//开户时间int quota;//限额}Bankcard;4.定义ATM类型typedef struct{char code[5];//机器代码char address[30];//地址int Total_money;//取款机总金额}ATM;5、定义流水账类型typedef struct node{char code[5];//机器代码char cardnumber[20];//银行卡号int access;//存取,0存款,1取款Data occurrence;//发生日期int money;//发生额struct node *next;}Book,*Link;2、2功能模块结构图根据需求分析,为了满足用户得功能需求,按照软件开发方法学中得模块划分原则,我将本系统主要划分为两个子系统:个人用户系统与银行后台系统。

个人用户系统有如下功能:存款,取款,排序,流水账,密码;银行后台系统有如下功能:ATM使用情况,录入信息,恢复限额。

各模块之间得关系如图1所示。

图 1模块结构图为了实现上述功能模块,因此定义多个函数以及包含多个头文件便于实现,本系统定义得函数与功能如下:1、函数void load1(User us[],int *n);加载用户信息void load2(Bankcard ba[]);加载银行卡信息void load3(ATM at[]);加载Atm信息void load4(Link head);加载流水账void display();主界面void display1();个人用户界面void display2();用户后台界面int Login(User us[],int n);用户登录界面int Login2();银行后台登录界面void save1(User us[],int n);存储用户信息void save2(Bankcard ba[],int n);存储银行卡信息void save3(ATM at[],int m);存储Atm信息void save4(Link head);存储流水账信息void add(User us[],Bankcard ba[],ATM at[],int *n,int *m);录入用户与银行卡信息void inputRecord(User us[],Bankcard ba[],int i);录入一个信息void inputATM(ATM at[],int i);录入一个Atm信息void output(User us[],Bankcard ba[],int n);输出排序后得用户信息void PrintRecord(User *u,Bankcard *b);输出一个信息void sort(User us[],Bankcard ba[],int n);用户排序int deposit(int *p,int *a);存款int withdraw(Bankcard *p,ATM *a);取款int findAtm(ATM at[],int m);查找atm就是否存在void generate1(Link head,char code[],char cardnumber[],int money);生成流水账void generate2(Link head,char code[],char cardnumber[],int money);生成流水账void change(User *u);更改密码void recovery(Bankcard ba[],User us[],int n);恢复限额void seebook(Link head,char cardnumber[]);查瞧流水账int Printbook(Link p);输出一个流水账void seeAtm(Link head,ATM at[],int m);查瞧Atm使用情况PrintAtm(ATM at,int number1,int number2,int money1,int money2);输出所有Atm 使用情况。

2、头文件define、h 定义结构体类型、包含系统头文件、以及函数声明save、h 存储数据到文件display、h 显示界面load、h 加载文件到数组或链表add、h 录入信息output、h 输出排序后得信息sort、h 排序(按余额)deposit、h 存款withdraw、h 取款findAtm、h 查找ATMgenerateBook、hchange_password、h 修改密码recovery_quota、h 恢复限额seebook、h 查瞧现在seeAtm、h。

查瞧ATM使用情况3运行环境1.硬件环境:PC机内存 8G;硬盘1000G2.软件环境:操作系统:windows74开发工具与编程语言开发环境:Visual C++编程语言:C语言5详细设计在概要设计得基础上,对每个模块进行内部逻辑处理部分详细设计。

下面分别列出各个模块具体实现流程图:5、3加载与存储函数5、4 输出流水账函数5、5 查瞧ATM使用情况函数6程序编码根据详细设计得流程图转化为如下代码,下面列出主函数代码:#include"define、h"#include"save、h"#include"display、h"#include"load、h"#include"add、h"#include"output、h"#include"sort、h"#include"deposit、h"#include"withdraw、h"#include"findAtm、h"#include"generateBook、h"#include"change_password、h"#include"recovery_quota、h"#include"seebook、h"#include"seeAtm、h"int main(){int n,select,k,g,choice,m,t,money;User us[N];Bankcard ba[N];ATM at[M];Link bk;bk=(Link)malloc(sizeof(Book));bk->next=NULL;load1(us,&n);load2(ba);load3(at,&m);load4(bk);while(1){system("cls");display();scanf("%d",&select);if(select==1){g=findAtm(at,m);if(g!=-1){k=Login(us,n);if(k!=-1){while(1){system("cls");display1();t=0;scanf("%d",&choice);switch(choice){case 1:money=deposit(&ba[k]、balance,&at[g]、Total_money);generate1(bk,at[g]、code,ba[k]、cardnumber,money);save2(ba,n);save3(at,m);save4(bk);break;//存款case 2:money=withdraw(&ba[k],&at[g]);//取款if(money!=-1){generate2(bk,at[g]、code,ba[k]、cardnumber,money);save2(ba,n);save3(at,m);save4(bk);}break;case 3:seebook(bk,ba[k]、cardnumber);break;//查瞧流水账case 4:if(us[k]、kind==0)sort(us,ba,n);elseprintf("权限不足,请重新选择\n");system("pause");t=0;break;//排序case 5:change(us[k]、password);save1(us,n);break;//修改密码case 6:t=1;break;}if(t==1)break;}}}}else if(select==9){if(Login2()==1){while(1){system("cls");display2();scanf("%d",&choice);switch(choice){case 1:seeAtm(bk,at,m);break;//atm使用情况case 2:add(us,ba,at,&n,&m);break;//录入信息case 3:recovery(ba,us,n);break;//恢复限额case 4:return 0;//退出}}}}else{printf("由于您得恶意输入,您得银行卡已被没收,请前往银行找回!\n");system("pause");return 0;}}}7运行结果以下为排序与查询流水账结果测试:8心得体会本学期,当数据结构大作业刚布置下来得时候感觉很难,因为感觉实现得功能比较多并且时间又短,根本完不成这个任务,在写大作业得过程中也并不就是那么顺利,存在着太多得bug,然后就一步步调试,找出错误。

相关文档
最新文档