C/C++银行管理系统

这是一个用C/C++写的银行管理系统的项目因为代码比较长,大家要有耐心的才能看下去。有什么错误,请大家指出。

如果有对编程感兴趣的可以加群大家一起交流学习,一起探索、感受编程的魅力,群里有学习资料,也有基础差,或者没有基础的朋友可以学习的书籍、视频资料

在这个项目中你可以记录日常的银行交易。这个项目可以持有任何帐户号码。

在第一个选项,你可以看到每个特定的人有一个特定的简单的账户号码。

第二选项,你可以看到所有的帐户列表。

通过第三个选项,你可以做银行业务(存/取)

第四选项,你可以打开新会计准则 NT。注:开户金额应不少于Rs.500/-.

在第五选项中,您可以修改或删除任何帐户。最后一个选项是退出(退出到拒绝服务)。

仅供参考

//===========================================================

// 银行管理系统项目

//===========================================================

#include<iostream .h>

#include<fstream .h>

#include<process .h>

#include<;

#include<;

#include<stdio .h>

#include<ctype .h>

#include<conio .h>

#include<dos .h>

//===========================================================

// 此类包含与绘图框相关的函数

//===========================================================

class shape

{

public:

void line_hor(int, int, int, char);

void line_ver(int, int, int, char);

void box(int,int,int,int,char);

};

//===========================================================

// 此类包含相关主题的功能

//===========================================================

class initial{

public:

void add_to_file(int,char t_name[30],char t_address[60],float);

void display_list(void);

void delete_account(int);

void update_balance(int,float);

void modify(void);

int last_accno(void);

int found_account(int);

char*return_name(int);

char*return_address(int);

float give_balance(int);

int recordno(int);

void display(int);

private:

void modify_account(int,char t_name[30],char t_address[60]);

void box_for_list(void);

int accno;

char name[30],address[60];

float balance;};

//===========================================================

// 本类包含与交易相关的功能//===========================================================

class account

{

public:

void new_account(void);

void close_account(void);

void display_account(void);

void transaction(void);

void clear(int,int);

private:

void add_to_file(int,int,int,int,char,char t_type[10],float,float,float);

void delete_account(int);

int no_of_days(int,int,int,int,int,int);

float calculate_interest(int,float);

void display(int);

void box_for_display(int);

int accno;

char type[10];//Cheque or Cash

int dd,mm,yy;//Date

char tran ;// Deposit or withdrawl

float interest,amount,balance;};

//===========================================================

// 绘制水平线的功能//===========================================================

void shape::line_hor(int column1,int column2,int row,char c){

for(column1;column1<=column2;column1++)

{

gotoxy(column1,row);

cout<<c;

}}

//===========================================================

// 绘制垂直线的功能//===========================================================

void shape::line_ver(int row1,int row2,int column,char c){for(row1;row1<=row2;row1++)

{

gotoxy(column,row1);

cout<<c;

}}

//============================================================

// 绘制箱线的功能//============================================================

void shape::box(int column1,int row1,int column2,int row2,char c){char ch=218;char c1,c2,c3,c4;char l1=196,l2=179;if(c==ch){

c1=218;

c2=191;

c3=192;

c4=217;

l1=196;

l2=179;}else{

c1=c;

c2=c;

c3=c;

c4=c;

l1=c;

l2=c;}

gotoxy(column1,row1);cout<<c1;

gotoxy(column2,row1);cout<<c2;

gotoxy(column1,row2);cout<<c3;

gotoxy(column2,row2);cout<<c4;

column1++;

column2–;

line_hor(column1,column2,row1,l1);

line_hor(column1,column2,row2,l1);

column1–;

column2++;

row1++;

row2–;

line_ver(row1,row2,column1,l2);

line_ver(row1,row2,column2,l2);}

//============================================================

// 功能显示主菜单并调用其他函数//============================================================

