作业三

头文件、结构体及函数定义

include <stdio.h>

include <string.h>

include <stdlib.h>

define N 100

void Transaccount();//转账
void Menu(); //显示菜单
void Delete(); //删除
void Save_money();//存钱
void Withdraw_money();//取钱
void Show(); //查询信息
void save(int m); //信息存入文件
int read(); //读取信息文件
void Add();//增加开户
void Insert();//初始开户

struct Customer
{
char number[20];//身份证号
char name[10];//姓名
char cipher[20];//密码
float balance;//余额
}Customer[N],kong[2];
2.主函数与菜单

void Menu()
{
printf("ATM信息管理系统\n");
printf("---------------------------\n");
printf("1--转账\n");
printf("2--销户\n");
printf("3--存款\n");
printf("4--取款\n");
printf("5--查询账户余额\n");
printf("6--增加开户\n");
printf("7--退出系统\n");
printf("8--开户\n");
printf("---------------------------\n");
printf("请选择功能:\n");
}

int main()
{
int a;
do
{
Menu();
scanf("%d",&a);
if(a>8||a<0)
{
system("cls");
printf("输入错误! \a\n");
continue;
}
system("cls");
switch(a)
{
case 1: Transaccount();break;
case 2: Delete();break;
case 3: Save_money();break;
case 4: Withdraw_money();break;
case 5: Show();break;
case 6: Add();break;
case 7: exit(0);break;
case 8: Insert();break;
}

}while(1);

}
3. 导入文件和保存文件

void save(int m) /保存文件函数/
{ int i;
FILE fp;
if ((fp=fopen("D:\Customer_list.dat","wb"))==NULL) /
创建文件并判断是否能打开/
{ printf ("cannot open file!\n");
exit(0);
}
for (i=0;i<m;i++) /
将内存中客户的信息输出到磁盘文件中去*/
if (fwrite(&Customer[i],sizeof(struct Customer),1,fp)!=1)
printf("file write error!\n");
fclose(fp);
}

int read() /导入函数/
{ FILE*fp;
int i=0;
if((fp=fopen("D:\Customer_list.dat","rb"))NULL)
{ printf ("cannot open file!\n");
exit(0);
}
else
{
do {
fread(&Customer[i],sizeof(struct Customer),1,fp);
i++;
}while(feof(fp)
0);
}
fclose(fp);
return(i-1);
}

4.初始开户与增加开户
void Insert()//初始开户
{
int x,j,i,k,sum;
printf("请输入开户的人数:\n");
scanf("%d",&x);
for(i=0;i<x;i++)
{
printf("请输入第%d个开户身份证号\n",i+1);
scanf("%s",&Customer[i].number);
for(j=0,sum=0;j<x;j++) //查重
{
for(k=0;k<10;k++)
{
if(j!=i&&Customer[i].number[k]Customer[j].number[k])
sum+=0;
else
sum+=1;
}
if(Customer[j+1].number
NULL)
break;
while(sum0)
{
system("cls");
printf("输入身份证号重复,请重新输入\n");
printf("请输入第%d个客户身份证号\n",i+1);
scanf("%s",&Customer[i].number);
for(k=0;k<10;k++)
{
if(j!=i&&Customer[i].number[k]
Customer[j].number[k])
sum+=0;
else
sum+=1;
}
if(Customer[j+1].number==NULL)
break;
}
}
printf("请输入第%d个客户姓名\n",i+1);
scanf("%s",&Customer[i].name);
printf("请输入第%d个客户密码\n",i+1);
scanf("%s",&Customer[i].cipher);
printf("请输入第%d个客户的存入余额\n",i+1);
scanf("%f",&Customer[i].balance);
system("cls");
}
save(x);
printf("录入完成\n");
}

