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<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<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();}
.
1.文章《kgtemp文件怎么打开kgtemp文件怎么变成mp4…》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚联系方式。
2.文章《kgtemp文件怎么打开kgtemp文件怎么变成mp4…》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
相关推荐
- . 现代买票为什么带上携程保险
- . 潮阳怎么去广州南站
- . 湖南马拉河怎么样
- . 烧纸为什么到三岔路口
- . 百色为什么这么热
- . 神州租车怎么样
- . 芜湖方特哪个适合儿童
- . 护肤品保养液是什么类目
- . 早晚的护肤保养有哪些项目
- . 女孩护肤品怎么保养的最好