标题:帮忙啦!
只看楼主
远去的风
Rank: 1
来 自:石家庄
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-3-1
 问题点数:0 回复次数:15 
帮忙啦!
利用数组实现一个用户登录程序,先要求输入用户名(3次有效),接着输入密码(3次有效,要求用*回显)登录成功则输出欢迎语,否则告知出错并退出系统。 能不能只用stdio 和 string 两个函数
搜索更多相关主题的帖子: 用户名 系统 string stdio 
2008-04-20 16:19
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
#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]]

学习需要安静。。海盗要重新来过。。
2008-04-20 16:23
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
昨天一个小丫头要的..不会是你吧?还是你同学?

学习需要安静。。海盗要重新来过。。
2008-04-20 16:23
远去的风
Rank: 1
来 自:石家庄
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-3-1
得分:0 
回复 3# 的帖子
不是我 可能是我的同学吧
2008-04-20 16:28
远去的风
Rank: 1
来 自:石家庄
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-3-1
得分:0 
回复 2# 的帖子
怎么这么多啊  好多东西都没见过啊
2008-04-20 16:29
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
你要回显而且还要限制次数..没办法哦...

学习需要安静。。海盗要重新来过。。
2008-04-20 16:31
远去的风
Rank: 1
来 自:石家庄
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-3-1
得分:0 
回复 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("对不起!您的输入有误,不能为您服务。");
}
2008-04-20 16:57
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
你就用我的吧....把头文件去了..就可以了..可以放在一个.cpp文件里面编译的...

学习需要安静。。海盗要重新来过。。
2008-04-20 17:01
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
得分:0 
我的这个好用:
程序代码:
#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]]

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-04-20 17:15
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
得分:0 
C语言很难实现*号的密码,用Visual C++的MFC就容易多了
你这个程序是测试的,又不是真正要用的,星号不星号都一样

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-04-20 17:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-210072-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.267959 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved