设计一个图书管理系统,完成图书管理的基本业务; 基本要求: 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>
}