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;一个完整的c语言程序
}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-& = 0;
printf("请输⼊您的名字:");
scanf("%s", NewNode->P.name);
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->P.name);
printf("\t\t\t\t账户:%s\n", NewNode->P.account);
printf("\t\t\t\t余额:%.2f\n", NewNode-&);
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-& = mNode-& - Money;
return mNode;
}
//存款
void Deposit(Node* pNode)
{
Node* mNode = pNode;
float Money = 0;
printf("请存取您的⾦额:");
scanf("%f", &Money);
mNode-& = mNode-& + 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-& = TNode-& + Money;
pNode-& = pNode-& - 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-&);
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->P.name) != 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系统程序内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论