10、图书管理系统
1、功能描述
新进图书基本信息的输入。
2. 图书基本信息的查询。
3. 对撤消图书信息的删除。
4. 为借书人办理注册。
5.办理借书手续(非注册会员不能借书)。
6.办理还书手续
信息描述:有关该系统基本信息的描述,如:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。
这个是大一的小学弟们这个学期的课程设计,以前的时候偷懒,课程设计是用的同学的程序,最近实习比较闲,就拿他们的要求来看了看,在网上找了个程序稍微改了下,嘿嘿,基本功能都实现了
编译环境:WIN-TC
使用方法:
用Alt+B 选择Book 菜单,用Alt+M选择Member 菜单,用Alt+H 选择Help 菜单
向上向下向左向右 方向键选择下拉菜单
借书等信息 需要先注册,在 Member菜单下(反应真慢,电脑怎么回事情,不写了)
下面是全部的代码;


/**//*13. book.c源程序*/
#include <dos.h>

/**//*#include <bios.h>*/
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include<graphics.h>
#include <math.h>
#include<time.h>


#define RIGHT 0x4d00 /*右*/
#define LEFT 0x4b00 /*左*/
#define DOWN 0x5000 /*下*/
#define UP 0x4800 /*上*/
#define SPACE 0x3920 /*空格*/
#define ESC 0x011b /* ESC键*/
#define ENTER 0x1c0d /*回车键*/
#define Backspace 0xe08 /*擦除键*/
#define ALT_B 12288 /*组合键ALT_B */
#define ALT_M 12800/*组合键ALT_M */
#define ALT_H 8960/*组合键ALT_H */


/**//*//定义变量 */

int key;/**//*按键变量*/

int textx,texty;/**//*光标坐标,x行,y列*/

struct menustruct/**//*菜单用的结构体*/

...{

char name[10];/**//*主菜单名*/

char str[10][20];/**//*选项*/

int n;/**//*选项数*/

}ml[3];/**//*使用了3个,可根据需要增删*/


typedef struct BookList/**//*书的结构体*/

...{

char num[20];/**//*图书编号*/

char name[20];/**//*书名*/

int price;/**//*书的价格*/

char person[20];/**//*借阅人*/

int yes;/**//*判断书是否存在或者已经借出,1存在,0借出*/
struct BookList *next;
}Book;


typedef struct MemberList/**//*会员的结构体*/

...{

char name[20];/**//*会员的姓名*/

char sex[6];/**//*会员的性别*/

int age;/**//*会员的年龄*/
struct MemberList *next;
}Member;

char save[4096];/**//*保存文本区域空间*/

/**//*char sav1[4096];*/

char c[4096];/**//*清屏专用空间*/

int i,j;/**//*常用变量*/


/**//*//函数声明部分 */

void Menu();/**//*初始化界面*/

void Selectitem();/**//*定义菜单*/

void DrawSelectitem();/**//*显示主菜单*/

void BlackText(int x,int y,char *z);/**//*选中菜单*/

void RedText(int x,int y,char *z);/**//*正常菜单*/

void Run();/**//*具体操作过程*/

void DrawMl(int n);/**//*显示下拉菜单*/

void MoveMl(int n,int x);/**//*菜单选项的控制*/

void Enter(int m,int n);/**//*菜单选项的具体功能*/

void BookAdd();/**//*添加图书*/

void BookConsult();/**//*图书查询*/

void BookDel();/**//*删除图书资料*/

void BookBorrow();/**//*借书*/

void BookReturn(); /**//*还书*/

void MemberAdd(); /**//*增加会员*/

void MemberConsult();/**//*查询会员*/

void MemberDel(); /**//*删除会员*/

void MemberBook(); /**//*查询会员借书信息*/

void Help(); /**//*帮助*/

void Ver(); /**//*版本信息*/

void ClrScr();/**//*自定义清屏函数*/

void DrawFrame(int left,int up,int right,int down,int textcolor,int backgroundcolor);/**//*画边框*/



/**//***主函数****/
void main(void)

...{

Menu();/**//*初始化界面*/

Run();/**//*具体操作过程*/
}



