c/c++语言开发共享C语言实现餐饮管理系统

本文实例为大家分享了c语言实现餐饮管理系统的具体代码,供大家参考,具体内容如下#include <stdio.h>#include <stdlib.h>#include &lt

c/c++开发分享C语言实现餐饮管理系统实例为大家分享了c语言实现餐饮管理系统的具体代码,供大家参考,具体内容如下

#include <stdio.h>  #include <stdlib.h>  #include <time.h>  #include <conio.h>  #include <windows.h>  #define n sizeof(user)   #define m sizeof(table)   #define t sizeof(order)   #define s sizeof(menu)      typedef struct user{      char username[12];//账号       char password[18];//密码      int vip;//1为会员  0不是      int adm;//administrator同上      //或将以上的采用数据域的方式存储       struct user* next;   }user; //注意初始化 ,可以写一个初始化函数  借鉴7月9号的笔记中的“初始化”         typedef struct menu{      int num;//1~10为热菜  11~20为冷菜  21~25为饮料       char name[20];      int price;      struct menu* next;   }menu;        typedef struct table{      int number;      int is_blank;      int peoplenum;      struct order* ordert;//接该桌的订单的头结点       int price;//该桌的总价       struct table* next;   }table;         typedef struct order{      int number;//菜的编号      char name[20];      int copies;//菜的份数      int price;      int xiaoji;      struct order* next;   }order;        //以下为自定义函数  void welcome();  int order(order* head);//点菜函数   //void reg();//注册函数   void login();  void logon();  void show();//显示菜单函数   void client();//客户函数   void look_amend();//查看修改函数   void add();//加菜函数   void cancel();//取消菜函数   int priceall();//计算总价函数   void getpassword(char password[18],char againpassword[18]);  int is_password_same(char password[18],char againpassword[18]);  void save_user(user* p);  menu* ffmenuhot();  menu* ffmenucold();  menu* ffmenudrink();  table* fftable();  void resave_table(table* head);           table* fftable()  {      file *fp1;       //文件指针       int n = 0;      table* head = null;      table* q;      table* p;      //system("md e:\canyin\table");      fp1 = fopen("e:\canyin\table\table.txt","a+");     //以只读的方式打开文件       if(fp1 == null)      {          printf("文件打开失败n");          //getchar();          //exit(0);      }      else      {          while(!feof(fp1))        //判断文件位置标志是否移动到文件末尾           {              n ++;                 p = (table*)malloc(sizeof(table)); //向内存申请一段空间               //fread(p, n, 1, fp1);     //将fp所指向的文件中的内容赋给p              fscanf(fp1,"%d %d %d %d %d", &p->number , &p->is_blank , &p->peoplenum , &p->price , &p->ordert );               if(n == 1)              {                    head = p;                    q = p;              }              else             //创建链表               {                  q->next = p;                  q = p;              }          }          q->next = null;      }      fclose(fp1);    //关闭文件       return head;   //返回头指针   }           void resave_table(table* head)  {      table* p;      p = head;      //system("md e:\canyin\table");      file *file;       //文件指针       file = fopen("e:\canyin\table\table.txt","wb+");    //以追加的方式打开文件       if(file == null)      {          printf("文件打开失败n");      }      ///if(fwrite(p, n, 1, fp)!=1)    //将p所指向的1个大小为n的数据结构写入fp所指向的文件中       //{          //printf("文件写入失败n");      while(p->next != null)      {          fprintf( file ,"%d %d %d %d %d n", p->number, p->is_blank , p->peoplenum , p->price , p->ordert);          p=p->next;      }      //}      fclose(file);        //关闭文件   }           void client()  {      order* orderh;      orderh=(order*)malloc(sizeof(order));      int tablenum;      printf("当前可选择的桌位有:n");      table* head;      table* p;      head = (table*)malloc(sizeof(table));      p = (table*)malloc(sizeof(table));      head = fftable();      p = head;      while(p->next != null)      {          if(p->is_blank==0)              printf("%d号t",p->number);      }      printf("请选择你的桌位号:");      scanf("%d",&tablenum);      p = head;      while(p->number == tablenum)      {          p->is_blank = 1;          p->ordert = orderh;          break;      }      //确定座位号       //char a;      /*       printf("1.点菜");      printf("2.查看已点的菜");       scanf("%s",&a);      switch(a)      {          case'1':order();break;//调用点菜函数           case'2':look_amend();break;//调用查看函数          default:printf("请输入正确的选项!");break;        } */       printf("请点菜:n");       p->price = order(orderh);       resave_table(head);   }        int order(order* head)  {      menu* hot;      menu* cold;      menu* drink;      int copies;      int i=1;      int priceall = 0;      hot = ffmenuhot();      cold = ffmenucold();      drink = ffmenudrink();      menu *h , *c , *d;      show();//显示菜单函数       int numo;       printf("n请输入你要点的菜的序号:(以#结束)");       //将要点的菜加入订单链表中      //order* head;      order* p;      order* q;      head = (order*)malloc(sizeof(order));      p = head;      while(getch()!='#')      {          printf("%d:",i);          scanf("%d",&numo);          printf("份数:");          scanf("%d",&copies);          h = hot;          c = cold;          d = drink;          while(h->next != null)          {              if(h->num==numo)              {                  //p = (order*)malloc(sizeof(order));                  q = (order*)malloc(sizeof(order));                  q->next = null;                  p->number = h->num;                  strcmp(p->name , h->name );                  p->price = h->price;                  p->copies = copies;                  p->next = q;                  q = p;                  priceall = priceall + copies*(h->price);                  break;              }          }                    while(c->next != null)          {              if(c->num==numo)              {                  //p = (order*)malloc(sizeof(order));                  q = (order*)malloc(sizeof(order));                  q->next = null;                  p->number = c->num;                  strcmp(p->name , c->name );                  p->price = c->price;                  p->copies = copies;                  p->next = q;                  q = p;                  priceall = priceall + copies*(h->price);                  break;              }          }                    while(d->next != null)          {              if(d->num==numo)              {                  //p = (order*)malloc(sizeof(order));                  q = (order*)malloc(sizeof(order));                  q->next = null;                  p->number = d->num;                  strcmp(p->name , d->name );                  p->price = d->price;                  p->copies = copies;                  p->next = q;                  q = p;                  priceall = priceall + copies*(h->price);                  break;              }          }          i++;      }                  printf("n点菜成功!");       printf("您的订单总价是:%d",priceall);      sleep(10000);      system("cls");      return priceall;      //look_amend();  }     void look_amend()  {      char a;       printf("你点的菜是:n");      //将订单链表中的菜逐个输出       printf("1.添加菜品n");      printf("2.删除菜品n");      printf("3.确定n");       scanf("%s",&a);      switch(a)      {          case'1':add();break;//调用加菜函数           case'2':cancel();break;//调用减菜函数          case'3':priceall();break;           default:printf("请输入正确的选项!");break;        }   }     void add()  {      show();      printf("请输入你要加入的菜的序号:");      //将菜加入订单链表      printf("n加菜成功!");      sleep(2000);      system("cls");       look_amend();  }        void cancel()  {      printf("你点的菜是:");      printf("n请输入你要删除的菜的序号:");      //将菜从订单链表中删除      printf("n取消成功!");       sleep(2000);      system("cls");       look_amend();  }     /*  void enter()//登录   {       printf("账号:n");       printf("密码:");      //调用判断登录函数;       printf("n登录成功!");      sleep(2000);      printf("n欢迎您!");//判断普通客户  会员  管理员       client();  }*/  /*  void login()  {      printf("账号:n");       printf("密码:");      //调用判断登录函数;       printf("n登录成功!");      sleep(2000);      printf("n欢迎您!");//判断普通客户  会员  管理员       client();  }*/     /*  void reg()//注册函数   {      //注册账户       printf("注册成功!");      sleep(2000);      system("cls");      order();//调用点菜函数   } */        void show()//显示   {      menu* p1;      menu* p2;      menu* p3;      menu* headhot;      menu* headcold;      menu* headdrink;      headhot = ffmenuhot();      headcold = ffmenucold();      headdrink = ffmenudrink();      p1 = headhot;      p2 = headcold;      p3 = headdrink;      printf("热菜:n");      printf("序号       菜名       价格n");       printf("%d %s %d n", p1->num, p1->name  , p1->price);      while(p1->next != null)      {          printf("%d %s %d n", p1->num, p1->name  , p1->price);          p1=p1->next;      }                  printf("冷菜:n");      printf("序号       菜名       价格n");      while(p2->next!=null)      {          printf("%d %s %d n", p2->num, p2->name  , p2->price);          p2=p2->next;      }            printf("饮料:n");      printf("序号       菜名       价格n");       while(p3->next!=null)      {          printf("%d %s %d n", p3->num, p3->name  , p3->price);          p3=p3->next;      }  }         int priceall()//合计价格   {      //计算总价并输出       printf("您订单的总价是:");       printf("n请等待服务员为你上菜(如需修改请和服务员联系)");  }         void welcome()  {      system("cls");      system("color 3e");      printf("===============欢迎来到赣味客家餐馆管理系统===============nnnn");      printf("t 1.登录n");       printf("t 2.注册n");      printf("请选择[1 2] : [   ]bbb");      int n;      while(1)      {          scanf("%d",&n);          switch(n)          {              case 1:                  login();//登录                   break;              case 2:                  logon();//注册                   break;                  default:                  break;          }      }  }     user* ff1()               //将存账号的文件里的内容输出到链表中  {      file *fp1;       //文件指针       int n = 0;      user* head = null;      user* q;      user* p;      system("md e:\canyin\zhanghu");      fp1 = fopen("e:\canyin\zhanghu\zhanghu.txt","a+");     //以只读的方式打开文件       if(fp1 == null)      {          printf("文件打开失败n");          //getchar();          //exit(0);      }      else      {          while(!feof(fp1))        //判断文件位置标志是否移动到文件末尾           {              n ++;                 p = (user*)malloc(n); //向内存申请一段空间               //fread(p, n, 1, fp1);     //将fp所指向的文件中的内容赋给p              fscanf(fp1,"%s %s %d %d",p->username ,p->password ,&p->vip ,&p->adm);               if(n == 1)              {                    head = p;                    q = p;              }              else             //创建链表               {                  q->next = p;                  q = p;              }          }          q->next = null;      }      fclose(fp1);    //关闭文件       return head;   //返回头指针   }     //从菜单文件中读取菜单   menu* ffmenuhot()  {      file *fp1;       //文件指针       int n = 0;      menu* head = null;      menu* q;      menu* p;      system("md e:\canyin\menu");      fp1 = fopen("e:\canyin\menu\hotcai.txt","a+");     //以只读的方式打开文件       if(fp1 == null)      {          printf("文件打开失败n");          //getchar();          //exit(0);      }      else      {          while(!feof(fp1))        //判断文件位置标志是否移动到文件末尾           {              n ++;                 p = (menu*)malloc(sizeof(menu)); //向内存申请一段空间               //fread(p, n, 1, fp1);     //将fp所指向的文件中的内容赋给p              fscanf(fp1,"%d %s %d",&p->num ,p->name ,&p->price);               if(n == 1)              {                    head = p;                    q = p;              }              else             //创建链表               {                  q->next = p;                  q = p;              }          }          q->next = null;      }      fclose(fp1);    //关闭文件       return head;   //返回头指针   }        menu* ffmenucold()  {      file *fp1;       //文件指针       int n = 0;      menu* head = null;      menu* q;      menu* p;      system("md e:\canyin\menu");      fp1 = fopen("e:\canyin\menu\coldcai.txt","a+");     //以只读的方式打开文件       if(fp1 == null)      {          printf("文件打开失败n");          //getchar();          //exit(0);      }      else      {          while(!feof(fp1))        //判断文件位置标志是否移动到文件末尾           {              n ++;                 p = (menu*)malloc(sizeof(menu)); //向内存申请一段空间               //fread(p, n, 1, fp1);     //将fp所指向的文件中的内容赋给p              fscanf(fp1,"%d %s %d",&p->num ,p->name ,&p->price);               if(n == 1)              {                    head = p;                    q = p;              }              else             //创建链表               {                  q->next = p;                  q = p;              }          }          q->next = null;      }      fclose(fp1);    //关闭文件       return head;   //返回头指针   }        menu* ffmenudrink()  {      file *fp1;       //文件指针       int n = 0;      menu* head = null;      menu* q;      menu* p;      system("md e:\canyin\menu");      fp1 = fopen("e:\canyin\menu\drink.txt","a+");     //以只读的方式打开文件       if(fp1 == null)      {          printf("文件打开失败n");          //getchar();          //exit(0);      }      else      {          while(!feof(fp1))        //判断文件位置标志是否移动到文件末尾           {              n ++;                 p = (menu*)malloc(sizeof(menu)); //向内存申请一段空间               //fread(p, n, 1, fp1);     //将fp所指向的文件中的内容赋给p              fscanf(fp1,"%d %s %d",&p->num ,p->name ,&p->price);               if(n == 1)              {                    head = p;                    q = p;              }              else             //创建链表               {                  q->next = p;                  q = p;              }          }          q->next = null;      }      fclose(fp1);    //关闭文件       return head;   //返回头指针   }        void login()      // 账号登陆   {       system("cls");   //清屏       user* p;      user* head;          head = ff1();      p = head;      //调用函数 ,返回值为头结点的指针      /*      p = head;      while(p->next!=null)      {          printf("%s %s %d %dn", p->username ,p->password , p->vip, p->adm);          p=p->next;      }*/      do{          char t, c, k, name1[12], password1[18];          int i = 0;          printf("***************************nnnn");          printf("tt     登陆状态       ");          printf("请输入您的账号:");          scanf("%s", name1);          printf("请输入您的密码:");          for(;;)              //此处为输入密码不回显操作           {              k = getch();       //输入k               if(k == 'r')      //如果输入k为回车,则跳出循环               {                  break;              }              else if(k == 'b')  //如果输入k为删除键               {                  if(i > 0)       //如若密码还没完全删除                   {                      printf("b");                      printf(" ");                      printf("b");                      i--;                  }              }              else              //如果输入的k既不是删除键,也不是回车键               {                  password1[i] = k;   //把k的值赋给_password[i];                   printf("*");      //输出*号,保护用户隐私                   i ++;              //密码位数加1               }          }          password1[i] = '';          while( (p != null) && (strcmp(p->username, name1) != 0) )   //遍历链表,寻找当前输入的账户的账号           {              p = p->next;          }          if(p != null)   //如果p不为空           {              if(strcmp(p->password, password1) == 0)     //如果输入的密码正确               {                  printf("正在登陆....n");                  sleep(500);      //暂停0.5秒                  system("cls");                  printf("登陆成功!n");                  break;    //跳出循环              }              else      //如果输入的密码错误              {                   printf("正在登陆....n");                  sleep(500);                  system("cls");                  printf("-------------------------n");                  printf("|                       |n");                  printf("| 密码错误!是否继续?  |n");                  printf("| 1.是             2.否 |n");                  printf("|                       |n");                  printf("-------------------------n");                  while(1)                  {                      t = getch();  //输入t                          if(t == '1')                                {                          system("cls");  //清屏                           break;                      }                      else if(t == '2')     //如果输入t为n,进入开始界面                       {                          welcome();                          break;                      }                  }              }          }         else              //如果p为空,即输入的账号不正确          {                 printf("正在登陆....n");                 sleep(500);                 system("cls");                 printf("-------------------------n");                 printf("|                       |n");              printf("|  账号错误!是否继续? |n");              printf("|                       |n");              printf("|  1.是            2.否 |n");               printf("|                       |n");              printf("-------------------------n");              while(1)      //死循环防止其他按键干扰               {                  c = getch();                  if(c == '1')                  {                        system("cls");                      break;                  }                  else if(c == '2')                  {                      welcome();                      break;                  }              }         }      }while(1);      //永远为真          sleep(500);      //暂停0.5秒          client();         //menu();         //账号密码均正确,进入主菜单   }                 void logon()        //注册账号   {          //system("md e:\canyin\zhanghu");      system("cls");      user* p;       p = (user*)malloc(n);     //向内存申请一段空间       p->next==null;      //do      //{          char name[12],password[18],againpassword[18],c,k;          int i = 0;           printf("赣味客家餐饮管理系统n");          printf("**************************n");          printf("请输入账号(手机号):n");          scanf("%s",name);          //printf("请输入密码:n");          for(;;)              //此处为输入密码不回显操作           {              getpassword(password,againpassword);              if(is_password_same(password,againpassword)==1);          //if(strcmp(password, againpassword) == 0)        //如果输入的两次密码均正确               {                  strcpy(p->username, name);                  strcpy(p->password, password);                  printf("n是否注册为会员(0.否,1.是)");                  scanf("%d", &p->vip);                  printf("n是否注册为管理员(0.否,1.是)");                   scanf("%d", &p->adm);                   printf("正在注册....n");                  save_user(p);                  sleep(500);                  system("cls");                  printf("注册成功!n");                  sleep(500);         //暂停0.5秒                   break;              //跳出循环               }          /*          else    //如果输入的两次密码不同           {              printf("正在注册....n");              sleep(500);              system("cls");              printf("-----------------------------");              printf("|                           |");              printf("|  注册失败!两次密码不统一,是否继续注册? |");              printf("|                           |");              printf("|  1.是               2.否  |");               printf("|                           |");              printf("-----------------------------");              while(1)              {                  c = getch();                  if(c == '1')                  {                      system("cls");                      //logon();                                            break;                  }                  else if(c == '2')                  {                      welcome();                      break;                  }              }          }*/      }      //}while(1);    //永远为真       printf("正在自动为您登陆....n");      sleep(500);      printf("n登录成功!");      sleep(2000);      printf("n欢迎您!");//判断普通客户  会员  管理员       client();      //login();  }     void getpassword(char password[18],char againpassword[18])  {      char k;      int i=0;      printf("请输入密码:n");          for(;;)              //此处为输入密码不回显操作           {              k = getch();       //输入k               if(k == 'r')      //如果输入k为回车,则跳出循环               {                  break;              }                            else if(k == 'b')  //如果输入k为删除键               {                  if(i > 0)       //如若密码还没完全删除                   {                      printf("b");                      printf(" ");                      printf("b");                      i --;                  }              }                            else              //如果输入的k既不是删除键,也不是回车键               {                  password[i] = k;   //把k的值赋给_password[i];                   printf("*");      //输出*号,保护用户隐私                   i ++;              //密码位数加1               }          }                    password[i] = '';          i = 0;          printf("n请确认您的密码:n");          for(;;)              //此处为输入密码不回显操作           {              k = getch();       //输入k               if(k == 'r')      //如果输入k为回车,则跳出循环               {                  break;              }              else if(k == 'b')  //如果输入k为删除键               {                  if(i > 0)       //如若密码还没完全删除                   {                      printf("b");                      printf(" ");                      printf("b");                      i --;                  }              }              else              //如果输入的k既不是删除键,也不是回车键               {                  againpassword[i] = k;   //把k的值赋给_password[i];                   printf("*");      //输出*号,保护用户隐私                   i++;              //密码位数加1               }          }          againpassword[i] = '';  }        int is_password_same(char password[18],char againpassword[18])  {      char c;      if(strcmp(password, againpassword) != 0)      {          {              printf("正在注册....n");              sleep(500);              system("cls");              printf("-----------------------------");              printf("|                           |");              printf("|  注册失败!两次密码不统一,是否继续注册? |");              printf("|                           |");              printf("|  1.是               2.否  |");               printf("|                           |");              printf("-----------------------------");              while(1)              {                  c = getch();                  if(c == '1')                  {                      system("cls");                      //logon();                      getpassword(password,againpassword);                      break;                  }                  else if(c == '2')                  {                      return 0;                      welcome();                      //break;                  }              }          }      }      else          return 1;  }     void save_user(user* p)  {      system("md e:\canyin\zhanghu");      file *file;       //文件指针       file = fopen("e:\canyin\zhanghu\zhanghu.txt","a");    //以追加的方式打开文件       if(file == null)      {          printf("文件打开失败n");      }      ///if(fwrite(p, n, 1, fp)!=1)    //将p所指向的1个大小为n的数据结构写入fp所指向的文件中       //{          //printf("文件写入失败n");      fprintf( file ,"%s %s %d %dn", p->username , p->password , p->vip , p->adm );      //}

这是以前写的餐饮管理系统,和大佬们没得比,可以参考一下,因为是以前写的所以文件找不到了,可以自己把文件部分修改一下重新创建即可 

C语言实现餐饮管理系统

C语言实现餐饮管理系统

以上就是c/c++开发分享C语言实现餐饮管理系统的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<计算机技术网(www.ctvol.com)!!>。

需要了解更多c/c++开发分享C语言实现餐饮管理系统,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/1066217.html

(0)
上一篇 2022年3月20日
下一篇 2022年3月20日

精彩推荐