图书馆管理系统源代码.doc_第1页
图书馆管理系统源代码.doc_第2页
图书馆管理系统源代码.doc_第3页
图书馆管理系统源代码.doc_第4页
图书馆管理系统源代码.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/*我的图书管理文档*#include#include#includeFILE *fp; /*定义全局变量fp*/struct bookschar number20; /*图书编号*/char name20; /*图书名称*/char writer20; /*作者*/char press20; /*出版社*/char kind20; /*类别*/double time; /*出版时间*/double price; /*价格*/struct books *next; /*指向下一结点*/;/*函数申明*/void secret(); /*密码验证*/void menu(); /*主菜单*/struct books * Input(); /*录入图书信息*/void fprint(struct books *head); /*将信息导入文件可追加*/void fprint1(struct books *head); /*将信息导入文件只写(可覆盖)*/struct books * create(struct books * head,int *n); /*从文件中读取数据构建链表*/void Browse(struct books *head); /*浏览全部图书信息*/void count(struct books *head); /*统计图书数目*/void seekbyname(struct books *head); /*按书名查询图书*/void seekbywriter(struct books *head); /*按作者查询图书*/void rankbytime(struct books * head); /*按出版时间排序*/void rankbyprice(struct books * head); /*按价格排序*/struct books * Delete(struct books * head,char a20); /*按编号删除图书*/struct books * Revise(struct books *head); /*修改图书*/*密码验证*/void secret()int a;int b=601;int c=632;printf(请输入您的学号后三位:);scanf(%d,&a);if(a=b&c=a)printf( 欢迎进入图书管理系统n);elseprintf( 对不起!您输入的密码有误,请查证后再输!n); exit(0);/*主菜单*/void menu()printf(*n); printf( 图书管理系统 n);printf(*-*n);printf( * 0-退出系统 * * 4-按作者查询 *n);printf( * 1-添加图书 * * 5-按时间排序 *n);printf( * 2-浏览图书 * * 6-按价格排序 *n);printf( * 3-按书名查询 * * 7-删除 *n); printf( 8-修改 *n); printf(*-*n); printf(*n); /*录入图书信息建立图书信息的链表*/struct books * Input()struct books *p1,*p2,*head; /*建立辅助结点及头结点*/char number;int n=0,x;system(cls);menu();printf(请按对应项输入图书信息以0结束!n);printf(n);printf(编号 书名 作者 价格 出版社 类别 出版时间 n);printf(n);p1=(struct books *)malloc(sizeof(struct books);head=p2=p1;do /*使用do while语句输入图书信息*/scanf(%s,&p1-number);if(strcmp(p1-number,0)=0) /*判断结束符*/break; elsescanf(%s%s%s%s%lf%lf,p1-name,p1-writer,p1-press,p1-kind,&p1-time,&p1-price);number=0; p1=(struct books *)malloc(sizeof(struct books);p2-next=p1;p2=p1;n+;while(1);p1-next=NULL;getchar(); /*数据被存放在链表中*/ printf(n 1 保存图书信息 n); printf(n 2 不保存图书信息 n);scanf(%d,&x);if(x=1)fprint(head); /*调用函数保存至文件*/elseprintf(n文件没有被保存!n);return head; /*返回头指针*/*将信息导入文件可追加*/void fprint(struct books *head)FILE *fp;struct books *p1;if(fp=fopen(books.txt,a)=NULL)printf(File open error!n);exit(0);for(p1=head;p1-next!=NULL;p1=p1-next) /*遍历*/fprintf(fp,%st%st%st%st%st%.0lft%lfn,p1-number,p1-name,p1-writer,p1-press,p1-kind,p1-time,p1-price);/*将图书信息写入文件*/fclose(fp); system(cls); /*清屏函数*/menu();printf(n图书已成功保存!n);getchar();/*将信息导入文件*/void fprint1(struct books *head)FILE *fp;struct books *p1;if(fp=fopen(books.txt,w)=NULL)printf(File open error!n);exit(0);for(p1=head;p1!=NULL;p1=p1-next) /*遍历*/fprintf(fp,%st%st%st%st%st%.0lft%lfn,p1-number,p1-name,p1-writer,p1-press,p1-kind,p1-time,p1-price);/*将图书信息写入文件*/fclose(fp); /*关闭文件*/system(cls);menu();printf(n图书已成功保存!n);getchar();/*从文件中读取数据构建链表*/struct books * create(struct books * head,int *n)struct books *p,*p1,*p2;if(fp=fopen(books.txt,a+)=NULL) /*先安全打开目录文件*/printf(File open error!n);exit(0);while(!feof(fp) /*读取并创建链表*/(*n)+;p=(struct books *)malloc(sizeof(struct books);fscanf(fp,%s%s%s%s%s%lf%lf,p-number,p-name,p-writer,p-press,p-kind,&p-time,&p-price);if(head=NULL)head=p;p1=p;elsep1-next=p;p2=p1;p1=p;p2-next=NULL;free(p); /*释放辅助结点所占用空间*/(*n)-;fclose(fp);return head;/*浏览全部图书信息*/void Browse(struct books *head)FILE *fp;char number20;char name20;char writer20;char press20;char kind20;double time;double price;system(cls);menu();if(fp=fopen(books.txt,a+)=NULL)printf(File open error!n);exit(0); printf(n);printf(编号 书名 作者 价格 出版社 类别 出版时间 n);printf(n);while(!feof(fp) /*读取并输出*/fscanf(fp,%s%s%s%s%s%lf%lf,number,name,writer,press,kind,&time,&price);printf(%st%st%st%st%st%.0lft%.2lfn,number,name,writer,press,kind,time,price);if(fclose(fp)printf(Can not close the file!n);exit(0);/*统计图书数目*/void count(struct books *head)int n=0;struct books *p1;head=create(head,&n); /*调用创建链表函数*/for(p1=head;p1-next!=NULL;p1=p1-next) /*遍历*/n+; /*计数*/system(cls);menu();printf(n共有 %d 本图书。n,(n+1)/2); /*计算并输出图书数目*/*按书名查询图书*/void seekbyname(struct books *head)int i=0,n; /*i为计数判定*/char b20; /*定义查找编号*/struct books *p;head=create(head,&n);p=head;system(cls);menu();printf(n请输入图书名称:);scanf(%s,b);while(p!=NULL)if(strcmp(p-name,b)=0) /*比较输入的字符串与原文件中书名*/ printf(n编号 书名 作者 出版社 类别 出版时间 价格n);printf(%st%st%st%st%st%.0lft%.2lfn,p-number,p-name,p-writer,p-press,p-kind,p-time,p-price);i+;p=p-next;if(i=0)printf(n没有此书!n,b);/*按作者查询图书*/void seekbywriter(struct books *head)int i=0,n;char b20;struct books *p;head=create(head,&n);p=head;system(cls);menu();printf(n请输入作者姓名:);scanf(%s,b);while(p!=NULL)if(strcmp(p-writer,b)=0)printf(n编号 书名 作者 出版社 类别 出版时间 价格n);printf(%st%st%st%st%st%.0lft%.2lfn,p-number,p-name,p-writer,p-press,p-kind,p-time,p-price);i+;p=p-next;if(i=0)printf(n没有此书!n,b);/*按出版时间排序*/void rankbytime(struct books * head)struct books *p,*tail; /*定义中间变量*/ double time;int n;p=(struct books *)malloc(sizeof(struct books);system(cls);menu();head=create(head,&n);while(head-next!=NULL) /*利用选择法排序*/tail=NULL; p=head; time=p-time; /*将链表中第一个价格赋给price*/ while(p!=NULL)if(p-time)time;tail=p; p=p-next;tail=NULL;p=head;while(p-next!=NULL)if(p-time=time)printf(%st%st%st%st%st%.0lft%.2lfn,p-number,p-name,p-writer,p-press,p-kind,p-time,p-price);if(p=head)head=head-next;elsetail-next=p-next;tail=p;p=p-next;if(p-time=time) printf(%st%st%st%st%st%.0lft%.2lfn,p-number,p-name,p-writer,p-press,p-kind,p-time,p-price);tail-next=NULL; p=head; /*将链表赋给结构体指针*/printf(%st%st%st%st%st%.0lft%.2lfn,p-number,p-name,p-writer,p-press,p-kind,p-time,p-price);/*浏览排序后的信息*/return;/*按价格排序*/void rankbyprice(struct books * head)struct books *p,*tail; /*定义中间变量*/ double price;int n;p=(struct books *)malloc(sizeof(struct books);system(cls);menu();head=create(head,&n);while(head-next!=NULL) /*利用选择法排序*/tail=NULL; p=head; price=p-price; /*将链表中第一个价格赋给price*/ while(p!=NULL)if(p-price)price;tail=p; p=p-next;tail=NULL;p=head;while(p-next!=NULL)if(p-price=price)printf(%st%st%st%st%st%.0lft%.2lfn,p-number,p-name,p-writer,p-press,p-kind,p-time,p-price);if(p=head)head=head-next;elsetail-next=p-next;tail=p;p=p-next;if(p-price=price) /*价格相同时无需比较*/printf(%st%st%st%st%st%.0lft%.2lfn,p-number,p-name,p-writer,p-press,p-kind,p-time,p-price);tail-next=NULL;p=head; /*将链表赋给结构体指针*/printf(%st%st%st%st%st%.0lft%.2lfn,p-number,p-name,p-writer,p-press,p-kind,p-time,p-price);/*浏览排序后的信息*/return;/*按编号删除图书*/struct books * Delete(struct books * head,char a20)struct books *ptr1,*ptr2;int n;system(cls);menu();printf(n请输入您想要删除的图书编号:);scanf(%s,a);head=create(head,&n);while(strcmp(head-number,a)=0)&head!=NULL)ptr2=head;head=head-next;free(ptr2);if(head=NULL)printf(没有此书!n);return head;ptr1=head;ptr2=head-next;while(ptr2!=NULL)if(strcmp(ptr2-number,a)=0)ptr1-next=ptr2-next;free(ptr2);elseptr1=ptr2;ptr2=ptr1-next;fprint1(head);system(cls);menu();printf(n该书已删除!n,a);return head;/*修改图书信息*/struct books * Revise(struct books *head)int n,k;char a10; char number20; char name20; char writer20; char press20; char kind20; double time; double price; struct books *p;system(cls);menu();head=create(head,&n);p=head;Browse(head);printf(请选择您要修改的图书的编号:);scanf(%s,a);system(cls);while(p!=NULL)if(strcmp(p-number,a)=0)system(cls);printf(修改编号请选择1n); printf(修改书名请选择2n); printf(修改作者请选择3n); printf(修改出版社请选择4n); printf(修改类型请选择5n);printf(修改出版时间请选择6n); printf(修改价格请选择7n);printf(编号 书名 作者 出版社 类别 出版时间 价格n);printf(%st%st%st%st%st%.0lft%.2lfn,p-number,p-name,p-writer,p-press,p-kind,p-time,p-price);while(1)printf(请按0-7选择需要修改的图书成分:);scanf(%d,&k);switch(k)case 1:printf(请输入新的图书编号:n);scanf(%s,number);strcpy(p-number,number);break;case 2:printf(请输入新的图书名称:n);scanf(%s,name);strcpy(p-name,name);break;case 3:printf(请输入新的图书作者:n);scanf(%s,writer);strcpy(p-writer,name);break;case 4:printf(请输入新的图书出版社:n);scanf(%s,press);strcpy(p-press

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论