/**//*初始化界面*/
void Menu()

...{

system("cls"); /**//*调用系统的清屏命令*/

textbackground(BLUE);/**//*将背景设置为蓝色*/

window(1,1,25,80); /**//*左上角坐标为(1,1),右上角坐标为(25,80)*/
clrscr();

textx=3;/**//*光标初始化位置*/
texty=2;

gotoxy(1,2); /**//*定义光标位置*/

printf("%c",218);/**//*画左上角*/
for(i=0;i<78;i++)

printf("%c",196); /**//*画水平直线*/

printf("%c",191);/**//*画右上角*/
for(i=3;i<=23;i++)

...{
gotoxy(1,i);

printf("%c",179); /**//*画垂直线*/
gotoxy(80,i);
printf("%c",179);
}

printf("%c",192); /**//*画左下角*/
for(i=0;i<78;i++)
printf("%c",196);

printf("%c",217); /**//*画右下角*/
gotoxy(1,1);

textcolor(7); /**//*设置灰色*/
for(i=0;i<80;i++)

cprintf("%c",219);/**//*用符号实现画主菜单的灰色背景区*/

Selectitem(); /**//*调用选项函数*/

DrawSelectitem(); /**//*画选项*/

gettext(2,3,78,23,c); /**//*保存当前文本区域*/
}


/**//*定义菜单*/
void Selectitem()

...{

strcpy(ml[0].name,"Book");/**//*下面的具体选项补空格是为了各菜单黑色背景相同*/

strcpy(ml[0].str[0],"Add ");/**//*添加图书*/

strcpy(ml[0].str[1],"Consult ");/**//*查询图书*/

strcpy(ml[0].str[2],"Del ");/**//*删除图书资料*/

strcpy(ml[0].str[3],"Borrow ");/**//*借书*/

strcpy(ml[0].str[4],"Return ");/**//*还书*/

strcpy(ml[0].str[5],"Exit ");/**//*退出系统*/

ml[0].n=6; /**//*保存菜单的项数*/
strcpy(ml[1].name,"Member");

strcpy(ml[1].str[0],"Add ");/**//*添加新会员*/

strcpy(ml[1].str[1],"Consult ");/**//*查询会员资料*/

strcpy(ml[1].str[2],"Del ");/**//*删除会员资料*/
strcpy(ml[1].str[3],"Member&book ");
ml[1].n=4;

strcpy(ml[2].name,"Help");/**//*系统帮助*/
strcpy(ml[2].str[0],"This System ");
strcpy(ml[2].str[1],"Ver ");
ml[2].n=2;
}


/**//*显示主单名*/
void DrawSelectitem()

...{
for(i=0;i<3;i++)

RedText(i,1,ml[i].name); /**//*显示主菜单名,且首字母为红色*/
}


/**//*正常显示菜单*/
void RedText(int x,int y,char *z)

...{

textbackground(7); /**//*设置背景颜色为浅灰色*/
gotoxy(3+x*20,y);
for(j=0;z[j];j++)

...{
if(j==0)

textcolor(RED);/**//*第一个字母显示红色*/
else

textcolor(BLACK); /**//*设置黑色*/

cprintf("%c",z[j]); /**//*输出菜单名*/
}
}



/**//*显示选中菜单*/
void BlackText(int x,int y,char *z)

...{

textbackground(0); /**//*设置背景颜色为黑色*/

textcolor(15); /**//*设置文本颜色为白色*/

gotoxy(3+20*x,y);/**//*定位坐标*/

cputs(z); /**//*输出菜单名字符串*/
}


/**//*按键操作过程*/
void Run()

