#include"stdio.h"
#include <conio.h>
#include <stdlib.h>
//#include"FILE.h"
typedef struct shangpin
{
char name[20];
int biaohao;
int shuliang;
double jiage;
}Node;
typedef struct list
{
Node data;
struct list *next;
}List ,*Slist;
void charu(Slist &s,Node x);
int caidan()
{
int i;
while(1)
{
system("cls");
printf("nttt 商店销售管理系统nn");
printf("tt **********************************************nn");
printf("tt 1--添加商品 2--出售商品nn");
printf("tt 3--删除商品 4--显示商品nn");
printf("tt 5--查找商品 0--退出系统nn");
printf("tt **********************************************nn");
printf("请选择(0-5): ");
scanf("%d",&i);
if(i<6&&i>=0)break;
}
return i;
}
void chushihua(Slist &s)
{
Slist head=new List;
head->next=NULL;
s=head;
}
void tianjia(Slist &s)
{
Node x;
Slist r,p,q;
int i=0;
r=new List;
r->next=NULL;
q=p=s->next;
while(q)
{
i++;
q=q->next;
}
printf("请输入商品名称、数量以及价格: ");
scanf("%s%d%lf",x.name,&x.shuliang,&x.jiage);
x.biaohao=i+1;
r->data=x;
s->next=r;
r->next=p;
}
void duchu(Slist &s)
{
FILE *cp;//定义文件指针
int i=0;
Node x;
if((cp=fopen("shangpin.txt","a+"))==NULL)//打开文件
{printf("文件打开失败!");return ;}
fseek(cp,0L,SEEK_SET);//将文件指针移动到文件开头
while(!feof(cp))
{
fscanf(cp,"%s%d%lf",x.name,&x.shuliang,&x.jiage);//读取文件的内容
x.biaohao=++i;
charu(s,x);//把读到的数据插入到链表上
}
fclose(cp);//关闭文件
}
void charu(Slist &s,Node x)
{
Slist r,p=s->next;
r=new List;
r->next=NULL;
r->data=x;
s->next=r;
r->next=p;
}
void xieru(Slist s)
{
FILE *cp;//同上
Slist p=s->next;
if((cp=fopen("shangpin.txt","w+"))==NULL)
{printf("文件打开失败!");return ;}//同上
while(p)
{
fprintf(cp,"%s %d %.2lf ",p->data.name,p->data.shuliang,p->data.jiage);//写入文件中,并且以空格隔开
p=p->next;
}
fclose(cp);//关闭文件
}
Slist chazhao(Slist s,int m)
{
Slist p=s->next;
if(p==0)return 0;
if(p->next==0)return p;
if(p->data.biaohao==m)return p;
while(p->next)
{
if(p->next->data.biaohao==m)return p;
p=p->next;
}
return 0;
}
void xianshi(Slist s)
{
Slist p;
p=s->next;
printf("%10s%20s%10s%10sn","商品编号","商品名称","商品数量","商品价格");
while(p)
{
printf("%10d%20s%10d%10.2fn",p->data.biaohao,p->data.name,p->data.shuliang,p->data.jiage);
p=p->next;
}
}
void shanchu(Slist &s)
{
}
void chushou(Slist &s)
{
}
void main()
{
int num;
Slist s;
chushihua(s);
duchu(s);
num=caidan();
while(1)
{
switch(num)
{
case 0:exit(0);break;
case 1:tianjia(s);break;
case 2:chushou(s);break;
case 3:shanchu(s);break;
case 4:xianshi(s);break;
case 5:chazhao(s,1);break;
}
printf("按任意键继续!");
getch()();
num=caidan();
}
xieru(s);
}
这是我以前给别人的一个商品管理的,用文件存储,用的由头结点的链表存储数据的(不理解可以不管),你是拿这个自己改改不会问我呢?还是我直接给你改了?