用C语言设计和实现一个“图书信息管理系统”,满足以下要求: 急急!!用数据结构和C语言(别使用C++) 编写图书信息管理...

C\u8bed\u8a00\u8bfe\u7a0b\u8bbe\u8ba1\u9898\u76ee\uff1a\u56fe\u4e66\u4fe1\u606f\u7ba1\u7406\u7cfb\u7edf\u8bbe\u8ba1

\u6709\u505a\u597d\u7684\u6e90\u7a0b\u5e8f\uff0c\u539f\u521b\u7684\uff0c

\u672c\u4eba\u90ae\u7bb1\u957f\u671f\u5728\u7ebf\uff0c\u6709\u4ec0\u4e48\u4e0d\u61c2\u5f97\u53ef\u76f4\u63a5\u8be2\u95ee\u3002\u90ae\u7bb1\[email protected]
\u8fd9\u662f\u6211\u4ee5\u524d\u505a\u7684\u8bfe\u7a0b\u8bbe\u8ba1\uff0c\u6ca1\u6709\u4fee\u6539\u529f\u80fd\u3002\u4fee\u6539\u5f88\u597d\u505a\uff0c\u6211\u8fd9\u8fd8\u6709\u4e00\u4efd\u5b66\u751f\u7ba1\u7406\u4fe1\u606f\u7684\u6e90\u4ee3\u7801\uff0c\u80fd\u5b9e\u73b0\u4e0a\u8ff0\u5168\u90e8\u529f\u80fd\u3002\u7531\u4e8e\u6211\u73b0\u5728\u6b63\u5728\u5e2e\u5ba2\u6237\u505a\u4e2a\u7cfb\u7edf\uff0c\u6ca1\u65f6\u95f4\u6765\u5b8c\u5584\u8fd9\u4e2a\u7a0b\u5e8f\uff0c\u5e0c\u671b\u4f60\u81ea\u5df1\u80fd\u591f\u5b8c\u5584\u4e00\u4e0b\u3002
/*\u8bbe\u8ba1\u5b9e\u73b0\u4e00\u4e2a\u7b80\u5355\u7684\u56fe\u4e66\u7ba1\u7406\u7cfb\u7edf\uff0c\u5bf9\u56fe\u4e66\u9986\u7684\u4e1a\u52a1\u8fdb\u884c\u7ba1\u7406*/

