最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

商品销售管理系统设计

来源:动视网 责编:小OO 时间:2025-09-25 14:01:10
文档

商品销售管理系统设计

、商品销售管理问题描述:已知一公司有10种产品(产品编号,产品名称,产品价格,产品产地,库存数量(最开始为1000个)),设计一程序,完成以下功能:1)1)销售:从键盘输入顾客姓名,销售数量、销售日期,实现销售功能。需要判断产品是否存在,销售数量是否小于库存数量,销售日期格式是否合法(格式为:YYYY-MM-DD,如2009-01-02))2)2)能根据产品编号查询产品的销售历史3)3)计算时间段内各个产品的销售总额4)4)能根据顾客姓名,查询购买历史5)5)能显示所有顾客的姓名提示:●●定义
推荐度:
导读、商品销售管理问题描述:已知一公司有10种产品(产品编号,产品名称,产品价格,产品产地,库存数量(最开始为1000个)),设计一程序,完成以下功能:1)1)销售:从键盘输入顾客姓名,销售数量、销售日期,实现销售功能。需要判断产品是否存在,销售数量是否小于库存数量,销售日期格式是否合法(格式为:YYYY-MM-DD,如2009-01-02))2)2)能根据产品编号查询产品的销售历史3)3)计算时间段内各个产品的销售总额4)4)能根据顾客姓名,查询购买历史5)5)能显示所有顾客的姓名提示:●●定义
、商品销售管理

问题描述:

已知一公司有10种产品(产品编号,产品名称,产品价格,产品产地,库存数量(最开始为1000个)),设计一程序,完成以下功能:

1)1)销售:从键盘输入顾客姓名,销售数量、销售日期,实现销售功能。需要判断产品是否存在,销售数量是否小于库存数量,销售日期格式是否合法(格式为:YYYY-MM-DD,如2009-01-02))

2)2)能根据产品编号查询产品的销售历史

3)3)计算时间段内各个产品的销售总额

4)4)能根据顾客姓名,查询购买历史

5)5)能显示所有顾客的姓名

提示:

●●定义一个日期结构体保存日期,具体信息为:年、月、日

●●判断存款日期和取款日期的格式是否合法时,需要判断长度是否为10,第5位和第8位是否为’-’,字符,将1-4位表示的年份,6-7位表示的月份,9-10位表示的日期分别转换成整数。判断是否满足构成日期的条件闰年月份只能是1-12之间的数,如果是闰年,二月可以是29天否则不能大于28,1,3,5,7,8,10,12月可以是31天,其余只能小于等于30(建议写成函数)。

●●定义一个结构体数组保存10种产品信息,具体信息为:产品编号,产品名称,产品价格,产品产地,库存数量(最开始为1000个)

●●定义一个链表,保存销售信息,具体为:顾客代码,销售数量、销售日期。

●●定义一个链表保存顾客信息,具体为:顾客代码,顾客姓名

●●当输入销售信息时查询顾客链表,如果在链表中存在该姓名的顾客记录,则将其代码在该销售链表中插入一条记录,如果不存在,则在顾客链表中插入一条记录,(顾客代码需要自动生成)。 

 #include "stdio.h"   /*I/O函数*/

#include "stdlib.h" /*标准库函数*/

#include "string.h"/*字符串函数*/

#include "ctype.h" /*字符操作函数*/

#include "time.h" /*时钟函数*/

#include "cstdlib"

#include "conio.h"

int x,k;/*定义全局变量用于保存当前商品种类*/

struct product /*定义商品数据结构*/

{

   int num; /*商品编号*/

   char name[20]; /*商品名称*/

   float price;  /*商品售价*/

   char place[10]; /*商品名称*/

   int storage;  /*商品库存*/

 }_product[10],product1[10];//定义主结构体数组和备用结构体数组

 struct data//定义日期结构体

 { int year,month,day;

 };

 struct sell /*定义销售数据结构*/

{

   int cus; /*顾客代码*/

   int num; /*商品编号*/ 

   float sells;/*销售数量*/

  char data1[12];/*日期*/

   struct sell * next;

 }*head_s,*pp,*tail_s;//定义头指针操、作指针以及尾指针

  

 struct customer /*定义销售数据结构*/

{

   int cus; /*顾客代码*/

   char name[10]; /*顾客姓名*/

   struct customer * next;

}*head_c,*qq,*tail_c;//定义头指针操、作指针以及尾指针

void load();//读取文件函数

void add();//添加销售信息函数

int search_num();//根据商品编号查询商品的销售历史

void cal();//计算时间段内各个商品的销售总额

int search_name();//根据顾客姓名,查询购买历史

void list_name();//显示所有顾客的姓名

void main();//主函数

int judge();//主体判断函数

int judge_data(char *data1);//细节判断函数,用于判断日期是否合法

void download_s();//写入销售信息(顾客代码,销售数量、销售日期)文件

void download_c();//导出顾客购买记录

void display();//显示现在的商品信息

//主函数

 void main()

{

         int choice;

         struct customer * head;//定义结构指针

         head=malloc(sizeof(struct customer));//申请动态存储空间

         head->next=NULL;

 do

        { 

                printf("***********************欢迎使用商品销售管理系统!!!*******************\\n\\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("请选择不同功能 输入0----9的数字\\n 若输入其它值会提前退出\\n");

                scanf("%d",&choice);

                system("cls");  

                switch(choice)

                {

                case 1:

                        load();

                        system("cls");

                        break;

                case 2:

                        display();

                        break;

                case 3:

                        add();

                        break;

                case 4:

                        search_num();

                        break;

                case 5:

                        cal();

                        break;

                case 6:

                        search_name();

                        break;

                case 7:

                        list_name(head);

                        break;

            case 8:

                        download_s();

                        break;

                case 9:

                        download_c();

                        break;

                case 0:

                        printf("\\n\\n\\n\\n");

                        printf("*************谢谢使用************\\n\\n\\n\\n");

                        break;

                }

        }while(choice>0&&choice<=9);

}

void display()

{

   int code,i=0;

   pp=(struct sell *)malloc(sizeof(struct sell));//申请动态存储空间并将指针转变为结构类型

   qq=(struct customer *)malloc(sizeof(struct customer));//申请动态存储空间并将指针转变为结构类型

  

   pp->next=NULL;

   qq->next=NULL;

   system("cls");    /*清屏*/

   printf("**************************商品信息**************************\\n\\n\\n");

   printf("   商品编号    商品名称    商品价格    商品产地    库存数量\\n");

   while(i<10)  

        {   //输出商品记录

                printf("%8d%12s  %12.2f%10s%14d\\n",_product[i].num,_product[i].name,_product[i].price,

                        _product[i].place,_product[i].storage);

                i++; 

        } 

   printf("\\n\\n查询完毕,请按任意键继续......");

                getch();

                system("cls");

}

void load(){//读取文件函数

         int i=0,n=0,a,b,j;

         FILE *fp; //指向文件的指针

         do{

         printf("请选择导入商品信息的方法\\n1:通过键盘输入\\n2:通过文件导入\\n");

         scanf("%d",&a);

         if(a==2){

         

   

   if((fp=fopen("商品信息.txt","rb"))==NULL)//打开文件

   {

      printf("不能打开文件,请检查文件路径\\n");  //不能打开

      exit(0);  //退出*/

   }printf("*****************88商品信息88*******************\\n");

        printf("编号     名称       价格      产地      库存数量\\n");

        while(!feof(fp))        

        {   //读入文件

                fscanf(fp,"%d%s%f%s%d",&_product[i].num,_product[i].name,&_product[i].price,_product[i].place,&_product[i].storage); 

                printf("%-10d%-10s %-10.2f%-12s%-12d\\n",_product[i].num,_product[i].name,_product[i].price,_product[i].place,_product[i].storage);

                i++; 

        } 

                for(i=0;i<10;i++)

                        product1[i]=_product[i];  //对备用结构体数组赋值

                fclose(fp); //关闭文件

                printf("\\数据读入成功!按任意键继续......\\n");

                }

         if(a==1)

         { if((fp=fopen("商品信息1.txt","w"))==NULL)//打开文件

   {

      printf("不能打开文件,请检查文件路径\\n");  //不能打开

      exit(0);  //退出*/

   }

         printf("请输入商品种数");

         scanf("%d",&b);

         printf("*************商品信息***************\\n");

         printf("编号   名称   价格   产地   库存数量\\n");

         for(j=1;j<=b;j++){

        

         scanf("%d%s%f%s%d",&_product[i].num,_product[i].name,&_product[i].price,_product[i].place,&_product[i].storage); 

         fprintf(fp,"%-6d%-6s%-6.2f%-6s%-6d\\n",_product[i].num,_product[i].name,_product[i].price,_product[i].place,_product[i].storage);

         }

         fclose(fp); //关闭文件

                printf("\\数据读入成功!按任意键继续......\\n");

                }

         

}while(a!=1&&a!=2);}

//细节判断函数,用于判断日期是否合法

 int judge_data(char *data1)

{

        int n=1,m,year=(data1[0]-48)*1000+(data1[1]-48)*100+(data1[2]-48)*10+(data1[3]-48),

                month=(data1[5]-48)*10+(data1[6]-48),day=(data1[8]-48)*10+(data1[9]-48);

        m=strlen(data1);

        if(m!=10)

                n=0;

        if(data1[4]!='-'||data1[7]!='-')

                n=0;

        if(year>10000||year<1000||month>12||month<1||day>31||day<1) n=0;

        if(((year%4==0&&year%100!=0)||(year%400==0))&&month==2)

                if(day>30) n=0;

        if(month==2&&day>=29) n=0;

        if(month==4||month==6||month==9||month==11)

                if(day>30) n=0;

                return n;

 }

 

 //判断函数

  int judge()//判断商品编号 数量 日期是否正确

{

        int i,j=0,k,temp;

        for(i=0;i<10;i++)

                if(pp->num==_product[i].num) 

                {

                        j++;

                        x=k=i;

                        temp=_product[k].storage;

                        if((_product[k].storage-(int)pp->sells)>=0) 

                                _product[k].storage-=(int)pp->sells;//判断计算剩余量

                        break;

                }

                if(j==0) return 3;//判断是否存在输入编号的商品

                else if(temp-(int)pp->sells<0) return 2;//判断输入量是否大于剩余库存量

                         else if(pp->sells-(int)pp->sells>=1e-6) return 4;//商品量

                                  else if(judge_data(pp->data1)==0) return 0;//判断日期

                                           else return 1;//完全正确

}

//添加销售信息函数

 void add()

   int code,i=0,n,m;

   pp=(struct sell *)malloc(sizeof(struct sell));//申请动态存储空间并将指针转变为结构类型

   qq=(struct customer *)malloc(sizeof(struct customer));//申请动态存储空间并将指针转变为结构类型

   srand(time(0));

   code=rand();                 

   pp->next=NULL;

   qq->next=NULL;

   system("cls");    /*清屏*/

   printf("请输入销售记录\\n\\n\\n"); /*提示输入记录*/ 

   printf("顾客姓名        商品编号         销售数量          销售日期\\n");

   printf("-----------------------------------------------------------\\n");

   scanf("%s%d%f%s",qq->name,&pp->num,&pp->sells,pp->data1);  /*输入记录*/

   n=(int)pp->sells;

   if(n<=0)

   {

           printf("商品数量有误!!!请从新输入");

           scanf("%f",&pp->sells);

   }

   

   while(1)

   {

           m=judge();//判断商品编号 数量 日期是否正确

           if(m==1){   

                  // pp=(struct sell *)malloc(sizeof(struct sell));//申请动态存储空间并将指针转变为结构类型

          // qq=(struct customer *)malloc(sizeof(struct customer));

                        pp->cus=qq->cus=code;//随机数

                if(head_s==NULL) 

                        head_s=pp;

                        else 

                                tail_s->next=pp;

                                tail_s=pp;

                                if(head_c==NULL) head_c=qq;

                                else tail_c->next=qq;

                                tail_c=qq;

                        

                                printf("\\销售信息输入成功!按任意键继续......\\n");

                                getch();

                                system("cls");

                                break;

           }

           else if(m==2)

           {   

                                system("cls");

                                printf("销售数量已大于库存数量,请重新输入:\\n\\n\\n");

                                printf("请输入销售数量\\n\\n\\n"); /*提示输入记录*/ 

                        printf("销售数量 \\n");

                                scanf("%f",&pp->sells);  /*输入记录*/

                                continue;

           }

           else if(m==3){          

                                system("cls");

                                printf("无此商品,请重新输入:\\n\\n\\n");

                                printf("请输入销售记录\\n\\n\\n"); /*提示输入记录*/ 

                                printf(" 商品编号  \\n");

                                scanf("%d",&pp->num);  /*输入记录*/

                                continue;

           }

           else if(m==4){               

                                system("cls");

                                printf("商品数量输入错误,请重新输入商品数量:\\n\\n\\n");

                                printf("请输入销售记录\\n\\n\\n"); /*提示输入记录*/ 

                                printf("销售数量:\\n");

                                scanf("%f",&pp->sells);  /*输入记录*/

                                continue;

                                                        }       

                        else if(m==0){  

                                system("cls");

                                printf("销售日期不合法,请重新输入销售日期:\\n\\n\\n");/*提示输入记录*/ 

                                printf("销售日期\\n");

                                scanf("%s",pp->data1);  /*输入记录*/

                                continue;}

   k++;}

                                                                

           

   }

 //根据商品编号查询商品的销售历史

search_num()

 {

         int i,num,k=0,flag=1,n=0;

         struct sell * ptr;

         system("cls");

         printf("请输入商品编号:\\n");

         scanf("%d",&num);

         for(i=0;i<10;i++)

                 if(num==_product[i].num) {flag=0;break;} 

         if(flag==1)

         {   system("cls");     

         printf("无此商品,请查实商品编号后按任意键准备重新输入!!!");

             getch();

             system("cls");

             return 0;

         }

         for(ptr=head_s;ptr;ptr=ptr->next)

                 if(num==ptr->num) 

                 {       if(k==0)

                 {

                         printf("商品编号         销售数量          销售总额        销售日期\\n");

                printf("-----------------------------------------------------------\\n");

                    k++;

                                                }

                 

        

                         printf("%5d%20d%20.2f%15s\\n",ptr->num,(int)ptr->sells,

                                 (int)ptr->sells*_product[i].price,ptr->data1);

                 }

         if(k==0)  {    printf("该商品记录为空!!!按任意键继续......");

                                                getch();

                                                system("cls");

                                                return 0;

                                        }

                 else

                 {

                         printf("\\n\\n查询完毕,请按任意键继续......");

                         getch();

                         

                         system("cls");

                         return 0;

                }

 }

 //计算时间段内各个商品的销售总额

