1、#include #include #include #include #include #include #define Key_UP 72#define Key_DOWN 80#define Key_ENTER 28#define Key_N 49#define Key_Y 21#define LEN sizeof(struct linklist)typedef struct book1/*图书基本信息结构体*/char name20;char writer30;char type20;char num20;char time20;char press20;char edition20;c
2、har ISBN40;float price;int count;int lendnum;bbasic;/*图书资料基本信息:中图法分类号、图书编号、书名、作者(要考虑多个作者情况)、出版社、出版日期、ISBN、版次、定价、馆藏数、借阅数等。*/typedef struct book2/*图书采购信息结构体*/char name20;char writer20;char time15;int num;float price;float money;char bill 30;bpurchase;/*图书采购信息:书名、作者、采购日期、采购数量、采购单价、采购金额、发票号码、图书编号等。*/typ
3、edef struct book3/*图书借阅信息结构体*/*需要输入的信息*/char name20;char person20;char company20;char num20; /*借书证号*/char btime15;/*运算可得信息*/char rtime15;char fine20;blend;/*图书借阅信息:借阅人、借阅人所在单位、借书证号、所借书名、借阅日期、归还日期、逾期罚款等。借阅期限为一个月,逾期1天,罚款1角。*/struct linklistbbasic binfo;struct linklist *next;int key();void menu();void
4、_window();void words();void box(int,int,int,int);int _choose(int bot, int top);void play(int);int readsum();void add();void addbook();void addbuy();void addborrow();void manage();struct linklist* create();void modify();void delete();void insert();void search();void searchname();void searchwriter();v
5、oid orderw(bbasic binfo100);void orderw(bbasic binfo100);int halfn(int sum,bbasic binfo100,char *find);int halfw(int sum,bbasic binfo100,char *find);void sta();void blist();void bmoney();int main(void)menu();void menu()int y;_window();/*显示窗口*/words();/*显示菜单文字*/y = choose(7,19);/*光标*/play(y);/*根据键盘值操
6、作*/void _window()/*窗口初始化*/textbackground(BLUE);textcolor(WHITE);clrscr();box(1,1,24,80);void words()/*显示菜单文字*/textcolor(WHITE);gotoxy(30,7);textbackground(RED);cprintf(Add Book info);textbackground(BLUE);gotoxy(30,10);cprintf(Manage Book);gotoxy(30,13);cprintf(Search Book);gotoxy(30,16);cprintf(Book
7、 Statistic);gotoxy(30,19);cprintf(Exit);gotoxy(35,22);textcolor(LIGHTGRAY);textbackground(BLUE);cprintf( Main Menu );gotoxy(25, 2);textcolor(RED);highvideo();cprintf(The Library Managemnt Program);normvideo();void box(int x,int y, int high, int width)/*画方框*/int i;gotoxy(x,y);putchar(0xda);for (i = 1
8、 ; i width - 1; i+)putchar(0xc4);putchar(0xbf);gotoxy(x, y + high - 3);putchar(0xc0);gotoxy(width, y + high - 3);putchar(0xd9);for (i = 1; i high - 1; i+)gotoxy(x,y+i);putchar(0xb3);gotoxy(x + width -1, y+i);putchar(0xb3);gotoxy(x, y + high - 1);putchar(0xc0);for (i = 1 ; i width - 1; i+)putchar(0xc
9、4);gotoxy(x + 1, y + high - 3);for (i = 1; i bot)upbar(y);y = y - 3;break;case Key_DOWN:if (y top)downbar(y);y = y + 3;break;while(ky != Key_ENTER);return y;upbar(int y)/*光标上移*/int i;typedef struct texel_structunsigned char ch;unsigned char attr;texel;texel t;for(i=30;i=48;i+)gettext(i,y,i,y,&t);t.a
10、ttr=0x1f;puttext(i,y,i,y,&t);gettext(i,y-3,i,y-3,&t);t.attr=0x4f;puttext(i,y-3,i,y-3,&t);gotoxy(30,y-3);return;downbar(int y)/*光标下移*/int i;typedef struct texel_structunsigned char ch;unsigned char attr;texel;texel t;for(i=30;i=48;i+)gettext(i,y,i,y,&t);t.attr=0x1f;puttext(i,y,i,y,&t);gettext(i,y+3,i
11、,y+3,&t);t.attr=0x4f;puttext(i,y+3,i,y+3,&t);gotoxy(30,y+3);return;void play(int y) /*根据y的值选择操作*/switch(y)case 7:add();break;case 10:manage();break;case 13:search();break;case 16:sta();break;case 19:exit(1);default:printf(Error);exit(0);void add() /*显示 选择增加那种类型的信息 的窗口*/int y;_window();gotoxy(30,7);t
12、extbackground(RED);cprintf(Add Basic info);textbackground(BLUE);gotoxy(30,10);cprintf(Add Purchase info);gotoxy(30,13);cprintf(Add Borrow info);gotoxy(30,16);cprintf(Back);gotoxy(25, 2);textcolor(RED);highvideo();cprintf(The Library Managemnt Program);normvideo();gotoxy(35,22);textcolor(LIGHTGRAY);t
13、extbackground(BLUE);cprintf( Add Book );textbackground(BLUE);textcolor(WHITE);y=choose(7,16);switch(y)/*选择增加信息类型的函数*/case 7 :addbook();break;/*增加图书基本信息*/case 10:addbuy();break;/*增加图书购买信息*/case 13:addborrow();break;/*增加图书借阅信息*/case 16:menu();break;default:printf(Error);break;void addbook()/*增加图书基本信息*
14、/int ky, sum = 0;FILE *fp;bbasic binfo;textbackground(BLUE);textcolor(WHITE);clrscr();if(fp = fopen(e:sum.dat,rb) != NULL)/*读取图书基本信息数量sum*/fread(&sum,2,1,fp);fclose(fp);if (fp = fopen(e:addbook.dat,ab) = NULL)printf(cannot write the addbook.dat);doclrscr();gotoxy(2,2);cprintf(Please input the classf
15、ication of chinese library classification:);scanf(%s,&binfo.type);getchar();gotoxy(2,4);cprintf(Please input the books number:);scanf(%s,&binfo.num);getchar();gotoxy(2,6);cprintf(Please input the books name:);scanf(%s,&binfo.name);getchar();gotoxy(2,8);cprintf(Please input the books writer:);scanf(%
16、s,&binfo.writer);getchar();gotoxy(2,10);cprintf(Please input the the books press:);scanf(%s,&binfo.press);getchar();gotoxy(2,12);cprintf(Please input the books edition:);scanf(%s,&binfo.edition);getchar();gotoxy(2,14);cprintf(Please input the books publish time:);scanf(%s,&binfo.time);getchar();goto
17、xy(2,16);cprintf(Please input the price:);scanf(%f,&binfo.price);getchar();gotoxy(2,18);cprintf(Please input the ISBN of the book:);scanf(%s,&binfo.ISBN);getchar();gotoxy(2,20);cprintf(Please input the count of books:);scanf(%d,&binfo.count);getchar();gotoxy(2,22);cprintf(Please input the lend numbe
18、r of the book:);scanf(%d,&binfo.lendnum);getchar();gotoxy(10,25);cprintf(Press N(n) to finish add book or Press any key to add more book.);ky = key();sum+;if(fwrite(&binfo,sizeof(bbasic),1,fp) != 1)clrscr();printf(cannot save the data.);while(ky != Key_N);fclose(fp);if (fp = fopen(e:sum.dat,wb) = NU
19、LL)printf(cannot save the sum of the book.);getch();exit(0);if(fwrite(&sum,2,1,fp) != 1)printf(fail to write the sum.dat.);getch();exit(0);fclose(fp);menu();/* 中图法分类号、(要考虑多个作者情况)、出版社、出版日期、ISBN、版次、定价、馆藏数、借阅数等。 */void addbuy()/*增加图书购买信息*/int ky;FILE *fp;bpurchase pinfo;textbackground(BLUE);textcolor(W
20、HITE);clrscr();if(fp = fopen(e:addbuy.dat,ab) = NULL)printf(cannot open the addbuy data.);exit(0);doclrscr();gotoxy(2,2);cprintf(Please input the books name:);scanf(%s,&pinfo.name);gotoxy(2,4);cprintf(Please input the books writer:);scanf(%s,&pinfo.writer);gotoxy(2,6);cprintf(Please input the books
21、buy time:);scanf(%s,&pinfo.writer);gotoxy(2,8);cprintf(Please input the number of the book buy:);scanf(%d,&pinfo.num);gotoxy(2,10);cprintf(Please input the price:);scanf(%f,&pinfo.price);gotoxy(2,12);cprintf(Please input the real money of buy the book:);scanf(%f, &pinfo.money);gotoxy(2,14);cprintf(P
22、lease input the bill number:);scanf(%s, &pinfo.bill);gotoxy(10,20);cprintf(Press N(n) to finish add book or Press any key to add more book.);ky = key();if(fwrite(&pinfo,sizeof(pinfo),1,fp) != 1)clrscr();printf(cannot save the data.);while(ky != Key_N);fclose(fp);menu();void addborrow()/*增加图书借阅信息*/in
23、t ky;FILE *fp;blend linfo;textbackground(BLUE);textcolor(WHITE);clrscr();if(fp = fopen(e:addborrow.dat,ab) = NULL)printf(cannot open the addborrow data.);exit(0);doclrscr();gotoxy(2,2);cprintf(Please input the lend books name:);scanf(%s,&linfo.name);gotoxy(2,4);cprintf(Please input the borrowers nam
24、e:);scanf(%s,&linfo.person);gotoxy(2,6);cprintf(Please input the company of the borrower:);scanf(%s,&pany);gotoxy(2,8);cprintf(Please input the borrowers card:);scanf(%s, &linfo.num);gotoxy(2,10);cprintf(Please input the borrow time(ex.2010/01/26):);scanf(%s, &linfo.btime);gotoxy(2,12);cprintf(Pleas
25、e input the return time(ex.2010/05/08):);scanf(%s, &linfo.rtime);gotoxy(10,20);cprintf(Press N(n) to finish add book or Press any key to add more book.);ky = key();if(fwrite(&linfo,sizeof(linfo),1,fp) != 1)clrscr();printf(cannot save the data.);while(ky != Key_N);fclose(fp);menu();struct linklist* c
26、reate() /*创建链表*/int i, sum;struct linklist *head, *p1, *p2;FILE *fp;sum = readsum();p1 = (struct linklist*)malloc(LEN);head = p2 = p1;if (fp = fopen(e:addbook.dat,rb) = NULL)printf(cannot open the file.);for (i = 0; i next = p1;if(fread(&(p2 - binfo),sizeof(bbasic),1,fp) != 1)printf(cannot save the
27、data.);p2 - next = NULL;fclose(fp);return head;void modify()struct linklist* p,*head;char find30;int i,ky,sum;FILE *fp;p= head = create();sum = readsum();clrscr();printf(Plese input the name of the book you want to modify:);scanf(%s,find);for (i = 0;i binfo.name) = 0)gotoxy(2,2);cprintf(Please input
28、 the classfication of chinese library classification:);scanf(%s,&(p - binfo.type);getchar();gotoxy(2,4);cprintf(Please input the books number:);scanf(%s,&(p - binfo.num);getchar();gotoxy(2,6);cprintf(Please input the books name:);scanf(%s,&(p - binfo.name);getchar();gotoxy(2,8);cprintf(Please input
29、the books writer:);scanf(%s,&(p - binfo.writer);getchar();gotoxy(2,10);cprintf(Please input the the books press:);scanf(%s,&(p - binfo.press);getchar();gotoxy(2,12);cprintf(Please input the books edition:);scanf(%s,&(p - binfo.edition);getchar();gotoxy(2,14);cprintf(Please input the books publish ti
30、me:);scanf(%s,&(p - binfo.time);getchar();gotoxy(2,16);cprintf(Please input the price:);scanf(%f,&(p - binfo.price);getchar();gotoxy(2,18);cprintf(Please input the ISBN of the book:);scanf(%s,&(p - binfo.ISBN);getchar();gotoxy(2,20);cprintf(Please input the count of books:);scanf(%d,&(p - binfo.coun
31、t);getchar();gotoxy(2,22);cprintf(Please input the lend number of the book:);scanf(%d,&(p - binfo.lendnum);getchar();printf(Press Y to continue or Press anykey to back to menu.);ky = key();if(ky = Key_Y)p = head;i = -1;clrscr();printf(Plese input the name of the book you want to modify:);scanf(%s,fi
32、nd);elsep = head;if (fp = fopen(e:addbook.dat,wb) = NULL)printf(cannot open addbook.dat);for (i = 0;i binfo),sizeof(bbasic),1,fp) != 1)clrscr();printf(cannot save the data.);p = p - next;fclose(fp);menu();p = p - next;clrscr();printf(cannot find the book.);getch();void delete()struct linklist* p1,*p
33、2,*head;char find30;int i,ky,sum,flag = 0;FILE *fp;p1 = p2 = head = create();sum = readsum();clrscr();printf(Plese input the name of the book you want to Delete:);scanf(%s,find);if(strcmp(find,head - binfo.name) = 0)head = head -next;sum-;flag = 1;elsefor (i = 0;i next;if(strcmp(find,p1 - binfo.name
34、) = 0)p1 = p1 - next;p2 - next = p1;sum -;flag = 1;break;elsep2 = p2 - next;if (flag != 1)printf(cannot find the book.);getch();menu();p1 = head;if (fp = fopen(e:addbook.dat,wb) = NULL)printf(cannot open addbook.dat);for (i = 0;i binfo),sizeof(bbasic),1,fp) != 1)clrscr();printf(cannot save the data.
35、);p1 = p1 - next;fclose(fp);if(fp = fopen(e:sum.dat,wb) = NULL)printf(cannot open sum.dat);if(fwrite(&sum,2,1,fp) != 1)printf(fail to write the sum.dat.);getch();exit(0);fclose(fp);printf(succeed to delete the book.press anykey to get back to the mainmenu.);getch();void insert()struct linklist* p1,*
36、p2, *head, *temp;char find10;int i,ky,sum,flag = 0;FILE *fp;clrscr();sum = readsum();p1 = p2 = head = create();temp = (struct linklist*)malloc(LEN);printf(The number you want to insert behind:);scanf(%s,find);for(i = 0;inext;if(strcmp(find,p2 - binfo.num) = 0)p2 - next = temp;temp - next =p1;sum +;flag = 1;break;elsep2 = p2-next;if (flag != 1)printf(cannot find the book.);getch();menu();clrscr();gotoxy(2,2);cprintf(Please input the classfication of chinese library classification:);scanf(%s,&(temp - binfo