| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 465 人关注过本帖
标题:C语言 入库编程
取消只看楼主 加入收藏
迎风叹海
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-3-20
收藏
 问题点数:0 回复次数:1 
C语言 入库编程

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include<conio.h>
#include <io.h>

#define M  10
#define N  10
 
typedef struct shangpin{
    int ph;
    char pm[16];
    int kc;

}SP;

typedef struct cangku{
    int kh;
    char km[16];

}CK;

typedef struct chuku{
    int ph;
    int kh;
    int sl;

}LL;


char sp_dat[13]="sp.dat";
char ck_dat[13]="ck.dat";
char ll_dat[13]="ll.dat";
int spm,ckm,llm;
char fn[80]="";




////////////////////
int  read_sp(SP *sp_list)/*从文件读取信息模块*/
{
int m=0;
char tmp[81];
 FILE *fp;/*定义文件指针*/
 if((fp=fopen(sp_dat,"r"))==NULL)/*打开文件,并判断是否出错*/
 {
  return 0;
 }
 fgets(tmp,80,fp);/*从文件中读取信息*/
 while(1)
 {
     memset(tmp,0,81);
  fgets(tmp,80,fp);/*从文件中读取信息*/
  if(feof(fp)&&(strlen(tmp)<2))
  break;
  
    sscanf(tmp,"%d%s%d",&sp_list[m].ph,sp_list[m].pm,&sp_list[m].kc);
    m++;
 }
 fclose(fp);
 return m;
}
///////////////////////////

int  read_ck(CK *ck_list)/*从文件读取信息模块*/
{
int m=0;
 FILE *fp;/*定义文件指针*/
 char tmp[81];
 if((fp=fopen(ck_dat,"r"))==NULL)/*打开文件,并判断是否出错*/
 {
  return 0;
 }
 fgets(tmp,80,fp);/*从文件中读取信息*/
while(1)
 {
  memset(tmp,0,81);
  fgets(tmp,80,fp);/*从文件中读取信息*/
  if(feof(fp)&&(strlen(tmp)<2))
  break;
    sscanf(tmp,"%d%s",&ck_list[m].kh,ck_list[m].km);
    m++;
 }
 fclose(fp);
 return m;
}
///////////////////////////
int  read_ll(LL *ll_list)/*从文件读取信息模块*/
{
int m=0;
 FILE *fp;/*定义文件指针*/
 char tmp[81];
 if((fp=fopen(ll_dat,"r"))==NULL)/*打开文件,并判断是否出错*/
 {
  return 0;
 }
 fgets(tmp,80,fp);/*从文件中读取信息*/
while(1)
 {
  memset(tmp,0,81);
  fgets(tmp,80,fp);/*从文件中读取信息*/
  if(feof(fp)&&(strlen(tmp)<2))
  break;
    sscanf(tmp,"%d%d%d",&ll_list[m].ph,&ll_list[m].kh,&ll_list[m].sl);
    m++;
 }
 fclose(fp);
 return m;
}
///////////////////////////---------

void save_sp(SP *sp_list,int m)
{
int i;
 FILE *fp;
 char tmp[81];
 if(m==0)
     return;
 if((fp=fopen(sp_dat,"w"))==NULL)
 {
  printf("\n无法保存文件! 请检查磁盘!");
  printf("\n按任意健继续...");
  getch();
  return;
 }
fputs("品号    品名    库存\n",fp);
 for(i=0;i<m;i++){
sprintf(tmp,"%d  %s  %d\n",sp_list[i].ph,sp_list[i].pm,sp_list[i].kc);
 
fputs(tmp,fp);
     }
  fclose(fp);
 
}


///////////////////////////
void save_ll(LL *ll_list,int m)/*保存模块程序*/
{
int i;
 FILE *fp;
 char tmp[81];
 if(m==0)
     return;
 if((fp=fopen(ll_dat,"w"))==NULL)
 {
  printf("\n无法保存文件! 请检查磁盘!");
  printf("\n按任意健继续...");
  getch();
  return;
 }
fputs("品号    库号    数量\n",fp);
 for(i=0;i<m;i++){
     sprintf(tmp,"%d   %d  %d\n",ll_list[i].ph,ll_list[i].kh,ll_list[i].sl);

     fputs(tmp,fp);
     }
  fclose(fp);
 

}
///////////////////////////
void menu(){

printf(
"\n\n\n"
"           --------   欢迎使用仓库入库管理系统       --------\n\n");
printf(
"           --------       1.显示商品信息             --------\n"
"           --------       2.显示仓库信息             --------\n"
"           --------       3.显示库存信息             --------\n"
"           --------       4.增加库存信息             --------\n"
"           --------       5.退出系统                 --------\n\n");
}

///////////////////////////////////

char *getkm(int index,CK *ck_list){
     int i;
     for(i=0;i<ckm;i++){
         if(ck_list[i].kh==index)
             return ck_list[i].km;
     }
     return "没有仓库信息!";
}
///////////////////////////////////
char *getpm(int index,SP *sp_list){
     int i;
     for(i=0;i<spm;i++){
         if(sp_list[i].ph==index){
        
        
             return sp_list[i].pm;
         }
     }

     return "没有商品信息!";
}

