重新编辑了一下,可以发出来了
若能解决,十分感谢
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#define max 2000//设置最大用户数
int N;//实际用户数
struct accountInformation{
char account[max+1];//账号
char name[11];//姓名
float balance;//余额
char identificationNumber[19];//身份证号码
char phoneNumber[12];//电话号码
}users;//创建账户信息结构体,包括账号、姓名、余额、身份证号码、电话号码
struct record users[max]//系统内所有账户
int welcome();//欢迎界面的功能实现
void openAccount();//开户
int menu();//菜单
void deposit();//存款
void withdraw();//取款
void showAccount();//查询用户信息
void showAll();//显示所有用户
void closeAccount();//销户
void readData();//开始前从文件中读数据,存在数组中
void writeData();//程序结束前,将数组中的数据写入到文件中
int main()
{
system("color f4");
system("title 银行账户管理系统");//设置窗口标题
readData();
welcome();
writeData();
return 0;
}
int welcome()//欢迎界面的功能实现
{
int Choice;/*选择功能*/
do
{
Choice=menu();
switch(Choice)
{
case 1:
openAccount();//开户
break;
case 2:
void closeAccount();//销户
break;
case 3:
void deposit();//存款
break;
case 4:
void withdraw();//取款
case 5:
void showAccount();//查询用户信息
break;
case 0:
printf("结束使用,退出系统\n欢迎下次使用!");
break;
}
}while(Choice);
}
int menu()//菜单
{
int i;
while(1)
{
printf(" _________________________________________ \n");
printf("* *\n");
printf("* 欢迎使用银行账户管理系统 *\n");
printf("* *\n");
printf("* 1.开户 2.销户 *\n");
printf("* 3.存款 4.取款 *\n");
printf("* 5.查询 0.退出 *\n");
printf("* *\n");
printf("*_________________________________________*\n");
printf("请选择服务类型:");
scanf("%d,&i");
if(i>=0&&i<=5)
break;
else
printf("选择有误,请重新选择\n\n");
}
return i;
}
void openAccount()/*开户:输入账户信息并予以保存。账户信息包括
账号、姓名、余额、身份证号码、电话号码。若输入信息中的账号已经
存在,则不允许添加该信息。*/
{
if(N==max)//用户数量超上限
{
printf("用户已达上限,开户失败");
return;
}
int j;
printf("正在进行开户业务\n");//用户数未超标时
users[N].account=N-1;//账号顺延
printf("账号:%s",users[N].account);//输出账号
printf("姓名:");//输入姓名
scanf("%s",users[N].name);
printf("余额:");
scanf("%f",users[N].balance);
printf("身份证号码:");
scanf("%s,identificationNumber");
for (j = 0; j < N; j++)
{
if (strcmp(users[N].identificationNumber, users[j].identificationNumber) == 0)
{
printf("该用户已存在,开户失败!\n");
break;
}
}
printf("电话号码:");
scanf("%s,phoneNumber");
printf("开户成功!");
}
void closeAccount();//销户
{
int i, j, flag = 0;
char s1[5];
printf("请输入要删除的账号:\n");
scanf("%s", s1);
for (i = 0; i < N; i++)
{
if (strcpy(users[i].account, s1) == 0)
{
flag = 1;
//要删除账号后面的账号往前移一位
for (j = i; j < n - 1; j++)
{
users[j] = users[j + 1];
}
}
}
//查找失败
if (0 == flag)
{
printf("该账户不存在!!!\n");
}
if (1 == flag)
{
printf("删除成功!");
//删除成功,账户数量减1
N--;
}
}
void deposit();//存款
{
int id,who;
double money;
printf("请输入需要存款的账号:");
scanf("%d",&id);
who=search(id);//根据账号查询用户,返回用户下标
if(who<0)//说明id账户不存在
{
printf("该用户不存在,存款失败!\n");
}
else
{
printf("用户姓名:%s\n",users[who].name);
printf("输入存款额:");
scanf("%lf",&money);
users[who].balance+=money;
printf("存款后,该账号的余额为:%.2f.\n",users[who].balance);
}
return;
}
void withdraw();//取款
{
int id,who;
int iPass;
double money;
printf("请输入需要取款的账号:");
scanf("%d",&id);
who=search(id);//根据账号查询用户,返回用户下标
if(who<0)//说明id账户不存在
{
printf("该用户不存在,取款失败!\n");
}
else
{
printf("用户姓名:%s\n",users[who].name);
printf("请输入取款额:");
scanf("%lf",&money);
if(money>users[who].balance)//余额不足
{
printf("余额不足,取款失败!\n");
printf("贷款功能尚未开通,敬请期待。\n");
}
else
{
users[who].balance-=money;
priintf("取款后,剩余%.2f元.\n",users[who].balance);
}
}return;
}
void shouAccount();//查询账户信息
{
int i,item,flag;
char s1[max+1];
printf(" _________________________________________ \n");
printf(" | |\n");
printf(" | 查 询 账 户 信 息 |\n");
printf(" | |\n");
printf(" | 1.按账号查询 |\n");
printf(" | 2.按姓名查询 |\n");
printf(" | 3.退出本菜单 |\n");
printf(" |________________________________________|\n");
while (1)
{
printf("请选择子菜单编号:");
scanf("%d", &item);
flag = 0;
switch (item)
{
case 1:
printf("请输入要查询用户的账号:\n");
scanf("%s", s1);
for (i = 0; i<N; i++)
if (strcmp(s1,users[i].account) == 0)
{
flag = 1;
printf("账号 姓名 余额 身份证号码 电话号码\n");
printf("========================================================================\n");
printf("%d %s %.2f %s %s",users[who].account,users[who].name,users[who].balance,users[who].identificationNumber,users[who].phoneNumber);
}
if (0 == flag)
printf("该账号不存在!\n");
break;
case 2:
printf("请输入要查询用户的姓名:\n");
scanf("%s", s1);
for (i = 0; i<N; i++)
if (strcmp(users[i].name, s1) == 0)
{
flag = 1;
printf("账号 姓名 余额 身份证号码 电话号码\n");
printf("========================================================================\n");
printf("%d %s %.2f %s %s",users[who].account,users[who].name,users[who].balance,users[who].identificationNumber,users[who].phoneNumber);
}
if (0 == flag)
printf("该姓名不存在!\n"); break;
case 3:
return;
default:
void showAll();
}
}
}
void showAll()//显示所有用户
{
int i;
printf("以下为所有账户信息(按账号由小到大排序):");
printf("账号 姓名 余额 身份证号码 电话号码\n");
printf("========================================================================\n");
for(i=0;i<=N;i++)
{
printf("%d %s %.2f %s %s",users[i].account,users[i].name,users[i].balance,users[i].identificationNumber,users[i].phoneNumber);
}
}
void readData()//读
{
FILE *fp;
int i=0;
//从文件中取出余额
if((fp=fopen("account.txt","a+"))==NULL)
{
printf("Data file cannot open!");
exit(0);
}
while(fscanf(fp,"%s %s %.2f %s %s",users[i].account,users[i].name,users[i].balance,users[i].identificationNumber,users[i].phoneNumber)!=EOF)
{
i++;
}
N=i;//用全局变量储存用户总人数
fclose(fp);
return;
}
void writeData()//写
{
FILE *fp;
int i=0;
//保存余额
if((fp=fopen("account.txt","w"))==NULL)
{
printf("Data file cannot open!");
exit(0);
}
for(i=0;i<N;i++)
fprintf(fp,"%s %s %.2f %s %s",users[i].account,users[i].name,users[i].balance,users[i].identificationNumber,users[i].phoneNumber);
fclosr(fp);