⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 一个产品管理系统 .txt

📁 各种经典的C算法和特别用途C程序的源码集以供各位高级C编程研习者参考。
💻 TXT
📖 第 1 页 / 共 2 页
字号:
 


#include  <stdio.h>
#include  <string.h>
#include  <conio.h>
#define  SIZE 300
struct  product
{char id[3];
  char name[10];
  char gysh[10];
  char lb[11];
  char dwsl[11];
  char dj[10];
  char kcp[5];
  char dgl[6];
  char zdgl[6];
  char zz[5];}
   pro[SIZE];
void  myprint();
void  product();
void  myprint1();
void  mycreate();
void  mydisplay();
void  mysearch();
void  sch_num (FILE  *fp);
void  mymodify();
void  myadd();
void  mysave();
void  mydelete();
void  del_num(FILE  *fp);
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>

#include<stdio.h>
#include<stdlib.h>
#include <conio.h>
#include <malloc.h>
#define NULL 0     
void cliread(); 
void clichoose();
void cliprintmenu();
void clidisplay();
void cliadd();
void clisearch();
void climodify();
void clireturn();
void clidel(); 


typedef struct client
{
 char id[8];                      /*客户编号*/
 char name[25];                /*客户名称*/
 struct client *next;       
}CLI; 
FILE *fpc;
CLI *Chead;


int transfer1(char *p,int n)
{int i,j;
 long sum=0,qu;
 for(i=0;i<n;i++)
  {for(j=n-1-i,qu=1;j>0;j--)
    qu=10*qu;
   sum=sum+(*(p+i)-'0')*qu;}
 return(sum+1);}

/*float transfer2(char *ca)
{float val,power,sum; int i=0,j;char s[20];
 printf("%s\n",*ca);
 for(i=0,j=0;i<13;i++)
  if(*(ca+i)='.'||(*(ca+i)>='0'&&*(ca+i)<='9')) s[j++]=*(ca+i);
 s[j]='\0';j=0;
 for(val=0;s[j]>='0'&&s[j]<='9';j++)
 val=10*val+s[j]-'0';
 if(s[j]=='.') j++;
 for(power=1;s[j]>='0'&&s[j]<='9';i++)
  {val=10*val+s[j]-'0'; power*=10;}

 sum=val/power;
 printf("%f\n",sum);
}*/
 
void print()
{FILE *pf;
 int n,i,j,l,cout=0;
 long k;
 char *ps;
 struct order *p;
 pf=fopen("d:\\dzs\\order3.txt","rb");
 fseek(pf,0l,2);
 k=ftell(pf); l=28; printf("k1=%ld\n",k);ps=(char *)malloc(k);
 fseek(pf,0l,0); fread(ps,1,k,pf);
 printf("                  order\n");
 for(i=0;i<k;i=i+28)
  {for(j=i;j<26+i;j++)
    putchar(*(ps+j));
   printf("\n");}
 printf("\n");
 printf("            ****请按回车****\n");
 getchar();
 fclose(pf);
 pf=fopen("d:\\dzs\\ordet.txt","rb");
 fseek(pf,0l,2);
 k=ftell(pf);printf("k2=%ld\n",k); l=44; ps=(char*)malloc(k);
 fseek(pf,0l,0); fread(ps,1,k,pf);
 printf("                   order detail\n");
 for(i=0;i<k;i=i+44)
  {for(j=i;j<42+i;j++)
    putchar(*(ps+j));
   printf("\n");}
 printf("\n");
 printf("            ****请按回车****\n");
 
}

 

void add()
{struct order{a[28];};
 struct ordet{a[44];};
 struct order *or;
 struct ordet *ot;
 char *temp,*or1,*or2;
 int i;
 long number;
 FILE *fp1,*fp2;
 if((fp1=fopen("d:\\dzs\\order3.txt","rb+"))==NULL)
  printf("error\n");
 fseek(fp1,-28l,2);
 temp=(char *)malloc(6);
 for(i=0;i<5;i++)
  *(temp+i)=fgetc(fp1);
 *(temp+i)='\0';
 number=transfer1(temp,5);
 printf("请输入订单信息:\n");
 printf("您将使用以下客户ID(请按以下方式输入:五个字符、三个空格):%ld\n",number);

 gets(or1);
 for(i=26;i<28;i++) *(or1+i)='\0';
 fclose(fp1);
 if((fp1=fopen("d:\\dzs\\order3.txt","ab+"))==NULL)
  printf("error\n");
 fwrite(or1,1,28,fp1);
 fclose(fp1);
 printf("please input order detail data:\n");
 printf("please write down your orderID:%d\n",number);
 printf("input orderID(5 bits and 7 space)\n");
 printf("input pro_name(13 bits)\n");
 printf("input price(13bits)\n");
 printf("input amount(4bits):\n");
 or2=(char *)malloc(44);
 gets(or2);
 for(i=42;i<44;i++) *(or2+i)='\0';
 if((fp2=fopen("d:\\dzs\\ordet.txt","ab+"))==NULL)
  printf("error\n");
 fwrite(or2,1,44,fp2);
 fclose(fp2);printf("                                 Sucess!\n");
 print();
 getchar();
 clrscr();

 


}


void search()
{FILE *p1,*p2;
 int i,j,tag1=0,tag2=0,l1,l2;
 long k1,k2;
 int num[20];
 char *ex,*ps1,*ps2;
 struct order {char ord[5];
        char spa1[3];
        char cus[5];
        char spa2[3];
        char dat[12];};
 struct ordet {char ord[5];
        char spa[7];
        char pro[13];
        char pri[13];
        char amo[6];};
 struct order *or;
 struct ordet *ot;
 if((p1=fopen("d:\\dzs\\order3.txt","rb"))==NULL)
  printf("error\n");
 printf("请输入客户ID:\n");
 ex=(char *)malloc(6);gets(ex);clrscr();
 fseek(p1,0l,2);k1=ftell(p1);ps1=(char *)malloc(k1);
 fseek(p1,0l,0);fread(ps1,1,k1,p1);l1=k1/28;
 for(i=0;i<l1;i++)
 {*(ps1+26+i*28)='\0';*(ps1+27+i*28)='\0';*(ps1+5+i*28)='\0';
  *(ps1+7+i*28)='\0';*(ps1+13+i*28)='\0';*(ps1+15+i*28)='\0';}
 or=(struct order *)ps1;
 for(i=0,j=0;i<l1;i++)
  if(strcmp(ex,(or+i)->cus)==0) {tag1=tag1+1;num[j++]=i;} fclose(p1);
 if(tag1!=0)
 {if((p2=fopen("d:\\dzs\\ordet.txt","rb"))==NULL)
   printf("error\n");
  fseek(p2,0l,2);k2=ftell(p2);ps2=(char *)malloc(k2);
  fseek(p2,0l,0);fread(ps2,1,k2,p2);l2=k2/44;
  for(i=0;i<l2;i++)
  {*(ps2+42+i*44)='\0';*(ps2+43+i*44)='\0';*(ps2+5+i*44)='\0';
   *(ps2+11+i*44)='\0';*(ps2+24+i*44)='\0';*(ps2+32+i*44)='\0';*(ps2+37+i*44)='\0';}
  ot=(struct ordet *)ps2;
  printf("********************************************************************************\n");
  printf("                         您的订单和订单明细如下\n");
  printf("\n");
  printf("********************************************************************************\n");
  for(j=0;j<tag1;j++)
   for(i=0;i<l2;i++)
    if(strcmp((ot+i)->ord,(or+num[j])->ord)==0)
     {printf("%s      %s      %s      %s     %s    %s     %s\n",(or+num[j])->ord,(or+num[j])->cus,(or+num[j])->dat,(ot+i)->pro,(ot+i)->pri,(ot+i)->amo);
      tag2=tag2+1;}
  if(tag2==0) printf("您没有订单\n");
  fclose(p2);}
 else if(tag1==0) printf("客户ID不存在\n");
 getchar();
 clrscr();

 

}

