C语言数据结构(实验一)基于顺序表的图书馆系统CharonVan

#defineMAXSIZE1000//图表可能达到的最大长度

//定义图书表的顺序储存结构

//定义图书信息

typedefstruct

{

charno[20];//ISBN

charname[50];//书名

floatprice;//价格

}Book;

typedefstructnode//用于链表去重

longlongintno;

charname[50];

doubleprice;

structnode*next;

}Book1,*BookList;

//定义顺序储存结构类型

Book*elem;//储存空间基地址

intlength;//当前图书个数

}SqList;

typedefintStatus;

typedefintElemType;

//初始化一个顺序表

StatusInitList_Sq(SqList&L)

L.elem=newBook[MAXSIZE];//份配空间

if(!L.elem)//分配失败

exit(OVERFLOW);

}

L.length=0;//空表长度为0

returnOK;

//顺序表输入

StatusListInsert(SqList&L)

inti=1;

while(1)

if(i>MAXSIZE)//输入图书信息数超过最大值,退出

scanf("%s%s%f",L.elem[i].no,L.elem[i].name,&L.elem[i].price);//输入图书数据

if(!strcmp(L.elem[i].no,"0")&&!strcmp(L.elem[i].name,"0")&&L.elem[i].price==0)

break;//输入结束标志000则停止输入

i++;

L.length=i-1;

returni-1;

//顺序表逆序输入

StatusNListInsert(SqList&L)

inti,t;

scanf("%d",&i);

t=i;

if(i==0)//结束输入

break;

i--;

L.length=t;

returnL.length;

//顺序表输出

StatusListOutput(SqList&L)

for(inti=1;i<=L.length;i++)

printf("%s%s%.2f\n",L.elem[i].no,L.elem[i].name,L.elem[i].price);//输出图书信息表

//顺序表排序

boolcmp(BookL1,BookL2)//按照价格降序排序

if(L1.price>L2.price)

returntrue;

else

returnfalse;

StatusSqSort(SqList&L)

sort(&(L.elem[1]),&(L.elem[L.length+1]),cmp);

//顺序表修改价格

StatusSqprice(SqList&L)

floatavg=0;//平均价格

avg+=L.elem[i].price;//计算所有书的总价格

avg/=L.length;//所有书的平均价格=总价/书本数量

if(L.elem[i].price>=avg)//高于或等于平均价格的图书价格提高10%

L.elem[i].price*=1.1;

elseif(L.elem[i].price

L.elem[i].price*=1.2;

printf("%.2f\n",avg);//输出平均价格

//顺序表找最贵的书

StatusSqMax(SqList&L)

intn;//图书数目

printf("请输入数据:\n");

scanf("%d",&n);//输入图书数目

InitList_Sq(L);//初始化线性表

L.length=n;//给线性表中的图书数目赋值

if(n<1||n>MAXSIZE)

while(i<=n)

scanf("%s%s%f",L.elem[i].no,L.elem[i].name,&L.elem[i].price);//输入图书信息表

intmaxprice[MAXSIZE];//最贵图书在线性表中的编号

intlen=0,max=0;//len:最贵图书的数目max:最贵图书价格

for(inti=1;i<=n;i++)//查找最贵图书并记录其在线性表中的编号

if(L.elem[i].price>max)//找到更贵的图书

len=1;//更贵图书的数目记为1

maxprice[len]=i;//记录更贵图书在线性表中的编号

max=L.elem[i].price;//修改最贵图书价格

elseif(max==L.elem[i].price)//找到下一本最贵图书

len++;//最贵图书的数目加1

printf("%d\n",len);//输出最贵图书的数目

for(inti=1;i<=len;i++)//输出最贵图书的信息

intj;

j=maxprice[i];

printf("%s%s%.2f\n",L.elem[j].no,L.elem[j].name,L.elem[j].price);//根据编号输出最贵图书的信息

//顺序表找出最喜爱的书

StatusSqFavor(SqList&L)

intn;//图书数量

inti,j;

Bookb[MAXSIZE];

printf("请输入数据\n");

scanf("%d",&n);

for(i=0;i

scanf("%s%s%f",&b[i].no,&b[i].name,&b[i].price);

intm,t;//查找m次

scanf("%d",&m);

Bookb_1[MAXSIZE];

for(intk=0;k

scanf("%s",&b_1[k].name);

t=0;

for(j=0;j

if(!strcmp(b_1[k].name,b[j].name))

t++;

if(t==0)

printf("抱歉,这里没有你的最爱!\n");

printf("%d\n",t);

printf("%s%s%.2f\n",b[j].no,b[j].name,b[j].price);

//顺序表图书位置查找

StatusSqPlace(SqList&L)

for(i=1;i<=n;i++)

intm;//查找m次

intb_1[MAXSIZE];

scanf("%d",&b_1[k]);

for(j=1;j<=n;j++)

if(b_1[k]==j)//对应位置并输出

if(b_1[k]>i||b_1[k]<1)//位置不存在

printf("抱歉,最佳位置上的图书不存在!\n");

//顺序表新书入库

StatusSqEnter(SqList&L)

intn,j,i;

Bookin_b;

scanf("%s%s%f",L.elem[j].no,L.elem[j].name,&L.elem[j].price);

L.length=n;

if((i<1)||(i>L.length+1)||(i==MAXSIZE))

printf("抱歉,入库位置非法!\n");//i值不合法

returnERROR;

scanf("%s%s%f",&in_b.no,&in_b.name,&in_b.price);

for(j=L.length;j>=i;j--)

L.elem[j+1]=L.elem[j];//插入位置及之后的元素右移

L.elem[i]=in_b;//将新元素e放入第i个位置

++L.length;//表长加1

for(j=1;j<=L.length;j++)

printf("%s%s%.2f\n",L.elem[j].no,L.elem[j].name,L.elem[j].price);//输出图书信息表

//顺序表旧书出库

StatusSqDelete(SqList&L)

if((i<1)||(i>L.length))

printf("抱歉,出库位置非法!\n");//i值不合法

for(j=i+1;j<=n;j++)

L.elem[j-1]=L.elem[j];//删除位置及之后的元素左移

--L.length;//表长减1

//顺序表去重

StatusSqRepeat(SqList&L)

intn,j,i,t;

for(j=1;j<=n;j++)//输入

for(i=1;i<=n;i++)//书号循环对比

if(!strcmp(L.elem[i].no,L.elem[j].no))//重复删除

for(t=j+1;t<=n;t++)

L.elem[t-1]=L.elem[t];//删除位置及之后的元素左移

--n;//表长减1

--j;

printf("%d\n",n);

//定义链式储存结构类型

typedefstructLNODE

Bookelem;//数据域

LNODE*next;//指针域

}LNODE,*LinkList;

//初始化链表

StatusInit(LinkListL)

L=(LinkList)malloc(sizeof(LNODE));//分配结点空间

if(!L)

exit(OVERFLOW);//空间分配失败,退出

L->next=NULL;//下一本书的地址为空

returnOK;//空间分配完成

//链表输出数目

StatusLNum(LinkListL)

LinkListr=L;//输入

inti;

for(i=0;i

LinkListp=newLNODE;

scanf("%s%s%f",&p->elem.no,&p->elem.name,&p->elem.price);

if(!(strcmp(p->elem.no,"0"))&&!(strcmp(p->elem.name,"0"))&&p->elem.price==0){

p->next=NULL;

r->next=p;

r=p;

if(i)

printf("%d\n",i);

else//异常

LinkListp=L->next;//输出

while(p!=NULL)

printf("%s%s%.2f\n",p->elem.no,p->elem.name,p->elem.price);

p=p->next;

//链表输入(后插)

StatusInsert(LinkList&L)

LinkListr=L;//尾指针r指向头结点

for(i=1;i<=MAXSIZE;i++){

//链表输出

StatusLoutput(LinkListL)

LinkListp=L->next;

//链表排序

StatusLsort(LinkListL)

if(L->next==NULL||L->next->next==NULL)//线性表无元素或只有一个元素,无需排序

LinkListpre=L;//操作结点的前一个结点

LinkListnow=L->next;//操作结点

LinkListtail=NULL;//尾结点

while(L->next!=tail)//冒泡排序

pre=L;

now=L->next;

intflag=0;

while(now->next!=tail)

if(now->elem.pricenext->elem.price)

flag=1;

pre->next=now->next;

now->next=now->next->next;

pre->next->next=now;

pre=pre->next;

now=now->next;

if(flag==0)

tail=now;

//链表提高图书价格

StatusLprice(LinkList&L)

intnum=0;//图书数量

floatavg=0;//图书平均价格

while(p!=NULL)//遍历线性表

avg+=p->elem.price;//计算图书总价

num++;//统计图书数量

avg/=num;//图书均价=总价/图书数量

p=L->next;

if(p->elem.price>=avg)

p->elem.price*=1.1;//所有高于或等于平均价格的图书价格提高10%

elseif(p->elem.price

p->elem.price*=1.2;//所有低于平均价格的图书价格提高20%

printf("%.2f\n",avg);//输出图书均价

//链表逆序输出(头插)

StatusNInsert(LinkList&L)

intn,i;

LinkListp=L;

for(i=1;i<=n;i++)//输入

LinkListr=newLNODE;

scanf("%s%s%f",&r->elem.no,&r->elem.name,&r->elem.price);

r->next=p->next;

p->next=r;

for(i=1;i<=n;i++)//输出

//链表最贵图书

StatusLexpensive(LinkList&L)

intn,i,m,k;

LinkListr=L;

for(i=0;i

intmax=p->elem.price;

i=0;

while(p->elem.price==max)

while(p)

//链表最爱图书

StatusLFavor(LinkList&L)

intn,i,m,k,t;

r->next=NULL;

p=r;

scanf("%d",&k);//输入查找数目

//输入查找书名

Booka[MAXSIZE];

for(i=0;i

scanf("%s",&a[i].name);

{//遍历查找计算符合条件的书数量

m=0;

while(now->next)

if(!strcmp(now->elem.name,a[i].name))

m++;

//输出数量

if(m)

printf("%d\n",m);

else//未找到

printf("抱歉,没有你的最爱!\n");

//输出图书信息

printf("%s%s%.2f\n",now->elem.no,now->elem.name,now->elem.price);

THE END
1.ssm毕设图书馆信息管理系统程序+论文图书馆信息管理系统的研究具有多方面的重要意义。从图书馆自身运营角度来看,它能够提高管理效率,通过自动化的方式对图书分类、图书信息管理、借阅归还等流程进行管理,减少人力成本,降低人工操作可能带来的失误。对于读者而言,该系统能够提供更加便捷的服务,例如读者可以快速查询图书的分类、是否在馆等信息,方便借阅和归还图书https://blog.csdn.net/wuzhou201/article/details/144428369
2.数据结构图书管理系统课程设计报告经管文库(原数据结构图书管理系统课程设计报告 https://bbs.pinggu.org/thread-13103052-1-1.html
3.山东华博科技申请一种基于人工智能的计算机数据管理系统专利,提高了金融界2024年12月12日消息,国家知识产权局信息显示,山东华博科技发展集团有限公司申请一项名为“一种基于人工智能的计算机数据管理系统”的专利,公开号CN 119106191 A,申请日期为2024年9月。 专利摘要显示,本发明涉及机器学习技术领域,尤其涉及一种基于人工智能的计算机数据管理系统,包括,信息获取模块,用以获取用户阅读信https://www.163.com/dy/article/JJ7L91HG0519QIKK.html
4.实验1:基于线性表的图书信息管理(EduCoder)是信息技术类实践教学平台。(EduCoder)涵盖了计算机、大数据、云计算、人工智能、软件工程、物联网等专业课程。超60000个实训案例,建立学、练、评、测一体化实验环境。https://www.educoder.net/shixuns/6viul5re/
5.数据结构实验1《基于线性表的图书管理系统》.pdf数据结构实验1《基于线性表的图书管理系统》.pdf,数据结构实验1 《基于线性表的图书管理系统》 数据结构实验1 《基于线性表的图书管理系统》 (visual studio 0 19可运?) 输?及输出要求见 《数据结构C语?(第?版)》严蔚敏版 【本?仅?于啥都看不懂还想交作https://m.book118.com/html/2022/0814/6105035212004223.shtm
6.数据结构实验:基于线性表的图书信息管理.doc实验题目: 基于线性表的图书信息管理 实验环境: Visual Studio 实验目的: 1、掌握线性表的定义; 2、掌握线性表的基本操作,如建立、查找、插入和删除等。 实验容: 1、必做 分别定义一个包含图书信息(书号,书名,定价)的顺序表和链表,使其具有如下功能: https://www.taodocs.com/p-457034764.html
7.数据结构与算法实验基于线性表的图书信息管理数据结构实验1数据结构与算法 实验 基于线性表的图书信息管理 数据结构实验1线性表,线性表[逻辑结构]的顺序存储和链式存储[存储结构(物理结构)]Key1:线性表是指各数据元素间保持“1对1”关系的数据结构Key2:线性表分为顺序表(数组)和链表,分别通过元素相邻和保存指针域的方式来实现“https://blog.51cto.com/u_16099320/7586963
8.基于C++数据结构的图书管理系统图书管理系统问题描述:设计一图书管理系统 【问题描述】:设计一个计算机管理系统,完成图书管理的基本业务。 【基本要求】:1、每种书的登记内容包括书号、书名、著作者和库存量。 2、对书号建立索引表(线性表)以提高查找效率。 3、要求系统具有如下功能: ① 采编入库:新购一种书,确定书号后,登记到图书帐目表中, 如果表中已有,则只将库存量https://qb.zuoyebang.com/xfe-question/question/fa440e7c77d147cd5ac2abccdb68ca3b.html
9.基于线性表的图书信息管理实验简介: 基于线性表的图书信息管理实验 注:该程序为大二的c语言的结构设计课程的实验设计 【实验内容】 图书信息表包括以下几项常用的基本操作:图书信息表的创建和输出、排序、修改、删除信息。实验要求分别利用顺序表和链表实现上述操作,因此,实验内容总计包括8道题目,其中前4道要求基于顺序表实现相应的功能,后4道https://developer.aliyun.com/article/1363570
10.自考范文12篇(全文)答:旨在为更多的学生提供继续深造机会的教学平台,自考采取宽进严出的教育形式,这也正是自考毕业生越来越受社会认可的重要原因,一方面广泛接纳来自各地的高考失意考生,一方面以严格的教育管理制度来规范和约束他们,才使得自考生能更好的适应高速发展的社会就业形式。学生经过系统的学习后,通过毕业论文的答辩、学位英语的考https://www.99xueshu.com/w/ikey2eehrzl6.html
11.大学数据库实验报告(通用8篇)基于以上构想,首先建立一个工作表,命名为霍尔效应测定螺线管轴向的磁感应强度分布处理系统,在工作表中建立如图2的表格,并将实验中给定数据录入表格中,如lm=0.600A、ls=8.00mA和测试点坐标等。数据表中存放原始数据的单元格需学生亲自录入数据,另一些单元格需要老师事先设置好,并保证学生不能改动。笔者利用EXCEL提供的https://www.360wenmi.com/f/file9m71nsfi.html
12.电梯使用单位应当建立基于电梯安全风险防控的动态管理机制,结合本A. 《票款送行管理规定》 B. 《车站票务管理规定》 C. 《应急信息报告规定》 D. 《票务稽查车站接收中奖发票后,按中奖面额从当站票款中支付乘客等额奖金,并填写《兑奖发票统计表》 查看完整题目与操作系统以()为单位来管理用户的数据。 A. 扇区 B. 文件 C. 目录 D. 字节 查看完整题目与https://www.shuashuati.com/ti/e2a651eabfe842fe8e623fa99b51dff5a2.html
13.基于C语言航班信息查询与检索C语言L.sl[L.length].next=0; //将普通的线性表进行改造为静态链表 for(i=L.keynum-1;i>=2;iC语言实现航班管理系统 学生信息管理系统C语言版 C语言学生管理系统源码分享 C语言图书管理系统简洁版 https://www.jb51.net/article/132874.htm