void cal()

{       

        int i,n=0;

        struct sell s1,s2,*p=&s1,*q=&s2,*ptr;

        system("cls");

        printf("请输入开始日期:");

        scanf("%s",p->data1);

        system("cls");

        

do{     

        if(judge_data(pp->data1)!=1)

        {       printf("输入日期不合法,请重新输入:");

                scanf("%s",p->data1);

                system("cls");

                n=1;

        }

        else

                n=0;

}while(n==1);

        printf("请输入结束日期:");

        scanf("%s",q->data1);

        system("cls");

do{

        if(judge_data(q->data1)!=1)

        {       printf("输入日期不合法,请重新输入:");

                scanf("%s",q->data1);

                system("cls");

                n=1;

        }

        else

                n=0;

}while(n==1);

        printf("销售记录如下:\\时间:%s至%s\\n",p->data1,q->data1);

        printf("\\n\\n\\商品编号           销售总额\\n");

        printf("\\---------------------------\\n\\n");

for(ptr=head_s;ptr;ptr=ptr->next)

                {

                        for(i=0;i<10;i++)

                                if(product1[i].num==ptr->num) break;

                        product1[i].storage-=(int)ptr->sells;

                }

        for(i=0;i<10;i++)

                printf("\\%2d\\%.2f\\n",product1[i].num,product1[i].price*(1000-product1[i].storage));

        printf("\\n\\n查询完毕,请按任意键继续......");

        getch();        

        system("cls");

}

//根据顾客姓名,查询购买历史

int search_name()

{

         int i,k=1;

         char name[10];

         struct customer * ptr1;

         struct sell * ptr2;

         system("cls");

         printf("请输入顾客姓名:\\n");

         scanf("%s",name);

         for(ptr1=head_c;ptr1;ptr1=ptr1->next)

         {   for(ptr2=head_s;ptr2;ptr2=ptr2->next)

                        if(ptr1->cus==ptr2->cus) break;

                                        for(i=0;i<10;i++)

                                                if(ptr2->num==_product[i].num) break;

                if(strcmp(name,ptr1->name)==0) 

                 {       

                        // if(k==0||k%8==0)     

                         {              printf("顾客姓名   顾客代码    商品编号     购买数量    购买总额     购买日期\\n");

                                        printf("---------------------------------------------------------------------------------\\n");

                         } 

                         printf("%2s%15d%15d%10d%15.2f%15s\\n",ptr1->name,ptr1->cus,ptr2->num,(int)ptr2->sells,((int)ptr2->sells)*product1[i].price,ptr2->data1);

                         

                     //k++;

                }

                k=0;

     } 

    

        

         if(k==0)  

         {    

                 printf("不存在此顾客!!!按任意键继续......");

                                        getch();

                                        system("cls");

                                        return 0;

                                }

                

                 else{

                         printf("\\n\\n查询完毕,请按任意键继续......");

                         getch();

                         system("cls");

                         return 0;

                 }

         

}

