




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《风景园林招投标与概预算》试题A带答案详解(突破训练)
- 2025年江西省高速公路投资集团有限责任公司招聘笔试备考题库含答案详解(综合题)
- 2025福建晋园发展集团有限责任公司权属子公司招聘7人笔试备考题库及完整答案详解
- 2025年河北省定州市辅警招聘考试试题题库含答案详解(培优)
- 2025年Z世代消费行为对新兴品牌产品研发的启示研究报告
- 暑假生活总结学习旅游运动参观实践模板
- 2025届高考物理大一轮复习课件 第一章 第2课时 匀变速直线运动的规律
- 互联网背景下我国大学生创业的困难与对策研究
- 消毒试题及答案问答
- 物资包装试题及答案
- T-GDASE 0042-2024 固定式液压升降装置安全技术规范
- (正式版)QB∕T 8049-2024 家用和类似用途微压富氧舱
- HJ1249-2022排污单位自行监测技术指南储油库、加油站
- 江湖算命揣摩技巧-《英耀篇》原文、翻译及其详解
- 四川省康定市大槽门金矿资源储量核实报告
- 北京市海淀区 2023-2024学年八年级下学期期末道德与法治试卷
- 2023年河南省郑州一中小升初数学试卷
- 统编版(部编版) 八年级下册 第六单元 课外古诗词诵读《送友人》公开课一等奖创新教学设计
- 湖南省邵阳市2024年八年级下学期英语期末质量检测卷附答案
- (高清版)JTGT 3364-02-2019 公路钢桥面铺装设计与施工技术规范
- GB/T 43955-2024棉及化纤纯纺、混纺纱线检验、标志与包装
评论
0/150
提交评论