用c语言的一道编程题 要用到调用函数

编程实现简易ATM,用户输入用户名和密码,验证其正确性,如果正确提示“登录成功”并显示其账户余额,如果不正确,则提示“登录失败”。附加功能:允许用户三次输入机会,输入正确... 编程实现简易ATM,用户输入用户名和密码,验证其正确性,如果正确提示“登录成功”并显示其账户余额,如果不正确,则提示“登录失败”。

附加功能:允许用户三次输入机会,输入正确,处理方法如上,输入不正确,提示“用户名和密码不正确,请重新输入”,如果三次输入都失败则,提示“登录失败,账户锁定”结束程序。

提示:

char username[10][10]={"tonny","andy","alice","nancy","mike",

"kate","brandy","lucy","candy","molly"};

Char password[10][10]={"000000","111111","222222","333333",

"444444","555555","666666","777777","888888","999999"};

int rmb[10]={345,567,1789,2098,4567,17890,2345,12,0,10023};

username数组中存放了10个账户名,password数组中存放对应的10个人的密码,rmb数组中存放这10个账户的人民币余额。 
展开
 我来答
自我编程
2020-04-14 · 科技优质答主
自我编程
采纳数:1481 获赞数:4279

向TA提问 私信TA
展开全部

题目要求用数组分别保存所有用户名密码及余额(用结构更好)。并采用函数调用的方式。

我将程序需求分解3个函数:

一、登录模块,对应这个题目就是给数组初值。(你想手动输入注册,改这个函数)。

说明:二维数组名是指向数组的指针,我在这个代码中利用传递指针地址及静态变量实现调用函数给主函数变量赋值。如你无法理解,直接将3个数组定义为全局变量。

二、验证用户名密码单独一个函数。

三、登录模块调用验证函数,处理返回结果。

下面是代码:

#include <stdio.h>

#include <string.h>

#define MU 10//最大用户数量

#define MS 11//最大字符串长度-1

void init(char (**)[MS],char (**)[MS],int **);//初始化三个数组(想写注册用这个改)。参数12:用户名数组及密码数组指针的地址,参数3:余额数组指针的地址

int checkUInfo(char [MS],char [MS],char [][MS],char [][MS]);//验证用户名密码。参数12为输入的用户名密码,参数23为用户名及密码的数组。成功返回索引,否则返回-1

int login(char [][MS],char [][MS],int [MU]);//登录模块,成功返回1,失败返回0。参数123分别为用户名数组,密码数组,余额数组

int main()

{

    int *rmb=NULL;

    char (*username)[MS]=NULL,(*password)[MS]=NULL;

    init(&username,&password,&rmb);

    if(!login(username,password,rmb))printf("登录失败,用户锁定\n");

    return 0;

}

void init(char (**pUName)[MS],char (**pPwd)[MS],int **pRmb)

{

    static char username[MU][MS]={"tonny","andy","alice","nancy","mike","kate","brandy","luck","candy","molly"};

    static char password[MU][MS]={"000000","111111","222222","333333","444444","555555","666666","777777","888888","999999"};

    static int rmb[MU]={345,567,1789,2098,4567,17890,2345,12,0,10023};

    *pUName=username;

    *pPwd=password;

    *pRmb=rmb;

}

int login(char uName[][MS],char pwd[][MS],int rmb[MU])

{

    char uInput [MS],pInput [MS];

    int cnt=0,index;

    while(cnt<3)

    {

        printf("请输入用户名:"),scanf("%s",uInput);

        printf("请输入密  码:"),scanf("%s",pInput);

        //--需要输入验证在这里自行添加

        index=checkUInfo(uInput,pInput,uName,pwd);

        if(index!=-1)

        {

printf("登陆成功!账户余额为:%d\n",rmb[index]);

            return 1;

        }

        else

        {

            printf("用户名和密码不正确,请重新输入!\n");

            cnt++;

        }

    }

    return 0;

}

int checkUInfo(char uInput [MS],char pInput [MS],char uName[][MS],char pwd[][MS])

{

    int i,flag=-1;

    for(i=0;i<MU;i++)

        if(strcmp(uInput,uName[i])==0 && strcmp(pInput,pwd[i])==0)

        {

            flag=i;

            break;

        }

    return flag;

}

ta...7@163.com
2020-04-13
知道答主
回答量:59
采纳率:0%
帮助的人:3万
展开全部
TM,用户输入用户名和密
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式