| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 392 人关注过本帖
标题:前辈们帮忙看一看,谢谢
只看楼主 加入收藏
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
前辈们帮忙看一看,谢谢
下面是我写的一段代码,有点乱,有点粗糙。。请不要介意。
前辈们帮我看一下,为什么每一次调用vipcheck()这一个函数时就会发生错误?还有帮我找一找代码中需要改进,没有作用的东西,谢谢。




/***********************************************************
图书馆管理系统:
功能:1.增加新书信息。
      2.删除旧书信息。   
      3.查询书本信息。   
      4.借书(非注册用户不能借书).
      5.还书
      6.注册
**********************************************************/
#include"stdio.h"
#include"string.h"

/***************************************************
函数的声明:按顺序分别是以下函数:
1.输入新书函数
2.查询书本函数
3.删除书本函数
4.注册函数
5.借书函数
6.还书函数
7.主菜单函数
8.按姓名查询函数
9.按作者查询函数
10.按序号查询函数
11.会员验证函数
**************************************************/
void putin(void);
void checkbook(void);
void del(void);
void reg(void);
void bor(void);
void huan(void);
void menu(void);
void checkname(void);
void checkauthor(void);
void checknum();
int  vipcheck(char id[],char code[]);

/***************************************************
书本结构类型与会员结构类型定义
**************************************************/
struct book
    {
        char bkname[20];
        int num;
        float price;
        char author[10];
        char state;
        char borrower[10];
        char sex;
        int  stunum;
    };

     struct book         pers[10]={{"the c primer plus",1,60.0,"prata",'n',"liu",'m',1}
                                  ,{"the c programming",2,75.5,"stephen",'y',"none",'m',0}};

     struct vipinformation
{
    char vipname[20];
    char vipcode[20];
    char vipsex;
    int  vipnum;
}vips[10];
     struct vipinformation vips[10]={{"liu","123",'m',5}};



/*******************************************
借书函数:
*******************************************/
 void bor()
    {    char id[10];
        char code[10];
        int i,vip;
        char want[20];
        char state='y';
        char choice;
        int vipcheck(char id[],char code[]);
        printf("想要借书请先登录\n");
        printf("请输入你的用户名和密码:\n");
        printf("用户名:");
        scanf("%s",id);
        getchar();
        printf("密码:");
        scanf("%s,code");
        getchar();
        vip=vipcheck(id,code);
        if(vip==1)
        {
        printf("登录成功\n");
        printf("请输入想借的书的书名:");
        gets(want);
        for(i=0;i<=10;i++)
            {
                if(!strcmp(want,pers[i].bkname))
                    {
                        if(state==pers[i].state)
                            {
                                printf("此书可借\n");
                                pers[i].state='n';
                                break;
                            }
                        else
                            printf("此书已经外借\n");
                        break;
                    }        
                if(i>=10)
                    printf("图书馆里面没有这一本书\n");
            }
        printf("你想借其它书吗?请输入y or n:");
        
select:
        scanf("%c",&choice);
        getchar();
        switch(choice)
        {
            case 'y':bor();break;
            case 'n':menu(); break;
            default : printf("操作错误,请重新输入\n");goto select;break;
        }
        }
}

/******************************************************
 按作者查函数
 ***********************************/
void checkauthor()
{
    int i;
    char writer[20];
    char choice;
    printf("请输入你想查询的作者\n");
    gets(writer);
    for(i=0;i<=10;i++)
        {
            if(!strcmp(writer,pers[i].author))
                {
                printf("*******************书本已经找到****************************\n\n");
                printf(" 书名     序号      单价      作者     状态     借书人    性别     学号  \n\n");
                printf("%s   %d  %.2f  %s   %c     %s     %c     %d    \n\n",
                pers[i].bkname,pers[i].num,pers[i].price,pers[i].author,pers[i].state,pers[i].borrower,pers[i].sex,pers[i].stunum);
                break;
                }
            if(i>=10)
                printf("图书馆里面没有这一本书。\n");
        }
    printf("你还想要查询其他书吗?\n\n");
   
select:
    scanf("%c",&choice);
    getchar();
    switch(choice)
        {
        case 'y':system("cls");checkauthor();break;
        case 'n':system("cls");menu();break;
        default:printf("操作错误,请重新操作\n");goto select;break;
        }
}


/****************************************************
查询书本信息函数
******************************************************/
void check()
    {   
        char oper;
        printf("请选择你想查询的方式:\n");
        printf("按书名查询,请按1.\n");
        printf("按序号查询,请按2.\n");
        printf("按作者查询,请按3.\n");
        printf("返回主菜单,请按0.\n");
        printf("操作:");
        
select:  
        scanf("%c",&oper);
        getchar();
        switch(oper)
        {
            case '1':checkname();break;
            case '2':checknum();break;
            case '3':checkauthor();break;
            case '0':menu();break;
            default: printf("\n操作错误,请重新选择。");goto select;break;
        }
    }


 /****************************************************
按书名查询函数
  ***************************************************/
