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

📄 教材订购系统.c

📁 各个订购者把信息(姓名,号码 ,所要订购的书名,主编,数量等)输入到系统中,系统为订购者安排领书单.当订购者输入其各项信息后,系统打印出领书单给订购者, 订购者如有什么不满
💻 C
📖 第 1 页 / 共 3 页
字号:
 return(n);

}

void dispose_buy_list()/*处理订购单*/
{int n=0;
 USER*p,*head_user;
 BOOK*head_book,*head_store,*store,*q,*p3,*p4,*copy;
 head_store=load("store");
 head_user=load_user_record("all_user");
 if(head_user==NULL){printf("没有用户提交订购单!!!\n");}
 if(head_store==NULL){printf("\n库存是空的!!!请您先检查库存!!!\n");}
 if(head_store==NULL||head_user==NULL){printf("按任意键继续");getch();return;}
 if(head_user&&head_store)
 {p=head_user;
  while(p)
    {head_book=load(p->num);
     if(head_book)
       {n++;
		print_book_list(head_book);
        if(cmp_store(head_store,head_book)>0)/*与库存相比较,当库存有满足需求的书籍时*/
             {books_list_save(head_store,"store");/*存储修改后的库存*/
              return_list(head_book,p);/*返回领书单*/           
              delete_file(p->num);/*删除原来的订购单*/
             }
        else if(cmp_store(head_store,head_book)==0)
		     {p3=head_store;/*若该用户所有订购的书籍库存都不能满足*/
		      p4=head_book;
		      while(p3->next)p3=p3->next;
			  for(p4=head_book;p4;p4=p4->next)/*在库存表尾生成新的接点*/
			  {copy=(BOOK *)malloc(BOOK_LEN);
			   strcpy(copy->nam,p4->nam);
			   strcpy(copy->editor,p4->editor);
			   copy->next=NULL;
			   copy->amount=-p4->amount;
			   copy->tag1=0;
			   copy->tag2=0;
			   p3->next=copy;
			   p3=copy;
			  }
              head_store=together(head_store);/*合并同名书籍的数量*/
	          books_list_save(head_store,"store");
		     }  
       }

     p=p->next;
    }
   if(n==0){system("cls");printf("\n\n\n\n\n\n                               没有用户提交订购单!!!");getch();}
 }
 check_about_lack(head_store);
 return;
}


void delete_file(char filename[])/*删除文件*/
{char a[10]="c:\\";
 char b[5]=".txt";
 strcat(a,filename);
 strcat(a,b);
 remove(a);
 return;
}





int cmp_store(BOOK *head_store,BOOK *head_book)/*检查库存是否存在该书籍且足够数目*/
{BOOK *p1,*p2,*head_lack,*p3;
 int count=0;
 p1=head_book;
 p2=head_store;
 if(p2)
 while(p1)
   {p2=head_store;
    while(p2&&strcmp(p1->nam,p2->nam)!=0)p2=p2->next;
    if(p2)/*如果指针不空*/
      {p1->tag1=1;/*则标记为存在*/
       if(p1->amount<=p2->amount)
       {p1->tag2=1;/*如果数目存在,则标记足够*/
        p2->amount=p2->amount-p1->amount;/*将库存记录的数量改成取书后的数量*/
        count++;
       }

      }
	
    p1=p1->next;
   }
 return(count);

}

void check_about_lack(BOOK *head_store)/*登记入缺书表*/
{BOOK *p;
 FILE *fp;
 if((fp=fopen("c:\\lack.txt","a"))==NULL)
 {return ;}
 p=head_store;
 while(p)
   { if(p->amount<=0)
     {
      fwrite(p,BOOK_LEN,1,fp);
     }
     p=p->next;
   }
 fclose(fp);
 return;
}




void return_list(BOOK *head_book,USER *head_user)/*返回领书单*/
{BOOK*p;
 FILE*fp;
 char a[100]="c:\\f";
 char b[5]=".txt";
 strcat(a,head_user->num);
 strcat(a,b);
 if((fp=fopen(a,"a"))==NULL)
   {

    return;
   }
 p=head_book;
 while(p)
 {if(p->tag1==1&&p->tag2==1)fwrite(p,BOOK_LEN,1,fp);
  p=p->next;
 }
 fclose(fp);
 return;
}






void about_system()/*系统备注*/
{
 time_t timep;
 struct tm *p;
 time(&timep);
 p=localtime(&timep); /*取得当地时间*/
 system("cls");/*刷屏*/
 printf("         |*************************************************************|\n");
 printf("         |            今天是 %d年%d月%d日            ",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);week_day();
 printf("         |=============================================================|\n");
 printf("         |                      感谢您的使用!!!!                       |\n");
 printf("         |                                                             |\n");
 printf("         |                       (按任意键继续)                        |\n");
 printf("         |                                                             |\n");
 printf("         |   制作人:     湛广豪    学号3106007021                      |\n");
 printf("         |               张亮      学号3106007022                      |\n");
 printf("         |               张伟柱    学号3106007023                      |\n");
 printf("         |               甄兆聪    学号3106007024                      |\n");
 printf("         |                                                             |\n");
 printf("         |  或许系统还有许多不足和出错的地方,如果您有任何的建议和意见 |\n");
 printf("         |  都可以联系我们,我们乐意接受大家的意见,谢谢支持!!!        |\n");
 printf("         |                                                             |\n");
 printf("         |                                                             |\n");
 printf("         |                 E-mail:weizhuzhang@163.com                  |\n");
 printf("         |                                                             |\n");
 printf("         |                                                             |\n");
 printf("         |*************************************************************|\n");
 getch();

}


