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

📄 教材订购系统.c

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

 
 
 





char user_menu()/*教师学生菜单*/
{char n;
 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("         |                        (按 '0' 退出,)                      |\n");
 printf("         |===========================MENU==============================|\n");
 printf("         |  输入您的选择(1-3):                                         |\n");
 printf("         |            0.退出                                           |\n");
 printf("         |            1.订购书籍                                       |\n");
 printf("         |            2.查看自己的订购单                               |\n");
 printf("         |            3.删除订购单中的某些书籍                         |\n");
 printf("         |            4.查看领书单                                     |\n");
 printf("         |                                                             |\n");
 printf("         |                                                             |\n");
 printf("         |                                                             |\n");
 printf("         |*************************************************************|\n");
 printf("\n\t\t\t您的选择是:");
 scanf("%s",&n);
 return(n);

}






void tcher_stu_do()/*教师和学生模块*/
{USER *head_user;
 BOOK *head_book;

 head_user=user_input();/*输入教师或学生的信息*/
 if(head_user==NULL)return;
 save_user_record(head_user);/*追加存储信息到磁盘*/
 for(;;)
 {
  switch(user_menu())/*教师学生菜单*/           /***********************************************************************************************************************/
  {case '0':switch(quit()){
                           case'1':about_system();exit(0);break;
                           case'0':break;
                          }
            break;
   case '1':head_book=load(head_user->num);/*首先检测之前是否有订购单*/
            head_book=input_book_list(head_book);/*输入订购单*/
			head_book=together(head_book);/*归并相同的名称书籍的数量*/
            print_book_list(head_book);
			if(head_book)books_list_save(head_book,head_user->num);/*以用户的号码为文件名存储订购单*/
            break;
   case '2':head_book=load(head_user->num);/*装载已存储的订购单*/
            if(head_book)print_book_list(head_book);/*查询自己的订购单*/
            else {system("cls");printf("\n\n\n\n并没有属于您的订购单。又或是你的订购单已经经过处理,请到查询领书单");getch();}
            break;
   case '3':head_book=load(head_user->num);/*装载已存储的订购单*/
            if(head_book){print_book_list(head_book);/*查询自己的订购单*/
                          head_book=obliterate(head_book);
                          print_book_list(head_book);/*修改自己的订购单*/
                          if(head_book)books_list_save(head_book,head_user->num);
						  else delete_file(head_user->num);
                         }
            else {system("cls");printf("\n\n\n\n没有属于您的订购单 .\n请先输入订购单.\n按任意键继续............");getch();}
            break;
   case '4':
	        print_fetch(head_user);
            break;/*查看个人的领书单-----------------------------------*/
  }

 }
}

void books_list_save(BOOK *head_book,char filename[])/*以filename为文件名存储书籍信息*/
{
 FILE *fp;
 BOOK *p;
 char a[100]="c:\\";
 char b[5]=".txt";
 strcat(a,filename);
 strcat(a,b);
 if((fp=fopen(a,"w"))==NULL)
   {
    printf("Cannot open the file\n");
    return;
   }
 p=head_book;
 while(p!=NULL)
   {
    fwrite(p,BOOK_LEN,1,fp);
    p=p->next;
   }
 fclose(fp);
 printf("Save the file successfully!\n");
}




BOOK *load(char filename[])/*打开文件*/
{BOOK *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(NULL);
   }
  p1=(BOOK *)malloc(BOOK_LEN);
  if(!p1)
   {
    printf("Out of memory!\n");
    return(head);
   }
  head=p1;
  while(!feof(fp))
   {
    if(fread(p1,BOOK_LEN,1,fp)!=1) break;
    p1->next=(BOOK *)malloc(BOOK_LEN);
    if(!p1->next)
      {
       printf("Out of memory!\n");
       return (head);
      }
  p2=p1;
  p1=p1->next;
   }
  p2->next=NULL;
  fclose(fp);
  return (head);

}
void print_book_list(BOOK *head_book)/*显示订购单(总共10行)*/
{int n,i,j,t;
 char m;
 BOOK *q,*point[10];
 USER *p;
 for(i=0;i<=9;i++)point[i]=NULL;/*指针数组初置为空*/
 for(q=head_book,j=1;q;q=q->next,j++)/*设置一个指针数组用来标记每一页的初指针*/
  {
   if(j%10==1)point[j/10+1]=q;
  }
 i=1;/*页数*/
 while(q=point[i])
 { n=1;
   system("cls");/*刷屏*/
   printf("*************************************<List>*************************************");
   printf("|   '1' -上一页                  '2' -下一页                    '0' -确认      |");
   printf("================================================================================");

   printf("================================================================================");
   printf("| 编号 |              书名            |              主编            | 数量 |\n");
   printf("--------------------------------------------------------------------------------");
  while(q&&n<=10)/*每页显示17行*/
   {printf("|  %-3d |%-30s|%-30s|%-6d|\n",n,q->nam,q->editor,q->amount);
    n++;
    q=q->next;
   }
  q=NULL;
 printf("================================================================================");
 printf("第%d页",i);
 m=getch();
 if(m=='0')break;
 else if(m=='1')
        {if(point[i-1]){i-=1;}
         else {printf("\n\n这是第一页,没有上一页了!!!按任意键继续 ");getch();}
        }
 else if(m=='2')
       {if(point[i+1]){i+=1;}
        else {printf("\n\n这是最后一页,没有下一页了!!!按任意键继续");getch();}
       }

 }
 return;
}

