我的第一篇原创代码,嘿嘿!
很多同学反映课本上面的线性表看不懂,所以今天他来啦!这是一个简单易懂的学习线性表的程序------图书管理系统。希望能够帮助到你们!
话不对说,下面我们直接上源代码,有不懂的可以随时问小编哟!有大神路过恳请多多指点指点小编,小编应当感激不尽!
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
typedef struct
{
char no[20];
char name[20];
double price;
}Book;
typedef struct
{
Book *elem;
int length;
}SqList;
//顺序表的初始化
int IntList(SqList &L)
{
L.elem=new Book[30];
if(!L.elem){cout<<"顺序表构造失败!"<<endl;exit(-1);}
L.length=0;
cout<<"顺序表构造成功!"<<endl;
return 1;
}
//顺序表的取值
int GetList(SqList &L)
{
int x,i;
cout<<"请输入你要录入的图书数量:";
cin>>x;
for(i=1;i<=x;i++)
{
cout<<"书号:";
cin>>L.elem[i].no;
cout<<"书名:";
cin>>L.elem[i].name;
cout<<"图书价格:";
cin>>L.elem[i].price;\
++L.length;
}
return 0;
}
//顺序表的元素显示
void ShowList(SqList L)
{
int i=1;
cout<<"书号\t\t"<<"书名\t\t"<<"图书价格"<<endl;
for(i;i<=L.length;i++){
cout<<L.elem[i].no<<"\t\t"<<L.elem[i].name<<"\t\t"<<L.elem[i].price<<endl;
}
}
//顺序表的查找
int LocalList(SqList L)
{
int i=1;
int x,c;
char a[20];
char b[20];
cout<<"1、按书号查找:"<<endl;
cout<<"2、按书名查找:"<<endl;
cout<<"3、按图书价格查找:"<<endl;
cin>>x;
switch(x)
{
case 1:
cout<<"请输入你要查询的书号:";
cin>>a;
for(i;i<=L.length;i++)
{
if(!strcmp(L.elem[i].no,a))
{
cout<<"书号\t\t"<<"书名\t\t"<<"图书价格"<<endl;
cout<<L.elem[i].no<<"\t\t"<<L.elem[i].name<<"\t\t"<<L.elem[i].price<<endl;
}
}
break;
case 2:
cout<<"请输入你要查询的书名:";
cin>>b;
for(i;i<=L.length;i++)
{
if(!strcmp(L.elem[i].name,b))
{
cout<<"书号\t\t"<<"书名\t\t"<<"图书价格"<<endl;
cout<<L.elem[i].no<<"\t\t"<<L.elem[i].name<<"\t\t"<<L.elem[i].price<<endl;
}
}
break;
case 3:
cout<<"请输入你要查询的图书价格:";
cin>>c;
for(i;i<=L.length;i++)
{
if(L.elem[i].price==c)
{
cout<<"书号\t\t"<<"书名\t\t"<<"图书价格"<<endl;
cout<<L.elem[i].no<<"\t\t"<<L.elem[i].name<<"\t\t"<<L.elem[i].price<<endl;
}
}
break;
default:
cout<<"输入的数字选项有错误!"<<endl;
break;
}
return 0;
}
//顺序表的插入
int InsertList(SqList &L)
{
int i;
char a[20];
char b[20];
int s;
cout<<"请输入你要插入的位置:";
cin>>i;
if(i<1||i>L.length+1){cout<<"插入位置不合法!"<<endl;return 0;}
if(L.length==30){cout<<"顺序表已经存满!"<<endl;return 0;}
for(int j=L.length;j>=i-1;j--)
{
L.elem[j+1].price=L.elem[j].price;
strcpy(L.elem[j+1].name,L.elem[j].name);
strcpy(L.elem[j+1].no,L.elem[j].no);
}
cout<<"请输入你要添加的图书信息:"<<endl;
cout<<"书号:";
cin>>a;
strcpy(L.elem[i-1].no,a);
cout<<"书名:";
cin>>b;
strcpy(L.elem[i-1].name,b);
cout<<"图书价格:";
cin>>s;
L.elem[i-1].price=s;
L.length++;
return 0;
}
//顺序表的删除
int DeleteList(SqList &L)
{
int i;
cout<<"请输入你要删除的位置:";
cin>>i;
if(i<1||i>L.length){cout<<"输入的位置不合法!";return 0;}
for(int j=i-1;j<L.length;j++)
{
L.elem[j].price=L.elem[j+1].price;
strcpy(L.elem[j].name,L.elem[j+1].name);
strcpy(L.elem[j].no,L.elem[j+1].no);
}
L.length--;
return 1;
}
//顺序表存储的图书数量
int NumberList(SqList L)
{
cout<<"现有图书的总数量为:"<<L.length<<endl;
return 0;
}
int main()
{
int n;
SqList L;
system("color 3b");
while(1)
{
cout<<"***********************************"<<endl;
cout<<"--------欢迎进入图书管理系统-------"<<endl;
cout<<"------- 1、构造顺序表 ---------"<<endl;
cout<<"------- 2、录入图书信息 --------"<<endl;
cout<<"------- 3、查找图书信息 --------"<<endl;
cout<<"------- 4、插入图书信息 --------"<<endl;
cout<<"------- 5、删除图书信息 --------"<<endl;
cout<<"------- 6、统计图书数量 --------"<<endl;
cout<<"------- 0、退出图书管理系统 ------"<<endl;
cout<<"请选择你要执行的操作:";
cin>>n;
switch(n)
{
case 1:
IntList(L);
break;
case 2:
GetList(L);
break;
case 3:
LocalList(L);
break;
case 4:
InsertList(L);
break;
case 5:
DeleteList(L);
break;
case 6:
NumberList(L);
break;
case 0:
cout<<"-------- 谢谢使用图书管理系统! --------"<<endl;
exit(0);
break;
default:
cout<<"你输入的数字有错,请输入0`6的执行数字。"<<endl;
break;
}
}
return 0;
}
**支持小编的请给小编点个关注哟!小编接下来还会陆续给大家更新,一起互相学习C语言、C++以及JAVA;
谢谢大家的观看!**