void Add() //增加开户
{
int z,a,n;
int i,j,k,sum;
int m=read();
system("cls");
printf("增加几位开户信息?\n");
scanf("%d",&a);
while(a<=0)
{
system("cls");
printf("请重新输入");
printf("增加几位客户信息?\n");
scanf("%d",&a);
}
for(z=0;z<a;z++)
{
printf("请输入第%d位客户信息\n",z+1);
for(n=0;n>=0;n++)
if(Customer[n].number[0]'\0')
break;
i=n;
printf("请输入身份证号:\n");
scanf("%s",&Customer[i].number);
for(j=0,sum=0;j<N;j++)//查重
{
if(Customer[j].number[0]
'\0')
continue;
for(k=0;k<10;k++)
{
if(j!=i&&Customer[i].number[k]Customer[j].number[k])
sum+=0;
else
sum+=1;
}
if(Customer[j+1].number
'\0')
break;
while(sum0)
{
system("cls");
printf("输入身份证号重复,请重新输入\n");
printf("请输入身份证号\n");
scanf("%s",&Customer[i].number);
for(k=0;k<10;k++)
{
if(j!=i&&Customer[i].number[k]
Customer[j].number[k])
sum+=0;
else
sum+=1;
}
if(Customer[j+1].number==NULL)
break;
}
}
printf("请输入姓名\n");
scanf("%s",&Customer[i].name);
printf("请输入密码\n");
scanf("%s",&Customer[i].cipher);
printf("请输入存入余额\n");
scanf("%f",&Customer[i].balance);
system("cls");
}
save(m);
printf("开户信息增加完成\n");
printf("%s\t%s\t%f\n",Customer[i].number,Customer[i].name,Customer[i].balance);
}

5.销户
void Delete() //销户
{
int i,j,n;
int m=read();
char cipher[20],number[20];
printf("请输入要销户的身份证号:\n");
scanf("%s",number);
getchar();
printf("请输入密码:");
scanf("%s",cipher);
getchar();
for(i=0;i<N;i++)
{
if(Customer[i].number[0]'\0')
continue;
if(strcmp(number,Customer[i].number)
0 && strcmp(cipher,Customer[i].cipher)0)
{
for(j=i;j<i+1;j++)
Customer[j]=kong[0];
printf("客户信息已经销户成功!\n");
save(m);//储存修改后的数据
return;
}
}
if(i
N)
printf("无此客户资料!\n");

printf("%s\t%s\t%f\n",Customer[i].number,Customer[i].name,Customer[i].balance);
	save(m);//储存修改后的数据

}

6.存钱
void Save_money() //存钱
{
int i,j,n;
int m=read();
float sav_mon;
char cipher[20],number[20];
printf("请输入要存款的身份证号:\n");
scanf("%s",number);
getchar();
printf("请输入密码:");
scanf("%s",cipher);
getchar();
for(i=0;i<N;i++)
{
if(Customer[i].number[0]'\0')
continue;
if(strcmp(number,Customer[i].number)
0 && strcmp(cipher,Customer[i].cipher)==0)
{
printf("输入要存入的款数:\n");
scanf("%f",&sav_mon);
Customer[i].balance = Customer[i].balance + sav_mon;
printf("客户已存款成功!\n");
save(m);//储存修改后的数据
printf("%s\t%s\t%f\n",Customer[i].number,Customer[i].name,Customer[i].balance);

			return;
		}
	}
	if(i==N)
		printf("无此客户资料!\n");

	save(m);//储存修改后的数据

}