void control::main_menu(void){char ch;while(1)

{

clrscr();

shape s;

s.box(10,5,71,21,219);

s.box(9,4,72,22,218);

textcolor(LIGHTBLUE+BLINK);

textbackground(BLACK);

gotoxy(32,7);

cprintf(" B A N K I N G ");

gotoxy(35,9);

cprintf("选项");

textcolor(LIGHTBLUE);

textbackground(BLACK);

gotoxy(30,11);

cout<<"1:见帐户 ";

gotoxy(30,12);

cout<<"2:帐户列表 ";

gotoxy(30,13);

cout<<"3:交易 ";

gotoxy(30,14);

cout<<"4: 开新帐户";

gotoxy(30,15);

cout<<"5: 编辑帐户 ";

gotoxy(30,16);

cout<<"6:帮助 ";

gotoxy(30,17);

cout<<"0: 退出";

gotoxy(30,19);

cout<<" 输入您的选择:";

ch=getche();

if(ch==27)

break;

else

if(ch=='1')

{

account a;

a.display_account();

}

else

if(ch=='2')

{

initial ini;

ini.display_list();

}

else

if(ch=='3')

{

account a ;

a.transaction();

}

else

if(ch=='4')

{

account a;

a.new_account();

}

else

if(ch=='5')

edit_menu();

else

if(ch=='6')

help();

else

if(ch=='0')

break;

}

for(int i=25;i>=1;i–)

{

delay(20);

gotoxy(1,i); clreol();

}}

//=============================================================

// 功能显示编辑菜单和调用其他功能//=============================================================

void control::edit_menu(void){char ch;while(1)

{

clrscr();

shape s;

s.box(10,5,71,21,219);

s.box(9,4,72,22,218);

textcolor(LIGHTBLUE);

textbackground(BLACK);

gotoxy(34,10);

cprintf(" 编辑菜单");

textcolor(LIGHTBLUE);

textbackground(BLACK);

gotoxy(31,12);

cout<<"1: 修改帐户 :";

gotoxy(31,13);

cout<<"2: 关闭帐户 ";

gotoxy(31,14);

cout<<"0: 退出 ";

gotoxy(31,16);

cout<<"输入您的选择: ";

ch=getche();

if(ch==27)

break;

else

if(ch=='1')

{

initial ini;

ini.modify();

break;

}

else

if(ch=='2')

{

account a;

a.close_account();

break;

}

else

if(ch=='0')

break;

}}

//=============================================================

// 功能显示项目的帮助//=============================================================

void control::help(void){

clrscr();

shape s;

s.box(2,1,79,25,218);

s.box(25,2,54,4,219);

textcolor(LIGHTBLUE+BLINK);

gotoxy(27,3);

cprintf("欢迎来到项目银行 ");

textcolor(LIGHTBLUE);

delay(10);

gotoxy(10,6);cout<<"在这个项目中你可以记录日常银行业务";

delay(10);

gotoxy(10,7);cout<<" 交易.";

delay(10);

gotoxy(10,9);cout<<" 这个计划可以持有任何帐户号码.";

delay(10);

gotoxy(10,11);cout<<"#第一选项,你可以看到一个特别帐户 ";

delay(10);

gotoxy(10,12);cout<<" 通过简单的帐户号码的人";

delay(10);

gotoxy(10,14);cout<<"#第二选项,你可以看到所有的帐户列表。 ";

delay(10);

gotoxy(10,16);cout<<"#通过第三个选项你可以做银行交易 ";

delay(10);

gotoxy(10,17);cout<<" (存款/取款)";

delay(10);

gotoxy(10,19);cout<<"#第四选项你可以开立一个新账户。";

delay(10);

gotoxy(10,20);cout<<" 注:开户金额不应少于 Rs.500/-. ";

delay(10);

gotoxy(10,22);cout<<"#在第五选项可以修改或删除任何帐户. ";

delay(10);

gotoxy(10,24);cout<<"#和最后的选择是退出(退出到).";

delay(10);

textcolor(LIGHTBLUE+BLINK); textbackground(BLACK);

gotoxy(26,25);

cprintf(" 按任意键继续 ");

textcolor(LIGHTBLUE);textbackground(BLACK);

gotoxy(25,2);

getch();for(int i=25;i>=1;i–)

{

delay(20);

gotoxy(1,i);clreol();

}}

//========================================================//THIS FUNCTION RETURN LAST ACCOUNT NO. IN THE FILE

int initial::last_accno(void){

fstream file;

("INITIAL.DAT", ios::in);

(0,ios::beg);int count=0;while((char*)this, sizeof(initial)))