char quit()/*退出确定*/
{char n;
 system("cls");/*刷屏*/
 printf("         |*************************************************************|\n");
 printf("         |=============================================================|\n");
 printf("         |                                                             |\n");
 printf("         |                                                             |\n");
 printf("         |                       您确定要退出吗?                      |\n");
 printf("         |                                                             |\n");
 printf("         |                                                             |\n");
 printf("         |                                                             |\n");
 printf("         |                    按‘1’确定 ,按任意键取消               |\n");
 printf("         |                                                             |\n");
 printf("         |                                                             |\n");
 printf("         |=============================================================|\n");
 printf("         |*************************************************************|\n");
 n=getch();
 return n;
}




BOOK *obliterate(BOOK *head_book)/*删除*/
{BOOK *p1,*p2;
 char book_name[30],edit_name[30];
 system("cls");/*刷屏*/
  printf("                          输入您相要删除的书籍名称                      \n");
  printf("                                                                        \n");
  printf("                               输入‘0’返回                            \n");
 for(;;)
{if(head_book)
 {printf("书名:");
  scanf("%s",book_name);
  if(book_name[0]=='0')break;
  printf("主编:");
  scanf("%s",edit_name);
  p1=p2=head_book;
  if(!strcmp(head_book->nam,book_name)&&!strcmp(head_book->editor,edit_name)){head_book=head_book->next;printf("……删除成功\n\n");}/*删除对象为首结点的情况*/
  else/*删除对象为中间结点*/
    {for(p1=head_book,p2=head_book->next;p2&&strcmp(p2->nam,book_name)&&strcmp(p2->editor,edit_name);p1=p2,p2=p2->next);/*查找到需删除接点时终止循环*/
       if(p2)
	   { p1->next=p1->next->next;
         printf("……删除成功\n");
       }    
       else printf("您的订购单中没有该书籍!!!!\n\n");
                           
                          
    }
 }

 else {printf("\n您的订购单为空!!!!\n");getch();break;}
}

 return(head_book);

}





void save_user_record(USER*head_user)/*追加记录用户名单-----------------------------------------------------------------*/
{FILE *fp;
 USER *p,*q;
 char a[100]="c:\\all_user.txt";
 p=load_user_record("all_user");
 while(p)/*检测该用户记录是否已经存在*/
    {if(strcmp(p->num,head_user->num)==0)
     {printf("\n\n\n\n\n                          %s 欢迎您使用本系统!!!",head_user->name);/*若存在,则结束该追加记录函数*/
      getch();
      return;
     }
     else p=p->next;
    }
 if(!p)
 {if((fp=fopen(a,"a"))==NULL)
   {
    printf("Cannot open the file\n");
    return;
   }
 fwrite(head_user,USER_LEN,1,fp);
 printf("\n\n\n\n\n                           %s 欢迎您首次使用本系统!!!",head_user->name);
 getch();
 }
 fclose(fp);

 return;
}

void print_user_record()/*打印用户记录*/
{
 USER*p;
 p=load_user_record("all_user");
 while(p)
 {printf("NO.%s   NAME: %s\n",p->num,p->name);
  p=p->next;
 }
 getch();
 return;
}



USER *load_user_record(char filename[])
{USER *p1,*p2,*head=NULL;
 FILE *fp;
 char a[100]="c:\\";
 char b[5]=".txt";
 strcat(a,filename);
 strcat(a,b);
 if((fp=fopen(a,"r"))==NULL)
   {
    return(head);
   }
 p1=(USER *)malloc(USER_LEN);
 if(!p1)
   {
    printf("Out of memory!\n");
    return(head);
   }
 head=p1;
 while(!feof(fp))
   {
    if(fread(p1,USER_LEN,1,fp)!=1) break;
    p1->next=(USER *)malloc(USER_LEN);
    if(!p1->next)
      {
       printf("Out of memory!\n");
       return (head);
      }
    p2=p1;
    p1=p1->next;
   }
 p2->next=NULL;
 fclose(fp);
 return (head);

}






void create_file(char filename[])/*创建空文件(为了以后的追加做准备)*/
{char a[100]="c:\\";
 char b[5]=".txt";
 strcat(a,filename);
 strcat(a,b);
 if(fopen(filename,"at")==NULL)
   {
    printf("Cannot open the file\n");

   }
}









BOOK *together(BOOK *head_book)/*归并相同的名称书籍*/
{BOOK *p1,*p2,*p3;
 if(head_book)
  {if(head_book->next)
   for(p1=head_book;p1;p1=p1->next)
	   for(p2=p1,p3=p2->next;p3;p2=p3,p3=p3->next)
	   {if(!strcmp(p1->nam,p3->nam)&&!strcmp(p1->editor,p3->editor))
	                   {p1->amount+=p3->amount;
	                    p2->next=p2->next->next;
						p3=p2;
	                   }
	 }
  }



 return(head_book);

}

⌨️ 快捷键说明

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