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