void checkname()
{

        int i;
        char check[20];
        char choice;
        printf("请输入书名:");
        gets(check);
        for(i=0;i<=10;i++)
            {
                if(!strcmp(check,pers[i].bkname))
                     {
                        printf("             *****书本已经找到******\n\n");
                        printf(" 书名          序号      单价     作者    状态    借书人  性别   学号  \n\n");
                        printf("%s       %d    %.2f     %s     %c     %s     %c     %d    \n\n",
                        pers[i].bkname,pers[i].num,pers[i].price,pers[i].author,pers[i].state,pers[i].borrower,pers[i].sex,pers[i].stunum);
                        break;
                    }
                if(i>=10)
                    printf("图书馆里面没有这一本书\n\n\n\n");
            }
        printf("你还想查询其他书吗?\n");

 select:
        scanf("%c",&choice);
        getchar();
        switch(choice)
            {
            case 'y':system("cls");checkname();break;
            case 'n':system("cls");menu();break;
            default : printf("操作错误,请重新操作,谢谢\n");goto select; break;
            }
}


/****************************
按序号查函数
  ***************************/
 void checknum()
{
    int i;
    int num;
    char choice;
    printf("请输入你想查询的序号:");
    scanf("%d",&num);
    getchar();
    for(i=0;i<=10;i++)
        {
            if(num==pers[i].num)
                {
                printf("             *****书本已经找到******\n\n");
                printf(" 书名  序号  单价  作者  状态  借书人  性别   学号  \n\n");
                printf("%s   %d  %.2f  %s   %c     %s     %c     %d    \n\n",
                pers[i].bkname,pers[i].num,pers[i].price,pers[i].author,pers[i].state,pers[i].borrower,pers[i].sex,pers[i].stunum);
                break;
                }
            if(i>=10)
                printf("\n\n\n\n********图书馆里面没有这一本书*********n\n\n\n");
        }
    printf("你还想要查询其他书吗?\n\n\n");
   
select:
    scanf("%c",&choice);
    getchar();
    switch(choice)
        {
        case'y':system("cls");checknum();break;
        case'n':system("cls");menu();break;
        default:printf("操作错误,请重新操作,谢谢\n");goto select;break;
        }
}

/************************************
删除书本信息函数
***********************************/
 void del()
{
    char choice;
    int i,m;
    char delbook[20];
    int ifdel=0;
    printf("请输入想要删除的书名:");
    gets(delbook);
    for(i=0;i<=10;i++)
        {
            if(ifdel==(strcmp(delbook,pers[i].bkname)))
                {
                    for(m=i;m<=10;m++)
                        {   
                            strcpy(pers[i+1].bkname,pers[i].bkname);
                            pers[i+1].num=pers[i].num;
                            strcpy(pers[i+1].author,pers[i].author);
                            pers[i+1].state=pers[i].state;
                            strcpy(pers[i+1].borrower,pers[i].borrower);
                            pers[i+1].sex=pers[i].sex;
                            pers[i+1].stunum=pers[i].stunum;
                        
                        }
                    printf("\n\n******%s已经删除*******\n\n",delbook);
                    break;

                }
            if(i>=10)
                printf("*******这本书已经注销了或图书馆里面没有这一本书.*******\n\n");
        }
    printf("\n\n*****你还想要删除其它书吗?<y/n>*********\n\n");
select:
    scanf("%c",&choice);
    getchar();
    switch(choice)
    {
        case 'y':system("cls");del();break;
        case 'n':system("cls");menu();break;
        default:printf("\n操作错误,请重新操作,谢谢.\n");getch();system("cls");goto select;break;
    }
}


/********************************
还书函数
*******************************/
  void huan()
{   

    char choice;
    int vipcheck(char id[],char code[]);
    char id[10];
    char code[10];
    char whuan[10];
    int i ;
    int jud;
    char borer[10]="none";
    printf("还书请先登录,谢谢.\n");
    printf("请输入你的ID:");
    scanf("%s",id);
    printf("请输入你的密码:");
    scanf("%s",code);
    jud=vipcheck(id,code);
    if(jud==1);
    {
    printf("登录成功。\n\n");
    printf("请输入你想要还的书名:");
    scanf("%s",huan);
    for(i=0;i<=10;i++)
        {
            if(!strcmp(whuan,pers[i].bkname))
                {
                    pers[i].state='y';
                    strcpy(pers[i].borrower,borer);
                    pers[i].sex='n';
                    pers[i].stunum=0;
                    printf("你已经成功还书了,谢谢\n\n");
                    break;
                }
        }
    }
    if(jud!=1) printf("登录不成功。\n\n");
    printf("你还想还其他书吗?请输入y or n\n");
select:
    scanf("%c",&choice);
    getchar();
    switch(choice)
        {
        case 'y':system("cls"); huan();break;
        case 'n':system("cls");menu();break;
        default:printf("操作错误,请重新输入,谢谢.\n");goto select;break;
        }
    }


