青岛模板网站免费做游戏网站

张小明 2026/1/10 13:53:40
青岛模板网站,免费做游戏网站,个人网页制作软件,在家里怎样做网站基于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进行投诉反馈,一经查实,立即删除!

成都设计公司网站主机wordpress

Yocto 项目从零开始:构建你的第一个嵌入式 Linux 系统你有没有试过在一台开发板上跑一个定制的 Linux 系统?不是直接刷个现成镜像,而是从源码开始,自己定义内核、文件系统、启动脚本、甚至预装的应用程序——听起来像是高手专属操…

张小明 2026/1/9 23:30:28 网站建设

怎么把在EXCEL做的查询系统做到网站上跨境电商推广平台

第一章:Python缓存机制概述在现代软件开发中,性能优化是提升用户体验的关键环节。Python作为一门动态解释型语言,在执行效率上天然存在一定局限,因此合理利用缓存机制成为提高程序响应速度的重要手段。缓存的核心思想是将耗时计算…

张小明 2026/1/10 21:13:11 网站建设

网页设计和网站设计网络营销师证怎么考

三相整流电路;VOC控制;Simulink仿真 三相整流;三相整流器;三相整流转换器; 输入交流380V,输出600V直流。 输出可按需求更改。最近在电力电子领域的研究中,三相整流电路可是个热门话题。今天就跟大家唠唠三…

张小明 2026/1/9 14:10:28 网站建设

济南网站开发推广上海临港自贸区注册公司

PyCharm Remote Interpreter连接CosyVoice3开发环境 在AI语音技术飞速演进的当下,声音克隆已不再是实验室里的概念,而是逐步渗透到虚拟主播、有声书生成和智能客服等实际场景中。阿里开源的 CosyVoice3 正是这一浪潮中的代表性项目——它支持多语言、多方…

张小明 2026/1/9 23:41:13 网站建设

找做网站个人在线3d建模网站

image_picker 是 Flutter 生态中最常用的媒体选择插件,专注于实现“从相册选择”与“相机拍摄”两大核心场景,支持图片、视频的单选与多选,适配全平台设备。其 1.2.1 版本作为稳定迭代版,在权限处理、内存优化及桌面平台支持上均有…

张小明 2026/1/10 2:28:00 网站建设

做电影网站要不要收费网站程序源码

矩阵运营的稳定性困局与破局思路​2025 年 TikTok 全球月活突破 8 亿,但矩阵运营的账号异常率仍高达 80%,"封号潮"" 流量断层 " 成为出海从业者的高频痛点。实测数据显示,绝大多数账号问题源于环境不合规与操作机械化两大…

张小明 2026/1/10 20:31:50 网站建设