⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 银行定期储蓄管理系统.cpp

📁 银行定期储蓄管理系统的源代码
💻 CPP
字号:
#include<iostream>
#include<fstream>
#include<string>
#include<time.h>
using namespace std;
class Salesman  //接收员信息
{
public:
	Salesman();
	Salesman(char *,long );
protected:
	char name1[20];//姓名
	long employee_num;//工作号
};

Salesman::Salesman()
{
	strcpy(name1," ");
	employee_num=0;
}

Salesman::Salesman(char *na,long num)
{
	strcpy(name1,na);
	employee_num=num;
}


class Depositor   //储户信息
{
public:
    Depositor();
    Depositor(char *,char *,char *,string );
    void chose_year();//选取储种
	char account_number[30];//帐号
protected:
    char name[20];//用户姓名
    char password[9];//密码
	char storage_kind[6];//储种
	char create_time[30];//创建帐户时间.首次存款时间
	char storage_time[30];//存款时间
	double corpus;//本金
	double interest;//利息
	double total;//总额
	string address;//用户地址
	bool loss;//true表示挂失;false表示未挂失
};

Depositor::Depositor()
{
	strcpy(name," ");
	strcpy(account_number,"0");
	strcpy(password," ");
	strcpy(storage_kind,"一年");
	strcpy(create_time," ");
	address=" ";
    corpus=0;
	loss=false;
}
	
Depositor::Depositor(char *na,char *accnum,char *key,string add)
{
    strcpy(name,na);
	strcpy(account_number,accnum);
	strcpy(password,key);
	address=add;
	corpus=0;
	loss=false;
	chose_year();
}

void Depositor::chose_year()
{
	cout<<"请选择储种:1.一年    2.三年     3.五年"<<endl;
	int chose;
	cin>>chose;
	while(chose<1||chose>3||cin.fail())
	{
		cout<<"输入错误!请重新输入:"<<endl;
		cin.clear();
		cin>>chose;
	}
	switch(chose){
	case 1:strcpy(storage_kind,"一年");break;
	case 2:strcpy(storage_kind,"三年");break;
    case 3:strcpy(storage_kind,"五年");break;
	}
}

//计算天数的函数
int isLeapYear(int y){
if(y%400==0||(y%4==0&&y%100!=0))
return 1;
return 0;
}

int monthDay(int y,int m){
int data[]={31,28+isLeapYear(y),31,30,31,30,31,31,30,31,30};
return data[m-1];
}

int dayInYear(int y,int m,int d){
int sum=d;
for(int i=1;i<m;i++){
sum+=monthDay(y,i);
}
return sum;
}

int subDate(char *date1,char *date2)//date1>date2
{
	int y1,m1,d1,y2,m2,d2;
    y1= (date1[0] - '0')*1000 + (date1[1] - '0')*100 + (date1[2] - '0')*10 + (date1[3] - '0');
    m1= (date1[4] - '0')*10 + (date1[5] - '0');
    d1= (date1[6] - '0')*10 + (date1[7] - '0');
    y2= (date2[0] - '0')*1000 + (date2[1] - '0')*100 + (date2[2] - '0')*10 + (date2[3] - '0');
    m2= (date2[4] - '0')*10 + (date2[5] - '0');
    d2= (date2[6] - '0')*10 + (date2[7] - '0');
    int sum=dayInYear(y1,m1,d1)-dayInYear(y2,m2,d2);
if(y1!=y2){
for(int i=y2;i<y1;i++){
sum+=365+isLeapYear(i);
}
}
return sum;
}

//计算天数的函数结束


class Bank:public Salesman,public Depositor
{
public:
	Bank(){Salesman();Depositor();}
	Bank(char *,long ,char *,char *,char *,string );
	void Show();
	void loss();//挂失
    void save_money();//存钱
	void get_money();//取钱
	string get_name(){return name;}
	string get_account(){return account_number;}
	string get_password(){return password;}
	friend void Save_to_file(Bank &);//保存
	void cal_inter();
private:
	double interest_rate;
};

