数据结构实验--个人图书信息管理系统

article/2025/10/4 17:31:01

数据结构实验

第一章 个人图书信息管理系统
第二章 停车场管理
第三章 哈夫曼编码


第一章 个人图书信息管理系统

  • 数据结构实验
  • 前言
  • 一、需求分析
  • 二、概要设计
  • 三、详细设计
    • 1.全局变量、元素类型、结点类型和指针类型
    • 2.顺序表的基本操作
    • 3.主函数
  • 总结


前言

线性表的顺序表示又称为顺序存储结构顺序映像
顺序存储定义:把逻辑上相邻的数据元素存储在物理上仙林的存储单元中的存储结构。简而言之,逻辑上相邻,物理上也相邻。
顺序存储方法:用一组地址连续的存储单元依次存储线性表的元素,可通过数组V[n]

一、需求分析

1.利用顺序表建立一个存储并管理个人图书信息的系统,每一本图书至少包括书名、版本、作者、出版社、ISBN编号、出版日期等数据。系统具备表的建立和初始化,图书信息录入,修改,增加,删除的操作。

2.在本演示程序中,图书信息数据可以从键盘录入,已录入的图书信息存储到一个文本文件中。
根据初始输入的操作码,可分别执行一下操作:0-初始化图书信息管理系统,1-录入图书信息,2-修改图书数据,3-增加图书数据,4-删除图书数据,5-统计图书总数,6-根据书名查找图书,7-根据版本查找图书,8-根据作者查找图书,9-根据出版社查找图书,10-根据ISBN编码查找图书,11-根据出版日期查找图书。

3.测试数据:
不少于15本书的信息。


二、概要设计

根据题目要求,该问题的实现可以分为五个模块:
初始化模块——建立和初始化系统具备表
信息录入模块——录入图书信息,并存储到文件
信息处理模块——修改、增加或删除图书信息
信息统计模块——统计图书的总数
查找模块——按照图书的某项数据查找图书
在这里插入图片描述
有序表的抽象数据类型定义为:
ADT SqList{
数据对象:D={Book[i]|Book[i]∈CharSet,i=1,2,3…,n, n≥0}

数据关系:R1={<Book[i-1],Book[i]> | Book[i-1],Book[i]∈D,i=2,…,n}

基本操作:
在主函数里
control(SqList *L);
初始条件:有序表L已存在。
操作结果:函数控制器,负责根据输入的操作码不同进行不同的操作。

initLibrary(SqList *L);
初始条件:有序表L已存在。
操作结果:初始化,录入信息,并存储到文件

modifMessage(SqList *L, i); //
初始条件:有序表L已存在。
操作结果:修改指定的第i本书的图书信息,输入“1 ”后开始操作。

addMessage(SqList *L,i);
初始条件:有序表L已存在。
操作结果:增加指定的第i本书的图书信息,输入“2 ”后开始操作。

deleteMessage(SqList *L,i);
初始条件:有序表L已存在。
操作结果:删除指定的第i本书的图书信息,输入“3 ”后开始操作。

outputSum(SqList L);
初始条件:有序表L已存在。
操作结果:统计图书总数,输入“4 ”后开始操作,返回图书的总数。

findBook(SqList L);
初始条件:有序表L已存在。
操作结果:查找图书,返回查找的图书下标。

compareName_book(Book a,Book b);
初始条件:有序表L已存在。
操作结果:比较目标图书a和源图书b的书名是否相同,如果相同返回OK,否则返回ERROR。

compareVersion_book(Book a,Book b);
初始条件:有序表L已存在。
操作结果:比较目标图书a和源图书b的版本是否相同,如果相同返回OK,否则返回ERROR。

compareAuthor_book(Book a,Book b);
初始条件:有序表L已存在。
操作结果:比较目标图书a和源图书b的作者是否相同,如果相同返回OK,否则返回ERROR。

comparePublish_book(Book a,Book b);
初始条件:有序表L已存在。
操作结果:比较目标图书a和源图书b的出版社是否相同,如果相同返回OK,否则返回ERROR。

compareISBN_book(Book a,Book b);
初始条件:有序表L已存在。
操作结果:比较目标图书a和源图书b的ISBN码是否相同,如果相同返回OK,否则返回ERROR。

comparedate_book(Book a,Book b);
初始条件:有序表L已存在。
操作结果:比较目标图书a和源图书b的出版日期是否相同,如果相同返回OK,否则返回ERROR。

void output(Book *e,FILE *fp);
初始条件:有序表L已存在。
操作结果:全部操作完成后,将所有图书信息存入文件中。


三、详细设计

1.全局变量、元素类型、结点类型和指针类型

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>#define SIZE 20
#define bookNUM 10000
#define MODIF 1
#define ADD 2
#define DELETE 3
#define SUM 4
#define findNAME 5
#define findVERSION 6
#define findAUTHOR 7
#define findPUBLISH 8
#define findISBN 9
#define findDATE 10#define OK true
#define ERROR false
#define OVERFLOW 0
#define NOELEM 0
#define Status bool
#define ElemType Booktypedef struct{char name[SIZE];   //书名 char version[SIZE];   //版本char author[SIZE];   //作者char publish[SIZE];   //出版社char ISBN[SIZE];   //ISBN编号char date;   //出版日期 
}Book;/*定义一个顺序表 */ 
typedef struct{Book *elem;int listLength;
}SqList;

