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

📄 教材订购系统.c

📁 各个订购者把信息(姓名,号码 ,所要订购的书名,主编,数量等)输入到系统中,系统为订购者安排领书单.当订购者输入其各项信息后,系统打印出领书单给订购者, 订购者如有什么不满
💻 C
📖 第 1 页 / 共 3 页
字号:
#include <stdio.h>
#include<dos.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<malloc.h>
#include<time.h>
#include "conio.h"
#define USER_LEN sizeof(USER)
#define BOOK_LEN sizeof(BOOK)
typedef struct user/*用户*/
{char num[12];/*号码*/
 char name[30];/*姓名*/
 struct user *next;
}USER;
typedef struct book/*书籍*/
{char nam[30];/*名字*/
 char editor[30];/*作者*/
 int amount;/*数量*/
 int tag1;/*库存标记*/
 int tag2;/*数量是否足够标记*/
 struct book *next;
}BOOK;


char first_menu();/*顶层菜单*/
USER *user_input();/*用户信息输入(完成)*/
BOOK *input_book_list();/*输入图书信息*/
void books_list_save(BOOK *head_book,char filename[]);/*以用户名为文件名存储书籍信息*/
void print_fetch(USER *head_user);/*显示领书单*/
char user_menu();/*教师学生菜单*/
char buyer_menu();/*采购员菜单*/
char issuer_menu();/*发行人员菜单*/
void dispose_buy_list();/*处理订购单*/
BOOK *load(char filename[]);/*打开存储书籍的文件*/
USER *load_user_record(char filename[]);/*打开存储用户信息的文件*/
void print_book_list(BOOK *head_book);/*显示书单(总共20行)*/
BOOK *obliterate(BOOK *head_book);/*删除*/
void save_user_record(USER*head);
void create_file(char filename[]);/*创建空文件(为了以后的追加做准备)*/
void add_to_store(BOOK*new_adding);/*加到库存*/
void print_user_record(USER*head_user);/*打印用户记录*/
int cmp_store(BOOK *head_store,BOOK *head_book);/*检查库存是否存在该书籍*/
void return_list();/*返回领书单*/
void delete_file(char filename[]);/*删除文件*/
void check_about_lack(BOOK *head_book);/*登记入缺书表*/
void week_day();/*显示星期*/
BOOK *together(BOOK *head_book);/*归并相同的名称书籍的数量*/
int check_amount(char input[]);/*检查输入的数字是否合法*/
int amount_do(char input[5]);



/*主要模块*/
void about_system();/*系统备注*/
char quit();/*退出确定*/
void tcher_stu_do();/*教师和学生模块*/
void buyer();/*采购员模块*/
void issuer();/*发行人员模块*/





void main()
{system("color 2f");
 if(fopen("c:\\all_user.txt","r")==NULL)create_file("all_user");
 printf("\n\n\n\n\n                            欢迎进入学校教材订购系统!!!\n\n");
 printf("                                  按任意键继续                         ");
 getch();

 for(;;)
 switch(first_menu())
     {case '0':switch(quit()){case'1':about_system();exit(0);break;
                              case'0':break;
                             }
               break;
      case '1':tcher_stu_do();break;
      case '2':buyer();break;
      case '3':issuer();break;
     }


}

void week_day()
{char *wday[7]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
    time_t timep;
    struct tm *p;
	int m;
    time(&timep);
    p=localtime(&timep); /*取得当地时间*/
	if(!strcmp(wday[p->tm_wday],"Sun"))m=7;
	if(!strcmp(wday[p->tm_wday],"Mon"))m=1;
	if(!strcmp(wday[p->tm_wday],"Tue"))m=2;
	if(!strcmp(wday[p->tm_wday],"Wed"))m=3;
	if(!strcmp(wday[p->tm_wday],"Thu"))m=4;
	if(!strcmp(wday[p->tm_wday],"Fri"))m=5;
	if(!strcmp(wday[p->tm_wday],"Sat"))m=6;
	switch(m)
	{case 1:printf("星期一            |\n");break;
	 case 2:printf("星期二            |\n");break;
	 case 3:printf("星期三            |\n");break;
	 case 4:printf("星期四            |\n");break;
	 case 5:printf("星期五            |\n");break;
	 case 6:printf("星期六            |\n");break;
	 case 7:printf("星期日            |\n");break;
   	}
}



char first_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("         |   请根据选择输入您的身份                                    |\n");
 printf("         |                1.教师或学生                                 |\n");
 printf("         |                2.采购人员                                   |\n");
 printf("         |                3.发行人员                                   |\n");
 printf("         |                                                             |\n");
 printf("         |                                                             |\n");
 printf("         |                                                             |\n");
 printf("         |                                                             |\n");
 printf("         |                                                             |\n");
 printf("         |                                                             |\n");
 printf("         |*************************************************************|\n");
 printf("\n\t\t\t您的选择是(1-3):");
 scanf("%s",&n);
 return(n);
}




USER *user_input()/*用户信息输入(完成)*/
{
 USER *p,*head=NULL;
 time_t timep;
 struct tm *a;
 p=(USER *)malloc(USER_LEN);
 if(!p)
      {printf("\nOut of memory.");
       return (head);
      }
 
 time(&timep);
 a=localtime(&timep); /*取得当地时间*/

 system("cls");/*刷屏*/
 printf("         |*************************************************************|\n");
 printf("         |            今天是 %d年%d月%d日            ",(1900+a->tm_year),(1+a->tm_mon),a->tm_mday);week_day();
 printf("         |=============================================================|\n");
 printf("         |                      欢迎使用我们的系统                     |\n");
 printf("         |                                                             |\n");
 printf("         |                        (按 '0' 退出,)                      |\n");
 printf("         |===========================MENU==============================|\n");
 printf("\n\n\n");
 printf("                               姓名(28个字符以内):");
 scanf("%s",&p->name);
 if(p->name[0]=='0') return(NULL);
 while(strlen(p->name)>28)
 {system("cls");
  printf("您输入的姓名过长,请重新输入,不要超过28个字符");
  getch();
  system("cls");/*刷屏*/
 printf("         |*************************************************************|\n");
 printf("         |            今天是 %d年%d月%d日            ",(1900+a->tm_year),(1+a->tm_mon),a->tm_mday);week_day();
 printf("         |=============================================================|\n");
 printf("         |                      欢迎使用我们的系统                     |\n");
 printf("         |                                                             |\n");
 printf("         |                        (按 '0' 退出,)                      |\n");
 printf("         |===========================MENU==============================|\n");
 printf("\n\n\n");
  printf("                             姓名(28个字符以内):");
  scanf("%s",&p->name);
  if(p->name[0]=='0') return(NULL);

 }
 printf("\n");
 printf("                               号码(7位以内):");
 scanf("%s",&p->num);
 if(p->num[0]=='0') return(NULL);
 while(strlen(p->num)>7)
 {system("cls");
  printf("您的号码过长请重新输入");
  getch();
  system("cls");
  printf("         |*************************************************************|\n");
  printf("         |            今天是 %d年%d月%d日            ",(1900+a->tm_year),(1+a->tm_mon),a->tm_mday);week_day();
  printf("         |=============================================================|\n");
  printf("         |                      欢迎使用我们的系统                     |\n");
  printf("         |                                                             |\n");
  printf("         |                        (按 '0' 退出,)                      |\n");
  printf("         |===========================MENU==============================|\n");
  printf("\n\n\n");
  printf("                           姓名:%s",p->name);
  printf("\n\n");
  printf("                           号码(7位以内):");
  scanf("%s",&p->num);
  if(p->num[0]=='0') return(NULL);
 }
 p->next=NULL;
 head=p;
 return head;
}                                                                                                                              /*还没有对输入的数据长度做规范处理*/
                                                                                                                               /*还没有确定是否要对使用的用户做记录*/
                                                                                                                               /*文件的读取或是存储存在问题*/
