}
else w=1; }while(w!=1);
switch(n) 根据选择,进入各模块 { case 1:search_name(head);break; case 2:search_date(head);break; case 3:search_size(head);break; case 4:menu(); } }
5-2 按名称查找
输入想查找货物的名称,查找到与之匹配的信息后输出。 [流程图]
输入想查找货物的名称
没有找到 在链表中查找
输出查找到的信息并统计 输出‘NO FOUND’
返回查找菜单
[程序代码]
/*按名称查询*/
void search_name(struct product *head) { int total=0; void search_menu(); struct product *p,*p2; char name[20]; printf(\ scanf(\ p=head;p2=head; for(;p!=NULL;) { if(strcmp(p->p_name,name)==0) { printf(\ printf(\n_date.day,p->max_s,p->min_s,p->real_s);
}
total++; } p=p2->next; p2=p; }
printf(\
if(total==0)printf(\search_menu();
5-3 按入库日期查找
输入欲查找物资的名称,找到与之匹配的物资,输出并统计! [流程图]
输入想查找货物的日期
没有找到 在链表中查找
输出查找到的信息并统计 输出‘NO FOUND’
返回查找菜单
[程序代码]
/*按日期查询*/
void search_date(struct product *head) { void search_menu(); struct product *p,*p2; struct date d; int total=0;
printf(\ scanf(\ p=head;p2=head; for(;p!=NULL;) { if((p->in_date.year==d.year)&&(p->in_date.month==d.month)&&(p->in_date.day==d.day)) { printf(\
printf(\date.day,p->max_s,p->min_s,p->real_s); total++; } p=p2->next; p2=p; } printf(\ search_menu(); }
5-4 按物资规格查找 [需求分析]
输入欲查找物资的规格,找到与之匹配的物资,输出并统计! [流程图]
输入想查找货物的规格
没有找到 在链表中查找
输出查找到的信息并统计 输出‘NO FOUND’
返回查找菜单 [程序代码]
/*按规格查询*/
void search_size(struct product *head) { void search_menu(); struct product *p,*p2; char size[4]; int total=0; printf(\ scanf(\ p=p2=head; for(;p!=NULL;) { if(strcmp(p->size,size)==0) { printf(\ printf(\date.day,p->max_s,p->min_s,p->real_s);
}
total++; }
p=p2->next; p2=p; }
printf(\search_menu();
6、领货模块
[需求分析]
查找所领货物资的信息,若满足领料的要求,请在文件(lend_pro.txt)中登记所领取物资名称,领料的日期,所领数量。
6-0领货链表的建立 [流程图]
打开中转文件 从文件中读入信息 存入链表 Y N 是否到文件尾 关闭文件 [程序代码]
/*提货链表的建立*/ struct product* lend_list() { int i;
struct product *head,*p,*p1,*p2; FILE *fp; if((head=(struct product*)malloc(sizeof(struct product)))==NULL) printf(\ p=head; p1=head; if((fp=fopen(\ { printf(\ }
for(i=0;!feof(fp);i++) {
fscanf(fp,\->in_date.day,&p->max_s,&p->min_s,&p->real_s);
p->next=NULL; p1->next=p; p1=p; p2=(struct product*)malloc(sizeof(struct product)); p=p2; } return(head); }
6-1 领货模块 [流程图]
建立库存链表 将库存信息写入中转文件 进入领取菜单
/*/从PRODUCT写入中转文件LEND*/ void write_lend(struct product *head) {
struct product *p1,*p; FILE *fp; if((fp=fopen(\ { printf(\ } p=p1=head; for(;p!=NULL;) { fprintf(fp,\n_date.day,p->max_s,p->min_s,p->real_s);
p=p1->next; p1=p; }