#include"stdioh"
#include <conioh>
#include <stdlibh>
//#include"FILEh"
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("\n\t\t\t 商店销售管理系统\n\n");
printf("\t\t \n\n");
printf("\t\t 1--添加商品 2--出售商品\n\n");
printf("\t\t 3--删除商品 4--显示商品\n\n");
printf("\t\t 5--查找商品 0--退出系统\n\n");
printf("\t\t \n\n");
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",xname,&xshuliang,&xjiage);
xbiaohao=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("shangpintxt","a+"))==NULL)//打开文件
{printf("文件打开失败!");return ;}
fseek(cp,0L,SEEK_SET);//将文件指针移动到文件开头
while(!feof(cp))
{
fscanf(cp,"%s%d%lf",xname,&xshuliang,&xjiage);//读取文件的内容
xbiaohao=++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("shangpintxt","w+"))==NULL)
{printf("文件打开失败!");return ;}//同上
while(p)
{
fprintf(cp,"%s %d %2lf ",p->dataname,p->datashuliang,p->datajiage);//写入文件中,并且以空格隔开
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->databiaohao==m)return p;
while(p->next)
{
if(p->next->databiaohao==m)return p;
p=p->next;
}
return 0;
}
void xianshi(Slist s)
{
Slist p;
p=s->next;
printf("%10s%20s%10s%10s\n","商品编号","商品名称","商品数量","商品价格");
while(p)
{
printf("%10d%20s%10d%102f\n",p->databiaohao,p->dataname,p->datashuliang,p->datajiage);
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);
}
//有些函数我在没写啊,你自己写写吧,文件的读取和写入,还有链表的创建我都给你写好了,也就是上面的1,4我都写好了,
//包括了文件,剩下的2,3,5,你自己试试,并且我也给你写了一个查找函数,你看看能用不!
#include <stdioh>
#include <malloch>
#include <stringh>
typedef struct
{
char num[10];
char name[20];
float price;
int amount;
}Product;
typedef struct node
{
Product p;
struct node pre;
struct node next;
}node,linklist;
linklist head,last;
void setData(linklist p)
{
printf("产品编号:");
scanf("%s",&p->pnum);
printf("产品名称:");
scanf("%s",&p->pname);
printf("产品单价:");
scanf("%f",&p->pprice);
printf("产品数量:");
scanf("%d",&p->pamount);
}
void Insert(linklist p)
{
setData(p);
p->next=last;
last->pre->next=p;
p->pre=last->pre;
last->pre=p;
}
void Add()
{
char ch;
do
{
linklist p=(linklist)malloc(sizeof(node));
system("cls");
Insert(p);
printf("是否继续");
scanf(" %c",&ch);
}while(ch=='y'||ch=='Y');
}
linklist Qur()
{
char num[10];
linklist p=head->next;
printf("输入产品编号:");
scanf("%s",num);
while(p!=last)
{
if(strcmp(num,p->pnum)==0) break;
p=p->next;
}
if(p==last) {printf("未找到\n");system("pause");}
return p;
}
void Del()
{
linklist p=Qur();
if(p==last) return;
p->pre->next=p->next;
p->next->pre=p->pre;
free(p);
printf("删除成功\n");
system("pause");
}
void Modify()
{
linklist p=Qur();
if(p==last) return ;
setData(p);
}
void printTitle()
{
printf("编号\t名称\t单价\t数量\n");
}
void show(linklist p)
{
printf("%s\t%s\t%2f\t%d\n",p->pnum,p->pname,p->pprice,p->pamount);
}
void Tongji()
{
linklist p=head->next;
int i=0;
printTitle();
while(p!=last)
{
show(p);
p=p->next;
i++;
}
printf("共%d项商品\n",i);
system("pause");
}
void Sort()
{
linklist p,q;
for (p=head->next;p!=last;p=p->next)
{
for (q=p->next;q!=last;q=q->next)
{
if(strcmp(p->pnum,q->pnum)<0)
{
Product temp=p->p;
p->p=q->p;
q->p=temp;
}
}
}
printf("完成\n");
system("pause");
}
void Save()
{
linklist p=head->next;
FILE fp=fopen("d:\\recordtxt","w");
if(fp==NULL)
{
printf("保存失败\n");
return;
}
fprintf(fp,"编号\t名称\t单价\t数量\n");
while(p!=last)
{
fprintf(fp,"%s\t%s\t%2f\t%d\n",p->pnum,p->pname,p->pprice,p->pamount);
p=p->next;
}
fclose(fp);
printf("完成\n");
system("pause");
}
void Disp()
{
linklist p=head->next;
printTitle();
while(p!=last)
{
show(p);
p=p->next;
}
system("pause");
}
void Wrong()
{
printf("输入错误!\n");
system("pause");
}
void menu(void)
{
system("cls");
printf("商品销售管理系统\n");
printf(" \n");
printf(" 1:添加 \n");
printf(" 2:删除 \n");
printf(" 3:查询 \n");
printf(" 4:修改 \n");
printf(" 5:插入 \n");
printf(" 6:统计 \n");
printf(" 7:降序排列 \n");
printf(" 8:存储 \n");
printf(" 9:显示数据 \n");
printf(" 0:退出 \n");
printf(" \n");
printf("\n");
}
int select()
{
int choose;
scanf("%d",&choose);
switch(choose)
{
case 1:Add();break;
case 2:Del();break;
case 3:
{
linklist p=Qur();
if(p!=last) {show(p);system("pause");}break;
}
case 4:Modify();break;
case 5:
{
linklist p=(linklist)malloc(sizeof(node));
Insert(p);break;
}
case 6:Tongji();break;
case 7:Sort();break;
case 8:Save();break;
case 9:Disp();break;
case 0:break;
default:Wrong();break;
}
return choose;
}
void destroy()
{
linklist p=head->next;
while(p!=last)
{
head->next=p->next;
free(p);
p=head->next;
}
free(head);
free(last);
}
int main(void)
{
head=(linklist)malloc(sizeof(node));
last=(linklist)malloc(sizeof(node));
head->next=last;
last->next=NULL;
last->pre=head;
head->pre=NULL;
do
{
menu();
} while (select()!=0);
destroy();
return 0;
}
#include<iostreamh>
const int N=5;
struct PRODUCT
{
int code;//商品代码
char name[20];//商品名称
double price;//单价
int amount;//商品数量
int sales;//销售量
int stock;//商品的库存量
}pro[N];
void input(struct PRODUCT p);
void sort1(int stock,int sales);//冒泡法按商品的库存量排序
void sort2(int code);//选择法按商品代码排序
void search1();//选择法按商品库存量查询
void search2(int code);//折半法按商品代码查询
void out();
void main()
{
int code;
struct PRODUCT p;
input(p);
int ch;
do
{
cout<<"按库存量排序, 请选择: 1 "<<endl;
cout<<"按商品代码排序,请选择: 2 "<<endl;
cout<<"按商品代码查询,请选择: 3 "<<endl;
cout<<"按库存量查询, 请选择: 4 "<<endl;
cout<<"显示商品信息, 请选择: 5 "<<endl;
cout<<"结束程序, 请选择: 6 "<<endl;
cin>>ch;
switch (ch)
{
case 1:sort1(pro[N]stock,pro[N]sales);
break;
case 2:sort2(pro[N]code);break;
case 3:
{
cout<<"请输入商品代码";
cin>>code;
search2(code);
}break;
case 4:search1();break;
case 5:out();break;
case 6:0;break;
default:cout<<"您的输入有错"<<endl;
}
}while(ch!=6);
}
void input(struct PRODUCT P)
{
cout<<"输入英文的时候,请以?为结束标志"<<endl<<endl;
for(int i=0;i<N;i++)
{
cout<<"请输入商品信息 :";
cin>>pro[i]code;cingetline(pro[i]name,10,'\');cin>>pro[i]price>>pro[i]amount>>pro[i]sales;
pro[i]stock=pro[i]amount-pro[i]sales;
}
}
void sort1(int stock,int sales)//冒泡法按商品的库存量排序
{
struct PRODUCT t;
for(int i=0;i<N-1;i++)
for(int j=0;j<N-i-1;j++)
if(pro[j]stock>pro[j+1]stock)
{
t=pro[j];
pro[j]=pro[j+1];
pro[j+1]=t;
}
for(i=0;i<N-1;i++)
for(int j=0;j<N-i-1;j++)
if(pro[j]stock==pro[j+1]stock&&pro[j]sales>pro[j+1]sales)
{
t=pro[j];
pro[j]=pro[j+1];
pro[j+1]=t;
}
cout<<"code"<<'\t'<<"name"<<'\t'<<"price"<<'\t'<<"amount"<<'\t'<<"sales"<<'\t'<<"stock"<<endl;
for(i=0;i<N;i++)
cout<<pro[i]code<<'\t'<<pro[i]name<<'\t'<<pro[i]price<<'\t'<<pro[i]amount<<'\t'<<pro[i]sales<<'\t'<<pro[i]stock<<endl;
}
void sort2(int code)//选择法按商品代码排序
{
struct PRODUCT t;
for(int i=0;i<N-1;i++)
for(int j=i+1;j<N;j++)
if(pro[i]code>pro[j]code)
{
t=pro[i];
pro[i]=pro[j];
pro[j]=t;
}
cout<<"code"<<'\t'<<"name"<<'\t'<<"price"<<'\t'<<"amount"<<'\t'<<"sales"<<'\t'<<"stock"<<endl;
for(i=0;i<N;i++)
cout<<pro[i]code<<'\t'<<pro[i]name<<'\t'<<pro[i]price<<'\t'<<pro[i]amount<<'\t'<<pro[i]sales<<'\t'<<pro[i]stock<<endl;
}
void search1()//选择法按商品库存量查询
{
int stock1,stock2;
cout<<"请从小到大输入您要查找商品库存量的范围 ";
cin>>stock1>>stock2;
cout<<"code"<<'\t'<<"name"<<'\t'<<"price"<<'\t'<<"amount"<<'\t'<<"sales"<<'\t'<<"stock"<<endl;
for(int i=stock1;i<=stock2;i++)
{
for(int j=0;j<N;j++)
if(i==pro[j]stock)break;
if(j==N)
cout<<"";
else
cout<<pro[j]code<<'\t'<<pro[j]name<<'\t'<<pro[j]price<<'\t'<<pro[j]amount<<'\t'<<pro[j]sales<<'\t'<<pro[j]stock<<endl;
}
cout<<"如果没有显示则无此商品信息"<<endl;
}
void search2(int code)//折半法按商品代码查询
{
struct PRODUCT t;
for(int i=0;i<N-1;i++)
for(int j=0;j<N-i-1;j++)
if(pro[j]code>pro[j+1]code)
{
t=pro[j];
pro[j]=pro[j+1];
pro[j+1]=t;
}
int top=0,bottom=N-1,middle=(top+bottom)/2;//折半法查找商品代码
while(top<=middle)
{
if(code==pro[middle]code)
break;
else if(code>pro[middle]code)
top=middle+1;
else
bottom=middle-1;
middle=(top+bottom)/2;
}
if(code==pro[middle]code)
{
cout<<"code"<<'\t'<<"name"<<'\t'<<"price"<<'\t'<<"amount"<<'\t'<<"sales"<<'\t'<<"stock"<<endl;
cout<<pro[middle]code<<'\t'<<pro[middle]name<<'\t'<<pro[middle]price<<'\t'<<pro[middle]amount<<'\t'<<pro[middle]sales<<'\t'<<pro[middle]stock<<endl;
}
else
cout<<"没有您要找的商品"<<endl;
}
void out()
{
cout<<"code"<<'\t'<<"name"<<'\t'<<"price"<<'\t'<<"amount"<<'\t'<<"sales"<<'\t'<<"stock"<<endl;
for(int i=0;i<N;i++)
cout<<pro[i]code<<'\t'<<pro[i]name<<'\t'<<pro[i]price<<'\t'<<pro[i]amount<<'\t'<<pro[i]sales<<'\t'<<pro[i]stock<<endl;
}
以上就是关于c语言 商品管理系统全部的内容,包括:c语言 商品管理系统、高分求 C语言 商品销售管理系统 代码~ 简单的~、一个简单的商品管理系统程序清单 c++ 请25号前交给我 malchike@live.cn等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)