资源描述
基于C/C++实现银行管理系统
申明:
1. 本程序仅限个人交流和学习使用,切勿用于商业用途,一切源代码已经给出,能够依据自己需要合适进行修改,但请保留原来作者版权信息。
2. 程序里面难免有部分考虑不周到地方,假如能够经过QQ或邮箱通知,本人将万分感谢。
聊城大学 软件工程(和惠普合作培养软件开发)
孙宇鹏
6月
一. 程序设计要求:
设计并实现简单银行存取款系统,系统主界面包含登录和注册两个选项,选择登录,提醒用户输入银行帐号和密码,验证经过后进入主界面,主界面包含:存款、取款、查询余额、历史统计、修改密码等功效。注册功效让用户输入帐号和密码,在注册时要验证帐号是否已经存在。全部数据能够保留在文件中,退出系统后再次运行系统,之前注册用户和存款信息全部存在。
二. 程序实现大致思绪:
1. 登陆界面和主界面设计采取一行行printf输出。
2. 登陆界面->主界面切换采取system(“cls”)函数。
3. 主界面全部操作全部包含到了文件操作,所以采取3个文件分开储存和读取方法。
(1) 存取款和查询余额:
(2) 历史统计:
(3) 账户密码信息:
三、程序算法和数据结构:
1.登陆用户:
从文件里面读取信息,把用户名和密码分别压栈,读取结束,验证用户名字和密码和栈顶元素是否匹配,不匹配栈顶元素出栈,直到栈容量是空时候。返回信息:用户或密码错误。
2.存款取款和余额查询:
每次建立一个新用户时候,初始化此用户全部信息。(关键是针正确余额)。从文件里面读取信息,采取二叉树结构搜索用户。来实现查找。
采取文件重新写入来实现存取款。
四、程序部分设计技巧和注意情况:
为了使程序模块化,我们要采取多文件开发。也就是说,为了使程序简练,把部分需要反复利用代码写到.h 文件里面。
五、代码实现:
#include "stdafx.h"
#include <iostream>
#include <map>
#include <stack>
#include <sstream>
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <fstream>
#include <vector>
#include <algorithm>
#include "Welcome_UI.h"
#include "Register_UI.h"
#include "Sign_UI.h"
#include "Secondary_UI.h"
using namespace std;
class Bank_Management
{
private:
string new_name;
string pre_name;
int password;
double extra_money;
public:
void creat_user(string name, int pass);
int sign_user(string name, int pass);
double account_balance();
void withdraw_money();
void query_account();
void change_password();
};
Bank_Management operation[1024];
ofstream Rec_history("Historical records.txt", ios::in | ios::out | ios::app);
int main_ui()
{
printf("\n\n");
printf("\t\t %cWelcome to use Bank Management System!%c\n", 3, 3);
printf("\t\t\t %cCopyright by SunYu_peng!%c\n", 4, 4);
printf("\t\t\t%c+ + + + + + + + + + + + + + + +%c\n", 4, 4);
printf("\t\t\t+ Here is the system menu! +\n");
printf("\t\t\t%c+ + + + + + + + + + + + + + + +%c\n", 4, 4);
printf("\t\t\t+ +\n");
printf("\t\t\t+ 1.Deposit money +\n");
printf("\t\t\t+ +\n");
printf("\t\t\t+ 2.Withdraw money +\n");
printf("\t\t\t+ +\n");
printf("\t\t\t+ 3.Query balance +\n");
printf("\t\t\t+ +\n");
printf("\t\t\t+ 4.Historical records +\n");
printf("\t\t\t+ +\n");
printf("\t\t\t+ 5.Change password +\n");
printf("\t\t\t+ +\n");
printf("\t\t\t+ 6.Save and exit +\n");
printf("\t\t\t+ +\n");
printf("\t\t\t%c+ + + + + + + + + + + + + + + +%c\n", 4, 4);
printf("\t\t Please enter the order that you want: ");
int order;
cin >> order;
if (order == 1)
{
system("cls");
operation[0].account_balance();
}
else if (order == 2)
{
system("cls");
operation[0].withdraw_money();
}
else if (order == 3)
{
operation[0].query_account();
}
else if (order == 4)
{
system("cls");
printf("\n\n\n\n");
Secondary_ui();
printf("\tAll dates have been saved in the file(Historical records.txt)");
Sleep(5000);
system("cls");
}
else if (order == 5)
{
operation[0].change_password();
}
else if (order == 6)
{
Rec_history << "The user decided to exit the system!\n";
system("cls");
return 0;
}
else
{
Rec_history << "The user has done a wrong operation!The system exited!\n";
system("cls");
return 0;
}
}
void Bank_Management::creat_user(string name, int pass)
{
new_name = name;
password = pass;
}
int Bank_Management::sign_user(string name, int pass)
{
ifstream OpenFile("User name and password.txt");
string get_name;
int get_pass;
stack <string> sign;
stringstream n;
string pass_str;
n << pass;
n >> pass_str;
while (OpenFile >> get_name >> get_pass)
{
stringstream temp;
string temp_str;
temp << get_pass;
temp >> temp_str;
string all_str = get_name + ' ' + temp_str;
sign.push(all_str);
}
while (sign.size() != 0)
{
if (name + ' ' + pass_str == sign.top())
{
pre_name = name;
Rec_history << "The user : " << name << " " << "has landed in the System" << "."<<"\n";
return true;
}
else
{
sign.pop();
}
}
OpenFile.close();
}
double Bank_Management::account_balance()
{
printf("\n\n");
Secondary_ui();
printf("\t\t Please enter the money that you want ot deposit: ");
double _money;
cin >> _money;
ifstream Deposit_money("Account balance.txt");
map <string, double> Deposit_Money;
map <string, double> ::iterator it;
string temp;
while (Deposit_money >> temp >> extra_money)
{
if (temp == pre_name)
{
extra_money = extra_money + _money;
Rec_history << "The user : " << temp << " " << "has deposited " << _money << " Yuan\n";
}
Deposit_Money.insert(pair<string, double>(temp, extra_money));
}
Deposit_money.close();
ofstream DepositMoney("Account balance.txt");
for (it = Deposit_Money.begin(); it != Deposit_Money.end(); it++)
{
DepositMoney << it->first << "\t" << it->second << "\n";
}
DepositMoney.close();
Sleep(1000);
system("cls");
return 0;
}
void Bank_Management::withdraw_money()
{
printf("\n\n");
Secondary_ui();
printf("\t\t Please enter the money that you want to withdraw: ");
double _money;
cin >> _money;
string temp;
ifstream Withdraw_money("Account balance.txt");
map <string, double> Withdraw_Money;
map <string, double> ::iterator it;
while (Withdraw_money >> temp >> extra_money)
{
if (temp == pre_name)
{
extra_money = extra_money - _money;
Rec_history << "User : " << temp << " " << "has withdrawed " << _money << " Yuan\n";
}
Withdraw_Money.insert(pair<string, double>(temp, extra_money));
}
Withdraw_money.close();
ofstream WithdrawMoney("Account balance.txt");
for (it = Withdraw_Money.begin(); it != Withdraw_Money.end(); it++)
{
WithdrawMoney << it->first << "\t" << it->second << "\n";
}
WithdrawMoney.close();
Sleep(1000);
system("cls");
}
void Bank_Management::query_account()
{
system("cls");
printf("\n\n\n\n");
Secondary_ui();
ifstream Read_only("Account balance.txt");
string temp;
double extra;
cout << "\t\t\t\t" << "Name" << "\t" << "Account\n";
while (Read_only >> temp >> extra)
{
if (temp == pre_name)
{
cout << "\t\t\t\t" << temp << "\t" << extra << endl;
}
}
Read_only.close();
Rec_history << "The user : " << temp << " " << "has Queried her/his accout!\n";
Sleep(5000);
system("cls");
}
void Bank_Management::change_password()
{
ifstream OpenFile("User name and password.txt");
string temp;
int pass;
map <string, int> change_password;
map <string, int> ::iterator it;
system("cls");
printf("\n\n\n\n");
Secondary_ui();
printf("\t\tPlease enter the new password you want:");
double new_pass;
cin >> new_pass;
while (OpenFile >> temp >> pass)
{
if (temp == pre_name)
{
pass = new_pass;
}
change_password.insert(pair<string, int>(temp, pass));
}
OpenFile.close();
ofstream res_pass("User name and password.txt");
for (it = change_password.begin(); it != change_password.end(); it++)
{
res_pass << it->first << "\t" << it->second << "\n";
}
Rec_history << "The user " << pre_name << " " << "has changed his/her password!\n";
Sleep(1000);
system("cls");
}
int main()
{
string name;
int password;
int creat_num;
Rec_history << "Software begin to load!\n";
while (true)
{
welcome_ui();
int order;
cin >> order;
if (order == 1)
{
printf("\t\t Please enter the previous user's name:\t");
cin >> name;
printf("\t\t Please enter previous user's password:\t");
cin >> password;
if (operation[0].sign_user(name, password) == 1)
{
system("cls");
main_ui( );
}
else
{
printf("\tSorry,you have done a wrong operation!Please restart the system again! \a\n");
Rec_history << "The user whose name is " << name << " " << "has failed to enter the system.\n";
Sleep(1000);
system("cls");
}
}
else if (order == 2)
{
system("cls");
register_ui();
ofstream Cre_user;
Cre_user.open("User name and password.txt", ios::in | ios::out | ios::app);
ofstream Ini_account;
Ini_account.open("Account balance.txt");
printf("\t\t Please enter the user's quantity you want : ");
cin >> creat_num;
for (int i = 0; i<creat_num; i++)
{
printf("\t\t Please enter the new %d-user's name:\t", i + 1);
cin >> name;
printf("\t\t Please enter the %d-user's password:\t", i + 1);
cin >> password;
Cre_user << name << "\t" << password << "\n";
Ini_account << name << "\t" << 0 << "\n";
Rec_history << "The system has created a user whose name is " << name << "."<<"\n";
Rec_history << "The system has initialized " << name << "'s" << " account\n";
}
Cre_user.close();
Ini_account.close();
printf("\tWe have saved all operations!Please restart the system again!");
Sleep(1000);
system("cls");
}
else if (order == 3)
{
Rec_history << "The user decided to exit the system!\n";
return 0;
}
else
{
printf("\tSorry,you have done a wrong operation!Please restart the system again! \a\n");
Rec_history << "The user has done a wrong operation!The system exited!\n";
return 0;
}
}
return 0;
}
展开阅读全文