p2=p; }
fclose(fp); lend_menu(); }
6-6 领货时以编号为查找方式 [分析]
按照编号查找所需物资,并写入中转文件,以利于下一次查找! [流程图]
以只写方式打开中转文件 输入欲领取货物的编号 在领货链表中查找 写入中转文件 关闭文件 进入领货菜单 [程序代码]
/*领货时按编号查询*/ void lend_number() {
void lend_menu(); long int num;
struct product *head,*p,*p2; FILE *fp;
head=lend_list();/*领货链表*/ p=head;p2=head;
print_list(head);/*打印*/
printf(\ scanf(\
if((fp=fopen(\ { printf(\ }
else printf(\ for(;p!=NULL;) {
if(num==p->p_num) { printf(\ate.day,p->max_s,p->min_s,p->real_s);
fprintf(fp,\n_date.day,p->max_s,p->min_s,p->real_s);
} p=p2->next; p2=p; }
fclose(fp); lend_menu(); }
6-7 领货时以实际库存为查找方式 [分析]
按照实际库存查找所需物资,并写入中转文件,以利于下一次查找! [流程图]
以只写方式打开中转文件 输入欲领取货物的实际库存 在领货链表中查找 写入中转文件 关闭文件 进入领货菜单
[程序代码]
/*领货时按实际存量查询*/ void lend_real_size() {
void lend_menu(); long int size;
struct product *head,*p,*p2; FILE *fp;
head=lend_list();/*领货链表*/ p=head;p2=head;
printf(\ scanf(\
if((fp=fopen(\ { printf(\ }
else printf(\ for(;p!=NULL;) { if(p->real_s==size) { printf(\ate.day,p->max_s,p->min_s,p->real_s);
fprintf(fp,\n_date.day,p->max_s,p->min_s,p->real_s);
} p=p2->next; p2=p; }
fclose(fp); lend_menu(); }
6-8 更改库存、领货文件
按照查询结果,输入所领货物的数量,程序自动修改库存、领货文件! [流程图]
调用建立库存、领货链表
查找所查询物资
输入数量并修改
修改领料、库存文件 [程序代码] /*库存更改*/ void ok()
{
struct product *head_l,*p1,*p2; struct product *head,*p,*p3,*p4; //int s;
FILE *fp; long int num;
if((fp=fopen(\ { printf(\ }
head_l=lend_list();/*领货链表*/ head=build_list(); p1=p2=head_l; p3=p4=head; for(;p1!=NULL;) { for(;p3!=NULL;) { if(strcmp(p1->p_name,p3->p_name)==0&&p1->p_num==p3->p_num&&p1->in_date.year==p3->in_date.year&&p1->in_date.month==p3->in_date.month&&p1->in_date.day==p3->in_date.day)
{ p=p3; printf(\ate.day,p->max_s,p->min_s,p->real_s);
printf(\ scanf(\ p3->real_s=p3->real_s-num; printf(\ate.day,p->max_s,p->min_s,p->real_s);
fprintf(fp,\ break; } p3=p4->next; p4=p3; } p1=p2->next; p2=p1; }
fclose(fp);
if((fp=fopen(\ printf(\ p=p1=head; for(;p!=NULL;)
{ printf(\e.day,p->max_s,p->min_s,p->real_s);
fprintf(fp,\ate.day,p->max_s,p->min_s,p->real_s);
p=p1->next; p1=p; }
fclose(fp); }
七、打印模块
打印物资库存清单和领料单! 7-1 打印菜单
提供选择,分别进入打印物资库存清单和领料单! [流程图]
输入选择 N 判断输入是否满足要求 Y 进入相应模块 [程序代码] /*打印菜单*/ void print_menu() {
int n,w=0;
printf(\
printf(\ printf(\ printf(\ scanf(\ do {
if(n>3||n<1) { printf(\ scanf(\ }
else w=1;