...{
while(1)

...{
gotoxy(texty,textx);

key=bioskey(0);/**//*接收按键*/

/**//* /* function 1 returns 0 until a key is pressed */
while (bioskey(1) == 0);

/**//* function 0 returns the key that is waiting */
key = bioskey(0); */

switch(key)

...{
case ALT_B:

case ESC: DrawMl(0);break; /**//*显示下拉菜单1*/

case ALT_M: DrawMl(1);break;/**//*显示下拉菜单2*/

case ALT_H: DrawMl(2);/**//*显示下拉菜单3*/

case UP: /**//*上光标键的操作控制*/

...{
if(textx==3)
textx=23;
textx--;
gotoxy(texty,textx);
}break;

case DOWN: /**//*下光标键的操作控制*/

...{
if(textx==23)
textx=3;
textx++;
gotoxy(texty,textx);
}break;

case LEFT: /**//*左光标键的操作控制*/

...{
if(texty==2)
texty=79;
texty--;
gotoxy(texty,textx);
}break;

case Backspace: /**//*擦除键的设置*/

...{
if(texty==2&&textx==3)
continue;
else

...{
if(texty!=2)

texty--; /**//*擦除键的细节问题,先擦去东西,然后光标还要往后退一格*/
else
if(texty==2)

...{
texty=78;
textx--;
}
gotoxy(texty,textx);
printf(" ");
gotoxy(texty,textx);
}

}break;/**//*end case 0xe08*/

case RIGHT: /**//*右光标键的操作控制*/

...{
if(texty==79)
texty=2;
texty++;
gotoxy(texty,textx);
}break;

case SPACE: /**//*空格键的操作*/

...{
if(texty==79)
continue;
else

...{

gotoxy(texty,textx); /**//*空格的细节操作*/
printf(" ");
texty++;
gotoxy(texty,textx);
}
}break;

case ENTER: /**//*回车的控制操作*/

...{
if(textx==23)
continue;
textx++;
texty=2;
gotoxy(texty,textx);
}break;

default : /**//*非控制键的结果*/

...{

if(texty==79&&textx==23)/**//*到达最后就不再输出*/
continue;
else

if(texty==79&&textx!=23) /**//*到行的最后*/

...{
textx++;
texty=2;
}

gotoxy(texty,textx);/**//*输出结果*/
printf("%c",key);

if(texty==79) /**//*如果texty==79就不执行*/
continue;

else /**//*如果没到行尾就继续执行,使光标向前移动一位*/
texty++;
}
}

}/**//*大循环的大括号*/
}


/**//*画边框函数*/
void DrawFrame(int l,int u,int r,int d,int tcolor,int bcolor)

...{

textbackground(bcolor); /**//*背景颜色*/

textcolor(bcolor); /**//*文本颜色*/

for(i=l;i<=r;i++) /**//*输出背景区域*/

...{
for(j=u;j<=d;j++)

...{
gotoxy(i,j);

printf("%c",219); /**//*输出背景字符*/
}
}

textcolor(tcolor);/**//*边框颜色*/

for(i=u+1;i<d;i++) /**//*在背景区域内输出边框线*/

...{
gotoxy(l,i);

cprintf("%c",179); /**//*垂直线*/
gotoxy(r,i);
cprintf("%c",179);
}
for(i=l+1;i<r;i++)

...{
gotoxy(i,u);

cprintf("%c",196); /**//*水平线*/
gotoxy(i,d);
cprintf("%c",196);
}
gotoxy(l,u);

cprintf("%c",218);/**//*左上角*/
gotoxy(r,u);

cprintf("%c",191);/**//*右上角*/
gotoxy(l,d);

cprintf("%c",192);/**//*左下角*/
gotoxy(r,d);

cprintf("%c",217); /**//*右下角*/

/**//* gettext(l+1,u+1,r-1,d-1,save1);*//**//*保存边框内区域*/
}



/**//*显示具体下拉选择项目*/
void DrawMl(int n)

...{

gettext(1,1,80,25,save);/**//*保存被掩盖的地方*/

BlackText(n,1,ml[n].name);/**//*反选显示主菜单*/

DrawFrame(3+20*n-1,2,3+20*n+19,3+ml[n].n,0,7);/**//*下拉菜单的边框*/

for(i=3;i<3+ml[n].n;i++)/**//*输出所选菜单各选项*/

...{
if(i==3)

BlackText(n,i,ml[n].str[i-3]);/**//*默认选中第一项*/
else

RedText(n,i,ml[n].str[i-3]);/**//*其余各项首字符红色显示*/
}
gotoxy(79,1);

MoveMl(n,3);/**//*菜单选项的控制*/
}



