#define M 100 #include "stdio.h" #include "string.h" typedef struct book {char bookname[20]; char indexnum[10]; char writer[15]; char publish[20]; char pressdate[10]; int flag; }booktype;
void print(booktype b[],int n) {int i; printf("\n图书名 编 号 作 者 出版社 出版日期 是否借出.\n"); for(i=0;i<n;i++) printf("%-10s %-10s %-15s%-15s%-10s %-3d\n",b[i].bookname,b[i].indexnum,b[i].writer, b[i].publish,b[i].pressdate,b[i].flag); }
void initenter(booktype a[],int *n) {int i; printf("输入记录的数量:"); scanf("%d",n); printf("\n请输入记录的信息."); printf("请输入包括以下的信息\n(图书名 编 号 作 者 出版社 出版日期 是否借出)\n"); for(i=0;i<*n;i++) { printf("\n请输入第 %dst 记录的信息:\n",i+1); scanf("%s%s%s%s%s%d",a[i].bookname,a[i].indexnum,a[i].writer, a[i].publish,a[i].pressdate,&a[i].flag); }
}
void sort(booktype b[],int n) {int i,j; booktype temp; printf("\nt请从低到高编号."); for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strcmp(b[i].indexnum,b[j].indexnum)>0) {temp=b[i];b[i]=b[j];b[j]=temp;} print(b,n); }
void sort1(booktype b[],int n) {int i,j; booktype temp; printf("\n从作者的姓名."); for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strcmp(b[i].writer,b[j].writer)>0) {temp=b[i];b[i]=b[j];b[j]=temp;} print(b,n); }
int insert(booktype b[],int n) {int i; booktype new; printf("\n请输入新书的资料."); printf("\n图书名 编 号 作 者 出版社 出版日期 是否借出.\n"); scanf("%s%s%s%s%s%d",new.bookname,new.indexnum,new.writer, new.publish,new.pressdate,&new.flag); b[n]=new; n++; sort(b,n); return(n); }
int delete(booktype b[],int n) {int i,d; char c,str[10]; printf("\ndecaration: 从编号删除操作."); sort(b,n); printf("\n请输入删除书的编号:"); scanf("%s",str); for(i=0;i<n;i++) {if(strcmp(b[i].indexnum,str)==0) { d=i; printf("\n%-10s %-10s %-15s%-15s%-10s %-3d\n",b[d].bookname,b[d].indexnum,b[d].writer, b[d].publish,b[d].pressdate,b[d].flag); printf("\n确定删除这个记录,Yes/No?"); printf("\n选择 ''y''----->您确定删除."); printf("\n选择任何键------>您退出删除."); printf("\n请选择------> Y or N:"); c=getche(); if(c==''y'') {for(i=d;i<n;i++) b[i]=b[i+1]; n--;} else {printf("\n您已经退出删除."); print(b,n); return(n);} } } {printf("\n没有这本书!\n");return(n);} }
void search1(booktype b[],int n) {int i; char numstr[20]; printf("\n从作者姓名排序:\n"); sort1(b,n); printf("\n请输入作者的姓名:"); scanf("%s",numstr); for(i=0;i<n;i++) if(strcmp(numstr,b[i].writer)==0) printf("\n%-10s %-10s %-15s%-15s%-10s %-3d\n",b[i].bookname,b[i].indexnum,b[i].writer, b[i].publish,b[i].pressdate,b[i].flag); }
void search2(booktype b[],int n) {int i; char numstr[20]; printf("\n从出版社的名称进行排序:\n"); sort1(b,n); printf("\n请输入出版社的名称:"); scanf("%s",numstr); for(i=0;i<n;i++) if(strcmp(numstr,b[i].publish)==0) printf("\n%-10s %-10s %-15s%-15s%-10s %-3d\n",b[i].bookname,b[i].indexnum,b[i].writer, b[i].publish,b[i].pressdate,b[i].flag); }
void search3(booktype b[],int n) {int i; char numstr[20]; printf("\n从编号进行排序:\n"); sort1(b,n); printf("\n请输入书的编号:"); scanf("%s",numstr); for(i=0;i<n;i++) if(strcmp(numstr,b[i].indexnum)==0) printf("\n%-10s %-10s %-15s%-15s%-10s %-3d\n",b[i].bookname,b[i].indexnum,b[i].writer, b[i].publish,b[i].pressdate,b[i].flag); }
void search(booktype b[],int n) {char c; printf("\n选择 ''a''------>从作者的姓名进行查找."); printf("\n选择 ''p''------>从出版社的名称进行查找."); printf("\n选择 ''i''------>从编号进行查找."); printf("\n选择任何键---->返回."); printf("\n请选择服务的项目:"); c=getche(); switch(c) {case ''a'':search1(b,n);break; case ''p'':search2(b,n);break; case ''i'':search3(b,n);break; default:return; } }
void modify(booktype b[],int n) {int i,d; char c; char numstr[10]; booktype vary; sort(b,n); printf("\n请输入被修改的编号:"); scanf("%s",numstr); for(i=0;i<n;i++) if(strcmp(numstr,b[i].indexnum)==0) { d=i; printf("\n%-10s %-10s %-15s%-15s%-10s %-3d\n",b[d].bookname,b[d].indexnum,b[d].writer, b[d].publish,b[d].pressdate,b[d].flag); printf("\n请确定修改的记录,Yes/No"); printf("\n选择 ''y''-------->您确定修改."); printf("\n选择任何键 ------->您退出修改."); printf("\n请选择 Y or N:"); c=getche(); if(c==''y'') { printf("\n请输入新书名 编号 作者 出版社 出版日期 是否借出\n"); scanf("%s%s%s%s%s%d",vary.bookname,vary.indexnum,vary.writer, vary.publish,vary.pressdate,&vary.flag); b[d]=vary; } sort(b,n); } else {printf("\nwe haven''t this book!\n");return;} }
void borrow(booktype b[],int n) {int i; char numstr[10]; sort(b,n); printf("\n请输入您想借的书的编号:"); scanf("%s",numstr); for(i=0;i<n;i++) {if(strcmp(numstr,b[i].indexnum)==0) {if(b[i].flag==1) {printf("\n您可以借此书."); b[i].flag=NULL; print(b,n); return; } else {printf("\n此书已经借出.\n请挑选其它的书."); print(b,n); return;} } } print(b,n); printf("\n不好意思!!!我们没有此书.\n"); }
void takeback(booktype b[],int n) {int i; char numstr[10]; printf("\n请输入还书的编号:"); scanf("%s",numstr); for(i=0;i<n;i++) {if(strcmp(numstr,b[i].indexnum)==0) {if(b[i].flag==NULL) {printf("\n您已经还了此书.\n请选择任何键继续"); getch(); b[i].flag=1; print(b,n); return; } else {print(b,n); printf("\n此书还在馆中!!!\n请检查您要书的编号."); return; } } } print(b,n); printf("\不好意思!!我们没有此书.\n"); }
void select(booktype b[],int n) {char c; printf("\n 欢迎进入图书管理系统."); printf(" 操作的目录:\n"); printf(" ******************* \n"); printf(" 选择 ''a''------->添加图书. \n"); printf(" ************************************ \n"); printf(" 选择 ''d''------->删除图书. \n"); printf(" *********************** \n"); printf(" 选择 ''m''------->修改资料. \n"); printf(" ************************************* \n"); printf(" 选择 ''s''------->查找资料. \n"); printf(" ****************************** \n"); printf(" 选择 ''b''-------> 借图书 . \n"); printf(" ************************************* \n"); printf(" 选择 ''r''-------> 还图书 . \n"); printf(" ******************************* \n"); printf(" 选择任何键----->退出. \n"); printf(" ************************************* \n"); printf("请选择服务的项目:"); c=getche(); switch(c) {case ''a'':n=insert(b,n);select(b,n);break; case ''d'':n=delete(b,n);select(b,n);break; case ''m'':modify(b,n);select(b,n);break; case ''s'':search(b,n);select(b,n);break; case ''b'':borrow(b,n);select(b,n);break; case ''r'':takeback(b,n);select(b,n);break; default:exit(0); } }
main() { int n; booktype a[M]; clrscr(); initenter(a,&n); sort(a,n); select(a,n); }