




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西文图书管理系统1问题描述图书管理基本业务活动包括:对一本书的采编入库、清除库存、借阅和归还等等。试设计一个图书管理系统,将上述业务活动借助于计算机系统完成。要求:1)每种书的登记内容至少包括书号、书名、著者、现存量和总库存量等五项。2)作为演示系统,不必使用文件,全部数据可以都在内存存放。要用B-树(4阶树)对书号建立索引,以获得高效率。3)系统应有以下功能:采编入库、清除库存、借阅、归还、显示(以凹入表的形式显示)等。2需求分析2.1规定程序功能改程序能实现对一本书的采编入库、清除库存、借阅和归还等等。系统拥有的功能有:采编入库、清除库存、借阅、归还、显示(以凹入表的形式显示)等。2.2输入和输出形式 模拟图书管理系统,会给出目录,输入则按照目录提示进行,在采编入库函数中,输出只有采编入库是否成功。在清除库存、借阅、归还、显示等函数模块中,输入按照信息提示进行逐步输入,该程序输出编号、书名、作者、该书库存总量、该书现存量等信息以及所进行的操作是否成功。3概要设计3.1数据结构的设计 根据题目的要求:作为演示系统,不必使用文件,全部数据可以都在内存存放。要用B-树(4阶树)对书号建立索引,以获得高效率。所以采用的数据结构为4阶B-树。3.2算法的设计 除主函数外,包括了六个主要模块,分别是:菜单、图书采编入库、图书清除、借书、还书、显示。各模块之间的关系图如下:菜 单采编入库图书清除借书还书显示每个模块函数为:void menu() 菜单void insert() 图书采编入库void clear() 图书清除库存void borrow() 借书void giveback() 还书void show() 显示3.3抽象数据类型的设计 首先是一本书,它包含许多信息,所以定义为结构体。 typedef struct / 图书信息结构体 int booknum; /图书编号char bookname50; /书名char writer20; /作者int now; /该书现存量int total; /该书的总库存量int flag; /flag的值代表该书的状态.flag=0代表已删除;flag=1代表未删除;book;然后该程序用的数据结构为B-树,所以还要定义关于B-树的结构体。typedef struct BTNode /结点结构体 int keynum; struct BTNode *parent; /双亲结点指针 KeyType keym+1; /key0不用 struct BTNode *ptrm+1; /孩子结点指针BTNode,*BTree; typedef struct BTNode *pt; int i; /位置 int tag; /某结点是否存在的标志Result;4详细设计4.1算法的主要思想 根据题目的要求进行每步的安排。当一本书进行采编入库时,按步骤输入书号、书名、著者、现存量和总库存量等五项,并且将其以结点编入B-树。清除库存则按照B-树的删除方式进行删除。借书、还书和显示则都依照相同的方式来进行。4.2算法的实现菜单函数 void menu()printf(nn 图书管理系统菜单 n); printf(n n); printf(n 1 采编入库n); printf(n 2 清除库存n); printf(n 3 借阅n);printf(n 4 归还n); printf(n 5 显示n); printf(n 6 退出n); printf(n n); printf(n请选择功能选项(1-6): bbb); int p; scanf(%d,&p); switch(p) case 1: insert();break; case 2: clear();break; case 3: borrow();break; case 4: giveback();break; case 5: show();break; case 6: exit(0);break; default:printf(n输入错误!n);back();图书采编入库函数 void insert() /插入函数 KeyType a;printf(n入库图书编号:);scanf(%d,&a.booknum);printf(n入库图书名称:);scanf(%s,a.bookname);printf(n入库图书作者:);scanf(%s,a.writer);printf(n入库图书数量:);scanf(%d,&a.total);a.now=a.total;a.flag=1;InsertNode(booktree,a);totalbooks=totalbooks+a.total; printf(n图书入库成功!n);back();图书清除库存函数 void clear() /删除函数 KeyType a;Result result;char c;printf(nn请输入要删除的图书编号:);scanf(%d,&a.booknum);result=SearchBTree(booktree,a);if(result.tag=1&result.pt-keyresult.i.flag=1)printf(n图书信息:n);printf(编号书名作者该书库存总量该书现存量n);printf(n%d%s%s%d %dn,result.pt-keyresult.i.booknum,result.pt-keyresult.i.bookname,result.pt -keyresult.i.writer,result.pt-keyresult.i.total,result.pt-keyresult.i.now); printf(n确定要删除此书?(1是 2否) bbb); c=getch(); if(c=49) result.pt-keyresult.i.flag=0; totalbooks=totalbooks-result.pt-keyresult.i.total; printf(n删除成功!n); else printf(n退出删除操作,返回菜单页!n); else printf(n该图书不存在!n); back();借书函数 void borrow() /借书函数 int b;KeyType a;Result result;printf(nn请输入您要借的图书编号:);scanf(%d,&a.booknum);result=SearchBTree(booktree,a);if(result.tag=1&result.pt-keyresult.i.flag=1) printf(n图书信息:n); printf(编号书名作者该书库存总量该书现存量n);printf(n%d%s%s%d %dn,result.pt-keyresult.i.booknum,result.pt-keyresult.i.bookname,result.pt-keyresult.i.writer,result.pt-keyresult.i.total,result.pt-keyresult.i.now); if(result.pt-keyresult.i.now0) fanhui:printf(n请输入借此书的数量:); scanf(%d,&b); if(bkeyresult.i.now) result.pt-keyresult.i.now=result.pt-keyresult.i.now-b; printf(n借书成功!n); else printf(n借书数量大于现存量,借书未成功!n);printf(n返回重新输入!n);goto fanhui; else printf(n该书已全部出借!n); else printf(n该图书不存在!n);back();还书函数 void giveback() /还书函数 KeyType a; int b; Result result; printf(nn请输入您要还的图书编号:); scanf(%d,&a.booknum); result=SearchBTree(booktree,a); if(result.tag=1&result.pt-keyresult.i.flag=1)printf(n图书信息:n);printf(编号书名作者该书库存总量该书现存量n);printf(n%d%s%s%d %dn,result.pt-keyresult.i.booknum,result.pt-keyresult.i.bookname,result.pt-keyresult.i.writer,result.pt-keyresult.i.total,result.pt-keyresult.i.now); if(result.pt-keyresult.i.now=0&result.pt-keyresult.i.nowkeyresult.i.total) fanhui:printf(n请输入归还此书的数量:);scanf(%d,&b);if(bkeyresult.i.total-result.pt-keyresult.i.now)result.pt-keyresult.i.now=result.pt-keyresult.i.now+b;printf(nn还书成功nn);else if(bresult.pt-keyresult.i.total-result.pt-keyresult.i.now)printf(n归还数量大于出借总量,归还未成功!n);printf(n返回重新输入!n);goto fanhui;else if(result.pt-keyresult.i.now=result.pt-keyresult.i.total) printf(n该书没有出借!n);else printf(n该图书不存在!n);back();显示函数void show() /显示函数 KeyType a; Result result; printf(nn请输入您要查看的图书编号:); scanf(%d,&a.booknum); result=SearchBTree(booktree,a); if(result.tag=1&result.pt-keyresult.i.flag=1) printf(n图书信息:n);printf(编号书名作者该书库存总量该书现存量n);printf(n%d%s%s%d %dn,result.pt-keyresult.i.booknum,result.pt-keyresult.i.bookname,result.pt-keyresult.i.writer,result.pt-keyresult.i.total,result.pt-keyresult.i.now); else printf(n该图书不存在!n);back();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第一节 核酸是遗传物质的证据说课稿-2025-2026学年高中生物浙科版必修2遗传与进化-浙科版
- 第3課 自分にできるボランティア活動说课稿-2025-2026学年高中日语人教版第一册-人教版
- 江苏省镇江市八年级政治下册 第五单元 与法同行 第16课 消费者的合法权益受法律保护 第2框 依法维护消费权益说课稿 苏教版
- 中医试题及答案国医通
- 武汉市公立中学公开招聘初中教师2名笔试含答案
- 互联网医疗合作出资方合作协议样本
- 矿业企业员工试用期安全生产与职业健康协议
- 四城区住房保障家庭租赁补贴资金使用与监管协议
- 高端商业广场商铺租赁合同包含装修及使用权
- 2025合同范本:销售人员绩效考核制度示例
- 石油行业安全培训课件
- 国开电大组织行为学任务四调查报告
- 事业单位医学基础知识名词解释
- 施工现场安全监理危险源清单一览表
- GB/T 233-2000金属材料顶锻试验方法
- FZ/T 74003-2014击剑服
- 颈椎DR摄影技术-
- 功能材料概论-课件
- 一点儿有点儿课件
- 眼视光技术专业技能考核题库-眼镜定配技术模块
- 体育测量与评价-第二章-体育测量与评价的基础理论课件
评论
0/150
提交评论