/**//*菜单选项的控制,n决定水平项,x决定下拉的选项*/
void MoveMl(int n,int x)

...{
int flag=1;
while(flag)

...{
gotoxy(79,1);

key=bioskey(0);/**//*接收按键*/
gotoxy(79,1);
switch(key)

...{

case ESC:/**//*退出循环*/

puttext(1,1,80,25,save);/**//*恢复打开菜单前的样子*/
flag=0;
break;

case LEFT:/**//*移到左边的选项*/

puttext(1,1,80,25,save);/**//*恢复打开菜单前的样子*/

if(n==0)/**//*往左移动越界的话移到最后一个选项*/
DrawMl(2);
else
DrawMl(n-1);
flag=0;
break;

case RIGHT:/**//*移动右边的选项*/

puttext(1,1,80,25,save);/**//*恢复打开菜单前的样子*/

if(n==2)/**//*往右移动越界的话移到第一个选项*/
DrawMl(0);
else
DrawMl(n+1);
flag=0;
break;

case UP:/**//*具体选项往上移动*/

RedText(n,x,ml[n].str[x-3]);/**//*输出红色字体*/

if(x==3)/**//*移到最上面再按上键,就移到最下面*/
x=3+ml[n].n-1;
else

x--;/**//*移动到新的要显示的内容*/

BlackText(n,x,ml[n].str[x-3]);/**//*输出黑色字体*/
flag=1;
break;

case DOWN:/**//*具体选项往下移动*/
RedText(n,x,ml[n].str[x-3]);

if(x==(3+ml[n].n-1))/**//*移动到最底下再按下键就移到最上面*/
x=3;
else

x++;/**//*移动到新的要显示的内容*/
BlackText(n,x,ml[n].str[x-3]);
flag=1;
break;
case ENTER:

puttext(1,1,80,25,save);/**//*恢复打开菜单前的样子*/

Enter(n,x-3);/**//*菜单选项的具体功能*/
flag=0;
break;
}
gotoxy(79,1);
}
}



/**//*菜单选项的具体功能*/
void Enter(int m,int n)

...{
switch(m)

...{

case 0:switch(n) /**//*选择了图书菜单选项*/

...{

case 0:BookAdd();break;/**//*添加图书*/

case 1:BookConsult();break;/**//*图书查询*/

case 2:BookDel();break;/**//*删除一本图书资料*/

case 3:BookBorrow();break;/**//*借书*/

case 4:BookReturn();break;/**//*还书*/
case 5:exit(0);break;

} break;/**//*退出系统*/

case 1: switch(n) /**//*选择了会员菜单选项*/

...{

case 0: MemberAdd();break;/**//*添加会员*/

case 1: MemberConsult();break;/**//*会员查询*/

case 2:MemberDel();break;/**//*删除一个会员资料*/

case 3:MemberBook();/**//*查询某个会员所借图书情况*/
}break;

case 2:switch(n) /**//*选择了帮助菜单选项*/

...{
case 0:Help();break;
case 1:Ver();
}
}
}




/**//*12. bookfunction.c源程序*/


/**//*添加图书*/

/**//*#include "F:cc++ study新建文件夹 (2)c13_book.c" */

void BookAdd()

...{
FILE *fp;
Book consultbook;

fp=fopen("book.txt","rb");/**//*读方式打开文件*/
if(fp==NULL)

fp=fopen("book.txt","wb"); /**//*写方式打开文件*/

else/**//*如果有书就添加*/

...{
fclose(fp);

fp=fopen("book.txt","ab");/**//*追加方式打开文件*/
}

ClrScr();/**//*清屏*/

printf("Intput new book num: ");/**//*逐个输入新图书的资料*/
gets(consultbook.num);
gotoxy(2,4);
printf("Input new book name: ");
gets(consultbook.name);
gotoxy(2,5);
printf("Please input new book's price: ");
scanf("%d%*c",&consultbook.price);
strcpy(consultbook.person,"");

consultbook.yes=1;/**//*表示书存在未借出*/
consultbook.next=NULL;

fwrite(&consultbook,sizeof(Book),1,fp);/**//*块写*/

fclose(fp); /**//*关闭文件*/
ClrScr();
}


/**//*图书查询*/
void BookConsult()

...{
FILE *fp;
Book consultbook;

char bookname[20]; /**//*书名*/
int flag=0,i=0;
ClrScr();
gotoxy(2,3);
printf("Input the book name: ");

gets(bookname); /**//*输入要查询的图书名*/
fp=fopen("book.txt","rb");

if(fp==NULL)/**//*没找到文件*/

...{
ClrScr();
gotoxy(2,3);
printf("Error!");
fclose(fp);
return;
}
else

while(!feof(fp))/**//*查询图书资料*/

...{
fread(&consultbook,sizeof(Book),1,fp);

if(strcmp(consultbook.name,bookname)==0)/**//*如果查找到*/

...{
ClrScr();
gotoxy(2,3+i*5);
printf("This book %s information as follow:",consultbook.name);
gotoxy(2,4+i*5);
printf("This book num is %s",consultbook.num);
gotoxy(2,5+i*5);
printf("This book's price is %d",consultbook.price);
gotoxy(2,6+i*5);
printf("This book's is browwed by %s",consultbook.person);
gotoxy(2,7+i*5);
printf("This book's state is %d",consultbook.yes);
i++;

flag=1; /**//*查找数据标志*/
}
}
if(flag==0)

...{
ClrScr();
gotoxy(2,3);
printf("No found this book");
}
fclose(fp);
}



/**//*删除图书资料*/
void BookDel()

...{
FILE *fp;
Book *head,*p,*q;
char bookname[20];

fp=fopen("book.txt","rb");/**//*读方式打开文件*/

if(fp==NULL)/**//*没找到文件*/

...{
gotoxy(2,3);
printf("Error!");
fclose(fp);
return;
}

head=p=q=(Book*)malloc(sizeof(Book));/**//*将文件内容放入链表*/

fread(p,sizeof(Book),1,fp); /**//*读第一条记录*/
while(!feof(fp))

...{
q=p;
p=(Book*)malloc(sizeof(Book));

fread(p,sizeof(Book),1,fp); /**//*读记录*/

q->next=p;/**//*新记录插入到链表的尾*/
}

p->next=NULL;/**//*最后一个结点的后继为空*/
fclose(fp);
ClrScr();
printf("Input the book name: ");

gets(bookname); /**//*输入图书名*/
p=head;

while(p!=NULL)/**//*按名字查找要删除的图书*/

...{

if(strcmp(p->name,bookname)==0)/**//*找到要删除的图书*/

...{

if(p==head) /**//*如果是第一个结点*/
head=head->next;
else

q->next=p->next;/**//*不是第一个结点*/
break;
}

q=p; /**//*指针后移*/
p=p->next;
}

fp=fopen("book.txt","wb");/**//*删除后从链表的头开始重新保存*/
while(head!=NULL)

...{

fwrite(head,sizeof(Book),1,fp);/**//*块写*/
head=head->next;
}
fclose(fp);
ClrScr();
}


/**//*借书*/
void BookBorrow()

