用c++实现基于atm的个人银行账户管理系统
时间: 2024-06-09 20:09:23 浏览: 91
C++银行账户管理系统.pdf
实现基于ATM的个人银行账户管理系统需要考虑以下几个方面:
1. 用户登录验证:需要实现登录验证功能,确保只有已注册用户才能进行账户管理操作。
2. 账户信息管理:需要实现账户信息的查询、修改、删除等功能,包括账户余额、交易记录等信息。
3. 取款、存款、转账等操作:需要实现取款、存款、转账等基本操作,应确保操作的安全性和准确性。
4. 系统安全:需要确保系统的安全性,防止非法用户进行攻击或者恶意操作。
下面是一个简单的基于ATM的个人银行账户管理系统的实现,使用了C语言:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_USERS 10
#define MAX_NAME_LEN 20
#define MAX_PWD_LEN 10
// 用户结构体
typedef struct {
char name[MAX_NAME_LEN];
char pwd[MAX_PWD_LEN];
double balance;
} User;
User users[MAX_USERS]; // 用户数组
int userCount = 0; // 用户数量
// 添加新用户
void addUser(char *name, char *pwd) {
if (userCount >= MAX_USERS) {
printf("系统已满,无法添加新用户\n");
return;
}
// 检查用户名是否重复
for (int i = 0; i < userCount; i++) {
if (strcmp(users[i].name, name) == 0) {
printf("用户名已存在\n");
return;
}
}
// 添加新用户
User newUser;
strcpy(newUser.name, name);
strcpy(newUser.pwd, pwd);
newUser.balance = 0;
users[userCount] = newUser;
userCount++;
printf("用户注册成功\n");
}
// 用户登录验证
int login(char *name, char *pwd) {
for (int i = 0; i < userCount; i++) {
if (strcmp(users[i].name, name) == 0 && strcmp(users[i].pwd, pwd) == 0) {
printf("登录成功\n");
return i; // 返回用户在数组中的下标
}
}
printf("用户名或密码错误\n");
return -1; // 登录失败
}
// 查询余额
void queryBalance(User user) {
printf("当前余额为 %.2f 元\n", user.balance);
}
// 存款
void deposit(User *user, double amount) {
user->balance += amount;
printf("存款成功,当前余额为 %.2f 元\n", user->balance);
}
// 取款
void withdraw(User *user, double amount) {
if (amount > user->balance) {
printf("余额不足,无法取款\n");
return;
}
user->balance -= amount;
printf("取款成功,当前余额为 %.2f 元\n", user->balance);
}
// 转账
void transfer(User *fromUser, User *toUser, double amount) {
if (amount > fromUser->balance) {
printf("余额不足,无法转账\n");
return;
}
fromUser->balance -= amount;
toUser->balance += amount;
printf("转账成功,当前余额为 %.2f 元\n", fromUser->balance);
}
int main() {
// 添加几个测试用户
addUser("张三", "123456");
addUser("李四", "654321");
// 用户登录
char name[MAX_NAME_LEN], pwd[MAX_PWD_LEN];
printf("请输入用户名:");
scanf("%s", name);
printf("请输入密码:");
scanf("%s", pwd);
int index = login(name, pwd);
if (index == -1) {
return 0;
}
User user = users[index];
// ATM菜单
int choice;
double amount;
while (1) {
printf("请选择操作:\n");
printf("1. 查询余额\n");
printf("2. 存款\n");
printf("3. 取款\n");
printf("4. 转账\n");
printf("5. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
queryBalance(user);
break;
case 2:
printf("请输入存款金额:");
scanf("%lf", &amount);
deposit(&user, amount);
break;
case 3:
printf("请输入取款金额:");
scanf("%lf", &amount);
withdraw(&user, amount);
break;
case 4:
printf("请输入转账金额:");
scanf("%lf", &amount);
char toName[MAX_NAME_LEN];
printf("请输入对方用户名:");
scanf("%s", toName);
// 查找对方用户
int toIndex = -1;
for (int i = 0; i < userCount; i++) {
if (strcmp(users[i].name, toName) == 0) {
toIndex = i;
break;
}
}
if (toIndex == -1) {
printf("对方用户不存在\n");
break;
}
transfer(&user, &users[toIndex], amount);
break;
case 5:
printf("退出系统\n");
return 0;
default:
printf("无效的操作\n");
break;
}
}
return 0;
}
```
请注意,上述代码仅为演示用途,并不完整或者安全,实际应用中还需要考虑更多因素,如数据存储、密码加密、交易安全等。
阅读全文