图书管理基本业务数据结构课程设计报告Word下载.docx

上传人:b****6 文档编号:21688929 上传时间:2023-01-31 格式:DOCX 页数:22 大小:326.14KB
下载 相关 举报
图书管理基本业务数据结构课程设计报告Word下载.docx_第1页
第1页 / 共22页
图书管理基本业务数据结构课程设计报告Word下载.docx_第2页
第2页 / 共22页
图书管理基本业务数据结构课程设计报告Word下载.docx_第3页
第3页 / 共22页
图书管理基本业务数据结构课程设计报告Word下载.docx_第4页
第4页 / 共22页
图书管理基本业务数据结构课程设计报告Word下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

图书管理基本业务数据结构课程设计报告Word下载.docx

《图书管理基本业务数据结构课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《图书管理基本业务数据结构课程设计报告Word下载.docx(22页珍藏版)》请在冰豆网上搜索。

图书管理基本业务数据结构课程设计报告Word下载.docx

2)图书查询。

对书号查找,并显示所查找图书的所有信息,包括书号、书名、著作者、现存量、库存量和借阅者姓名;

3)系统主要功能如下:

采编入库:

新购一种书确定书号后,登记到图书帐目表中,如果表中已有,则将库存量和现存量增加;

②读者借阅:

若一种书的现存量大于0,则借出一本,登记借阅者的姓名,改变现存量,若一种书的现存量为0,则提示该书库存不足,读者无法借阅;

③读者归还:

注销对借阅者的登记,改变该书的现存量。

2.3分析用例

书号

书名

著作者

现存量

库存量

借阅者姓名

1

高等数学

同济大学

5

NULL

2

数字电路

清华大学

3

大学英语

蔡基刚等

4

基本算法

戴燕等著

三言二拍

冯梦龙等

3设计思路

本程序是以单链表的基本操作为基础,进行改造升级,而形成的图书管理基本操作程序。

图书馆基本业务模拟包含多方面的操作,其中本程序描述的是图书馆的新书入库、图书馆借阅、归还、信息查询(书籍信息查询)等功能。

1)新书入库功能:

新到书籍入库包含几方面的操作:

查询该书名的书籍在图书馆信息中是否已经存在,若存在,则增加可借数量和书籍总量,若不存在,则新增加概述信息,从界面输入书籍的编号(0~999999的长整型)、书名(字符串类型)、该书作者名(字符串类型)、该书的现存量(整型)、该书的总量(整型)。

输入该信息之后,将该节点插入到书籍信息链表中去。

该节点的插入位置根据查找,找到合适的位置插入,这样可以保证整个数据都是有序的,方便查找。

2)借阅功能 

书籍借阅主要涉及存书库和读者信息库双方的更新。

用户首先使用系统,查询该书是否存在,该书的剩余数量是否大于零,最后查询该读者是否已经借满书籍。

若以上条件都满足,则将该读者的可借书数量减一,该存书的可借数量减一。

3)归还功能 

按书名号来归还所借书籍,若书名号正确并且确认归还该书籍,删除该书的读者借阅信息(姓名),然后返回。

4)信息查询功能 

信息查询分为读者信息查询和书籍信息查询,读者信息查询是在读者登录之后,可以显示本人的基本信息以及借书状况(所借书的本数、可借书本书以及所借书的信息),还可查询书籍信息,可根据书籍的编号来查找书籍、根据书名来查找书籍、根据作者名来查询书籍。

查询到该书籍后显示是否借阅该书籍。

4详细设计

首先定义一个定义一个单链表的结点

typedefstructnode

{

intnum;

//书号

chartitle[50];

//书名

charauthor[50];

//著作者

intnum1;

//现存量

intnum2;

//库存量

charname[50];

//借阅者姓名

structnode*link;

}linklist;

此结点包括书号,书名,著作者,现存量,库存量,借阅者姓名。

linklist*creatnull(linklist*l)//建立一个带头的结点;

l=(linklist*)malloc(sizeof(linklist));

l->

link=NULL;

returnl;

}

馆藏图书信息模块

voidprint(linklist*l)//输出所有图书的信息

linklist*p;

p=l->

link;

printf("

\n输出所有图书的信息:

\n书号\t书名\t著作者\t现存量\t库存量\t借阅者姓名"

);

while(p)

{

printf("

\n%d\t%s\t%s\t%d\t%d\t%s"

p->

num,p->

title,p->

author,p->

num1,p->

num2,p->

name);

p=p->

//指针指向下一个

}

通过对单链表的输出来完成对馆藏图书信息的输出;

采编入库模块

voidcreat(linklist*l)//采编入库

inti,n;

linklist*p,*tail,*q;

tail=l;

if(l->

link!

=NULL)q=l->

elseq=l;

while(tail->

=NULL){tail=tail->

};

\n请输入入库图书的数量:

"

scanf("

%d"

&

n);

for(i=1;

i<

=n;

i++)

