求助,大家帮我指出下面的错误,一个程序(图书管理系统),谢啦
#include<stdio.h> #include<stdlib.h> /*引入函数库*/
#include<string.h>
#include<conio.h>
struct lib /*声明一个结构体类型*/
{
int num; /*定义变量*/
char bookname[10];
char name[10];
int no;
char ltd[20];
int time;
float money;
struct iib *next;
}
lib1[50];
struct lib *head=NULL;
int i;
void save()/*输出信息到文件,并释放链表空间*/
{
struct lib *p=NULL;
FILE *fp;
char *filename="book.txt";
if(head==NULL)
{
printf("\n记录为空!\n");
return;
}
else
p=head->next;
if((fp=fopen(filename,"w"))==NULL)
{
printf("\n打不开文件!\n");
return;/*出错处理,退出函数*/
}
while(p!=NULL)
{
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%f\t\n",p->num,p->bookname,p->name,p->no,p->ltd,p->time,p->money);
p=p->next;
}
printf("保存完毕!\n");
fclose(fp);
for(;head->next!=NULL;)/*删除除头条目以外所有申请空间,释放链表空间*/
{
p=head->next;
head->next=head->next->next;
free(p);
}
free(head);/*释放头条目空间*/
}
void shuru()
{
char a;
do
{
printf("\n请输入登录号:");
scanf("%d",&lib1[i].num);
printf("\n请输入书名:");
scanf("%s",lib1[i].bookname);
printf("\n请输入作者:");
scanf("%s",lib1[i].name);
printf("\n请输入分类号:");
scanf("%d",&lib1[i].no);
printf("\n出版单位:");
scanf("%s",lib1[i].ltd);
printf("\n出版时间:");
scanf("%d",&lib1[i].time);
printf("\n价格:");
scanf("%f",&lib1[i].money);
printf("\n继续输入另外一本书信息,请输入y\n返回主菜单按任意键结束\n");
scanf("%s",&a);
i++;
}
while(a=='y' && i<=50);
save();
}
void xianshi()
{
int j;
for(j=0;j<i;j++)
printf("登录号为:%d\n书名:%s\n作者:%s\n分类号:%d\n出版单位:%s\n出版时间:%d\n价格:%.2f\n\n\n",
lib1[j].num,lib1[j].bookname,lib1[j].name,lib1[j].no,lib1[j].ltd,lib1[j].time,lib1[j].money);
}
void paixu() /*按分类号从大到小排序函数*/
{
int j,k;
int temp;
for(j=0;j<i;j++)
{
for(k=0;k<i-1-j;k++)
{
if(lib1[k].no<lib1[k+1].no)
{
temp=lib1[k].no;
lib1[k].no=lib1[k+1].no;
lib1[k+1].no=temp;
}
}
}
xianshi(); /*排序后输出*/
}
void chazhao()
{
int m;
char name[20],b;
do
{
printf("\n请输入想查找的书名:");
scanf("%s",&name);
for(m=0;m<i;m++)
{
if(strcmp(name,lib1[m].name)==0)
{
printf("\n\t您查找的书在第%d个位置找到了!!!\n",m+1);
break;
}
}
if(m>=20)
printf("\n\t没有找到这本书!!!\n");
else
{
printf("登录号:%d\n书名:%s\n作者:%s\n分类号:%d\n出版单位:%s\n出版时间:%d\n价格:%.2f\n\n\n",
lib1[m].num,lib1[m].bookname,lib1[m].name,lib1[m].no,lib1[m].ltd,lib1[m].time,lib1[m].money);
}
printf("\n继续输入另外一本书信息,请输入y\n返回主菜单按任意键结束\n");
scanf("%s",&b);
}while(b=='y');
}
void shanchu()
{
char name[20],c;
int a,b;
do
{
printf("\n请输入要删除的书名:\n");
scanf("%s",&name);
for(a=0;a<i;a++)
{
if(strcmp(name,lib1[a].name)==0) /*比较字符串的大小*/
break;
}
for(b=a;b<i;b++)
lib1[b]=lib1[b+1];
if(a>i)
printf("\t没有找到这本书!!!\n");
else
{
i--;
xianshi();
}
printf("\n是否继续删除另一本书信息?(y/n) ");
scanf("%s",&c);
}
while(c=='y');
}
void charu()
{
shuru();
paixu();
}
void main() /*主函数*/
{
int change;
do{
system("cls");
printf("\t********************图书信息管理系统********************\n\n\n");
printf("\t\t\t 1: 输入图书信息\n");
printf("\t\t\t 2: 显示图书信息\n");
printf("\t\t\t 3: 查找图书信息\n");
printf("\t\t\t 4: 删除图书信息\n");
printf("\t\t\t 5: 插入图书信息\n");
printf("\t\t\t 6: 退出程序\n\n");
printf("请输入功能选项:");
scanf("%d",&change);
switch(change)
{
case 1:
shuru();save(); break;
case 2:
xianshi(); break;
case 3:
chazhao(); break;
case 4:
shanchu(); break;
case 5:
charu(); break;
case 6:
break;
}
getch();
}
while(change!=6);
}
[ 本帖最后由 genggood 于 2010-6-9 12:50 编辑 ]