2.顺序表的基本操作

/*函数总部 */ 
Status control(SqList *L); 
/*初始化,录入信息,并存储到文件 */ 
Status initLibrary(SqList *L);   //系统具备表的建立和初始化 
/*对信息的处理 */ 
Status modifMessage(SqList *L,int i);   //图书信息修改,输入“1 ”后开始操作。 
Status addMessage(SqList *L,int i);   //图书信息增加,输入“2 ”后开始操作。 
Status deleteMessage(SqList *L,int i);   //图书信息删除,输入“3 ”后开始操作。 
/*对信息的统计 */ 
int outputSum(SqList L);   //统计图书总数,输入“4 ”后开始操作。
/*查找图书 */ 
int findBook(SqList L);
Status compareName_book(Book a,Book b);   //根据书名找书,输入“5 ”后开始操作。 
Status compareVersion_book(Book a,Book b);   //根据版本找书,输入“6 ”后开始操作。 
Status compareAuthor_book(Book a,Book b);   //根据作者找书,输入“7 ”后开始操作。 
Status comparePublish_book(Book a,Book b);   //根据出版社找书,输入“8 ”后开始操作。 
Status compareISBN_book(Book a,Book b);   //根据 ISBN编码找书,输入“9 ”后开始操作。 
Status comparedate_book(Book a,Book b);   //根据出版日期找书,输入“10 ”后开始操作。   
void output(Book *e,FILE *fp);   //将所有信息放入文件。

3.主函数

int main()
{printf("Welcome to Hilda's Library Management System !\n");//建立SqList L;control(&L);return 0;
} 

总结

线性表 栈和队列 串、数组和广义表

线性结构表达式:(a1,a2,……,an)
线性结构反映节点间的逻辑关系是一对一的。

其他内容请继续关注!
代码:图书管理系统


http://chatgpt.dhexx.cn/article/iMMYbLHE.shtml

相关文章

【C语言】数据结构实验报告一

目录 题目1.1 求1~n的连续整数和。1.2 对于1到n的每个整数n&#xff0c;输出log2n&#xff0c;根号n&#xff0c;n ,nlog2n ,n^2 ,n^3 ,2^n ,n!的值。1.3 求1~n的素数的个数&#xff0c;并且计算出时间1.4 求1~n的连续整数阶乘的和。 题目 1.1 求1~n的连续整数和。 #include&…

数据结构实验:电话号码查询系统

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、问题描述二、问题描述&#xff08;1&#xff09;选用的散列函数&#xff08;2&#xff09;散列因子&#xff08;3&#xff09;解决冲突的方法 三、实验结果…

数据结构实验报告五 查找

一、实验目的 1、掌握查找表、动态查找表、静态查找表和平均查找长度的概念。 2、掌握线性表中顺序查找和折半查找的方法。 3、学会哈希函数的构造方法&#xff0c;处理冲突的机制以及哈希表的查找。 二、实验内容和要求 1.静态查找表技术 依据顺序查找算法和折半查找算法的…

数据结构实验公交车系统

数据结构实验公交车系统&#xff08;完整代码私信&#xff09; 1.查询公交车信息 2.查询站点信息 3.查询两个站点之间的路线&#xff08;最多一次换乘&#xff09; 4.添加、删除、修改公交车&#xff0c;站点&#xff0c;路线 创建4个文本文档&#xff08;即txt&#xff09; r…

数据结构实验报告六 排序

一、实验目的 1、掌握内部排序的基本算法&#xff1b; 2、分析比较内部排序算法的效率。 二、实验内容和要求 1.运行下面程序&#xff1a; #include <stdlib.h> #include <stdio.h> #define MAX 50 int slist[MAX]; /*待排序序列*/void insertSort(int list[],…

数据结构实验——哈夫曼编码

目录 问题描述 基本要求 问题分析 实验代码 运行结果 实验总结 问题描述 利用哈夫曼编码进行通信可以大大提高信道利用率&#xff0c;缩短信息传输时间&#xff0c;降低传输成本。但是&#xff0c;这要求在发送端通过一个编码系统对待传数据预先编码&#xff0c;在接收端…

数据结构实验C语言实现版

目录 数据结构实验——顺序表的基本操作 数据结构实验——单链表的基本操作 数据结构实验——顺序栈的建立及基本操作实现 数据结构实验——链队列的建立及基本操作实现 数据结构实验——赫夫曼树构造及赫夫曼编码的实现 数据结构实验——迪杰斯特拉算法求最短路径 数据结…

数据结构实验报告

数据结构与算法实验一&#xff08;顺序表的操作&#xff09; 一、实验目的 1&#xff0e;掌握线性表的顺序存储结构的表示和实现方法。 2&#xff0e;掌握顺序表基本操作的算法实现。 3&#xff0e;了解顺序表的应用。 二、实验内容 1&#xff0e;建立顺序表。 2&#xff0…

【数据结构】实验项目:顺序表,也就那么回事

目录 序 嗨&#xff0c;这里是狐狸~~ 简介 顺序表的结构定义&#xff1a; 声明顺序表类型变量&#xff1a; 实验内容&#xff1a; 实验说明 : 实验思路 1、 输入一组整型元素序列&#xff08;不少于10个&#xff09;&#xff0c;建立顺序表。 2&#xff0e; 在该顺…

数据结构(实验一)

第一次写报告&#xff0c;虽然有点简单&#xff0c;但还是要勉励自己再接再厉。加油 继续努力。 1.实验目的&#xff08;结出本次实验所涉及并要求掌握的知识点&#xff09; 1.掌握顺序表的存储结构形式及描述方法和基本运算的实现&#xff1b; 2.掌握用顺序表设计合理的数据…

数据结构实验

1.有序数组的插入 代码&#xff1a; bool Insert( List L, ElementType X ){//溢出if(L->LastMAXSIZE-1) return false;//插入在最后一位if(L->Data[L->Last] > X){L->Data[L->Last1]X;L->Last;return true;}int tp0;int find0;int tmp0;for(int i0;i &l…

网络传输大文件使用什么软件可以高速传输?

网络传输大文件使用什么软件可以高速传输&#xff1f;通过网络传输文件总是在速度上得不到很好的体现&#xff0c;更不用说是传输大文件了。本身支持大文件网络传输的工具就是不是很多&#xff0c;很多的传输工具对文件的大小都有所限制&#xff0c;要是想要找到一个高速传输大…

.mmap文件用什么软件可以打开?

1.下载MindManager专属打开它的软件 2。

什么是Saas软件?

人们常常会提及Saas&#xff08;萨斯&#xff09;软件&#xff0c;那么什么是Saas软件呢&#xff1f;首先大家通过百度可以看到百度百科的解释 相信大多数的伙伴们看了之后的感想就是一脸蒙圈&#xff0c;如果让自己给别人介绍什么是Saas软件还是记不住解释不清楚&#xff0c;那…

测试移动信号频率的软件,手机信号工作频段侦测软件

手机信号来源于基站发射的信号。但是常常会遇见的手机信号差&#xff0c;信号弱&#xff0c;上网速度慢等&#xff0c;都有可能是源于信号弱带来的。那么我们看见的手机上显示的信号弱&#xff0c;到底是什么信号弱&#xff1f;如何判别&#xff1f; 这里推荐一款APP软件&#…

杀毒软件可以查杀所有计算机病毒吗,杀毒软件可以查杀所有病毒吗

杀毒软件包括电脑杀毒软件和手机杀毒软件&#xff0c;那么杀毒软件可以查杀所有病毒吗&#xff1f;目前&#xff0c;做到所有病毒查杀还没有一家杀毒软件敢100%保证&#xff0c;因为电脑病毒也在日新月异的发展着&#xff0c;那是不是新病毒就查杀不了呢&#xff1f;也不是&…

可以测试电脑网络速度的软件,介绍4种有用的Internet Speed软件应用程序,用于测试网络速度软件...

当今社会将使用Internet&#xff0c;但是Internet的速度极大地影响了我们的工作和浏览. 在玩游戏和观看视频时测网速什么软件好&#xff0c;拥有一个良好的Internet甚至更为必要. 目前&#xff0c;我们可以使用Internet速度测试软件进行测试. 网络的速度和稳定性使您可以更好地…

什么软件可以测试鬼,PP助手新奇App推荐 《鬼魂探测器》能抓鬼?

最近&#xff0c;小伙伴们迷上了一款奇葩App&#xff0c;据说可以将潜伏在你周围的“阿飘”揪出来。这款软件就是《鬼魂探测器》&#xff0c;听起来是不是有点毛骨悚然&#xff0c;但又忍不住好奇心&#xff0c;通过PP助手下载一探究竟吧。 图1&#xff1a;PP助手(Win)2.0 只要…

测试电脑整机功耗软件,有什么好的测电脑整机功耗的软件吗?

很多人都说电脑的速度越快耗电量就越快&#xff0c;早期的486和现在的P4相比&#xff0c;那简直就是“节能电脑”了&#xff0c;那么想不想知道你的电脑到底有耗电量是多少呢&#xff1f;来试试Overclockulator吧&#xff0c;根据你的选择它可以估算出一台电脑的耗电量。 该软件…

有没有测试颜色的软件,用什么软件测试显示器色彩最准:色彩校正软件

用什么软件测试显示器色彩最准&#xff1a;1.iphone直接显示器校色&#xff0c;这个估计是最有效的方法。有的人可能用不惯iphone的界面&#xff0c;我经常用iphone来测试工程数据&#xff0c;因为iphone有自己的屏幕校色传感器&#xff0c;而iphone的屏幕比一般的显示器都要准…