用C语言设计图书管理系统

设计一个图书管理系统,完成图书管理的基本业务; 基本要求: 1)每种书的登记内容要包括图书编号,书名,ISBN,作者,现存量(即:可借阅量)和库存量(即:书的总量),出版社等。 2)借阅者信息主要包括,借书证号,姓名,单位,联系电话等。 3)系统的主要功能如下: 采编入库:新购一本书,如果库中已有这种书,库存量和现存量增加;如无该书则新建该书的信息; 借阅:如果现存量大于零,则借出一本登记借阅者的借书证号,借书日期,归还期限。并改变现存量。 归还:删除借阅者的相应借阅记录,改变图书的现存量。 查询:可查询相关图书的信息;也可查询借阅者借阅的相关信息,借阅者的借阅信息要求按图书的ISBN排序。

参考代码如下:{如果对你有帮助,可以给我个采纳吗,谢谢!! 点击我这个回答右上方的【采纳】按钮}。

https://blog.csdn.net/qq_41226029/article/details/79438131

<span class="hljs-comment">/*
    课程设计项目名称:图书查询系统
    作者:施瑞文
    时间:2018.3.4 
*/</span> 
#include<stdio.h>
#include<string.h>
#include<windows.h>
#include<conio.h>
#include<stdlib.h>
#define N sizeof(struct BOOK)
 
struct BOOK        <span class="hljs-comment">//图书信息 </span>
{
    char number[<span class="hljs-number">10</span>];   <span class="hljs-comment">//登录号 </span>
    char <span class="hljs-keyword">name</span>[<span class="hljs-number">10</span>];     <span class="hljs-comment">//书名 </span>
    char author[<span class="hljs-number">10</span>];    <span class="hljs-comment">//作者名 </span>
    char type[<span class="hljs-number">10</span>];      <span class="hljs-comment">//类型 </span>
    char publish[<span class="hljs-number">10</span>];  <span class="hljs-comment">//出版单位 </span>
    char <span class="hljs-built_in">time</span>[<span class="hljs-number">8</span>];        <span class="hljs-comment">//出版时间 </span>
    float price;       <span class="hljs-comment">//价格 </span>
    int num;         <span class="hljs-comment">//数量 </span>
    int x;
    struct BOOK *next;   <span class="hljs-comment">//指针域 </span>
};
typedef struct BOOK Book;
typedef Book *book;     
 
void HideCursor();    <span class="hljs-comment">//隐藏光标</span>
void toxy(int x, int y);    <span class="hljs-comment">//将光标移动到X,Y坐标处</span>
void <span class="hljs-built_in">color</span>(short x);     <span class="hljs-comment">//设置颜色</span>
void over();             <span class="hljs-comment">//退出 </span>
void menu();           <span class="hljs-comment">//菜单 </span>
void input_book();     <span class="hljs-comment">//图书入库 </span>
void save_book(book p);<span class="hljs-comment">//将图书信息存入文件 </span>
void find_book();      <span class="hljs-comment">//查询 </span>
void print_book();    <span class="hljs-comment">//图书总览 </span>
void del_book();     <span class="hljs-comment">//删除图书 </span>
void amend_book();    <span class="hljs-comment">//修改信息 </span>
book ss();
void find_name_book();  <span class="hljs-comment">//按书名查询 </span>
void find_author_book(); <span class="hljs-comment">//按作者查询 </span>
void find_number_book();  <span class="hljs-comment">//按登录号查询</span>
void find_publish_book();  <span class="hljs-comment">//按出版社查询 </span>
void fuzzy_search();     <span class="hljs-comment">//模糊查找 </span>
 
void HideCursor()     <span class="hljs-comment">//隐藏光标</span>
{
 CONSOLE_CURSOR_INFO cursor_info = {<span class="hljs-number">1</span>, <span class="hljs-number">0</span>}; 
 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
 
void <span class="hljs-built_in">color</span>(short x)
{
    <span class="hljs-keyword">if</span>(x>=<span class="hljs-number">0</span>&&x<=<span class="hljs-number">15</span>)
    {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);
    }
    <span class="hljs-keyword">else</span>
    {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);
    }
} 
 
void toxy(int x, int y)      <span class="hljs-comment">//将光标移动到X,Y坐标处</span>
{
COORD pos = { x , y };
HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(Out, pos); 
}
 
void menu()    <span class="hljs-comment">//菜单 </span>
{
    <span class="hljs-keyword">do</span>
    {
        system(<span class="hljs-string">"cls"</span>);  <span class="hljs-comment">//清屏 </span>
        HideCursor();  <span class="hljs-comment">//隐藏光标 </span>
        <span class="hljs-built_in">color</span>(<span class="hljs-number">15</span>);    <span class="hljs-comment">//设置一个好看的颜色 </span>
        char t;
        toxy(<span class="hljs-number">50</span>,<span class="hljs-number">5</span>);<span class="hljs-comment">//将光标移动到(50,5)坐标处</span>
        printf(<span class="hljs-string">" 图书查询管理系统"</span>);
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">8</span>);
        printf(<span class="hljs-string">"|     1.图书入库      |"</span>);
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">10</span>);
        printf(<span class="hljs-string">"|     2.修改信息      |"</span>);
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">12</span>);
        printf(<span class="hljs-string">"|     3.删除信息      |"</span>);
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">14</span>);
        printf(<span class="hljs-string">"|     4.图书查询      |"</span>);
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">16</span>);
        printf(<span class="hljs-string">"|     5.图书总览      |"</span>);
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">18</span>);
        printf(<span class="hljs-string">"|     6.退出软件      |"</span>);
        t=getch();    <span class="hljs-comment">//不回显函数 </span>
        switch(t)
        {
            case <span class="hljs-string">'1'</span>:input_book();break;
            case <span class="hljs-string">'2'</span>:amend_book();break;
            case <span class="hljs-string">'3'</span>:del_book();break;
            case <span class="hljs-string">'4'</span>:find_book();break;
            case <span class="hljs-string">'5'</span>:print_book();break; 
            case <span class="hljs-string">'6'</span>:over();break;
            default :break;
        }
    }<span class="hljs-keyword">while</span>(<span class="hljs-number">1</span>);
} 
 
book ss()      <span class="hljs-comment">//将文件中的内容读出到链表中,返回值为表头地址 </span>
{
    FILE *fp;       <span class="hljs-comment">//文件指针 </span>
    int n=<span class="hljs-number">0</span>;
    book head=NULL;
    book p2,p,pr=NULL;
    fp=fopen(<span class="hljs-string">"mybook"</span>,<span class="hljs-string">"ab+"</span>);     <span class="hljs-comment">//以只读的方式打开文件 </span>
    <span class="hljs-keyword">if</span>(fp==NULL)
    {
        printf(<span class="hljs-string">"cannot open file\n"</span>);
    }
    <span class="hljs-keyword">while</span>(!feof(fp))        <span class="hljs-comment">//判断文件位置标志是否移动到文件末尾 </span>
    {
       n++;
           p=(book)malloc(N); <span class="hljs-comment">//向内存申请一段空间 </span>
       fread(p,N,<span class="hljs-number">1</span>,fp);     <span class="hljs-comment">//将fp所指向的文件中的内容赋给p </span>
       <span class="hljs-keyword">if</span>(n==<span class="hljs-number">1</span>)
       {
          head=p;
          p2=p;
        }
        <span class="hljs-keyword">else</span>             <span class="hljs-comment">//创建链表 </span>
        {
            pr=p2;
            <span class="hljs-function"><span class="hljs-title">p2</span>-></span>next=p;
            p2=p;
        }
    }
    <span class="hljs-keyword">if</span>(pr!=NULL)
       <span class="hljs-function"><span class="hljs-title">pr</span>-></span>next=NULL;
    <span class="hljs-keyword">else</span>
       head=NULL;
    fclose(fp);    <span class="hljs-comment">//关闭文件 </span>
    return head;   <span class="hljs-comment">//返回头指针 </span>
}
 