...{
FILE *fp;
Book consultbook;
Member consultmember;
char bookname[20],membername[20];
int flag=0,mflag=0;
ClrScr();
gotoxy(2,3);
printf("Input the mermber name: ");

gets(membername); /**//*输入会员名*/

if((fp=fopen("member.txt","rb"))==NULL)/**//*没找到文件*/

...{
gotoxy(3,3);
printf("Cannot open file !");
return;
}
else

while(!feof(fp))/**//*查询会员资料*/

...{
fread(&consultmember,sizeof(Member),1,fp);
if(strcmp(consultmember.name,membername)==0)

...{

mflag=1; /**//*是会员标志*/
break;
}
}
fclose(fp);
if(mflag==0)

...{
gotoxy(2,4);

printf("You not is a member,pleas register!");/**//*不是会员不能借书*/
return;
}
gotoxy(3,5);
printf("Input the book name: ");

gets(bookname); /**//*输入图书名*/
ClrScr();

if((fp=fopen("book.txt","rb+"))==NULL)/**//*没找到文件*/

...{
gotoxy(2,3);
printf("Cannot open file !");
return;
}

while(!feof(fp))/**//*查询图书资料*/

...{
fread(&consultbook,sizeof(Book),1,fp);
if(strcmp(consultbook.name,bookname)==0)

...{

if(consultbook.yes==0)/**//*图书已经借出的判断*/

...{
gotoxy(2,3);
printf("This book has borrowed !");
break;
}
else

...{

consultbook.yes=0; /**//*作借出标志*/

strcpy(consultbook.person,membername);/**//*登记借书会员*/

fseek(fp,-1L*sizeof(Book),1);/**//*从当前位置前移一条记录指针*/

fwrite(&consultbook,sizeof(Book),1,fp);/**//*写记录*/
gotoxy(2,3);
printf("Borrowed succ!");

flag=1;/**//*借出书标志*/
break;
}
}
}
if(flag!=1)

...{
ClrScr();
gotoxy(2,3);

printf("Borrowed fail! ");/**//*借书失败*/
}
fclose(fp);
}


/**//*还书*/
void BookReturn()

...{
FILE *fp;
Book consultbook;
char bookname[20];
int flag=0;
ClrScr();

if((fp=fopen("book.txt","rb+"))==NULL)/**//*没找到文件*/

...{
gotoxy(2,3);
printf("cannot open file !");
return;
}
printf("Input the book name: ");

gets(bookname); /**//*输入图书名*/
ClrScr();

while(!feof(fp))/**//*查询图书资料*/

...{
fread(&consultbook,sizeof(Book),1,fp);
if(strcmp(consultbook.name,bookname)==0)

...{

if(consultbook.yes==0)/**//*图书已经借出的判断*/

...{

consultbook.yes=1;/**//*作图书未借书标志,表示已还书*/
strcpy(consultbook.person,"");
fseek(fp,-1L*sizeof(Book),1);
fwrite(&consultbook,sizeof(Book),1,fp);
gotoxy(2,3);
printf("Return book succ!");
flag=1;
break;
}
}
}
if(flag!=1)
printf("Return fail! ");
fclose(fp);
}


/**//*清除屏幕*/
void ClrScr()

...{
int i,j;

puttext(2,3,78,23,c);/**//*刚开始已经用gettext把蓝色的一块地方保存下来,现在再还原*/
gotoxy(2,3);
}


/**//*会员注册*/
void MemberAdd()

...{
FILE *fp;
Member consultmember;
fp=fopen("member.txt","rb");

if(fp==NULL)/**//*如果没会员就新建*/
fp=fopen("member.txt","wb");

else/**//*如果有会员就添加*/

...{
fclose(fp);

fp=fopen("member.txt","ab");/**//*追加方式打开*/
}
ClrScr();
gotoxy(2,3);

printf("Intput new member name: ");/**//*逐个输入会员的资料*/
gets(consultmember.name);
gotoxy(2,4);
printf("Input member sex: ");
gets(consultmember.sex);
gotoxy(2,5);
printf("Please input member age: ");
scanf("%d%*c",&consultmember.age);

fwrite(&consultmember,sizeof(Member),1,fp);/**//*写入记录*/
fclose(fp);
ClrScr();
}


/**//*查询会员*/
void MemberConsult()

...{
FILE *fp;
Member consultmember;
char membername[20];
int flag=0;
ClrScr();
gotoxy(2,3);

printf("Input the member name: ");/**//*输入要查询的会员名*/
gets(membername);
fp=fopen("member.txt","rb");

if(fp==NULL)/**//*没找到文件*/

...{
ClrScr();
gotoxy(2,3);
printf("Error!");
fclose(fp);
return;
}

while(!feof(fp))/**//*查询会员资料*/

...{
fread(&consultmember,sizeof(Member),1,fp);

if(strcmp(consultmember.name,membername)==0)/**//*比较*/

...{
ClrScr();
gotoxy(2,3);
printf("This member %s information as follow:",consultmember.name);
gotoxy(2,4);
printf("This member'sex is %s",consultmember.sex);
gotoxy(2,5);
printf("This member 's age is %d",consultmember.age);
flag=1;
break;
}
}
if(flag==0)

...{
ClrScr();
gotoxy(2,3);
printf("No found this member!");
}
fclose(fp);
}


/**//*删除会员资料*/
void MemberDel()

...{
FILE *fp;
Member *head,*p,*q;
char membername[20];
fp=fopen("member.txt","rb");

if(fp==NULL)/**//*没找到文件*/

...{
gotoxy(2,3);
printf("Error!");
fclose(fp);
return;
}

head=p=q=(Member*)malloc(sizeof(Member));/**//*将文件内容放入链表*/
fread(p,sizeof(Member),1,fp);
while(!feof(fp))

...{
q=p;
p=(Member*)malloc(sizeof(Member));

fread(p,sizeof(Member),1,fp);/**//*读记录*/

q->next=p;/**//*链入到链表的尾部*/
}
p->next=NULL;
fclose(fp);
ClrScr();

printf("Input the member name: ");/**//*输入会员名*/
gets(membername);
p=head;

while(p!=NULL)/**//*按名字查找要删除的书*/

...{

if(strcmp(p->name,membername)==0)/**//*查找会员*/

...{
if(p==head)

head=head->next;/**//*如果是第一条记录*/
else

q->next=p->next;/**//*不是第一条记录*/
break;
}

q=p; /**//*没找到,则指针后移继续找*/
p=p->next;
}

fp=fopen("member.txt","wb");/**//*删除后重新保存*/
while(head!=NULL)

...{

fwrite(head,sizeof(Member),1,fp);/**//*块写*/
head=head->next;
}
fclose(fp);
ClrScr();
}


/**//*查询会员所借的图书*/
void MemberBook()

...{
FILE *fp;
Book consultbook;
Member consultmember;
char bookname[20],membername[20];
int flag=0,mflag=0,i=0;
ClrScr();
gotoxy(2,3);

printf("Input the mermber name: ");/**//*输入会员名*/
gets(membername);

if((fp=fopen("member.txt","rb"))==NULL)/**//*没找到文件*/

...{
gotoxy(3,3);
printf("Cannot open file !");
return;
}
else

while(!feof(fp))/**//*查询会员资料,确认会员*/

...{
fread(&consultmember,sizeof(Member),1,fp);
if(strcmp(consultmember.name,membername)==0)

...{
mflag=1;
break;
}
}
fclose(fp);
if(mflag==0)

...{
gotoxy(2,4);
printf("Not the member!");
return;
}
ClrScr();

if((fp=fopen("book.txt","rb+"))==NULL)/**//*没找到文件*/

...{
gotoxy(2,3);
printf("Cannot open file !");
return;
}

while(!feof(fp))/**//*查询图书资料*/

...{
fread(&consultbook,sizeof(Book),1,fp);
gotoxy(2,3);
printf("This member %s has borrowed book as follow:",membername);
gotoxy(2,4);
printf("********************************************");

if(strcmp(consultbook.person,membername)==0)/**//*借阅人比较*/

...{
gotoxy(2,5+i*4);
printf("Book name is %s",consultbook.name);
gotoxy(2,6+i*4);
printf("This book num is %s",consultbook.num);
gotoxy(2,7+i*4);
printf("This book's price is %d",consultbook.price);
printf(" ");
i++;
flag=1;
}
}
if(flag!=1)

...{
ClrScr();
gotoxy(2,3);
printf("no Borrow book! ");
}
else

...{
gotoxy(2,i*4+6);

printf("******total is %d*********",i);/**//*显示总数*/
}
fclose(fp);
}


/**//*帮助文件*/
void Help()

...{
ClrScr();

DrawFrame(10,5,50,8,0,7); /**//*画边框*/
gotoxy(15,6);

cprintf("click menu to run each funtion");/**//*输出字符串*/
getch();
ClrScr();
}

/**//***版本信息***/
void Ver()

...{
ClrScr();

DrawFrame(10,5,50,8,0,7); /**//*画边框*/
gotoxy(15,6);

cprintf("Ver 1.0 finished by zhuyun");/**//*输出字符串*/
getch();
ClrScr();
}
