编写一个c语言的图书管理系统,在能运行之后选择1添加图书并输入图书信息之后,选择3查询,他显示我没有图书可查询

二愣子卖黄瓜 发布于 2017/12/02 17:04
阅读 261
收藏 0
c

#include"stdio.h"

#include<string.h>

struct book{

    int num;

    char name[20];

    char author[20];

    char press[20];

    char time;

    char amount;

    char price;

    

}book;

 

void new_book(struct book books[]);             //定义各类功能模块

void delete_book(struct book books[]);

void inquire_book(struct book books[]);

void change_book(struct book books[]);

void sort_book(struct book books[]);

int count=0;//记录存书数目

 

int main()

{

    struct book books[20];

    int choice,i=0;

    

    printf(" ================================图书管理系统==================================\n");

    do{

        printf(" choice\n  1:添加图书信息\n  2:删除图书信息\n  3:查询图书信息\n  4:修改图书信息\n  5:排序图书信息\n   0:exit\n");

        scanf("%d",&choice);

        switch(choice){

            case 1:

                new_book(books);

                break;

                

            case 2:

                delete_book(books);

                break;

                

            case 3:

                inquire_book(books);

                break;

                

            case 4:

                change_book( books);

                break;

                

            case 5:

                sort_book( books);

                break;

                

            case 0:

                printf("欢迎再次使用!");

                break;

        }

    }   while(choice!=0);

    printf("END!\n");

    return 0;

}

 

 

 

void new_book(struct book books[])

{

    if(count==20){

        printf("The array is full!\n");

        return;}

    if(count==0){

        printf("请输入图书的书号,书名,作者,出版社,出版时间,总页数,价格:\n");

        scanf("%d",&books[count].num);

        scanf("%s",books[count].name);

        scanf("%s",books[count].author);

        scanf("%s",books[count].press);

        scanf("%s",&books[count].time);

        scanf("%s",&books[count].amount);

        scanf("%s",&books[count].price);

        

        count++;}

    else {

        printf("请输入图书的书号,书名,作者,出版社,出版时间,总页数,价格:\n");

        scanf("%d",&books[count+1].num);

        scanf("%s",books[count+1].name);

        scanf("%s",books[count+1].author);

        scanf("%s",books[count+1].press);

        scanf("%s",&books[count+1].time);

        scanf("%s",&books[count+1].amount);

        scanf("%s",&books[count+1].price);

        count++;

    }

}

 

 

 

void delete_book(struct book books[])

{

    int i,delete_num,n=0;

    int between_num[20];

    

    if(count==0){

        printf("没有图书可删除!");

        return;

    }

    

    printf("请输入需要删除的书的编号:\n");

    scanf("%d",&delete_num);

    

    for(i=delete_num;i<count;i++){

        between_num[n]=books[i+1].num;

        books[i].num=books[i+1].num;

        books[i].name[i]=books[i+1].name[i+1];

        books[i].author[i]=books[i+1].author[i+1];

        books[i].press[i]=books[i+1].press[i+1];

        books[i].time=books[i+1].time;

        books[i].amount=books[i+1].amount;

        books[i].price=books[i+1].price;

        

        

    }

    count--;

}

void inquire_book(struct book books[])

{

    int num,*p;

    int i,flag=0;

    if(count==0){

        printf("没有图书可查询:");

        return;}

    

    printf("请输入图书的书号!\n");

    scanf("%d",&num);

    p=&num;

    

    for(i=0;i<count;i++){

        

        if(books[1].num==num){

            flag=1;

            break;}

        

        if(flag){

            printf("num:%d\n",books[i].num);

            printf("name:%s\n",books[i].name);

            printf("author:%s\n",books[i].author);

            printf("press:%s\n",books[i].press);

            printf("time:%d\n",books[i].time);

            printf("amount:%c\n",books[i].amount);

            printf("price:%d\n",books[i].price);

            

        }

        else

            printf("没有发现图书!");

    }

}

 

 

void change_book(struct book books[])

