《图书管理系统源代码纯C语言(共8页).doc》由会员分享,可在线阅读,更多相关《图书管理系统源代码纯C语言(共8页).doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上#include#include#include#include#define NULL 0#define LEN sizeof(Book)struct A char Name20; int all,left,borrow; struct A *next; ;typedef struct A Book;int Display_Main_Menu(); /*主菜单显示*/Book *Create(); /*功能函数声明*/ void Display(Book *head);Book *Insert(Book *head,Book *s);Book *Insert_a_r
2、ecord(Book *head);Book *Delete(Book *head,char *name);Book *Delete_a_record(Book *head);Book *Borrow(Book *head,char *name,int sum);Book *Borrow_a_Book(Book *head);Book *Return(Book *head,char *name,int sum);Book *Return_a_Book(Book *head);Book *Query(Book *head,char *name); void Query_a_record(Book
3、 *head);Book *AddfromText(Book *head,char *filename);Book *WritetoText(Book *head,char *filename); void Quit(Book *head);void main() /*主函数部分*/Book *head; /*定义变量*/ char filename20; int keyword=111,a; printf(Please input keyword:); scanf(%d,&a); if(a!=keyword) exit(0); else printf(Welcome!); head=NULL
4、; /*置首指针为空*/ for(;) switch(Display_MainMenu() case 1:printf(1.Create BookListn); /*调用Create函数创建链表*/ head=Create(); system(pause); break; case 2:printf(Display All Booksn); Display(head); /*调用Display函数显示所有*/ system(pause);break; case 3:printf(Insert a Recordn); head=Insert_a_record(head);/*调用Insert_a
5、_record函数插入*/ system(pause);break; case 4:printf(Delete a Bookn); head=Delete_a_record(head);/*调用Delete_a_record函数删除*/ system(pause);break; case 5:printf(Borrow a BooknInput BookName and sum you borrow:); head=Borrow_a_Book(head); system(pause);break; case 6:printf(Return a BooknInput BookName and s
6、um you return:); head=Return_a_Book(head); system(pause);break; case 7:printf(QuerynInput the BookName you want:); Query_a_record(head);/*调用查询函数*/ system(pause);break; case 8:printf(Input the name of Text Filen); scanf(%s,filename);/*输入文件名*/ head=AddfromText(head,filename); system(pause);break; case
7、 9:printf(Input the name of the NewText Filen); scanf(%s,filename);/*输入要写入的文件名*/ head=WritetoText(head,filename); system(pause);break; case 0:printf(Goodbyen); Quit(head); exit(0); int Display_MainMenu() /*显示菜单的函数*/char x; do system(cls); printf(*n); printf(1.Create BookListn); printf(2.Display All
8、Booksn); printf(3.Insert a BookInformationn); printf(4.Delete a Bookn); printf(5.Borrow a Bookn); printf(6.Return a Bookn); printf(7.Queryn); printf(8.Add Records From a Filen); printf(9.Write to a Filen); printf(0.Goodbyen); printf(*n); printf(Please choose from 0-9:); printf(n); x=getchar(); while
9、(x9); return(x-0);Book *Create() /*创建链表的函数,返回首指针*/Book *head,*newrecord; char ch; printf(Input a Bookn); head=NULL;/*首指针置空*/ do newrecord=(Book *)malloc(LEN); /*动态分配存储空间*/ scanf(%s%d,newrecord-Name,&newrecord-all); newrecord-left=newrecord-all; newrecord-borrow=0; head=Insert(head,newrecord); /*调用In
10、sert函数判断位置插入*/ getchar(); / *接收最后输入的回车符*/ printf(Add another Book Y/N?n); ch=getchar(); getchar(); /*接收回车符*/while(ch!=n&ch!=N); /*判断是否继续*/ return(head);Book *Insert(Book *head,Book *s)/*插入结点的函数*/ Book *p0,*p1,*p2; p1=head;p0=s; if(head=NULL) head=p0;p0-next=NULL; while(strcmp(p0-Name,p1-Name)0&(p1-n
11、ext!=NULL) p2=p p1=p1-next; if(strcmp(p0-Name,p1-Name)next=p1; if(head=p1) head=p0; else p2-next=p0; elsep1-next=p0;p0-next=NULL; return(head);Book *Insert_a_record(Book *head) Book *newrecord; newrecord=(Book *)malloc(LEN); /*动态分配存储空间*/ scanf(%s%d,newrecord-Name,&newrecord-all); newrecord-borrow=0;
12、 newrecord-left=newrecord-all; head=Insert(head,newrecord); printf(Insert successfullyn);/*输出插入成功的信息*/ return(head);Book *Delete(Book *head,char *name) /*删除功能函数*/ Book *p1,*p2; if(head=NULL) printf(Sorry No record!n); p1=head; while(strcmp(p1-Name,name)!=0&p1-next!=NULL) / p2=p1;p1=p1-next; if(strcm
13、p(p1-Name,name)=0) if(p1=head)head=p1-next; else p2-next=p1-next; printf(delete %s successfullyn,name); return(head);Book *Delete_a_record(Book *head) char name20,ch; Book *p; scanf(%s,name); getchar(); p=Query(head,name); if(p=NULL) printf(Cannot Find %sn,name); else printf(Delete %s, Y/N?n,name);
14、ch=getchar(); system(pause); if(ch=y|ch=Y) while(p!=NULL) head=Delete(head,name); p=Query(head,name); return(head);Book *Borrow_a_Book(Book *head) char name20,ch; int n; Book *p; scanf(%s%d,name,&n); getchar(); / p=Query(head,name); if(p=NULL) printf(Cannot Find %sn,name); else printf(Are you sure t
15、o borrow? %s, Y/N?n,name); ch=getchar(); system(pause); if(ch=y|ch=Y) head=Borrow(head,name,n); return(head);Book *Borrow(Book *head,char *name,int sum) Book *p1; p1=head; while(strcmp(p1-Name,name)!=0&p1-next!=NULL) p1=p1-next; if(strcmp(p1-Name,name)=0) p1-borrow=sum; p1-left=p1-all-sum; return(he
16、ad);Book *Return_a_Book(Book *head) char name20,ch; int n; Book *p; scanf(%s%d,name,&n); getchar(); /*接收回车*/ p=Query(head,name); if(p=NULL) printf(Cannot Find %sn,name); /*找不到结点*/ else printf(Are you sure to return? %s, Y/N?n,name); ch=getchar(); system(pause); if(ch=y|ch=Y) head=Return(head,name,n)
17、; return(head);Book *Return(Book *head,char *name,int sum) Book *p1; p1=head; while(strcmp(p1-Name,name)!=0&p1-next!=NULL) /*p1不是要找的结点,且后面还有结点*/ p1=p1-next; /*p1后移一个结点*/ if(strcmp(p1-Name,name)=0) /*找到了*/ p1-borrow=p1-borrow-sum; p1-left=p1-left+sum; return(head);void Display(Book *head) Book *p; in
18、t i; p=head; printf(Num BookName Total Left Borrown); for(i=1;p!=NULL;i+) printf(%-5d%-14s%-10d%-10d%-5dn, i,p-Name,p-all,p-left,p-borrow); p=p-next; if(i%10=0) system(pause); /*按回车继续显示*/ printf(Num BookName total left borrown); Book *Query(Book *head,char *name) Book *p; p=head; while(strcmp(name,p
19、-Name)!=0&p-next!=NULL) p=p-next; if(strcmp(name,p-Name)=0) /*找到了,返回结点地址*/ return(p); else /*找不到返回空指针*/ return(NULL);void Query_a_record(Book *head) char name20; Book *p; scanf(%s,name); p=Query(head,name); if(p!=NULL) /*找到了*/ printf(Find successfullyn%s total:%d left:%d borrow:%dn, p-Name,p-all,p-l
20、eft,p-borrow); else printf(Cant find the records of %sn,name); /*找不到*/Book *AddfromText(Book *head,char *filename) FILE *fp; int n,i; if(fp=fopen(filename,r)=NULL) printf(Cannot find file:%sn,filename); /*打不开所指定文件*/ return(head); fscanf(fp,%d,&n); /*待插入记录个数*/ for(i=0;iName,&p-all,&p-left,&p-borrow);
21、 head=Insert(head,p); /*插入结点*/ printf(Add from %s successfullyn,filename); fclose(fp);return(head);Book *WritetoText(Book *head,char *filename)FILE *fp;Book *p; if(head=NULL) printf(No Record!n); return(head); fp=fopen(filename,w); /*打开文件*/ p=head; while(p!=NULL) fprintf(fp,%-14s%-10d%-10d%-10dnn,p-
22、Name,p-all,p-left,p-borrow); /*文件输出*/ p=p-next; printf(Write to %s successfullyn,filename); /*输出写到文件完毕的信息*/ fclose(fp); return(head);void Quit(Book *head)Book *p,*p1,*p2;FILE *fp; char filename=last; p2=p1=head; if(head!=NULL) fp=fopen(filename,w); /*打开文件*/ p=head; while(p!=NULL) fprintf(fp,%s %d %d %dn,p-Name,p-all,p-left,p-borrow); /*文件输出*/ p=p-next; printf(Write to %s successfullyn,filename); /*输出写到文件完毕的信息*/ fclose(fp); while(p1!=NULL) /*p1指向的结点不是空指针*/ p2=p1-next; free(p1); /*释放存储空间*/ p1=p2; /*p1后移一个结点*/ 专心-专注-专业