| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1657 人关注过本帖, 1 人收藏
标题:C语言密码问题
取消只看楼主 加入收藏
lsh106665347
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-1-6
结帖率:100%
收藏(1)
 问题点数:0 回复次数:8 
C语言密码问题
哪位高手发一段登录密码显示*的代码给我,谢谢!
搜索更多相关主题的帖子: 登录密码 密码 C语言 
2013-01-08 19:22
lsh106665347
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-1-6
收藏
得分:0 
回复 2楼 azzbcc
这段代码有BUG啊。当删除密码的时候如果密码为空再继续按退格键就会出现死循环了。另外我要想要的是如何在登录的时候输出*,不是单独的一段输出*的代码,是要怎么在登录输入密码的时候把密码弄成*。就是这段代码要放在什么位置或者怎么连接,在输入登录密码的时候才会正确的显示出*,谢谢!
2013-01-19 13:35
lsh106665347
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-1-6
收藏
得分:0 
回复 9楼 TonyDeng
程序代码:
struct StudentUser
{
    char UserName[15];
    char PassWord[15];
}User;
int main()
{
    printf("请输入账号:");
        gets(User.UserName);
        printf("请输入密码:");
        gets(User.PassWord);
        //            while ((ch = getch()) !='\r' && i < MAX)
        //        {
        //            if (ch == BACKSPACE)
        //            {
        //                if (i > 0)
        //                {
        //                    User.PassWord[--i] = '\0';
        //                    printf("\b ");
        //                    printf("%c%c%c", BACKSPACE, ' ', BACKSPACE);
        //                }
        //                else
        //                    putchar(7);
        //            }
        //            else
        //            {
        //                User.PassWord[i++] = ch;
        //                printf("*");
        //            }
        //        }
        //            User.PassWord[i] = '\0';
}
就是这样,要怎么在输入密码的时候显示*
2013-01-19 14:23
lsh106665347
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-1-6
收藏
得分:0 
#define MAX 14
#define BACKSPACE 8
少了 两个宏定义
2013-01-19 14:24
lsh106665347
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-1-6
收藏
得分:0 
好的,谢谢
2013-01-19 14:49
lsh106665347
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-1-6
收藏
得分:0 
回复 14楼 TonyDeng
程序代码:
#include "student.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>

#define MAX 14
#define BACKSPACE 8