//显示所有顾客的姓名

void list_name()

{   int n=1;

        struct customer * ptr;

        system("cls");

        if(head_c!=NULL)//判断链表是否为空

        {

                printf("顾客姓名如下:\\n");//用来显示所有顾客的姓名

                for(ptr=head_c;ptr;ptr=ptr->next)

                {       printf("\\%s\\n",ptr->name);

                        

                        n++;

                }

                printf("\\n\\n顾客姓名查询完毕,请按任意键继续......");            

                getch();

            system("cls");

        }

        else

        {

                printf("顾客链表为空!!!请按任意键继续......");

                getch();

            system("cls");

        }

}

void download_s()//写入销售信息(顾客代码,销售数量、销售日期)文件

{

int i=0;

        FILE *fp;

        struct customer *ptr1;

        struct sell *ptr2;

        system("cls");

        if((fp=fopen("销售信息文件.txt","w"))==NULL)

        {       printf("销售信息文件无法生成!\\n");

                exit(0);

        }

        if(qq!=NULL)

        {

                fprintf(fp,"  顾客代码    销售数量       购买日期\\n");

                for(ptr1=head_c;ptr1;ptr1=ptr1->next)

                {       for(ptr2=head_s;ptr2;ptr2=ptr2->next)

                                if(ptr1->cus==ptr2->cus) 

                                {       for(i=0;i<10;i++)

                                                if(ptr2->num==_product[i].num) 

                                                        break;

                                        break;

                                }

                        

                                        fprintf(fp,"%8d%10d           %10s\\n",ptr1->cus,(int)ptr2->sells,ptr2->data1);

                 }

        fclose(fp);

        printf("文件保存完毕!“销售信息文件.txt”文件.\\n");

        printf("按任意键继续......\\n");

        getch();

        system("cls");

        }

        else

        {

                printf("顾客记录为空!!!按任意键继续......");

                getch();

            system("cls");

        }

}

void download_c()//导出顾客购买记录

{       

        int i=0;

        FILE *fp;

        struct customer *ptr1;

        struct sell *ptr2;

        system("cls");

        if((fp=fopen("顾客信息文件.txt","w"))==NULL)

        {       printf("顾客信息文件无法生成!\\n");

                exit(0);

        }

        if(qq!=NULL)

        {

                fprintf(fp,"顾客姓名  顾客代码  \\n");

                for(ptr1=head_c;ptr1;ptr1=ptr1->next)

                {       for(ptr2=head_s;ptr2;ptr2=ptr2->next)

                                if(ptr1->cus==ptr2->cus) 

                                {       for(i=0;i<10;i++)

                                                if(ptr2->num==_product[i].num) 

                                                        break;

                                        break;

                                }

                        

                                        fprintf(fp,"%5s%10d\\n",ptr1->name,ptr1->cus);

                 }

        fclose(fp);

        printf("文件保存完毕!“顾客信息文件.txt”文件.\\n");

        printf("按任意键继续......\\n");

        getch();

        system("cls");

        }

        else

        {

                printf("顾客记录为空!!!按任意键继续......");

                getch();

            system("cls");

文档

商品销售管理系统设计

、商品销售管理问题描述:已知一公司有10种产品(产品编号,产品名称,产品价格,产品产地,库存数量(最开始为1000个)),设计一程序,完成以下功能:1)1)销售:从键盘输入顾客姓名,销售数量、销售日期,实现销售功能。需要判断产品是否存在,销售数量是否小于库存数量,销售日期格式是否合法(格式为:YYYY-MM-DD,如2009-01-02))2)2)能根据产品编号查询产品的销售历史3)3)计算时间段内各个产品的销售总额4)4)能根据顾客姓名,查询购买历史5)5)能显示所有顾客的姓名提示:●●定义
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top