p=(structfi_info*)malloc(sizeof(structfi_info));//P为动作指针,申请内存空间
fscanf(fp,"%s",p->name);
fscanf(fp,"%s",p->writer);
fscanf(fp,"%d",&p->typenum);
fscanf(fp,"%s",p->publish_from);
fscanf(fp,"%d",&p->publish_time);
fscanf(fp,"%f",&p->price);
fscanf(fp,"%d",&p->type);
if(p->type==1)
{
if(head==NULL){
head=p;
p->next=NULL;
}
else{
p->next=head;
head=p;
}
}
else{
if(head_==NULL){
head_=p;
p->next=NULL;
}
else{
p->next=head_;
head_=p;
}
}
}
fclose(fp);
return0;
}
voidmenu(){
printf("\n\n*******************************图书信息管理系统********************************\n");
printf("\t\t\t1;录入图书信息\n");
printf("\t\t\t2;查找图书信息\n");
printf("\t\t\t3;删除图书信息\n");
printf("\t\t\t4;修改图书信息\n");
printf("\t\t\t5;显示图书信息\n");
printf("\t\t\t0;退出\n");}
intcreat_news()//添加图书信息{
structfi_info*p=NULL;
p=(structfi_info*)malloc(sizeof(structfi_info));
printf("请输入书名:
");
scanf("%s",p->name);
printf("请输入作者名:
");
scanf("%s",p->writer);
printf("请输入分类号:
");
scanf("%d",&p->typenum);
printf("请输入出版单位:
");
scanf("%s",p->publish_from);
printf("请输入出版时间:
");
scanf("%d",&p->publish_time);
printf("请输入书本价格:
");
scanf("%f",&p->price);
p->type=news;
Book_num+=1;
p->next=head;
head=p;
return0;
}
voidsearch_news()//查询图书信息{
structfi_info*p=NULL;
charname[10],writer[21];
intprice;
intb=1,i;
printf("按书名查找请按1.\n按作者名查找请按2.\n按组合查询请按3.\n");
scanf("%d",&i);
if(i=1)
{
printf("请输入要查找的书名:
");
scanf("%s",name);
for(p=head;p!
=NULL;p=p->next)//一个链表指针p的遍历,直到结尾p==NULL
{
if(strcmp(name,p->name)==0)//字符串的比较函数,若前后相等则等于0
{b=0;//若存在,则b=0
printf("你找到了要查找的图书信息:
\n");
printf("%s\n",p->name);
printf("%s\n",p->writer);
printf("%d\n",p->typenum);
printf("%s\n",p->publish_from);
printf("%d\n",p->publish_time);
printf("%f\n",p->price);
}
}
if(head==NULL)printf("没有此图书信息\n");
if(b)printf("你要查找的图书信息不存在!
\n");//若b=1,则不存在
}
elseif(i=2)
{
printf("请输入要查找的作者名:
");
scanf("%s",writer);
for(p=head;p!
=NULL;p=p->next)//一个链表指针p的遍历,直到结尾p==NULL
{
if(strcmp(writer,p->writer)==0)//字符串的比较函数,若前后相等则等于0
{b=0;//若存在,则b=0
printf("你找到了要查找的图书信息:
\n");
printf("%s\n",p->name);
printf("%s\n",p->writer);
printf("%d\n",p->typenum);
printf("%s\n",p->publish_from);
printf("%d\n",p->publish_time);
printf("%f\n",p->price);
}
}
if(head==NULL)printf("没有此图书信息\n");
if(b)printf("你要查找的图书信息不存在!
\n");//若b=1,则不存在
}
elseif(i=3)
{
printf("请输入要查找的书名价格\n:
");
scanf("%s%d",name,&price);
for(p=head;p!
=NULL;p=p->next)//一个链表指针p的遍历,直到结尾p==NULL
{
if(strcmp(name,p->name)==0&&price==p->price)//字符串的比较函数,若前后相等则等于0
{b=0;//若存在,则b=0
printf("你找到了要查找的图书信息:
\n");
printf("%s\n",p->name);
printf("%s\n",p->writer);
printf("%d\n",p->typenum);
printf("%s\n",p->publish_from);
printf("%d\n",p->publish_time);
printf("%f\n",p->price);
}
}
if(head==NULL)printf("没有此图书信息\n");
if(b)printf("你要查找的图书信息不存在!
\n");//若b=1,则不存在
}elseprintf("提醒:
没有该功能选项,请重新选择:
\n");
system("PAUSE");//暂停
}
voiddelete_news()//删除图书信息
{
structfi_info*p=NULL;//定义两个结构体指针
structfi_info*q=NULL;
charname[10];
intb=1;
inta;
printf("请输入要删除的书名:
\n");
scanf("%s",name);
for(p=head,q=head;p!
=NULL;p=p->next)
{
if(strcmp(name,p->name)==0)
{
b=0;
printf("确定删除?
0(是)or1(否)\n");
scanf("%d",&a);
if(a==0)
{
if(p==head)
head=head->next;
else
q->next=p->next;
printf("删除成功~\n");
}
}
elseq=p;
}
if(b)printf("提示:
查不到图书信息\n");
system("PAUSE");
}
voidupdate_news()//修改图书信息{
structfi_info*p=NULL;
inta,b=1;
charname[10];
printf("请输入书名:
\n\n");
scanf("%s",name);
for(p=head;p!
=NULL;p=p->next)
{
if(strcmp(p->name,name)==0){
b=0;
printf("%s\n",p->name);
printf("%s\n",p->writer);
printf("%d\n",p->typenum);
printf("%s\n",p->publish_from);
printf("%d\n",p->publish_time);
printf("%f\n",p->price);
printf("是否确定修改,0(是)or1(否)\n");
scanf("%d",&a);
if(a==0){
printf("**********请重新输入信息*********\n");
printf("请输入书名:
");
scanf("%s",p->name);
printf("请输入作者名:
");
scanf("%s",p->writer);
printf("请输入分类号");
scanf("%d",&p->typenum);
printf("请输入出版单位:
");
scanf("%s",&p->publish_from);
printf("请输入出版时间:
");
scanf("%d",&p->publish_time);
printf("请输入书本价格:
");
scanf("%f",&p->price);
p->type=news;
printf("\n\n提醒:
您修改成功!
\n\n");
}
}
if(b==1)printf("没有您要修改的信息~\n");
}
system("PAUSE");
}
voidshow()//显示图书信息{
structfi_info*p=NULL;
system("cls");
for(p=head;p!
=NULL;p=p->next){
printf("%s\n",p->name);
printf("%s\n",p->writer);
printf("%d\n",p->typenum);
printf("%s\n",p->publish_from);
printf("%d\n",p->publish_time);
printf("%f\n",p->price);
system("PAUSE");
}
}
voidquit()//退出系统退出先保存
{FILE*fp=NULL;
structfi_info*p=NULL;system("cls");
fp=fopen("sun.txt","w");
fprintf(fp,"%d",Book_num);
for(p=head;p!
=NULL;p=p->next)
{fprintf(fp,"%s",p->name);
fprintf(fp,"%s\n",p->writer);
fprintf(fp,"%d",p->typenum);
fprintf(fp,"%s",p->publish_from);
fprintf(fp,"%d",p->publish_time);
fprintf(fp,"%f",p->price);
fprintf(fp,"%d",p->type);
}
printf("\n");
printf("感谢使用本图书信息管理系统!
\n");
printf("\n");
fclose(fp);
exit(0);
}
程序运行结果:
设计总结和体会:
总结1:
熟悉了链表,结构体,数组指针的知识,还自学了枚举类型以及文件部分。
2:
上机运行更加熟练,能及时地修改语法及程序错误。
3:
团队合作很重要,我从搭档的身上学习了很多。
4:
对C语言的细节知识点及程序上机有了更深入的认识及了解。
体会:
图书管理系统花了我将近整整三天的时间,前两天是构建框架,着手写源程序,效率有些低,第三天真
的是一天都对着电脑,调试再调试,忘乎所有,心里想的都是程序代码。
这样的投入与认真让我更加坚
定了深入学习C语言以及自学C++等语言的兴趣,当程序没有错误并成功运行,我觉得什么付出都值得,
不睡觉算什么,没有好好吃饭算什么,辐射算什么、、、、、、。
虽然最后的结果是写了两个源程序并成功运
行,但还是觉得自己可以做的更好一点,至少在效率方面应该更高些。
以后更要好好学习,打好稳固的
基础,为梦想而奋斗~
设计成绩:
教师签名:
年月日