#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<process.h>
#include<time.h>
int co=0,sa=0;
struct account
{
int num;
char name[20];
float total_money;
};
struct date{
int month;
int day;
int year;
};
struct transaction
{
int num;
int kind;
float use_money;
struct date date1;
};
void add_account(struct account[]);
void deposit(struct account[],struct transaction[]);
void get_money(struct account[],struct transaction[]);
void rest_money(struct account[]);
void used(struct account[],struct transaction[]);
int find(struct account[],int);
struct date get_time();
int check_number(struct account[],int);
void main()
{
struct account ac[20];
struct transaction tr[50];
int count=0;
char sel='1';
while(sel != '6')
{
system("cls");
printf("------------------------ICBC Bank System------------------------\n\n");
printf("1.添加帐户\n2.存款\n3.取款\n4.余额查询\n5.交易查询\n6.退出\n");
printf("\n请选择:");
sel=getchar();
switch(sel)
{
case'1':
add_account(ac);
break;
case'2':
deposit(ac,tr);
break;
case'3':
get_money(ac,tr);
break;
case'4':
rest_money(ac);
break;
case'5':
used(ac,tr);
break;
}
}
}
//添加帐户
void add_account(struct account ac[])
{
char flag;
do
{
int t,e;
printf("\n第%d个帐号",co+1);
printf("\n帐号:");
scanf("%d",&ac[co].num);
e=check_number(ac,co);
if(e==0)
{
printf("请输入任意键退出");
getch();
continue;
}
printf("\n用户名:");
scanf("%s",ac[co].name);
printf("\n金额:");
scanf("%f",&ac[co].total_money);
co++;
printf("\n是否继续(y/n):");
fflush(stdin);
flag=getchar();
}while(flag=='y'||flag=='Y');
}
//存款
void deposit(struct account ac[],struct transaction tr[])
{
int i,ano;
float an;
date c;
printf("\n存钱");
printf("\n输入帐号:");
scanf("%d",&ano);
i=find(ac,ano);
if(i==-1)
{
printf("\n对不起,不存在此帐户!");
getch();
return;
}
printf("开始存款\n%d的帐户有余额:%f",ac[i].num,ac[i].total_money);
printf("\n请放入钱");
scanf("%f",&an);
ac[i].total_money+=an;
tr[sa].num=ano;
tr[sa].kind=1;
c=get_time();
tr[sa].date1.year=c.year;
tr[sa].date1.month=c.month;
tr[sa].date1.day=c.day;
tr[sa].use_money=an;
sa++;
printf("\n按任意键返回主菜单:");
getch();
}
//取款
void get_money(struct account ac[],struct transaction tr[])
{
int i,ano;
float an;
date da;
printf("\n取钱");
printf("\n输入帐号:");
scanf("%d",&ano);
i=find(ac,ano);
if(i==-1)
{
printf("\n对不起,不存在此帐户!");
getch();
return;
}
printf("开始取款\n%d的帐户有余额:%f",ac[i].num,ac[i].total_money);
printf("\n请输入金额");
scanf("%f",&an);
if(an>ac[i].total_money)
{
printf("\n对不起,余额不足!");
getch();
return;
}
ac[i].total_money-=an;
tr[sa].num=ano;
tr[sa].kind=0;
da=get_time();
tr[sa].date1.year=da.year;
tr[sa].date1.month=da.month;
tr[sa].date1.day=da.day;
tr[sa].use_money=an;
sa++;
printf("\n按任意键返回主菜单:");
getch();
}
int find(struct account ac[],int no)
{
int i;
for(i=0;i<co;i++)
{
if(ac[i].num==no)
return i;
}
return -1;
}
void rest_money(struct account ac[])
{
int ano,i;
system("cls");
printf("\n输入要查寻的帐号:");
scanf("%d",&ano);
i=find(ac,ano);
if(i==-1)
{
printf("\n对不起,不存在此帐户!");
getch();
return;
}
printf("%d的帐户有余额:%f",ac[i].num,ac[i].total_money);
printf("\n按任意键返回主菜单:");
getch();
}
//查寻帐户的所有信息
void used(struct account ac[],struct transaction tr[])
{
int ano,i,t;
system("cls");
printf("\n输入要查寻的帐号:");
scanf("%d",&ano);
i=find(ac,ano);
if(i==-1)
{
printf("\n对不起,不存在此帐户!");
getch();
return;
}
printf("\n帐号\t用户名\t交易金额\t日期\t\t类型");
for(t=0;t<sa;t++)
{
if(tr[t].num==ano)
{
printf("\n%-8d%s\t%-8.2f\t%d年%d月%d日\t",ano,ac[i].name,tr[t].use_money,tr[t].date1.year,tr[t].date1.month,tr[t].date1.day);
if(tr[t].kind=1)
printf("存钱");
if(tr[t].kind=0)
printf("取钱");
}
}
printf("\n按任意键返回主菜单:");
getch();
}
//获取系统时间
struct date get_time()
{
struct tm *p;
struct date da;
time_t t;
time(&t);
p=localtime(&t);//取得当地时间
da.year=1900+p->tm_year;
da.month=1+p->tm_mon;
da.day=p->tm_mday;
return da;
}
//测试用户名
int check_number(struct account ac[],int cnt)
{
for(int i=0;i<cnt;i++)
{
if(ac[cnt].num==ac[i].num)
{
printf("\n所输入用户名已存在,请重新输入!\n");
return 0;
}
}
return 1;
}