c语言错误求解(银行存取管理系统)

c语言银行管理系统编译问题

一编译就这样了,这种情况怎么解决?

#define _CRT_SECURE_NO_WARNINGS
#include
#include
const int Max= 100;
const int N= 12;
struct trMoney
{
    int getMoney=0;//取款
    int setMoney=0;//存款
};
struct ConutInfo
{
    int No;//编号
    char Name[N];//姓名
    int Password;//密码
    char Address[N];//地址
    char Phone[N];//电话
    int SumMoney;//总金额
};
struct Bank
{
    struct ConutInfo counter[Max];
    struct trMoney TM [Max];
    int size = 0;
};
void showMenu();//菜单功能
void Init_Bank(Bank* M)
{
    int count;
    printf("初始化创建管理系统的客户个数为:");
    scanf("%d", &count);
    printf("开始添加:\n");
    for (int i = 0; i < count; i++)
    {
        int r = rand() % 99 + 2018001;
        M->counter[M->size].No = r;
        printf("随机生成客户编号完成:\t\n");
        printf("录入客户姓名为:");
        scanf("%s", &M->counter[M->size].Name);
        printf("录入客户密码为:");
        scanf("%d", &M->counter[M->size].Password);
        printf("录入客户地址为:");
        scanf("%s", &M->counter[M->size].Address);
        printf("录入客户电话为:");
        scanf("%s", &M->counter[M->size].Phone);
        printf("录入客户账户总额为:");
        scanf("%d", &M->counter[M->size].SumMoney);
        M->size++;
    }
    system("pause"); system("cls");
}
void Add_Bank(Bank* M)
{
    int r = rand() % 99 + 2018001;
    M->counter[M->size].No = r;
    printf("随机生成客户编号完成:\t\n");
    printf("录入客户姓名为:");
    scanf("%s", &M->counter[M->size].Name);
    printf("录入客户密码为:");
    scanf("%d", &M->counter[M->size].Password);
    printf("录入客户地址为:");
    scanf("%s", &M->counter[M->size].Address);
    printf("录入客户电话为:");
    scanf("%s", &M->counter[M->size].Phone);
    printf("录入客户账户总额为:");
    scanf("%d", &M->counter[M->size].SumMoney);
    M->size++;
    system("pause"); system("cls");
}
int isExit(Bank *M,char *name,int password)//姓名和密码判断是否有此人
{
    for (int i = 0; i if (*M->counter[i].Name == *name && M->counter[i].Password==password) return i;
    }
    return -1;
}
int isExit2(Bank *M,int no)//编号判断是否有此人
{
    for (int i = 0; i if (M->counter[i].No == no) return i;
    }
    return -1;
}
void Trans_Bank(Bank* M)
{
    char name[N]; int password;
    printf("输入存取款客户的姓名:\t");
    scanf("%s", &name);
    printf("输入对应的密码:\t");
    scanf("%d", &password);
    int v = isExit(M, name, password);
    if (v != -1)
    {
        printf("验证成功:\n");
        while (1)
        {
            printf("选择你的操作:1--取款 --2--存款 --0--退出\n");
            int z = 0;
            scanf("%d", &z);
            switch (z)
            {
            case 1:
            {
                int getmoney = 0;
                printf("取钱的金额为:"); scanf("%d", &getmoney);
                if (M->counter[v].SumMoney < getmoney)
                {
                    printf("非法操作,请减少取款量\n");
                }
                else
                {
                    M->TM[v].getMoney = getmoney;
                    M->counter[v].SumMoney -= M->TM[v].getMoney;
                    printf("取款成功!");
                }
                break;
            }
            case 2:
            {
                int setmoney = 0;
                printf("存钱的金额为:"); scanf("%d", &setmoney);
                //M->counter[v].F.setMoney = setmoney;
                M->TM[v].setMoney = setmoney;
                M->counter[v].SumMoney += M->TM[v].setMoney;
                break;
            }
            case 0:printf("\n退出存取款功能,欢迎下次使用!\n"); system("pause"); system("cls"); return;
            }
        }
    }
    else printf("查无此人");
    system("pause"); system("cls");
}
void Show_Bank(Bank* M)
{
    char name[N]; int password;
    printf("输入查询客户的姓名:\t");
    scanf("%s", &name);
    printf("输入对应的密码:\t");
    scanf("%d", &password);
    int v = isExit(M,name,password);
    if (v != -1)
    {
        printf("客户编码为:\t");
        printf("%d\n", M->counter[v].No);
        printf("客户名字为:\t");
        printf("%s\n", M->counter[v].Name);
        printf("客户电话为:\t");
        printf("%s\n", M->counter[v].Phone);
        printf("客户地址为:\t");
        printf("%s\n", M->counter[v].Address);
        if (M->TM[v].getMoney <= 0 && M->TM[v].setMoney<=0)
        {
            printf("暂无存取款记录");
        }
        else if (M->TM[v].getMoney > 0)
        {
            printf("客户取走了 %d元\t", M->TM[v].getMoney);
        }
        else if(M->TM[v].setMoney > 0)
        {
            printf("客户存取了 %d元\t", M->TM[v].setMoney);
        }
        printf("\n账户总金额为:\t");
        printf("%d\n", M->counter[v].SumMoney);
    }
    else printf("查无此人");
    system("pause"); system("cls");
}
void Modify_Bank(Bank *M)
{
    int no = 0;
    printf("输入查询客户的编号:\t");
    scanf("%d", &no);
    int v = isExit2(M, no);
    if (v != -1)
    {
        printf("修改客户姓名为:");
        scanf("%s", &M->counter[v].Name);
        printf("修改客户密码为:");
        scanf("%d", &M->counter[v].Password);
        printf("修改客户地址为:");
        scanf("%s", &M->counter[v].Address);
        printf("修改客户电话为:");
        scanf("%s", &M->counter[v].Phone);
        printf("修改完毕!\n");
    }
    else printf("查无此人");
    system("pause"); system("cls");
}
int main()
{
    Bank M;
    while (1) {
        showMenu();
        int select = 0;
        printf("请选择你的操作:");
        scanf("%d", &select);
        switch (select)
        {
        case 1:
            Init_Bank(&M);
            break;
        case 2:
            Add_Bank(&M);
            break;
        case 3:
        {
            Show_Bank(&M);
        }
        break;
        case 4:
        {
            Trans_Bank(&M);
        }
        break;
        case 5:
        {
            Modify_Bank(&M);
            break;
        }
        break;
        case 0://退出
            printf("欢迎下次使用,祝您生活愉快\n"); return 0;  break;
        default:
            printf("请合理输入操作数0~5:\n");
            scanf("%d", &select);
            break;
        }
    }
}
void showMenu()//菜单功能
{
    printf("\t*****************************\n");
    printf("\t***** 1、银行系统初始化 *****\n");
    printf("\t***** 2、添加客户信息   *****\n");
    printf("\t***** 3、查询客户信息   *****\n");
    printf("\t***** 4、客户存取款功能 *****\n");
    printf("\t***** 5、客户信息修改   *****\n");
    printf("\t***** 0、退出管理系统   *****\n");
    printf("\t*****************************\n");
}
void showMenu();//菜单功能
void Init_Bank(Bank* M);//初始化客户
void Add_Bank(Bank* M);//添加客户
int isExit(Bank* M, char* name, int password);//账号密码判断是否有客户
int isExit2(Bank* M, int no);//编号判断是否有客户
void Trans_Bank(Bank* M);//存取款
void Show_Bank(Bank* M);//查询客户信息
void Modify_Bank(Bank* M);//修改客户信息

img

img

img

img

img

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

不知道怎么回事,求解

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define Max 100
#define N 50
typedef struct trMoney
{
    int getMoney;//取款
    int setMoney;//存款
}trMoney;
typedef struct ConutInfo
{
    int No;//编号
    char Name[N];//姓名
    int Password;//密码
    char Address[N];//地址
    char Phone[N];//电话
    int SumMoney;//总金额
}ConutInfo;
typedef struct Bank
{
    struct ConutInfo counter[Max];
    struct trMoney TM [Max];
    int size ;//=0
}Bank;
void showMenu()//菜单功能
{
    printf("\t*****************************\n");
    printf("\t***** 1、银行系统初始化 *****\n");
    printf("\t***** 2、添加客户信息   *****\n");
    printf("\t***** 3、查询客户信息   *****\n");
    printf("\t***** 4、客户存取款功能 *****\n");
    printf("\t***** 5、客户信息修改   *****\n");
    printf("\t***** 0、退出管理系统   *****\n");
    printf("\t*****************************\n");
}
void Init_Bank(Bank* M)
{
    int count;
    printf("初始化创建管理系统的客户个数为:");
    scanf("%d", &count);
    getchar();
    printf("开始添加:\n");
    for (int i = 0; i < count; i++)
    {
        int r = rand() % 99 + 2018001;
        M->size=0;
        M->TM[M->size].setMoney=M->TM[M->size].getMoney=0;
        M->counter[M->size].No = r;
        printf("随机生成客户编号完成:\n");
        printf("录入客户姓名为:");
        scanf("%s", M->counter[M->size].Name);
        getchar();//获取回车符
        printf("录入客户密码为:");
        scanf("%d", &M->counter[M->size].Password);
        printf("录入客户地址为:");
        scanf("%s", M->counter[M->size].Address);
        printf("录入客户电话为:");
        scanf("%s", M->counter[M->size].Phone);
        printf("录入客户账户总额为:");
        scanf("%d", &M->counter[M->size].SumMoney);
        M->size++;
    }
    system("pause");
     system("cls");
}
void Add_Bank(Bank* M)
{
    int r = rand() % 99 + 2018001;
    M->TM[M->size].setMoney=M->TM[M->size].getMoney=0;
    M->counter[M->size].No = r;
    printf("随机生成客户编号完成:\n");
    printf("录入客户姓名为:");
    scanf("%s", M->counter[M->size].Name);
    printf("录入客户密码为:");
    scanf("%d", &M->counter[M->size].Password);
    printf("录入客户地址为:");
    scanf("%s", M->counter[M->size].Address);
    printf("录入客户电话为:");
    scanf("%s", M->counter[M->size].Phone);
    printf("录入客户账户总额为:");
    scanf("%d", M->counter[M->size].SumMoney);
    M->size++;
    system("pause"); system("cls");
}
int isExit(Bank *M,char name[N],int password)//姓名和密码判断是否有此人
{
    for (int i = 0; i <Max; i++)
    {
        if (strcmp(M->counter[i].Name,name)==0 && M->counter[i].Password==password) 
        {return i;}
    }
    return -1;
}
int isExit2(Bank *M,int no)//编号判断是否有此人
{
    for (int i = 0; i <Max; i++)
    {
        if (M->counter[i].No == no) 
        {return i;}
    }
    return -1;
}
void Trans_Bank(Bank* M)
{
    char name[N]; 
    int password;
    printf("输入存取款客户的姓名:\t");
    scanf("%s", name);
    printf("输入对应的密码:\t");
    scanf("%d", &password);
    int v = isExit(M,name,password);
    if (v != -1)
    {
        printf("验证成功:\n");
        while (1)
        {
            printf("选择你的操作:1--取款 --2--存款 --0--退出\n");
            int z;
            scanf("%d", &z);
            switch (z)
            {
            case 1:
            {
                int getmoney;
                printf("取钱的金额为:"); 
                scanf("%d", &getmoney);
                if (M->counter[v].SumMoney < getmoney)
                {
                    printf("非法操作,请减少取款量\n");
                }
                else
                {
                    M->TM[v].getMoney = getmoney;
                    M->counter[v].SumMoney -= M->TM[v].getMoney;
                    printf("取款成功!\n");
                }
                break;
            }
            case 2:
            {
                int setmoney;
                printf("存钱的金额为:"); 
                scanf("%d", &setmoney);
                //M->counter[v].F.setMoney = setmoney;
                M->TM[v].setMoney = setmoney;
                M->counter[v].SumMoney += M->TM[v].setMoney;
                break;
            }
            case 0:
            printf("\n退出存取款功能,欢迎下次使用!\n"); 
            system("pause"); 
            system("cls"); 
            return;
            }
        }
    }
    else 
    {
        printf("查无此人\n");
    }
    system("pause");
     system("cls");
}
void Show_Bank(Bank* M)
{
    char name[N]; 
    int password;
    printf("输入查询客户的姓名:\t");
    scanf("%s",name);
    printf("输入对应的密码:\t");
    scanf("%d", &password);
    int v = isExit(M,name,password);
    if (v != -1)
    {
        printf("客户编码为:\t");
        printf("%d\n", M->counter[v].No);
        printf("客户名字为:\t");
        printf("%s\n", M->counter[v].Name);
        printf("客户电话为:\t");
        printf("%s\n", M->counter[v].Phone);
        printf("客户地址为:\t");
        printf("%s\n", M->counter[v].Address);
        if (M->TM[v].getMoney <= 0 && M->TM[v].setMoney<=0)
        {
            printf("暂无存取款记录");
        }
        else if (M->TM[v].getMoney > 0)
        {
            printf("客户取走了 %d元\t", M->TM[v].getMoney);
        }
        else if(M->TM[v].setMoney > 0)
        {
            printf("客户存取了 %d元\t", M->TM[v].setMoney);
        }
        printf("\n账户总金额为:\t");
        printf("%d\n", M->counter[v].SumMoney);
    }
    else 
    {printf("查无此人");}
    system("pause"); 
    system("cls");
}
void Modify_Bank(Bank *M)
{
    int no = 0;
    printf("输入查询客户的编号:\t");
    scanf("%d", &no);
    int v = isExit2(M, no);
    if (v != -1)
    {
        printf("修改客户姓名为:");
        scanf("%s", M->counter[v].Name);
        printf("修改客户密码为:");
        scanf("%d", &M->counter[v].Password);
        printf("修改客户地址为:");
        scanf("%s", M->counter[v].Address);
        printf("修改客户电话为:");
        scanf("%s", M->counter[v].Phone);
        printf("修改完毕!\n");
    }
    else 
    {printf("查无此人");}
    system("pause");
    system("cls");
}
void showMenu();//菜单功能
void Init_Bank(Bank* M);//初始化客户
void Add_Bank(Bank* M);//添加客户
int isExit(Bank* M, char* name, int password);//账号密码判断是否有客户
int isExit2(Bank* M, int no);//编号判断是否有客户
void Trans_Bank(Bank* M);//存取款
void Show_Bank(Bank* M);//查询客户信息
void Modify_Bank(Bank* M);//修改客户信息
int main()
{
    Bank M;
    while (1) {
        showMenu();
        int select;
        printf("请选择你的操作:");
        scanf("%d", &select);
        switch (select)
        {
        case 1:
            Init_Bank(&M);
            break;
        case 2:
            Add_Bank(&M);
            break;
        case 3:
        {
            Show_Bank(&M);
        }
        break;
        case 4:
        {
            Trans_Bank(&M);
        }
        break;
        case 5:
        {
            Modify_Bank(&M);
            break;
        }
        break;
        case 0://退出
            printf("欢迎下次使用,祝您生活愉快\n"); 
            return 0;  
            break;
        default:
            printf("请合理输入操作数0~5:\n");
            break;
        }
    }
}


你创建一个c++的文件,把代码复制进去就不会报错了,
如果用c的文件的话struct定义里不能赋予初始值,还有很多需要改,不如直接创建一个c++的项目更方便

1、C的struct定义里不能赋予初始值,line:8,9,24
2、Bank不是类型,struct Bank才是,line:27,52等,检查声明为Bank的地方,修改为struct Bank
然后编译就通过了,你也可以通过别名定义Bank类型:

typedef struct
{
    struct ConutInfo counter[Max];
    struct trMoney TM [Max];
    int size;
} Bank;

建议你首先将执行文件的路径改成全英文路径,其次,中英文标点符号的输入自己先检查一遍

使用Visual Studio 2019以上版本创建项目就行了,你用的那个兼容太差了

Bank是结构体类型,需要struct Bank 变量名;这样声明才可以

用VS2019或者2022创建一个空项目,在源文件里创建一个C++文件。然后把源码复制过去,中间注意一些标点符号要是英文的。就没问题了。

你这c小白呀,结构体定义不对呀。。。struct Bank XXX