#include<stdio.h>
struct book{
int num;
char bname[50];
char wname[20];
char press[50];
struct book *next;
struct book *addbook(struct book *head); //添加图书
void deletebook(struct book *head); //删除图书
void num_chaxun(struct book *head); //按图书编号查询图书
void num_paixu(struct book *head); //按图书编号排序
int main()
{
int choice,n,x,y=1,c,c1=1234;
char a,d,b[10],b1[10]="yjk";
struct book *head=NULL;
while(y){
system("cls");
printf(" ********** 欢迎光临 **********\n");
printf(" 图 书 信 息 管 理 系 统\n");
printf("\n\n");
printf(" ============1-用户登录===========\n");
printf(" ============0-退出系统===========\n");
printf(" 请输入您的选择:");
scanf("%d",&n);
printf("\n");
getchar();
switch(n){
case 0:
y=0;
break;
case 1:
printf(" 请输入您的用户名:");
gets(b);
printf("\n");
printf(" 请输入您的密码:");
scanf("%d",&c);
printf("\n");
if(strcmp(b,b1)!=0||c!=c1){
printf(" 验证失败,请重新输入!\n");
scanf("%c",&d);
getchar();
system("cls");
}
else{
printf(" 验证通过!请按 Enter 键进入!\n");
scanf("%c",&d);
getchar();
x=1;
while(x){
system("cls");
printf(" *图书信息管理系统*\n");
printf(" || 1-添加图书 2-删除图书||\n\n");
printf(" || 3-查询图书 4-图书排序||\n\n");
printf("请输入所选择的序号:");
scanf("%d",&choice);
getchar();
return 0;
}
//添加图书
struct book *creatbook(){
struct book *head,*tail,*p;
int num,time,n;
char bname[50],wname[20],press[50];
head=tail=NULL;
printf("请输入图书编号:");
scanf("%d",&num);
getchar();
printf("请输入图书名:");
scanf("%s",bname);
getchar();
printf("请输入作者名:");
scanf("%s",wname);
getchar();
printf("请输入出版社:");
scanf("%s",press);
getchar();
do{
printf("请输入图书编号:");
scanf("%d",&num);
n=yanzheng(head,num);
if(n==0)
break;
else
printf("您输入的编号已存在,请重新输入!\n");
}
while(1);
if(num==0)
break;
else
{
printf("请输入图书名:");
scanf("%s",bname);
getchar();
printf("请输入作者名:");
scanf("%s",wname);
getchar();
printf("请输入出版社:");
scanf("%s",press);
getchar();
}
}
//删除图书信息
void deletebook(struct book *head)
{
int a;
char b,ch='1';
struct book *p1,*p2;
FILE *fp;
printf("请输入要删除的图书编号:");
scanf("%d",&a);
p1=head;
if(p1->num==a&&p1->next==NULL){ //对于文件中只有一组数据
printf("是否清空文件!(y/n)\n");
getchar();
scanf("%c",&b);
getchar();
switch(b){
case 'n':
break;
case 'y':
}
if((fp=fopen("f1.txt","w"))==NULL){
printf("File open error!\n");
exit(0);
}
fclose(fp);
printf("文件已清空!\n");
}
else{
while(p1->num!=a&&p1->next!=NULL){
p2=p1;
p1=p1->next;
}
if(p1->next==NULL){
if(p1->num==a){
p2->next=NULL;
printf("是否确定从文件中彻底删除该图书?(y/n)\n");
getchar();
scanf("%c",&b);
switch(b){
case 'n':
break;
case 'y':
fprint(head);
printf("删除成功!\n");
getchar();
break;
}
}
else{
printf("没有找到要删除的数据!\n");
getchar();
}
}
else if(p1==head){
head=p1->next;
printf("是否确定从文件中彻底删除该图书?(y/n)\n");
getchar();
scanf("%c",&b);
switch(b){
case 'n':
break;
case 'y':
fprint(head);
printf("删除成功!\n");
getchar();
break;
}
}
else{
p2->next=p1->next;
printf("是否确定从文件中彻底删除该图书?(y/n)\n");
getchar();
scanf("%c",&b);
switch(b){
case 'n':
break;
case 'y':
fprint(head);
printf("删除成功!\n");
getchar();
break;
}
//按编号查询图书信息
void num_chaxun(struct book *head)
{
int a;
struct book *p;
printf("请选择您要查询的图书编号:");
scanf("%d",&a);
getchar();
p=head;
while(p!=NULL){
if(p->num==a)
break;
p=p->next;
}
if(p==NULL){
printf("没有找到该编号的图书!\n");
}
else{
printf(" 你所查询的图书信息如下\n");
printf(" ** 编号 图书名 作者名 出版社 **\n");
printf("** %d %s %s %s **\n",p->num,p->bname,p->wname,p->press);
}
//按图书编号排序
void num_paixu(struct book *head)
{
struct book *a[1000],*p,*p1,*temp;
int i,k,index,n=0;
char b;
p1=head;
for(p=head;p;p=p->next)
n++;
for(i=0;i<n;i++){
a[i]=p1;
p1=p1->next;
}
for(k=0;k<n-1;k++){
index=k;
for(i=k+1;i<n;i++){
if(a[i]->num<a[index]->num)
index=i;
}
temp=a[index];
a[index]=a[k];
a[k]=temp;
}
printf("排序成功!\n");
printf("是否显示排序结果?(y/n)\n");
scanf("%s",&b);
getchar();
switch(b){
case 'n':
break;
case 'y':
printf(" ** 编号 图书名 作者名 出版社 **\n");
for(i=0;i<n;i++){
printf("** %d %s %s %s **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press);}
break;
default:
printf("您的输入有误!\n");
break;
}
请问哪里错了,怎么运行b'l
运行正常吗,正常的话,看下你输入情况。
代码风格太差了。首先是book结构定义少了后面的右括号。59行后面少了一批括号
struct book{
int num;
char bname[50];
char wname[20];
char press[50];
}
yanzheng这个函数在前面没有申明,creatbook函数不认识它