C语言实现模拟银行系统攻略
概述
本文将介绍如何采用C语言实现简单的模拟银行系统。该系统主要包含账户管理、存款、取款、转账、查询余额等功能。
系统设计
账户结构体
一个账户包含三个属性:账户号、账户余额和持有者姓名。定义一个结构体表示账户:
typedef struct account_t {
int account_no; //账户号
float balance; //账户余额
char holder_name[20]; //账户持有者姓名
} Account;
系统函数
根据系统需要,实现一些相关的函数,例如:
初始化账户系统
定义一个函数来初始化账户系统,主要完成以下两个任务:
- 设置系统当前账户个数为0;
- 动态创建一定数量的账户结构体数组的内存空间。
#define MAX_ACCOUNTS 10
Account *accounts[MAX_ACCOUNTS]; //定义一个指针数组,存储所有账户结构体的地址
int account_count; //账户总数,即accounts数组中已有元素个数
void init_system()
{
account_count = 0;
for (int i=0; i<MAX_ACCOUNTS; i++) {
accounts[i] = NULL;
}
}
创建账户
定义一个函数来创建账户并添加到账户系统中,主要完成以下四个任务:
- 检查是否已经达到最大账户数量;
- 根据用户输入的信息创建一个账户结构体;
- 将新创建的账户结构体指针添加到accounts数组中;
- 增加账户总数。
void create_account()
{
if (account_count >= MAX_ACCOUNTS) {
printf("系统最多只能支持%d个账户!", MAX_ACCOUNTS);
return;
}
Account *account = (Account*)malloc(sizeof(Account));
printf("请输入新账户号:");
scanf("%d", &account->account_no);
printf("请输入账户余额:");
scanf("%f", &account->balance);
printf("请输入账户持有者姓名:");
scanf("%s", account->holder_name);
accounts[account_count++] = account;
printf("账户创建成功!\n");
print_account(account);
}
存款
定义一个函数来存款,主要完成以下三个任务:
- 搜索指定账户在accounts数组中的索引;
- 判断账户是否存在;
- 增加账户余额。
void deposit(int account_no, float amount)
{
int account_index = find_account_index(account_no);
if (account_index == -1) {
printf("账户 %d 不存在!", account_no);
return;
}
accounts[account_index]->balance += amount;
printf("存款成功!\n");
print_account(accounts[account_index]);
}
取款
定义一个函数来取款,主要完成以下四个任务:
- 搜索指定账户在accounts数组中的索引;
- 判断账户是否存在;
- 判断账户余额是否充足;
- 减少账户余额。
void withdraw(int account_no, float amount)
{
int account_index = find_account_index(account_no);
if (account_index == -1) {
printf("账户 %d 不存在!", account_no);
return;
}
if (accounts[account_index]->balance < amount) {
printf("账户余额不足!");
return;
}
accounts[account_index]->balance -= amount;
printf("取款成功!\n");
print_account(accounts[account_index]);
}
转账
定义一个函数来转账,主要完成以下五个任务:
- 搜索发起转账的账户和收到转账的账户在accounts数组中的索引;
- 判断发起转账的账户是否存在;
- 判断接收转账的账户是否存在;
- 判断发起转账的账户余额是否充足;
- 减少发起转账的账户余额,增加接收转账的账户余额。
void transfer(int from_account_no, int to_account_no, float amount)
{
int from_account_index = find_account_index(from_account_no);
if (from_account_index == -1) {
printf("发起转账的账户 %d 不存在!", from_account_no);
return;
}
int to_account_index = find_account_index(to_account_no);
if (to_account_index == -1) {
printf("接收转账的账户 %d 不存在!", to_account_no);
return;
}
if (accounts[from_account_index]->balance < amount) {
printf("发起转账的账户余额不足!");
return;
}
accounts[from_account_index]->balance -= amount;
accounts[to_account_index]->balance += amount;
printf("转账成功!\n");
print_account(accounts[from_account_index]);
print_account(accounts[to_account_index]);
}
查询余额
定义一个函数来查询余额,主要完成以下两个任务:
- 搜索指定账户在accounts数组中的索引;
- 判断账户是否存在,若存在则输出账户余额。
void check_balance(int account_no)
{
int account_index = find_account_index(account_no);
if (account_index == -1) {
printf("账户 %d 不存在!", account_no);
return;
}
printf("%s的账户余额为:%.2f元\n", accounts[account_index]->holder_name, accounts[account_index]->balance);
}
搜索函数
定义一个函数来搜索指定账户在accounts数组中的索引,若目标账户不存在则返回-1。
int find_account_index(int account_no)
{
for (int i=0; i<account_count; i++) {
if (accounts[i]->account_no == account_no) {
return i;
}
}
return -1;
}
示例演示
以下是示例演示的两个场景:
情景一:创建账户、存款、取款、查询余额
//启动系统
init_system();
//创建账户1
create_account();
//存款
deposit(1, 1000);
//取款
withdraw(1, 500);
//查询余额
check_balance(1);
输出结果:
请输入新账户号:1
请输入账户余额:999.99
请输入账户持有者姓名:Tom
账户创建成功!
账户号:1, 账户余额:999.99元, 账户持有者:Tom
存款成功!
账户号:1, 账户余额:1000.00元, 账户持有者:Tom
取款成功!
账户号:1, 账户余额:500.00元, 账户持有者:Tom
Tom的账户余额为:500.00元
情景二:创建账户、转账、查询余额
//启动系统
init_system();
//创建账户1
create_account();
//创建账户2
create_account();
//转账
transfer(1, 2, 500);
//查询余额
check_balance(1);
check_balance(2);
输出结果:
请输入新账户号:1
请输入账户余额:1000
请输入账户持有者姓名:Tom
账户创建成功!
账户号:1, 账户余额:1000.00元, 账户持有者:Tom
请输入新账户号:2
请输入账户余额:0
请输入账户持有者姓名:Jerry
账户创建成功!
账户号:2, 账户余额:0.00元, 账户持有者:Jerry
转账成功!
账户号:1, 账户余额:500.00元, 账户持有者:Tom
账户号:2, 账户余额:500.00元, 账户持有者:Jerry
Tom的账户余额为:500.00元
Jerry的账户余额为:500.00元
总结
本文简单介绍了如何采用C语言实现模拟银行系统,涵盖了账户管理、存款、取款、转账、查询余额等功能。系统设计合理,代码简洁易懂,并提供了示例代码供读者参考。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现模拟银行系统 - Python技术站