求大神帮助!!急!
图书馆管理系统
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
typedef struct
{
char ISBN[10];
char book[30];
char author[20];
int edition;
char press[50];
int year;
}Bookinfo;
static int n=0;
int menu_select()
{
char c;
do {
system("cls");
printf("0316\n");
printf("贾");
printf("1.Input records\n");
printf("2.Display All Records\n");
printf("3.Delete a Record\n");
printf("4.Sort\n");
printf("5.Insert a Record\n");
printf("6.Query\n");
printf("7.Add Records from a Text File\n\n\n");
printf("8.Write to a Text File\n");
printf("0.Quit\n");
printf("Give your choice:");
c=getchar();
}while(c<'0'||c>'8');
return(c-'0');
}
int Input(Bookinfo dictList[],int n)
{
int i;
printf("请输入书号:");
scanf("%s",dictList[n].ISBN);
printf("\n请输入书名:");
scanf("%s",dictList[n].book);
printf("\n请输入作者:");
scanf("%s",dictList[n].author);
printf("\n请输入版本号:");
scanf("%d",&dictList[n].edition);
printf("\n请输入出版社名:");
scanf("%s",dictList[n].press);
printf("\n请输入出版年:");
scanf("%d",&dictList[n].year);
printf("\n添加成功");
n+=1;
printf("\n确认是否输入下一条记录(是请按1)");
scanf("%d",&i);
if(i==1) n=Input(dictList,n);
else return(n);
}
void Display(Bookinfo dictList[],int n)
{
int i;
for(i=1;i<n;i++)
{
printf("-10s",dictList[i].ISBN);
printf("-30s",dictList[i].book);
printf("-20s",dictList[i].author);
printf("-20d",dictList[i].edition);
printf("-50s",dictList[i].press);
printf("-4d",dictList[i].year);
printf("\n");
if(i%10==0)
{
system("pause");
system("cls");
}
}
}
int Delete(Bookinfo dictList[],int n,char *book)
{
int i;
for(i=0;i<n;i++)
{
if(strcmp(book,dictList[i].book)==0)
{
printf("-10s",dictList[i].ISBN);
printf("-30s",dictList[i].book);
printf("-20s",dictList[i].author);
printf("-20d",dictList[i].edition);
printf("-50s",dictList[i].press);
printf("-4d",dictList[i].year);
printf("\n");
}
printf("请输入待删除书的书号");
for(;i<n;i++)
dictList[i]=dictList[i+1];
n-=1;
return(n);
}
}
int Delete_a_record(Bookinfo dictList[],int n)
{
char name[30];
char *book=name;
int i;
printf("请输入待删除的书名:");
scanf("%s",name);
printf("是否删除?(确定请按1)");
if(i==1)
n=Delete(dictList,n,name);
return(n);
}
void Sort_by_name(Bookinfo dictList[],int n)
{
int i,j,k;
Bookinfo t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(dictList[k].book,dictList[j].book)>0) k=j;
if(k!=i)
{ t=dictList[i]; dictList[i]=dictList[k]; dictList[k]=t; }
}
}
int Insert(Bookinfo dictList[],int n,Bookinfo *s)
{
int i;
for(i=0;i<n;i++)
if(strcmp(dictList[i].book,(*s).book)>0)
dictList[i]=(*s);
Sort_by_name(dictList,n+1);
return(n+1);
}
int Insert_a_record(Bookinfo dictList[],int n)
{
Bookinfo s;
Bookinfo *p;
p=&s;
printf("请输入书号:");
scanf("%s",s.ISBN);
printf("\n请输入书名:");
scanf("%s",s.book);
printf("\n请输入作者:");
scanf("%s",s.author);
printf("\n请输入版本号:");
scanf("%d",&s.edition);
printf("\n请输入出版社名:");
scanf("%s",s.press);
printf("\n请输入出版年:");
scanf("%d",&s.year);
n++;
n=Insert(dictList,n,p);
return(n);
}
int Query(Bookinfo dictList[],int n,char *book)
{
int i,j=0;
for(i=0;i<n;i++)
if(strcmp(book,dictList[i].book)==0)
{
printf("%-10s",dictList[i].ISBN);
printf("%-30s",dictList[i].book);
printf("%-20s",dictList[i].author);
printf("%-20d",dictList[i].edition);
printf("%-50s",dictList[i].press);
printf("%-4d\n",dictList[i].year);
printf("\n");
j++;
}
if(j!=0)
return(j);
else
return(-1);
}
void Query_a_record(Bookinfo dictList[],int n)
{
char name[30];
char *book=name;
int i;
printf("请输入待查找的书名:");
scanf("%s",name);
i=Query(dictList,n,book);
if(i==-1)
printf("查找失败\n");
else
printf("查找成功\n");
}
int AddfromText(Bookinfo dictList[],int n,char *filename)
{
int i,t;
FILE *fp;
fp=fopen(filename,"r");
typedef struct a[500];
typedef struct *q;
if(fp==NULL)
{
printf("该文件不存在!\n");
exit(1);
}
for(i=0;feof(fp)==0;i++)
{
fscanf(fp,"%s",dictList[i].ISBN);
fscanf(fp,"%s",dictList[i].book);
fscanf(fp,"%s",dictList[i].author);
fscanf(fp,"%d",&dictList[i].edition);
fscanf(fp,"%s",dictList[i].press);
fscanf(fp,"%d",&dictList[i].year);
n=Insert(dictList,n,&dictList);
}
printf("成功插入数据\n");
fclose(fp);
return(n);
}
void WritetoText(Bookinfo dictList[],int n,char *filename)
{
int i;
FILE *fp1;
fp1=fopen(filename,"w");
if(fp1==NULL)
{
printf("文件打开失败:");
exit(1);
}
for(i=0;i<n;i++)
{
fprintf(fp1,"%-10s%-30s%-20s%-20d%-50%s-4%d\n",dictList[i].ISBN,dictList[i].book,dictList[i].author,dictList[i].edition,dictList[i].press,dictList[i].year);
printf("记录已写入文件");
}
fclose(fp1);
}
void main()
{
Bookinfo books[500];
static int m=0;
for(; ;)
{
switch(menu_select())
{
case 1:
printf("Input records\n");
m=Input(books,m);
printf("现在共有%d本书\n",m);
system("pause");
break;
case 2:
printf("Display All Records\n");
Display(books,m);
system("pause");
break;
case 3:
printf("Delete a Record\n");
m=Delete_a_record(books,m);
system("pause");
break;
case 4:
printf("Sort\n");
Sort_by_name(books,m);
system("pause");
break;
case 5:
printf("Insert a Record\n");
m=Insert_a_record(books,m);
printf("现在共有%d本书\n",m);
system("pause");
break;
case 6:
printf("Query\n");
Query_a_record(books,m);
system("pause");
break;
case 7:
printf("Add Records from a Text File\n\n\n");
m=AddfromText(books,m,"Dictory.txt");
system("pause");
break;
case 8:
printf("Write to a Text File\n");
WritetoText(books,m,"Records.txt");
system("pause");
break;
case 0:
printf("Quit\n");
system("pause");
exit(0);
}
}
}
--------------------Configuration: ex0101 - Win32 Debug--------------------
Compiling...
ex0101.c
C:\Users\84608\Desktop\C语言课程设计\ex0101.c(206) : error C2143: syntax error : missing ';' before 'type'
C:\Users\84608\Desktop\C语言课程设计\ex0101.c(207) : error C2143: syntax error : missing ';' before 'type'
C:\Users\84608\Desktop\C语言课程设计\ex0101.c(221) : warning C4047: 'function' : 'struct Bookinfo *' differs in levels of indirection from 'struct Bookinfo ** '
C:\Users\84608\Desktop\C语言课程设计\ex0101.c(221) : warning C4024: 'Insert' : different types for formal and actual parameter 3
Error executing cl.exe.
ex0101.exe - 2 error(s), 2 warning(s)