Bank::Bank(char *nam,long num,char *na,char *accnu,char *pas,string addr):
       Salesman(nam,num),Depositor(na,accnu,pas,addr)
	   {
		   if(Depositor::storage_kind=="一年") interest_rate=0.0195;
		   else if(Depositor::storage_kind=="三年") interest_rate=0.0225;
		   else if(Depositor::storage_kind=="五年") interest_rate=0.0252;
	   }//Bank 构造函数
	   
void Bank::loss(){Depositor::loss=true;}


void Bank::cal_inter()//计算利息
{ 
	cout<<"现在进行利息清算"<<endl;
	int duration=0;
	cout<<"第一次存款时间:"<<create_time<<endl;
	cout<<"请输入第一次存款时间(年-月-日,例:19990603表1999年6月3日,注意中间没有空格!) :"<<endl;
    char  date_2[9];
	cin>>date_2;
	time_t t;
	time(&t);
	cout<<"今天时间:"<<ctime(&t)<<endl;
	cout<<"请输入时间(格式同上):"<<endl;
	char date_1[9];
	cin>>date_1;
    duration=subDate(date_1,date_2);
	if(storage_kind=="一年") 
	{
		if(duration==365) interest=interest_rate*corpus;
		else if(duration<365) interest=0.00005*corpus*duration;
		else if(duration>365) interest=interest_rate*corpus+corpus*0.00005*(duration-365);
	}
	else if(storage_kind=="三年") 
	{
		if(duration==365*3) interest=interest_rate*corpus;
		else if(duration<365*3) interest=0.00005*corpus*duration;
		else if(duration>365*3) interest=interest_rate*corpus+corpus*0.00005*(duration-365*3);
	}
	else if(storage_kind=="五年") 
	{
		if(duration==365*5) interest=interest_rate*corpus;
		else if(duration<365*5) interest=0.00005*corpus*duration;
		else if(duration>365*5) interest=interest_rate*corpus+corpus*0.00005*(duration-365*5);
	}
    char m[30];
	strcpy(m,account_number);
	ifstream f;
	f.open(strcat(m,"_存款日期记录.txt"),ios::in);
	if(!f)
	{
		cout<<"Can't open the file!"<<endl;
	}
	while(f.eof())//计算每次存款的利息
	{
	    char ch[9];char mon[30];//钱
	    f.getline(ch,9);
		f.getline(mon,30);
		cout<<ch<<"存款:"<<mon<<endl;
		cout<<"请将存款数额输入:"<<endl;
		double a;
		cin>>a;
	    int da;//天数
        da=subDate(date_1,ch);
		double x;
		x=da*a*0.00005;//lixi
		interest+=x;//zonglixi
	}
	char n[30];//存利息
	strcpy(n,account_number);
	ofstream file;
	file.open(strcat(n,"_取款文件.txt"),ios::out|ios::app);
    file<<"用户利息为:"<<interest<<"元"<<endl;
}


void Bank::get_money()//取款
{
	if(Depositor::loss)   {cout<<"该用户已挂失!不能进行取款!"<<endl;return ;}
	cout<<"进行取款,请输入取款金额:"<<endl;
	double money;
	cin>>money;
	if(money>corpus) cout<<"余额不足,不能支取!"<<endl;
	if(money==corpus) 
	{
		cout<<"将存款全部取出?  y/n?"<<endl;
		char a;cin>>a;
		if(a=='y'||'Y')   this->cal_inter();
		else {cout<<"重新输入取款金额:"<<endl;cin>>money;}//输入时有问题
	}
	if(money<corpus) this->cal_inter();
	time_t t;
    time(&t);
	char m[30];
	strcpy(m,account_number);
	fstream f;
	f.open(strcat(m,"_取款文件.txt"),ios::out|ios::app);
	if(!f)
	{
		cout<<"Can't open the text!"<<endl;
	}
	f<<"该用户于"<<ctime(&t)<<"提取"<<money<<endl;
	cout<<"输入办理取款的员工信息:"<<endl;
	char name[20];long num;
	cout<<"输入姓名:"<<endl;
	cin>>name;
	cout<<"输入工作编号:"<<endl;
	cin>>num;
	f<<"办理取款的员工信息:"<<endl;
	f<<"姓名:"<<name<<endl;
	f<<"工作编号:"<<num<<endl;
	f<<endl;

}

void Bank::save_money()//存款
{
	if(Depositor::loss)   {cout<<"该用户已挂失!不能进行存款!"<<endl;return ;}
	cout<<"进行存款,请输入存款数额:";
	char n[30];
	strcpy(n,account_number);
	double money;
	cin>>money;
	time_t t;
	time(&t);
	if(corpus==0) strcpy(create_time,ctime(&t));
	ofstream f;
	f.open(strcat(n,".txt"),ios::out|ios::app);
	if(!f)
	{
		cout<<"Can't open the text!"<<endl;
	}
	cout<<"原来本金数额:"<<corpus<<endl;
	cout<<"存入"<<money<<" 元"<<endl;
	corpus+=money;
	cout<<"输入办理存款的员工信息:"<<endl;
	char name[20];long num;
	cout<<"输入姓名:"<<endl;cin>>name;
	cout<<"输入工作编号:"<<endl;cin>>num;
	f<<"存入"<<money<<" 元"<<endl;
	f<<"总计本金:"<<corpus<<endl;
	f<<"存入时间:"<<ctime(&t);
	f<<"办理存款的员工信息:"<<endl;
	f<<"姓名:"<<name<<endl;
	f<<"工作编号:"<<num<<endl;
	f<<endl;
	char m[30];
    ofstream file;
	strcpy(m,account_number);
	file.open(strcat(m,"_存款记录.txt"),ios::out|ios::app);
	if(!file) cout<<"Can't open the text!"<<endl;
	file<<"用户"<<account_number<<"存款"<<money<<endl;
	file<<"存入时间:"<<ctime(&t);
	file<<"办理存款的员工信息:"<<endl;
	file<<"姓名:"<<name<<endl;
	file<<"工作编号:"<<num<<endl;
	file<<endl;
	char a[30];
    strcpy(a,account_number);
	ofstream file2;
	file2.open(strcat(a,"_存款日期记录.txt"),ios::out|ios::app);
	cout<<"现在时间:"<<ctime(&t)<<endl;
	cout<<"请按如下形式输入时间(年月日,例:19990603表1999年6月3日,注意中间没有空格!):"<<endl;
    char d[9];
	cin>>d;
	file2<<d<<endl;//时间
	file<<money<<endl;//存款
	cout<<endl;
}


void Bank::Show()
{
	if(Depositor::loss)
	{
		char a;
		cout<<"该用户已挂失!是否继续查询? y/n"<<endl;
		cin>>a;
		if(a!='y') return;
	}
	cout<<"储户信息如下:"<<endl;
    cout<<"姓名:"<<name<<endl;
	cout<<"帐号:"<<account_number<<endl;
	cout<<"密码:"<<"**********"<<endl;//是否要显示
	cout<<"存储种类:"<<storage_kind<<endl;
	cout<<"创建帐户时间:"<<create_time;
	cout<<"地址:"<<address<<endl;
	cout<<"本金:"<<corpus<<" 元"<<endl;
	cout<<endl;
	cout<<"营业员信息:"<<endl;
	cout<<"姓名:"<<name1<<endl;
	cout<<"工作号:"<<employee_num<<endl;
}

void Save_to_file(Bank &de)//存到文件中
{   
	time_t t;
    time(&t);
    strcpy(de.create_time,ctime(&t));//显示创建帐户时间
	char m[30];
	strcpy(m,de.account_number);
    ofstream file;
	file.open(strcat(m,".txt"),ios::out|ios::app);
	if(!file)
	{
		cout<<"Can't open the text!"<<endl;
	}
	file<<"储户信息:"<<endl;
	file<<"姓名:"<<de.name<<endl;file<<"帐号:"<<de.account_number<<endl;file<<"密码:"<<de.password<<endl;
	file<<"储种:"<<de.storage_kind<<endl;file<<"创建帐户时间"<<de.create_time;file<<"本金:"<<de.corpus<<" 元"<<endl;
	file<<"营业员信息:"<<endl;
	file<<"姓名:"<<de.name1<<endl;file<<"工作号:"<<de.employee_num<<endl;
	file<<endl;
	file.close();
}


Bank account[20];

int count=0;

void Create_account()//创建帐户
{
	cout<<"开始创建帐户:"<<endl;
	count++;
	char name[20],accnum[20],password[9];string addr;
	cout<<"请输入用户信息:"<<endl;
	cout<<"               姓名:";cin>>name;
	cout<<"               帐户号:";cin>>accnum;
	cout<<"               密码:";cin>>password;
	cout<<"               地址:";cin>>addr;
	char na[20];long num=0;
	cout<<"输入营业员信息:"<<endl;
	cout<<"                姓名:";cin>>na;
	cout<<"                工作号:";cin>>num;
	account[count]=Bank(na,num,name,accnum,password,addr);
    Save_to_file(account[count]);
	cout<<"创建帐户成功!"<<endl;
	cout<<"您当前的帐户余额为0元,是否进行存款? y/n?"<<endl;
	char n;
	cin>>n;
	if(n=='y'||'Y') account[count].save_money();
	else return;
}
 


int find_account(int &k)//查找帐户
{
	char name[15],accnum[20],pass[9];
	cout<<"输入用户信息:"<<endl;
	cout<<"输入姓名:"<<endl;
	cin>>name;
	cout<<"输入帐号:"<<endl;
	cin>>accnum;
	cout<<"密码:"<<endl;
	cin>>pass;
	int i;
	for(i=0;i<=count;i++)
	{
		if(account[i].get_name()==name&&account[i].get_account()==accnum&&account[i].get_password()==pass) 
		{k=1;break;}
	}
	return i;
}

 	
void Query_account()//查询用户
{
	cout<<"查询用户!"<<endl;
	int i,j=0;
	i=find_account(j);
	if(j) {
		cout<<"用户找到!"<<endl;
		account[i].Show();
	}
	else {cout<<"该用户不存在。"<<endl;}
}

void Report_loss()
{
	cout<<"办理挂失!"<<endl;
	int i,j=0;
	i=find_account(j);
	if(j) {account[i].loss();cout<<"用户找到!已办理挂失!"<<endl;}
	else {cout<<"该用户不存在。"<<endl;}
}

void Deposit()
{
	cout<<"办理存款!"<<endl;
	int i,j=0;
	i=find_account(j);
	if(j) {
		cout<<"用户找到!"<<endl;
		account[i].save_money();
	}
	else {cout<<"该用户不存在。"<<endl;}
}

void Take_account()
{
	cout<<"办理取款!"<<endl;
	int i,j=0;
	i=find_account(j);
	if(j) 
	{
		cout<<"用户找到!进行取款?y/n"<<endl;
		char a;
		cin>>a;
		if(a!='y') return;
		else account[i].get_money();
		cout<<"打印利息清单:"<<endl;
        account[i].Show();
        char m[30];
		strcpy(m,account[i].account_number);
	    ifstream f;
	    f.open(strcat(m,"_取款文件.txt"),ios::out);
		char ch;
		while(f.get(ch))  cout<<ch;
	}
	else {cout<<"该用户不存在。"<<endl;}

}


void show()
{
        cout<<"1: Create an account  创建帐户"<<endl;
		cout<<"2: Query an account  查询帐户"<<endl;
		cout<<"3: Report lose an account  挂失帐户"<<endl;
		cout<<"4: Deposit  存款 "<<endl;
		cout<<"5: Take money 取款"<<endl;
		cout<<"6: Exit 返回"<<endl;
		cout<<"Please input your choice:"<<endl;
}


int main()
{
	int choice=0;char str[255];
	cout<<"Welcome to bank system!"<<endl;
	do{
	show();
	cin>>choice;
	while(choice<1||choice>6||cin.fail())
	{
		cout<<"输入错误!"<<endl;
		cin.clear(0);cin.getline(str,255);
		show();
		cin>>choice;
	}
	cin.clear(0);
	switch(choice)
	{
	case 1:Create_account();break;
	case 2:Query_account();break;
	case 3:Report_loss();break;
	case 4:Deposit();break;
	case 5:Take_account();break;
	case 6:cout<<"*******************************************************************************"<<endl;
           cout<<"*****      --------->  [  谢谢您使用本系统!按任意键结束!  ] <---------    *****"<<endl;
           cout<<"*******************************************************************************"<<endl;
		   break;
	}
    }while(choice!=6);

return 0;
}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -