精华内容
下载资源
问答
  • c++银行账户管理系统

    2011-04-21 14:38:57
    使用c++制作完成的银行帐户管理系统,初步测试可以
  • C++银行账户管理系统

    2010-12-01 15:00:49
    可能不太完善,仅供参考。含有普通用户和管理者两种访问身份
  • c++银行账户管理系统,可执行长整型运算的操作。
  • 可以进行长整型运算的银行账户管理系统c++大作业。
  • 银行账户管理系统,分为客户模式和管理员模式 可实现模拟ATM机的功能,和管理员的账户管理,日志查看等 此为校内优秀毕业设计,含论文、PPT、演示程序 演示程序的用法及环境配置请访问:www.worldofbeside.com
  • C++银行账户管理系统分为几个章节 实验课改写了 4-8 章 下面是在改写过程中体会到了C++与Java的不同之处,对于理解Java特性和C++的不同、相同有很大作用

    C++的银行账户管理系统分为几个章节
    在这里插入图片描述
    实验课改写了 4-8 章

    下面是在改写过程中体会到了C++与Java的不同之处,对于理解Java特性和C++的不同、相同有很大作用

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 银行账户管理系统 c++

    2018-06-13 11:20:58
    银行账户管理系统,使用vs2015写的,系统功能包括增加用户,删除用户,修改账户余额,用户需要账号密码登陆,需要做C++课程设计的可以拿去看看。
  • 期末 C++ 课程设计作业。 使用C++完成一个银行账户管理系统
  • 银行账户管理系统

    2014-02-18 16:54:46
    C++ 银行账户管理系统 课程设计 计算机
  • 北科C++课程实现个人银行账户管理系统的实验报告。北科C++课程实现个人银行账户管理系统的实验报告。北科C++课程实现个人银行账户管理系统的实验报告。北科C++课程实现个人银行账户管理系统的实验报告
  • c++的文件,派生等写出一个银行账户管理系统的课设,vs2019运行,不需要配置环境复制就可以用
  • 银行账户管理系统C++

    2012-10-20 10:18:42
    银行账户管理程序 主要内容: 问题描述 设计一个银行账户管理程序,账户的信息有账号(唯一)、姓名、余额、身份证号码、单位、电话号码、地址等, 允许用户进行如下操作:开户、销户、存款、取款、转账、查询...
  • 青岛理工大学 C++ 面向对象课程设计报告 院系 计算机工程学院 专业 软件工程 学 生 姓 名 华逸帆 班级 软件 121 班 学号 201207185 题目 银行账户管理系统 起迄日期 2014.6.23 2013.7.5 设计地点 计算机学院机房 指 ...
  • C++基于ATM的个人银行账户管理系统

    千次阅读 多人点赞 2020-05-07 17:15:54
    C++基于ATM的个人银行账户管理系统

    继承层次结构

    Account作为基类,存储基本信息
    Debit为储蓄卡账户
    Credit为信用卡账户,结构体privilege将Credit分为common账户和vip账户
    ATM管理这两类账户,同时将信息记录在文件
    在这里插入图片描述

    程序主要功能

    在这里插入图片描述
    注意:

    1. 姓名与地址没有使用按行输入,不允许出现空格
    2. 账户、密码以及银行管理员密码等数字,不允许以0开头
      其中账户、密码、银行管理员密码最多10位
      电话号固定11位,身份证号固定18位,且不能出现字母
    3. 个别设计较为繁琐,还有很多地方存在漏洞,只进行了简单的验证

    程序存在的问题:

    1. 开始时思路并不是特别清晰,导致程序结构和设计上还存在些问题
    2. 为了代码重用,使用多层次的继承结构,但是在继承类中不可避免使用基类私有成员,这就不可避免使用友元,所以以牺牲了部分程序的封装性,以及模块化为代价,在程序设计时需要仔细斟酌。
    /**
    *
    *@file     ATM.cpp
    *@date     2020/5/5
    **/
    
    #include<iostream>
    #include<fstream>
    #include<cstdlib>
    #include<string>
    #include<vector>
    #include<iomanip>
    #include<iterator>
    using namespace std;
    
    const char *filename1 = "debitClient.txt";     //储蓄卡客户文件
    const char *filename2 = "creditClient.txt";    //信用卡客户文件
    
    //个人账户基本信息
    class Account
    {
    private:
    	friend class ATM;
    	friend class Debit;
    	friend class Credit;
    	long acctnum, psword;                //账户、密码
    	long long telnum;                    //电话
    	long long idnum;                     //身份证
    	string name, addr;                   //姓名、地址(....输入时不能有空格!)
    	char sex;                            //性别(m-男,f-女)
    protected:
    	long retPsword() { return psword; }
    	long retAccount() { return acctnum; }
    public:
    	Account(long acct, long ps, string n = "null", string a = "null", long long tel = 0, long long id = 0, char s = 'f') :
    		acctnum(acct), psword(ps), name(n), addr(a), telnum(tel), idnum(id), sex(s) {}
    	~Account();
    	void createAcct();                                                                                  //账户创建
    	void perfectInfo();                                                                                 //基本信息完善
    	void showAccount() const;                                                                           //基本信息显示        
    	bool Match();                                                                                       //判断密码是否匹配,用于账户登录 
    
        //用于文件I/O的友元函数
    	friend ostream& operator<<(ostream& fout, const Debit& a);
    	friend istream& operator>>(istream& fin, Debit& a);
    	friend ostream& operator<<(ostream& fout, const Credit& a);
    	friend istream& operator>>(istream& fin, Credit& a);
    };
    
    //储蓄卡账户
    class Debit :public Account
    {
    private:
    	friend class ATM;
    	double balance;               //账户余额
    public:
    	Debit(long acct = 0, long ps = 0, double bal = 0, string n = "null", string a = "null", long tel = 0, long long id = 0, char s = 'f') :
    		Account(acct, ps, n, a, tel, id, s), balance(bal) {}
    	void Deposit();                                                                                               //存款
    	void Withdraw();                                                                                              //取款     
    	void queryBalance() const;                                                                                    //余额查询
    
    																												  //用于文件I/O的友元函数
    	friend ostream& operator<<(ostream& fout, const Debit& a);
    	friend istream& operator >> (istream& fin, Debit& a);
    };
    
    //用于限定信用卡等级及特权p1-common,p2-vip
    struct privilege {
    	string scale;              //账户等级
    	double toploan;            //账户最大透支额
    	double floorrate;          //账户最小透支利率
    	bool queueRequired;        //是否需要排队
    }p1{ "common",1000,0.2,true }, p2{ "vip",5000,0.1,false };
    
    //信用卡账户
    class Credit :public Account
    {
    private:
    	friend class ATM;
    	double balance;             //账户余额
    	double maxLoan;             //透支额度
    	double rate;                //透支利率
    	double owes;                //现有透支
    	privilege p;                //账户等级
    public:
    	Credit(long acct = 0, long ps = 0, privilege = p1, string n = "null", string a = "null", long long tel = 0, long long id = 0, char s = 'f', double bal = 0, double maxL = 500, double ra = 0.3, double owe = 0) :
    		Account(acct, ps, n, a, tel, id, s), balance(bal), maxLoan(maxL), rate(ra), owes(owe), p(p1) {}
    	void Deposit();                                                                     //存款
    	void Withdraw();                                                                    //取款
    	void Repay();                                                                       //偿还透支
    	void queryBalance() const;                                                          //余额查询
    	void showPrivilege() const;                                                         //等级和特权查询
    	void setMAXLoan();                                                                  //设置透支额度
    	void setRate();                                                                     //设置透支利率
    	void upgrade();                                                                     //账户升级
    	
    																						//用于文件I/O的友元函数
    	friend ostream& operator<<(ostream& fout, const Credit& a);
    	friend istream& operator >> (istream& fin, Credit& a);
    };
    
    //ATM
    class ATM
    {
    private:
    	static const int key;          //银行管理员密码
    	vector<Credit> Credits;        //信用卡账户管理
    	vector<Debit> Debits;          //储蓄卡账户管理
    protected:
    	void debitMenu();               //储蓄卡界面
    	void debitOperate(Debit& d);    //储蓄卡操作集合
    	void creditMenu();              //信用卡界面
    	void creditOperate(Credit& c);  //信用卡操作集合
    	bool bankAuthority();           //银行管理员授权
    	void writeFile();               //文件写入
    	void readFile();                //读取文件
    public:
    	~ATM();
    	void createDebit();             //创建储蓄卡账户
    	void createCredit();            //创建信用卡账户
    	void queryCredit();             //储蓄卡信息查询
    	void queryDebit();              //信用卡信息查询
    	void deleteDebit();             //删除储蓄卡账户
    	void deleteCredit();            //删除信用卡账户
    	void collectInfo();             //账户信息汇总
    	void loginAcct();               //账户登录
    	void menu();                    //主界面
    	void ATMfuncation();            //ATM功能
    	void disp();                    //开始界面
    	void exitdisp();                //结束界面                       
    };
    
    const int ATM::key = 215000;     //银行管理员密码
    
    //*******************************方法实现*******************************
    
    //设置浮点数输出格式
    void setFormat()
    {
    	cout << setiosflags(ios::fixed)
    		<< setprecision(2);
    }
    
    void Account::createAcct()
    {
    	cout << "新建账号:______\b\b\b\b\b\b";
    	cin >> acctnum;
    	cout << "密码:______\b\b\b\b\b\b";
    	cin >> psword;
    }
    
    void Account::perfectInfo()
    {
    	cout << "请完善账户信息:\n";
    	cout << "请输入姓名:_____________\b\b\b\b\b\b\b\b\b";
    	cin >> name;
    	cout << "请输入电话号码:_____________\b\b\b\b\b\b\b\b\b";
    	cin >> telnum;
    	cout << "请输入身份证号:______________\b\b\b\b\b\b\b\b\b\b";
    	cin >> idnum;
    	cout << "请输入家庭住址:______\b\b\b\b\b\b";
    	cin >> addr;
    	cout << "请输入性别(m for man, f for female):___\b\b\b";
    	cin >> sex;
    }
    
    Account::~Account()
    {
    	name.clear();
    	addr.clear();
    }
    
    bool Account::Match()
    {
    	long pass;
    	cout << "请输入密码:_________\b\b\b\b\b\b\b\b\b";
    	cin >> pass;
    	int cx = 4;
    	while ((pass != psword) && cx) {
    		printf("密码错误,您还剩余%d次机会。\n", cx);
    		cout << "请重新输入:_______\b\b\b\b\b\b\b";
    		cin >> pass;
    		cx--;
    	}
    	if (cx == 0 && pass != psword) {
    		cout << "登录失败。\n";
    		return false;
    	}
    	cout << "登录成功。\n";
    	return true;
    }
    
    void Account::showAccount() const
    {
    	cout << "账户:" << acctnum
    		<< "\n姓名:" << name
    		<< "\n性别:" << sex
    		<< "\n电话:" << telnum
    		<< "\n身份证号:" << idnum
    		<< "\n住址:" << addr << endl;
    }
    
    istream& operator>>(istream& fin, Debit& a)
    {
    	fin >> a.acctnum >> a.psword >> a.name >> a.sex >> a.telnum >> a.idnum >> a.addr >> a.balance;
    	return fin;
    }
    
    ostream& operator<<(ostream& fout, const Debit& a)
    {
    	fout << setiosflags(ios::fixed) << setprecision(2);
    	fout << a.acctnum << " "
    		<< a.psword << " "
    		<< a.name << " "
    		<< a.sex << " "
    		<< a.telnum << " "
    		<< a.idnum << " "
    		<< a.addr << " "
    		<< a.balance << endl;
    	return fout;
    }
    
    void Debit::queryBalance() const
    {
    	cout << "账户余额:" << balance << endl;
    }
    
    void Debit::Withdraw()
    {
    	double m;
    	cout << "请输入取款金额:___\b\b\b";
    	cin >> m;
    	if (m < 0) {
    		cout << "取款金额输入错误\n"
    			<< "取款失败。\n";
    	}
    	else {
    		if (m > balance) {
    			cout << "取款金额超过账户所剩余额\n"
    				<< "取款失败。\n";
    		}
    		else {
    			balance -= m;
    			cout << "取款成功。\n"
    				<< "账户余额:" << balance << endl;
    		}
    	}
    }
    
    void Debit::Deposit()
    {
    	double m;
    	cout << "请输入存款金额:___\b\b\b";
    	cin >> m;
    	if (m < 0) {
    		cout << "存款金额输入错误\n"
    			<< "存款取消.\n";
    	}
    	else {
    		cout << "1 for 1~2 month, rate 0.02\n"
    			<< "2 for 3~5 month, rate 0.05\n"
    			<< "3 for 6~12 month, rate 0.08\n"
    			<< "请输入存款选择:_\b";
    
    		//存款利率选择
    		int ans;
    		double rat;
    		cin >> ans;
    		if (ans < 1 && ans>3) {
    			cout << "错误选择,存款取消!\n";
    			return;
    		}
    		else if (ans == 1) rat = 0.02;
    		else if (ans == 2) rat = 0.05;
    		else if (ans == 3) rat = 0.08;
    
    		m *= (1 + rat);
    		balance += m;
    		cout << "存款成功.\n"
    			<< "账户余额:" << balance << endl;
    	}
    }
    
    ostream& operator<<(ostream & fout,const Credit & a)
    {
    	fout << setiosflags(ios::fixed) << setprecision(2);
    	fout << a.acctnum << " "
    		<< a.psword << " "
    		<< a.name << " "
    		<< a.sex << " "
    		<< a.telnum << " "
    		<< a.idnum << " "
    		<< a.addr << " "
    		<< a.balance << " "
    		<< a.maxLoan << " "
    		<< a.rate << " "
    		<< a.owes << " "
    		<< a.p.scale << " " << a.p.floorrate << " " << a.p.toploan << " " << a.p.queueRequired << endl;
    	return fout;
    }
    
    istream& operator>>(istream & fin, Credit& a)
    {
    	fin >> a.acctnum >> a.psword >> a.name >> a.sex >> a.telnum >> a.idnum >> a.addr >> a.balance
    		>> a.maxLoan >> a.rate >> a.owes >> a.p.scale >> a.p.floorrate >> a.p.toploan >> a.p.queueRequired;
    	return fin;
    }
    
    void Credit::upgrade()
    {
    	if (p.scale == "vip") {
    		cout << "账户已达最高等级,无法继续升级。\n";
    		return;
    	}
    	p = p2;
    	cout << "升级成功。\n";
    }
    
    void Credit::queryBalance() const
    {
    	cout << "账户余额:" << balance
    		<< "\t透支额度:" << maxLoan
    		<< "\t利率:" << rate
    		<< "\t透支金额:" << owes << endl;
    }
    
    void Credit::Repay()
    {
    	double owe; //偿还金额
    
    	cout << "透支金额:" << owes << "\t账户余额:" << balance << endl;
    	cout << "请输入偿还金额:__\b\b";
    	cin >> owe;
    
    	if (owe > owes) {
    		cout << "超过实际透支金额,偿还取消。\n";
    		return;
    	}
    	cout << "是否使用账户余额偿还透支(1 for Yes, 2 for No):__\b\b";
    	int ans;
    	cin >> ans;
    	if (ans != 1 && ans != 2) {
    		cout << "选择错误,偿还取消。\n";
    		return;
    	}
    
    	//使用账户余额还款
    	else if (ans == 1) 
    	{
    		//账户余额足够
    		if (balance >= owe) 
    		{
    			balance -= owe;
    			owes -= owe;
    			cout << "偿还成功。\n"
    				<< "账户余额:" << balance
    				<< "\t透支金额:" << owes << endl;
    		}
    		else 
    		{
    			//账户余额不足
    			cout << "账户余额不足,是否将剩余部分补齐(1 for Yes, 2 for No):__\b\b";
    			cin >> ans;
    			if (ans == 1) 
    			{
    				balance = 0;
    				owes -= owe;
    				cout << "偿还成功。"
    					<< "账户余额:" << balance
    					<< "\t透支金额:" << owes << endl;
    			}
    			else 
    			{
    				cout << "偿还失败。\n";
    			}
    		}
    	}
    
    	//不使用账户余额还款
    	else {
    		cout << "是否将相应数额存入账户(1 for Yes, 2 for No)__\b\b";
    		cin >> ans;
    		if (ans == 1) {
    			cout << "偿还成功。"
    				<< "账户余额:" << balance
    				<< "\t透支金额:" << owes << endl;
    		}
    		else {
    			cout << "偿还失败。\n";
    		}
    	}
    }
    
    void Credit::Withdraw()
    {
    	double m;  //取款金额
    
    	cout << "请输入取款金额:___\b\b\b";
    	cin >> m;
    
    	//取款金额小于账户余额
    	if (m <= balance) {
    		balance -= m;
    		cout << "取款成功。\n"
    			<< "账户余额:" << balance << endl;
    	}
    
    	//取款金额大于账户余额
    	else {
    		cout << "取款金额超过账户剩余,"
    			<< "是否进行透支(1 for Yes, 2 for No):___\b\b\b";
    		int ans;
    		cin >> ans;
    		if (ans == 1) {
    			if (m > (balance + maxLoan - owes)) {
    				cout << "超过透支上限,"
    					<< "取款失败。\n";
    			}
    			else {
    				double interest;   //透支利息
    				m -= balance;
    				interest = m*rate;
    				owes += m + interest;
    				balance = 0;
    				cout << "取款成功。\n"
    					<< "账户余额:" << balance
    					<< "\t透支金额:" << owes << endl;
    			}
    		}
    		else
    			cout << "取款失败。\n";
    	}
    }
    
    void Credit::Deposit()
    {
    	double m;  //存款金额
    
    	cout << "请输入存款金额:___\b\b\b";
    	cin >> m;
    	if (m < 0) {
    		cout << "存款金额输入错误\n"
    			<< "存款取消。\n";
    	}
    	else {
    		cout << "1 for 1~2 month, rate 0.02\n"
    			<< "2 for 3~5 month, rate 0.05\n"
    			<< "3 for 6~12 month, rate 0.08\n"
    			<< "请输入存款选择:_\b";
    
    		//存款利率选择
    		int ans;
    		double rat;
    		cin >> ans;
    		if (ans < 1 && ans>3) {
    			cout << "错误选择,存款取消!\n";
    			return;
    		}
    		else if (ans == 1) rat = 0.02;
    		else if (ans == 2) rat = 0.05;
    		else if (ans == 3) rat = 0.08;
    
    		m *= (1 + rat);
    		balance += m;
    		cout << "存款成功.\n"
    			<< "账户余额:" << balance << endl;
    	}
    }
    
    void Credit::showPrivilege() const
    {
    	cout << "等级:" << p.scale
    		<< "\n最高透支金额:" << p.toploan
    		<< "\n最低利率:" << p.floorrate
    		<< "\n是否需要排队:";
    	if (p.queueRequired == 0) cout << "false\n";
    	else cout << "true\n";
    }
    
    void Credit::setMAXLoan()
    {
    	double m;
    	cout << "请设置透支金额:__\b\b";
    	cin >> m;
    
    	//账户等级限定最大额度
    	if (m<0 || m > p.toploan)
    		cout << "超限,设置失败。\n";
    	else {
    		maxLoan = m;
    		cout << "设置成功。\n";
    	}
    }
    
    void Credit::setRate()
    {
    	double r;
    	cout << "利率区间" << p.floorrate << "~0.3\n";
    	cout << "设置利率:__\b\b";
    	cin >> r;
    	if (r > 0 && r < p.floorrate)
    		cout << "设置超出等级限制,设置失败。\n";
    	else if (r > 0.3 && r < 0)
    		cout << "请输入合法数字。\n";
    	else {
    		rate = r;
    		cout << "设置成功。\n";
    	}
    }
    
    void ATM::readFile()
    {
    	ifstream fin1("debitClient.txt");
    	if (!fin1) {
    		cout << "文件未打开!\n";
    		exit(EXIT_FAILURE);
    	}
    	for (Debit d; fin1 >> d;)
    		Debits.push_back(d);
    
    	ifstream fin2("creditClient.txt");
    	if (!fin2) {
    		cout << "文件未打开!\n";
    		exit(EXIT_FAILURE);
    	}
    	for (Credit d; fin2 >> d;)
    		Credits.push_back(d);
    
    	fin1.close();
    	fin2.close();
    }
    
    void ATM::writeFile()
    {
    	ofstream fout1;
    	fout1.open("debitClient.txt");
    	if (!fout1) {
    		cout << "文件未打开!\n";
    		exit(EXIT_FAILURE);
    	}
    	ostream_iterator<Debit> itrOut1(fout1);
    	copy(Debits.begin(), Debits.end(), itrOut1);
    	
    	ofstream fout2;
    	fout2.open("creditClient.txt");
    	if (!fout2) {
    		cout << "文件未打开!\n";
    		exit(EXIT_FAILURE);
    	}
    	ostream_iterator<Credit> itrOut2(fout2);
    	copy(Credits.begin(), Credits.end(), itrOut2);
    
    	fout1.close();
    	fout2.close();
    }
    
    void ATM::disp()
    {
    	readFile();
    	cout << endl << endl << endl << endl << endl;
    	cout << "                                         *******************************" << endl;
    	cout << "                                         *                             *" << endl;
    	cout << "                                         *    欢迎使用ATM存取一体机!   *" << endl;
    	cout << "                                         *                             *" << endl;
    	cout << "                                         *******************************" << endl << endl;
    	cout << "                                                    按Enter键继续!" << endl;
    	getchar();
    }
    
    void ATM::exitdisp()
    {
    	writeFile();
    	system("cls");
    	cout << endl << endl << endl << endl << endl;
    	cout << "                                         *******************************" << endl;
    	cout << "                                         *                             *" << endl;
    	cout << "                                         *    感谢您的使用!            *" << endl;
    	cout << "                                         *                             *" << endl;
    	cout << "                                         *******************************" << endl << endl;
    }
    
    bool ATM::bankAuthority()
    {
    	cout << "请输入银行管理员密码,获得授权:______\b\b\b\b\b\b";
    	int k;
    	cin >> k;
    	int cx = 4;
    	int flag = 1;
    	while (flag&&cx) {
    		if (k == key) {
    			flag = 0;
    			break;
    		}
    		printf("密码错误,您还剩余%d次机会。\n", cx);
    		cout << "请重新输入:_______\b\b\b\b\b\b\b";
    		cin >> k;
    		cx--;
    	}
    	if (flag == 1) {
    		cout << "授权失败,无法操作。\n";
    		return false;
    	}
    	cout << "授权成功,请继续操作。\n";
    	return true;
    }
    
    void ATM::debitMenu()
    {
    	system("cls");
    	cout << endl << endl << endl << endl << "                        请选择操作序号!(0~4)" << endl;
    	cout << "                           **********************************************************" << endl;
    	cout << "                           *                                                        *" << endl;
    	cout << "                           *                    0.返回主界面                        *" << endl;
    	cout << "                           *                    1.存款                              *" << endl;
    	cout << "                           *                    2.取款                              *" << endl;
    	cout << "                           *                    3.显示余额                          *" << endl;
    	cout << "                           *                    4.显示账户信息                      *" << endl;
    	cout << "                           *                                                        *" << endl;
    	cout << "                           **********************************************************" << endl;
    }
    
    void ATM::debitOperate(Debit& d)
    {
    	//进入用户界面
    	debitMenu();
    
    	int choice;
    	cout << "              请输入您的选择:";
    	cin >> choice;
    	while (choice != 0) {
    		cout << "*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *\n";
    		switch (choice)
    		{
    		case 1:
    			d.Deposit();
    			break;
    		case 2:
    			d.Withdraw();
    			break;
    		case 3:
    			d.queryBalance();
    			break;
    		case 4:
    			d.showAccount();
    			break;
    		default:
    			cout << "输入错误!\n";
    		}
    		cout << "*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *\n\n";
    		cout << "              请输入您的选择:";
    		cin >> choice;
    	}
    	//返回主界面
    	menu();
    }
    
    void ATM::creditOperate(Credit& c)
    {
    	//进入用户界面
    	creditMenu();
    
    	int choice;
    	cout << "              请输入您的选择:";
    	cin >> choice;
    	while (choice != 0) {
    		cout << "*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *\n";
    		switch (choice)
    		{
    		case 1:
    			c.Deposit();
    			break;
    		case 2:
    			c.Withdraw();
    			break;
    		case 3:
    			c.queryBalance();
    			break;
    		case 4:
    			c.showAccount();
    			break;
    		case 5:
    			c.Repay();
    			break;
    		case 6:
    			c.showPrivilege();
    			break;
    		case 7:
    			if (bankAuthority())
    				c.setMAXLoan();
    			break;
    		case 8:
    			if (bankAuthority())
    				c.setRate();
    			break;
    		case 9:
    			if (bankAuthority())
    				c.upgrade();
    			break;
    		default:
    			cout << "输入错误!\n";
    		}
    		cout << "*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *\n\n";
    		cout << "              请输入您的选择:";
    		cin >> choice;
    	}
    
    	//返回主界面
    	menu();
    }
    
    void ATM::creditMenu()
    {
    	system("cls");
    	cout << endl << endl << endl << endl << "                        请选择操作序号!(0~8)" << endl;
    	cout << "                           **********************************************************" << endl;
    	cout << "                           *                                                        *" << endl;
    	cout << "                           *                    0.返回主界面                        *" << endl;
    	cout << "                           *                    1.存款                              *" << endl;
    	cout << "                           *                    2.取款                              *" << endl;
    	cout << "                           *                    3.显示余额                          *" << endl;
    	cout << "                           *                    4.显示信息                          *" << endl;
    	cout << "                           *                    5.偿还透支                          *" << endl;
    	cout << "                           *                    6.显示信用卡等级                    *" << endl;
    	cout << "                           *                    7.设置透支额度                      *" << endl;
    	cout << "                           *                    8.设置利率                          *" << endl;
    	cout << "                           *                    9.升级                              *" << endl;
    	cout << "                           *                                                        *" << endl;
    	cout << "                           **********************************************************" << endl;
    }
    
    void ATM::queryDebit()
    {
    	cout << "输入查询账号:________\b\b\b\b\b\b\b";
    	long acct;
    	cin >> acct;
    	vector<Debit>::iterator it;
    	for (it = Debits.begin(); it != Debits.end(); it++)
    	{
    		if ((*it).retAccount() == acct) break;
    	}
    	if (it == Debits.end()) {
    		cout << "账号不存在。\n";
    		return;
    	}
    	(*it).showAccount();
    	(*it).queryBalance();
    }
    
    void ATM::queryCredit()
    {
    	cout << "输入查询账号:________\b\b\b\b\b\b\b";
    	long acct;
    	cin >> acct;
    	vector<Credit>::iterator it;
    	for (it = Credits.begin(); it != Credits.end(); it++)
    	{
    		if ((*it).retAccount() == acct) break;
    	}
    	if (it == Credits.end()) {
    		cout << "账号不存在。\n";
    		return;
    	}
    	(*it).showAccount();
    	(*it).queryBalance();
    }
    
    void ATM::collectInfo()
    {
    	cout << "\n***********************************账户基本信息表\n";
    	cout << "储蓄卡汇总:" << "\t账户个数:" << Debits.size() << "                      *\n";
    	for (auto it = Debits.begin(); it != Debits.end(); it++) {
    		cout << "账户:" << (*it).acctnum
    			<< "\t姓名:" << (*it).name << endl;
    	}
    	cout << endl;
    	cout << "信用卡汇总:" << "\t账户个数:" << Credits.size() << "                      *\n";
    	for (auto it = Credits.begin(); it != Credits.end(); it++) {
    		cout << "账户:" << (*it).acctnum
    			<< "\t姓名:" << (*it).name << endl;
    	}
    	cout << "*************************************************\n\n";
    }
    
    void ATM::deleteDebit()
    {
    	long acct, ps;
    	cout << "请输入账号:______\b\b\b\b\b\b\b";
    	cin >> acct;
    	vector<Debit>::iterator it;
    	for (it = Debits.begin(); it != Debits.end(); it++)
    	{
    		if ((*it).retAccount() == acct) break;
    	}
    	if (it == Debits.end()) {
    		cout << "账号不存在。\n";
    		return;
    	}
    	cout << "请输入密码:_______\b\b\b\b\b\b\b";
    	cin >> ps;
    	if (ps != (*it).retPsword()) {
    		cout << "密码错误,删除失败。\n";
    		return;
    	}
    	cout << "是否确认删除:___\b\b\b";
    	char ans;
    	cin >> ans;
    	if (ans == '否') {
    		cout << "取消删除。\n";
    		return;
    	}
    	Debits.erase(it);
    	cout << "删除成功。\n";
    }
    
    void ATM::deleteCredit()
    {
    	long acct, ps;
    	cout << "请输入账号:______\b\b\b\b\b\b\b";
    	cin >> acct;
    	vector<Credit>::iterator it;
    	for (it = Credits.begin(); it != Credits.end(); it++)
    	{
    		if ((*it).retAccount() == acct) break;
    	}
    	if (it == Credits.end()) {
    		cout << "账号不存在。\n";
    		return;
    	}
    	cout << "请输入密码:_______\b\b\b\b\b\b\b";
    	cin >> ps;
    	if (ps != (*it).retPsword()) {
    		cout << "密码错误,删除失败。\n";
    		return;
    	}
    	cout << "是否确认删除:___\b\b\b";
    	char ans;
    	cin >> ans;
    	if (ans == '否') {
    		cout << "取消删除。\n";
    		return;
    	}
    	Credits.erase(it);
    	cout << "删除成功。\n";
    }
    
    void ATM::loginAcct()
    {
    	cout << "请输入账号类型(c for Credit, d for Debit):___\b\b\b";
    	char t;
    	cin >> t;
    	cout << "请输入账号:_______\b\b\b\b\b\b\b\b";
    	long acct;
    	cin >> acct;
    	if (t == 'd') {
    		vector<Debit>::iterator it;
    		for (it = Debits.begin(); it != Debits.end(); it++)
    		{
    			if ((*it).retAccount() == acct) break;
    		}
    
    		if (it == Debits.end()) {
    			cout << "您所输入的账号不存在。\n";
    			return;
    		}
    		if ((*it).Account::Match())  debitOperate(*it);
    	}
    	else {
    		vector<Credit>::iterator it;
    		for (it = Credits.begin(); it != Credits.end(); it++)
    		{
    			if ((*it).retAccount() == acct) break;
    		}
    		if (it == Credits.end()) {
    			cout << "您所输入的账号不存在。\n";
    			return;
    		}
    		if ((*it).Account::Match())  creditOperate(*it);
    	}
    }
    
    void ATM::menu()
    {
    	system("cls");
    	cout << endl << endl << endl << endl << "                        请选择操作序号!(0~8)" << endl;
    	cout << "                           **********************************************************" << endl;
    	cout << "                           *                                                        *" << endl;
    	cout << "                           *                    0.退出                              *" << endl;
    	cout << "                           *                    1.创建储蓄账户                      *" << endl;
    	cout << "                           *                    2.创建信用账户                      *" << endl;
    	cout << "                           *                    3.删除储蓄账户                      *" << endl;
    	cout << "                           *                    4.删除信用账户                      *" << endl;
    	cout << "                           *                    5.查询储蓄账户                      *" << endl;
    	cout << "                           *                    6.查询信用账户                      *" << endl;
    	cout << "                           *                    7.账户登录                          *" << endl;
    	cout << "                           *                    8.账户信息汇总                      *" << endl;
    	cout << "                           *                                                        *" << endl;
    	cout << "                           **********************************************************" << endl;
    }
    
    void ATM::ATMfuncation()
    {
    	menu();
    	int choice;
    	cout << "              请输入您的选择:";
    	cin >> choice;
    	while (choice != 0) {
    		cout << "*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *\n";
    		switch (choice)
    		{
    		case 1:
    			createDebit();
    			break;
    		case 2:
    			createCredit();
    			break;
    		case 3:
    			deleteDebit();
    			break;
    		case 4:
    			deleteCredit();
    			break;
    		case 5:
    			if (bankAuthority())
    				queryDebit();
    			break;
    		case 6:
    			if (bankAuthority())
    				queryCredit();
    			break;
    		case 7:
    			loginAcct();
    			break;
    		case 8:
    			if (bankAuthority())
    				collectInfo();
    			break;
    		default:
    			cout << "输入错误!\n";
    		}
    		cout << "*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *\n";
    		cout << "              请输入您的选择:";
    		cin >> choice;
    	}
    }
    
    void ATM::createDebit()
    {
    	if (Debits.size() == Debits.max_size()) {
    		cout << "储蓄卡账户已达上限。";
    		return;
    	}
    	Debit t;
    	t.createAcct();
    	vector<Debit>::iterator it;
    	for (it = Debits.begin(); it != Debits.end(); it++)
    	{
    		if ((*it).retAccount() == t.acctnum) {
    			cout << "账户已存在,新建失败。\n";
    			return;
    		}
    	}
    	if (it == Debits.end())
    		cout << "账户创建成功。\n";
    
    	//基本信息完善
    	t.perfectInfo();
    	Debits.push_back(t);
    }
    
    void ATM::createCredit()
    {
    	if (Credits.size() == Credits.max_size()) {
    		cout << "信用卡账户已达上限。";
    		return;
    	}
    	Credit t;
    	t.createAcct();
    	vector<Credit>::iterator it;
    	for (it = Credits.begin(); it != Credits.end(); it++)
    	{
    		if ((*it).retAccount() == t.acctnum) {
    			cout << "账户已存在,新建失败。\n";
    			return;
    		}
    	}
    	if (it == Credits.end())
    		cout << "账户创建成功。\n";
    
    	cout << "请输入账号等级(1 for common,2 for vip):___\b\b\b";
    	int scale;
    	cin >> scale;
    	if (scale == 1) t.p = p1;
    	else t.p = p2;
    
    	//基本信息完善
    	t.perfectInfo();
    	Credits.push_back(t);
    }
    
    ATM::~ATM()
    {
    	Credits.clear();
    	vector<Credit>().swap(Credits);
    	Debits.clear();
    	vector<Debit>().swap(Debits);
    }
    //******************************************************************
    
    int main() {
    	setFormat();
    	ATM atm;
    	atm.disp();
    	atm.ATMfuncation();
    	atm.exitdisp();
    	system("pause");
    }
    
    展开全文
  • C++语言课程设计 题目 银行账户管理系统 班级信息与计算科学11xx 班 学号 11080602xx 姓名 x x 日期 2012 年1 月5 日 题目 银行账户管理系统 一题目介绍 问题描述设计开发一个银行账户管理系统账户的信息有账号唯一...
  • 程序包含功能: 实现储户开户、储户销户、账户登陆、修改密码、存取款、转账、查找账户 主菜单 开户(创建姓名、账号、密码) 登陆(获取账号、密码转到用户操作界面){包含... 查询(遍历所有账户信息) 退出程序
  • 大二上做的,很粗糙。只能用来应付课设吧大概。
  • 银行账户管理系统,储蓄账户管理系统,仅供参考
  • PAGE PAGE # 西安科技大学 C++语言课程设计 题目银行账户管理系统 班级信 计1102班 学号1 1 08060223 姓名 姜 圣 涛 日期2013年1月3日 一题目介绍 银行账户管理程序 问题描述 设计计一个银行账户管理程序账户的信息...
  • 1、模仿个人银行账户管理系统C++版本(第4章-第8章),使用Java语言重新实现该系统,比较C++与Java在实现上的异同,熟练掌握Java基础及语法。 2、根据系统需求的演化,逐步完善个人银行账户管理系统的功能,改进...

    要求:
    1、模仿个人银行账户管理系统的C++版本(第4章-第8章),使用Java语言重新实现该系统,比较C++与Java在实现上的异同,熟练掌握Java基础及语法。
    2、根据系统需求的演化,逐步完善个人银行账户管理系统的功能,改进代码,体会面向对象思想的封装、继承、多态特性在实际系统中的应用,初步掌握使用Java编写可复用、可扩展、可维护代码的基本技能。

    第四章
    1.Java里面没有c++ 里的namespace,而是换成了package。
    2.private,public等在Java里面需要单独写在每一个成员前面。
    3.c++ 里面void test (int _x) const{}时const指该函数不能修改类的成员,而Java 里面final void。
    4.test(){}时final表示该函数不能被重写。Java里没有const。
    5.Java里的输出是语句是System.out.println(变量名 + “字符串”)。
    6.c++ 里面建立类的对象可以直接:类名 对象名(参数),而Java里面需要:类名 对象名 = new 类名(参数)。

    package ob1;
    
    public class SavingsAccount {
    	//储蓄账户类
    	   private int id; //账号
    	   private double balance;//余额
    	   private double rate;//存款的年利率
    	   private int lastDate;		//上次变更余额的时期
    	   private double accumulation;	//余额按日累加之和
    	   //获得到指定日期为止的存款金额按日累积值
    	 	private double accumulate(int date){
    	 		return accumulation + balance * (date - lastDate);
    	 	}
    
    		//记录一笔帐,date为日期,amount为金额,desc为说明
    	    private void record(int date, double amount){
    	    	accumulation=accumulate(date);
    	    	lastDate=date;
    	    	amount = Math.floor(amount * 100 + 0.5) / 100;//保留小数点后两位
    	    	
    	    	balance += amount;
    	    	System.out.println(date+"\t#"+id+"\t"+amount+"\t"+balance);
    	    }
    		
    			
    
    		//构造函数
    		public SavingsAccount(int date, int id, double rate){
    			this.id=id;
    			this.balance=0;
    			this.rate=rate;
    			this.lastDate=date;
    			this.accumulation=0;
    			System.out.println(date+"\t#"+id+"is created");
    		}
    		public final int getId() { return id; }
    		public double getBalance() { return balance; }
    		public double getRate() { return rate; }
    
    			//存入现金
    		public void deposit(int date, double amount){
    			record(date, amount);
    		}
    			//取出现金
    		public void withdraw(int date, double amount){
    			if(amount > getBalance())
    				System.out.println("Error: not enough money");
    			else
    				record(date,-amount);
    		}
    			//结算利息,每年1月1日调用一次该函数
    		public void settle(int date){
    			double interest = accumulate(date) * rate / 365;	//计算年息
    			if (interest != 0)
    				record(date, interest);
    			accumulation = 0;
    		}
    			//显示账户信息
    		public void show(){
    			System.out.println("#"+id+"\tBalance: "+balance);
    		}
    		
    
    
    }
    
    package ob1;
    
    public class Run {
    	public static void main(String[] args){
    		//建立几个账户
    		SavingsAccount sa0=new SavingsAccount(1, 21325302, 0.015);
    		SavingsAccount sa1=new SavingsAccount(1, 58320212, 0.015);
    		//几笔账目
    		sa0.deposit(5, 5000);
    		sa1.deposit(25, 10000);
    		sa0.deposit(45, 5500);
    		sa1.withdraw(60, 4000);
    		//开户后第90天到了银行的计息日,结算所有账户的年息
    		sa0.settle(90);
    		sa1.settle(90);
    		//输出各个账户信息
    		sa0.show();
    		System.out.println("\n");
    		sa1.show();
    		System.out.println("\n");
    		
    }
    }
    
    展开全文
  • 1.Java用包package来管理处存文件 2.C++中不可更改的函数用const,但Java中没有const,用final表示该函数不可重写 3.Java中函数声明与函数体不能分离(除抽象类,接口等) 4.cout与System.out.println(变量名 + ...

    PersonalBank1

    1.Java用包package来管理处存文件
    2.C++中不可更改的函数用const,但Java中没有const,用final表示该函数不可重写
    3.Java中函数声明与函数体不能分离(除抽象类,接口等)
    4.cout与System.out.println(变量名 + “字符串”);
    5.c++ 里面建立类的对象可以直接:类名 对象名(参数),而Java里面需要:类名 对象名 = new 类名(参数)
    6.Java里是不用写什么math.h等头文件的,类库里都有。比如取整:Math.floor()
    7.Java没有id(id);,有this.id=id;

    PersonalBank2

    相比于第一个版本,增加了total变量
    其余无变化

    PersonalBank3

    增加了Date类

    1.C++ void record(const Date &date, double amount, const std::string &desc);
    Java private void record(Date date,double amount,String desc){};
    2.C++

    namespace {	//namespace使下面的定义只在当前文件中有效
    	//存储平年中某个月1日之前有多少天,为便于getMaxDay函数的实现,该数组多出一项
    	const int DAYS_BEFORE_MONTH[] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };
    }
    

    Java

    public final int DAYS_BEFORE_MONTH[] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };
    

    3.敲SavingAccount类时,利用Date方法总是报错,由于设置了void,没办法匹配?‍

    PersonalBank4

    与之前版本相比,增加了Accumulator类、Account类、CreditAccount类,SavingAccount类继承了Account类
    Date类与之前一样
    CreditAccount继承了Account,要重写show()函数,但Account中show()函数是由final修饰的

    PersonalBank5

    Date类中少了一个distance()函数,多了一个重载

    int operator - (const Date& date) const {
    		return totalDays - date.totalDays;
    	}
    

    Accumulator类与前一样
    Account类变成了抽象类,其中多了deposit、withdraw、settle函数(C++中的虚函数)
    SavingsAccount类中多了deposit、withdraw、settle

    主函数C++与Java变化对比

    cin >> cmd;
    switch (cmd) {
    		case 'd':	//存入现金
    			cin >> index >> amount;
    			getline(cin, desc);
    			accounts[index]->deposit(date, amount, desc);
    			break;
    		case 'w':	//取出现金
    			cin >> index >> amount;
    			getline(cin, desc);
    			accounts[index]->withdraw(date, amount, desc);
    			break;
    		case 's':	//查询各账户信息
    			for (int i = 0; i < n; i++) {
    				cout << "[" << i << "] ";
    				accounts[i]->show();
    				cout << endl;
    			}
    			break;
    		case 'c':	//改变日期
    			cin >> day;
    			if (day < date.getDay())
    				cout << "You cannot specify a previous day";
    			else if (day > date.getMaxDay())
    				cout << "Invalid day";
    			else
    				date = Date(date.getYear(), date.getMonth(), day);
    			break;
    		case 'n':	//进入下个月
    			if (date.getMonth() == 12)
    				date = Date(date.getYear() + 1, 1, 1);
    			else
    				date = Date(date.getYear(), date.getMonth() + 1, 1);
    			for (int i = 0; i < n; i++)
    				accounts[i]->settle(date);
    			break;
    		}
    
    cmd = (char)System.in.read();
    switch (cmd) {
    			case 'd':	//存入现金
    				index = in.nextInt();
    				amount = in.nextDouble();
    				desc = in.nextLine();
    				accounts[index].deposit(date, amount, desc);
    				break;
    			case 'w':	//取出现金
    				index = in.nextInt();
    				amount = in.nextDouble();
    				desc = in.nextLine();
    				accounts[index].withdraw(date, amount, desc);
    				break;
    			case 's':	//查询各账户信息
    				for (int i = 0; i < n; i++) {
    					System.out.print("[" + i + "] ");
    					accounts[i].show();
    					System.out.println();
    					if(i<(n-1)) {System.in.read();}
    				}
    				break;
    			case 'c':	//改变日期
    				day = in.nextInt();
    				if (day < date.getDay())
    					System.out.print("You cannot specify a previous day");
    				else if (day > date.getMaxDay())
    					System.out.print("Invalid day");
    				else
    					date = new Date(date.getYear(), date.getMonth(), day);
    				break;
    			case 'n':	//进入下个月
    				if (date.getMonth() == 12)
    					date = new Date(date.getYear() + 1, 1, 1);
    				else
    					date = new Date(date.getYear(), date.getMonth() + 1, 1);
    				for (int i = 0; i < n; i++) {
    					accounts[i].settle(date);
    					if(i<(n-1)) {System.in.read();}
    				}
    				break;
    

    PersonalBank6

    与之前版本相比较,仅主函数不同

    展开全文
  • Target: 1.将每个版本的c++代码改写为Java代码。...1.个人银行管理系统version4_9 package week4_9; import java.math.BigDecimal; public class SavingAccount { // 帐号 private int id; // 当前余额 p...
  • 1、模仿个人银行账户管理系统C++版本(第4章-第8章),使用Java语言重新实现该系统,比较C++与Java在实现上的异同,熟练掌握Java基础及语法。 2、根据系统需求的演化,逐步完善个人银行账户管理系统的功能,改进...
  • C++银行管理系统

    2021-05-29 09:56:42
    C++银行管理系统C++银行管理系统账户内部设置代码总结 C++银行管理系统 本文没有完整代码,想找作业的就别在这浪费时间了 最近实在是闲来无事,想着重新温习一下之前c++的一个大作业:银行管理系统,C++当时学的十分...

空空如也

空空如也

1 2 3 4 5 6
收藏数 113
精华内容 45
关键字:

c++银行账户管理系统

c++ 订阅