采用VC模仿做了一个图书管理系统,输入相应条件查找不出来

采用VC模仿做了一个图书管理系统,输入相应条件查找不出来,是因为将代码和条件文档没有保存到一起吗,可是已经保存到了一起,是我保存错了吗?

#include<iostream>
#include<fstream>
#include<string>
#include<iomanip>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。
typedef int ElemType; //ElemType 为可定义的数据类型,此设为int类型

#define MAXSIZE 100            //顺序表可能达到的最大长度
struct Book {
    string id;//ISBN
    string name;//书名
    double price;//定价
};
typedef struct {
    Book *elem; //存储空间的基地址
    int length; //当前长度
} SqList;

Status InitList_Sq(SqList &L) { //算法2.1 顺序表的初始化
    L.elem = new Book[MAXSIZE];
    if(!L.elem)
        exit(OVERFLOW);
    L.length = 0;
    return 0;
}

Status GetElem(SqList L, int i, Book &e) {//算法2.2 顺序表的取值
    if(i<1||i>L.length)
        return ERROR;
    e=L.elem[i-1];
    return OK;
}

int LocateElem_Sq(SqList L, double e) { //算法2.3 顺序表的查找
    for(int i=0;i<L.length;i++)
        return i+1;
    return 0;
}

Status ListInsert_Sq(SqList &L, int i, Book e) { //算法2.4 顺序表的插入
    if(i<1||i>L.length)
        return ERROR;
    if(L.length==MAXSIZE)
        return ERROR;
    for( int j=L.length-1;j>=i-1;j--)
        L.elem[j+1]=L.elem[j];
    L.elem[i-1]=e;
    ++L.length;
    return OK;
}

Status ListDelete_Sq(SqList &L, int i) { //算法2.5 顺序表的删除
    if(i<1||i>L.length)
        return ERRORr;
    for(int j=1;j<=L.length-1;j++)
        L.elem[j-1]=L.elem[j];
    --L.length;
    return OK;
}

int main() {
    SqList L;
    int i = 0, temp, a, c, choose;
    double price;
    Book e;
    string head_1, head_2, head_3;
    cout << "1. 建立\n";
    cout << "2. 输入\n";
    cout << "3. 取值\n";
    cout << "4. 查找\n";
    cout << "5. 插入\n";
    cout << "6. 删除\n";
    cout << "7. 输出\n";
    cout << "0. 退出\n\n";

    choose = -1;
    while (choose != 0) {
        cout << "请选择:";
        cin >> choose;
        switch (choose) {
        case 1://创建顺序表
            if (InitList_Sq(L))
                cout << "成功建立顺序表\n\n";
            else
                cout << "顺序表建立失败\n\n";
            break;
        case 2: {//顺序表信息输入
            i = 0;
            L.elem = new Book[MAXSIZE];
            if (!L.elem)
                exit(OVERFLOW);
            L.length = 0;
            fstream file;
            file.open("book.txt");
            if (!file) {
                cout << "错误!未找到文件!" << endl;
                exit(ERROR);
            }
            file >> head_1 >> head_2 >> head_3;
            while (!file.eof()) {
                file >> L.elem[i].id >> L.elem[i].name >> L.elem[i].price;
                i++;
            }
            cout << "输入 book.txt 信息完毕\n\n";
            L.length = i;
            file.close();
        }
            break;
        case 3://顺序表的取值
            cout << "请输入一个位置用来取值:\n";
            cin >> i;
            temp = GetElem(L, i, e);
            if (temp != 0) {
                cout << "查找成功\n";
                cout << "第" << i << "本图书的信息是:\n";
                cout << left << setw(15) << e.id << "\t" << left << setw(50)
                        << e.name << "\t" << left << setw(5) << e.price << endl
                        << endl;
            } else
                cout << "查找失败!位置超出范围\n\n";
            break;
        case 4: //顺序表的查找
            cout << "请输入所要查找价格:";
            cin >> price;
            temp = LocateElem_Sq(L, price);
            if (temp != 0) {
                cout << "查找成功\n";
                cout << "该价格对应的书名为:" << L.elem[temp - 1].name << endl << endl;
            } else
                cout << "查找失败!没有这个价格对应的书籍\n\n";
            break;
        case 5: //顺序表的插入
            cout << "请输入插入的位置和书本信息,包括:编号 书名 价格(用空格隔开):";
            cin >> a;
            cin >> e.id >> e.name >> e.price; //输入a和b,a代表插入的位置,b代表插入的数值(书本信息)
            if (ListInsert_Sq(L, a, e))
                cout << "插入成功.\n\n";
            else
                cout << "插入失败.\n\n";
            break;
        case 6: //顺序表的删除
            cout << "请输入所要删除的书籍的位置:";
            cin >> c;
            if (ListDelete_Sq(L, c))
                cout << "删除成功.\n\n";
            else
                cout << "删除失败.\n\n";
            break;
        case 7: //顺序表的输出
            cout << "当前图书系统信息(顺序表)读出:\n";
            for (i = 0; i < L.length; i++)
                cout << left << setw(15) << L.elem[i].id << "\t" << left
                        << setw(50) << L.elem[i].name << "\t" << left
                        << setw(5) << L.elem[i].price << endl;
            cout << endl;
            break;
        }
    }
    return 0;
}

