图书管理课程设计报告.docx
- 文档编号:1984723
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:54
- 大小:219.56KB
图书管理课程设计报告.docx
《图书管理课程设计报告.docx》由会员分享,可在线阅读,更多相关《图书管理课程设计报告.docx(54页珍藏版)》请在冰豆网上搜索。
图书管理课程设计报告
课程设计题目及要求
10.图书管理(难度3)
【问题描述】
图书管理基本业务活动包括:
对一本书的采编入库、清除库存、借阅和归还等等。
试设计一个图书管理系统,将上述业务活动借助于计算机系统完成。
【基本要求】
〈1〉每种书的登记内容至少包括书号、书名、著者、现存量和总库存量等五项。
〈2〉作为演示系统,不必使用文件,全部数据可以都在内存存放。
但是由于上述四项基本业务活动都是通过书号(即关键字〉进行的,所以要用B树〈24树〉对书号建立索引,以获得高效率。
〈3〉系统应实现的操作及其功能定义如下:
1采编入库z新购入一种书,经分类和确定书号之后登记到图书账目中去。
如果这种书在账中已有,则只将总库存量增加。
②清除库存:
某种书已无保留价值,将它从图书账目中注销。
③借阅:
如果一种书的现存量大于零,则借出一本,登记借阅者的图书证号和归还期限。
④归还z注销对借阅者的登记,改变该书的现存量。
⑤显示:
以凹入表的形式显示B树。
这个操作是为了调试和维护的目的而设置的。
【测试数据】
入库书号:
35,16,18,70,5,50,22,60,13,17,12,45,25,42,15,90,30,7然后清除:
45,90,50,22,42
其余数据自行设计。
由空树开始,每插入删除一个关键字后就显示B树的状态。
【实现提示】
(1)24树的查找算法是基础,入库和清除操作都要调用。
难点在于删除关键字的算法,因而只要算法对2-3树适用就可以了,暂时不必追求高阶B树也适用的删除算法。
(2)每种书的记录可以用动(或静)态链式结构。
借阅登记信息可以链接在相应的那种书的记录之后。
【进一步完成内容】
(l)将一次会话过程(即程序一次运行)中的全部人机对话记入一个日志文件"log"中去。
(2)增加列出某著者全部著作名的操作。
思考如何提高这一操作的效率,参阅教科书12.6.2节。
(3〉增加列出某种书状态的操作。
状态信息除了包括这种书记录的全部信息外还包括最早到期(包括已逾期)的借阅者证号,日期可用整数实现,以求简化。
(4)增加预约借书功能。
完成情况:
基本数据结构设计
算法设计及流程图
输入输出设计
代码规范及注释
数据测试及调试
代码理解与说明
评语
综合评分
第一部分:
引言
数据结构课程设计的主要目的是培养学生综合运用数据结构程序设计课程所学到的知识,编写C程序解决实际问题的能力,以及严谨的工作态度和良好的程序设计习惯。
通过课程设计的训练,学生应该能够了解程序设计的基本开发过程,掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。
数据结构程序设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试数据结构程序及编写设计报告。
第二部分:
系统功能和原始数据
(1)原始数据
入库书号:
35,16,18,70,5,50,22,60,13,17,12,45,25,42,15,90,30,7然后清除:
45,90,50,22,42
(2)系统功能
1.图书信息录入功能;
2.图书信息浏览功能;
3.按书名查询图书信息;
4.图书信息添加、删除功能;
备注:
图书信息包括:
书的编号、书名、作者名、剩余量、总库存量、借书者信息等。
第三部分:
程序总体设计
(1)数据结构
B-树,顺序表。
#definem5//B-树的阶
#defineM20//借相同书的最大人数
/*************借阅者信息(用单链表方式存储)***********/
structdata//记录借书和还书日期的结构体类型
{
intyear;//记录年
intmonth;//记录月
intday;//记录日
};
typedefstructRe{
charnumber[20];//借阅者编号
structdatabro;//记录读者的借书日期
structdataback;//记录读者的还书日期
}Reader;
/*************书的结构体***********/
typedefstructBook{
unsignedintkey;//书的编号
charbname[20];//书的名称
charwritter[20];//作者姓名
unsignedintleft;//剩余量
unsignedinttotal;//总库存量
Readerreader[M];//借书者记录
}Books;
/*************B-树的存储结构***********/
typedefstructBTNode{
intkeynum;//结点关键子的个数
structBTNode*parent;//指向父结点的指针
Bookskey[m+1];//一个结点中最多存放的书的个数
structBTNode*ptr[m+1];//指向孩子结点的指针
}BTNode,*BTree;
/*************查找结果的存储结构体***********/
typedefstruct{
BTNode*pt;
inti;
inttag;
}Result;
(2)模块划分和层次结构
(3)函数原型清单
/*************欢迎界面*************/
voidprint();//界面
charmenu();//菜单界面
/*************输入书的信息*************/
voidInBookMess(Books&book);//输入书号、书名等
/*************查找关键字在结点的位置*************/
intSearch(BTreep,BooksK);//一个结点中查找元素,返回结点的位置
ResultSearchBTree(BTreeT,BooksK);//查找K书在树的位置并返回结果结构体
voidShowBookMess(Booksbook);//显示一本书的具体信息
/*************插入关键字*************/
voidNewRoot(BTree&T,BTreep,Booksx,BTreeap);//生成一个树新的结点
voidsplit(BTree&q,ints,BTree&ap);//分离节点
voidInsert(BTree&q,inti,Booksx,BTreeap);//一个节点上的插入
intInsertBTree(BTree&T,BooksK);//将书插到B-树上
/*************B-树凹入输出*************/
voidmball(BTreebth,intnum);//凹入输出
/*************删除关键字*************/
voidMoveLeft(BTree&q,inti);//将一个关键词经结点q移到左兄弟中,q为要删关键字结点的双亲结点
voidMoveRight(BTree&q,inti);//将一个关键词经结点q移到右兄弟中,q为要删关键字结点的双亲结点
voidMerge(BTree&q,inti);//合并结点,q为被删关键字结点的双亲结点
voidDeleteBTree(BTree&T);//删除一个关键字
/*************显示书库*************/
voiddisplay(BTreeT);//显示一棵树的所有书的书名
/*************输入书的关键字***********/
voidInBookKey(Books&book);//输入查找书的关键字
/*************借还书*************/
voidborrow(BTreeroot);//借书
voidpayback(BTreeroot);//还书
(4)程序总体框架
intmain()
{
Resultrs;
Booksk;
chart;//输入y或者n
while
(1)
{
charc;
print();
c=menu();//显示菜单
switch(c)//按菜单函数返回值调用各相应函数
{
case'1':
system("cls");
printf("\t------------------录入书信息----------------\n");
InBookMess(k);//输入添加书的内容
InsertBTree(root,k);//将书插入在B-树中
printf("\t------------------录入结束------------------\n");
printf("\nTheBtreeis:
\n");
mball(root,0);//凹入输出
break;
case'2':
system("cls");
DeleteBTree(root);//删除B-树中的一本书
printf("\nTheBtreeis:
\n");
mball(root,0);
break;
case'3':
system("cls");
printf("\t------------------------------全部的书----------------------------\n\n");
display(root);//显示整棵树的书的信息
printf("\t------------------------------显示完毕-----------------------------\n");
break;
case'4':
system("cls");
printf("\t------------------凹入表示法显示----------------\n");
printf("\nTheBtreeis:
\n");
mball(root,0);
break;
case'5':
system("cls");
printf("\t------------------查找书信息----------------\n");
InBookKey(k);//输入要查找书的关键字
printf("\n");
rs=SearchBTree(root,k);
if(rs.tag==1){
ShowBookMess(rs.pt->key[rs.i]);//显示一本书的具体信息
}
else{
printf("\t你要查找的书号%d不存在!
\n\n",k.key);
}
printf("\n\t------------------查找结束----------------\n");
break;
case'6':
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 课程设计 报告