count=accno;

();

return count;}

//==========================================================//THIS FUNCTION RETURN RECORD NO. OF THE GIVEN ACCOUNT NO.//IN THE FILE INITIAL.DAT//==========================================================

int initial::recordno(int t_accno){

fstream file;

("INITIAL.DAT",ios::in);

(0,ios::beg);int count=0;while((char*)this, sizeof(initial))){

count++;if(t_accno==accno)

break;}

();return count;}

//===========================================================//THIS FUNTION DISPLAY THE ACCOUNT FOR GIVEN ACCOUNT NO.//FROM THE FILE INITIAL.DAT//===========================================================

void initial::display(int t_accno){

shape s;

s.box(8,7,73,11,219);

fstream file;

("INITIAL.DAT",ios::in);

(0,ios::beg);

while((char*)this,sizeof(initial)))

{

if(t_accno==accno)

{

gotoxy(8,5);

cout<<"帐号. "<<accno;

gotoxy(10,8);

cout<<"名称 :"<<name;

gotoxy(10,9);

cout<<"ADDRERSS :"<<address;

gotoxy(10,10);

cout<<"BALANCE :"<<balance;

break;

}

}

();}

//=============================================================//THIS FUNCTION RETURNS NAME FOR THE GIVEN ACCOUNT NO.//IN THE FILE INITIAL.DAT//=============================================================

char*initial::return_name(int t_accno){

fstream file;

("INITIAL.DAT",ios::in);

(0,ios::beg);char t_name[30];while((char*)this, sizeof(initial)))

{

if(accno==t_accno)

{

strcpy(t_name,name);

break;

}

}

();return t_name;}

//=========================================================//THIS FUNCTION RETURNS ADDRESS FOR THE GIVEN ACCOUNT NO.//IN THE FILE INITIAL.DAT//=========================================================

char*initial::return_address(int t_accno){

fstream file;

("INITIAL.DAT",ios::in);

(0,ios::beg);

char t_address[60];

while((char*)this, sizeof(initial)))

{

if(accno==t_accno)

{

strcpy(t_address,address);

break;

}

}

();

return t_address;}

//============================================================

//此函数返回给定帐户的余额。

//在文件ini

//============================================================

float initial::give_balance(int t_accno){

fstream file;

("INITIAL.DAT",ios::in);

(0,ios::beg);

float t_balance;

while((char*)this, sizeof(initial)))

{

if(accno==t_accno)

{

t_balance=balance;

break;

}

}

();

return t_balance;}

//==========================================================

//如果这个账号没有建立成功这个函数返回 1

//在文件ini

//==========================================================

int initial::found_account(int t_accno){

fstream file;

("INITIAL.DAT",ios::in);

(0,ios::beg);

int found=0;

while((char*)this, sizeof(initial)))

{

if(accno==t_accno)

{

found=1;

break;

}

}

();

return found;}

//===========================================================

// 此函数绘制帐户列表框.

//===========================================================

void initial::box_for_list(){

shape s;

s.box(2,1,79,25,218);

s.line_hor(3,78,3,196);

s.line_hor(3,78,5,196);

s.line_hor(3,78,23,196);

textbackground(BLACK);

gotoxy(3,4);

for(int i=1;i<=76;i++)

cprintf(" ");

textbackground(BLACK);

textcolor(LIGHTBLUE);

textbackground(BLACK);

gotoxy(4,4);

cprintf("账号 名字 账目");

textcolor(LIGHTBLUE);

textbackground(BLACK);

int d1,m1,y1;

struct date d;

getdate(&d);

d1=d.da_day;

m1=d.da_mon;

y1=d.da_year;

gotoxy(4,2);

cout<<"日期: "<<d1<<"/"<<m1<<"/"<<y1;}

//===========================================================//THIS FUNCTION DISPLAYS THE LIST OF ACCOUNTS IN FILE===

void initial::display_list(void){

clrscr();

box_for_list();

int row=6,flag;

fstream file;

("INITIAL.DAT", ios::in);

while((char*)this, sizeof(initial)))

