1、图书馆系统 目录一问题描述二基本要求三算法思想四数据结构五源程序代码六测试结果七流程图八实验总结一 问题描述小型图书管理系统创建一个图书管理系统,可以进行图书信息录入,图书信息查询,所有图书信息浏览,图书信息修改,图书信息删除,退出系统等操作。二 基本要求 (1) 所有信息存储在一个带头结点的单向链表中,每个结点存储一条图书记录,即结构体(book),其中各域为:书名、作者、出版社、定价、ISBN,以及指针域。(2) 系统初始时图书记录为空,由用户录入相关的信息,进行插入,查找,删除等等操作。(3) 如输入有错,给出错误提示。三.算法思想根据实验要求,该系统需要设置6个选项,分别为图书信息的录
2、入,浏览,查询,修改,删除和退出系统。首先建立单链表,节点存储图书的属性,在用模块化的思维方式编写程序,要哦来过到if,break等语法知识。四.数据结构 基本抽象数据类型:建立线性表的链式存储结构:你用链式存储结构建立一单向循环链表!typedef struct char author10; char name20; char pub20; float price; char ISBN10; DataType;typedef struct node DataType data; struct node *next;Book;void Listinitiate(Book *head) *hea
3、d=(Book*)malloc(sizeof(Book); (*head)-next=NULL; 五源程序代码#include #include #include #includetypedef struct char author10; char name20; char pub20; float price; char ISBN10; DataType;typedef struct node DataType data; struct node *next;Book;void Listinitiate(Book *head) *head=(Book*)malloc(sizeof(Book)
4、; (*head)-next=NULL;int luru(Book *head)阿 Book *p,*s; char tag=Y; p=head; while(p-next!=NULL) p=p-next; while(tag=Y|tag=y) s=(Book*)malloc(sizeof(Book); printf(请输入图书的名称 :n); scanf(%s,s-data.name); printf(请输入图书的作者:n); scanf(%s,&s-data.author); printf(请输入图书的出版社:n); scanf(%s,&s-data.pub); printf(请输入图书的
5、价格:n); scanf(%f,&s-data.price); printf(请输入图书的ISBN:n); scanf(%s,&s-data.ISBN); fflush(stdin); s-next=NULL; p-next=s; p=s; printf(-添加图书信息成功!-n); printf(-还继续添加图书信息吗?Y OR N-n); scanf(%c,&tag); printf(n); if(tag=Y|tag=y) continue; else if(tag=N|tag=n) break; return 1;int chaxun(Book *head) Book *p; int t
6、ag=0; char nam20; printf(请输入您想查找的图书名称!); scanf(%s,nam); for(p=head; p!=NULL;p=p-next) if(strcmp(p-data.name,nam)=0) printf(图书的相关信息如下:n); printf(-图书的名称为: %sn,p-data.name); printf(-图书的作者为: %sn,p-data.author); printf(-图书的出版社为: %sn,p-data.pub); printf(-图书的价格为 : %.2fn,p-data.price); printf(-图书的ISBN为 : %s
7、n,p-data.ISBN); tag=1; if(tag=0) printf(没有您查找的图书的相关信息!n); return 1;int liuluan(Book *head) Book *p; p=head; while(p-next!=NULL) p=p-next; printf(图书的相关信息如下:n); printf(-图书的名称为: %sn,p-data.name); printf(-图书的作者为: %sn,p-data.author); printf(-图书的出版社为: %sn,p-data.pub); printf(-图书的价格为 : %.2fn,p-data.price);
8、 printf(-图书的ISBN为 : %sn,p-data.ISBN); return 1;int change(Book *head) Book *p; char nam20; printf(请输入要修改的图书的名称!); scanf(%s,nam); for(p=head; p!=NULL;p=p-next) if(strcmp(p-data.name,nam)=0) printf(请输入图书的新名称为: ); scanf(%s,p-data.name); printf(请输入图书的新作者为: ); scanf(%s,p-data.author); printf(请输入图书的新出版社为:
9、 ); scanf(%s,p-data.pub); printf(请输入图书的新价格为: ); scanf(%f,&p-data.price); printf(请输入图书的ISBN为: ); scanf(%s,p-data.ISBN); return 1;int del(Book *p0) char nam20; int flag=1; Book *p; p=p0; printf(请输入要删除的书名:n); scanf(%s,&nam); while(p!=NULL) if(strcmp(p-data.name,nam)=0) p0-next=p-next; free(p); printf(t
10、该书资料已删除n); break; p0=p; p=p-next; return 1;void caidan() printf( = n); printf( 欢迎进入图书馆管理系统 n); printf( 1图书信息录入 n); printf( 2图书信息浏览 n); printf( 3图书信息查询 n); printf( 4图书信息修改 n); printf( 5图书信息删除 n); printf( 6退出系统 n); printf( 请选择:); fflush(stdin);int main() Book *head; char choice; Listinitiate(&head); f
11、or(;) caidan(); scanf(%c,&choice); if(choice=1) luru(head); else if(choice=2) liuluan(head); else if(choice=3) chaxun(head); else if(choice=4) change(head); else if(choice=5) del(head); else if(choice=6) printf( = n); printf(n 感谢使用图书管理系统 ! n);break; else printf( = 输入错误,请重新输入!=n); 六测试结果 1.录入信息 2.浏览信息 3.信息查询 4.修改信息 5.浏览信息 6.删除信息 7.浏览信息 七流程图 八实验总结试验中遇到了很多问题,使我明白了自己的很多不足之处,让我意识到了知识是在平时的积累中产生的,在选择操作时,对很多语法知识大多很模糊,但最终通过各种途径还是解决了,特别是容易忽略的=和=的区别,尤其要注意。 经过本次的学习,使我对链表的存储结构和应用能力有了显著的提高,对fflush(stdin)的用法有了比较清晰的认知。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1