AI程小橙 2015-07-09 11:41 采纳率: 71.4%
浏览 1635

在写一个简单的聊天项目的登录界面和帐号注册。现在写了点,运行的时候注册完用注册过的帐号登录不成功

在写一个简单的聊天项目的登录界面和帐号注册。现在写了点,运行的时候注册完用注册过的的帐号登录不上。写了个遍历函数,打印出来的是乱码的。请各位指点。
==============================================主函数main.c
#include"ui.h"
int main()
{
RegisteredNODE *Headnode;
Registered registeredinfo;
system("clear");
Headnode=malloc(sizeof(RegisteredNODE));
//Headnode.next=NULL;
//Read(Headnode);

while(1)
{

    int ret = Fristui();

    switch(ret)
    {
        case 1:
             Loginui();//登录
             break;
        case 2:
             Register();//注册
             break;
        case 3:

             coverlink();//遍历
             break;
        case 0:                 
             exit(0);
             break;
        default:
             printf("\033[33;32m您的输入有误,请您重新输入:\033[0m");
             break;
    }

}

}

(ui.c)
#include "ui.h"

int Fristui()
{
system("clear");
int ichoice;

printf("\t\t\t\033[33;32m1.登录\033[0m\n\n");
printf("\t\t\t\033[33;32m2.注册\033[0m\n\n");

// printf("\t\t\t\033[33;32m3.遍历\033[0m\n\n");
printf("\t\t\t\033[33;32m0.退出\033[0m\n\n");
printf("\t\t\t\033[33;32m请输入您的选择:\033[0m\n\n");
printf("\t\t\t");
scanf("%d",&ichoice);
return ichoice;
}

int Loginui(RegisteredNODE *Headnode,Registered registeredinfo)
{
//Read_Personaldata();//把所有的已注册的用户信息读取到链表中

//Read(Headnode);
system("clear");
printf("\t\t\033[33;32m*************欢迎注册HGC聊天帐号***********\033[0m\n\n");
int choice;
int i=3;
char NickName_Input[max]={'\0'};//定义要输入的昵称
char PassWord_Input[max]={'\0'};//定义要输入的密码
char Vercode_Input[max]={'\0'};//定义要输入的验证码
char str[5];//定义生成的验证码
do
{   system("clear");
    printf("\t\t\t\033[33;32m昵称:\033[0m");
    scanf("%s",NickName_Input);
    printf("\n");

    printf("\t\t\t\033[33;32m密码:\033[0m");
    scanf("%s",PassWord_Input);
    printf("\n");

    Verification_code(str);       //生成验证码
    printf("\n");
    printf("\t\t\t\033[33;32m请输入您的验证码:\033[0m");
    scanf("%s",Vercode_Input);
    printf("\n");



    if(strcmp(NickName_Input,registeredinfo.NickName_Rge) == 0 && strcmp(PassWord_Input,registeredinfo.PassWord_Rge) == 0 && strcmp(str,Vercode_Input) == 0)
        //当昵称、密码、验证码都验证通过时进入聊天功能界面
{
        printf("\t\t\t\033[33;32m验证通过!欢迎进入HGC聊天功能界面!\033[0m\n");
    sleep(1);
        return 1;
            //这里要调用聊天功能界面
    } 
    else 
    {
        i--;
        system("clear");
        if(strcmp(NickName_Input,registeredinfo.NickName_Rge) == 0 && strcmp(PassWord_Input,registeredinfo.PassWord_Rge) != 0 )
        //用户昵称正确,而密码错误。打印验证失败,提示密码错误,请重新登录。同时i-1
        {
        printf("\t\t\t\033[33;31m验证失败!\033[0m\n");

            printf("\t\t\t\033[33;32m用户密码错误,请您重新输入!\033[0m\n");
            printf("\t\t\t\033[33;34m您还有 %d次 机会重新输入!\033[0m\n",i);  
        sleep(1);



        } 

    else if(strcmp(NickName_Input,registeredinfo.NickName_Rge) != 0 && strcmp(PassWord_Input,registeredinfo.PassWord_Rge) == 0)
        //用户密码正确,而昵称错误。打印验证失败,提示昵称错误,请重新登录。同时i-1
        {
    printf("\t\t\t\033[33;31m验证失败!\033[0m\n");

            printf("\t\t\t\033[33;32m用户密码错误,请您重新输入!\033[0m\n");
            printf("\t\t\t\033[33;34m您还有 %d次 机会重新输入!\033[0m\n",i);  
        sleep(1);


        } 

        else if(strcmp(NickName_Input,registeredinfo.NickName_Rge) == 0 && strcmp(PassWord_Input,registeredinfo.PassWord_Rge) == 0 && strcmp(str,Vercode_Input) != 0) 
        //用户密码、昵称正确,而验证码错误。打印验证失败,提示验证码错误,请重新登录。
        {
            printf("\t\t\t\033[33;31m验证失败!\033[0m\n");

            printf("\t\t\t\033[33;32m验证码错误,请您重新输入!\033[0m\n");

    sleep(1);

        }
        //用户昵称和密码都错误,打印验证失败。提示可能您没有该系统的帐号,请注册。1是注册,2否,退出重新登录。  
        else if(strcmp(NickName_Input,registeredinfo.NickName_Rge) != 0 && strcmp(PassWord_Input,registeredinfo.PassWord_Rge) != 0)

        {
            int choice;
            printf("\t\t\t\033[33;31m验证失败,昵称和密码均输入错误!\033[0m\n\n");
            printf("\t\t\t\033[33;32m可能您没有该系统的帐号,您愿意注册一个吗?(0:不注册,1:注册\033[0m\n\t"); 
            scanf("%d",&choice);
            switch(choice)
            {
                case 0:
                     // Loginui();
                      exit(0);
                case 1:
                      Register();//调用注册函数 
                      break;
                default:
                      printf("\t\t\t\033[33;32m您的输入有误,请您重新输入:\033[0m");
                      printf("\t\t\t\033[33;32m请按任意键继续......\033[0m\n");
                      printf("\t");
                      while(getchar()!='\n');
                      getchar();
                      break;
           }
       }
   }   

}while(i>0);

Clock();

}

  • 写回答

