图书馆系统.docx

上传人:b****6 文档编号:3028817 上传时间:2022-11-17 格式:DOCX 页数:13 大小:192.41KB
下载 相关 举报
图书馆系统.docx_第1页
第1页 / 共13页
图书馆系统.docx_第2页
第2页 / 共13页
图书馆系统.docx_第3页
第3页 / 共13页
图书馆系统.docx_第4页
第4页 / 共13页
图书馆系统.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

图书馆系统.docx

《图书馆系统.docx》由会员分享,可在线阅读,更多相关《图书馆系统.docx(13页珍藏版)》请在冰豆网上搜索。

图书馆系统.docx

图书馆系统

目录

一.问题描述································

二.基本要求·······························

三.算法思想································

四.数据结构·································

五.源程序代码····································

六.测试结果····································

七.流程图····································

八.实验总结····································

一.问题描述

小型图书管理系统

创建一个图书管理系统,可以进行图书信息录入,图书信息查询,所有图书信息浏览,图书信息修改,图书信息删除,退出系统等操作。

 

二.基本要求

(1)所有信息存储在一个带头结点的单向链表中,每个结点存储一条图书记录,即结构体(book),其中各域为:

书名、作者、出版社、定价、ISBN,以及指针域。

(2)系统初始时图书记录为空,由用户录入相关的信息,进行插入,查找,删除等等操作。

(3)如输入有错,给出错误提示。

 

三.算法思想

根据实验要求,该系统需要设置6个选项,分别为图书信息的录入,浏览,查询,修改,删除和退出系统。

首先建立单链表,节点存储图书的属性,在用模块化的思维方式编写程序,要哦来过到if,break等语法知识。

 

四.数据结构

基本抽象数据类型:

建立线性表的链式存储结构:

你用链式存储结构建立一单向循环链表!

typedefstruct

{

charauthor[10];

charname[20];

charpub[20];

floatprice;

charISBN[10];

}DataType;

typedefstructnode

{

DataTypedata;

structnode*next;

}Book;

voidListinitiate(Book**head)

{

*head=(Book*)malloc(sizeof(Book));

(*head)->next=NULL;

}

 

五.源程序代码

#include

#include

#include

#include

typedefstruct

{

charauthor[10];

charname[20];

charpub[20];

floatprice;

charISBN[10];

}DataType;

typedefstructnode

{

DataTypedata;

structnode*next;

}Book;

voidListinitiate(Book**head)

{

*head=(Book*)malloc(sizeof(Book));

(*head)->next=NULL;

}

 

intluru(Book*head)阿

{

Book*p,*s;

chartag='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("请输入图书的价格:

\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("-------还继续添加图书信息吗?

YORN-----------\n");

scanf("%c",&tag);

printf("\n");

if(tag=='Y'||tag=='y')continue;

elseif(tag=='N'||tag=='n')break;

}

return1;

}

intchaxun(Book*head)

{

Book*p;

inttag=0;

charnam[20];

printf("请输入您想查找的图书名称!

");

scanf("%s",nam);

for(p=head;p!

=NULL;p=p->next)

{

if(strcmp(p->data.name,nam)==0)

{

printf("图书的相关信息如下:

\n");

printf("-----图书的名称为:

%s\n",p->data.name);

printf("-----图书的作者为:

%s\n",p->data.author);

printf("-----图书的出版社为:

%s\n",p->data.pub);

printf("-----图书的价格为:

%.2f\n",p->data.price);

printf("-----图书的ISBN为:

%s\n",p->data.ISBN);

tag=1;

}

}

if(tag==0)

{

printf("没有您查找的图书的相关信息!

\n");

}

return1;

}

intliuluan(Book*head)

{

Book*p;

p=head;

while(p->next!

=NULL)

{

p=p->next;

printf("图书的相关信息如下:

\n");

printf("-----图书的名称为:

%s\n",p->data.name);

printf("-----图书的作者为:

%s\n",p->data.author);

printf("-----图书的出版社为:

%s\n",p->data.pub);

printf("-----图书的价格为:

%.2f\n",p->data.price);

printf("-----图书的ISBN为:

%s\n",p->data.ISBN);

}

return1;

}

 

intchange(Book*head)

{

Book*p;

charnam[20];

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("请输入图书的新出版社为:

");

scanf("%s",p->data.pub);

printf("请输入图书的新价格为:

");

scanf("%f",&p->data.price);

printf("请输入图书的ISBN为:

");

scanf("%s",p->data.ISBN);

}

}

return1;

}

intdel(Book*p0)

{

charnam[20];

intflag=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该书资料已删除\n");

break;

}

p0=p;

p=p->next;

}

return1;

}

voidcaidan()

{

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);

}

intmain()

{

Book*head;

charchoice;

Listinitiate(&head);

for(;;)

{

caidan();

scanf("%c",&choice);

if(choice=='1'){luru(head);}

elseif(choice=='2'){liuluan(head);}

elseif(choice=='3'){chaxun(head);}

elseif(choice=='4'){change(head);}

elseif(choice=='5'){del(head);}

elseif(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