{

flag=0;

delay(10);

gotoxy(7,row);

cout<<accno;

gotoxy(25,row);

cout<<name;

gotoxy(57,row);

cout<<balance;

row++;

if(row==23)

{

flag=1;

row=6;

gotoxy(4,24);

cout<<"按任意键继续…";

getch();

clrscr();

box_for_list();

}

}

();

(!flag);

{

gotoxy(4,24);

cout<<"按任意键继续…";

getch();

}}

//================================================================

//此函数将给定的数据添加到文件中.

//================================================================

void initial::add_to_file(int t_accno,char t_name[30],char t_address[60], float t_balance){

accno=t_accno;

strcpy(name,t_name);

strcpy(address,t_address);

balance=t_balance;

fstream file;

("INITIAL.DAT",ios::out| ios::app);

((char*)this, sizeof(initial));

();}

//===============================================================

//此函数删除给定帐户的记录。

//从文件ini中

//================================================================

void initial::delete_account(int t_accno){

fstream file;

("INITIAL.DAT",ios::in);

fstream temp;

(";,ios::out);

(0,ios::beg);

while(!())

{

((char*)this,sizeof(initial));

if(())

break;

if(accno!=t_accno)

((char*)this,sizeof(initial));

}

();

();

("INITIAL.DAT",ios::out);

(";, ios::in);

(0,ios::beg);

while(!())

{

((char*)this,sizeof(initial));

if(())

break;

((char*)this,sizeof(initial));

}

();

();}

//================================================================

//此功能更新帐户帐户余额。

//在文件ini中

//================================================================

void initial ::update_balance(int t_accno, float t_balance){

int recno;

recno=recordno(t_accno);

fstream file;

("INITIAL.DAT",ios::out| ios::ate);

balance=t_balance;

int location;

location=(recno-1)*sizeof(initial);

(location);

((char*)this, sizeof(initial));

();}

//===============================================================

//这个函数改为给定的数据记录

//在文件ini中

//===============================================================

void initial::modify_account(int t_accno,char t_name[30],char t_address[60]){

int recno;

recno=recordno(t_accno);

fstream file;

("INITIAL.DAT", ios::out| ios::ate);

strcpy(name, t_name);

strcpy(address,t_address);

int location;

location=(recno-1)*sizeof(initial);

(location);

((char*)this, sizeof(initial));

();}

//============================================================

// 此函数修改记录的数据

//文件ini

//============================================================

void initial::modify(void){

clrscr();

char t_acc[10];

int t, t_accno;

gotoxy(71,1);

cout<<"< 0 > =退出";

gotoxy(5,5);

cout<<"输入帐户号码。";

gets(t_acc);

t=atoi(t_acc);

t_accno=t;

if(t_accno==0)

return;

clrscr();

if(!found_account(t_accno))

{

gotoxy(5,5);

cout<<"7帐户没有找到";

getch();

return;

}

shape s;

s.box(2,2,79,24,218);

s.line_hor(3,78,4,196);

s.line_hor(3,78,22,196);

gotoxy(71,1);

cout<<"< 0 > =退出";

textbackground(BLACK);

gotoxy(3,3);

for(int i=1;i<=76;i++) cprintf(" ");

textbackground(BLACK);

textcolor(LIGHTBLUE+BLINK); textbackground(BLACK);

gotoxy(30,3);

cprintf("修改帐户屏幕");

textcolor(LIGHTBLUE); textbackground(BLACK);

int d1,m1,y1;

struct date d;

getdate(&d);

d1=d.da_day;

m1=d.da_mon;

y1=d.da_year;

gotoxy(62,5);

cout<<"日期:"<<d1<<"/"<<m1<<"/"<<y1;

char ch;

display(t_accno);

account a;

do

{

a.clear(5,13);

gotoxy(5,13);

cout<<"修改此帐户(Y / N):";

ch=getche();

if(ch=='0')

return;

ch=toupper(ch);

}while(ch!='N'&& ch!='Y');

if(ch=='N')

return;

int modified=0,valid;

char t_name[30], t_address[60];

gotoxy(5,15);

cout<<"名称:";

gotoxy(5,16);

cout<<"地址:";

do

{

a.clear(15,15);

a.clear(5,23);

gotoxy(5,23);

cout<<"输入名称或按<输入>无更改";

valid=1;

gotoxy(15,15);

gets(t_name);

strupr(t_name);

if(t_name[0]=='0')

return;

if(strlen(t_name)>25)

{

valid=0;

gotoxy(5,23);

cprintf("7名称不应大于25");

getch();

}

}while(!valid);

if(strlen(t_name)>0)

modified=1;

do

{

a.clear(15,16);

a.clear(5,23);

gotoxy(5,23);

cout<<"输入地址或按<输入>无更改";

valid=1;

gotoxy(15,16);

gets(t_address);

strupr(t_address);

if(t_address[0]=='0')

return;

if(strlen(t_address)>55)

{

valid=0;

gotoxy(5,23);

cprintf("7不应空白或大于55");

getch();

}

}while(!valid);

if(strlen(t_address)>0)

modified=1;

if(!modified)

return;

a.clear(5,23);

do

{

a.clear(5,18);

gotoxy(5,18);

cout<<"是否保存更改(Y / N):";

ch=getche();

if(ch=='0')

return;

ch=toupper(ch);

}while(ch!='N'&& ch!='Y');

if(ch=='N')

return;

modify_account(t_accno,t_name,t_address);

gotoxy(5,21);

cout<<"7记录修改";

gotoxy(5,23);

cout<<"按任意键继续…";

getch();}

//=============================================================

// 此函数清除给定的行和列.

//=============================================================

void account::clear(int col, int row){

for(int i=col;i<=78;i++)

{

gotoxy(i,row);

cout<<" ";

}}

//============================================================

//此函数将给定的数据添加到文件中.

//============================================================void account::add_to_file(int t_accno,int d1,int m1, int y1,

char t_tran,char t_type[10],float t_interest,

float t_amount, float t_balance){

fstream file;

("BANKING.DAT",ios::app);

accno=t_accno;

dd=d1;

mm=m1;

yy=y1;

tran=t_tran;

strcpy(type,t_type);

interest=t_interest;

amount=t_amount;

balance=t_balance;

((char*)this,sizeof(account));

();}

//===============================================================

//此函数删除给定帐户的记录.

//从文件banking.dat中

//===============================================================

void account::delete_account(int t_accno){

fstream file;

("BANKING.DAT", ios::in);

fstream temp;

(";,ios::out);

(0,ios::beg);

while(!())

{

((char*)this,sizeof(account));

if(())

break;

if(accno!= t_accno)

((char*)this,sizeof(account));

}

();

();

("BANKING.DAT",ios::out);

(";,ios::in);

(0,ios::beg);

while(!())

{

((char*)this,sizeof(account));

if(())

break;

((char*)this, sizeof(account));

}

();

();}

//================================================================

//此函数接受数据

//文件 BANKING.DAT

//================================================================

void account::new_account(void){

char ch;

int i,valid;

clrscr();

initial ini;

shape s;

s.box(2,2,79,24,218);

s.line_hor(3,78,4,196);

s.line_hor(3,78,22,196);

gotoxy(71,1);

cout<<"< 0 > =退出";

textbackground(BLACK);

gotoxy(3,3);

for(i=1;i<=76;i++)

cprintf(" ");

textbackground(BLACK);

textcolor(LIGHTBLUE+BLINK); textbackground(BLACK);

gotoxy(32,3);

cprintf("开新帐户");

textcolor(LIGHTBLUE);

textbackground(BLACK);

int d1,m1,y1;

struct date d;

getdate(&d);

d1=d.da_day;

m1=d.da_mon;

y1=d.da_year;

int t_accno;

t_accno=ini.last_accno();

t_accno++;

if(t_accno==1)

{

ini.add_to_file(t_accno,"abc","xyz",1.1);

ini.delete_account(t_accno);

add_to_file(t_accno,1,1,1997,'D',"初始",1.1,1.1,1.1);

delete_account(t_accno);

}

char t_name[30],t[10],t_address[60];

float t_bal=0.0, t_balance=0.0;

gotoxy(5,6);

cout<<"日期:"<<d1<<"/"<<m1<<"/"<<y1;

gotoxy(5,8);

cout<<"帐号#:"<<t_accno;

gotoxy(5,10);

cout<<"名称 :";

gotoxy(8,11);

cout<<"地址:";

gotoxy(8,12);

cout<<"对考核人姓名:";

gotoxy(5,14);

cout<<"初始存款";

do

{

clear(15,10);

clear(5,23);

gotoxy(5,23);

cout<<"输入人的姓名";

valid=1;

gotoxy(15,10);

gets(t_name);

strupr(t_name);

if(t_name[0]=='0')

return;

if(strlen(t_name)==0||strlen(t_name)>25)

{

valid=0;

gotoxy(5,23);

cprintf("7名称不应空白或大于25");

getch();

}

}while(!valid);

do

{

clear(15,11);

clear(5,23);

gotoxy(5,23);

cout<<"输入人的地址";

valid=1;

gotoxy(23,11);

gets(t_address);

strupr(t_address);

if(t_address[0]=='0')

return;

if(strlen(t_address)==0||strlen(t_address)>55)

{

valid =0;

gotoxy(5,23);

cprintf("7不应空白或大于55");

getch();

}

}while(!valid);

do

{

char vari[30];

clear(5,23);

gotoxy(5,23);

cout<<"输入该考核人姓名";

valid=1;

gotoxy(35,12);

gets(vari);

strupr(vari);

if(vari[0]=='0')

return;

if(strlen(vari)==0||strlen(vari)>25)

{

valid=0;

gotoxy(5,23);

cprintf("7不应空白或大于25");

getch();

}

}while(!valid);

do

{

clear(5,23);

clear(5,23);

gotoxy(5,23);

cout<<"输入初始金额为存款";

valid=1;

gotoxy(23,14);

gets(t);

t_bal=atof(t);

t_balance=t_bal;

if(t[0]=='0')

return;

if(t_balance&lt;500)

{

valid=0;

gotoxy(5,23);

cprintf("7不应小于500 ");

getch();

}

}while(!valid);

clear(5,23);

do

{

clear(5,17);

valid=1;

gotoxy(7,21);

cout<<"是否保存记录(Y / N)";

ch=getche();

if(ch=='0')

return;

ch=toupper(ch);

}while(ch!='N'&& ch!='Y');

if(ch=='N')

return;

float t_amount,t_interest;

t_amount=t_balance;

t_interest=0.0;

char t_tran,t_type[10];

t_tran='D';

strcpy(t_type,"初始");

ini.add_to_file(t_accno,t_name,t_address,t_balance);

add_to_file(t_accno,d1,m1,y1,t_tran,t_type,t_interest,t_amount,t_balance);}

//=================================================================

//此函数绘制用于显示记录的框

//文件banking.dat记录//=================================================================

void account::box_for_display(int t_accno){

shape s;

s.box(2,1,79,25,218);

s.line_hor(3,78,4,196);

s.line_hor(3,78,6,196);

s.line_hor(3,78,23,196);

textbackground(BLACK);

gotoxy(3,5);

for(int i=1;i<=76;i++) cprintf(" ");

textbackground(BLACK);

textcolor(LIGHTBLUE); textbackground(BLACK);

gotoxy(4,5);

cprintf("定期存款利息余额");

textcolor(LIGHTBLUE); textbackground(BLACK);

int d1,m1,y1;

struct date d;

getdate(&d);

d1=d.da_day;

m1=d.da_mon;

y1=d.da_year;

gotoxy(63,2);

cout<<"日期:"<<d1 <<"/"<<m1<<"/"<<y1;

gotoxy(4,2);

cout<<"帐号. "<<t_accno;

initial ini;

char t_name[30];

strcpy(t_name,ini.return_name(t_accno));

char t_address[60];

strcpy(t_address,ini.return_address(t_accno));

gotoxy(25,2);

cout<<t_name;

gotoxy(25,3);

cout<<t_address;}

//============================================================

// 这个函数显示记录文件banking.dat

//============================================================

void account::display_account(void){

clrscr();

char t_acc[10];

int t,t_accno;

gotoxy(71,1);

cout<<"< 0 > =退出";

gotoxy(5,5);

cout<<"输入帐户号码.";

gets(t_acc);

t=atoi(t_acc);

t_accno=t;

if(t_accno==0)

return;

clrscr();

initial ini;

if(!ini.found_account(t_accno))

{

gotoxy(5,5);

cout<<"7帐户没有找到";

getch();

return;

}

box_for_display(t_accno);

int row=7,flag;

fstream file;

("banking.dat",ios::in);

while((char*)this,sizeof(account)))

{

if(accno==t_accno)

{

flag=0;

delay(10);

gotoxy(4,row);

cout<<dd <<"/"<<mm <<"/"<<yy;

gotoxy(16,row);

cout<<type;

if(tran=='D')

gotoxy(30,row);

else

gotoxy(42,row);

cout<<amount;

gotoxy(56,row);

cout<<interest;

gotoxy(66,row);

cout<<balance;

row++;

if(row==23)

{

flag=1;

row=7;

gotoxy(4,24);

cout<<" 按任意键继续…. ";

getch();

clrscr();

box_for_display(t_accno);

}

}

}

();

if(!flag)

{

gotoxy(4,24);

cout<<"按任意键继续…..";

getch();

}}

//=========================================================

// 此函数返回2个日期之间的差异.

//=========================================================

int account::no_of_days(int d1,int m1,int y1,int d2,int m2,int y2){

staticint month[]={31,28,31,30,31,30,31,31,30,31,30,31};

int days=0;

while(d1!=d2 || m1!=m2 || y1!=y2)

{

days++;

d1++;

if(d1>month[m1-1])

{

d1=1;

m1++;

}

if(m1>12)

{

m1=1;

y1++;

}

}

return days;}

//=============================================================

// 此函数计算利息//=============================================================

float account::calculate_interest(int t_accno,float t_balance){

fstream file;

("banking.dat",ios::in);

(0,ios::beg);

int d1,m1,y1,days;

while((char*)this, sizeof(account)))

{

if(accno==t_accno)

{

d1=dd;

m1=mm;

y1=yy;

break;

}

}

int d2,m2,y2;

struct date d;

getdate(&d);

d2=d.da_day;

m2=d.da_mon;

y2=d.da_year;

float t_interest=0.0;

if((y2<y1 )||(y2==y1 && m2<m1)||(y2==y1&&m2==m1&&d2<d1))

return t_interest;

days=no_of_days(d1,m1,y1,d2,m2,y2);

int months=0;

if(days>=30)

{

months=days/30;

t_interest=((t_balance*2)/100*months);

}

();

return t_interest;}

//============================================================

// 此功能使交易(存款/取款)//============================================================

void account::transaction(void){

clrscr();

char t_acc[10];

int t,t_accno,valid;

gotoxy(71,1);

cout<<"< 0 > =退出";

gotoxy(5,5);

cout<<"输入帐户号码.";

gets(t_acc);

t=atoi(t_acc);

t_accno=t;

if(t_accno==0)

return;

clrscr();

initial ini;

if(!ini.found_account(t_accno))

{

gotoxy(5,5);

cout<<"7帐户没有找到";

getch();

return;

}

shape s;

s.box(2,2,79,24,218);

s.line_hor(3,78,4,196);

s.line_hor(3,78,22,196);

gotoxy(71,1);

cout<<"< 0 > =退出";

textbackground(BLACK);

gotoxy(3,3);

for(int i=1;i<=76;i++) cprintf(" ");

textbackground(BLACK);

textcolor(LIGHTBLUE+BLINK); textbackground(BLACK);

gotoxy(29,3);

cprintf("交易账户");

textcolor(LIGHTBLUE); textbackground(BLACK);

int d1,m1,y1;

struct date d;

getdate(&d);

d1=d.da_day;

m1=d.da_mon;

y1=d.da_year;

gotoxy(5,6);

cout<<"日期: "<<d1<<"/"<<m1<<"/"<<y1;

gotoxy(5,8);

cout<<"帐号#"<<t_accno;

char t_name[30];

char t_address[60];

float t_balance;

strcpy(t_name,ini.return_name(t_accno));

strcpy(t_address,ini.return_address(t_accno));

t_balance=ini.give_balance(t_accno);

s.box(25,10,75,13,218);

gotoxy(27,11);

cout<<"名称 :"<<t_name;

gotoxy(27,12);

cout<<"地址: "<<t_address;

gotoxy(5,15);

cout<<"最后的余额 : RS."<<t_balance;

char t_tran,t_type[10],tm[10];

float t_amount,t_amt;

do

{

clear(5,18);

valid=1;

gotoxy(5,18);

cout<<"存款或支取(承兑交单):";

t_tran=getche();

if(t_tran=='0')

return;

t_tran=toupper(t_tran);

}while(t_tran!='D'&& t_tran!='W');

do

{

clear(5,19);

clear(5,23);

gotoxy(5,23);

cout<<"以现金或支票进入交易";

valid=1;

gotoxy(5,19);

cout<<"(现金/支票):";

gets(t_type);

strupr(t_type);

if(t_type[0]=='0')

return;

if(strcmp(t_type,"现金")&&strcmp(t_type,"支票"))

{

valid=0;

gotoxy(5,23);

cprintf("7输入正确 ");

getch();

}

}while(!valid);

do

{

clear(5,21);

clear(5,23);

gotoxy(5,23);

cout<<"交易金额";

valid=1;

gotoxy(5,21);

cout<<"金额 :RS.";

gets(tm);

t_amt=atof(tm);

t_amount=t_amt;

if(tm[0]=='0')

return;

if((t_tran=='W'&& t_amount>t_balance)||(t_amount&lt;1))

{

valid=0;

gotoxy(5,23);

cprintf("7无效的数据输入 ");

getch();

}

}while(!valid);

char ch;

clear(5,23);

do

{

clear(40,20);

valid=1;

gotoxy(40,20);

cout<<"保存事务(Y / N): ";

ch=getche();

if(ch=='0')

return;

ch=toupper(ch);

}while(ch!='N'&& ch!='Y');

if(ch=='N')

return;

float t_interest;

t_interest=calculate_interest(t_accno,t_balance);

if(t_tran=='D')

t_balance=t_balance+t_amount+t_interest;

else

t_balance=(t_balance-t_amount)+t_interest;

ini.update_balance(t_accno,t_balance);

add_to_file(t_accno,d1,m1,y1,t_tran,t_type,t_interest,t_amount,t_balance);}

//============================================================

// 此功能关闭帐户(删除帐户)//============================================================

void account::close_account(void){

clrscr();

char t_acc[10];

int t,t_accno;

gotoxy(71,1);

cout<<"< 0 > =退出";

gotoxy(5,5);

cout<<"输入帐户号码.";

gets(t_acc);

t=atoi(t_acc);

t_accno=t;

if(t_accno==0)

return;

clrscr();

initial ini;

if(!ini.found_account(t_accno))

{

gotoxy(5,5);

cout<<"7帐户没有找到";

getch();

return;

}

shape s;

s.box(2,2,79,24,218);

s.line_hor(3,78,4,196);

s.line_hor(3,78,22,196);

gotoxy(71,1);

cout<<"< 0 > =退出";

textbackground(BLACK);

gotoxy(3,3);

for(int i=1;i<=76;i++) cprintf(" ");

textbackground(BLACK);

textcolor(GREEN+BLINK); textbackground(BLACK);

gotoxy(30,3);

cprintf("关闭帐户屏幕");

textcolor(LIGHTBLUE); textbackground(BLACK);

int d1,m1,y1;

struct date d;

getdate(&d);

d1=d.da_day;

m1=d.da_mon;

y1=d.da_year;

gotoxy(62,5);

cout<<"日期: "<<d1<<"/"<<m1<<"/"<<y1;

char ch;

ini.display(t_accno);

do

{

clear(5,15);

gotoxy(5,15);

cout<<"关闭此帐户(Y / N):";

ch=getche();

if(ch=='0')

return;

ch=toupper(ch);

}while(ch!='N'&& ch!='Y');

if(ch=='N')

return;

ini.delete_account(t_accno);

delete_account(t_accno);

gotoxy(5,20);

cout<<"7记录删除";

gotoxy(5,23);

cout<<"按任意键继续…";

getch();}

//===============================================================

//这是主要的功能调用帮助和主菜单

//功能

//===============================================================

void main(void){

control c;

c.help();

c.main_menu();}

.

相关推荐