数据结构课设:图书信息管理--顺序存储和链式存储

这篇具有很好参考价值的文章主要介绍了数据结构课设:图书信息管理--顺序存储和链式存储。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书,有趣的的数据结构和算法,数据结构,单片机,java

一、Chapter One【实验题目】

在本实验中,我选择了两种存储结构(顺序存储和链式存储)来对图书信息表的修改问题进行描述,即:3.基于顺序存储结构的图书信息表的修改问题描述 和 13.基于链式存储结构的图书信息表的修改问题描述。

1.基于顺序存储结构的图书信息表的修改问题描述

3.基于顺序存储结构的图书信息表的修改问题描述
首先,定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据完成图书信息表的创建。然后,计算所有图书的平均价格,将所有低于平均价格的图书价格提高20%,所有高于或等于平均价格的图书价格提高10%。最后,逐行输出价格修改后的图书信息。

输入要求
输入n+1行,前n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后,第n+1行是输入结束标志:000(空格分隔的三个0)。其中书号和书名为字符串类型,价格为浮点数类型。
输出要求
总计n+l行,第1行是修改前所有图书的平均价格,后n行是价格修改后n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔。其中,价格输出保留两位小数。

输入样例

9787302257646程序设计基础 25.00
9787302164340程序设计基础(2版) 20.00
9787302219972单片机技术及应用 32.00
9787302203513单片机原理与应用技术 26.00
9787810827430工业计算机控制技术——原理与应用 29.00
9787811234923 汇编语言程序设计教程 21.00
0 0 0

输出样例

25.50
9787302257646程序设计基础  30.00
9787302164340程序设计基础(2)  24.00  
9787302219972单片机技术及应用  35.20
9787302203513 单片机原理与应用技术  28.60
9787810827430工业计算机控制技术——原理与应用  31.90
9787811234923汇编语言程序设计教程  25.20

2.基于链式存储结构的图书信息表的修改问题描述

13.基于链式存储结构的图书信息表的修改问题描述
首先,定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据完成图书信息表的创建。然后,计算所有图书的平均价格,将所有低于平均价格的图书价格提高20%,所有高于或等于平均价格的图书价格提高10%。最后,逐行输出价格修改后的图书信息。

输入要求
输入n+1行,前n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第nt1行是输人结束标志:000(空格分隔的三个0)。其中,书号和书名为字符串类型,价格为浮点数类型。
输出要求
总计n+1行,第1行是修改前所有图书的平均价格,后n行是价格修改后n本图书的信息,每本图书信息占一行,书号、书名、价格用空格分隔。其中,价格输出保留两位小数。

输入样例

9787302257646程序设计基础  25.00
9787302164340程序设计基础(第2版)  20.00
9787302219972单片机技术及应用  32.00
9787302203513 单片机原理与应用技术  26.00
9787810827430工业计算机控制技术——原理与应用29.00
9787811234923 汇编语言程序设计教程  21.00
0 0 0

输出样例

25.50
9787302257646程序设计基础30.00
9787302164340程序设计基础(2版)24.00
9787302219972单片机技术及应用35.20
9787302203513单片机原理与应用技术28.60
9787810827430工业计算机控制技术——原理与应用31.90
9787811234923 汇编语言程序设计教程25.20

二、Chapter Two【实验分析】

1.实验整体思路:

分别用顺序存储和链式存储建立线性表,即图书信息表,通过函数创建线性表,初始化线性表,进行线性表的输入和输出。此时的图书平均价格就是我们创建所有图书价格相加再除以图书本数。接下来我们遍历两遍线性表,第一遍求出图书平均价格,第二次每本书的价格和平均价格逐个进行对比,大于等于平均价格的将图书价格乘以1.1,小于则乘以1.2,最后通过输入输出便可得到我们修改之后的数据。

2.实验详细步骤:

1.首先,我们利用#include和#define表明我们需要的头文件和宏,然后定义出一本书的信息;
2.对于顺序存储结构,我们首先创建出顺序存储的图书信息表,然后定义Init()函数初始化线性表,通过定义Insert()函数输入图书数据,再通过Output()函数输出图书信息表;最后通过Upprice()函数实现对图书价格的修改;
3.同理对于链式存储结构,我们首先创建出链式存储图书信息表的结点,然后定义Linit()函数初始化线性表,通过定义lInsert()函数利用头插法输入图书数据,再通过LinkOutput()函数输出图书信息表;最后通过LinkUpprice()函数实现对图书价格的修改;
4.最后,因为我们选择的是两种存储结构进行图书修改表的描述,我们在程序最后使用if语句进行两种存储结构的选择:1.顺序存储 2.链式存储;再通过对函数的调用来完成我们对图书价格的修改。

三、Chapter Three【运行截图】

1.顺序存储结构:

定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书,有趣的的数据结构和算法,数据结构,单片机,java

2.链式存储结构:

定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书,有趣的的数据结构和算法,数据结构,单片机,java文章来源地址https://www.toymoban.com/news/detail-720874.html

四、Chapter Four【源码详析】

#include <stdio.h>//头文件 
#include <malloc.h>
#include <string.h>
#include <algorithm> 
typedef int status;//函数状态
#define ERRER 0//错误
#define OVERFLOW -2//溢出
#define OK 1//完成 
typedef struct //一本书的信息 
{
	char ID[20];//书号的长度
	char Name[50];//书名的长度,
	float price;//价格	
}BOOK;
typedef struct //图书信息表 (顺序存储)
{
	BOOK *elem;//一本书
	int length;//线性表的长度
}BOOKlist;
status Init(BOOKlist &L)//初始化线性表(顺序存储)
{
	L.elem=(BOOK *)malloc(sizeof(BOOK)*20);//分配线性表空间, 线性表的长度是20 
	if (!L.elem) exit(OVERFLOW);//空间分配失败,退出 
	L.length=0;//线性表长度初始化为0
	return OK;//空间分配完成 
}
status Insert(BOOKlist &L)//输入图书数据(顺序存储) 
{
	int i=1;
	while(1)
	{
		if (i>20) exit(OVERFLOW);//输入图书信息数超过最大值,退出	
		scanf ("%s %s %f",L.elem[i].ID,L.elem[i].Name,&L.elem[i].price);//输入图书数据 		
		if (!strcmp(L.elem[i].ID,"0")&&!strcmp(L.elem[i].Name,"0"),L.elem[i].price==0) break;//输入0 0 0则停止输入	
		i++;
	}
	L.length=i-1;
	return OK;
}
status Output(BOOKlist &L)//输出图书信息表(顺序存储) 
{
	for (int i=1;i<=L.length;i++)
	{
		printf ("%s %s %.2f\n",L.elem[i].ID,L.elem[i].Name,L.elem[i].price);//输出图书信息表 		
	}
	return OK;
}

status Upprice(BOOKlist &L)//提高图书价格(顺序存储) 
{
	float Average=0;//平均价格 
	for (int i=1;i<=L.length;i++)
	{
		Average+=L.elem[i].price;//计算所有书的总价格 
	}
	Average/=L.length;//所有书的平均价格=总价/书本数量 
	for (int i=1;i<=L.length;i++)
	{		
		if (L.elem[i].price>=Average) L.elem[i].price*=1.1;//高于或等于平均价格的图书价格提高 10%	
		else if (L.elem[i].price<Average) L.elem[i].price*=1.2;//低于平均价格的图书价格提高20%
	}
	printf ("%.2f\n",Average);//输出平均价格 
	return OK;
}

typedef struct LinkBOOKlist//图书信息表的一个结点(链式存储)
{
	BOOK elem;//数据域:存一本书的信息 
	LinkBOOKlist *next;//指针域:指向下一本书的地址 
}LinkBOOKlist,*link;
status Linit (link &L)//初始化线性表(链式存储)
{
	L=(link)malloc(sizeof(LinkBOOKlist));//分配结点空间 
	if (!L) exit(OVERFLOW);//空间分配失败,退出 
	L->next=NULL;//下一本书的地址为空 
	return OK;//空间分配完成 	
}
status lInsert (link L)//头插法输入图书数据(链式存储)
{
	while (1)
	{
		link p =(link) malloc(sizeof(LinkBOOKlist));//新建结点并分配空间 
		if (!p) exit(OVERFLOW);//空间分配失败,退出
		scanf ("%s %s %f",p->elem.ID,p->elem.Name,&p->elem.price);//输入一本图书的信息 
		if (!strcmp(p->elem.ID,"0")&&!strcmp(p->elem.Name,"0")&&p->elem.price==0) break;//输入0 0 0则停止输入
		p->next=L->next;//将新建结点插入线性表 
		L->next=p;		
	}
	return OK;
}
status LinkOutput (link L)//输出图书信息表 (链式存储)
{
	link p=L->next;
	while (p!=NULL)
	{
		printf ("%s %s %.2f\n",p->elem.ID,p->elem.Name,p->elem.price);//输出图书信息表 
		p=p->next;
	}
	return OK;
}

status LinkUpprice(link &L)//提高图书价格(链式存储) 
{
	int num=0;//图书数量 
	float Average=0;//图书平均价格 
	link p=L->next;
	while (p!=NULL)//遍历线性表 
	{
		Average+=p->elem.price;//计算图书总价 
		num++;//统计图书数量 
		p=p->next;
	} 
	Average/=num;//图书均价=总价/图书数量 
	p=L->next;
	while (p!=NULL)
	{
		if (p->elem.price>=Average) p->elem.price*=1.1;//所有高于或等于平均价格的图书价格提高10%
		else if (p->elem.price<Average) p->elem.price*=1.2;//所有低于平均价格的图书价格提高20%
		p=p->next;
	}
	printf ("%.2f\n",Average);//输出图书均价 
	return OK;
}
int main()
{
	int i;
	// 此处设置一个选择函数 选择顺序存储方式或者链式存储方式。 
	printf ("选择存储方式:1.顺序存储  2.链式存储\n");
	scanf("%d",&i);
	if (i==1)
	{
		//分别调用四个函数,完成图书价格的修改 
		BOOKlist L;
	    Init(L);   
		Insert(L);
		Upprice(L);
        Output(L);	
	} 
	else if (i==2)
	{
		//分别调用四个函数,完成图书价格的修改 
		link L;
	    Linit(L);	    
	    lInsert(L);	 
		LinkUpprice(L);
        LinkOutput(L);
	}
	return 0;
}

到了这里,关于数据结构课设:图书信息管理--顺序存储和链式存储的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构项目:图书管理系统

    随着科技的不断进步,图书的种类也随之日益增多。图书馆所需要处理的图书管理问题从而突出,而读者也许需要能够更方便的查找和查看图书馆的书籍。为解决以上问题,本系统设计时主要针对图书管理人员需求做出对图书信息的录入、删除、修改、导出等功能。 (1)用

    2024年02月04日
    浏览(36)
  • 创建一个图书信息管理的顺序表,数据有书本序号、书名、价格,以及对顺序表的增删改查的操作(c++)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 创建一个书本信息的顺序表,数据有书本序号、书名、价格,以及对顺序表的增删改查的操作。 提示:这里对文章进行总结: 例如:以上就是今天要讲的内容,本文仅仅简单介绍了创建一个书本信息的

    2024年02月07日
    浏览(37)
  • 【数据结构之线性表】单链表实现图书管理系统

            本次实验是在DEV C++软件上进行实现的。语言采用的是c++语言,但在整体上与c语言大致相似(不管用什么语言实现,思想是不变的)。         此次实现的整体思路:首先定义图书这个抽象数据类型,并且定义节点抽象数据类型(根据这些抽象数据类型对下面的数

    2024年02月08日
    浏览(29)
  • 02.顺序表 排序--定义一个包含图书信息(书号、书名、价格)的顺序表读入相应的图书数据完成图书信息表的创建,然后将图书按照价格降序排序,逐行输出排序后每本图书的信息。

    题目描述 定义一个包含图书信息(书号、书名、价格)的顺序表读入相应的图书数据完成图书信息表的创建,然后将图书按照价格降序排序,逐行输出排序后每本图书的信息。 输入 输入n+1行,前n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名

    2024年02月07日
    浏览(38)
  • 数据结构设计--学生信息管理系统

    目录 1.环境 2.知识图 3.程序的功能 4.程序的源代码 vs code 快排+哈希 (1)程序中的数据存储到文件中。 (2) 录入学生成绩,格式如下: (学号(12位) 、姓名、性别、专业、班级、课程成绩(5门课程),总分)其中,总分通过程序计算求得。 (3)输出所有学生成绩。 (a)按某门课程成绩降序

    2024年02月04日
    浏览(34)
  • 数据结构C/C++ 职工信息管理系统

    数据结构C/C++ 职工信息管理系统 一、前言 二、系统结构设计 三、模块功能代码 3.1 菜单函数 3.2 初始化单链表 3.3 添加信息 3.4 信息输出 3.5 信息排序 3.6 信息删除 3.7 信息存储 四、系统完整代码 五、运行结果(部分展示) 六、实验总结 七、参考网址 本文还是使用较老的

    2024年01月16日
    浏览(31)
  • 数据结构课设——成绩分析问题

    一、实验 题目 【问题描述】 录入、保存一个班级学生多门课程的成绩,并对成绩进行分析。 【基本要求】 (1)通过键盘输入各学生的多门课程的成绩,建立相应的文件 input.dat。 (2)对文件 input.dat 中的数据进行处理,要求具有如下功能:         1) 按各门课程成绩排

    2024年02月07日
    浏览(35)
  • 数据结构课设 校园导航系统

    1、设计目的 (1)为了进一步巩固课堂上所学到的知识,深刻把握为了进一步巩固课堂上所学到的知识,深刻掌握所学重要的数据结构类型的基本概念,逻辑结构和物理结构,以及主要应用算法。锻炼选择应用合适的数据结构解决不同实际问题的能力,使用所学的一种数据结

    2024年02月06日
    浏览(31)
  • 数据结构课设(C语言)——校园导航系统

    校园导航系统不是很难,因为最短路径已经有了Dijkstra算法,这就可以直接用。 我们需要的只是往这个算法里面加参数还有对界面的创作,这些都很简单。不过用算法还得需要了解算法,所以建议大家还是去理解一下这个算法的内涵。实际运行可能和我的运行结果有出入,应

    2024年02月02日
    浏览(28)
  • 交通咨询系统源代码(数据结构课设)

      系统的展示和选题在这篇博客:点击这里        (就没有详解啦,代码中的注释已经写的很详细了)          直说了,我使用的软件是vs,但是dev也可以运行,反倒是初次使用vs的同学,没有关掉sdl检查的话运行会报错,说是scanf啥的出问题。解决方法:项目-属性-

    2024年02月11日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包