void input_book()    <span class="hljs-comment">//图书录入 </span>
{
    <span class="hljs-keyword">do</span>
    {
        system(<span class="hljs-string">"cls"</span>);
        <span class="hljs-built_in">color</span>(<span class="hljs-number">10</span>);
        char t;
        book p;
        p=(book)malloc(N);     <span class="hljs-comment">//申请空间 </span>
        <span class="hljs-comment">//输入图书信息</span>
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">8</span>);
        printf(<span class="hljs-string">"请输入图书登录号(小于10位数):"</span>);    
        <span class="hljs-function"><span class="hljs-title">scanf</span>("%s",p-></span>number);getchar();
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">10</span>);
        printf(<span class="hljs-string">"请输入书名(小于10位数):"</span>);
        <span class="hljs-function"><span class="hljs-title">scanf</span>("%s",p-></span><span class="hljs-keyword">name</span>);getchar();
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">12</span>);
        printf(<span class="hljs-string">"请输入作者名(小于10位数):"</span>);
        <span class="hljs-function"><span class="hljs-title">scanf</span>("%s",p-></span>author);getchar();
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">14</span>);
        printf(<span class="hljs-string">"请输入图书类别(小于10位数):"</span>);
        <span class="hljs-function"><span class="hljs-title">scanf</span>("%s",p-></span>type);getchar();
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">16</span>);
        printf(<span class="hljs-string">"请输入图书出版单位(小于10位数):"</span>);
        <span class="hljs-function"><span class="hljs-title">scanf</span>("%s",p-></span>publish);getchar();
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">18</span>);
        printf(<span class="hljs-string">"请输入图书出版时间(小于8位数):"</span>);
        <span class="hljs-function"><span class="hljs-title">scanf</span>("%s",p-></span><span class="hljs-built_in">time</span>);getchar();
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">20</span>);
        printf(<span class="hljs-string">"请输入图书价格:"</span>);
        <span class="hljs-function"><span class="hljs-title">scanf</span>("%f",&p-></span>price);getchar();
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">22</span>);
        printf(<span class="hljs-string">"请输入图书数量:"</span>);
        <span class="hljs-function"><span class="hljs-title">scanf</span>("%d",&p-></span>num);
        save_book(p);
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">24</span>);
        printf(<span class="hljs-string">"正在保存...."</span>);
        Sleep(<span class="hljs-number">500</span>);   <span class="hljs-comment">//暂停0.5秒 </span>
        system(<span class="hljs-string">"cls"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">8</span>);
        printf(<span class="hljs-string">"-------------------------"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">9</span>);
        printf(<span class="hljs-string">"|                       |"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">10</span>);
        printf(<span class="hljs-string">"| 保存成功!是否继续?  |"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">12</span>);
        printf(<span class="hljs-string">"| 1.是             2.否 |"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">13</span>);
        printf(<span class="hljs-string">"|                       |"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">14</span>);
        printf(<span class="hljs-string">"-------------------------"</span>);
        <span class="hljs-keyword">while</span>(<span class="hljs-number">1</span>)    <span class="hljs-comment">//利用死循环可有效防止其他按键干扰 </span>
        {
            t=getch();
            <span class="hljs-keyword">if</span>(t==<span class="hljs-string">'1'</span>)
            {
                break;
             } 
             <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(t==<span class="hljs-string">'2'</span>)
             {
                 menu();
             }
        }
    }<span class="hljs-keyword">while</span>(<span class="hljs-number">1</span>);
    
} 
 
void amend_book()    <span class="hljs-comment">//修改图书信息 </span>
{
    <span class="hljs-keyword">do</span>
    {
        system(<span class="hljs-string">"cls"</span>);
        <span class="hljs-built_in">color</span>(<span class="hljs-number">10</span>);
        book head,p;
        int i=<span class="hljs-number">11</span>,j=<span class="hljs-number">0</span>,x;
        char ch,t;
        FILE *fp;    <span class="hljs-comment">//文件指针 </span>
        char _<span class="hljs-keyword">name</span>[<span class="hljs-number">10</span>];
        char number[<span class="hljs-number">10</span>];   <span class="hljs-comment">//登录号 </span>
        char <span class="hljs-keyword">name</span>[<span class="hljs-number">10</span>];     <span class="hljs-comment">//书名 </span>
        char author[<span class="hljs-number">10</span>];    <span class="hljs-comment">//作者名 </span>
        char type[<span class="hljs-number">10</span>];      <span class="hljs-comment">//类型 </span>
        char publish[<span class="hljs-number">10</span>];  <span class="hljs-comment">//出版单位 </span>
        char <span class="hljs-built_in">time</span>[<span class="hljs-number">8</span>];        <span class="hljs-comment">//出版时间 </span>
        float price;       <span class="hljs-comment">//价格 </span>
        int num;         <span class="hljs-comment">//数量 </span>
        head=ss();
        p=head;
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">10</span>);
        printf(<span class="hljs-string">"请输入你要修改的图书的书名:"</span>);
        gets(_<span class="hljs-keyword">name</span>); 
        <span class="hljs-function"><span class="hljs-title">while</span>(p!=NULL)    //初始化p-></span>x为<span class="hljs-number">0</span> 
        {
            <span class="hljs-function"><span class="hljs-title">p</span>-></span>x=<span class="hljs-number">0</span>;
            <span class="hljs-function"><span class="hljs-title">p</span>=p-></span>next;
        }
        p=head;    <span class="hljs-comment">//让p重新指向表头 </span>
        toxy(<span class="hljs-number">20</span>,<span class="hljs-number">5</span>);
        printf(<span class="hljs-string">"***********************************************图书信息******************************************************"</span>);
        toxy(<span class="hljs-number">20</span>,<span class="hljs-number">8</span>);
        printf(<span class="hljs-string">"-------------------------------------------------------------------------------------------------------------"</span>);
        toxy(<span class="hljs-number">20</span>,<span class="hljs-number">9</span>);
        printf(<span class="hljs-string">"登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量"</span>);
        toxy(<span class="hljs-number">20</span>,<span class="hljs-number">10</span>);
        printf(<span class="hljs-string">"-------------------------------------------------------------------------------------------------------------"</span>);
        <span class="hljs-keyword">while</span>(p!=NULL)
        {
            <span class="hljs-function"><span class="hljs-title">if</span>(p!=NULL&&strcmp(p-></span><span class="hljs-keyword">name</span>,_<span class="hljs-keyword">name</span>)==<span class="hljs-number">0</span>)
            {
                toxy(<span class="hljs-number">20</span>,i);
                j++;
                <span class="hljs-function"><span class="hljs-title">printf</span>("%d:%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",j,p-></span><span class="hljs-function"><span class="hljs-title">number</span>,p-></span><span class="hljs-function"><span class="hljs-title">name</span>,p-></span><span class="hljs-function"><span class="hljs-title">author</span>,p-></span><span class="hljs-function"><span class="hljs-title">type</span>,p-></span><span class="hljs-function"><span class="hljs-title">publish</span>,p-></span><span class="hljs-function"><span class="hljs-title">time</span>,p-></span><span class="hljs-function"><span class="hljs-title">price</span>,p-></span>num);
                <span class="hljs-function"><span class="hljs-title">p</span>-></span>x=j;    <span class="hljs-comment">//给符合查询标准的结点标号 </span>
                i++;
            }
            <span class="hljs-function"><span class="hljs-title">p</span>=p-></span>next;
        }
        <span class="hljs-keyword">if</span>(j==<span class="hljs-number">0</span>)                   <span class="hljs-comment">//如果j=0,即没有进入前面的搜索循环,也就是没有找到相应的信息 </span>
        { 
            toxy(<span class="hljs-number">50</span>,i);
            printf(<span class="hljs-string">"没有找到相应的信息!(按0返回,按1重新搜索)"</span>);
            <span class="hljs-keyword">while</span>(<span class="hljs-number">1</span>)               <span class="hljs-comment">//死循环是为了防止除0和1的其他按键干扰 </span>
            {
                ch=getch();
                <span class="hljs-keyword">if</span>(ch==<span class="hljs-string">'0'</span>)
                {
                    menu();break;
                }
                <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(ch==<span class="hljs-string">'1'</span>)
                {
                    break;
                }
            }
            <span class="hljs-keyword">if</span>(ch==<span class="hljs-string">'1'</span>)     <span class="hljs-comment">//如果输入的ch等于1,则结束本次循环 </span>
               continue;
        }
        <span class="hljs-keyword">while</span>(<span class="hljs-number">1</span>)
        {
            toxy(<span class="hljs-number">45</span>,i);
            printf(<span class="hljs-string">"请输入您要修改的图书的编号:"</span>);
            scanf(<span class="hljs-string">"%d"</span>,&x);getchar();
            <span class="hljs-keyword">if</span>(x>j||x==<span class="hljs-number">0</span>)     
            {
                toxy(<span class="hljs-number">45</span>,++i);
                printf(<span class="hljs-string">"输入错误,请重新输入!"</span>);
                Sleep(<span class="hljs-number">500</span>);
            }
            <span class="hljs-keyword">else</span>
            {
                break;
            }
        }
        p=head;     <span class="hljs-comment">//让p重新指向表头 </span>
        <span class="hljs-function"><span class="hljs-title">while</span>(p!=NULL&&p-></span>x!=x)   <span class="hljs-comment">//遍历链表查询符合条件的结点 </span>
        {
            <span class="hljs-function"><span class="hljs-title">p</span>=p-></span>next;
        }
        <span class="hljs-keyword">if</span>(p)    <span class="hljs-comment">//如果p不为空 </span>
        {
            system(<span class="hljs-string">"cls"</span>);
            <span class="hljs-comment">//输入要修改的信息 </span>
            toxy(<span class="hljs-number">48</span>,<span class="hljs-number">8</span>);
            printf(<span class="hljs-string">"请输入图书登录号(小于10位数):"</span>);
            <span class="hljs-function"><span class="hljs-title">scanf</span>("%s",number);getchar();strcpy(p-></span>number,number);
            toxy(<span class="hljs-number">48</span>,<span class="hljs-number">10</span>);
            printf(<span class="hljs-string">"请输入书名(小于10位数):"</span>);
            <span class="hljs-function"><span class="hljs-title">scanf</span>("%s",<span class="hljs-keyword">name</span>);getchar();strcpy(p-></span><span class="hljs-keyword">name</span>,<span class="hljs-keyword">name</span>);
            toxy(<span class="hljs-number">48</span>,<span class="hljs-number">12</span>);
            printf(<span class="hljs-string">"请输入作者名(小于10位数):"</span>);
            <span class="hljs-function"><span class="hljs-title">scanf</span>("%s",author);getchar();strcpy(p-></span>author,author);
            toxy(<span class="hljs-number">48</span>,<span class="hljs-number">14</span>);
            printf(<span class="hljs-string">"请输入图书类别(小于10位数):"</span>);
            <span class="hljs-function"><span class="hljs-title">scanf</span>("%s",type);getchar();strcpy(p-></span>type,type);
            toxy(<span class="hljs-number">48</span>,<span class="hljs-number">16</span>);
            printf(<span class="hljs-string">"请输入图书出版单位(小于10位数):"</span>);
            <span class="hljs-function"><span class="hljs-title">scanf</span>("%s",publish);getchar();strcpy(p-></span>publish,publish);
            toxy(<span class="hljs-number">48</span>,<span class="hljs-number">18</span>);
            printf(<span class="hljs-string">"请输入图书出版时间(小于8位数):"</span>);
            <span class="hljs-function"><span class="hljs-title">scanf</span>("%s",<span class="hljs-built_in">time</span>);getchar();strcpy(p-></span><span class="hljs-built_in">time</span>,<span class="hljs-built_in">time</span>);
            toxy(<span class="hljs-number">48</span>,<span class="hljs-number">20</span>);
            printf(<span class="hljs-string">"请输入图书价格:"</span>);
            <span class="hljs-function"><span class="hljs-title">scanf</span>("%f",&price);getchar();p-></span>price=price;
            toxy(<span class="hljs-number">48</span>,<span class="hljs-number">22</span>);
            printf(<span class="hljs-string">"请输入图书数量:"</span>);
            <span class="hljs-function"><span class="hljs-title">scanf</span>("%d",&num);getchar();p-></span>num=num;
        }
        <span class="hljs-built_in">color</span>(<span class="hljs-number">7</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">8</span>);
        printf(<span class="hljs-string">"-------------------------"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">9</span>);
        printf(<span class="hljs-string">"|                       |"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">10</span>);
        printf(<span class="hljs-string">"|     是否确认修改?    |"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">12</span>);
        printf(<span class="hljs-string">"| 1.是             2.否 |"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">13</span>);
        printf(<span class="hljs-string">"|                       |"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">14</span>);
        printf(<span class="hljs-string">"-------------------------"</span>);
        <span class="hljs-keyword">while</span>(<span class="hljs-number">1</span>)   <span class="hljs-comment">//利用死循环防止其他按键干扰 </span>
        {
            t=getch();
            <span class="hljs-keyword">if</span>(t==<span class="hljs-string">'1'</span>)
            {
                break;
            } 
            <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(t==<span class="hljs-string">'2'</span>)
            {
                menu();
            }
        }
        system(<span class="hljs-string">"cls"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">10</span>);
        printf(<span class="hljs-string">"正在修改,请稍后...."</span>);
        fp=fopen(<span class="hljs-string">"mybook"</span>,<span class="hljs-string">"wb"</span>);   <span class="hljs-comment">//以只写的方式打开名为mybook的二进制文件,打开的同时清空文件中的内容 </span>
        <span class="hljs-keyword">if</span>(fp==NULL)
        {
            printf(<span class="hljs-string">"cannot open file"</span>); 
        }
        <span class="hljs-keyword">if</span>(fwrite(head,N,<span class="hljs-number">1</span>,fp)!=<span class="hljs-number">1</span>)   <span class="hljs-comment">//将head写入fp所指向的文件中 </span>
        {
            printf(<span class="hljs-string">"write error!"</span>); 
        }
        fclose(fp);   <span class="hljs-comment">//关闭文件 </span>
        <span class="hljs-keyword">if</span>(head!=NULL)   <span class="hljs-comment">//如果head不为空 </span>
        {
            <span class="hljs-function"><span class="hljs-title">p</span>=head-></span>next;     <span class="hljs-comment">//让p指向第二个结点 </span>
            fp=fopen(<span class="hljs-string">"mybook"</span>,<span class="hljs-string">"ab"</span>);   <span class="hljs-comment">//以追加的方式打开文件 </span>
            <span class="hljs-keyword">if</span>(fp==NULL)
            {
                printf(<span class="hljs-string">"cannot open file"</span>);
            }
            <span class="hljs-keyword">while</span>(p!=NULL)
            {
                <span class="hljs-keyword">if</span>(fwrite(p,N,<span class="hljs-number">1</span>,fp)!=<span class="hljs-number">1</span>)<span class="hljs-comment">//将p写入fp所指向的文件中</span>
                {
                    printf(<span class="hljs-string">"write error!"</span>);
                }
                <span class="hljs-function"><span class="hljs-title">p</span>=p-></span>next;
            }
            fclose(fp);  <span class="hljs-comment">//关闭文件 </span>
        }
        Sleep(<span class="hljs-number">500</span>);   <span class="hljs-comment">//暂停0.5秒 </span>
        system(<span class="hljs-string">"cls"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">10</span>);
        printf(<span class="hljs-string">"修改成功!即将自动返回主菜单...."</span>);
        Sleep(<span class="hljs-number">500</span>);
        break;
    }<span class="hljs-keyword">while</span>(<span class="hljs-number">1</span>);
}
 
void del_book()   <span class="hljs-comment">//删除信息 </span>
{
    <span class="hljs-keyword">do</span>
    {
        system(<span class="hljs-string">"cls"</span>);
        <span class="hljs-built_in">color</span>(<span class="hljs-number">9</span>);
        FILE *fp;
        book head,p,pre=NULL; 
        int j=<span class="hljs-number">0</span>,x,i=<span class="hljs-number">11</span>;
        char <span class="hljs-keyword">name</span>[<span class="hljs-number">10</span>];
        char t,c,ch;
        head=ss();    <span class="hljs-comment">//调用函数,返回表头地址 </span>
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">10</span>);
        printf(<span class="hljs-string">"请输入你要删除的图书的书名:"</span>);
        scanf(<span class="hljs-string">"%s"</span>,<span class="hljs-keyword">name</span>);
        p=head;
        <span class="hljs-keyword">while</span>(p!=NULL)
        {
            <span class="hljs-function"><span class="hljs-title">p</span>-></span>x=<span class="hljs-number">0</span>;
            <span class="hljs-function"><span class="hljs-title">p</span>=p-></span>next;
        }
        p=head;
        toxy(<span class="hljs-number">20</span>,<span class="hljs-number">5</span>);
        printf(<span class="hljs-string">"***********************************************图书信息******************************************************"</span>);
        toxy(<span class="hljs-number">20</span>,<span class="hljs-number">8</span>);
        printf(<span class="hljs-string">"-------------------------------------------------------------------------------------------------------------"</span>);
        toxy(<span class="hljs-number">20</span>,<span class="hljs-number">9</span>);
        printf(<span class="hljs-string">"登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量"</span>);
        toxy(<span class="hljs-number">20</span>,<span class="hljs-number">10</span>);
        printf(<span class="hljs-string">"-------------------------------------------------------------------------------------------------------------"</span>);
        <span class="hljs-keyword">while</span>(p!=NULL)
        {
            <span class="hljs-function"><span class="hljs-title">if</span>(p!=NULL&&strcmp(p-></span><span class="hljs-keyword">name</span>,<span class="hljs-keyword">name</span>)==<span class="hljs-number">0</span>)
            {
                toxy(<span class="hljs-number">20</span>,i);
                j++;
                <span class="hljs-function"><span class="hljs-title">printf</span>("%d:%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",j,p-></span><span class="hljs-function"><span class="hljs-title">number</span>,p-></span><span class="hljs-function"><span class="hljs-title">name</span>,p-></span><span class="hljs-function"><span class="hljs-title">author</span>,p-></span><span class="hljs-function"><span class="hljs-title">type</span>,p-></span><span class="hljs-function"><span class="hljs-title">publish</span>,p-></span><span class="hljs-function"><span class="hljs-title">time</span>,p-></span><span class="hljs-function"><span class="hljs-title">price</span>,p-></span>num);
                <span class="hljs-function"><span class="hljs-title">p</span>-></span>x=j;
                i++;
            }
            <span class="hljs-function"><span class="hljs-title">p</span>=p-></span>next;
        }
        <span class="hljs-keyword">if</span>(j==<span class="hljs-number">0</span>)                   <span class="hljs-comment">//如果j=0,即没有进入前面的搜索循环,也就是没有找到相应的信息 </span>
        { 
            toxy(<span class="hljs-number">50</span>,i);
            printf(<span class="hljs-string">"没有找到相应的信息!(按0返回,按1重新搜索)"</span>);
            <span class="hljs-keyword">while</span>(<span class="hljs-number">1</span>)               <span class="hljs-comment">//死循环是为了防止除0和1的其他按键干扰 </span>
            {
                ch=getch();
                <span class="hljs-keyword">if</span>(ch==<span class="hljs-string">'0'</span>)
                {
                    menu();break;
                }
                <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(ch==<span class="hljs-string">'1'</span>)
                {
                    break;
                }
            }
            <span class="hljs-keyword">if</span>(ch==<span class="hljs-string">'1'</span>)     <span class="hljs-comment">//如果输入的ch等于1,则结束本次循环 </span>
               continue;
        }
        <span class="hljs-keyword">while</span>(<span class="hljs-number">1</span>)
        {
            toxy(<span class="hljs-number">45</span>,i);
            printf(<span class="hljs-string">"请输入您要删除的图书的编号:"</span>);
            scanf(<span class="hljs-string">"%d"</span>,&x);getchar();
            <span class="hljs-keyword">if</span>(x>j||x==<span class="hljs-number">0</span>)
            {
                toxy(<span class="hljs-number">45</span>,++i);
                printf(<span class="hljs-string">"输入错误,请重新输入!"</span>);
                Sleep(<span class="hljs-number">500</span>);
            }
            <span class="hljs-keyword">else</span>
            {
                break;
            }
        }
        <span class="hljs-built_in">color</span>(<span class="hljs-number">7</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">8</span>);
        printf(<span class="hljs-string">"-------------------------"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">9</span>);
        printf(<span class="hljs-string">"|                       |"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">10</span>);
        printf(<span class="hljs-string">"|     是否确认删除?    |"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">12</span>);
        printf(<span class="hljs-string">"| 1.是             2.否 |"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">13</span>);
        printf(<span class="hljs-string">"|                       |"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">14</span>);
        printf(<span class="hljs-string">"-------------------------"</span>);
        <span class="hljs-keyword">while</span>(<span class="hljs-number">1</span>)
        {
            t=getch();
            <span class="hljs-keyword">if</span>(t==<span class="hljs-string">'1'</span>)
            {
                break;
            } 
            <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(t==<span class="hljs-string">'2'</span>)
            {
                menu();
            }
        }
        p=head;
        <span class="hljs-function"><span class="hljs-title">while</span>(p!=NULL&&p-></span>x!=x)
        {
            pre=p;
            <span class="hljs-function"><span class="hljs-title">p</span>=p-></span>next;
        }
        <span class="hljs-keyword">if</span>(p!=NULL)
        {
            <span class="hljs-keyword">if</span>(pre==NULL)
            {
                <span class="hljs-function"><span class="hljs-title">head</span>=head-></span>next;
            }
            <span class="hljs-keyword">else</span>
            {
                <span class="hljs-function"><span class="hljs-title">pre</span>-></span><span class="hljs-function"><span class="hljs-title">next</span>=p-></span>next;
            }
        }
        free(p);
        fp=fopen(<span class="hljs-string">"mybook"</span>,<span class="hljs-string">"wb"</span>);
        <span class="hljs-keyword">if</span>(fp==NULL)
        {
            printf(<span class="hljs-string">"cannot open file"</span>); 
        }
        <span class="hljs-keyword">if</span>(fwrite(head,N,<span class="hljs-number">1</span>,fp)!=<span class="hljs-number">1</span>)
        {
            printf(<span class="hljs-string">"write error!"</span>); 
        }
        fclose(fp);
        <span class="hljs-keyword">if</span>(head!=NULL)
        {
            <span class="hljs-function"><span class="hljs-title">p</span>=head-></span>next;
            fp=fopen(<span class="hljs-string">"mybook"</span>,<span class="hljs-string">"ab"</span>);
            <span class="hljs-keyword">if</span>(fp==NULL)
            {
                printf(<span class="hljs-string">"cannot open file"</span>);
            }
            <span class="hljs-keyword">while</span>(p!=NULL)
            {
                <span class="hljs-keyword">if</span>(fwrite(p,N,<span class="hljs-number">1</span>,fp)!=<span class="hljs-number">1</span>)
                {
                    printf(<span class="hljs-string">"write error!"</span>);
                }
                <span class="hljs-function"><span class="hljs-title">p</span>=p-></span>next;
            }
            fclose(fp);
        }
        system(<span class="hljs-string">"cls"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">10</span>);
        printf(<span class="hljs-string">"正在删除,请稍后...."</span>);
        Sleep(<span class="hljs-number">500</span>);
        system(<span class="hljs-string">"cls"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">8</span>);
        printf(<span class="hljs-string">"-------------------------"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">9</span>);
        printf(<span class="hljs-string">"|                       |"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">10</span>);
        printf(<span class="hljs-string">"|  删除成功,是否继续? |"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">12</span>);
        printf(<span class="hljs-string">"| 1.是             2.否 |"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">13</span>);
        printf(<span class="hljs-string">"|                       |"</span>);
        toxy(<span class="hljs-number">46</span>,<span class="hljs-number">14</span>);
        printf(<span class="hljs-string">"-------------------------"</span>);
        <span class="hljs-keyword">while</span>(<span class="hljs-number">1</span>)
        {
            c=getch();
            <span class="hljs-keyword">if</span>(c==<span class="hljs-string">'1'</span>)
            {
                break;
            }
            <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(c==<span class="hljs-string">'2'</span>)
            {
                menu();
            }
        }
    }<span class="hljs-keyword">while</span>(<span class="hljs-number">1</span>);
}
 
void print_book()   <span class="hljs-comment">//图书总览 </span>
{
    system(<span class="hljs-string">"cls"</span>);
    <span class="hljs-built_in">color</span>(<span class="hljs-number">6</span>);
    book head,p;
    int i=<span class="hljs-number">11</span>;
    int sum=<span class="hljs-number">0</span>;
    head=ss();
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">5</span>);
    printf(<span class="hljs-string">"***********************************************图书总览******************************************************"</span>);
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">8</span>);
    printf(<span class="hljs-string">"-------------------------------------------------------------------------------------------------------------"</span>);
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">9</span>);
    printf(<span class="hljs-string">"登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量"</span>);
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">10</span>);
    printf(<span class="hljs-string">"-------------------------------------------------------------------------------------------------------------"</span>);
    <span class="hljs-keyword">if</span>(head==NULL)
    {
        toxy(<span class="hljs-number">45</span>,<span class="hljs-number">11</span>);
        printf(<span class="hljs-string">"书库暂时没有书哦~赶快去添加几本吧^_^(按任意键返回)"</span>);
        getch();
        menu();
    }
    p=head;
    <span class="hljs-keyword">while</span>(p!=NULL)
    {
        toxy(<span class="hljs-number">20</span>,i);
        <span class="hljs-function"><span class="hljs-title">printf</span>("%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",p-></span><span class="hljs-function"><span class="hljs-title">number</span>,p-></span><span class="hljs-function"><span class="hljs-title">name</span>,p-></span><span class="hljs-function"><span class="hljs-title">author</span>,p-></span><span class="hljs-function"><span class="hljs-title">type</span>,p-></span><span class="hljs-function"><span class="hljs-title">publish</span>,p-></span><span class="hljs-function"><span class="hljs-title">time</span>,p-></span><span class="hljs-function"><span class="hljs-title">price</span>,p-></span>num);
        i++;
        <span class="hljs-function"><span class="hljs-title">sum</span>+=p-></span>num;<span class="hljs-comment">//计算图书总量 </span>
        <span class="hljs-function"><span class="hljs-title">p</span>=p-></span>next;
    }
    toxy(<span class="hljs-number">48</span>,<span class="hljs-number">7</span>);
    printf(<span class="hljs-string">"图书总量为:%d"</span>,sum);
    toxy(<span class="hljs-number">45</span>,i);
    printf(<span class="hljs-string">"按任意键返回"</span>);
    getch();<span class="hljs-comment">//不回显函数 </span>
}
 
void find_book()  <span class="hljs-comment">//查询图书 </span>
{
    <span class="hljs-keyword">do</span>
    {
        system(<span class="hljs-string">"cls"</span>);  <span class="hljs-comment">//清屏 </span>
        <span class="hljs-built_in">color</span>(<span class="hljs-number">8</span>);
        char t;
        toxy(<span class="hljs-number">50</span>,<span class="hljs-number">5</span>);
        printf(<span class="hljs-string">" 图书查询"</span>);
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">8</span>);
        printf(<span class="hljs-string">"|     1.书名  查询      |"</span>);
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">10</span>);
        printf(<span class="hljs-string">"|     2.作者  查询      |"</span>);
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">12</span>);
        printf(<span class="hljs-string">"|     3.登录号查询      |"</span>);
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">14</span>);
        printf(<span class="hljs-string">"|     4.出版社查询      |"</span>);
        toxy(<span class="hljs-number">48</span>,<span class="hljs-number">16</span>);
        printf(<span class="hljs-string">"|     5.模糊  查询      |"</span>);
        toxy(<span class="hljs-number">50</span>,<span class="hljs-number">18</span>);
        printf(<span class="hljs-string">"按0返回主菜单"</span>);
        t=getch();
        switch(t)
        {
            case <span class="hljs-string">'0'</span>:menu();break;
            case <span class="hljs-string">'1'</span>:find_name_book();break;
            case <span class="hljs-string">'2'</span>:find_author_book();break;
            case <span class="hljs-string">'3'</span>:find_number_book();break;
            case <span class="hljs-string">'4'</span>:find_publish_book();break;
            case <span class="hljs-string">'5'</span>:fuzzy_search();break;
            default :break;
         } 
    }<span class="hljs-keyword">while</span>(<span class="hljs-number">1</span>);
}
 
void find_name_book()  <span class="hljs-comment">//按名字查询 </span>
{
    system(<span class="hljs-string">"cls"</span>);
    <span class="hljs-built_in">color</span>(<span class="hljs-number">8</span>);
    book head,p;
    int i=<span class="hljs-number">11</span>;
    head=ss();
    char <span class="hljs-keyword">name</span>[<span class="hljs-number">10</span>];
    toxy(<span class="hljs-number">48</span>,<span class="hljs-number">8</span>);
    printf(<span class="hljs-string">"请输入您要查询图书的书名:"</span>);
    gets(<span class="hljs-keyword">name</span>);
    toxy(<span class="hljs-number">48</span>,<span class="hljs-number">10</span>);
    printf(<span class="hljs-string">"正在查询...."</span>);
    Sleep(<span class="hljs-number">500</span>);
    p=head;
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">5</span>);
    printf(<span class="hljs-string">"***********************************************图书总览******************************************************"</span>);
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">8</span>);
    printf(<span class="hljs-string">"-------------------------------------------------------------------------------------------------------------"</span>);
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">9</span>);
    printf(<span class="hljs-string">"登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量"</span>);
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">10</span>);
    printf(<span class="hljs-string">"-------------------------------------------------------------------------------------------------------------"</span>);
    <span class="hljs-keyword">while</span>(p!=NULL)
    {
        <span class="hljs-function"><span class="hljs-title">if</span>(p!=NULL&&strcmp(p-></span><span class="hljs-keyword">name</span>,<span class="hljs-keyword">name</span>)==<span class="hljs-number">0</span>)
        {
            toxy(<span class="hljs-number">20</span>,i);
            <span class="hljs-function"><span class="hljs-title">printf</span>("%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",p-></span><span class="hljs-function"><span class="hljs-title">number</span>,p-></span><span class="hljs-function"><span class="hljs-title">name</span>,p-></span><span class="hljs-function"><span class="hljs-title">author</span>,p-></span><span class="hljs-function"><span class="hljs-title">type</span>,p-></span><span class="hljs-function"><span class="hljs-title">publish</span>,p-></span><span class="hljs-function"><span class="hljs-title">time</span>,p-></span><span class="hljs-function"><span class="hljs-title">price</span>,p-></span>num);
            i++;
        }
        <span class="hljs-function"><span class="hljs-title">p</span>=p-></span>next;
    }
    toxy(<span class="hljs-number">45</span>,i);
    printf(<span class="hljs-string">"按任意键返回!"</span>);
    getch();
    find_book();
}
 
void find_author_book()   <span class="hljs-comment">//按作者名查询 </span>
{
    system(<span class="hljs-string">"cls"</span>);
    <span class="hljs-built_in">color</span>(<span class="hljs-number">8</span>);
    book head,p;
    int i=<span class="hljs-number">11</span>;
    head=ss();
    char author[<span class="hljs-number">10</span>];
    toxy(<span class="hljs-number">48</span>,<span class="hljs-number">8</span>);
    printf(<span class="hljs-string">"请输入您要查询图书的作者名:"</span>);
    gets(author);
    toxy(<span class="hljs-number">48</span>,<span class="hljs-number">10</span>);
    printf(<span class="hljs-string">"正在查询...."</span>);
    Sleep(<span class="hljs-number">500</span>);
    p=head;
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">5</span>);
    printf(<span class="hljs-string">"***********************************************图书总览******************************************************"</span>);
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">8</span>);
    printf(<span class="hljs-string">"-------------------------------------------------------------------------------------------------------------"</span>);
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">9</span>);
    printf(<span class="hljs-string">"登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量"</span>);
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">10</span>);
    printf(<span class="hljs-string">"-------------------------------------------------------------------------------------------------------------"</span>);
    <span class="hljs-keyword">while</span>(p!=NULL)
    {
        <span class="hljs-function"><span class="hljs-title">if</span>(p!=NULL&&strcmp(p-></span>author,author)==<span class="hljs-number">0</span>)
        {
            toxy(<span class="hljs-number">20</span>,i);
            <span class="hljs-function"><span class="hljs-title">printf</span>("%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",p-></span><span class="hljs-function"><span class="hljs-title">number</span>,p-></span><span class="hljs-function"><span class="hljs-title">name</span>,p-></span><span class="hljs-function"><span class="hljs-title">author</span>,p-></span><span class="hljs-function"><span class="hljs-title">type</span>,p-></span><span class="hljs-function"><span class="hljs-title">publish</span>,p-></span><span class="hljs-function"><span class="hljs-title">time</span>,p-></span><span class="hljs-function"><span class="hljs-title">price</span>,p-></span>num);
            i++;
        }
        <span class="hljs-function"><span class="hljs-title">p</span>=p-></span>next;
    }
    toxy(<span class="hljs-number">45</span>,i);
    printf(<span class="hljs-string">"按任意键返回!"</span>);
    getch();
    find_book();
}
 
void find_number_book()   <span class="hljs-comment">//按图书编号查询 </span>
{
    system(<span class="hljs-string">"cls"</span>);
    <span class="hljs-built_in">color</span>(<span class="hljs-number">8</span>);
    book head,p;
    int i=<span class="hljs-number">11</span>;
    head=ss();
    char number[<span class="hljs-number">10</span>];
    toxy(<span class="hljs-number">48</span>,<span class="hljs-number">8</span>);
    printf(<span class="hljs-string">"请输入您要查询图书的登录号:"</span>);
    gets(number);
    toxy(<span class="hljs-number">48</span>,<span class="hljs-number">10</span>);
    printf(<span class="hljs-string">"正在查询...."</span>);
    Sleep(<span class="hljs-number">500</span>);
    p=head;
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">5</span>);
    printf(<span class="hljs-string">"***********************************************图书总览******************************************************"</span>);
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">8</span>);
    printf(<span class="hljs-string">"-------------------------------------------------------------------------------------------------------------"</span>);
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">9</span>);
    printf(<span class="hljs-string">"登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量"</span>);
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">10</span>);
    printf(<span class="hljs-string">"-------------------------------------------------------------------------------------------------------------"</span>);
    <span class="hljs-keyword">while</span>(p!=NULL)
    {
        <span class="hljs-function"><span class="hljs-title">if</span>(p!=NULL&&strcmp(p-></span>number,number)==<span class="hljs-number">0</span>)
        {
            toxy(<span class="hljs-number">20</span>,i);
            <span class="hljs-function"><span class="hljs-title">printf</span>("%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",p-></span><span class="hljs-function"><span class="hljs-title">number</span>,p-></span><span class="hljs-function"><span class="hljs-title">name</span>,p-></span><span class="hljs-function"><span class="hljs-title">author</span>,p-></span><span class="hljs-function"><span class="hljs-title">type</span>,p-></span><span class="hljs-function"><span class="hljs-title">publish</span>,p-></span><span class="hljs-function"><span class="hljs-title">time</span>,p-></span><span class="hljs-function"><span class="hljs-title">price</span>,p-></span>num);
            i++;
        }
        <span class="hljs-function"><span class="hljs-title">p</span>=p-></span>next;
    }
    toxy(<span class="hljs-number">45</span>,i);
    printf(<span class="hljs-string">"按任意键返回!"</span>);
    getch();
    find_book();
}
 
void find_publish_book()   <span class="hljs-comment">//按出版商查询 </span>
{
    system(<span class="hljs-string">"cls"</span>);
    <span class="hljs-built_in">color</span>(<span class="hljs-number">8</span>);
    book head,p;
    int i=<span class="hljs-number">11</span>;
    head=ss();
    char publish[<span class="hljs-number">10</span>];
    toxy(<span class="hljs-number">48</span>,<span class="hljs-number">8</span>);
    printf(<span class="hljs-string">"请输入您要查询图书的出版社:"</span>);
    gets(publish);
    toxy(<span class="hljs-number">48</span>,<span class="hljs-number">10</span>);
    printf(<span class="hljs-string">"正在查询...."</span>);
    Sleep(<span class="hljs-number">500</span>);
    p=head;
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">5</span>);
    printf(<span class="hljs-string">"***********************************************图书总览******************************************************"</span>);
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">8</span>);
    printf(<span class="hljs-string">"-------------------------------------------------------------------------------------------------------------"</span>);
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">9</span>);
    printf(<span class="hljs-string">"登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量"</span>);
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">10</span>);
    printf(<span class="hljs-string">"-------------------------------------------------------------------------------------------------------------"</span>);
    <span class="hljs-keyword">while</span>(p!=NULL)
    {
        <span class="hljs-function"><span class="hljs-title">if</span>(p!=NULL&&strcmp(p-></span>publish,publish)==<span class="hljs-number">0</span>)
        {
            toxy(<span class="hljs-number">20</span>,i);
            <span class="hljs-function"><span class="hljs-title">printf</span>("%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",p-></span><span class="hljs-function"><span class="hljs-title">number</span>,p-></span><span class="hljs-function"><span class="hljs-title">name</span>,p-></span><span class="hljs-function"><span class="hljs-title">author</span>,p-></span><span class="hljs-function"><span class="hljs-title">type</span>,p-></span><span class="hljs-function"><span class="hljs-title">publish</span>,p-></span><span class="hljs-function"><span class="hljs-title">time</span>,p-></span><span class="hljs-function"><span class="hljs-title">price</span>,p-></span>num);
            i++;
        }
        <span class="hljs-function"><span class="hljs-title">p</span>=p-></span>next;
    }
    toxy(<span class="hljs-number">45</span>,i);
    printf(<span class="hljs-string">"按任意键返回!"</span>);
    getch();
    find_book();
}
 
void fuzzy_search()   <span class="hljs-comment">//模糊查询 </span>
{
    system(<span class="hljs-string">"cls"</span>);
    <span class="hljs-built_in">color</span>(<span class="hljs-number">8</span>);
    book head,p;
    int i=<span class="hljs-number">11</span>;
    head=ss();
    char information[<span class="hljs-number">10</span>];
    toxy(<span class="hljs-number">48</span>,<span class="hljs-number">8</span>);
    printf(<span class="hljs-string">"请输入您要查询图书的信息:"</span>);
    gets(information);
    toxy(<span class="hljs-number">48</span>,<span class="hljs-number">10</span>);
    printf(<span class="hljs-string">"正在查询...."</span>);
    Sleep(<span class="hljs-number">500</span>);
    p=head;
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">5</span>);
    printf(<span class="hljs-string">"***********************************************图书总览******************************************************"</span>);
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">8</span>);
    printf(<span class="hljs-string">"-------------------------------------------------------------------------------------------------------------"</span>);
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">9</span>);
    printf(<span class="hljs-string">"登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量"</span>);
    toxy(<span class="hljs-number">20</span>,<span class="hljs-number">10</span>);
    printf(<span class="hljs-string">"-------------------------------------------------------------------------------------------------------------"</span>);
    <span class="hljs-keyword">while</span>(p!=NULL)
    {
        <span class="hljs-function"><span class="hljs-title">if</span>(p!=NULL&&(strcmp(p-></span><span class="hljs-function"><span class="hljs-title">name</span>,information)==0||strcmp(p-></span><span class="hljs-function"><span class="hljs-title">author</span>,information)==0||strcmp(p-></span><span class="hljs-function"><span class="hljs-title">number</span>,information)==0||strcmp(p-></span>publish,information)==<span class="hljs-number">0</span>))
        {
            toxy(<span class="hljs-number">20</span>,i);
            <span class="hljs-function"><span class="hljs-title">printf</span>("%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",p-></span><span class="hljs-function"><span class="hljs-title">number</span>,p-></span><span class="hljs-function"><span class="hljs-title">name</span>,p-></span><span class="hljs-function"><span class="hljs-title">author</span>,p-></span><span class="hljs-function"><span class="hljs-title">type</span>,p-></span><span class="hljs-function"><span class="hljs-title">publish</span>,p-></span><span class="hljs-function"><span class="hljs-title">time</span>,p-></span><span class="hljs-function"><span class="hljs-title">price</span>,p-></span>num);
            i++;
        }
        <span class="hljs-function"><span class="hljs-title">p</span>=p-></span>next;
    }
    toxy(<span class="hljs-number">45</span>,i);
    printf(<span class="hljs-string">"按任意键返回!"</span>);
    getch();
    find_book();
}
 
void save_book(book p)   <span class="hljs-comment">//将p中内容写入文件 </span>
{
    FILE *fp;    <span class="hljs-comment">//文件指针 </span>
    fp=fopen(<span class="hljs-string">"mybook"</span>,<span class="hljs-string">"ab"</span>);   <span class="hljs-comment">//以追加的方式打开名字为mybook的二进制文件 </span>
    <span class="hljs-keyword">if</span>(fp==NULL)
    {
        printf(<span class="hljs-string">"cannot open file"</span>);
    }
    <span class="hljs-keyword">if</span>(fwrite(p,N,<span class="hljs-number">1</span>,fp)!=<span class="hljs-number">1</span>)   <span class="hljs-comment">//将p所指向的一段大小为N的内容存入fp所指向的文件中 </span>
    {
        printf(<span class="hljs-string">"write error"</span>);
    }
    fclose(fp);    <span class="hljs-comment">//关闭文件  </span>
 } 
 
void over()       <span class="hljs-comment">//退出软件 </span>
{
    char t;
    toxy(<span class="hljs-number">48</span>,<span class="hljs-number">11</span>);
    printf(<span class="hljs-string">"-----------------------"</span>);
    toxy(<span class="hljs-number">48</span>,<span class="hljs-number">12</span>);
    printf(<span class="hljs-string">"|   您确定要退出吗?  |"</span>);
    toxy(<span class="hljs-number">48</span>,<span class="hljs-number">14</span>);
    printf(<span class="hljs-string">"| 1.确定     2.取消   |"</span>);
    toxy(<span class="hljs-number">48</span>,<span class="hljs-number">15</span>);
    printf(<span class="hljs-string">"-----------------------"</span>);
    <span class="hljs-keyword">while</span>(<span class="hljs-number">1</span>)
    {
        t=getch();         <span class="hljs-comment">//输入t</span>
        switch(t)
        {
            case <span class="hljs-string">'1'</span>:
            system(<span class="hljs-string">"cls"</span>);
            <span class="hljs-built_in">color</span>(<span class="hljs-number">6</span>);
            toxy(<span class="hljs-number">48</span>,<span class="hljs-number">10</span>);
            printf(<span class="hljs-string">"正在安全退出...."</span>);
            Sleep(<span class="hljs-number">1000</span>);     <span class="hljs-comment">//暂停1秒 </span>
            system(<span class="hljs-string">"cls"</span>);
            <span class="hljs-built_in">color</span>(<span class="hljs-number">8</span>);
            toxy(<span class="hljs-number">48</span>,<span class="hljs-number">10</span>);
            printf(<span class="hljs-string">"已安全退出软件"</span>);
            toxy(<span class="hljs-number">48</span>,<span class="hljs-number">12</span>);
            printf(<span class="hljs-string">"谢谢使用!"</span>);
            toxy(<span class="hljs-number">48</span>,<span class="hljs-number">14</span>);
            printf(<span class="hljs-string">"by-by^_^"</span>);
            exit(<span class="hljs-number">0</span>);  break; <span class="hljs-comment">//终止程序 </span>
            case <span class="hljs-string">'2'</span>:
            menu(); break;   <span class="hljs-comment">//调用函数,进入菜单 </span>
            default :break;
        }
    }
} 
 
main()   <span class="hljs-comment">//简洁明了的主函数 </span>
{
    menu();<span class="hljs-comment">//菜单 </span>
}