数据结构:实现图书信息管理系统 |
您所在的位置:网站首页 › 数据结构用什么实现的 › 数据结构:实现图书信息管理系统 |
数据结构:顺序表实现图书信息管理系统
大一的数据结构实验拖延了相当长一段时间,最近老师终于让我们实验形式完成一次数据结构作业,我把自己的渣程序放在这里,希望能对肝实验的同学提供帮助,也希望各位大神路过的时候能指出我的不足 实验要求 一、基本要求1、基于顺序存储结构的图书信息表的创建和输出定义一个包含图书信息(书号、书名、价格等)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后统计图书表中的图书个数,同时逐行输出每本图书的信息。 2、将图书按照价格降序排序,逐行输出排序后每本图书的信息。 3、将所有低于平均价格的图书价格提高 20%,所有高于或等于平均价格的图书价格提高 10%,最后逐行输出价格修改后的图书信息。 4、输出逆序存储后每本图书的信息。 5、查找价格最高的图书,输出相应图书的信息。 6、根据指定的最爱图书的名字,查找最爱的图书,输出相应图书的信息。 7、根据指定的最佳位置的序号,查找该位置上的图书,输出相应图书的信息。 8、将新图书插入到图书表中指定的位置上。 9、根据指定的待出库的旧图书的位置,将该图书从图书表中删除,最后输出 该图书出库后的所有图书的信息。 二、老师要求1、尽量用同一个表实现上述功能 2、可自行增加该系统功能 三、个人附加功能1、以彩色界面呈现该系统 2、可一键清空所有数据 3、可按作者查找书籍(作者名需完整) 4、读取文件中的书籍信息并存入系统 5、可临时输入数据 6、以保留两位小数形式显示价格(怎么感觉这么多余。。。) 实现代码头文件以及定义顺序表和书籍结构 #include #include #include #include #include #include #include #include #define maxsize 30 using namespace std; typedef struct { //定义结构体:book int num; //序号 char name[maxsize]; //书名 float price; //价格 char writer[maxsize]; //作者 char time[11]; //出版时间 }book; typedef struct{ book *data; //数据存储域 int length; //长度域 }linklist;创建空表 void init(linklist &L) { L.data=(book*)malloc(maxsize*sizeof(book)); L.length=0; //开创空间后再设置长度为0 }输出信息 void printflist(linklist &L) { int i; for(i=0;i int k; if(iL.length+1) //指定元素位置过于奇特 return false; for(k=i;k int i,j; int n=L.length; linklist t; for(i=0;i if(L.data[i].price double sum=0; int i; for(i=0;i if(L.data[i].priceL.data[i].price=L.data[i].price*11/10;} } coutS.data[i]=L.data[i];} for(i=0;i int i,n=0; char bookname[20]; coutbookname; int num=L.length; for(i=0;i n++; cout if(strcmp(L.data[i].writer,bookname)==0) { n++; coutreturn false;} i--;//对应下标状态; for(j=L.length;j>i;j--) {L.data[j]=L.data[j-1];}//i后所有元素在顺序表上向后移动一位 strcpy(L.data[i].name,e.name); L.data[i].price=e.price; strcpy(L.data[i].writer,e.writer);//将e放入第i位 strcpy(L.data[i].time,e.time); L.length=L.length+1; return true; }查找最贵的书 bool findmax(linklist &L) { if(L.length=0) {return false;} int i=1,index=0; float exp=L.data[0].price; while(i exp=L.data[i].price; index=i; } } coutcout L.data[L.length].num=L.length+1; cout cout linklist L; book e; init(L); int choice; do{ char a; system("cls"); //刷屏函数,用于返回主菜单,保持页面整洁 system("color E0"); //页面颜色为黄底黑字 meau(); cin>>choice; switch(choice){ case 1:init(L); input(L); break; case 2:coute.name>>e.price>>e.writer>>e.time; coute.num; insert(L,e.num,e); break; case 3:printflist(L); coutz; if(deletelist(L,z)==1) coutdeletelist(L,i1);} cout break; } case 7:moneychange(L); couta; if(a=='b'||a=='B'){ break; } case 8:chaname(L); couta; if(a=='b'||a=='B'){ break; } case 9:chawriter(L); couta; if(a=='b'||a=='B'){ break; } case 10:blacktowhite(L); couta; if(a=='b'||a=='B'){ break; } case 11:pricejiang(L); couta; if(a=='b'||a=='B'){ break; } case 12:input(L); couta; if(a=='b'||a=='B'){ break; } } }while(choice!=0); return 0; }运行结果 该程序历时3小时完成,其中我遇到了较多困难,如文件无法读入、程序运行时崩溃、显示信息时只显示了乱码等情况,程序前期运行过程中有很多的失误,导致了效率低下;但最终我还是通过询问老师,查阅书籍等方式改正了错误,实验结果的正确性也得到了验证。虽说可能仍存在一些不足之处,我也会虚心接受,在过程中力求做到尽可能的完善 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |