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

📄 item.h

📁 这是一个银行账户的管理程序
💻 H
字号:
#include <stdio.h>
#include <memory.h>
#define MAX_MONEY 100000000// 存入的最大金额
#define LENGTH 41 //一个记录长

class Item{
public:
	int account;//帐号,9位
	int password;//密码,6位
	double deposit;//剩余金额,17位
	char type;//存款类型,u代表活期,f代表定期
	int month;//月份,3位
	//成员函数
	Item(){	memset(this,0,sizeof(this));};//构造函数
	void Fin(int, FILE*);//输入是position和输入文件名      从文件读入相应记录
	void Fout(int, FILE*);//输入是postion和输出文件名      写入文件的相应记录
	bool AddMoney(double, double);//输入是金额和利率         存钱,如果储蓄金额超过MAX_MONEY,返回false
	bool DrawMoney(double, double);//输入的是取款金额和利率,    取钱,如果不够则不取,返回false
	bool ChangePass(int);//输入的是密码,       如果改变不成功则返回false,此函数中不包括密码验证
	void Display();//输出帐号,剩余金额,存款类型
	bool CheckPass(int);//输入是帐号名                   用来验证身份
	bool ChangeType(char);//输入是u或者f
	char GetType();//返回类型

	//内部用来计算利息的
	void CountInterest(double);//输入是利率
	
	//高级管理者的成员函数
	void DisplayPass();//可以看到用户的密码

	bool operator < (Item &);
	bool operator > (Item &);
	Item & operator = (Item &);
	bool operator == (Item &);

};




void Item::Fin(int pos, FILE* In)
{
	fseek(In,pos*LENGTH,0);//LENGTH为一个记录长
	fscanf(In,"%d %d %lf %c %d\n", &account, &password, &deposit, &type, &month);
	return;
}

void Item::Fout(int pos, FILE* Out)
{
	int whole=(int)deposit;
	if(whole>deposit)
		whole-=1;
	int frac=(deposit-whole)*10000000;
	if(frac&10 >=5){//处理double型不精确导致的错误,四舍五入
		frac/=10;
		frac++;
	}
	else
		frac/=10;

	fseek(Out, pos*LENGTH,0);
	fprintf(Out, "%09d %06d %09d.%06d %c %03d\n" ,account ,password ,whole ,frac ,type ,month);
	return;
}

bool Item::AddMoney(double plus, double rate)
{
	CountInterest(rate);
	if(deposit+plus>MAX_MONEY)
		return false;
	else{
		deposit+=plus;
		return true;
	}
}

bool Item::DrawMoney(double minus, double rate)//输入的是取款金额,    取钱,如果不够则不取,返回false
{
	CountInterest(rate);
	if(deposit-minus<0)
		return false;
	else{
		deposit-=minus;
		return true;
	}
}

bool Item::ChangePass(int newpass)
{
	password=newpass;
	return true;
}

void Item::Display()
{
	printf("account=%d deposit=%.2lf type=%c month=%d\n",account, deposit, type, month);
	return;
}

bool Item::CheckPass(int pass)//输入是帐号名                   用来验证身份
{
	if(pass==password)
		return true;
	else
		return false;
}

bool Item::ChangeType(char t)//输入是u或者f
{
	if(t=='u' || t=='r'){
		type=t;
		return true;
	}
	else
		return false;
}

char Item::GetType()//返回类型
{
	return type;
}


//内部用来计算利息的

void Item::CountInterest(double rate)
{
	double plus=deposit*month*rate;
	if(deposit+plus>MAX_MONEY)
		deposit=MAX_MONEY;
	else
		deposit+=plus;
	month=0;
	return;
}

	
//高级管理者的成员函数


void Item::DisplayPass()//可以看到用户的密码
{
	printf("account=%d password=%d",account, password);
	return;
}


//重载运算符

bool Item::operator < (Item & a)
{
	if(account < a.account)
		return true;
	else
		return false;
}

bool Item::operator > (Item & a)
{
	if(account > a.account)
		return true;
	else
		return false;
}


Item & Item::operator = (Item & a)
{
	account=a.account;
	password=a.password;
	deposit=a.deposit;
	type=a.type;
	month=a.month;
	return *this;
}

bool Item::operator == (Item & a)
{
	if(account==a.account)
		return true;
	else
		return false;
}



/******************************************************/
class Index
{
public:
	int pos;//文件中的位置
	int account;//用户的账号
};

⌨️ 快捷键说明

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