1、精品文档就在这里-各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有-/*/图书馆管理系统/*#include#include#include#define null 0#define max 65536static int n;/*/ 图书结构体/*typedef struct char num10; /书号 char name9; /书名 char addr31; /作者 int Nowcounter; /现存量 int Allcounter; /总库存量datatype;datatype *xmax; /定义两个指针数组datatype *p;/*/图书功能函数列表/
2、*void redo(); /主递归函数void creatlist(datatype *x); /图书建立函数 int menu_select(); /功能菜单函数void find(datatype *x,int n); /查找函数void delnode(datatype *x); /插入函数void printlist(datatype *x); /显示函数void jieyue(datatype *x,int n); /借阅函数void guihuan(datatype *x,int n); /归还函数/*/主递归函数程序/*void redo() int i=0,j,n1,k=0,
3、flage; for( ; ;) switch( menu_select() case 1: /选项1的实现 printf(*n); printf(* 图书的建立 *n); printf(*n); creatlist(x); break; case 2: /选项2的实现 printf(*n); printf(* 新图书信息的添加 *n); printf(*n); printf( 插入的个数:); scanf(%d,&n1); /输入插入新图书的个数 for(i=0;iname); /输入插入书的书名 if(flage=0) for(j=0;jname,p-name) = 0 )/调用比较函数查
4、看书名是否已知 xj-Allcounter+; xj-Nowcounter+; flage=1; if(flage=0) n+; printf( 第 %d 个图书数据:n,n); /插入新的图书 p=(datatype *)malloc(sizeof(datatype); xn-1=p; printf( 书名:); scanf(%s,xn-1-name); /输入书名 printf( 编号:); scanf( %s,xn-1-num); /输入书号 printf( 作者:); scanf( %s,xn-1-addr); / 输入作者名 printf( 总库存量: ); scanf(%d,&xn
5、-1-Allcounter); /输入总库存量 xn-1-Nowcounter=xn-1-Allcounter; break; case 3: printf(*n); printf(* 图书信息的查询 *n); printf(*n); find(x,n); break; case 4: printf(*n); printf(* 图书信息的删除 *n); printf(*n); delnode(x); break; case 5: printf(*n); printf(* 图书信息的显示 *n); printf(*n); printlist(x); break; case 6: printf(*
6、n); printf( 图书的借阅n); printf(*n); jieyue(x,n); break; case 7: printf(*n); printf( 图书的归还n); printf(*n); guihuan(x,n); break; case 0: printf(t 谢谢使用,再见! n); return; /*/主函数程序 /*void main () redo(); /调用主递归函数/*/功能菜单函数 /*int menu_select() int i; printf( 欢迎进入图书管理系统!n); printf(=n); printf( 1. 图书信息的采集n); print
7、f( 2. 新图书的插入n); printf( 3. 图书信息的查询n); printf( 4. 图书的删除n); printf( 5. 图书的显示n); printf( 6. 图书的借阅n); printf( 7. 图书的归还n); printf( 0. 退出管理系统n); printf(=n); printf( 请选择0-7: ); scanf(%d,&i); while(i7) printf(nt输入出错,重选0-7: ); scanf(%d,&i); return i;/*/ 建立链表图书建造函数 /*void creatlist(datatype *x) int i; printf(
8、 请输入要建立图书的个数:); scanf(%d,&n); for(i=0;iname); printf( 编号:); scanf( %s,xi-num); printf( 作者:); scanf( %s,xi-addr); printf( 总库存量: ); scanf(%d,&xi-Allcounter); xi-Nowcounter=xi-Allcounter; /*/ 查找函数程序 /*void find(datatype *x,int n) char num10; char name9; int t,i; printf(=n); /输出查找方式 printf( 1.按编号查询 n);
9、printf( 2.按书名查询 n); printf(=n); printf( 请选择 : ); scanf(%d,&t); /输入选择信息 if(t=1) printf( 请输入要查找者的编号: ); scanf(%s,num); /输入书号 for(i=0;inum,num)=0) /调用strcmp函数 printf( 编号 书名 作者 现库存量 总库存量n); /输出要查询书的信息 printf( %-10s%-10s%-10s%-10d%-10dn,xi-num,xi-name,xi-addr,xi-Nowcounter,xi-Allcounter); else continue;
10、else printf( 请输入要查询的书名: ); scanf(%s,name); / 输入书名 for(i=0;iname,name)=0) printf(编号 书名 作者 现库存量 总库存量n); /输出要查询书的信息 printf( %-10s%-10s%-10s%-10d%-10dn,xi-num,xi-name,xi-addr,xi-Nowcounter,xi-Allcounter); else continue; /*/删除函数程序/*void delnode(datatype *x) char num110,name110; /定义两个字符数组 int i,j,m=1,p; p
11、rintf( 1.按编号删除n); /输出选择方式 printf( 2.按书名删除n); printf( 3.返回n); printf( 请选择:n); scanf(%d,&p); /输入选择信息 if(p3|p1) printf( 您的输入有误,请重新输入!n); scanf(%d,&p); /重新输入选择信息 switch(p) /实现删除程序 case 1: printf( 输入要删除书的编号:n); scanf( %s,num1); for(i=0;inum,num1)=0) /调用strcmp函数 m=0; n-; for(j=i;jn;j+) xj=xj+1; /将该书信息删除 p
12、rintf( 该书已删除!n); if(m=1) printf( 没有这样的的图书n); break; case 2: printf( 输入要删除书的名字:n); scanf(%s,&name1); for(i=0;iname,name1)=0) /调用strcmp函数 m=0; n-; for(j=i;j3|p1) printf( 您的输入有误!n); scanf(%d,&p); /重新输入选择信息 switch(p) /实现查询程序 case 1: printf( 请输入你要的书的名字!n); scanf(%s,&name1); / 输入书名 for(i=0;iname,name1)=0)
13、 /调用strcmp函数 m=0; if(xi-Nowcounter!=0) xi-Nowcounter-; printf( 借书成功!n); if(xi-Nowcounter=0) printf( 这本书已经没有了 n); if(m=1) printf( 您要的书不存在!n); break; case 2: printf( 请输入你要的书的编号!n); scanf(%s,&num1); / 输入书号 for(i=0;inum,num1)=0) /调用strcmp函数 m=0; if(xi-Nowcounter!=0) xi-Nowcounter-; /现存书数量减1 printf( 借书成功
14、!n); if(xi-Nowcounter=0) printf( 这本书已经没有了 n); if(m=1) printf( 您要的书不存在!n); break; case 3: break; /归还程序/void guihuan(datatype *x,int n) int i,q,m=1; char name110,num110; /定义两个字符数组 printf( 1.按书名归还n); /输出可选择方式 printf( 2.按书号归还n); printf( 3.返回n); printf( 请选择n); scanf(%d,&q); /输入选择信息 if(q3|q1) printf( 您的输入
15、有误!n); scanf(%d,&q); /重新输入选择信息 switch(q) /实现归还程序 case 1: printf( 输入归还书的书名: ); scanf(%s,&name1); / 输入书名 for(i=0;iname,name1)=0) m=0; xi-Nowcounter+; printf(此书归还成功!n); printf(此书的存储情况n); printf(编号 书名 作者 现存量 总存量n); printf(=n); printf( %-10s%-10s%-10s%-10d%-10dn,xi-num,xi-name,xi-addr,xi-Nowcounter,xi-Al
16、lcounter); printf(=n); if(strcmp(xi-name,name1)=0) continue; if(m=1) printf(此书不是图书馆的!n); break; case 2: printf(输入归还书的书号n); scanf(%s,&num1); / 输入书号 for(i=0;inum,num1)=0) m=0; xi-Nowcounter+; /显存书增加1 printf(此书归还成功!n); printf(此书的存储情况n); printf(编号 书名 作者 现存量 总存量n); printf(=n); printf( %-10s%-10s%-10s%-10
17、d%-10dn,xi-num,xi-name,xi-addr,xi-Nowcounter,xi-Allcounter); printf(=n); if(strcmp(xi-num,num1)=0) /调用strcmp函数 continue; if(m=1) printf(此书不是图书馆的!n); break; case 3: break; /*/ 输出程序/*void printlist(datatype *x) int i; printf(编号 书名 作者 现存量 总存量n); /输出图书各项信息 for(i=0;inum,xi-name,xi-addr,xi-Nowcounter,xi-Allcounter); printf(=n);-精品 文档-