| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 568 人关注过本帖
标题:麻烦大神帮我看一下哪里出问题了
只看楼主 加入收藏
z153114659
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-9-29
结帖率:0
收藏
 问题点数:0 回复次数:4 
麻烦大神帮我看一下哪里出问题了
#include<stdio.h>
#include<string.h>
void student();
void teacher();
void admin();
void login();
struct log_numpass
{
    char num[20];
    char password[20];
};
int main()
{
    system("reset");
    login();

}
//登录界面显示
void login()
{
    while(1)
    {int n;
    printf("\n\n\n\n\n");
    printf("\n\n\n\n\n");
    printf ("\t             _____________________\n ");
    printf ("\t            |                     |\n" );
    printf ("\t            |   1.学生登录        |\n" );
    printf ("\t            |   2.教师登录        |\n" );
    printf ("\t            |   3.管理员登录      |\n" );
    printf ("\t            |   4.退出登录        |\n" );
    printf ("\t            |_____________________|\n" );
    printf("\n\n\n\n\n");
    printf ("\t\t\t" );
    printf("请选择登录方式\n");
    scanf("%d",&n);
    switch(n)
    {
        case 1:
            student();
            break;
        case 2:
//            teacher();
            break;
        case 3:
//            admin();
            break;
        case 4:
            return;
        default:
            printf("请重新输入\n");
            login();}
    }
}
void student()
{
    int i;
    struct log_numpass s[100];
    struct log_numpass s1[100];
    printf("请输入帐号:\n");
    scanf("%s",s[0].num);        
    FILE *fp;
    fp=fopen("stu_password.txt","r");
    if (NULL == fp )
        printf("open error\n");
    for(i=0;i<5;i++)
    fscanf(fp,"%s %s",s1[i].num,s1[i].password);
    for(i=0;i<5;i++)
    {
        if(0==strcmp(s[0].num,s1[i].num))
                {
                printf("请输入密码:\n");
                scanf("%s",s[0].password);
                if (0==strcmp(s[0].password,s1[i].password))
                printf("登录成功\n");
                else
                printf("密码错误\n");
        printf("该用户不存在!\n");
                }
    }   
}
我输入5后会无限循环,无论输入123都会重新进入登录界面
搜索更多相关主题的帖子: password teacher include 学生登录 system 
2015-10-01 21:40
z153114659
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-9-29
收藏
得分:0 
这样账号密码输错他也不会提示
2015-10-01 22:09
醒山
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:9
帖 子:463
专家分:2071
注 册:2015-5-25
收藏
得分:0 
难道你的程序可以运行?
2015-10-02 12:15
任重道远
Rank: 1
等 级:新手上路
帖 子:57
专家分:7
注 册:2015-9-12
收藏
得分:0 
回复 楼主 z153114659
首先,你输入5,在switch语句中进入default重新调用login()函数,当然会无限循环;
第二,你输入1,进入student选项,如果你文件中没有stu_password.txt文件的话,则输出open error,不会执行下面的程序,返回到
      login()函数中case1执行break,注意break在这里只是跳出了switch语句,所以还要执行while(1)这个无限循环,你若想要终止程序
      需要在switch语句后面加个条件执行break语句。
同理,输入2、3也是这样,而且你程序中的case2和case3有错,你给注释掉了;

2015-10-02 16:53
邹阳
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:124
专家分:402
注 册:2015-10-8
收藏
得分:0 
//经过本人修正后的能够成功运行的但是问题仍未解决的问题编程:

#include<stdio.h>
#include<string.h>
void student();
void teacher();
void admin();
void login();
struct log_numpass
{
    char num[20];
    char password[20];
};
int main()
{
    system("reset");
    login();

}
//登录界面显示
void login()
{
    while(1)
    {int n;
    printf("\n\n\n\n\n");
    printf("\n\n\n\n\n");
    printf ("\t             _____________________\n ");
    printf ("\t            |                     |\n" );
    printf ("\t            |   1.学生登录        |\n" );
    printf ("\t            |   2.教师登录        |\n" );
    printf ("\t            |   3.管理员登录      |\n" );
    printf ("\t            |   4.退出登录        |\n" );
    printf ("\t            |_____________________|\n" );
    printf("\n\n\n\n\n");
    printf ("\t\t\t" );
    printf("请选择登录方式\n");
    scanf("%d",&n);
    switch(n)
    {
        case 1:
            student();
            break;
        case 2:
//            teacher();
            break;
        case 3:
//            admin();
            break;
        case 4:
            return;
        default:
            printf("请重新输入\n");
            login();}
    }
}
void student()
{
    int i;
    struct log_numpass s[100];
    struct log_numpass s1[100];
    printf("请输入帐号:\n");
    scanf("%s",s[0].num);        
    FILE *fp;
    fp=fopen("stu_password.txt","r");
    if (NULL == fp )
        printf("open error\n");
    for(i=0;i<5;i++)
    fscanf(fp,"%s %s",s1[i].num,s1[i].password);
    for(i=0;i<5;i++)
    {
        if(0==strcmp(s[0].num,s1[i].num))
                {
                printf("请输入密码:\n");
                scanf("%s",s[0].password);
                if (0==strcmp(s[0].password,s1[i].password))
                printf("登录成功\n");
                }
                else
                {
                printf("密码错误\n");
        printf("该用户不存在!\n");
                }
    }   
    }

I'm a new comer
2015-10-08 16:55
快速回复:麻烦大神帮我看一下哪里出问题了
数据加载中...
 
   



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

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