#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLEN 100
typedef struct
{ char no[8],name[10];
float price;
int amount;
} DataType;
typedef struct
{ DataType data[MAXLEN+1];
int len;
}SeqList;
/*从键盘读入所有货物的信息*/
void input(SeqList*L)
{ int i;
printf("input the length\n");
scanf("%d",&L->len);
printf("input no,name,price,amount\n");
for(i=1;i<=L->len;i++)
scanf("%s%s%f%d",L->data[i].no,L->data[i].name,&L->data[i].price,&L->data[
i].amount);
}
/*查找*/
int search(SeqList*L,DataType x)
{
int i=1; while(i<=L->len&&strcmp(L->data[i].no,x.no)!=0) /*查找元素x所在位置*/
i++;
if(i>L->len ) return 0; return i;
}
/*插入货物信息*/
void ins(SeqList*L,DataType x)
{
int i,j;
i=search(L,x);
if(i==0 )
{
i=1; /*查找插入位置*/
while(i<=L->len&&strcmp(x.no,L->data[i].no)>0)
i++;
for(j=L->len;j>=i;j--)
L->data[j+1]=L->data[j];
L->data[i]=x;
L->len++;
}
else printf("the element already exist\n");
}
/*菜单*/
void menu()
{
printf("1-------------录入信息\n");
printf("2-------------查找\n");
printf("3-------------插入\n");
printf("4-------------输出\n");
printf("0-------------退出\n");
}
void main()
{
SeqList* L;
DataType x;
int sel,i;
L=(SeqList*)malloc(sizeof(SeqList));
L->len=0; do
{ menu();
printf("input your select\n");
scanf("%d",&sel);
switch(sel)
{
case 1:input(L);break;
case 2:printf("input no\n");
scanf("%s",x.no);
i=search(L,x);
if(i==0) printf("not exsit\n" );
else
printf("%10s%12s%7.2f%5d\n",L->data[i].no,L->data[i].name,L->data[i].price,L->data[i].amount);
break;
case 3:printf("input no,name,price,amount\n");
scanf("%s%s%f%d",x.no,x.name,&x.price,&x.amount);
ins(L,x);
break;
case 4:for(i=1;i<=L->len;i++)
printf("%10s%12s%7.2f%5d\n",L->data[i].no,L->data[i].name,L->data[i].price,L->data[i].amount);
}
}while(sel!=0);
}