7.取钱
void Withdraw_money() //取钱
{
int i,j,n;
int m=read();
float withdraw_mon;
char cipher[20],number[20];
printf("请输入要取款的身份证号:\n");
scanf("%s",number);
getchar();
printf("请输入密码:");
scanf("%s",cipher);
getchar();
for(i=0;i<N;i++)
{
if(Customer[i].number[0]'\0')
continue;
if(strcmp(number,Customer[i].number)
0 && strcmp(cipher,Customer[i].cipher)==0)
{
printf("输入要取出的款数:\n");
scanf("%f",&withdraw_mon);
if(Customer[i].balance >= withdraw_mon)
{
Customer[i].balance = Customer[i].balance - withdraw_mon;
printf("客户已取款成功!\n");
save(m);//储存修改后的数据
}
else
printf("账户余额不足!");

			printf("%s\t%s\t%f\n",Customer[i].number,Customer[i].name,Customer[i].balance);		
			return;
		}
	}
	if(i==N)
		printf("无此客户资料!\n");

	save(m);//储存修改后的数据

}
8.转账
void Transaccount()//转账
{
int i,j,n;
int m=read();
float trans_mon;
char cipher[20],number[20],number2[20];
printf("请输入要转账的身份证号:\n");
scanf("%s",number);
getchar();
printf("请输入密码:");
scanf("%s",cipher);
getchar();
for(i=0;i<N;i++)
{
if(Worker[i].number[0]'\0')
continue;
if(strcmp(number,Worker[i].number)
0 && strcmp(cipher,Worker[i].cipher)0)
{
printf("登录成功,请输入要转入的身份证号:\n");
scanf("%s",number2);
getchar();
for(j=0;j<N;j++)
{
if(Worker[j].number[0]
'\0')
continue;
if(strcmp(number2,Worker[j].number)0)
{
printf("输入要转账的款数:\n");
scanf("%f",&trans_mon);
if(Worker[i].balance >= trans_mon)
{
Worker[i].balance = Worker[i].balance - trans_mon;
Worker[j].balance = Worker[j].balance + trans_mon;
printf("客户已转账成功!\n");
save(m);//储存修改后的数据
printf("%s\t%s\t%f\n",Worker[i].number,Worker[i].name,Worker[i].balance);
printf("%s\t%s\t%f\n",Worker[j].number,Worker[j].name,Worker[j].balance);
}
else
printf("账户余额不足!");
}
}
if(j
N)
printf("无此转入客户资料!\n");
}
}
if(i==N)
printf("无此客户资料!\n");

	save(m);//储存修改后的数据

}

9.查询余额

void Show()//查询余额
{
int i,j,n;
int m=read();
char cipher[20],number[20];
printf("请输入要查询的身份证号:\n");
scanf("%s",number);
getchar();
printf("请输入密码:");
scanf("%s",cipher);
getchar();
for(i=0;i<N;i++)
{
if(Customer[i].number[0]'\0')
continue;
if(strcmp(number,Customer[i].number)
0 && strcmp(cipher,Customer[i].cipher)0)
{
printf("%s\t%s\t%f\n",Customer[i].number,Customer[i].name,Customer[i].balance);
return;
}
else
printf("密码错误!\n");
}
if(i
N)
printf("无此客户资料!\n");

}
10.运行截图
菜单
头文件、结构体及函数定义

include <stdio.h>

include <string.h>

include <stdlib.h>

define N 100

void Transaccount();//转账
void Menu(); //显示菜单
void Delete(); //删除
void Save_money();//存钱
void Withdraw_money();//取钱
void Show(); //查询信息
void save(int m); //信息存入文件
int read(); //读取信息文件
void Add();//增加开户
void Insert();//初始开户

struct Customer
{
char number[20];//身份证号
char name[10];//姓名
char cipher[20];//密码
float balance;//余额
}Customer[N],kong[2];
2.主函数与菜单

void Menu()
{
printf("ATM信息管理系统\n");
printf("---------------------------\n");
printf("1--转账\n");
printf("2--销户\n");
printf("3--存款\n");
printf("4--取款\n");
printf("5--查询账户余额\n");
printf("6--增加开户\n");
printf("7--退出系统\n");
printf("8--开户\n");
printf("---------------------------\n");
printf("请选择功能:\n");
}

int main()
{
int a;
do
{
Menu();
scanf("%d",&a);
if(a>8||a<0)
{
system("cls");
printf("输入错误! \a\n");
continue;
}
system("cls");
switch(a)
{
case 1: Transaccount();break;
case 2: Delete();break;
case 3: Save_money();break;
case 4: Withdraw_money();break;
case 5: Show();break;
case 6: Add();break;
case 7: exit(0);break;
case 8: Insert();break;
}

}while(1);

}
3. 导入文件和保存文件

void save(int m) /保存文件函数/
{ int i;
FILE fp;
if ((fp=fopen("D:\Customer_list.dat","wb"))==NULL) /
创建文件并判断是否能打开/
{ printf ("cannot open file!\n");
exit(0);
}
for (i=0;i<m;i++) /
将内存中客户的信息输出到磁盘文件中去*/
if (fwrite(&Customer[i],sizeof(struct Customer),1,fp)!=1)
printf("file write error!\n");
fclose(fp);
}

int read() /导入函数/
{ FILE*fp;
int i=0;
if((fp=fopen("D:\Customer_list.dat","rb"))NULL)
{ printf ("cannot open file!\n");
exit(0);
}
else
{
do {
fread(&Customer[i],sizeof(struct Customer),1,fp);
i++;
}while(feof(fp)
0);
}
fclose(fp);
return(i-1);
}

4.初始开户与增加开户
void Insert()//初始开户
{
int x,j,i,k,sum;
printf("请输入开户的人数:\n");
scanf("%d",&x);
for(i=0;i<x;i++)
{
printf("请输入第%d个开户身份证号\n",i+1);
scanf("%s",&Customer[i].number);
for(j=0,sum=0;j<x;j++) //查重
{
for(k=0;k<10;k++)
{
if(j!=i&&Customer[i].number[k]Customer[j].number[k])
sum+=0;
else
sum+=1;
}
if(Customer[j+1].number
NULL)
break;
while(sum0)
{
system("cls");
printf("输入身份证号重复,请重新输入\n");
printf("请输入第%d个客户身份证号\n",i+1);
scanf("%s",&Customer[i].number);
for(k=0;k<10;k++)
{
if(j!=i&&Customer[i].number[k]
Customer[j].number[k])
sum+=0;
else
sum+=1;
}
if(Customer[j+1].number==NULL)
break;
}
}
printf("请输入第%d个客户姓名\n",i+1);
scanf("%s",&Customer[i].name);
printf("请输入第%d个客户密码\n",i+1);
scanf("%s",&Customer[i].cipher);
printf("请输入第%d个客户的存入余额\n",i+1);
scanf("%f",&Customer[i].balance);
system("cls");
}
save(x);
printf("录入完成\n");
}

void Add() //增加开户
{
int z,a,n;
int i,j,k,sum;
int m=read();
system("cls");
printf("增加几位开户信息?\n");
scanf("%d",&a);
while(a<=0)
{
system("cls");
printf("请重新输入");
printf("增加几位客户信息?\n");
scanf("%d",&a);
}
for(z=0;z<a;z++)
{
printf("请输入第%d位客户信息\n",z+1);
for(n=0;n>=0;n++)
if(Customer[n].number[0]'\0')
break;
i=n;
printf("请输入身份证号:\n");
scanf("%s",&Customer[i].number);
for(j=0,sum=0;j<N;j++)//查重
{
if(Customer[j].number[0]
'\0')
continue;
for(k=0;k<10;k++)
{
if(j!=i&&Customer[i].number[k]Customer[j].number[k])
sum+=0;
else
sum+=1;
}
if(Customer[j+1].number
'\0')
break;
while(sum0)
{
system("cls");
printf("输入身份证号重复,请重新输入\n");
printf("请输入身份证号\n");
scanf("%s",&Customer[i].number);
for(k=0;k<10;k++)
{
if(j!=i&&Customer[i].number[k]
Customer[j].number[k])
sum+=0;
else
sum+=1;
}
if(Customer[j+1].number==NULL)
break;
}
}
printf("请输入姓名\n");
scanf("%s",&Customer[i].name);
printf("请输入密码\n");
scanf("%s",&Customer[i].cipher);
printf("请输入存入余额\n");
scanf("%f",&Customer[i].balance);
system("cls");
}
save(m);
printf("开户信息增加完成\n");
printf("%s\t%s\t%f\n",Customer[i].number,Customer[i].name,Customer[i].balance);
}

5.销户
void Delete() //销户
{
int i,j,n;
int m=read();
char cipher[20],number[20];
printf("请输入要销户的身份证号:\n");
scanf("%s",number);
getchar();
printf("请输入密码:");
scanf("%s",cipher);
getchar();
for(i=0;i<N;i++)
{
if(Customer[i].number[0]'\0')
continue;
if(strcmp(number,Customer[i].number)
0 && strcmp(cipher,Customer[i].cipher)0)
{
for(j=i;j<i+1;j++)
Customer[j]=kong[0];
printf("客户信息已经销户成功!\n");
save(m);//储存修改后的数据
return;
}
}
if(i
N)
printf("无此客户资料!\n");

printf("%s\t%s\t%f\n",Customer[i].number,Customer[i].name,Customer[i].balance);
	save(m);//储存修改后的数据

}

6.存钱
void Save_money() //存钱
{
int i,j,n;
int m=read();
float sav_mon;
char cipher[20],number[20];
printf("请输入要存款的身份证号:\n");
scanf("%s",number);
getchar();
printf("请输入密码:");
scanf("%s",cipher);
getchar();
for(i=0;i<N;i++)
{
if(Customer[i].number[0]'\0')
continue;
if(strcmp(number,Customer[i].number)
0 && strcmp(cipher,Customer[i].cipher)==0)
{
printf("输入要存入的款数:\n");
scanf("%f",&sav_mon);
Customer[i].balance = Customer[i].balance + sav_mon;
printf("客户已存款成功!\n");
save(m);//储存修改后的数据
printf("%s\t%s\t%f\n",Customer[i].number,Customer[i].name,Customer[i].balance);

			return;
		}
	}
	if(i==N)
		printf("无此客户资料!\n");

	save(m);//储存修改后的数据

}

7.取钱
void Withdraw_money() //取钱
{
int i,j,n;
int m=read();
float withdraw_mon;
char cipher[20],number[20];
printf("请输入要取款的身份证号:\n");
scanf("%s",number);
getchar();
printf("请输入密码:");
scanf("%s",cipher);
getchar();
for(i=0;i<N;i++)
{
if(Customer[i].number[0]'\0')
continue;
if(strcmp(number,Customer[i].number)
0 && strcmp(cipher,Customer[i].cipher)==0)
{
printf("输入要取出的款数:\n");
scanf("%f",&withdraw_mon);
if(Customer[i].balance >= withdraw_mon)
{
Customer[i].balance = Customer[i].balance - withdraw_mon;
printf("客户已取款成功!\n");
save(m);//储存修改后的数据
}
else
printf("账户余额不足!");

			printf("%s\t%s\t%f\n",Customer[i].number,Customer[i].name,Customer[i].balance);		
			return;
		}
	}
	if(i==N)
		printf("无此客户资料!\n");

	save(m);//储存修改后的数据

}
8.转账
void Transaccount()//转账
{
int i,j,n;
int m=read();
float trans_mon;
char cipher[20],number[20],number2[20];
printf("请输入要转账的身份证号:\n");
scanf("%s",number);
getchar();
printf("请输入密码:");
scanf("%s",cipher);
getchar();
for(i=0;i<N;i++)
{
if(Worker[i].number[0]'\0')
continue;
if(strcmp(number,Worker[i].number)
0 && strcmp(cipher,Worker[i].cipher)0)
{
printf("登录成功,请输入要转入的身份证号:\n");
scanf("%s",number2);
getchar();
for(j=0;j<N;j++)
{
if(Worker[j].number[0]
'\0')
continue;
if(strcmp(number2,Worker[j].number)0)
{
printf("输入要转账的款数:\n");
scanf("%f",&trans_mon);
if(Worker[i].balance >= trans_mon)
{
Worker[i].balance = Worker[i].balance - trans_mon;
Worker[j].balance = Worker[j].balance + trans_mon;
printf("客户已转账成功!\n");
save(m);//储存修改后的数据
printf("%s\t%s\t%f\n",Worker[i].number,Worker[i].name,Worker[i].balance);
printf("%s\t%s\t%f\n",Worker[j].number,Worker[j].name,Worker[j].balance);
}
else
printf("账户余额不足!");
}
}
if(j
N)
printf("无此转入客户资料!\n");
}
}
if(i==N)
printf("无此客户资料!\n");

	save(m);//储存修改后的数据

}

9.查询余额

void Show()//查询余额
{
int i,j,n;
int m=read();
char cipher[20],number[20];
printf("请输入要查询的身份证号:\n");
scanf("%s",number);
getchar();
printf("请输入密码:");
scanf("%s",cipher);
getchar();
for(i=0;i<N;i++)
{
if(Customer[i].number[0]'\0')
continue;
if(strcmp(number,Customer[i].number)
0 && strcmp(cipher,Customer[i].cipher)0)
{
printf("%s\t%s\t%f\n",Customer[i].number,Customer[i].name,Customer[i].balance);
return;
}
else
printf("密码错误!\n");
}
if(i
N)
printf("无此客户资料!\n");

}
10.运行截图
菜单

开户

查询

存款

取款

转账

posted @ 2020-11-19 08:31  追梦,追念。。  阅读(94)  评论(0编辑  收藏  举报