




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#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_record(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 *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; /*置首指针为空*/ 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_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 sum 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 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 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(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); /*调用Insert函数判断位置插入*/ 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-next!=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; 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(strcmp(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); 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 to 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(head);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); 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; int 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-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-left,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); head=Insert(head,p); /*插入结点*/ printf(Add from %s successfullyn,filename); fclose(fp);return(head);Book *WritetoText(Book *head,char
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水费计收机制方案(3篇)
- 公司合理持股方案(3篇)
- DB23-T3024-2021-酸浆栽培技术规程-黑龙江省
- DB23-T2915-2021-刺五加野生资源恢复技术规程-黑龙江省
- DB23-T2820-2021-企业双重预防机制信息系统建设评估指南-黑龙江省
- 学校周末策划管理制度
- 公司行政经费管理制度
- 公司保密工作管理制度
- 农村初中后勤管理制度
- 外包保洁公司管理制度
- TSZFA 2003.2-2019 床垫人体工程学评价 第二部分:床垫贴合度定量与评价方法
- 千载悠悠客家情
- GB/T 34134-2017家用和类似用途安全特低电压(SELV)交流和直流插头插座16 A 6 V、12 V、24 V、48 V型式、基本参数和尺寸
- 望洞庭课件模板
- GB/T 17145-1997废润滑油回收与再生利用技术导则
- 人教版初中日语必修一二三单词表
- 中国城镇水务行业发展报告(2022) - 污水处理技术应用情况
- GA/T 1567-2019城市道路交通隔离栏设置指南
- 桩基桩基础工程
- 关税系统岗位练兵关税业务知识练习试题附答案
- 气体灭火系统调试报告
评论
0/150
提交评论