程序实践 -银行系统

#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
void aaa()
{
   cout<< "*****************中国志伟银行欢迎您******************"<<endl;
     cout<<endl;
  cout << "                1.增加账户" << endl;
  cout << "                2.删除账户" <<endl;
  cout << "                3.查询账户" <<endl;
  cout << "                4.取款和存款" <<endl;
  cout << "                5.退出系统" <<endl;
  cout << "****************************************************"<<endl;
}
class Account
{
public:
 Account(string a,string b,double bal);
 virtual void saving(double a);
 virtual void getOutMoney(double a);
 virtual void showme();
 string getId();
 Account *next;
private:
 string Account_name;
 string name;
 double balance ;
};
class NormalAccount:public Account
{
public:
 NormalAccount(string a,string b,double bal):Account(a,b,bal){}
private:
 string Account_name;
 string name;
 double balance ;
};
class VIPAccount:public Account
{
public:
 VIPAccount(string a,string b,double bal,double d,double e):Account(a,b,bal),tzsx(d),tzze(e)
 {
 Account_name=a;
 name=b;
 balance=bal;
 tzsx=d;
 tzze=e;

 }
 void getOutMoney(double a);
 void showme();
private:
 string Account_name;
 string name;
 double balance ;
 double tzsx;
 double tzze;
};
Account::Account(string a,string b,double bal)
{
 Account_name = a;
 name = b;
 balance = bal;
}
void Account::saving(double a)
{
 balance = balance + a;
}
void Account::getOutMoney(double a)
{
 if(a > balance)
  cout<<"余额不足"<<endl;
 else
 {
  balance = balance - a;
  cout << "已取出" << a << "元" <<endl;
 }
}
void Account::showme()
{
 cout << "用户账号为" << Account_name << endl;
 cout << "开户人姓名" << name <<endl;
 cout << "账户余额为" << balance <<endl;
}
string Account::getId()
{
 return Account_name;
}
void VIPAccount::getOutMoney(double a)
{
 if(a >balance + tzsx -tzze)
  cout<<"不可透支"<<endl;
 else
  balance = balance - a;
}
void VIPAccount::showme()
{
 cout << "用户账号为" << Account_name << endl;
 cout << "开户人姓名" << name <<endl;
 cout << "账户余额为" << balance <<endl;
 cout << "透支上限为" << tzsx <<endl;
 cout << "透支总额为" << tzze <<endl;
}
class Bank
{
public:
 Bank();
 void append1();
 void append2();
 void del();
 void query();
 void delaccount();
 void addaccountlist(Account *stu);
 Account *account[100];
 Account *plist;
private:

 int accNum;
 double Balance;
};
Bank::Bank()
{
 for(int i = 0;i < 100 ; i++ )
 {
  account[i] = NULL;
 }

 accNum = 0;
 plist=NULL;

}
void Bank::append1()
{
 string str1,str2;
 cout << "请输入普通用户账号" << endl;
 cin>>str1;
 cout << "请输入开户人姓名" << endl;
 cin>>str2;
 Account *acc = new NormalAccount(str1,str2,0) ;
 system("cls"); //调用DOS清屏命令
 aaa();
 cout<<"增加普通账户成功"<<endl<<endl;
  account[accNum] = acc;
 accNum++;

}
void Bank::append2()
{
 string str1,str2;
 cout << "请输入高级用户账号" << endl;
 cin>>str1;
 cout << "请输入开户人姓名" << endl;
 cin>>str2;
 Account *acc = new VIPAccount(str1,str2,0,5000,0) ;
 system("cls"); //调用DOS清屏命令
 aaa();
 cout<<"增加高级账户成功"<<endl<<endl;
 account[accNum] = acc;
 accNum++;

}

void Bank::del()
{
 string n;
 cout << "请输入要注销的用户账号" << endl;
 cin>>n;

 for(int i=0;i<100;i++)
 {
  if(account[i]==NULL)
  {
   continue;
  }
  if(account[i]->getId() != n)
   cout<<"没有这个账号"<<endl;
  if(account[i]->getId() == n)
  {
   account[i]=NULL;
   system("cls"); //调用DOS清屏命令
   aaa();
   cout<<"账户已经删除"<<endl;
   accNum--;
  }
 }
}
void Bank::query()
{
 string n;
 cout << "请输入您要查询的用户账号" << endl;
 cin>>n;

 for(int i=0;i<100;i++)
 {
  if(i==99)
   cout<<"没有这个账号"<<endl;
  if(account[i]==NULL)
  {
   continue;
  }

  if(account[i]->getId() == n)
   account[i]->showme();
 }

}
void Bank::addaccountlist(Account *acc)
{
   Account *p;
 if(plist==NULL)
 {
  plist =acc;
  acc->next=NULL;
 }
 else
 {
  p = plist;
  while(p)
  {
   if(p->next==NULL)
   {
    p->next =acc;
    acc->next =NULL;

   }
   p= p->next;

  }

 }
}

int main()
{
 Bank bank;
 aaa();
 while(1)
 {
  int n;
  cin>>n;
  if(n == 1)
  {


   int n;
   cout<< "*****************************************************"<<endl;
   cout<<endl;
   cout << "                 1.增加普通账户" << endl;
   cout << "                 2.增加高级账户" << endl;
   cout << "****************************************************"<<endl;
   cout << "                 请输入指令:" << endl;
   cin>>n;
   if(n == 1)
    bank.append1();
   if(n == 2)
    bank.append2();
  }

  if (n == 2)
  {
   bank.del();
  }

  if (n == 3)
  {
   bank.query();
  }

  if (n == 4)
  {

   string n;
   cout<<"请输入您要存取款的账号"<<endl;
   cin>>n;
   for(int i=0;i<100;i++)
   {
    if(bank.account[i]->getId() != n)
     cout<<"账号输入错误"<<endl;
    if(bank.account[i]->getId() == n)
    {
     int choice;

     cout<<"1.取款"<<endl;
     cout<<"2.存款"<<endl;
     cout<<"请选择"<<endl;

     cin>>choice;
     if(choice == 1)
     {
      double jine;
      cout<<"请输入取款金额"<<endl;
      cin >> jine;
      bank.account[i]->getOutMoney(jine);
      bank.account[i]->showme();
      break;

     }
     if(choice == 2)

     {
      double qkuan;
      cout<<"请输入存款金额"<<endl;
      cin>>qkuan;
      bank.account[i]->saving(qkuan);
      bank.account[i]->showme();
       break;

     }
    }

   }


  }

  if (n == 5)
   return 0;
 }

 //return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值