void calculate()
{FILE *p1,*p2;
 int i,j,t,m,tag1=0,tag2=0,l1,l2;
 long k1,k2;
 int num[20];
 char *ex,*ps1,*ps2,*tt;
 float sum=0,a,b;
 struct order {char ord[5];
        char spa1[3];
        char cus[5];
        char spa2[3];
        char dat[12];};
 struct ordet {char ord[5];
        char spa[7];
        char pro[13];
        char pri[13];
        char amo[6];};
 struct order *or;
 struct ordet *ot;
 if((p1=fopen("d:\\dzs\\order3.txt","rb"))==NULL)
  printf("error\n");
 printf("请输入客户ID:\n");
 ex=(char *)malloc(6);gets(ex);clrscr();
 fseek(p1,0l,2);k1=ftell(p1);ps1=(char *)malloc(k1);
 fseek(p1,0l,0);fread(ps1,1,k1,p1);l1=k1/28;
 for(i=0;i<l1;i++)
 {/**(ps1+26+i*28)='\0';*/*(ps1+27+i*28)='\0';*(ps1+5+i*28)='\0';
  *(ps1+7+i*28)='\0';*(ps1+13+i*28)='\0';*(ps1+15+i*28)='\0';/**(ps1+24+i*28)='\0';*/}
 or=(struct order *)ps1;
 for(i=0,j=0;i<l1;i++)
  if(strcmp(ex,(or+i)->cus)==0) {tag1=tag1+1;num[j++]=i;} fclose(p1);
 if(tag1!=0)
 {if((p2=fopen("d:\\dzs\\ordet.txt","rb"))==NULL)
   printf("error\n");
  fseek(p2,0l,2);k2=ftell(p2);ps2=(char *)malloc(k2);
  fseek(p2,0l,0);fread(ps2,1,k2,p2);l2=k2/44;
  for(i=0;i<l2;i++)
  {*(ps2+42+i*44)='\0';*(ps2+43+i*44)='\0';*(ps2+5+i*44)='\0';
   *(ps2+11+i*44)='\0';*(ps2+24+i*44)='\0';*(ps2+32+i*44)='\0';*(ps2+37+i*44)='\0';}
  ot=(struct ordet *)ps2;
  printf("********************************************************************************\n");
  printf("                         您的订单和订单明细如下\n");
  printf("\n");
  printf("********************************************************************************\n");
  for(j=0;j<tag1;j++)
   for(i=0;i<l2;i++)
    if(strcmp((ot+i)->ord,(or+num[j])->ord)==0)
     {printf("%s    %s     %s     %s     %s    %s   %s\n",(or+num[j])->ord,(or+num[j])->cus,(or+num[j])->dat,(ot+i)->pro,(ot+i)->pri,(ot+i)->amo);   
      b=atof((ot+i)->amo);a=atof((ot+i)->pri);
      sum=sum+a*b;
      tag2=tag2+1;}
  if(tag2==0) printf("您没有订单\n");
   else {printf("\n");
         printf("\n");
         printf("\n");
  printf("总成本为 %f\n",sum);}
  fclose(p2);}
 else if(tag1==0) printf("客户ID不存在\n");
 getchar();
 clrscr();


}

 

 


void menu()
{char x;
do
 {printf("\n          订单菜单                   \n");
  printf("               ******************************************** \n");
  printf("               *                                          * \n");
  printf("               *1.添加订单                                * \n");
  printf("               *                                          * \n");
  printf("               *2.查找订单和订单明细                      * \n");
  printf("               *                                          * \n");
  printf("               *3.加总                                    * \n");
  printf("               *                                          * \n");
  printf("               *4.退出                                    * \n");
  printf("               *                                          * \n");
  printf("               *                                          * \n");
  printf("               ******************************************** \n");
  x=getchar();getchar();
  clrscr();
  if(x=='1') add();
  if(x=='2') search();
  if(x=='3') calculate();
  if(x==4)   myprint();
  if(x!='1'&&x!='2'&&x!='3'&&x!=4) printf("please choose from 1 to 4 \n");
 }while(x!='4');
}


main()
{ char  choose,yes_no;

do
{  myprint();
   printf("                ");
   choose=getch();
   switch(choose)
{case'a':product();   break;  
 case'b':menu();   break;
 case'c':client();   break;
 case'd':   break;
 default :printf("\n    %c为非法选项!! \n",choose);
 } 
   if(choose=='0')  break;
   printf("\n     要继续选择吗? (Y/N)?\n");
   do
   {  yes_no=getche();
   }  while (yes_no!='Y'&& yes_no!='y' && yes_no!='N' && yes_no!='n');
 } while(yes_no=='Y'||yes_no=='y');
};
void myprint()
{ printf("\n\n\n\n\n\n\n\n");
  printf("                 |-----------------------------------------|\n");
  printf("                 |           请输入选项编号(A-D):        |\n");
  printf("                 |-----------------------------------------|\n");
  printf("                 |               A----产品                 |\n");
  printf("                 |               B----订单                 |\n");
  printf("                 |               C----客户                 |\n");
  printf("                 |               D----退出                 |\n");
  printf("                 |-----------------------------------------|\n"); 
}
 