////////////////////////////////////////////////
//\u5185\u5bb9\uff1a\u8bbe\u8ba1\u5b9e\u73b0\u4e00\u4e2a\u7b80\u5355\u7684\u56fe\u4e66\u7ba1\u7406\u7cfb\u7edf\uff0c\u5bf9\u56fe\u4e66\u9986\u7684\u4e1a\u52a1\u8fdb\u884c\u7ba1\u7406
//\u8981\u6c42\uff1a\u7528C\u8bed\u8a00\u53ca\u987a\u5e8f\u7ed3\u6784\u6765\u5b9e\u73b0\uff0c\u7cfb\u7edf\u5177\u6709\u5982\u4e0b\u529f\u80fd
//1\uff0e \u56fe\u4e66\u5165\u5e93\uff1a\u56fe\u4e66\u6570\u636e\u5305\u62ec\u56fe\u4e66\u4e66\u53f7\uff0c\u4e66\u540d\uff0c\u4f5c\u8005\uff0c\u6570\u91cf\uff0c\u5355\u4ef7\u7b49\uff0c\u4e00\u672c\u4e66\u4f5c\u4e3a\u4e00\u4e2a\u7ed3\u70b9\uff0c
//\u4ee5\u4e66\u53f7\u4e3a\u5173\u952e\u5b57\uff0c\u6309\u8f93\u5165\u7684\u987a\u5e8f\u5efa\u7acb\u987a\u5e8f\u8868
//2\uff0e\u6392\u5e8f\uff1a\u4ee5\u4e66\u53f7\u6309\u5347\u5e8f\u8fdb\u884c\u6392\u5e8f\uff08\u53ef\u4ee5\u4efb\u9009\u4e00\u79cd\u6392\u5e8f\u65b9\u6cd5\uff09
//3\uff0e\u67e5\u627e\uff1a\u80fd\u6309\u4e66\u540d\u3001\u4e66\u53f7\u8fdb\u884c\u67e5\u627e\uff08\u5206\u522b\u7528\u987a\u5e8f\u67e5\u627e\u548c\u6298\u534a\u67e5\u627e\u65b9\u6cd5\uff09
//4\uff0e\u5220\u9664\uff1a\u4ece\u8868\u4e2d\u5220\u9664\u6307\u5b9a\u7684\u56fe\u4e66
#include
#include
#include
#include
#define LIST_INIT_SIZE 50
#define LISTINCREMENT 10
typedef struct Book
{
int BookNum;/*\u56fe\u4e66\u4e66\u53f7*/
char BookName[50];/*\u56fe\u4e66\u4e66\u540d*/
char BookWrite[50];/*\u56fe\u4e66\u4f5c\u8005*/
float BookPrice; /*\u56fe\u4e66\u4ef7\u683c*/
int numbers ; /*\u56fe\u4e66\u6570\u91cf*/
}Book;
typedef struct Library_Data
{
Book *book;
int length;
int listsize;
int Num;
}Library_Data,*Lib_Data;
//\u663e\u793a\u6307\u5b9a\u7684\u4e00\u6761\u8bb0\u5f55
void print(Book p)
{
printf("\n********************************************************************\n");
printf("\u56fe\u4e66\u4e66\u53f7 \u56fe\u4e66\u4e66\u540d \u56fe\u4e66\u4f5c\u8005 \u56fe\u4e66\u6570\u91cf \u56fe\u4e66\u5355\u4ef7(\u5143)\n");
printf("--------------------------------------------------------------------\n");
printf("%-14d%-14s%-14s%-14d%-14f\n",p.BookNum,p.BookName,p.BookWrite,p.numbers,p.BookPrice);
printf("********************************************************************\n");
}
//\u67e5\u627e\u51fd\u6570
int find(Library_Data p,int Num,char s[20])
{
int i,low,mid,high;
if(Num==-1)
for(i=0;i<p.length;i++) /*\u987a\u5e8f\u67e5\u627e*/
{
if(strcmp(s,p.book[i].BookName)==0)
return i;
}
else if(strcmp(s,"")==0)
{
low=0;high=p.length;
while(low<=high) /*\u6298\u534a\u67e5\u627e*/
{
mid=(low+high)/2;
if(Num==p.book[mid].BookNum) return mid;
else if(Num>p.book[mid].BookNum) low=mid+1;
else high=mid-1;
}
}
return -1;
}
//\u5347\u5e8f\u6392\u5e8f
Library_Data Sort_Book(Library_Data &p)
{
Book p0;
int i,j;
if(p.Num==0) return p;
for(i=0;i<p.length;i++)
{
for(j=i+1;j<p.length;j++)
{
if(p.book[i].BookNum>p.book[j].BookNum)
{
p0=p.book[i];
p.book[i]=p.book[j];
p.book[j]=p0;
}
}
}
return p;
}
//\u56fe\u4e66\u521d\u59cb\u5316
void Create_Data(Library_Data &p1)
{
int i=0;
Book *newbase;
system("cls");
printf("\u73b0\u5728\u5bf9\u56fe\u4e66\u8fdb\u884c\u521d\u59cb\u5316\n");
puts("***********************************");
p1.Num=0;p1.length=0;
p1.listsize=LIST_INIT_SIZE;
p1.book=(Book *)malloc(LIST_INIT_SIZE*sizeof(Book));
do
{

if(p1.length>p1.listsize)
{

newbase=(Book *)realloc(p1.book,(p1.listsize+LISTINCREMENT)*sizeof(Book));
if(!newbase) exit(0);
p1.book=newbase;
p1.listsize+=LISTINCREMENT;
}
printf("\u8bf7\u8f93\u5165\u56fe\u4e66\u4e66\u53f7\uff1a");
scanf("%d",&p1.book[i].BookNum);
printf("\u8bf7\u8f93\u5165\u56fe\u4e66\u4e66\u540d\uff1a");
scanf("%s",&p1.book[i].BookName);
printf("\u8f93\u5165\u56fe\u4e66\u4f5c\u8005: ");
scanf("%s",&p1.book[i].BookWrite);
printf("\u8bf7\u8f93\u5165\u56fe\u4e66\u6570\u91cf\uff1a");
scanf("%d",&p1.book[i].numbers);
printf("\u8bf7\u8f93\u5165\u56fe\u4e66\u4ef7\u683c\uff1a");
scanf("%f",&p1.book[i].BookPrice);
p1.Num+=p1.book[i].numbers;i++;p1.length++;

printf("***********************************\n");
printf(" \u6309 n \u9000\u51fa\uff0c\u6309\u522b\u7684\u7ee7\u7eed\u3002\n"); /*\u63d0\u793a\u5982\u4f55\u7ee7\u7eed\u3001\u9000\u51fa*/
printf("***********************************\n");
}while(getch()!='n');
Sort_Book(p1);
}
//\u67e5\u627e\u56fe\u4e66
int Find_Book(Library_Data p,int n)
{
char name[20]="";
int k,Num=-1;
if(p.Num==0)
{
system("cls");
printf("\u73b0\u65e0\u56fe\u4e66\u8bb0\u5f55! ");
return 0;
}
else if(n==1)
{
system("cls"); /*\u6e05\u5c4f*/
printf("\u73b0\u5728\u662f\u5bf9\u56fe\u4e66\u4fe1\u606f\u8fdb\u884c\u67e5\u627e");
printf("\n*********************************************\n");
printf("\u8bf7\u8f93\u5165\u4f60\u8981\u67e5\u627e\u7684\u56fe\u4e66\u4e66\u540d:");
scanf("%s",name);
k=find(p,Num,name); /*\u8c03\u7528find()\u67e5\u627e\u51fd\u6570*/
if(k!=-1) /*\u6761\u4ef6\u6ee1\u8db3\u6267\u884c\u4e0b\u9762\u51fd\u6570*/
print(p.book[k]);
else
printf("\n \u6ca1\u6709\u627e\u5230\u4f60\u8981\u627e\u7684\u56fe\u4e66\u4fe1\u606f.\u6309\u4efb\u610f\u952e\u7ee7\u7eed\u3002");
}
else if(n==2)
{
system("cls"); /*\u6e05\u5c4f*/
printf("\u73b0\u5728\u662f\u5bf9\u56fe\u4e66\u4fe1\u606f\u8fdb\u884c\u67e5\u627e");
printf("\n*********************************************\n");
printf("\u8bf7\u8f93\u5165\u4f60\u8981\u67e5\u627e\u7684\u56fe\u4e66\u4e66\u53f7:");
scanf("%d",&Num);
k=find(p,Num,name); /*\u8c03\u7528find()\u67e5\u627e\u51fd\u6570*/
if(k!=-1) /*\u6761\u4ef6\u6ee1\u8db3\u6267\u884c\u4e0b\u9762\u51fd\u6570*/
print(p.book[k]);
else
printf("\n \u6ca1\u6709\u627e\u5230\u4f60\u8981\u627e\u7684\u56fe\u4e66\u4fe1\u606f.\u6309\u4efb\u610f\u952e\u7ee7\u7eed\u3002");
}
else
printf("\u4f60\u7684\u9009\u62e9\u6709\u8bef\uff01");
return 1;
}
//\u63d2\u5165\u56fe\u4e66
void add(Library_Data &p0)
{
int i,k,low,mid,high;
Book p1,*p2,*p3,*newbase;
system("cls");
if(p0.Num==0)
printf("\u56fe\u4e66\u4fe1\u606f\u8868\u8fd8\u6ca1\u6709\u521d\u59cb\u5316,\u9700\u8981\u5bf9\u56fe\u4e66\u4fe1\u606f\u8868\u8fdb\u884c\u521d\u59cb\u5316\u540e\u624d\u80fd\u8fdb\u884c\u63d2\u5165\u3002\n");
else
{
if(p0.length>=p0.listsize-1)
{
newbase=(Book *)realloc(p0.book,(p0.listsize+LISTINCREMENT)*sizeof(Book));
if(!newbase) exit(0);
p0.book=newbase;
p0.listsize+=LISTINCREMENT;
}
printf("\u8bf7\u8f93\u5165\u5f85\u63d2\u5165\u56fe\u4e66\u4fe1\u606f:\n");
printf("*********************************************\n");
printf("\u8bf7\u8f93\u5165\u56fe\u4e66\u4e66\u53f7\uff1a");
scanf("%d",&p1.BookNum);
printf("*********************************************\n");
printf("\u8bf7\u8f93\u5165\u56fe\u4e66\u4e66\u540d\uff1a");
scanf("%s",&p1.BookName);
printf("*********************************************\n");
printf("\u8bf7\u8f93\u5165\u56fe\u4e66\u4f5c\u8005\uff1a");
scanf("%s",&p1.BookWrite);
printf("*********************************************\n");
printf("\u8bf7\u8f93\u5165\u56fe\u4e66\u6570\u91cf\uff1a");
scanf("%d",&p1.numbers);
printf("*********************************************\n");
printf("\u8bf7\u8f93\u5165\u56fe\u4e66\u4ef7\u683c\uff1a");
scanf("%f",&p1.BookPrice);
printf("*********************************************\n");
low=0;high=p0.length;
if(p1.BookNum<p0.book[0].BookNum)
{
for(p2=&p0.book[p0.length];p2>=&p0.book[0];p2--)
*(p2+1)=*p2;
p0.book[0]=p1;
p0.Num+=p1.numbers;p0.length++;
}
else if(p1.BookNum>p0.book[p0.length-1].BookNum)
{
p0.book[p0.length]=p1;
p0.Num+=p1.numbers;p0.length++;
}
else
{
for(i=0;i<p0.length;i++)
if(p1.BookNum>=p0.book[i].BookNum && p1.BookNum<p0.book[i+1].BookNum) break;
for(p2=&p0.book[p0.length];p2>&p0.book[i];p2--)
*(p2+1)=*p2;
p0.book[i+1]=p1;
p0.Num+=p1.numbers;p0.length++;
}

}
}
//\u5220\u9664\u56fe\u4e66
void Delete_Book(Library_Data &LD,int n)
{
system("cls");
char name[20]="";
char a;
int i=0,k=0,Num=-1;
Book *p1,*p2;
if(LD.Num==0)
printf("\u73b0\u65e0\u56fe\u4e66\u8bb0\u5f55! ");
else
{
printf("\u8fdb\u884c\u56fe\u4e66\u4fe1\u606f\u5220\u9664");
printf("\n*********************************************\n");
if(n==1)
{
printf("\u8bf7\u8f93\u5165\u5f85\u5220\u9664\u56fe\u4e66\u4e66\u540d:"); /*\u63d0\u793a\u8f93\u5165\u8981\u5220\u9664\u7684\u56fe\u4e66\u4e66\u540d*/
scanf("%s",name);
printf("\u662f\u5426\u5220\u9664\u6240\u6709\u540c\u540d\u7684\u56fe\u4e66\uff1f\u201cy\u201d\u662f\uff0c\u5176\u4ed6\u952e\u53ea\u5220\u9664\u7b2c\u4e00\u4e2a\uff1a");
if(getch()=='y') /*\u5220\u9664\u6240\u6709\u540c\u540d\u56fe\u4e66\u4fe1\u606f*/
{
for(i=0;i<LD.length;i++)
{
if(strcmp(name,LD.book[i].BookName)==0)
{
p2=&LD.book[LD.length-1];
LD.Num-=LD.book[i].numbers;
for(p1=&LD.book[i];p1<=p2;p1++)
*p1=*(p1+1);
LD.length--;k=1;i=-1;
}
}
if(k==0) printf("\n\u6ca1\u6709\u4f60\u8981\u5220\u9664\u7684\u8bb0\u5f55\n");
else printf("\n\u6240\u6709\u56fe\u4e66\u540d\u4e3a%s\u7684\u4fe1\u606f\u5df2\u88ab\u5220\u9664!\n",name); /*\u663e\u793a\u5df1\u88ab\u5220\u9664\u7684\u4fe1\u606f*/
}
else
{

i=find(LD,Num,name);
if(i==-1) printf("\n\u6ca1\u6709\u4f60\u8981\u5220\u9664\u7684\u8bb0\u5f55\n");
else /*\u5220\u9664\u7b2c\u4e00\u672c\u76f8\u540c\u7684\u56fe\u4e66\u4fe1\u606f*/
{
p2=&LD.book[LD.length-1];
LD.Num-=LD.book[i].numbers;
for(p1=&LD.book[i];p1<=p2;p1++)
*p1=*(p1+1);
printf("\n\u56fe\u4e66\u53f7\u4e3a%s\u7684\u4fe1\u606f\u5df2\u88ab\u5220\u9664!\n",name); /*\u663e\u793a\u5df1\u88ab\u5220\u9664\u7684\u4fe1\u606f*/
LD.length--;

}
}
}
else if(n==2)
{
printf("\u8bf7\u8f93\u5165\u5f85\u5220\u9664\u56fe\u4e66\u4e66\u53f7:"); /*\u63d0\u793a\u8f93\u5165\u8981\u5220\u9664\u7684\u56fe\u4e66\u4e66\u53f7*/
scanf("%d",&Num);
i=find(LD,Num,name);
if(i==-1) printf("\u6ca1\u6709\u4f60\u8981\u5220\u9664\u7684\u8bb0\u5f55\n");
else
{
p2=&LD.book[LD.length-1];
LD.Num-=LD.book[i].numbers;
for(p1=&LD.book[i];p1<=p2;p1++)
*p1=*(p1+1);
printf("\u56fe\u4e66\u53f7\u4e3a%d\u7684\u4fe1\u606f\u5df2\u88ab\u5220\u9664!\n",Num); /*\u663e\u793a\u5df1\u88ab\u5220\u9664\u7684\u4fe1\u606f*/
LD.length--;
}
}
else
printf("\u4f60\u7684\u9009\u62e9\u6709\u8bef\uff01");
}
}
//\u663e\u793a\u6240\u6709\u56fe\u4e66\u4fe1\u606f
void ShowBookTable(Library_Data p,int n)
{
int i;
system("cls");
if(n==0)
printf("\u73b0\u65e0\u56fe\u4e66\u8bb0\u5f55! ");
else
{
printf("\u73b0\u5728\u6709%d\u672c\u56fe\u4e66\u7684\u4fe1\u606f\u3002",n);
printf("\n**********************************************************************\n");
printf("\u56fe\u4e66\u4e66\u53f7 \u56fe\u4e66\u4e66\u540d \u56fe\u4e66\u4f5c\u8005 \u56fe\u4e66\u6570\u91cf \u56fe\u4e66\u5355\u4ef7\uff08\u5143\uff09\n");
for(i=0;i<p.length;i++)
{
printf("----------------------------------------------------------------------\n");
printf("%-14d%-14s%-14s%-14d%-14f\n",p.book[i].BookNum,p.book[i].BookName,p.book[i].BookWrite,p.book[i].numbers,p.book[i].BookPrice);
}
printf("**********************************************************************\n");
}
}
//\u83dc\u5355\u51fd\u6570
int menu_select() /*\u5b9a\u4e49\u83dc\u5355\u51fd\u6570*/
{
int c;
printf("\u6309\u4efb\u610f\u952e\u8fdb\u5165\u9009\u62e9\u83dc\u5355\u2026\u2026\n"); /*\u63d0\u793a\u538b\u4efb\u610f\u952e\u7ee7\u7eed*/
getch(); /*\u8bfb\u5165\u4efb\u610f\u5b57\u7b26*/
system("cls"); /*\u6e05\u5c4f*/
printf("********************\u83dc\u5355\u9009\u9879\u5982\u4e0b****************\n\n"); /*\u4ee5\u4e0b\u4e3a\u4e3b\u83dc\u5355*/
printf(" 1. \u521d\u59cb\u5316\u56fe\u4e66\u4fe1\u606f\u8868\n");
printf(" 2. \u663e\u793a\u5168\u90e8\u56fe\u4e66\u8bb0\u5f55\n");
printf(" 3. \u67e5\u627e\u56fe\u4e66\u8bb0\u5f55\n");
printf(" 4. \u5220\u9664\u56fe\u4e66\u8bb0\u5f55\n");
printf(" 5. \u63d2\u5165\u65b0\u8bb0\u5f55\n");
printf(" 6. \u9000\u51fa\u7cfb\u7edf\n");
printf("***********************************************\n");
do{
printf("\n \u8f93\u5165\u60a8\u7684\u9009\u62e9(1~6):"); /*\u63d0\u793a\u8f93\u5165\u9009\u9879*/
scanf("%d",&c); /*\u8f93\u5165\u9009\u62e9\u9879*/
if(!(c>=1&&c<=6))
{printf(" \u4f60\u7684\u8f93\u5165\u6709\u8bef\uff0c\u8bf7\u91cd\u65b0\u8f93\u5165\u2026\u2026");}
}while(c6); /*\u9009\u62e9\u9879\u4e0d\u57280~6\u4e4b\u95f4\u91cd\u8f93*/
return c; /*\u8fd4\u56de\u9009\u62e9\u9879\uff0c\u4e3b\u7a0b\u5e8f\u6839\u636e\u8be5\u6570\u8c03\u7528\u76f8\u5e94\u7684\u51fd\u6570*/
}

void main()
{
Library_Data LD;
LD.Num=0;
int n,m;
for(;;) /*\u65e0\u9650\u5faa\u73af*/
{
switch(menu_select())
{
case 1:Create_Data(LD);break; /*\u521d\u59cb\u56fe\u4e66\u751f\u4fe1\u606f*/
case 2:ShowBookTable(LD,LD.Num);break; /*\u663e\u793a\u5168\u90e8\u56fe\u4e66\u4fe1\u606f*/
case 3:
printf("\u8bf7\u4f60\u9009\u62e9\u67e5\u627e\u65b9\u5f0f\uff08\u201c1\u201d\u4e3a\u6309\u4e66\u540d\u67e5\u627e\uff0c\u201c2\u201d\u4e3a\u6309\u4e66\u53f7\u67e5\u627e\uff09\uff1a");
scanf("%d",&n);
Find_Book(LD,n);break; /*\u67e5\u627e\u56fe\u4e66\u4fe1\u606f*/
case 4:
printf("\u8bf7\u4f60\u9009\u62e9\u5220\u9664\u65b9\u5f0f\uff08\u201c1\u201d\u4e3a\u6309\u4e66\u540d\u5220\u9664\uff0c\u201c2\u201d\u4e3a\u6309\u4e66\u53f7\u5220\u9664\uff09\uff1a");
scanf("%d",&m);
Delete_Book(LD,m);break; /*\u5220\u9664\u56fe\u4e66\u4fe1\u606f*/
case 5:add(LD);break; /*\u63d2\u5165\u56fe\u4e66\u4fe1\u606f*/
case 6:exit(0); /*\u7ed3\u675f\u7a0b\u5e8f*/
}
}
}