struct StudentInfo//学生信息结构体
{
    char name[20];//姓名
    char num[10];//学号
    int Sore[3];//语文 数学 英语
        StudentInfo *next;
};
StudentInfo stu;
StudentUser User;
StudentInfo *head=NULL;
bool IsExist(char * name, char * pw)
{
    char pname[20];
    char mima[20];
    FILE * fp = fopen("user.txt", "r");
    if (NULL == fp)
        return 0;
    while (1)
    {
        if (2 != fscanf(fp, "%s%s", pname, mima))
            break;
        if ((strcmp(pname, name) == 0) && (strcmp(mima, pw) == 0))
        {
            fclose(fp);
            Menu();
            return 0;
        }
    }
    fclose(fp);
    return false;
}
void getpassword()
{
    char ch;
    int i=0;
                while ((ch = getch()) !='\r' && i < MAX)
            {
                if (ch == BACKSPACE)
                {
                    if (i > 0)
                    {
                        User.PassWord[--i] = '\0';
                        printf("\b ");
                        printf("%c%c%c", BACKSPACE, ' ', BACKSPACE);
                    }
                    else
                        putchar(7);
                }
                else
                {
                    User.PassWord[i++] = ch;
                    printf("*");
                }
            }
                    User.PassWord[i] = '\0';
}
int main()
{
    
    int count = 0;
    int i = 0;
    //    char ch;
    while (1)
    {
        system("cls");
        printf("请输入账号:");
        gets(User.UserName);
        printf("请输入密码:");
        getpassword();
        gets(User.PassWord);

        //            while ((ch = getch()) !='\r' && i < MAX)
        //        {
        //            if (ch == BACKSPACE)
        //            {
        //                if (i > 0)
        //                {
        //                    User.PassWord[--i] = '\0';
        //                    printf("\b ");
        //                    printf("%c%c%c", BACKSPACE, ' ', BACKSPACE);
        //                }
        //                else
        //                    putchar(7);
        //            }
        //            else
        //            {
        //                User.PassWord[i++] = ch;
        //                printf("*");
        //            }
        //        }
        //            User.PassWord[i] = '\0';
        //        fflush(stdout);
        //        fflush(stdin);
        //            puts(User.PassWord);
        //    fflush(stdout);
        if (IsExist(User.UserName, User.PassWord))
        {
            break;
        }
        if (count == 2)
        {
            printf("您已经输错三次,系统将自动退出!\n");
            break;
        }
        printf("帐号或者密码不正确,按回车键重新输入!");
        count++;
        getchar();
        
    }
    //    system("cls");
    //    printf("请输入账号:");
    //    gets(User.UserName);
    //    printf("请输入密码:");
    //    gets(User.PassWord);
    //    if (IsExist(User.UserName, User.PassWord))
    //    {
    //        printf("您已经输错三次,系统将自动退出!\n");
    //    }
    return 0;
}
//******************************************************************
void ex()
{
    char ch;
    getchar();
    do
    {
        printf("您确定要退出吗?(y/n):");
        scanf("%c", &ch);
    }
    while ((ch != 'Y') && (ch != 'y') && (ch != 'N') && (ch != 'n'));
    if (ch == 'Y' || ch == 'y')
    {
        exit(0);
    }
    return;
}
//**********************************************************************
int Menu()
{
    //    struct StudentInfo * parr;            
    //    int len = 0;
    int choose;
    //    parr = (struct StudentInfo *)malloc((sizeof(struct StudentInfo) * len));
    fflush(stdin);
    while (1)
    {
        system("cls");
        printf("*************************\n");
        printf("\t1:修改密码\n");
        printf("\t2:录入学生信息\n");
        printf("\t3:查找学生信息\n");
        printf("\t4:修改学生信息\n");
        printf("\t5:保存学生信息\n");
        printf("\t6:排序\n");
        printf("\t7:退出\n");
        printf("*************************\n");
        printf("请选择1--7 : ");
        scanf("%d", &choose);
        switch (choose)
        {
        case 1: exmima();break;
        case 2: insert();break;
        case 3: selecetlist();break;
        case 4: change();break;
        case 5: save();break;
        case 6: Sort(); break;
        case 7: ex();break;
        default: printf("你的选择不正确 请重新选择\n");
        }
        getchar();
        //        getchar();
    }
    
}
//********************************************************************
void selecet()
{
    //    char name[20];
    FILE * fp = fopen("test.txt", "r");
    if (!fp)
    {
        printf("文件打开失败!\n");
        return;
    }
    
    char ch;
    while ((ch = fgetc(fp)) != EOF)
    {
        fputc(ch, stdout);
    }
    putchar('\n');
    getchar();
    getch();
    fclose(fp);
    
}
//*********************************************************************
void Sort()
{
    int choose;
    fflush(stdin);
    while (1)
    {
        system("cls");
        printf("*************************\n");
        printf("\t1:按语文成绩排序\n");
        printf("\t2:按数序成绩排序\n");
        printf("\t3:按英语成绩排序\n");
//        printf("\t4:按总分成绩排序\n");
        printf("\t4:返回\n");
        printf("*************************\n");
        printf("请选择1--4 : ");
        scanf("%d", &choose);
        switch (choose)
        {
        case 1: SelectSort(0);break;
        case 2: SelectSort(1);break;
        case 3: SelectSort(2);break;
//        case 4: break;
        case 4: Menu();break;
        default: printf("你的选择不正确 请重新选择\n");

        }
    }
    system("pause");
}
//*****************************************************************
void insert()//输入数据
{
    int len;
    int i;//控制循环
    FILE * fp = fopen("test.txt", "a+");
        if (!fp)
        {
            printf("文件没有打开!程序结束!");
            getchar();//等待用户观察
            exit(0);
    }    
    printf("请输入需要存入的学生人数:");
    scanf("%d", &len);
    for (i = 0; i < len; i++)
    {
        printf("请输入学生信息:\n");
        
        printf("姓名:");
        scanf("%8s", stu.name);
        //getchar();
        //        printf("总成绩: ");
        //        scanf("%s",stu.Sore);
        getchar();
        printf("学号:");
        scanf("%5s", stu.num);
        getchar();
        printf("语文成绩: ");
        scanf("%3d", &stu.Sore[0]);
        getchar();
        
        printf("数学成绩: ");
        scanf("%3d", &stu.Sore[1]);
        getchar();
        
        printf("英语成绩: ");
        scanf("%3d", &stu.Sore[2]);
        
    
//        else
//        {
//            for (int j = 0; j < len; j++)//将数据依次写入文件
//            {
                fprintf(fp, "姓名:%8s  学号:%5s 语文成绩:%3d 数学成绩:%3d 英语成绩:%3d\n",
                    stu.name, stu.num, stu.Sore[0],stu.Sore[1], stu.Sore[2]);
//            }
//        }
        
    }
    fclose(fp);
    system("pause");
    printf("\n");
}
//************************************************************************
void save()
{
        int len;
    FILE * fp = fopen("test.txt", "a+");
    if (!fp)
    {
        printf("文件没有打开!程序结束!");
        getchar();//等待用户观察
        exit(0);
    }
    else
    {
        for (int j = 0; j < len; j++)//将数据依次写入文件
        {
            fprintf(fp, "姓名:%8s  学号:%5s 语文成绩:%3s 数学成绩:%3s 英语成绩:%3s\n",
                stu.name, stu.num, stu.Sore[0], stu.Sore[1], stu.Sore[2]);
        }
    }
    printf("学生数据已经保存!\n");
    //    语文成绩:%s 数学成绩:%s 英语成绩:%s
    //    stu.Sore[0],stu.Sore[1],stu.Sore[2]
    //    getch();
    fclose(fp);
    system("pause");
    
}
//********************************************************************
void exmima()
{
    
    char mima[20];
    printf("请输入新的密码:");
    scanf("%s", mima);
    FILE * fp = fopen("user.txt", "r+");
    char name1[20];
    char mima1[10];
    long index;
    while (1)
    {
        index = ftell(fp);
        if (2 != fscanf(fp, "%s%s", name1, mima1))
            break;
        if (strcmp(User.UserName, name1) == 0)
        {
            if (fseek(fp, index, 0))
                fprintf(fp, "%s\t%s", User.UserName, mima);
            
            else
                fprintf(fp, "\n%s\t%s", User.UserName, mima);
            printf("密码修改成功\n");
            break;
        }
    }
    system("pause");
    fclose(fp);
}
//****************************************************************
void selecetlist()
{
    int choose;
    while (1)
    {
        system("cls");
        printf("*************************\n");
        printf("\t1:按姓名查找\n");
        printf("\t2:按学号查找\n");
        printf("\t3:列出所有学生信息\n");
        printf("\t4:返回\n");
        printf("*************************\n");
        printf("请选择1--4 : ");
        scanf("%d", &choose);
        switch (choose)
        {
        case 1: selecetname();break;
        case 2: selecetnum();break;
        case 3: selecet();break;
        case 4: Menu();break;
        default: printf("你的选择不正确 请重新选择\n");
        }
    }
    system("pause");
}
//***************************************************************
void selecetname()
{
    int index;
    char name[20];
    printf("请输入要查找的学生姓名:");
    scanf("%s", name);
    FILE * fp = fopen("test.txt", "r");
    if (!fp)
    {
        printf("打开文件失败!");
        return;
    }
    while (1)
    {
        
        index = ftell(fp);
        if (5 != fscanf(fp, "姓名:%8s  学号:%5s 语文成绩:%3d 数学成绩:%3d 英语成绩:%3d\n",
            stu.name, stu.num, &stu.Sore[0], &stu.Sore[1], &stu.Sore[2]))
        {
            printf("没有这个学生的相关信息.\n");
            break;
        }
//                fseek(fp, index, 0);
        if (strcmp(stu.name, name) == 0)
        {
            //fseek(fp, index, 0);
            printf("姓名:%8s  学号:%5s 语文成绩:%3d 数学成绩:%3d 英语成绩:%3d\n",
                stu.name, stu.num, stu.Sore[0], stu.Sore[1], stu.Sore[2]);
            break;
        }
//        break;
    }
    
    system("pause");
}
//******************************************************************
void selecetnum()
{
    int index;
    char num[10];
    printf("请输入要查找的学生学号:");
    scanf("%s", num);
    FILE * fp = fopen("test.txt", "r");
    if (!fp)
    {
        printf("打开文件失败!");
        return;
    }
    while (1)
    {
        
        index = ftell(fp);
        if (5 != fscanf(fp, "姓名:%8s  学号:%5s 语文成绩:%3d 数学成绩:%3d 英语成绩:%3d\n",
            stu.name, stu.num, &stu.Sore[0], &stu.Sore[1], &stu.Sore[2]))
        {
            printf("没有这个学生的相关信息.\n");
            break;
        }
//                fseek(fp, index, 0);
        if (strcmp(stu.num, num) == 0)
        {
            //fseek(fp, index, 0);
            printf("姓名:%8s  学号:%5s 语文成绩:%3d 数学成绩:%3d 英语成绩:%3d\n",
                stu.name, stu.num, stu.Sore[0], stu.Sore[1], stu.Sore[2]);
            break;
        }
//        break;
    }
    
    system("pause");
}
//****************************************************************************
void change()
{
    char ch;
    char num[20];
    int index;
    FILE * fp = fopen("test.txt", "r+");
    if(!fp)
    {
        printf("无学生记录!\n");
        return;
    }
    printf("请输入您要修改的学生的学号:");
        scanf("%s", num);
    while (1)
    {
        index = ftell(fp);
        if (5 != fscanf(fp, "姓名:%8s  学号:%5s 语文成绩:%3d 数学成绩:%3d 英语成绩:%3d\n",
            stu.name, stu.num, &stu.Sore[0], &stu.Sore[1], &stu.Sore[2]))
        {
            printf("没有这个学生的相关信息.\n");
            break;
        
        }            
        if (strcmp(stu.num, num) == 0)
        {
            fseek(fp,index,0);
            printf("姓名:%8s  学号:%5s 语文成绩:%3d 数学成绩:%3d 英语成绩:%3d\n",
            stu.name, stu.num, stu.Sore[0], stu.Sore[1], stu.Sore[2]);
            printf("您确定要修改该学生信息(y/n)");
            scanf(" %c", &ch);
            if (ch == 'y'||ch=='Y')
            {
                printf("请输入姓名:");
                scanf("%s", stu.name);
                                
                printf("请输入学号:");
                scanf("%s", stu.num);

                printf("请输入语文成绩:");
                scanf("%d", &stu.Sore[0]);

                printf("请输入数学成绩:");
                scanf("%d", &stu.Sore[1]);

                printf("请输入英语成绩:");
                scanf("%d", &stu.Sore[2]);
                
                fprintf(fp,"姓名:%8s  学号:%5s 语文成绩:%3d 数学成绩:%3d 英语成绩:%3d\n",
            stu.name, stu.num, stu.Sore[0], stu.Sore[1], stu.Sore[2]);
                printf("修改成功!\n");
//                getch();
                break;
            }
//            else
//                printf("没有该学生记录,请核对!\n");
        }
    }
    fclose(fp);
    system("pause");
}
//*************************************************************
void SelectSort(int index)//按a排序
{
    StudentInfo stu1[20];
    StudentInfo stu2;
    int i, j;
    int temp;
//    int t;
    int count = 0;
    FILE * fp = fopen("test.txt", "r");
    if (!fp)
    {
        printf("打开文件失败!");
        return;
    }
    while (1)
    {
        if (5 != fscanf(fp, "姓名:%8s  学号:%5s 语文成绩:%3d 数学成绩:%3d 英语成绩:%3d\n",
            stu1[count].name, stu1[count].num, &stu1[count].Sore[0], &stu1[count].Sore[1], &stu1[count].Sore[2]))
            break;
        count++;
    }
    for (i = 1;i < count;i++)
    {
        j = i;
        temp = stu1[j].Sore[index];
        stu2=stu1[j];
        while (j >= 1 && temp > stu1[j - 1].Sore[index])
        {
            stu1[j].Sore[index]= stu1[j - 1].Sore[index];
            stu1[j]=stu1[j-1];
            j--;
        }
        stu1[j].Sore[index] = temp;
        stu1[j]=stu2;
    }
    for (i = 0;i < count;i++)
    {
        printf("姓名:%8s  学号:%5s 语文成绩:%3d 数学成绩:%3d 英语成绩:%3d\n",
            stu1[i].name, stu1[i].num, stu1[i].Sore[0], stu1[i].Sore[1], stu1[i].Sore[2]);
    }
    fclose(fp);
    
    

    system("pause");
}
//**************************************************************************
void SelectSort1(int index)//按a排序
{
    StudentInfo stu1[20];
    StudentInfo stu2;
    int i, j;
    int temp;
//    int t;
    int count = 0;
    FILE * fp = fopen("test.txt", "r");
    if (!fp)
    {
        printf("打开文件失败!");
        return;
    }
    while (1)
    {
        if (5 != fscanf(fp, "姓名:%8s  学号:%5s 语文成绩:%3d 数学成绩:%3d 英语成绩:%3d\n",
            stu1[count].name, stu1[count].num, &stu1[count].Sore[0], &stu1[count].Sore[1], &stu1[count].Sore[2]))
            break;
        count++;
    }
    for (i = 1;i < count;i++)
    {
        j = i;
        temp = stu1[j].Sore[index];
        stu2=stu1[j];
        while (j >= 1 && temp > stu1[j - 1].Sore[index])
        {
            stu1[j].Sore[index]= stu1[j - 1].Sore[index];
            stu1[j]=stu1[j-1];
            j--;
        }
        stu1[j].Sore[index] = temp;
        stu1[j]=stu2;
    }
    for (i = 0;i < count;i++)
    {
        printf("姓名:%8s  学号:%5s 语文成绩:%3d 数学成绩:%3d 英语成绩:%3d\n",
            stu1[i].name, stu1[i].num, stu1[i].Sore[0], stu1[i].Sore[1], stu1[i].Sore[2]);
    }
    fclose(fp);
    
    

    system("pause");
}
//*******************************************************************
void SelectSort2(int index)//按a排序
{
    StudentInfo stu1[20];
    StudentInfo stu2;
    int i, j;
    int temp;
//    int t;
    int count = 0;
    FILE * fp = fopen("test.txt", "r");
    if (!fp)
    {
        printf("打开文件失败!");
        return;
    }
    while (1)
    {
        if (5 != fscanf(fp, "姓名:%8s  学号:%5s 语文成绩:%3d 数学成绩:%3d 英语成绩:%3d\n",
            stu1[count].name, stu1[count].num, &stu1[count].Sore[0], &stu1[count].Sore[1], &stu1[count].Sore[2]))
            break;
        count++;
    }
    for (i = 1;i < count;i++)
    {
        j = i;
        temp = stu1[j].Sore[index];
        stu2=stu1[j];
        while (j >= 1 && temp > stu1[j - 1].Sore[index])
        {
            stu1[j].Sore[index]= stu1[j - 1].Sore[index];
            stu1[j]=stu1[j-1];
            j--;
        }
        stu1[j].Sore[index] = temp;
        stu1[j]=stu2;
    }
    for (i = 0;i < count;i++)
    {
        printf("姓名:%8s  学号:%5s 语文成绩:%3d 数学成绩:%3d 英语成绩:%3d\n",
            stu1[i].name, stu1[i].num, stu1[i].Sore[0], stu1[i].Sore[1], stu1[i].Sore[2]);
    }
    fclose(fp);
    
    

    system("pause");
}
我这段代码要怎么才能正确输入密码?我试了输入密码之后回车没反映, 要回车两次才有效果,但是密码就会报错了。
2013-01-22 21:38
lsh106665347
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-1-6
收藏
得分:0 
程序代码:
struct StudentUser
{
    char UserName[15];
    char PassWord[15];
};
bool IsExist(char *name,char *pw);//验证帐号跟密码
int Menu();//菜单选择函数
void Sort();//排序选择函数
void selecet();
void insert();
void exmima();
void selecetlist();
void selecetname();
void selecetnum();
void save();
void exstu();
void change();
void SelectSort(int index);
void SelectSort1(int index);
void SelectSort2(int index);
   这个是上面包含的头文件#include "student.h"
2013-01-22 21:39
lsh106665347
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-1-6
收藏
得分:0 
回复 18楼 TonyDeng
额,代码效果一样啊,要怎么和整个程序融合才是关键撒。。求指教!!!
2013-01-24 22:43
lsh106665347
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-1-6
收藏
得分:0 
回复 23楼 TonyDeng
你的那段代码加到这个程序中要怎么调用啊,我不会用啊。好人做到底咯,大侠!
2013-01-25 18:18
快速回复:C语言密码问题
数据加载中...
 
   



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

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