void print_fetch(USER *head_user)/*显示用户表单*/
{char a[10]="f";
 BOOK*head_book;
 strcat(a,head_user->num);
 head_book=load(a);
 if(head_book==NULL)
 {system("cls");
	printf("\n\n\n\n\n可能您的订购单还未经过发行人员的审核,请多等待几天\n");
    printf("又或许之前您并没有提交订购单,请确定您已经填写订购单 \n\n按任意键继续");getch();
   }
   else{system("cls");
	        printf("                                       提示       \n\n");
	        printf("               如果您发现订购的某些书籍不在您的领书单里面,即表明该书库存却货。\n");
			printf("            请稍等几日后再提交该书的订购申请。\n");
            printf("               在您查询过领书单之后,系统将会删除领书单!!!!\n\n\n\n\n\n");
			printf("\n\n\n                        按任意键后将显示领书单");
			getch();
	    print_book_list(head_book);
		delete_file(a);
   }
}



void buyer()/*采购员模块*/                      /************************************************************************************************************************/
{USER *head_buyer;
 BOOK *absent_books;
 BOOK*new_adding=NULL;
 head_buyer=user_input();/*输入采购员的信息*/
 if(head_buyer==NULL)return;
 for(;;)
 {
  switch(buyer_menu())/*菜单*/
  {case '0':switch(quit()){case'1':about_system();exit(0);break;
                           case'0':break;
                          }
            break;
   case '1':/*输入进书单*/
            new_adding=input_book_list(new_adding);
			new_adding=together(new_adding);/*归并相同名称书籍的数量*/
            books_list_save(new_adding,"new_add");
            print_book_list(new_adding);
            add_to_store(new_adding);
			break;
   case '2':absent_books=load("lack");
	       if(absent_books)
		   {absent_books=together(absent_books);
			books_list_save(absent_books,"lack");
			system("cls");
			printf("\n\n\n                                  提示\n\n");
			      printf("                   在您查询过缺书单之后,系统将会删除缺书单\n\n\n\n");
			printf("\n\n\n                          按任意键后将显示缺书单");
			getch();
	        print_book_list(absent_books);
			delete_file("lack");
           }else {system("cls");printf("\n\n\n\n\n\                             暂无缺书记录!!!");getch();}
			break;/*查看书库缺书单*/
  }

 }





}
char buyer_menu()/*采购员菜单*/
{char n;
 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("         |                        (按 '0' 退出,)                      |\n");
 printf("         |===========================MENU==============================|\n");
 printf("         |  输入您的选择(0-2):                                         |\n");
 printf("         |            0.退出                                           |\n");
 printf("         |            1.填写进书单                                     |\n");
 printf("         |            2.查看缺书单                                     |\n");
 printf("         |                                                             |\n");
 printf("         |                                                             |\n");
 printf("         |                                                             |\n");
 printf("         |*************************************************************|\n");
 printf("\n\t\t\t您的选择是:");
 scanf("%s",&n);
 return(n);

}


void add_to_store(BOOK*new_adding)/*加到库存*/
{
	BOOK *p,*head_store;
	p=head_store=load("store");/*先载入库存的链表*/
	while(p->next)p=p->next;
	p->next=new_adding;/*将新的链表接如库存链表表尾*/
	head_store=together(head_store);/*归并相同的名称书籍*/
	books_list_save(head_store,"store");
}




void issuer()/*发行人员模块*/
{USER *head_issuer,*head_user;
 BOOK *head_book,*head_new,*head_store=NULL;
 head_issuer=user_input();/*输入采购员的信息*/
 if(head_issuer==NULL)return;
 for(;;)
 {                                                     /*******************************************************************************************************************/
  switch(issuer_menu())/*菜单*/
  {case '0':switch(quit()){case'1':about_system();exit(0);break;
                           case'0':break;
                          }
   case '1':dispose_buy_list();/*返回领书单给用户*/
            break;
   case '2':head_new=load("new_add");/*查看进书通知*/
	        if(head_new)print_book_list(head_new);
			else {system("cls");printf("\n\n\n\n                  尚无进书通知");getch();}
            break;/*显示书单(总共10行)*/
   case '3':if(load("store")==NULL)
            {head_store=input_book_list(head_store);
	         head_store=together(head_store);
             books_list_save(head_store,"store");
             print_book_list(head_store);
            }
            else{system("cls");printf("库存表已经存在,收到进书通知之后系统将自动更新库存");getch();}
            break;
   case '4':head_store=load("store");/*查看库存*/
            print_book_list(head_store);
            break;
  }
 }
}

char issuer_menu()/*发行人员菜单*/
{char n;
 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("         |                        (按 '0' 退出,)                      |\n");
 printf("         |===========================MENU==============================|\n");
 printf("         |  请输入您的选择(1-4):                                       |\n");
 printf("         |            0.退出                                           |\n");
 printf("         |            1.处理订购单                                     |\n");
 printf("         |            2.查看进书通知                                   |\n");
 printf("         |            3.输入系统初始的库存书籍                         |\n");
 printf("         |            4.查看库存                                       |\n");
 printf("         |                                                             |\n");
 printf("         |*************************************************************|\n");
 printf("\n\t\t\t您的选择是:");
 scanf("%s",&n);

⌨️ 快捷键说明

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