void product()
{char  choose,yes_no;

do
{  myprint1();
   printf("                ");
   choose=getch();
   switch(choose)
   {case'1':mydisplay();   break;
    case'2':mysearch();   break;
    case'3':mymodify();   break;
    case'4':myadd();   break;
    case'5':mydelete();   break;
    case'0':break;  
    default :printf("\n    %c为非法选项!! \n",choose);
   } 
   if(choose=='0')  break;
   printf("\n     要继续选择吗? (Y/N)?\n");
   do
   {  yes_no=getche(); }  
    while (yes_no!='Y'&& yes_no!='y' && yes_no!='N' && yes_no!='n');
 } while(yes_no=='Y'||yes_no=='y');
}
void myprint1()
{ printf("\n\n\n\n\n\n\n\n");
  printf("                 *******************************************\n");
  printf("                 *          请输入选项编号(0-5):        *\n");
  printf("                 *******************************************\n");
  printf("                 *              1----显示产品              *\n");
  printf("                 *              2----查询产品              *\n");
  printf("                 *              3----修改产品              *\n");
  printf("                 *              4----添加产品              *\n");
  printf("                 *              5----删除产品              *\n");
  printf("                 *              0----退出                  *\n");
  printf("                 *******************************************\n");
}


/*显示产品信息的函数*/
 void mydisplay()
{int j=0;
  int i=0;int size;
  FILE *fp;
  fp=fopen("d:\\dzs\\产品.txt","r");
  while(feof(fp)==0)
  {fscanf(fp,"%3s%10s%10s%11s%11s%10s%5s%6s%6s%5s",&pro[j].id,&pro[j].name,&pro[j].gysh,&pro[j].lb,&pro[j].dwsl,&pro[j].dj,&pro[j].kcp,&pro[j].dgl,&pro[j].zdgl,&pro[j].zz);
   j++;
  }
  size=j-1;
  for(i=0;i<size;i=i+15)
 {printf("\n产品ID  产品名称 供应商      类别    单位数量      单价  库存  订购 再订购 终止\n\n" ); 
  for(j=0;j<15 && i+j<size;j++)
       { 
   printf("%3s%10s%10s%11s%11s%10s%5s%6s%6s%5s\n",pro[i+j].id,pro[i+j].name,pro[i+j].gysh,pro[i+j].lb,pro[i+j].dwsl,pro[i+j].dj,pro[i+j].kcp,pro[i+j].dgl,pro[i+j].zdgl,pro[i+j].zz);}
   printf("\n\n按任意键继续...\n");  
   getche();  
   }fclose(fp);
}
  void mysearch()
{int flag=0,n=0;
char proid[10]; FILE *fp; 
 struct  product pro;
 fp=fopen("d:\\dzs\\产品.txt","rd");
 if(fp==NULL) {printf("\n                打开文件失败!\n"); return;}
 printf("\n                  请输入要查询产品的Id: ");
 scanf("%s",proid);
 while(feof(fp)==0)
  {fscanf(fp,"%3s%10s%10s%11s%11s%10s%5s%6s%6s%5s",&pro.id,&pro.name,&pro.gysh,&pro.lb,
&pro.dwsl,&pro.dj,&pro.kcp,&pro.dgl,&pro.zdgl,&pro.zz);
    if(strcmp(proid,pro.id)==0)
     {if(flag==0)
  {printf("\n产品ID  产品名称 供应商      类别    单位数量      单价  库存  订购 再订购 终止\n"); 
      printf("%3s%10s%10s%11s%11s%10s%5s%6s%6s%5s",pro.id,pro.name,pro.gysh,pro.lb,
pro.dwsl,pro.dj,pro.kcp,pro.dgl,pro.zdgl,pro.zz);
            flag=1;}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -