2201_76048640 2022-12-26 19:19 采纳率: 100%
浏览 124
已结题

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

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

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

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
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 <Max; 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 <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 = 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%

不知道怎么回事,求解

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

8条回答 默认 最新

  • 语言-逆行者 2022-12-26 19:55
    关注
    
    #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;
            }
        }
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 1月4日
  • 已采纳回答 12月27日
  • 赞助了问题酬金15元 12月26日
  • 创建了问题 12月26日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。