c语言图书管理标准系统 .docx
精品名师归纳总结#include <stdio.h> #include <dos.h> #include <conio.h> #include <stdlib.h> #include <stdio.h> #include <string.h>#define Key_UP72#define Key_DOWN80#define Key_ENTER 28#define Key_N49#define Key_Y21#define LENsizeofstruct linklisttypedef struct book1/* 图书基本信息结构体 */char name20。char writer30 。char type20 。char num20 。char time20 。char press20。char edition20 。char 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。/*图书选购信息:书名、作者、选购日期、选购数量、选购单价、选购金额、发票号码、图书编号等。*/typedef 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 _window 。void words 。void boxint,int,int,int。 int _chooseint bot, int top 。void playint 。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 。void orderwbbasic binfo100。void orderwbbasic binfo100。int halfnint sum,bbasic binfo100,char *find。int halfwint sum,bbasic binfo100,char *find。void sta 。void blist 。void bmoney 。int mainvoidmenu。void menuint y 。_window 。words 。/* 显示窗口 */* 显示菜单文字 */y = choose7,19。/* 光标 */playy 。/* 依据键盘值操作 */void _window/* 窗口初始化 */textbackgroundBLUE textcolorWHITE 。clrscr 。box1,1,24,80 。可编辑资料 - - - 欢迎下载精品名师归纳总结void words/* 显示菜单文字 */textcolorWHITE 。gotoxy30,7 。textbackgroundRED 。cprintf"Add Book info"。textbackgroundBLUE 。gotoxy30,10 。cprintf"Manage Book"。gotoxy30,13 。cprintf"Search Book" 。gotoxy30,16 。cprintf"Book Statistic"。gotoxy30,19 。cprintf"Exit"。gotoxy35,22 。textcolorLIGHTGRAY。textbackgroundBLUE 。cprintf" Main Menu "。gotoxy25, 2 。textcolorRED 。highvideo 。cprintf"The Library Managemnt Program"。normvideo 。void boxint x,int y, int high, int width/* 画方框 */int i 。gotoxyx,y 。putchar0xda 。for i = 1。 i < width - 1 。 i+putchar0xc4 。putchar0xbf 。gotoxyx, y + high - 3 。putchar0xc0 。gotoxywidth, y + high - 3。putchar0xd9 。for i = 1 。 i < high - 1 。 i+gotoxyx,y+i 。putchar0xb3 。可编辑资料 - - - 欢迎下载精品名师归纳总结gotoxyx + width -1, y+i。putchar0xb3 。gotoxyx, y + high - 1 。putchar0xc0 。for i = 1。 i < width - 1 。 i+putchar0xc4 。gotoxyx + 1, y + high - 3 。for i = 1 。 i < width - 1 。 i+putchar0xc4 。gotoxyx + width-1 ,y + high -1。putchar0xd9 。int key/* 读键盘 */union REGS rg 。rg.h.ah = 0。int860x16, &rg, &rg。return rg.h.ah。int chooseint bot,int top/* 依据 Y 的值选择操作 */int ky,y = 7 。gotoxy30,bot 。doky = key 。switchkycase Key_UP:if y > botupbary 。y = y - 3 。 。break。可编辑资料 - - - 欢迎下载精品名师归纳总结case Key_DOWN:if y < topdownbary 。y = y + 3 。 。break。whileky .= Key_ENTER。return y。upbarint y/* 光标上移 */int i 。typedef struct texel_structunsigned char ch。unsigned char attr。texel 。texel t。fori=30 。 i<=48 。i+gettexti,y,i,y,&t 。t.attr=0x1f 。puttexti,y,i,y,&t 。gettexti,y-3,i,y-3,&t。t.attr=0x4f 。puttexti,y-3,i,y-3,&t。 。gotoxy30,y-3 。return。downbarint y/* 光标下移 */int i 。typedef struct texel_structunsigned char ch。unsigned char attr。texel 。texel t。可编辑资料 - - - 欢迎下载精品名师归纳总结fori=30 。 i<=48 。i+gettexti,y,i,y,&t 。t.attr=0x1f 。puttexti,y,i,y,&t 。gettexti,y+3,i,y+3,&t。t.attr=0x4f 。puttexti,y+3,i,y+3,&t。 。gotoxy30,y+3 。return。void playint y/* 依据 y 的值选择操作 */switchycase7:add。break。case 10:manage。break。case 13:search。break。case 16:sta。break。case 19:exit1 。default:printf"Error"。exit0 。void add/* 显示 " 选择增加那种类型的信息" 的窗口 */int y 。_window 。gotoxy30,7 。textbackgroundRED 。cprintf"Add Basic info"。textbackgroundBLUE 。gotoxy30,10 。cprintf"Add Purchase info"。gotoxy30,13 。cprintf"Add Borrow info"。gotoxy30,16 。可编辑资料 - - - 欢迎下载精品名师归纳总结cprintf"Back" 。gotoxy25, 2 。textcolorRED 。highvideo 。cprintf"The Library Managemnt Program"。normvideo 。gotoxy35,22 。textcolorLIGHTGRAY。textbackgroundBLUE 。cprintf" Add Book "。textbackgroundBLUE 。textcolorWHITE 。y=choose7,16 。switchy/* 选择增加信息类型的函数*/case 7 :addbook。break。/* 增加图书基本信息*/ case 10:addbuy。break。/* 增加图书购买信息 */case 13:addborrow 。break。/* 增加图书借阅信息 */ case 16:menu。break。default:printf"Error"。break。void addbook/* 增加图书基本信息*/int ky, sum = 0 。FILE *fp 。bbasic binfo 。textbackgroundBLUE 。textcolorWHITE 。clrscr 。iffp = fopen"e:sum.dat","rb" .= NULL/* 读取图书基本信息数量sum*/fread&sum,2,1,fp 。fclosefp 。if fp = fopen"e:addbook.dat","ab" = NULLprintf"cannot write the addbook.dat"。可编辑资料 - - - 欢迎下载精品名师归纳总结doclrscr 。gotoxy2,2 。cprintf"Please input the classfication of chinese library classification:"。scanf"%s",&binfo.type。getchar。gotoxy2,4 。cprintf"Please input the book's number:" 。scanf"%s",&binfo.num。getchar。gotoxy2,6 。cprintf"Please input the book's name:" 。scanf"%s",&binfo.name 。getchar。gotoxy2,8 。cprintf"Please input the book's writer:"。scanf"%s",&binfo.writer。getchar。gotoxy2,10 。cprintf"Please input the the book's press:" 。scanf"%s",&binfo.press 。getchar。gotoxy2,12 。cprintf"Please input the book's edition:"。scanf"%s",&binfo.edition。getchar。gotoxy2,14 。cprintf"Please input the book's publish time:"。scanf"%s",&binfo.time。getchar。gotoxy2,16 。cprintf"Please input the price:" 。scanf"%f",&binfo.price。getchar。gotoxy2,18 。cprintf"Please input the ISBN of the book:"。scanf"%s",&binfo.ISBN。getchar。gotoxy2,20 。cprintf"Please input the count of books:"。scanf"%d",&binfo.count。getchar。可编辑资料 - - - 欢迎下载精品名师归纳总结gotoxy2,22 。cprintf"Please input the lend number of the book:"。scanf"%d",&binfo.lendnum。getchar。gotoxy10,25 。cprintf"Press Nn to finish add book or Press any key to add more book."。ky = key 。sum+。iffwrite&binfo,sizeofbbasic,1,fp .= 1clrscr 。printf"cannot save the data." 。whileky .= Key_N。fclosefp 。if fp = fopen"e:sum.dat","wb" = NULLprintf"cannot save the sum of the book." 。getch。exit0 。iffwrite&sum,2,1,fp .= 1printf"fail to write the sum.dat."。getch。exit0 。 。fclosefp 。menu。/*中图法分类号、 (要考虑多个作者情形) 、出版社、出版日期、ISBN 、版次、定价、馆藏数、借阅数等。*/void addbuy/* 增加图书购买信息 */int ky 。FILE *fp 。bpurchase pinfo。textbackgroundBLUE 。textcolorWHITE 。clrscr 。可编辑资料 - - - 欢迎下载精品名师归纳总结iffp = fopen"e:addbuy.dat","ab" = NULLprintf"cannot open the addbuy data." 。exit0 。doclrscr 。gotoxy2,2 。cprintf"Please input the book's name:" 。scanf"%s",&pinfo.name 。gotoxy2,4 。cprintf"Please input the book's writer:"。scanf"%s",&pinfo.writer。gotoxy2,6 。cprintf"Please input the book's buy time:"。scanf"%s",&pinfo.writer。gotoxy2,8 。cprintf"Please input the number of the book buy:"。scanf"%d",&pinfo.num。gotoxy2,10 。cprintf"Please input the price:" 。scanf"%f",&pinfo.price。gotoxy2,12 。cprintf"Please input the real money of buy the book:"。scanf"%f", &pinfo.money。gotoxy2,14 。cprintf"Please input the bill number:"。scanf"%s", &pinfo.bill。 gotoxy10,20 。cprintf"Press Nn to finish add book or Press any key to add more book."。ky = key 。iffwrite&pinfo,sizeofpinfo,1,fp .= 1clrscr 。printf"cannot save the data." 。whileky .= Key_N。fclosefp 。menu。可编辑资料 - - - 欢迎下载精品名师归纳总结void addborrow/* 增加图书借阅信息 */int ky 。FILE *fp 。blend linfo 。textbackgroundBLUE 。textcolorWHITE 。clrscr 。iffp = fopen"e:addborrow.dat","ab" = NULLprintf"cannot open the addborrow data." 。exit0 。doclrscr 。gotoxy2,2 。cprintf"Please input the lend book's name:" 。scanf"%s",&linfo.name 。gotoxy2,4 。cprintf"Please input the borrower's name:" 。scanf"%s",&linfo.person 。gotoxy2,6 。cprintf"Please input the company of the borrower:"。scanf"%s",&pany。gotoxy2,8 。cprintf"Please input the borrower's card:" 。scanf"%s", &linfo.num。gotoxy2,10 。cprintf"Please input the borrow timeex.2021/01/26:"。scanf"%s", &linfo.btime。gotoxy2,12 。cprintf"Please input the return timeex.2021/05/08:"。scanf"%s", &linfo.rtime。gotoxy10,20 。cprintf"Press Nn to finish add book or Press any key to add more book."。ky = key 。iffwrite&linfo,sizeoflinfo,1,fp .= 1可编辑资料 - - - 欢迎下载精品名师归纳总结clrscr 。printf"cannot save the data." 。whileky .= Key_N。fclosefp 。menu。struct linklist* create/* 创建链表 */int i, sum 。struct linklist *head, *p1, *p2。FILE *fp 。sum = readsum。p1 = struct linklist*mallocLEN。head = p2 = p1。if fp = fopen"e:addbook.dat","rb" = NULLprintf"cannot open the file." 。for i = 0 。 i < sum 。 i+p2 = p1。p1 = struct linklist*mallocLEN。p2 -> next = p1 。iffread&p2 -> binfo,sizeofbbasic,1,fp .= 1printf"cannot save the data." 。p2 -> next = NULL。fclosefp 。return head。void modifystruct 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<sum 。i+ifstrcmpfind,p -> binfo.name = 0gotoxy2,2 。cprintf"Please input the classfication of chinese library classification:"。scanf"%s",&p -> binfo.type。getchar。gotoxy2,4 。cprintf"Please input the book's number:"。scanf"%s",&p -> binfo.num。 getchar。gotoxy2,6 。cprintf"Please input the book's name:" 。scanf"%s",&p -> binfo.name。getchar。gotoxy2,8 。cprintf"Please input the book's writer:"。scanf"%s",&p -> binfo.writer。getchar。gotoxy2,10 。cprintf"Please input the the book's press:" 。scanf"%s",&p -> binfo.press。getchar。gotoxy2,12 。cprintf"Please input the book's edition:"。scanf"%s",&p -> binfo.edition。getchar。gotoxy2,14 。cprintf"Please input the book's publish time:"。scanf"%s",&p -> binfo.time。getchar。gotoxy2,16 。cprintf"Please input the price:" 。scanf"%f",&p -> binfo.price。getchar。gotoxy2,18 。可编辑资料 - - - 欢迎下载精品名师归纳总结cprintf"Please input the ISBN of the book:"。scanf"%s",&p -> binfo.ISBN。getchar。gotoxy2,20 。cprintf"Please input the count of books:"。scanf"%d",&p -> binfo.count。getchar。gotoxy2,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 。ifky = Key_Y可编辑资料 - - - 欢迎下载精品名师归纳总结elsep = head。i = -1 。clrscr 。printf"Plese input the name of the book you want to modify:"。scanf"%s",find 。p = head。if fp = fopen"e:addbook.dat","wb" = NULL可编辑资料 - - - 欢迎下载精品名师归纳总结printf"cannot open addbook.dat" 。for i = 0 。i <sum 。 i+iffwrite&p -> binfo,sizeofbbasic,1,fp .= 1clrscr 。printf"cannot save the data." 。p = p -> next 。fclosefp 。menu。p = p -> next 。可编辑资料 - - - 欢迎下载精品名师归纳总结clrscr 。printf"cannot find the book."。getch。void deletestruct linklist* p1,*p2,*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 。ifstrcmpfind,head -> binfo.name = 0可编辑资料 - - - 欢迎下载精品名师归纳总结elsehead = head ->next。sum-。flag = 1 。for i = 0 。i< sum 。i+可编辑资料 - - - 欢迎下载精品名师归纳总结p1 = p1 -> next 。ifstrcmpfind,p1 -> binfo.name = 0可编辑资料 - - - 欢迎下载精品名师归纳总结elsep1 = p1 -> next 。p2 -> next = p1 。sum -。flag = 1 。break。p2 = p2 -> next 。可编辑资料 - - - 欢迎下载精品名师归纳总结if flag .= 1printf"cannot find the book."。getch。menu。p1 = head。if fp = fopen"e:addbook.dat","wb" = NULLprintf"cannot open addbook.dat" 。for i = 0 。i <sum 。i+iffwrite&p1 -> binfo,sizeofbbasic,1,fp .= 1clrscr 。printf"cannot save the data." 。p1 = p1 -> next 。fclosefp 。iffp = fopen"e:sum.dat","wb" = NULLprintf"cannot open sum.dat" 。iffwrite&sum,2,1,fp .= 1printf"fail to write the sum.dat."。getch。exit0 。fclosefp 。printf"succeed to delete the book.press anykey to get back to the mainmenu." 。getch。void insertstruct linklist* p1,*p2, *head, *temp。char find10 。int i,ky,sum,flag = 0 。FILE *fp 。可编辑资料 - - - 欢迎下载精品名师归纳总结clrscr 。sum = readsum。p1 = p2 = head = create。temp = struct linklist*mallocLEN。 printf"The number you want to insert behind:"。scanf"%s",find 。fori = 0 。 i< sum。 i+p1 = p1->next 。ifstrcmpfind,p2 -> binfo.num = 0可编辑资料 - - - 欢迎下载精品名师归纳总结elsep2 -> next = temp 。temp -> next =p1 。sum + 。flag = 1 。break。p2 = p2->next 。可编辑资料 - - - 欢迎下载精品名师归纳总结if flag .= 1printf"cannot find the book."。getch。menu。clrscr 。gotoxy2,2 。cprintf"Please input the classfication of chinese library classification:"。scanf"%s",&