深圳网站建设服务器普陀区网站开发

张小明 2026/1/8 19:19:04
深圳网站建设服务器,普陀区网站开发,wordpress免费强大主题,域名价格是怎么收费的基于C语言实现B树存储的图书管理系统一、需求分析1.1 问题描述图书管理基本业务活动包括#xff1a;对一本书的采编入库、清除库存、借阅和归还等等。试设计一个图书管理系统#xff0c;将上述业务活动借助于计算机系统完成。1.2 基本要求每种书的登记内容至少包括书号、书名…基于C语言实现B树存储的图书管理系统一、需求分析1.1 问题描述图书管理基本业务活动包括对一本书的采编入库、清除库存、借阅和归还等等。试设计一个图书管理系统将上述业务活动借助于计算机系统完成。1.2 基本要求每种书的登记内容至少包括书号、书名、著者、现存量和总库存量等五项。作为演示系统不必使用文件全部数据可以都在内存存放。但是由于上述四项基本业务活动都是通过书号(即关键字)进行的所以要用B树(2-3树)对书号建立索引以获得高效率。系统应实现的操作及其功能定义如下①采编入库新购入一种书经分类和确定书号之后登记到图书账目中去。如果这种书在帐中已有则只将总库存量增加。②清除库存某种书已无保留价值将它从图书账目中注销。③借阅如果一种书的现存量大于零则借出一本登记借阅者的图书证号和归还期限。④归还注销对借阅者的登记改变该书的现存量。⑤显示以凹入表的形式显示B树。这个操作是为了调试和维护的目的而设置的。下列B树的打印格式如下所示1.3 已完成情况基本功能选做功能图书入库已完成操作日志已完成删除图书已完成查询作者著作已完成借书已完成查询书籍状态已完成还书已完成预约借书已完成拓展功能拓展功能拓展功能拓展功能查询读者状态查询读者状态查询读者的借阅、预约列表已完成查询读者的借阅、预约列表已完成总结总结总结总结1、图书管理系统的四个基本功能已经全部完成。2、选择内容四个功能全部完成。3、增加了一个拓展功能可以更具读者借书证号查询他的借阅状态。1.4 程序亮点亮点一系统输入排错功能完善处理用户的乱输入乱操作增加了系统的稳健性。亮点二系统功能有序使用功能界面完善用户体验效果好二、概要设计2.1 数据类型的定义2.2 功能模块关系三、详细设计3.1 数据类型定义typedef struct{ //被借阅的书籍 int tag; //状态 0-预约1-借阅 int readerId; //读者id int borrowTime; //出借时间 int backTime; //归还时间 char readerName[30]; //读者名字 char bookName[30]; //书籍名字 }LendBook, *LendBookP; typedef struct linkNode { int type; //类型0-借阅记录、1-操作记录、3-作家的书 LendBook *lenBook; //借阅记录 char *log; //操作记录 char *book; //作家的书 struct linkNode *next; }LinkNode, *LinkType; typedef struct{ //书籍 int id; //书籍id char name[30]; //书名 int authorId; //作者id char authorName[30]; //作者 int totalNum; //书籍数量 int stockNum; //书籍库存 LinkNode *borrowList; //借阅列表 LinkNode *appointList; //预约列表 }Book; typedef struct{ //作者 int id; //作者id char name[30]; //作者名字 LinkNode *bookList; //出版书籍 }Author; typedef struct{ //读者 int id; //读者id char name[30]; //读者名字 LinkNode *borrowList; //借阅列表 LinkNode *appointList; //预约列表 }Reader; typedef struct rcdNode{ int type; //结构体数据类型 //0-书籍、1-作者、2-读者 Book *book; //书籍 Author *author; //作者 Reader *reader; //读者 }RcdNode, *RcdType; typedef struct BTNode{ //B树和B树结点类型 int keynum; //结点关键字个数 KeyType key[MAXM]; //关键字数组key[0]不使用 BTNode *parent; //双亲结点指针 BTNode *ptr[MAXM]; //孩子结点指针数组 RcdNode *rcd[MAXM]; }BTNode,*BTree; typedef struct{ //B树查找结果类型 BTNode *pt; //指向找到的结点 int i; //在结点中的关键字位置; int tag; //查找成功与否标志 }Result; typedef struct LNode{ //链表和链表结点类型 BTree data; //数据域 struct LNode *next; //指针域 }LNode, *LinkList;3.2 函数功能具体设计图书入库删除图书预约借书借书还书查询图书查询作者查询读者查看全部打印B树操作日志四、调试分析4.1 问题分析与解决难题一图书、作者、读者数据存储定义。一开始构思的时候并没有打算将作者和读者也用B树存储起来初步设想是用两个链表。但是后来想到查询作者和查询读者的查询难度和查询书籍应该一个等级所以用B树存储的话能够提高查询速度和存储效率所以选择了给图书、作者、读者分别用一个B树存储起来。难题二数据结构体之间的关系设计。在图书、作者、读者关系里面他们互有指向又相互独立所以三者的结构体以及对应信息的指针指向就需要好好梳理。举个例子图书里面要有借阅信息读者里面也要有借阅信息而借阅信息里面有图书信息和读者信息。结构体的定义指向不能形成闭环所以为了实现我将图书信息里面的图书名称和读者信息里面的作者名称抽取出来放到了借阅信息里面。而关于借阅信息链表的增删改查关键信息也就变成了作者名称和图书名称。难题三日期的定义。无论是借书、预约、还书都和日期有关直接让用户输入时间的话可能引发诡异的BUG所以我将这个系统的日期做了简化初始默认是第一天每一个操作增加一天用户借书、预约的时候都是只输入一个借书天数num程序会将这个天数处理所以借书的时候以今天第x天为借书日期还书日期就是第xnum天而预约成功的话就以这本书被上一个借走的人还书的那一天y为借书日期还书日期就是ynum。当然这个方法有些取巧但是能简化预约功能的实现和合理化整体系统的功能。4.2 经验体会最大的体会就是如果要设计一个整体性功能完善的系统的话一开始一定要构思好整体的逻辑包括各种功能的具体定义、实现的合理性、交互的实用性以及功能和功能之间整体性。功能和功能之间关联性是很强的一旦一个功能发生改变或者增删某一个功能的时候其他的许多逻辑也要跟着改这是很没必要也很浪费时间的。举个例子我一开始并没有将读者查询、作者查询放入我的规划功能里面所以结构体的定义都是基于图书B树来的后来想要尝试选做内容的时候整体上逻辑大改结构体修改和新定义了一大堆。再来就是灵活debug吧c语言的封装性比较强很多bug都隐藏在这个指针和那个指针之间如果不用特殊方法去检测的话是很难找出来的。所以要灵活利用断点、打印printf这些来实现程序的实时监控。最后呢就是坚持、耐心、细心。这三个在这次课设都充分地帮助到了我让我在一次又一次的逻辑闭环和死debug的苦海中挣脱出来。五、用户使用说明5.1 功能菜单5.2 使用说明基本用法用户通过a~k等11个字母输入选择具体功能。特殊说明每一次使用完一个功能之后会重新清空命令行重新渲染菜单每一次使用完一个功能之后日期会增加一天日期输入采取简化输入用户输入x代表第x天当前日期显示在菜单右下角一个人预约一本书的话会在上一个读者还书的时候帮他成功预约测试数据:作者:序号1——曹雪芹 序号2——吴承恩 序号3——施耐庵序号4——罗贯中 序号5——唐家三少 序号6——天蚕土豆序号7——江南读者:读书证号111——小红 读书证号222——小明读书证号333——小华书籍书号和作家序号相对应书号1——《红楼梦》 书号2——《西游记》 书号3——《水浒传》书号4——《三国演义》 书号5——《斗罗大陆》 书号6——《斗破苍穹》书号7——《龙族IV》六、测试结果6.1 图书入库示例加入书籍《数据结构》书号12——李教授(作者序号12)亮点输入非数字排错处理6.2 删除图书示例删除书籍《三国演义》书号4亮点输入不存在书号排错处理6.3 预约借书示例小明读书证号222预约书籍《数据结构》书号12亮点书号、借书证号、借书天数的排错处理6.4 借书示例小红读书证号111借阅书籍《数据结构》书号12亮点书号、借书证号、借书天数的排错处理6.5 还书示例小红读书证号111还书《数据结构》书号12亮点没有借阅书籍读者、没有借阅记录的书籍的排错处理还书之后该书如有预约成功预约6.6 查询图书6.7 查询作者6.8 查询读者6.9 查看全部打印B树6.10 操作日志
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