{

    int i=0,course,n=0;

    int update_num[20];

    char update_char;

    int old_num,update_num1;

    char update_char1;

    float update_price;

    

    printf("请输入需要修改的书的编号:\n");

    scanf("%d",&i);

    

    printf("num:%d\n",books[i].num);

    printf("name:%s\n",books[i].name);

    printf("author:%s\n",books[i].author);

    printf("press:%s\n",books[i].press);

    printf("time:%d\n",books[i].time);

    printf("amount:%c\n",books[i].amount);

    printf("price:%d\n",books[i].price);

    printf("选择图书: 1.编号 2.书名 3.作者 4.出版社 5.出版时间 6.总页数 7.价格:");

    scanf("%d",&course);

    

    switch(course){

        case 1:{

            printf("请输入需要修改编号的书的编号:\n");

            scanf("%d",&old_num);

            printf("新编号:\n");

            scanf("%d",&update_num[n]);

            books[old_num].num=update_num[n];

        }

        case 2:{

            printf("请输入需要修改名字的书的编号:\n");

            scanf("%d",&old_num);

            printf("新名字:\n");

            scanf("%s",&update_char);

            books[old_num].name[old_num]=update_char;

        }

        case 3:{

            printf("请输入需要修改作者的书的编号:\n");

            scanf("%d",&old_num);

            printf("新作者:\n");

            scanf("%d",&update_num1);

            books[old_num].author[old_num]=update_num1;

        }

        case 4:{

            printf("请输入需要修改出版社的书的编号:\n");

            scanf("%d",&old_num);

            printf("新出版社:\n");

            scanf("%s",&update_char1);

            books[old_num].press[old_num]=update_char1;

        }

            

        case 5:{

            printf("请输入需要修改的时间的书的编号:\n");

            scanf("%d",&old_num);

            printf("新时间:\n");

            scanf("%s",&update_char1);

            books[old_num].time=update_char1;

        }

        case 6:{

            printf("请输入需要修改的页数的书的编号:\n");

            scanf("%d",&old_num);

            printf("新页书:\n");

            scanf("%s",&update_char1);

            books[old_num].amount=update_char1;

        }

        case 7:{

            printf("请输入需要修改的价格的书的编号:\n");

            scanf("%d",&old_num);

            printf("新价格:\n");

            scanf("%s",&update_char1);

            books[old_num].price=update_char1;

            break;

        }

            

            

            

    }

    printf("num:%d\n",books[i].num);

    printf("name:%s\n",books[i].name);

    printf("author:%s\n",books[i].author);

    printf("press:%s\n",books[i].press);

    printf("time:%d\n",books[i].time);

    printf("amount:%c\n",books[i].amount);

    printf("price:%d\n",books[i].price);

}

 

 

void sort_book(struct book books[])

{

    int i;

    if(count==0){

        printf("没有图书可排序!");

        return;

    }

    for(i=0;i<count;i++){

        books[i].num=0;

        books[i].name[i]=0;

        books[i].author[i]=0;

        books[i].press[i]=0;

        books[i].time=0;

        books[i].amount=0;

        books[i].price=0;

        

    }

    

}

 

 

求大佬们相助,实在是不知道问题错在哪里

 

 

 

 

 

 

 

 

 

 

 

 

 

加载中
0
chenmos
chenmos

函数应该要传引用或者指针吧

二愣子卖黄瓜
二愣子卖黄瓜
回复@chenmos : 可是应该怎么改,在哪插入指针?
0
chenmos
chenmos

呵呵,当时随口一答,实践才出真知啊。

编译调试下,问题出在查询函数。

改成下面:

void inquire_book(struct book books[])
{
    int num,*p;
    int i,flag=0;
    if(count==0){
        printf("没有图书可查询:");
        return;}

    printf("请输入图书的书号!\n");
    scanf("%d",&num);
    p=&num;

    for(i=0;i<count;i++){

        if(books[i].num==num){
            flag=1;
            break;}
    }
    if(flag){
        printf("num:%d\n",books[i].num);
        printf("name:%s\n",books[i].name);
        printf("author:%s\n",books[i].author);
        printf("press:%s\n",books[i].press);
        printf("time:%d\n",books[i].time);
        printf("amount:%c\n",books[i].amount);
        printf("price:%d\n",books[i].price);
        
    }
    else
        printf("没有发现图书!");

}

比较下就知道了,估摸着书里的i打成了1,括号范围也错了。

返回顶部
顶部