const int MAXLEN=100;int count; //记录书籍数量char fName[20]="backup.dat"; //磁盘文件:书籍信息文件名 int LEN; //全局变量,通讯录中当前联系人总数int n;char *key;
typedef struct book //联系人数据结构
{ char no[20]; //序号 char book_name[20]; // 书名 char writer[30]; //作者名 char booknum[20]; //书籍分类 char press[20]; //出版单位 char price[10]; //书籍价格 }BOOK;BOOK b[MAXLEN];
typedef struct index{ int len; //数组长度 BOOK b[MAXLEN]; //指针数组}Index;
int Select();int Menu(void);int SubMenu2(void);int SubMenu4(void);int addbook(BOOK b[]);int output(BOOK b[]);int deletebook(BOOK b[]);void printno(BOOK b[]);int modifyIndo(BOOK b[]);int Save(BOOK b[]); int loaddata(BOOK b[]);int Copy(void);void New(BOOK b[]);int Load(BOOK b[]);void List(BOOK b[]);//void findbook(char *name,BOOK b[],char *key);
#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#include<memory.h>int main(int argc, char* argv[]){ int select=0;
/*int select;用户所选的菜单项代码: 主菜单:1 查找图书信息、2 更新图书信息 、3 备份图书信息、0 退出程序 更新图书信息子菜单:21 新增图书信息、 22 编辑图书信息、 23 删除图书信息、 20 返回主菜单 查看图书信息子菜单:11 图书信息库 、12书名查找、13 作者名查找、14 序号查找 */
BOOK b[MAXLEN]; memset(b,0,sizeof(b)); //将b初始化为空,memory.h loaddata(b); //从图书库文件中读取信息 //循环显示菜单,供用户选择 do{
if(select<10||select==20||select==40) select=Menu(); else if(select>20 && select<30) select=SubMenu2(); else if(select>40 && select<50) select=SubMenu4(); switch(select) { case 11:// 图书信息库 break; case 12://书名查找 break;
case 13://作者名查找 break; case 14://类别查找 break;
case 21://新增图书信息、 break; case 22://编辑图书信息、 break; case 23://删除图书信息、 break; case 20://返回主菜单 break; case 3: system("cls"); Save(b); Copy(); break; case 0://退出程序 break; } }while(select!=0); return 0;}
int SubMenu4(void){ char menu; do{ system("cls");//清屏,需要使用到stdlib.h puts("\n\t======更新图书信息======\n"); puts("\t 1.新增图书信息"); puts("\t 2.删除图书信息"); puts("\t 3.编辑图书信息"); puts("\t 0.返回主菜单"); puts("\n\t=================="); printf("\t请选择:");//提示选择 menu=getche(); switch(menu) { case '0': puts("\n\n\t返回主菜单!"); break; case '1': addbook(b); break; case '2': deletebook(b); break; case '3': modifyIndo(b); break; default: puts("\n\n\t选择错误!"); menu='9'; } }while(menu=='9'); return 40+menu-'0';}
void New(BOOK b[]){ int t=0; //找到BOOK中第一个空的位置,存放新输入 if(LEN>=MAXLEN) { printf("\n\n\t图书库已满!"); return ; }
while(strcmp(b[t].book_name,"")!=0) //找到b中第一个空的位置t t++; addbook(b); //新增,输入 LEN++; //增1}
int modifyIndo(BOOK b[])//编辑图书信息{ char no[20]; int i; printno(b);again: printf("\n请输入你想要编辑的书籍编号:"); fflush(stdin); gets(no); for(i=0;i<=count;i++) { if(strcmp(no,b[i].no)==0) break; } if(i>count) { printf("对不起,你输入的编号不存在,是否继续?Y/N:"); if((getchar()=='Y')||(getchar()=='y')) goto again; else return 0; } printf("\n正在修改《%s》的信息……\n",b[i].book_name); printf("请输入图书的名字:"); gets(b[i].book_name); printf("请输入图书的作者名:"); gets(b[i].writer); printf("请输入书籍类别:"); gets(b[i].booknum); printf("请输入书籍的出版单位:"); gets(b[i].press); printf("请输入书籍的价格:"); gets(b[i].price); printf("\n图书信息编辑成功!\n");

}
void printno(BOOK b[]){ int i; printf("\n当前库存中的书籍目录:\n"); for( i=0;i<=count;i++) { printf("%s %s ",b[i].no,b[i].book_name); if(i%3==0&&i>0) printf("\n"); }}
int output(BOOK b[]) //输出图书信息{ if(count<0) { printf("对不起,当前图书数量为0\n"); return 0; } for(int i=0;i<=count;i++) { printf("\n*************************书籍信息*****************************\n"); printf("序号:%s\n",b[i].no); printf("书名:%s\n",b[i].book_name); printf("作者名:%s\n",b[i].writer); printf("书籍类别:%s\n",b[i].booknum); printf("出版单位:%s\n",b[i].press); printf("书籍价格:%s\n",b[i].price); } return 1; }
int deletebook(BOOK b[]) { char no[20]; int i; printno(b);loop: printf("\n请输入你要删除的书籍编号:"); fflush(stdin); gets(no); for(i=0;i<=count;i++) { if(strcmp(no,b[i].no)==0) break; } if(i>count) { printf("对不起,你输入的编号不存在,是否继续?Y/N:"); if((getchar()=='Y')||(getchar()=='y')) goto loop; else return 0; } printf("您确定要删除《%s》吗?Y/N:",b[i].book_name); if((getchar()=='Y')||(getchar()=='y'))
{ if(i==count) { count--; } else { for(;i<=count;i++) { b[i]=b[i+1]; count--; }
}
} else return 0; }
int loaddata(BOOK b[]){ int i=0; //i:b数组的下标 FILE *fp=fopen(fName,"r"); if(!fp) { printf("\n\t对不起,路径或者文件错误,无法读入!请重新增加!"); getch(); return 0; } fscanf(fp,"书籍编号\t书名\t作者\t类别\t出版单位\t价格"); while((!feof(fp))) { fscanf(fp,"\n%s\t%s\t%s\t%s\t%s\t%s",&b[i].no,&b[i].book_name,&b[i].writer,&b[i].booknum,&b[i].press,&b[i].price); i++; } count=i; fclose(fp); printf("加载成功!!"); return 1;}
int Select(){ int i=0; int c; //c:scanf输入的返回值,输入成功返回1;否则返回0 printf("\n\t请按需要选择图书信息:"); c=scanf("%d",&i); while(i<1 || i>LEN) { printf("\n\t输入错误!请按序号选择图书信息:"); if(c==0) fflush(stdin); c=scanf("%d",&i); } return i-1;} int addbook(BOOK b[]) //增加图书信息{ int i=0; char c; printf("\n*******************************新增图书信息****************************\n"); for(;;i++) { if(i>=MAXLEN) { printf("\n对不起,库存已满!不能继续添加。"); } printf("请输入图书的序号:"); gets(b[i].no); printf("请输入图书的名字:"); gets(b[i].book_name); printf("请输入图书的作者名:"); gets(b[i].writer); printf("请输入书籍类别:"); gets(b[i].booknum); printf("请输入书籍的出版单位:"); gets(b[i].press); printf("请输入书籍的价格:"); gets(b[i].price); printf("图书增加成功!\n"); printf("请问您要继续添加书籍信息吗?(Y/N): "); c=getchar(); if(c=='Y'||c=='y') { getchar(); printf("\n"); continue; } else break; } count=i; return i;
}//查重。int Duplicate(char *name,BOOK b[],char *original){ int i,j; int dup=0; //重复标志:1 重复 ,0 没有重复 if(strcmp(name,original)!=0) for(i=0,j=0;j<LEN;) { while(strcmp(b[i].book_name,"")==0) i++;
if(strcmp(name,b[i].book_name) ==0) { dup=1; printf("\n\t重复!请重新输入:"); break; } i++; j++; } return dup; }int SubMenu2(void){ char menu,*name; do{ system("cls"); //清屏,需要使用到stdlib.h puts("\n\t======查找图书信息======\n"); puts("\t 1.图书信息库"); puts("\t 2.书名查找"); puts("\t 3.作者名查找"); puts("\t 4.序号查找"); puts("\t 0.返回主菜单"); puts("\n\t=================="); printf("\t请选择:"); //提示选择 menu=getche(); switch(menu) { case '0': puts("\n\n\t返回主菜单!"); break; case '1': output(b); getch(); break; case '2': //findbook(name,b,key); getch(); break; case '3': case '4': printno(b); break; default: puts("\n\n\t选择错误!"); menu='9'; } }while(menu=='9'); return 20+menu-'0';}
int Menu(void){ char menu; do{ system("cls"); puts("\n\t======主菜单======\n"); puts("\t 1.查找图书信息"); puts("\t 2.更新图书信息"); puts("\t 3.备份图书信息"); puts("\t 0.退出程序"); puts("\n\t=================="); printf("\t请选择:"); //提示选择 menu=getche(); switch(menu) //将用户输入的选项menu转换成系统定义的菜单代码 {
case '0': puts("\n\n\t退出程序!"); menu=menu-'0'; break;
case '2': menu=SubMenu4();
break; case '3': menu=menu-'0';
break; case '1': menu=SubMenu2();
break; default: puts("\n\n\t选择错误!"); menu='9'; //输入了无效的菜单代码,需要重新输入 } }while(menu=='9'); return menu;}
int Load(BOOK b[]){ FILE *fin; int i=0; fin=fopen(fName,"rb"); if(!fin) { printf("\n\t书籍信息不存在,请先新增加图书信息!\n\n按任意键继续……"); getch(); return 0; } while(1) { fread(&b[i],sizeof(BOOK),1,fin); if(feof(fin)) break; i++; } fclose(fin); LEN=i; return i;
}
int Save(BOOK b[])//存入文件 {
int i; //i:b数组的下标 FILE *fp=fopen(fName,"w"); if(!fp) { printf("\n\t不能正确保存书籍信息!按任意键继续……"); getch(); return 0; } fprintf(fp,"书籍编号\t书名\t作者\t类别\t出版单位\t价格"); for( i = 0; i <=count; i++) { fprintf(fp,"\n%s\t%s\t%s\t%s\t%s\t%s",b[i].no,b[i].book_name,b[i].writer,b[i].booknum,b[i].press,b[i].price); } fclose(fp); printf("保存成功!!"); return 1;}
int Copy(void) //备份图书信息,复制图书信息文件{ FILE *fout,*fin; BOOK *p=(BOOK *)malloc(sizeof(BOOK)); //存放从图书信息库读入的临时数据 char name[20];
fin=fopen(fName,"rb"); if(!fin) { printf("\n\t没有此图书信息!"); return 0; }
do{ printf("\n\t请输入备份文件名:"); scanf("%s",name); strcat(name,".bak"); fout=fopen(name,"wb"); if(!fout) printf("\t无效文件名或路径!\n"); }while(!fout);
while(1) { fread(p,sizeof(BOOK),1,fin); if(feof(fin)) break; fwrite(p,sizeof(BOOK),1,fout); }
printf("\n\t备份成功!"); free(p); return 1;}
void findbook(char *name,BOOK b[],char *key){
int i,j; //i:数组下标 j:除姓名为空串以外的实际人数 int dup=0; printf("请输入您需要查找图书信息的书名:"); scanf("%s",name); if(strcmp(name,key)!=0) for(i=0,j=0;j<LEN;) { while(strcmp(b[i].book_name ,"")==0) i++; if(strcmp(name,b[i].book_name) ==0) { dup=1; printf("\n%s\t%s\t%s\t%s\t%s\t%s",&b[i].no,&b[i].book_name,&b[i].writer,&b[i].booknum,&b[i].press,&b[i].price); } }}

帮你搞定图书信息管理系统
Q我就可以了
原创

  • C璇█鍥句功淇鎭鐞嗙郴缁,鍏蜂綋鎿嶄綔鍖呮嫭鍥句功淇℃伅鐨勫綍鍏ャ佹坊鍔犮佹樉绀恒佹煡鎵...
    绛旓細cerr<<"open file_people fail"<<endl;exit(-1);} file_b<<*ibp<<endl;file_b.close();}
  • C璇█绋嬪簭璁捐鈥斺旇亴宸ヤ俊鎭鐞嗙郴缁(鎬)
    绛旓細鎴戠殑 C璇█绋嬪簭璁捐鈥斺旇亴宸ヤ俊鎭鐞嗙郴缁(鎬) 5 璁捐鍜屽疄鐜颁竴涓鈥滆亴宸ヤ俊鎭鐞嗙郴缁熲,婊¤冻浠ヤ笅瑕佹眰:1.绯荤粺浠ヨ彍鍗曟柟寮忓伐浣;2.浣跨敤閾捐〃鎴栫粨鏋勬暟缁勫鑱屽伐淇℃伅杩涜绠$悊鍜岀淮鎶;3.浣跨敤浜岃繘鍒舵枃浠跺湪纾佺洏涓婁繚瀛樿亴宸ヨ褰曚俊鎭;4.閾捐〃涓悇... 璁捐鍜屽疄鐜颁竴涓滆亴宸ヤ俊鎭鐞嗙郴缁熲,婊¤冻浠ヤ笅瑕佹眰:1.绯荤粺浠ヨ彍鍗曟柟寮忓伐浣;2....
  • 鑷崘淇¤寖鏂
    绛旓細鍦ㄥ洓骞寸殑瀛︿範鐢熸椿涓,鎴戞墍瀛︿範鐨勫唴瀹瑰寘鎷簡浠庤绠楁満鍩虹鐭ヨ瘑鍒拌繍鐢ㄧ瓑璁稿鏂归潰銆傛墍瀛︿笓涓氳绋嬫湁锛堟暟鎹粨鏋勩佽绠楁満缁勬垚鍘熺悊銆佹搷浣滅郴缁熴佽绠楁満缃戠粶鏁版嵁搴撳師鐞嗐C璇█绛夌瓑锛夛紝閫氳繃瀵硅繖浜涚煡璇嗙殑瀛︿範,鎴戝杩欎竴棰嗗煙鐨勭浉鍏崇煡璇嗘湁浜嗕竴瀹氱▼搴︾殑鐞嗚В鍜屾帉鎻,姝や笓涓氭槸涓绉嶅伐鍏,鑰屽埄鐢ㄦ宸ュ叿鐨勮兘鍔涙槸鏈閲嶈鐨,鍦ㄤ笌璇剧▼...
  • 姹鐢–璇█缂栧啓涓涓 閫氳褰曠鐞嗙郴缁 銆璁捐瑕佹眰濡備笅
    绛旓細璁捐鍜屽疄鐜颁竴涓鈥滈氫俊褰曠鐞嗙郴缁熲,瀹炵幇瀵逛釜浜洪氫俊褰曡繘琛岀鐞,骞舵弧瓒充互涓嬭姹:1.绯荤粺浠ヨ彍鍗曟柟寮忓伐浣;2.浣跨敤閾捐〃瀵归氫俊褰曚俊鎭繘琛岀鐞嗗拰缁存姢;3.浣跨敤浜岃繘鍒舵枃浠跺湪纾佺洏涓婁繚瀛橀氫俊褰... 璁捐鍜屽疄鐜颁竴涓滈氫俊褰曠鐞嗙郴缁熲,瀹炵幇瀵逛釜浜洪氫俊褰曡繘琛岀鐞,骞舵弧瓒充互涓嬭姹:1.绯荤粺浠ヨ彍鍗曟柟寮忓伐浣;2.浣跨敤閾捐〃瀵归氫俊褰曚俊鎭繘琛岀...
  • 璁$畻鏈鸿嚜鎴戜粙缁嶄俊鎬庝箞鍐
    绛旓細閫忚繃鍥涘勾鐨勮嫤璇,鎴戞帉鎻′簡C璇█銆佹眹缂栬瑷銆佺紪璇戝師鐞嗐丳owerbuilder,鏁版嵁搴撳師鐞,骞跺闈㈠悜瀵硅薄鐨凜++鍜孷C++绛塛indows缂栫▼鏈夊繀椤讳簡瑙c傝澶栨垜杩樿嚜瀛︿簡Delphi缂栫▼,ASP鍔ㄦ佺綉椤靛強缃戠粶鏁版嵁搴撱傚濂借绠楁満鍔″繀鏈夎繃纭殑澶栬姘村钩,鎴戜互杈冨ソ鐨勬垚缁╄繛缁ч忚繃浜嗗浗瀹惰嫳璇洓绾ц冭瘯,鐜板凡鑳介槄璇诲苟缈昏瘧璁$畻鏈鸿祫鏂欍傚彟澶栧煎緱涓鎻愮殑鏄垜鍒╃敤...
  • c璇█浠涔堟剰鎬
    绛旓細涓銆C璇█鐨勫熀鏈杩 C璇█鏄竴绉嶈繃绋嬪紡缂栫▼璇█锛岃繖鎰忓懗鐫瀹冨厑璁稿紑鍙戣呴氳繃瀹氫箟涓绯诲垪姝ラ鏉ユ寚绀鸿绠楁満鎵ц鐗瑰畾浠诲姟銆傝繖绉嶈瑷鍦璁捐鍜屽疄鐜绠楁硶鏂归潰闈炲父寮哄ぇ锛屽挨鍏舵槸鍦ㄩ渶瑕侀珮鏁堢巼鐨勭郴缁熺骇缂栫▼涓〃鐜扮獊鍑恒備簩銆丆璇█鐨勭壒鐐 1. 鐏垫椿鎬э細C璇█鎻愪緵浜嗗緢楂樼殑鐏垫椿鎬э紝鍏佽寮鍙戣呯洿鎺ユ搷浣滃唴瀛橈紝杩涜浣庣骇鍒殑纭欢...
  • c璇█鏁版嵁缁撴瀯鏄粈涔
    绛旓細鈥滄暟鎹粨鏋勨濆湪璁$畻鏈虹瀛︿腑鏄竴闂ㄧ患鍚堟х殑涓撲笟鍩虹璇俱傛暟鎹粨鏋勬槸浠嬩簬鏁板銆佽绠楁満纭欢鍜岃绠楁満杞欢涓夎呬箣闂寸殑涓闂ㄦ牳蹇冭绋嬨傛暟鎹粨鏋勮繖涓闂ㄨ鐨勫唴瀹逛笉浠呮槸涓鑸▼搴忚璁$殑鍩虹锛岃屼笖鏄璁捐鍜屽疄鐜缂栬瘧绋嬪簭銆佹搷浣滅郴缁熴佹暟鎹簱绯荤粺鍙婂叾瀹冪郴缁熺▼搴忕殑閲嶈鍩虹銆傝绠楁満鏄竴闂ㄧ爺绌剁敤璁$畻鏈鸿繘琛屼俊鎭〃绀哄拰澶勭悊鐨勭瀛︺傚湪...
  • 鎬庢牱鍋鍥句功棣嗚鑰呯殑鍩烘湰璧勮杈撳叆 淇敼,鍌ㄥ瓨,鏌ヨ
    绛旓細4.2.3 璇昏呮煡璇功绫嶈繃绋:(1)璧勬枡娴佸浘: D璇昏 鏌ヨ璁稿彲妫楠岃祫鏂欐煡璇鍥句功璁块棶璁板綍璇昏呭簱鍥句功搴撴楠岄敊璇 浣跨敤鑰呰祫璁)鏌ヨ璧勮鏃ュ巻A鏌ヨ缁撴灉CB A.鍥句功璧勮;B.璇昏呰祫璁;C.鍥句功璁块棶璁板綍;D.鏃ユ湡; 鍥句功棣嗕繚鎸佸畨闈欏仛鏂囨槑璇昏呯殑鏍囪 杩欎簺閮芥槸鍝堜經澶у鍥句功棣嗗澹佷笂鐨勮瘽,涓瀹氫細璀﹂啋閭d簺鍦ㄥ浘涔﹂绐冪獌绉佽鐨勪汉 1銆佹鍒绘墦鐩,浣...
  • 濡備綍鐢–璇█瀹炵幇璁捐鍜屽疄鐜澶氶」寮忚繍绠?
    绛旓細2014-12-03 鐢–璇█璁捐绋嬪簭瀹炵幇澶氶」寮忕浉涔樼殑闂,闂濡備笅 2 2012-04-07 濡備綍鐢–璇█瀹炵幇澶氶」寮忕殑鍔犳硶鍜屼箻娉 1 2015-04-03 C璇█绋嬪簭棰:缂栧啓绋嬪簭瀹炵幇澶氶」寮忚绠 15 2011-04-19 璁捐涓涓鏁版嵁缁撴瀯(C璇█鐗),瀹炵幇澶氶」寮忕殑鎿嶄綔 2019-03-17 c璇█鎬庝箞鐢ㄥ爢鏍堝疄鐜板椤瑰紡鐨勫姞娉曡繍绠 1 2016-04-23 涓鍏冨椤...
  • 澶у鐢熻嚜鑽愪俊
    绛旓細鎴戞繁鐭ュ綋浠婄ぞ浼氶渶瑕佺殑鏄鍚堝瀷浜烘墠,鍦ㄥ濂戒笓涓氱煡璇嗙殑鍚屾椂,鎴戣鐪熷涔犺绠楁満銆佽嫳璇瓑鐭ヨ瘑,鑾峰緱浜嗚绠楁満C璇█浜岀骇銆佽嫳璇叚绾х瓑璧勬牸璇佷功,骞惰兘澶熺啛缁冩搷浣渨ord銆乪xcel銆丳owerPoint绛塷ffice鍔炲叕杞欢銆傜劧鑰,浣滀负涓鍚嶅ぇ瀛︾敓,鎴戞椂鍒绘彁閱掕嚜宸卞繀椤昏涓嶆柇鎻愰珮鑷韩缁煎悎鑳藉姏绱犺川,鍥犳,鑷ぇ涓璧,鎴戜究绉瀬鍚戝厷缁勭粐闈犳嫝,鍙傚姞鍏氭牎瀛︿範,骞跺湪澶...
  • 扩展阅读:一节课就可以学会c++视频 ... 少儿编程到底有多可怕 ... 少儿编程学c++值得吗 ... 少儿编程是学什么的 ... 少儿编程一共有几级 ... 学习c++用什么软件 ... 少儿编程的三大证书 ... 少儿编程哪个含金量高 ... 少儿编程适合多大孩子 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网