4条回答 默认 最新

  • AI程小橙 2015-07-09 11:43
    关注

    下面的是问题里代码的后续,请各位帮忙纠错。

    RegisteredNODE Register()
    {
    RegisteredNODE *Headnode;
    Registered registeredinfo;
    system("clear");
    printf("\t\t\033[33;32m
    ************欢迎注册HGC聊天帐号***********\033[0m\n\n");
    printf("\t\t\t\033[33;32m 请您输入昵称:\033[0m");
    scanf("%s",registeredinfo.NickName_Rge);
    printf("\n\n");
    printf("\t\t\t\033[33;32m 请您输入密码:\033[0m");
    scanf("%s",registeredinfo.PassWord_Rge);
    printf("\n\n");
    printf("\t\t\t\033[33;32m 请您输入手机号码:\033[0m");
    scanf("%s",registeredinfo.PhoneName_Rge);
    printf("\n\n");
    int ichoice;
    printf("\t\t\033[33;32m亲,您确定真的要注册吗(温馨提示:一旦注册请不要随意抛弃我们哦!)?(0:不注册,1:注册)\033[0m\n\t");

    scanf("%d",&ichoice);
    switch(ichoice)
    {
    case 0:
    exit(0);

          case 1: 
                Addnode();
                coverlink();
                break;
    
          default:
                 printf("\033[33;32m 您的输入有误,请您重新输入:\033[0m");
                 printf("\t\033[33;32m 请按任意键继续......\033[0m\n");
                 printf("\t");
    
                 getchar();
                 break;
        }
    

    }

    RegisteredNODE *Addnode()
    {
    RegisteredNODE *Headnode;
    Registered registeredinfo;
    RegisteredNODE *p = &head;
    RegisteredNODE *q = malloc(sizeof(RegisteredNODE));

    int ichoice;
    printf("\t\t\033[33;32m 亲,您真的需要注册吗(温馨提示:一旦注册成功请不要随意抛弃我们哦*-*)(0:不添加,1:添加)\033[0m\n\t");  
    scanf("%d",&ichoice);
       switch(ichoice)
       {
          case 0:
                exit(0);
    
          case 1: 
                 q->registeredinfo=registeredinfo;
                 q->next=NULL;
                 q->next=p->next;
                 p->next=q;
    
                 break;
    
          default:
                 printf("\033[33;32m 您的输入有误,请您重新输入:\033[0m");
                 printf("\t\033[33;32m 请按任意键继续......\033[0m\n");
                 printf("\t");
    
                 getchar();
                 break;
          }
    
    
    return 0;
    

    }

    int coverlink()
    {
    system("clear");
    printf("\t\t\033[33;32m*************欢迎注册HGC聊天帐号***********\033[0m\n\n");
    RegisteredNODE *p = head.next;
    while(p != NULL)
    {
    printf("\t\t\t\033[33;32m 昵称 密码 电话号码\033[0m\n\n" );
    printf("\t\t\t\033[33;32m %-13s %-20s %-15s\033[0m\n",p->registeredinfo.NickName_Rge,
    p->registeredinfo.PassWord_Rge,
    p->registeredinfo.PhoneName_Rge);

         printf("\n");
         p = p->next;
     }
     printf("\t\033[33;32m 请按任意键继续......\033[0m\n");
     printf("\t");
    
     getchar();
     sleep(1);
     return 0;
    

    }

    /*int Clientui()
    {
    int choice;
    printf("\t\t\t\033[33;32m恭喜您登录HGC聊天系统成功!\033[0m\n");
    printf("\t\t\t\033[33;32m1.单人聊天\033[0m\n");
    printf("\t\t\t\033[33;32m2.查看聊天记录\033[0m\n");
    printf("\t\t\t\033[33;32m3.添加好友\033[0m\n");
    printf("\t\t\t\033[33;32m4.查看好友\033[0m\n");
    scanf("%d",&choice);
    return choice;
    }
    */

    (ui.h)
    #define max 64
    #include
    #include
    #include
    //定义注册帐号结构体
    typedef struct _Registered
    {
    char NickName_Rge[max];//定义要注册的昵称
    char PassWord_Rge[max];//定义要注册的密码
    char PhoneName_Rge[max];//定义要注册的手机号码

    }Registered;

    typedef struct _RegisteredNODE
    {
    struct _Registered registeredinfo;
    struct _RegisteredNODE *next;
    }RegisteredNODE;

    RegisteredNODE head;

    int Fristui();
    int coverlink();
    int Loginui();
    void Clock();
    int Clientui();
    RegisteredNODE *Register();

    RegisteredNODE *Addnode();

    验证码(vercode.c)
    #include "ui.h"

    //传值
    char Verification_code( char str[5]) //char str[5]; 获取五位的随机串
    {
    srand((int)time(NULL));//获得随机种子.(随时间生成不同的种子)
    int n;//用来随机判断随机串的某一位是数字还是字母
    int n1;//用来进一步判断究竟是生成大写字母还是小写字母.
    char c;//用来获取随机字符
    int num=0;
    int i;
    for(i=0;i<5;i++)
    {
    n=(rand()%10+1);
    //人工设定字符串是字母或者数字的比例为7:3
    if(n<=3)
    {
    c=(rand()%10+'0');
    str[i]=c;
    }

            else
            {
                //进一步判断生成的随机字符是大写还是小写,比例为1:1
                n1=rand()%2+1;
                if(n1==1)
                {
                    c=(rand()%26+'a');
                    str[i]=c;
                }
    
                else
                {
                    c=(rand()%26+'A');
                    str[i]=c;
                }
            }
        }
    
    printf("\t\t\t\033[33;34m验证码是:\033[0m");     //一组验证码
    
    for(i=0;i<5;i++)
    {
        printf("%c",str[i]);
    }
    printf("\n");
    num++;
    

    }

    //时间计时器,三次输错后计时
    void Clock()
    {
    int hour = 0;
    int min = 10;
    int sec = 0;

    while(1)
    {
        //1.走秒
        sleep(1);
        --sec;
        if(sec <0)
        {
            sec = 59;
            --min;
        }
    
        if(min <0)
        {
            min = 59;
            --hour;
        }
    
        if(hour<0)
        break;
    
    
        //2.显示时间  23:03:05
        system("clear");
        printf("\n\n\t你再重新输入的时间还有:\n");
        printf("\n");
        printf("\t\t%02d:%02d:%02d\n",hour,min,sec); 
    
    }
    

    }

    评论

报告相同问题?

悬赏问题

  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败