/*********************
主菜单函数
*********************/
  void menu()
{
    char  oper;
menu:
    printf("        *************************************************\n");
    printf("        *************************************************\n");
    printf("        *************************************************\n");
    printf("        **          欢迎使用图书馆管理系统             **\n");
    printf("        **       请根据您的需求按指示操作,谢谢         **\n");
    printf("        **1.如需输入新进图书的信息:      请按1,谢谢   **\n");
    printf("        **2.如需查询图书的基本信息:      请按2, 谢谢   **\n");
    printf("        **3.如需对撤消图书的信息删除:    请按3,谢谢   **\n");
    printf("        **4.如需办理注册手续:            请按4,谢谢   **\n");
    printf("        **5.如需办理借书手续:            请按5, 谢谢   **\n");
    printf("        **6.如需办理还书手续:            请按6, 谢谢   **\n");
    printf("        **0.如需退出系统:                请按0, 谢谢   **\n");
    printf("        *************************************************\n");
    printf("        *************************************************\n");
    printf("        *************************************************\n\n\n");
    printf("        **请按数字提示操作,谢谢:                     ");

    scanf("%c",&oper);
    getchar();
    switch(oper)
    {
        case '1': putin();break;
        case '2': check();break;
        case '3': del();break;
        case '4': reg();break;
        case '5': bor();break;
        case '6': huan(); break;
        case '0':break;
        default :printf("\n操作错误,请按指示操作,请按任意键返回。谢谢。\n");getch();getchar();system("cls");goto menu;
    }
}


/*****************
输入新书信息函数
******************/
 void putin()
    {
        int i;
        int want;
        printf("请输入新书的数目:");
        scanf("%d",&want);
        printf("请依次输入新书的书名、序号、单价、作者。各项以逗号隔开:\n");
        printf("书名 序号 单价  作者\n");
        for(i=10;i<=10+want;i++)
            scanf("%s,%d,%f,%s",pers[i].bkname,&pers[i].num,&pers[i].price,pers[i].author);
        printf("图书库更新成功\n");
        printf("请按任意键返回主菜单:");
        getch();
        system("cls");
        menu();
    }   



/***********************
注册函数
***********************/
  void reg()
        {    int i=10;
            char choice;
            char yourname[20];
            char  code[10],recode[10];
            printf("请输入你的ID:\n");
            gets(yourname);
            printf("请输入你的密码:\n");
            gets(code);
            printf("请输入你的性别。\n");
            scanf("%c",&vips[i].vipsex);
            getchar();
            printf("请输入你的学号\n");
            scanf("%d",&vips[i].vipnum);
            getchar();
            strcpy(vips[i].vipname,yourname);
            strcpy(vips[i].vipcode,code);
            printf("***************注册成功*************\n\n");
            printf("**************你想借书吗?请输入y/n*********\n");
           
select:     
            scanf("%c",&choice);
            getchar();
            switch(choice)
                {
                    case 'y':system("cls");bor();break;
                    case 'n':system("cls");menu();break;
                    default:printf("操作错误,请重新输入\n");goto select;
                }                     
        }   
        

/*****************************
会员验证函数
******************************/

 int vipcheck(char id[],char code[])
{   
    int i;
    for(i=0;i<=10;i++)
        {
            if((strcmp(id,vips[i].vipname)==0)&&(strcmp(code,vips[i].vipcode)==0))
                return 1;
        }   
    return 0;
}


 void main()
{
    menu();
    printf("\n\n\n\n\n\n");
    printf("************************欢迎使用*******************************\n");
    printf("**********************请按任意结束*****************************\n");
   
}
搜索更多相关主题的帖子: 图书馆 用户 
2010-12-29 00:02
zhaoya881010
Rank: 9Rank: 9Rank: 9
来 自:芒砀古郡
等 级:蜘蛛侠
威 望:1
帖 子:339
专家分:1177
注 册:2010-11-21
收藏
得分:10 
图片附件: 游客没有浏览图片的权限,请 登录注册

楼主用的什么编译器啊?变量名重定义也能通过。。。。。

Go Go Go
2010-12-29 16:00
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
收藏
得分:0 
以下是引用zhaoya881010在2010-12-29 16:00:37的发言:


楼主用的什么编译器啊?变量名重定义也能通过。。。。。
VC++ 6.0,不能这样子定义的吗?
2010-12-29 20:49
li_danwang
Rank: 4
来 自:鄂州
等 级:业余侠客
帖 子:112
专家分:203
注 册:2010-11-12
收藏
得分:10 
眼花撩蓝

没事来C一下...   
2010-12-29 21:01
快速回复:前辈们帮忙看一看,谢谢
数据加载中...
 
   



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

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