当前位置: 代码迷 >> C语言 >> 帮忙啦!
  详细解决方案

帮忙啦!

热度:224   发布时间:2008-04-20 16:19:43.0
帮忙啦!
利用数组实现一个用户登录程序,先要求输入用户名(3次有效),接着输入密码(3次有效,要求用*回显)登录成功则输出欢迎语,否则告知出错并退出系统。 能不能只用stdio 和 string 两个函数
搜索更多相关的解决方案: 用户名  系统  string  stdio  

----------------解决方案--------------------------------------------------------
#ifndef _GETPASSWD_H
#define _GETPASSWD_H

#include <stdio.h>
#include <conio.h>

char passwd[32] = "";

char *getPasswd()
{
    char c;
    int i = 0;
   
    while ((c=getch()) != '\r')
    {
         passwd[i++] = c;
        putchar('*');
    }
     passwd[i] = '\0';
   
    return passwd;
}

#endif
//*******************************上面是password.h*******************************************
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include"password.h"
#define PASS "123"
void main()
{
    int i,j=0,password=1;
    char name1[10],name2[6]="zhang";
    char *pw;
    printf("please input your name:");
    gets(name1);
    while(strcmp(name1,name2)!=0||j++)
    {
        printf("input again:");
        gets(name1);
        if(j>=3)
        {
            printf("超过次数!");
            exit(0);
        }
    }
    if (strcmp(name1,name2)!=0)
    printf("wrong!\n");

    else
    printf("hi,welcome!\n");
    j=0;    
    do{
        printf("input your password:");
        pw=getPasswd();
        fflush(stdin);
        if(j>=3)
        {
            printf("超过次数!");
            exit(0);
        }
    }while(strcmp(pw,PASS)!=0||j++);
    if (strcmp(pw,PASS)!=0)
    printf("\nwrong!\n");

    else
        printf("\nhello!\n");
}

[[it] 本帖最后由 sunkaidong 于 2008-4-20 16:25 编辑 [/it]]
----------------解决方案--------------------------------------------------------
昨天一个小丫头要的..不会是你吧?还是你同学?
----------------解决方案--------------------------------------------------------
回复 3# 的帖子
不是我 可能是我的同学吧
----------------解决方案--------------------------------------------------------
回复 2# 的帖子
怎么这么多啊  好多东西都没见过啊
----------------解决方案--------------------------------------------------------
你要回显而且还要限制次数..没办法哦...
----------------解决方案--------------------------------------------------------
回复 3# 的帖子
能不能把它改一改, 它现在不能直接用*号回显

#include<stdio.h>
#include<string.h>
void main()
{
    int k,i;
    char a[20],b[20],c[7]="adaf",d[6]="fafae",ch[20];
    for(i=1;i<=3;)
    {
        k=0;
        printf("请输入您的用户名:");
        gets(a);
        printf("请输入您的密码:");
        gets(b);
        strcpy(ch,b);
        do{
            b[k]='*';
            printf("%c",b[k]);
            k++;
        }while(ch[k]!='\0');
        if((strcmp(a,c)==0)&&(strcmp(ch,d)==0))
            break;
        else
            i++;
    }
    if(i<=3)
        printf("%s,hello!",c);
    else
        printf("对不起!您的输入有误,不能为您服务。");
}
----------------解决方案--------------------------------------------------------
你就用我的吧....把头文件去了..就可以了..可以放在一个.cpp文件里面编译的...
----------------解决方案--------------------------------------------------------
我的这个好用:
程序代码:

#include <stdio.h>
#include <string.h>

#define    RIGHT_ID        "abcde"    //正确的ID
#define    RIGHT_PASSWORD    "12345"    //正确的密码

int main()
{
    char input_ID[1000], input_password[1000];

    printf("欢迎语\n");

    for(int i = 0; i < 3; i++)//循环3次,表示3次机会
    {
        printf("请输入帐户:");
        scanf("%s", input_ID);
        printf("请输入密码:");
        scanf("%s", input_password);

        if(strcmp(input_ID, RIGHT_ID) != 0)
            continue;//ID错误,跳到下一个循环
        else if(strcmp(input_password, RIGHT_PASSWORD) != 0)
            continue;;//密码错误,跳到下一个循环
        else goto login_success;//输入正确!!
    }
err:
    printf("登陆失败!!!!");
    return 1;

login_success:
    printf("登陆成功!!!!");
    return 0;
}


[[it] 本帖最后由 flyue 于 2008-4-20 17:17 编辑 [/it]]
----------------解决方案--------------------------------------------------------
C语言很难实现*号的密码,用Visual C++的MFC就容易多了
你这个程序是测试的,又不是真正要用的,星号不星号都一样
----------------解决方案--------------------------------------------------------
  相关解决方案