{

p=(linklist*)malloc(sizeof(linklist));

\n请输入入库图书的书号:

scanf("

p->

num);

while(q->

num!

=p->

num&

&

q->

=NULL){q=q->

if(q->

num==p->

num)

{

q->

num1=q->

num1+1;

num2=q->

num2+1;

printf("

\n该图书已在图书库存在,已自动增加图书数量"

else{

printf("

\n请输入入库图书的书名:

%s"

title);

\n请输入入库图书的著作者:

author);

\n请输入入库图书的现存量:

num1);

\n请输入入库图书的库存量:

num2);

strcpy(p->

name,"

NULL"

tail->

link=p;

tail=p;

tail->

};

首先先判断该结点是否为空,若不为空,指针指向下一个结点。

若该结点为空,输入入库图书的数量,通过for循环依次输入书号,书名,著作者,现存量,库存量等信息。

其中while(q->

\n该图书已在图书库存在,已自动增加图书数量。

根据输入的书号(入库的图书)与库存的书号(本库的图书)是否相同,若相同,不用输入该书的相关信息,便自动完成图书库存和现存量的增加。

并提示“该图书已在图书库存在,已自动增加图书数量。

根据书号查找图书模块

voidlocat(linklist*l,inti)//根据书号查找图书

while(p->

=i)

If(p->

limk!

=NULL)

{printf("

\n输出图书的信息:

\n%d\t%s\t%s\t%d\t%d\t%s\n"

elseprintf("

该图书不在此书库!

通过指针所指书号与查找图书的书好进行比较,若相同则输出该图书的所有信息。

若不相同,则指针指向下一个结点,直到指向为NULL,结束并提示“该图书不在此书库!

”。

借阅模块

voidborrowbook(linklist*l)//借阅

inti;

\n借阅的图书书号:

i);

if(p->

num1<

=0){printf("

\n该书库存不足,读者无法借阅."

else{p->

num1=p->

num1-1;

\n请输入借阅者的姓名:

通过指针所指书号与查找图书的书好进行比较,若相同则输出该图书的所有信息,若库存不大于零,提示“该书库存不足,读者无法借阅.”,相反,则提示“请输入借阅者的姓名:

”,记录借阅者的姓名,现存量和库存量各减一个。

若不同,则指针指向下一个结点。

归还模块

voidreturnbook(linklist*l)//归还

\n请输入归还图书的书号:

p->

strcpy(p->

Main函数模块

intmain()

linklistl,*head;

head=creatnull(&

l);

┌*********************************┐\n"

│欢迎使用图书管理系统│\n"

└*********************************┘\n"

免费高效简单实用\n"

\n\n\n\n"

intflag=1,a;

while(flag)

1:

馆藏图书信息\n2:

采编入库\n3:

图书查询\n4:

读者借阅\n5:

读者归还\n6:

退出图书管理系统\n请输入您的选项:

a);

switch(a)

case6:

flag=0;

│已退出图书管理系统│\n"

break;

case1:

flag=1;

print(head);

\n\n\n"

case2:

creat(head);

case3:

intnumber;

\n请输入要查找的图书书号:

scanf("

number);

locat(head,number);

case4:

borrowbook(head);

case5:

returnbook(head);

}

system("

pause"

return1;

首先,定义一个该类型的结点和一个指向该类型的指针。

用creatnull()函数创建一个头结点,且指针指向该头结点。

然后输出用户界面,通过while循环和switchcase语句进行选择。

把各个功能模块都编辑在main函数。

5数据测试

(1)开始界面

图5.1开始界面

(2)采编入库模块

图5.2采编入库

图5.3采编入库

图5.4采编入库

图5.5采编入库

(3)根据书号查找图书模块

图5.6根据书号查找图书

图5.7根据书号查找图书

(4)借阅模块

图5.8读者借阅

图5.9读者借阅

(5)归还模块

图6.0读者归还

(6)退出模块

6.1退出界面

6总结体会

通过本次课程设计,让我对数据结构这门学科对有了进一步的认识,掌握了单链表的基本操作和应用。

以前对该课程不再那么恐惧,任何事情没有做不到只有愿不愿意去做。

之后凭借那闪现在眼前的点点思路,慢慢在琢磨,终于想出了大体的程序内容。

然后一个一个函数的思考,一步一步的编写,调试,做起来也就越来越顺手了。

通过我的反复思考,程序中的错误得到了解决。

函数功能也得到了进一步的完善。

并且在本次课程设计的过程中,让我知道一个人的力量真的好有限,即使个人能力再强,做一个大点的项目,也会力不从心。

所以遇到问题要学会去问同学,问老师,只有这样才能将事顺利办得越快越好。

通过这次课程设计,会为我们以后进入社会提供一定的经验。

我相信在今后的学习真的我会更加努力,积累经验。

使自己在编程等各方面得到提高。

参考文献

[1]孙玉方,张乃孝.实用C语言程序设计[M].北京:

北京大学出版(简体版),1989;

台湾儒林出版公司(繁体版),1992.

[2]许卓群,张乃孝,杨冬青,等.数据结构[M].北京:

高等教育出版社,1987

[3].郭有强,C++面向对象程序设计[J].清华大学出版社,2009;

[4]朱晓龙,Java语言程序设计,北京邮电大学出版社,2011;

[5]WirthN.Algorithms+DataStructures=Programs[M].[S.I].Prentice

Hall.1976.

附录源代码

#include<

stdio.h>

stdlib.h>

string.h>

linklist*creatnull(linklist*l)

while(p)

=i&

whi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1