int addck(LL ll_list,SP *sp_list,CK *ck_list){
char spflag,ckflag,i,tmp;
spflag=0;
ckflag=0;
for(i=0;i<spm;i++){
    if(ll_list.ph==sp_list[i].ph){
        spflag=1;
        tmp=i;
        break;
    }
}
for(i=0;i<ckm;i++){
    if(ll_list.kh==ck_list[i].kh){
        ckflag=1;
        break;
    }
}
if(spflag&&ckflag){
    if(sp_list[tmp].kc>=ll_list.sl){
       sp_list[tmp].kc-=ll_list.sl;
       return 0;
       }
    else{
        printf("\n输入错误!");
        return 1;
    }
}
if(spflag)
printf("\n没有这个商品!");
else
printf("\n没有这个仓库!");
return 1;
}
///////////////////////////////////
int main(int argc,char *argv[]){

    SP sp[M]={0};
    CK ck[N]={0};
    LL ll[N]={0};

    FILE *fp=NULL;

    int error=0;
    int choice,tmpint,flag;
    int i,bksp,bkck,bkll;

    char tmp[80];
    char llkm[32];
    char llpm[32];
    strcpy(fn,argv[0]);
//    printf("\nArgv[0]=%s",fn);
//    getch();
    spm=0;
    ckm=0;
    llm=0;
    spm=read_sp(sp);
    ckm=read_ck(ck);
    llm=read_ll(ll);

    bksp=spm;
    bkck=ckm;
    bkll=llm;
   

    do{
    choice=0;
    while(1){
        system("cls");
        menu();
        printf("\n            请选择  1-5 : ");
        fflush(stdin);
        choice=getche();
       if(choice<'1'||choice>'5'){
        printf("          请选择  1-5 !");
        Sleep(1000);
       }
       else
           break;
    }



flag=0;   
  switch(choice){

  case '1':
      if(spm==0){
printf("\n\n没有商品信息记录! ");
      break;
      }

printf("\n\n 品号      品名           库存    \n");   
for(i=0;i<spm;i++){
printf("\n %-8d %-16s %-8d",sp[i].ph,sp[i].pm,sp[i].kc);
}
      break;
  case '2':
      
      if(ckm==0){
printf("\n\n 没有仓库信息记录! ");
break;
      }
printf("\n\n 库号   库名 \n");
      for(i=0;i<ckm;i++){

printf("\n %-6d %-16s",ck[i].kh,ck[i].km);
         
      }

      break;
  case '3':
      
      if(llm==0){
printf("\n\n 没有入库信息记录! ");
break;
      }
      
printf("\n\n 库号     库名             品号      品名          数量 \n");
      for(i=0;i<llm;i++){
strcpy(llkm,getkm(ll[i].kh,ck));
strcpy(llpm,getpm(ll[i].ph,sp));
printf("\n %-8d %-16s %-8d %-16s %-8d",ll[i].kh,llkm,ll[i].ph,llpm,ll[i].sl);
         
      }

      break;


  case '4':
      while(1){
printf("\n\n输入要出库的品号(0退出):");
fgets(tmp,80,stdin);
tmp[strlen(tmp)-1]='\0';
if(tmp[0]=='0')
break;
if(spm==0){
 printf("\n\n 没有商品信息记录!无法出库! ");
break;
      }
if(ckm==0){
 printf("\n\n 没有仓库信息记录!无法出库! ");
break;
      }
tmpint=atoi(tmp);
ll[llm].ph=tmpint;
printf("\n\n输入出库的库号:");
fgets(tmp,80,stdin);
tmp[strlen(tmp)-1]='\0';
tmpint=atoi(tmp);
ll[llm].kh=tmpint;
printf("\n\n输入出库的数量:");
fgets(tmp,80,stdin);
tmp[strlen(tmp)-1]='\0';
tmpint=atoi(tmp);
ll[llm].sl=tmpint;
if(addck(ll[llm],sp,ck)){

printf("请重新输入出库单!");
Sleep(500);
break;
}
llm++;
      }
      break;


///////////////////

  case '5':
      if((spm!=bksp)||(llm!=bkll)){
               
          printf("\n\n商品信息己修改,是否要保存(sp.dat)或另存为? y/n/s:  ");
      fgets(tmp,80,stdin);
   
      switch(tmp[0]){
      case 'y':
      case 'Y':
          save_sp(sp,spm);
          break;
      case 's':
      case 'S':
          save_sp(sp,spm);
          printf("\n请输入另存为的文件名:");
           fgets(tmp,80,stdin);
            tmp[strlen(tmp)-1]='\0';
           rename(sp_dat,tmp);
          break;
      default:
         
          break;

      }
      }

      if(llm!=bkll){
               
          printf("\n\n入库信息己修改,是否要保存(ll.dat)或另存为? y/n/s:  ");
      fgets(tmp,80,stdin);
   
      switch(tmp[0]){
      case 'y':
      case 'Y':
          save_ll(ll,llm);
          break;
      case 's':
      case 'S':
          save_ll(ll,llm);
          printf("\n请输入另存为的文件名:");
           fgets(tmp,80,stdin);
            tmp[strlen(tmp)-1]='\0';
           rename(ll_dat,tmp);
          break;
      default:
         
          break;

      }
      }
      /////////////////////////
   
   


    printf("\n\n          感谢使用仓库入库管理系统");  
    printf("\n          按任意健退出...\n");
    getch();



     exit(0);

  default:
     printf("          请选择  1-5 !");
     Sleep(1000);
     break;
     }





printf("\n\n     按任意健继续...");
getch();
    }while(1);

}

  谁能帮我改改,每次运行都出错!!!
搜索更多相关主题的帖子: C语言 入库 
2010-06-19 20:47
迎风叹海
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-3-20
收藏
得分:0 
要求在 :http://hi.baidu.com/%C3%F7%ED%F8i/album/item/eaa0906a93c034e781cb4adf.html
2010-06-19 20:50
快速回复:C语言 入库编程
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019000 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved