图书管理系统源代码纯C语言(共8页).doc

上传人:飞****2 文档编号:27094556 上传时间:2022-07-22 格式:DOC 页数:8 大小:34.50KB
返回 下载 相关 举报
图书管理系统源代码纯C语言(共8页).doc_第1页
第1页 / 共8页
图书管理系统源代码纯C语言(共8页).doc_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《图书管理系统源代码纯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后移一个结点*/ 专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