BOOK *input_book_list(BOOK*head)/*输入图书信息*/
{BOOK *p1,*p2;
 char input[5];
 system("cls");
 printf("                           输入需订购书籍的信息      \n\n");
 printf("                如果你知道该图书的主编则输入其姓名,否则输入'0' \n\n");
 printf("                              (按'0' 返回)                            \n\n\n\n");
 if(head==NULL)
 {head=p1=p2=(BOOK *)malloc(BOOK_LEN);/*输入第一个结点*/
     do
	 {printf("书名:");/*输入书名*/
	  scanf("%s",head->nam);
      if(head->nam[0]=='0'){return(NULL);}
	  if(strlen(head->nam)>28)printf("输入长度不能大于28个字符,请重新输入\n");
     }while(strlen(head->nam)>28);
	  do
	 {printf("主编:");/*输入主编者名字*/
      scanf("%s",head->editor);
      if(head->editor[0]=='0')strcpy(head->editor,"UNKNWON");
	  if(strlen(head->editor)>28)printf("输入长度不能大于28个字符,请重新输入\n");
     }while(strlen(head->editor)>28);
	  do
	 {printf("数量:");
      scanf("%s",input);
	  if(strlen(input)>3)printf("输入不能多于3位,请重新输入\n");
     }while(strlen(input)>3||check_amount(input));
	  head->amount=amount_do(input);/*将字符转成整型*/
      head->tag1=0;
      head->tag2=0;
      head->next=NULL;
  for(;;)/*输入后续的结点*/
      {
       p2=(BOOK *)malloc(BOOK_LEN);
       do
	 {printf("书名:");/*输入书名*/
	  scanf("%s",p2->nam);
      if(p2->nam[0]=='0')return(head);
	  if(strlen(p2->nam)>28)printf("输入长度不能大于28个字符,请重新输入\n");
     }while(strlen(p2->nam)>28);
	  do
	 {printf("主编:");/*输入主编者名字*/
      scanf("%s",p2->editor);
      if(p2->editor[0]=='0')strcpy(p2->editor,"UNKNWON");
	  if(strlen(p2->editor)>28)printf("输入长度不能大于28个字符,请重新输入\n");
     }while(strlen(p2->editor)>28);
	  do
	 {printf("数量:");
      scanf("%s",input);
	  if(strlen(input)>3)printf("输入不能多于3位,请重新输入\n");
     }while(strlen(input)>3||check_amount(input));
	  p2->amount=amount_do(input);/*将字符转成整型*/
      p2->tag1=0;
      p2->tag2=0;
      p2->next=NULL;
      p1->next=p2;
      p1=p2;
     }
 }
 else
 {
  p1=p2=head;
  while(p1->next)p1=p1->next;/*将指针移动到最后*/
  for(;;)/*输入后续的结点*/
     {
      p2=(BOOK *)malloc(BOOK_LEN);
       do
	 {printf("书名:");/*输入书名*/
	  scanf("%s",p2->nam);
      if(p2->nam[0]=='0')return(head);
	  if(strlen(p2->nam)>28)printf("输入长度不能大于28个字符,请重新输入\n");
     }while(strlen(p2->nam)>28);
	  do
	 {printf("主编:");/*输入主编者名字*/
      scanf("%s",p2->editor);
      if(p2->editor[0]=='0')strcpy(p2->editor,"UNKNWON");
	  if(strlen(p2->editor)>28)printf("输入长度不能大于28个字符,请重新输入\n");
     }while(strlen(p2->editor)>28);
	  do
	 {printf("数量:");
      scanf("%s",input);
	  if(strlen(input)>3)printf("输入不能多于3位,请重新输入\n");
     }while(strlen(input)>3||check_amount(input));
	  p2->amount=amount_do(input);/*将字符转成整型*/
      p2->tag1=0;
      p2->tag2=0;
      p2->next=NULL;
      p1->next=p2;
      p1=p2;
 }

 }
 
 return(head);
}






int check_amount(char input[])/*检查输入的数字是否合法*/
{int len,n;
 len=strlen(input)-1;
 for(n=0;n<=len;n++)
 {if(!(input[n]>='0'&&input[n]<='9')){printf("输入不合法!!!\n");return 1;}
 }
 return 0;
} 




int amount_do(char input[5])
{int len,n,value=0,hundred=100,ten=10;
 int a[5];
 len=(strlen(input)-1);
 for(n=0;n<=len;n++)/*input中的每一个字符转成整型*/
 {switch(input[n])
 {case'0':a[n]=0;break;
  case'1':a[n]=1;break;
  case'2':a[n]=2;break;
  case'3':a[n]=3;break;
  case'4':a[n]=4;break;
  case'5':a[n]=5;break;
  case'6':a[n]=6;break;
  case'7':a[n]=7;break;
  case'8':a[n]=8;break;
  case'9':a[n]=9;break;
 }
  
 }
 switch(len)/*求总值*/
 {case 0:value=a[0];break;
  case 1:value=a[0]*ten+a[1];break;
  case 2:value=a[0]*hundred+a[2];break;
 }
 return(value);
 
}

⌨️ 快捷键说明

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