北京网站建设哪家便宜网页设计登录页面怎么做

实时语音合成可能吗?EmotiVoice流式输出实测结果 在智能音箱刚问世的年代,用户对“能说话的机器”还充满新鲜感。可短短几年过去,大家已经不再满足于一个字正腔圆却毫无情绪的播报员——我们想要的是能共情、有性格、像真人一样自然交流的语音…

张小明 2026/1/6 0:34:33 网站建设

域名买好怎么开始做网站编程猫官方网站入口

EmotiVoice语音合成在语音邮件自动化中的效率提升 在客户体验日益成为核心竞争力的今天,企业与用户之间的每一次沟通都至关重要。尤其是在银行、电商、物流等行业,语音邮件作为关键触点,承担着通知提醒、服务跟进和情感维系等多重功能。然而&…

张小明 2026/1/6 7:04:39 网站建设

手机网站制作工具久久建筑网可信吗

GPT-SoVITS为何在GitHub上迅速破万星标? 在AI语音技术飞速演进的今天,一个开源项目能在短短几个月内收获超万颗GitHub星标,背后往往不只是代码写得漂亮那么简单。GPT-SoVITS正是这样一个现象级项目——它没有大厂背书,却凭借“几分…

张小明 2026/1/8 9:27:54 网站建设

和各大网站做视频的工作wordpress医院模板下载

在当今复杂的金融市场环境中,选择合适的技术分析工具成为投资者提升交易决策质量的关键。ChanlunX作为一款基于智能算法的缠论可视化插件,通过创新的数据处理和结构识别技术,为使用者提供前所未有的技术分析体验。 【免费下载链接】ChanlunX …

张小明 2026/1/6 7:06:06 网站建设

wordpress在这个站点注册网站开发需要哪些能力

Windows 7注册表分析:USB设备追踪指南 1. 注册表基础 注册表由键(keys)、值(values)和值数据(value data)组成。键类似于文件夹,包含子键和值,并且有一个名为LastWrite time的属性,它是一个64位的FILETIME时间戳,记录了键最后一次被修改的时间,修改包括键的创建、…

张小明 2026/1/8 3:48:44 网站建设

我的网站怎么转网页呢医院加强网站建设

Linux系统安全保障全攻略 在Linux系统的使用过程中,保障系统安全至关重要,这不仅涉及网络安全,还包括诸多本地安全问题。以下将详细探讨系统安全的各个方面。 1. 检查旧设备连接 有时候,可能会惊讶地发现一台计算机服务器上仍然连接着一个被遗忘已久的旧拨号调制解调器。…

张小明 2026/1/6 7:06:59 网站建设