/*数据结构:*/
struct shangpin
{
 char name[100];
 char bianhao;
 float jinjia;
 float shoujia;
 int kuchun;
 struct shangpin *next;
}
/*主模块:*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define LEN sizeof(struct shangpin)
main()
{
 struct shangpin * ins(struct shangpin *);
 struct shangpin * del(struct shangpin *);
 void quer(struct shangpin *);
 void disp(struct shangpin *);
 void savef(struct shangpin *);
 void quit(struct shangpin *);
 void menu(void);
 struct shangpin* init(struct shangpin*);
 struct shangpin *head=NULL;
 int cho;head=init(head);
 
 while(1)
 {
  menu();
  do
  {
   printf("please input selection:");
   scanf("%d",&cho);
 
  }while(cho<1||cho>6);
  switch(cho)
  {
   case 1:head=ins(head);break;
   case 2:head=del(head);break;
   case 3:quer(head);break;
   case 4:disp(head);break;
   case 5:savef(head);break;
   case 6:quit(head);
  }
 }
}

/*初始化模块*/
struct shangpin* init(struct shangpin* head)
{
 FILE *fp;    /*文件指针*/
 struct shangpin *prev,*cur;
 if((fp=fopen("aaa.txt","r"))==NULL)  /*打开失败*/
 {
  printf("can't open file aaa.txt\n");
  getch();
  return 0;
  
 }
if(feof(fp))
return(NULL);
cur=(struct shangpin *)malloc(LEN);
fscanf(fp,"%s%c%f%f%d",cur->name,&cur->bianhao,&cur->jinjia,&cur->shoujia,&cur->kuchun);
head=cur;
prev=cur;
while(!feof(fp))
{
 cur=(struct shangpin *)malloc(LEN);
 fscanf(fp,"%s%c%f%f%d",cur->name,&cur->bianhao,&cur->jinjia,&cur->shoujia,&cur->kuchun);
prev->next=cur;
prev=cur;
}
 prev->next=NULL;
 return(head);
}
/*菜单模块*/
void menu(void)
{
 void pristr(void);
 clrscr(); /*清屏*/
 pristr();
 pristr();
 printf("  shangpin C manage system \n\n\n");
 printf(" 1: insert a shangpin\n");
 printf(" 2: delete a shangpin\n");
 printf(" 3: find a shangpin\n");
 printf(" 4: display all shangpin\n");
 printf(" 5: save record\n");
 printf(" 6: exit system\n");
 
 pristr();
 pristr();
 printf("\n\n\n");
}
void pristr(void)
{
 printf("-*-*-*-*-*-*=*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n");
}
 

/*录入模块*/
struct shangpin * ins(struct shangpin *head)
{
 struct shangpin *newn,*t1;
 newn=(struct shangpin *)malloc(LEN);
 printf("please input the shangpin's information \n");
 scanf("%s%c%f%f%d",newn->name,&newn->bianhao,&newn->jinjia,&newn->shoujia,&newn->kuchun);
if(head==NULL)
{
 head=newn;
 newn->next=NULL;
}
else
{
 t1=head;
 while(t1->next!=NULL)
 t1=t1->next;
 t1->next=newn;
 newn->next=NULL;
}
return(head);
}
/*删除模块*/
struct shangpin * del(struct shangpin *head)
{
 struct shangpin *prev,*cur;
 char name[100];
 int flag=0;
 printf("\nplease input the name:");
 scanf("%s",name);
 if(head==NULL)
 printf("empry chat\n");
 else if(strcmp(head->name,name)==0)
 {
  cur=head;
  head=head->next;
  free(cur);
  flag=1;
 }
 else
 {
  cur=head->next;
  prev=head;
  while(cur!=NULL)
  if(strcmp(cur->name,name)==0)
  {
  prev->next=cur->next;
  free(cur);
  flag=1;
  break;
  
  }
  else
  {
   prev=cur;
   cur=cur->next;
  }
 }
  if(flag==1)
  printf("\nthe node is deleted\n");
  else
  printf("\n the node is not existed\n");
  getch();
  return(head);
}
 
/*查询模块*/
void quer(struct shangpin *head)
{
 struct shangpin *t=head;
 char name[100];
 int flag=0;
 printf("\nplease input the name:");
 scanf("%s",name);
 while(t!=NULL)
 if(strcmp(t->name,name)==0)
 {
  flag=1;
  break;
 
 }
 else
 t=t->next;
 if(flag==1)
 {
  printf("the node is found\n");
  printf("name:%s,bianhao:%c,jinjia:%f,shoujia:%f,kuchun:%d\n",t->name,t->bianhao,t->jinjia,t->shoujia,t->kuchun);
 }
 else
  printf("  the node is no found\n");
  getch();
}
 
/*显示模块*/
void disp(struct shangpin *head)
{
 struct shangpin *t1;
 if(head==NULL)
 {
  printf("empty chart\n");
  getch();
  return;
 }
 else
 {
  for(t1=head;t1!=NULL;t1=t1->next)
  printf("%s,%c,%f,%f,%d",t1->name,t1->bianhao,t1->jinjia,t1->shoujia,t1->kuchun);
  getch();
 
 }
}

/*存盘模块*/
void savef(struct shangpin *head)
{
 char s[100];
 FILE *fp;
 struct shangpin *node=head;
 printf("please input file name:\n");
 scanf("%s",s);
 if((fp=fopen(s,"w"))==NULL)
 {
  printf("can't open file\n");
  getch();
  return;
 }
 while(node!=NULL)
 {
  fprintf(fp,"%s,%c,%f,%f,%d",node->name,node->bianhao,node->jinjia,node->shoujia,node->kuchun);
  node=node->next;
 }
 fclose(fp);
}
 
 
/*退出模块*/
void quit(struct shangpin *head)
{
 char c;
 printf("save the result,y or n?\n");
 scanf(" %c",&c);
 if(c=='y')
  savef(head);
 printf("now exit the manage system\n");
 getch();
 exit(0);
}
 
 
注:这个程序还有一个错误,可是我不知道怎么弄了,很久没有写C语言程序了,有一年多了,很多都不记得了,还请高手指导一两……