检查一下你建立的文件是和程序一个目录吗

图书管理系统,参考:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>            //conio是控制台输入输出 库函数

struct book                    //定义结构体 
{
    int id;
    char name[31];
    char author[27];
    char publish[31];
    int store;
    int total;
    int user[10];
    int days[10];
}books[100];


void page_title(char *menu_item)        //显示整体标题的标题函数 
{
    printf("\t\t********欢迎大家使用图书馆管理系统********\n\n-%s-\n\n", menu_item);
}


void return_confirm()                    //等待返回函数 
{
    printf("\n请按任意键返回……\n");
    getch();
} 


book_add()                            //输入 1 后的(注册新书)函数 
{
    int i;
    system("cls");                    //此函数起到清屏作用 
    page_title("注册新书"); 
    for (i = 0; i < 2; i++)
        {
         printf("序号:");
         scanf("%d", &books[i].id);
         printf("书名:");
         scanf("%s", &books[i].name); 
         printf("作者:");
         scanf("%s", &books[i].author); 
         printf("出版社:");
         scanf("%s", &books[i].publish); 
         printf("数量:");
         scanf("%d", &books[i].total);
         books[i].store = books[i].total;
         printf("\n");         
        } 
}


book_show()                            //输入 2 后的(显示图书)函数 
{
    int i, flag = 0;
    system("cls");
    for (i = 0; i < 100; i++)
        {
        if (strlen(books[i].publish) != 0)
            {
             printf("序号:%d\t  ", books[i].id);
             printf("书名:%s\t  ", books[i].name);
             printf("作者:%s\t  ", books[i].author);
             printf("出版社:%s\t  ", books[i].publish);
             printf("存数:%d\t", books[i].store);
             printf("总数:%d\n\n", books[i].total);
             flag = 1;            
            }    
        }     
    if (flag == 0)
        {
         printf("未查找到相关书籍。\n");    
        }

    getch();
    return i;                    //按任意键返回主菜单
}


int book_search()                            //输入 3 后的(查询图书信息)函数 
{
    int n, i, flag = 0;
    char nam[30];
    system("cls");
    printf("请输入书名:");
    scanf("%s", &nam);
    for(i = 0; i < 100; i++)
    {
        if (strcmp(books[i].name,nam) == 0)//如果输入书籍名称与系统中已有的书籍名称相同
            {
             printf("序号:%d\t  ", books[i].id);
             printf("书名:%s\t  ", books[i].name);
             printf("作者:%s\t  ", books[i].author);
             printf("出版社:%s\t  ", books[i].publish);
             printf("存数:%d\t", books[i].store);
             printf("总数:%d\n", books[i].total);
             n = i;
             flag = 1;
            
             getch();
             break;        //跳出循环(可再在此处做文章连续查询书籍信息)
            }
    }
        
        if (flag == 0)
            {
             printf("\n未找到相关书籍。\n");
             getch();
             return -1;                    //与借阅图书相联系
            }
    return n;                            //与借阅图书相联系
}


book_edit()                            //输入 4 后的(修改图书信息)函数 
{
    int i, id_change;
    system("cls");
    page_title("修改图书信息:");
    printf("输入要修改的图书id:");
    scanf("%d", &id_change);
    
    for (i = 0; i < 100; i++)
        {
        if (books[i].id == id_change)
            {
             printf("修改书名:");
             scanf("%s",&books[i].name); 
             printf("修改作者:");
             scanf("%s",&books[i].author); 
             printf("修改出版社:");
             scanf("%s",&books[i].publish); 
             printf("修改数量:");
             scanf("%d",&books[i].total);
             printf("修改图书信息成功\n");
             books[i].store=books[i].total;
             return i;//////////////////////////////////////////////////////////////////////////////////////////////////////// 
            }    
        }     
    printf("\n未找到相关信息\n");
    
    getch();
    return -1;
}


int book_del()                            //输入 5 后的(删除图书)函数 
{
    int i, num, j;
    system("cls");
    page_title("删除图书");
    printf("输入所要删除的书的id:");
    scanf("%d", &num);
    for(i = 0; i < 100; i++)
    {
        if (books[i].id == num)
            {
            for (j = i; j < 100; j++)
                {
                 books[j].id = books[j+1].id;
                 strcpy(books[j].name,books[j+1].name);
                 strcpy(books[j].publish,books[j+1].publish);
                 printf("该书已经删除了!!!\n");
                
                 getch();
                 return i;
                }
            }    
    }
    printf("未找到相关记录\n");
    
    getch();
    return -1;
}


book_out()                            //输入 6 后的(借阅图书)函数
{
    int n, s, i, d;
    system("cls");
    page_title("借阅图书");
    n = book_search();                //引用book_search()函数
    if (n != -1 && books[n].store>0)
        {
         for (i=0; i<10; i++)                //赋初值,全为零 
            {
             books[n].user[i] = 0;
             books[n].days[i] = 0;            
            }
         printf("借书证序号:");
         scanf("%d", &s);
         printf("输入可借天数:");
         scanf("%d", &d); 
        
         books[n].user[0] = s;
         books[n].days[0] = d; 
         books[n].store--;            
        }
    
        else if (n != -1 && books[n].store == 0)
                {
                 printf("此书已经完全借完\n\n");
        
                 getch();
                }
        return_confirm();
}


void book_in()                            //输入 7 后的(归还图书)函数 
{
    int n, s, i;
    page_title("归还图书");
    n = book_search();
    printf("%d", n);
    if (n != -1 && books[n].store < books[n].total)
        {
         printf("借阅图书证列表\n");
         for (i = 0; i < 10; i++)
            {
             if (books[n].user != 0)
                {
                 printf("[%d]--%d天\n", books[n].user[i], books[n].days[i]);
                }
            printf("输入借书证号:");
            scanf("%d", &s);
            for (i = 0; i < 10; i++)
                {
                 if (books[n].user[i] == s)
                    {
                     books[n].store++;
                    }
                }
            }
        }    
    if (n != -1 && books[n].store == books[n].total)
        {
         printf("全部归还\n");
        }
    else if(n!=-1&&books[n].store<books[n].total)
            {
             printf("归还成功\n");
            }
    return_confirm();    
}


int main()
{

    menu:page_title("操作选单");
     printf("用数字选择操作\n\n");
     printf("\t\t1注册新书\t\t2显示图书\n");
     printf("\t\t3查询图书信息\t\t4修改图书信息\n");
     printf("\t\t5删除图书\t\t6借阅图书\n");
     printf("\t\t7归还图书\t\t8退出系统\n");
     printf("请按数字键:\n");
    
    switch(getchar())
    {
        case'1': book_add(); break;
        case'2': book_show(); break;
        case'3': book_search(); break;
        case'4': book_edit(); break;
        case'5': book_del(); break;
        case'6': book_out(); break;
        case'7': book_in(); break;
        case'8': exit(0);                    //输入 8 后退出系统
    }    
    goto menu;
    return 0;
}


1、你要确认文件读取已经成功读取并已经将所有行数据形成顺序表
2、贴出你这个查询函数代码,以及你输入的价格
3、既然已经用VC6,加个断点调试一下分分钟的事啊