数据结构实验

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


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

  • 数据结构实验
  • 前言
  • 一、需求分析
  • 二、概要设计
  • 三、详细设计
    • 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)
线性结构反映节点间的逻辑关系是一对一的。

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

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

  1. 数据结构课程设计实验一:图书信息管理系统的设计与实现

    目录 (一)实验内容 (二)实验目的 (三)实验主要数据类型定义 (四)系统功能概述 (五)实验代码 (六)实验内容展示 (一)实验内容 设计并实现一个图书信息管理系统.根据实验要求设计该系统的菜单和 ...

  2. 数据结构:实现图书信息管理系统

    数据结构:顺序表实现图书信息管理系统 大一的数据结构实验拖延了相当长一段时间,最近老师终于让我们实验形式完成一次数据结构作业,我把自己的渣程序放在这里,希望能对肝实验的同学提供帮助,也希望各位大神路过 ...

  3. 图书信息管理系统(数据结构顺序表,c语言版)

    图书信息管理系统 顺序表 一.实验题目 二.工具环境 三.实验问题 问题: 四.实验代码 五.解决方法 方法: 一.实验题目 图书信息管理系统 出版社有一些图书数据,为简单起见,在此假设每种图书只包括 ...

  4. 图书信息管理系统(数据结构链表,c语言版)

    图书信息管理系统 链表 一.实验题目 二.工具环境 三.实验问题 四.实验代码 五.实验总结 一.实验题目 图书信息管理系统 出版社有一些图书数据,为简单起见,在此假设每种图书只包括三部分信息:ISB ...

  5. 数据结构实验--基于线性表的图书信息管理系统

    本文是依据数据结构习题解析与实验指导(李冬梅)一书中的第一个实验–基于线性表的图书信息管理系统所写的. 之所以写这个,是因为这个实验不仅涉及到线性表的结构设计,还包括一些线性表的基本操作,个人认为,做 ...

  6. 数据结构课设实验一:图书信息管理系统

    图书信息管理系统 实验内容 设计并实现一个图书信息管理系统.根据实验要求设计该系统的菜单和交互逻辑,并编码实现增删改查的各项功能. 该系统至少包含以下功能: (1) 根据指定图书个数,逐个输入图书信息 ...

  7. 图书信息管理系统 数据结构 C语言版

    图书信息管理系统 原文链接 本代码是为了实现数据结构书上的案例2.3.由于书中对于代码功能的描述太过简单,很难理解他到底具体的要求是什么,所以我只能根据自己的理解来实现查找,插入,删除,修改,排序和计 ...

  8. 数据结构——图书信息管理系统的顺序表实现

    大部分代码来自严蔚敏老师的<数据结构>教材,但对于书上的伪代码,有编译运行不了的地方,我进行了修改,使得程序可以正常运行,功能正常使用. 代码利用顺序表制作了一个图书信息管理系统,可以进行 ...

  9. 初识数据结构:链表实现图书信息管理系统(C语言,仅供参考)

    目录 1.创建表结构 2.创建表 3.打印链表 4.查找功能的实现 5.插入功能的实现 6.删除功能的实现 7.修改功能的实现 8.计数功能的实现 9.排序功能的实现 10.封装图书信息管理系统 1. ...

最新文章

  1. 让我们带着感恩的心生活
  2. 装有linux的硬盘装到不同主机,把ubuntu系统安装进移动硬盘,可在不同电脑上运行...
  3. Android多媒体开发
  4. 一起用C#做个五子棋的小游戏 增加了程序对战功能
  5. hazelcast 使用_使用Hazelcast发布和订阅
  6. lsm tree java_BasicTreeUI
  7. 我来谈谈小程序和工作方向
  8. 1.11 UML 类图(多看多用就熟悉了)(节选自:《大话设计模式》)
  9. java 内存分配参数_浅谈JAVA内存分配与参数传递
  10. 各大牛逼讲师的经典Jquery精品视频教程,大放送啦!!!(包括手机移动端JqueryWeb开发)!!!...
  11. SCOM 2012 RC 升级到 SCOM 2012 RTM 手记
  12. Html5 Canvas动画基础碰撞检测的实现
  13. 彻底删除mysql server 2005_sql2005卸载工具(sql server 2005卸载工具)
  14. 【新书推荐】杰夫·惠勒:帝泉传奇系列(共3册)
  15. 详解手机注册验证码操作思路与流程
  16. python股票量化交易_量化交易之路:用Python做股票量化分析 (阿布著) 完整pdf扫描版[103MB]...
  17. 大数据学习环境搭建系列(二)虚拟机软件Vmware的安装
  18. 第九届”大唐杯“全国大学生移动通信5G技术大赛省赛获奖名单公示
  19. Windows fatal exception: access violation / Process finished with exit code -1073741819 (0xC0000005)
  20. 禁止手机浏览器下拉刷新

热门文章

  1. HMM经典介绍论文【Rabiner 1989】翻译(一)——介绍
  2. 5、玩转树莓派音频——打造便携式合成器
  3. [小技巧] 在 Notepad++ 里如何在每一行之后插入空行
  4. Appium + java 实现Android app自动化测试
  5. 法律职业资格考试计算机怎么考,2018年法律职业资格考试客观题机考须知
  6. 人脸识别+身份证识别 ——APP实名制
  7. Ubuntu 截图快捷键 gnome-screenshot 使用
  8. 初中信息技术计算机课件,初中信息技术说课课件
  9. 强烈推荐 | 基于飞桨的五大目标检测模型实战详解
  10. Kali Linux 中报错:E: 您在 /var/cache/apt/archives/ 上没有足够的可用空间 的解决方法。