用C语言写一个银行综合业务处理系统
时间: 2023-08-24 08:07:16 浏览: 108
用c语言实现银行业务系统
4星 · 用户满意度95%
银行综合业务处理系统可以包括以下功能:
1. 用户管理:包括用户注册、登录、个人信息维护等功能。
2. 账户管理:包括账户开户、销户、查询余额、转账、存款、取款、修改密码等功能。
3. 贷款管理:包括贷款申请、还款、贷款利率计算等功能。
4. 管理员管理:包括管理员登录、用户信息管理、账户信息管理、贷款信息管理等功能。
5. 数据库管理:包括数据备份、数据恢复、数据统计等功能。
下面是一个简单的银行综合业务处理系统的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义用户结构体
typedef struct User {
char name[20]; // 用户名
char password[20]; // 密码
double balance; // 余额
} User;
// 定义账户结构体
typedef struct Account {
char id[10]; // 账户号
User user; // 用户信息
} Account;
// 定义贷款结构体
typedef struct Loan {
char id[10]; // 贷款号
Account account; // 账户信息
double amount; // 贷款金额
double rate; // 贷款利率
int period; // 贷款期数
double repay; // 已还贷款金额
} Loan;
// 定义管理员结构体
typedef struct Admin {
char name[20]; // 管理员名
char password[20]; // 密码
} Admin;
// 用户登录
int user_login(Account *accounts, int count) {
char id[10], password[20];
printf("请输入账户号:");
scanf("%s", id);
printf("请输入密码:");
scanf("%s", password);
for (int i = 0; i < count; i++) {
if (strcmp(id, accounts[i].id) == 0 && strcmp(password, accounts[i].user.password) == 0) {
return i; // 返回账户号在数组中的下标
}
}
return -1; // 登录失败
}
// 用户注册
void user_register(Account *accounts, int *count) {
char name[20], password[20];
printf("请输入用户名:");
scanf("%s", name);
printf("请输入密码:");
scanf("%s", password);
// 查找是否已经存在相同用户名的账户
for (int i = 0; i < *count; i++) {
if (strcmp(name, accounts[i].user.name) == 0) {
printf("该用户名已被使用,请重新输入!\n");
return;
}
}
// 添加新账户
strcpy(accounts[*count].id, "A00001"); // 新账户号为A00001开始依次递增
strcpy(accounts[*count].user.name, name);
strcpy(accounts[*count].user.password, password);
accounts[*count].user.balance = 0;
(*count)++;
printf("注册成功!您的账户号为A00001%d,请牢记您的账户号!\n", *count);
}
// 查询余额
void query_balance(Account *account) {
printf("您的账户余额为:%.2lf元。\n", account->user.balance);
}
// 存款
void deposit(Account *account) {
double amount;
printf("请输入存款金额:");
scanf("%lf", &amount);
if (amount <= 0) {
printf("存款金额必须大于0!\n");
return;
}
account->user.balance += amount;
printf("存款成功!\n");
query_balance(account);
}
// 取款
void withdraw(Account *account) {
double amount;
printf("请输入取款金额:");
scanf("%lf", &amount);
if (amount > account->user.balance) {
printf("余额不足!\n");
return;
}
account->user.balance -= amount;
printf("取款成功!\n");
query_balance(account);
}
// 转账
void transfer(Account *accounts, int count, Account *account) {
char id[10];
double amount;
printf("请输入对方账户号:");
scanf("%s", id);
printf("请输入转账金额:");
scanf("%lf", &amount);
if (amount > account->user.balance) {
printf("余额不足!\n");
return;
}
// 查找对方账户
int index = -1;
for (int i = 0; i < count; i++) {
if (strcmp(id, accounts[i].id) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到对方账户!\n");
return;
}
account->user.balance -= amount;
accounts[index].user.balance += amount;
printf("转账成功!\n");
query_balance(account);
}
// 修改密码
void change_password(Account *account) {
char password[20];
printf("请输入新密码:");
scanf("%s", password);
strcpy(account->user.password, password);
printf("密码修改成功!\n");
}
// 贷款利率计算
double loan_rate(int period) {
if (period <= 0) {
return 0;
} else if (period <= 6) {
return 0.05;
} else if (period <= 12) {
return 0.06;
} else if (period <= 24) {
return 0.07;
} else {
return 0.08;
}
}
// 贷款申请
void loan_apply(Loan *loans, int *count, Account *account) {
double amount;
int period;
printf("请输入贷款金额:");
scanf("%lf", &amount);
if (amount <= 0) {
printf("贷款金额必须大于0!\n");
return;
}
printf("请输入贷款期数:");
scanf("%d", &period);
if (period <= 0) {
printf("贷款期数必须大于0!\n");
return;
}
// 计算贷款利率
double rate = loan_rate(period);
// 添加贷款信息
strcpy(loans[*count].id, "L00001"); // 新贷款号为L00001开始依次递增
loans[*count].account = *account;
loans[*count].amount = amount;
loans[*count].rate = rate;
loans[*count].period = period;
loans[*count].repay = 0;
(*count)++;
printf("贷款申请成功!您的贷款号为L00001%d,贷款利率为%.2lf%%。\n", *count, rate * 100);
}
// 还款
void repay(Loan *loans, int count, Account *account) {
char id[10];
double amount;
printf("请输入贷款号:");
scanf("%s", id);
// 查找贷款信息
int index = -1;
for (int i = 0; i < count; i++) {
if (strcmp(id, loans[i].id) == 0 && strcmp(account->id, loans[i].account.id) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到贷款信息!\n");
return;
}
printf("请输入还款金额:");
scanf("%lf", &amount);
if (amount <= 0) {
printf("还款金额必须大于0!\n");
return;
}
if (amount > loans[index].amount - loans[index].repay) {
printf("还款金额不能超过应还金额!\n");
return;
}
account->user.balance -= amount;
loans[index].repay += amount;
printf("还款成功!\n");
}
// 管理员登录
int admin_login(Admin *admins, int count) {
char name[20], password[20];
printf("请输入管理员名:");
scanf("%s", name);
printf("请输入密码:");
scanf("%s", password);
for (int i = 0; i < count; i++) {
if (strcmp(name, admins[i].name) == 0 && strcmp(password, admins[i].password) == 0) {
return i; // 返回管理员名在数组中的下标
}
}
return -1; // 登录失败
}
// 用户信息管理
void user_manage(Account *accounts, int count) {
printf("用户信息如下:\n");
printf("%-10s%-10s%-10s\n", "账户号", "用户名", "余额");
for (int i = 0; i < count; i++) {
printf("%-10s%-10s%-10.2lf\n", accounts[i].id, accounts[i].user.name, accounts[i].user.balance);
}
}
// 贷款信息管理
void loan_manage(Loan *loans, int count) {
printf("贷款信息如下:\n");
printf("%-10s%-10s%-10s%-10s%-10s%-10s\n", "贷款号", "账户号", "贷款金额", "贷款利率", "贷款期数", "已还金额");
for (int i = 0; i < count; i++) {
printf("%-10s%-10s%-10.2lf%-10.2lf%-10d%-10.2lf\n", loans[i].id, loans[i].account.id, loans[i].amount, loans[i].rate * 100, loans[i].period, loans[i].repay);
}
}
int main() {
Account accounts[100]; // 最多存储100个账户
int account_count = 0; // 当前账户数量
Loan loans[100]; // 最多存储100个贷款信息
int loan_count = 0; // 当前贷款数量
Admin admins[] = {{"admin", "123456"}}; // 管理员信息
int admin_count = 1; // 管理员数量
while (1) {
printf("\n欢迎使用银行综合业务处理系统!\n");
printf("1.用户登录 2.用户注册 3.管理员登录 4.退出系统\n");
int choice;
scanf("%d", &choice);
if (choice == 1) {
int index = user_login(accounts, account_count);
if (index != -1) {
Account *account = &accounts[index];
while (1) {
printf("\n欢迎登录,%s!\n", account->user.name);
printf("1.查询余额 2.存款 3.取款 4.转账 5.修改密码 6.申请贷款 7.还款 8.注销登录\n");
scanf("%d", &choice);
if (choice == 1) {
query_balance(account);
} else if (choice == 2) {
deposit(account);
} else if (choice == 3) {
withdraw(account);
} else if (choice == 4) {
transfer(accounts, account_count, account);
} else if (choice == 5) {
change_password(account);
} else if (choice == 6) {
loan_apply(loans, &loan_count, account);
} else if (choice == 7) {
repay(loans, loan_count, account);
} else if (choice == 8) {
break;
} else {
printf("无效选择!\n");
}
}
} else {
printf("登录失败!用户名或密码错误!\n");
}
} else if (choice == 2) {
user_register(accounts, &account_count);
} else if (choice == 3) {
int index = admin_login(admins, admin_count);
if (index != -1) {
while (1) {
printf("\n欢迎登录,%s!\n", admins[index].name);
printf("1.用户信息管理 2.贷款信息管理 3.返回上级菜单\n");
scanf("%d", &choice);
if (choice == 1) {
user_manage(accounts, account_count);
} else if (choice == 2) {
loan_manage(loans, loan_count);
} else if (choice == 3) {
break;
} else {
printf("无效选择!\n");
}
}
} else {
printf("登录失败!管理员名或密码错误!\n");
}
} else if (choice == 4) {
printf("谢谢使用,再见!\n");
break;
} else {
printf("无效选择!\n");
}
}
return 0;
}
```
以上代码仅为示例,实际应用中还需根据具体需求进行修改和完善。
阅读全文