2 dcpfeiniao dcpfeiniao 于 2015.06.04 22:13 提问

为什么用户名正确,密码错误也能进入系统

#include
#include
#include
#include
#define TRUE 1
#define FLASE 0
FILE* fp;
struct BOOK

{ int id,usr[10],total,store,days[10];
char name[30],author[20],publish[40];
}books[100];

void page_title(char menu_item)
{ printf("\t\t\t
***********欢迎使用图书馆管理系统**********\n\n- %s -\n\n",menu_item); }

void zhuce(void)
{char temp1[10],temp2[10],temp3[10],yhmtmp[10],mm[10];
system("cls");
printf("输入用户名\n");
fflush(stdin);
gets(yhmtmp);
printf("输入密码\n");
fflush(stdin);
gets(temp1);
printf("输入密码确认\n");
fflush(stdin);
gets(temp2);
if(!strcmp(temp1,temp2))
{strcpy(mm,temp1);
printf("注册成功\n");
}
else
{printf("输入密码确认\n");
gets(temp3);
if(!strcmp(temp1,temp3))
{strcpy(mm,temp1);
printf("注册成功\n");
}
else
printf("注册失败\n");
}

}

void denglu(void)
{

char s1[10],s2[10],yhm[10],mm[10];
int count=0,flag=FLASE;
{
    fp=fopen("lg.flag","w+");
    fclose(fp);
}
do
{
    system("cls");
    printf("输入用户名\n");
    fflush(stdin);
    gets(s1);
    printf("输入密码\n");
    fflush(stdin);
    gets(s2);
    count++;
    if((strcmp(s1,yhm))&&(strcmp(s2,mm))==1)  flag=TRUE;

}
while (count<0 && flag==FLASE);
if (flag)
    printf("登录成功\n");
else
    printf("密码错误\n");

}

void return_confirm(void)
{ printf("\n按任意键返回……\n");
getch(); }

int search_book(void)
{ int n,i;
system("cls");
fp=fopen("lg.flag","r");
if(fp==NULL)
{
printf("请首先进行系统登陆\n");
system("pause");
return 0;
}
printf("请输入图书序号:");
scanf("%d",&i);
for(n=0;n<100;n++)
{ if(books[n].id==i)
{ printf("序号:%d\n",books[n].id);
printf("书名:%s\n",books[n].name);
printf("作者:%s\n",books[n].author);
printf("出版社:%s\n",books[n].publish);
printf("存数:%d\n",books[n].store);
printf("总数:%d\n",books[n].total);
return n; } }
printf("\n没有找到相关记录.\n");
return -1; }

int book_search(void)
{ int n,i=1;
char nam[30];
system("cls");
fp=fopen("lg.flag","r");
if(fp==NULL)
{
printf("请首先进行系统登陆\n");
system("pause");
return 0;
}
printf("请输入书名:");
scanf("%s",&nam);
printf("查询结果如下:\n");
for(n=0;n<100;n++)
{ if((strcmp(books[n].name,nam)==0))
{ printf("序号:%d\t",books[n].id);
printf("书名:%s\t",books[n].name);
printf("作者:%s\t",books[n].author);
printf("出版社:%s\t",books[n].publish);
printf("存数:%d\t",books[n].store);
printf("总数:%d\n",books[n].total);i=0;
} }
if(i==1)
printf("\n没有找到相关记录.\n");
return -1; }

int book_change(void)
{
int n,i;
system("cls");
fp=fopen("lg.flag","r");
if(fp==NULL)
{
printf("请首先进行系统登陆\n");
system("pause");
return 0;
}
page_title("修改图书信息");
printf("请输入要修改的图书序号:");

scanf("%d",&i);

for(n=0;n<100;n++)
{

if(books[n].id==i)

    { 
        printf("修改书名:");  
        scanf("%s",books[n].name); 
        printf("修改作者:");
        scanf("%s",books[n].author);
        printf("修改出版社名:");  
        scanf("%s",books[n].publish);
        printf("修改总数:");  
        scanf("%d",&books[n].total);
        printf("修改图书信息成功.\n");
        books[n].store=books[n].total;
        return n;
    }  
} 
printf("\n没有找到相关记录.\n");
return -1; 

}

int book_show(void)
{int n,i=1;
system("cls");
fp=fopen("lg.flag","r");
if(fp==NULL)
{
printf("请首先进行系统登陆\n");
system("pause");
return 0;
}
for(n=0;n<100;n++)
{
if(strlen(books[n].name)!=0)
{
printf("序号:%d\t",books[n].id);
printf("书名:%s\t",books[n].name);
printf("作者:%s\t",books[n].author);
printf("出版社:%s\t",books[n].publish);
printf("存数:%d\t",books[n].store);
printf("总数:%d\n",books[n].total);
i=0;
}
}if(i==1)
printf("\n没有找到相关记录.\n");
return -1;
}

void book_out(void)
{int n,s,l,d;
system("cls");
fp=fopen("lg.flag","r");
if(fp==NULL)
{
printf("请首先进行系统登陆\n");
system("pause");
return;
}
page_title("借阅图书");
if((n=search_book())!=-1&&books[n].store>0)
{printf("请输入借书证序号:");
scanf("%d",&s);
printf("请输入可借天数:");
scanf("%d",&d);
for(l=0;l<10;l++)
{if(books[n].usr[l]==0)
{ books[n].usr[l]=s;
books[n].days[l]=d;
break; } }
books[n].store--; }
if(n!=-1&&books[n].store==0) printf("此书已经全部借出.\n");
return_confirm(); }

void book_in(void)
{ int n,s,l;
system("cls");
fp=fopen("lg.flag","r");
if(fp==NULL)
{
printf("请首先进行系统登陆\n");
system("pause");
return;
}
page_title("归还图书");
if((n=search_book())!=-1&&books[n].store<books[n].total)
{printf("借阅者图书证列表:\n");
for(l=0;l<10;l++)
if (books[n].usr[l]!=0)
printf("[%d] - %d天\n",books[n].usr[l],books[n].days[l]);
printf("请输入借书证序号:");
scanf("%d",&s);
for(l=0;l<10;l++)
{if(books[n].usr[l]==s)
{ books[n].usr[l]=0;
books[n].days[l]=0; break; } }
books[n].store++; }
if(n!=-1&&books[n].store==books[n].total)
printf("全部入藏.\n");
return_confirm(); }

void book_add(void)
{ int n;
system("cls");
fp=fopen("lg.flag","r");
if(fp==NULL)
{
printf("请首先进行系统登陆\n");
system("pause");
return;
}
page_title("注册新书");
for(n=0;n<100;n++)
if(books[n].id==0) break;
printf("序号:");
scanf("%d",&books[n].id);
printf("书名:");
scanf("%s",&books[n].name);
printf("作者:");
scanf("%s",&books[n].author);
printf("出版社:");
scanf("%s",&books[n].publish);

printf("数量:");
scanf("%d",&books[n].total);
books[n].store=books[n].total;
return_confirm(); }

int book_del(void)
{
int n,num,i;
system("cls");
fp=fopen("lg.flag","r");
if(fp==NULL)
{
printf("请首先进行系统登陆\n");
system("pause");
return 0;
}
page_title("删除图书");
printf("请输入所要删除的书的编号:");
scanf("%d",&num);
for(n=0;n<100;n++)
{

if(books[n].id==num)
for(i=n;i<100;i++)

{ books[i].id=books[i+1].id;
strcpy(books[i].name,books[i+1].name);
strcpy(books[i].publish,books[i+1].publish);
printf("该书已删除.\n");
return n;
}
}
printf("没有找到相关记录\n");

return -1;
}

void main(void)
{
menu: page_title("操作选单");
printf(" ╔═════════════════╗\n");
printf(" ║---------请用数字选择操作---------║\n");
printf(" ║------------注册账号-----------1--║\n");
printf(" ║-------------登陆系统----------2--║\n");
printf(" ║-------------注册新书----------3--║\n");
printf(" ║-------------借阅图书----------4--║\n");
printf(" ║----------查询图书信息---------5--║\n");
printf(" ║---------修改图书信息----------6--║\n");
printf(" ║-------------归还图书----------7--║\n");
printf(" ║-------------删除图书----------8--║\n");
printf(" ║-------------显示图书----------9--║\n");
printf(" ║-------------退出系统----------0--║\n");
printf(" ║------------请按数字键:-----------║\n");
printf(" ╚═════════════════╝\n");
rewind(stdin);
switch(getch())
{
case '1' : zhuce(); break;
case '2' : denglu(); break;
case '3' : book_add(); break;
case '4' : book_out(); break;
case '5' : book_search(); break;
case '6' : book_change(); break;
case '7' : book_in(); break;
case '8' : book_del(); break;
case '9' : book_show(); break;
case '0' : exit(0);
}goto menu;
}

/*#include
#include
#include //定义杂项函数及内存分配函数 如malloc、free、system、atoi、atol、rand、exit等
#include
void dlxt();
void tcxt();
void main()
{
int h;
int d=0;
system("title 图书管理系统");//设置标题
system("mode con cols=32 lines=30");//设置窗口大小
system("color 0f");//设置颜色
system("cls");//清屏
while(h)
{
printf(" ╔═════════════╗\n");
printf(" ║------ 图书管理系统-------║\n");
printf(" ║--------------------------║\n");
printf(" ║---- 登陆界面 ------║\n");
printf(" ║--------------------------║\n");
printf(" ║-------- 登陆系统 -------1║\n");
printf(" ║-------- 退出系统 -------0║\n");
printf(" ╚═════════════╝\n");
printf(" 请选择功能键:");

scanf("%d",&h);
switch(h)
{
case 0:printf("\n exit\n");
h=0;
break;
case 1:
dlxt();
break;

    default :printf("  亲,你输入有误哦!\n");
    system("pause");
    break;
    }
    system("cls");
    }
    }  
    /*void dlxt()
    {
    char name[]="admin",pass[]="888";
    char pname[15]={0},ppass[15]={0};
    printf("请输入用户名:");
    scanf("%s",pname);
    printf("请输入密码:");
    scanf("%s",ppass);
    if ( strcmp(name,pname)!=0 || strcmp(pass,ppass)!=0)
    {
    printf("name or password wrong!\n");
    }
    else
    {
    printf("welcome!\n");

      }
      system("pause");
      }
      void tsgl()
      void dlxt()
      {
      int h;
      system("cls");//清屏
      while(h)
      {

        printf(" ╔═════════════╗\n");
        printf(" ║------ 图书管理系统-------║\n");
        printf(" ║--------------------------║\n");
        printf(" ║----     图书管理   ----1-║\n");
        printf(" ║---------读者管理-------2-║\n");
        printf(" ║------图书借阅管理 -----3-║\n");
        printf(" ║-------- 退出系统 ------0-║\n");
        printf(" ╚═════════════╝\n");
        printf("  请选择功能键:");    
        scanf("%d",&h);
        switch(h)
        {
        case 0:printf("\n exit\n");
        h=0;
        break;
        case 1:
        void tsgl()
        {
        int h;
        system("cls");//清屏
        while(h)
        {
        printf(" ╔═════════════╗\n");
        printf(" ║------ 图书管理系统-------║\n");
        printf(" ║--------------------------║\n");
        printf(" ║----     图书查询   ----1-║\n");
        printf(" ║---------新书入库-------2-║\n");
        printf(" ║------  退出系统   -----0-║\n");
        printf(" ╚═════════════╝\n");
        printf("  请选择功能键:");    
        scanf("%d",&h);
        switch(h)
        {
        case 0:printf("\n exit\n");
        h=0;
        break;
        /*  case 2:
        tscx();
        break;
        system("pause");
        break;
        }
        system("cls");
        }
        /*  case 0:printf("\n exit\n");
        h=0;
        break;
        tsgl();
        break;
        case 2:
        dzgl();
        break;
        case 3:
        tsjy();
        break;

          system("pause");
          break;
          default :printf("  亲,你输入有误哦!\n");
          system("pause");
          break;
          }
          system("cls");
          }
          }

*/

3个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.06.04 22:30
看你登录函数
 void denglu(void)
{
char s1[10],s2[10],yhm[10],mm[10];//yhm,mm都是没有初始化的,所以用户名和密码都不管事
int count=0,flag=FLASE;
{//你能进系统的判断依据就是下面这个lg.flag文件是否存在。还没判断用户名密码是否正确,就创建了登录标记文件,也就相当于登录了,后面对错已经无所谓了,创建应该放到打印 printf("登录成功\n");这个位置
    fp=fopen("lg.flag","w+");//另外,退出的时候需要清除这个文件,要不下次又是不用登录就能进系统了
    fclose(fp);
}
do
{
    system("cls");
    printf("输入用户名\n");
    fflush(stdin);
    gets(s1);
    printf("输入密码\n");
    fflush(stdin);
    gets(s2);
    count++;
    if((strcmp(s1,yhm))&&(strcmp(s2,mm))==1)  flag=TRUE;

}
while (count<0 && flag==FLASE);
if (flag)
    printf("登录成功\n");
else
    printf("密码错误\n");
}
danielinbiti
danielinbiti 回复dcpfeiniao: case '0' : exit(0);的时候也写一个函数,先用remove删除文件,再exit(0)
2 年多之前 回复
dcpfeiniao
dcpfeiniao 如何清除这个文件
2 年多之前 回复
a1193561652
a1193561652   Rxr 2015.06.04 23:09
 if ( strcmp(name,pname)!=0 || strcmp(pass,ppass)!=0)
{
    printf("name or password wrong!\n");
}

这部分输出了用户名或密码错误,还要goto()到前面输入账号的位置,让用户重新输入。

q3733353520
q3733353520   2015.06.06 11:31

对的,输入错误了你也要处理额

Csdn user default icon
上传中...
上传图片
插入图片