C语言实现餐饮点餐管理系统分享!

本文实例为大家分享了C语言实现餐饮点餐管理系统的具体代码,供大家参考,具体内容如下

C语言实现餐饮点餐管理系统C语言实现餐饮点餐管理系统C语言实现餐饮点餐管理系统C语言实现餐饮点餐管理系统C语言实现餐饮点餐管理系统

具体代码如下

  /*   项目名称:南航餐饮管理系统   组员:梁文新,刘青林,刘艺,施瑞文(组长)  */        //当注册用户名为:root,密码为:root的账号时,系统默认为初始管理员     //头文件   #include<stdio.h>  #include<stdlib.h>  #include<time.h>  #include<conio.h>  #include<windows.h>  #include<string.h>        //宏定义区  #define M sizeof(struct User)//用户表的大小   #define N sizeof(struct stapleFood)//主食 表大小   #define P sizeof(struct non_stapleFood)//副食表大小  #define Q sizeof(struct Drink_beverage) //饮品表大小   #define X sizeof(struct Table)//餐桌表大小   #define Y sizeof(struct Form)//订单表大小      //结构体     struct User //用户表   {   char userName[10];//用户名    char passWord[18];//密码    int isVIP;//会员标记    int isAdministrator;//管理员标记    float money;//余额    struct User *next;//指针域   };  typedef struct User user;  typedef user* pUser;     struct stapleFood //主食   {   char name[20];   float price;   struct stapleFood *next;  };  typedef struct stapleFood staple_food;  typedef staple_food *pStapleFood;     struct non_stapleFood //副食   {   char name[20];   float price;   struct non_stapleFood *next;  };   typedef struct non_stapleFood non_staple_food;  typedef non_staple_food *pNon_stapleFood;     struct Drink_beverage //饮品   {   char name[20];   float price;   struct Drink_beverage *next;  };  typedef struct Drink_beverage drinkBeverage;  typedef drinkBeverage *pDrinkBeverage;     struct Table //餐桌   {   int ID;//餐桌编号   int People;//已坐人数   int count;//可容纳人数   char Username[10];//订餐人    struct Table *next;   };  typedef struct Table table;  typedef table *pTable;        struct Form //订单   {   char name[20];   float price;   struct Form *next;  };  typedef struct Form orderForm;  typedef orderForm *pOrder;        //自定义函数区      //用户客户端      void Default();//欢迎界面   void User_Login();//用户登录界面  void Logon();//注册界面   pUser readUserFile();//从文件中读取用户信息,返回一个表头地址   void save_User(pUser p1);//将用户信息保存到文件中   void User_Menu();//用户菜单   void User_Order();//点餐   void Order_StapleFood();//主食  void Order_nonStapleFood();//副食  void Order_DrinkBeverage();//饮品  void Order_Form(int ID,int number);//订单   void User_List_Table();//餐桌列表   void Apply_VIP_Menu();//会员办理菜单   void Add_money(pUser head);//充值   void Updata_User(pUser head);//更新用户表   void Apply_VIP(pUser head);//办理会员   void User_Wallet();//我的钱包          //管理员客户端   void Administrator_Menu();//管理员菜单   void Administrator_Login();//管理员登录   void Check_User();//查看用户   void Find_User();//查找用户  void All_User();//查看所有用户   void All_VIP();//本店会员   void Setup_administrator();//设置管理员   void Food();//菜品信息   void Add_Food();//添加菜单   void save_stapleFood(pStapleFood p);//保存主食信息   void save_non_stapleFood(pNon_stapleFood p);//保存副食信息  void save_drinkBeverage(pDrinkBeverage p);//保存饮品信息  pStapleFood readStapleFoodFile();//从主食文件中读取用户信息,返回一个表头地址   pNon_stapleFood readNonStapleFoodFile();//从副食文件中读取用户信息,返回一个表头地址  pDrinkBeverage readDrinkBeverageFile();//从饮品文件中读取用户信息,返回一个表头地址  void Table();//餐桌管理   void Add_Table();//添加餐桌   void save_Table(pTable p);//保存餐桌信息  pTable readTableFile(); //从餐桌文件中读取用户信息,返回一个表头地址  void Clear_Table();//清理餐桌   void Clear_oneTable();//清理指定餐桌  void Clear_allTable();//清理所有餐桌   void Updata_Table(pTable head);//更新餐桌文件   void Administrator_List_Table();//餐桌列表          //公共函数  void toxy(int x,int y);//将光标移动到x,y坐标处  void HideCursor(int x);//隐藏光标   char *HidePassword();//隐藏密码   void Exit();//退出系统   void Change();//切换账号   void Amend_passWord();//修改密码   void List_Food();//菜单列表      //全局变量区  char _userName[10];   char _passWord[18];//记录当前用户   pOrder orderHead=NULL,p2=NULL;//记录当前用户的订单   int num=0;     //函数实现区     void toxy(int x,int y)//将光标移动到x,y坐标处  {   COORD pos={x,y};   HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE);   SetConsoleCursorPosition(Out,pos);   }     void HideCursor(int x)//隐藏光标 ,当x为0时,隐藏,为1时,显示   {   CONSOLE_CURSOR_INFO cursor_info ={1,x};   SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);   }      void Default()//欢迎界面   {   char t;//用于选择    do   {   HideCursor(0); //隐藏光标    system("color 72");   toxy(28,8);   printf(" 欢迎来到南航餐饮! ");   toxy(26,9);   printf("-----------------------------");   toxy(27,11);   printf("1.登录 2.注册 3.管理员登录");   while(1) //死循环为防止其他按键干扰    {   t=getch();//不回显函数    if(t=='1')//如果按1,则进入登录界面    User_Login();   else if(t=='2')//如果按2,则进入注册界面    Logon();   else if(t=='3')   Administrator_Login();   }//如果既不是1也不是2和3,则循环输入    }while(1);//永远为真      }      void User_Menu()//用户菜单   {      char t;//用于选择菜单选项    do   {    system("cls");   HideCursor(0); //隐藏光标    system("color 74");   toxy(32,3);   printf("南航餐饮点餐系统!");   toxy(32,4);   printf("当前用户:%s",_userName);   toxy(30,5);   printf("*********************");   toxy(32,7);   printf("| 1.菜单列表 |");   toxy(32,9);   printf("| 2.餐桌列表 |");   toxy(32,11);   printf("| 3.会员办理 |");   toxy(32,13);   printf("| 4.修改密码 |");   toxy(32,15);   printf("| 5.我的钱包 |");    toxy(32,17);   printf("| 6.切换账号 |");    toxy(32,19);   printf("| 7.退出系统 |");   t=getch();//不回显函数,输入一个值    switch(t)   {   case '1':User_Order();break;   case '2':User_List_Table();break;   case '3':Apply_VIP_Menu();break;   case '4':Amend_passWord();break;   case '5':User_Wallet();break;   case '6':Change();break;   case '7':Exit();break;   default :break;    }   }while(1);//永远 为真   }      char *HidePassword()//隐藏密码   {   char password[18];//密码    char *p;//指向密码的指针    int i=0;//记录密码位数    char t;//输入密码    for(;;)  //此处为输入密码不回显操作    {   t=getch(); //输入k    if(t=='r') //如果输入k为回车,则跳出循环    {   break;   }   else if(t=='b') //如果输入k为删除键    {   if(i>0) //如若密码还没完全删除    {   printf("b");   printf(" ");   printf("b");   i--;   }   }   else  //如果输入的k既不是删除键,也不是回车键    {   password[i]=t; //把k的值赋给_password[i];    printf("*"); //输出*号,保护用户隐私    i++;  //密码位数加1    }   }   password[i]='';//在数组末端加一个结束符    p=password;//让p指向该数组    return p; //返回一个指向密码的指针   }      pUser readUserFile()//从文件中读取用户信息,返回一个表头地址   {   FILE *fp; //文件指针    int n=0;//记录链表 的结点数    pUser head=NULL;//定义头指针    pUser p2,p,pre;   fp=fopen("User.txt","a+"); //以只读的方式打开文件    if(fp==NULL)   {   printf("cannot open filen");   }   else   {   while(!feof(fp)) //判断文件位置标志是否移动到文件末尾    {   n++;   p=(pUser)malloc(M); //向内存申请一段空间    fread(p,M,1,fp); //将fp所指向的文件中的内容赋给p   if(n==1)   {   head=p;   p2=p;   }   else  //创建链表    {   pre=p2;   p2->next=p;   p2=p;   }   }   p2->next=NULL;   }   if(n<=2)   head->next=NULL;   else   pre->next=NULL;   fclose(fp); //关闭文件    return head; //返回头指针   }     void save_User(pUser p1) //将p1所指向的内容存储到文件中   {   FILE *fp; //文件指针    fp=fopen("User.txt","a+"); //以追加的方式打开文件    if(fp==NULL)   {   printf("cannot open filen");   }   if(fwrite(p1,M,1,fp)!=1) //将p1所指向的1个大小为N的数据结构写入fp所指向的文件中    {   printf("file write errorn");   }   fclose(fp); //关闭文件   }     void User_Login()//登录页面   {    char *q,t,c;//q指针用于接收 *HidePassword()函数返回的指向密码的指针,t和c均用于选择    pUser p=readUserFile();//从文件中读取用户信息,返回一个表头地址    do   {   HideCursor(1);//显示管光标    system("cls");//清屏    system("color 73");//设置颜色    toxy(28,8);   printf("南航餐饮管理系统登录界面");   toxy(26,9);   printf("-----------------------------");   toxy(32,11);   printf("用户名:");   toxy(32,13);   printf("密 码:");   toxy(40,11);   scanf("%s",_userName);   toxy(40,13);   q=HidePassword();//输入密码    strcpy(_passWord,q);//将获得的密码复制给_passWord[]数组    while(p!=NULL&&strcmp(p->userName,_userName)!=0) //遍历链表,寻找当前输入的账户的账号    {   p=p->next;   }   if(p!=NULL) //如果p不为空    {   if(strcmp(p->passWord,_passWord)==0) //如果输入的密码正确    {   toxy(32,16);   printf("正在登陆....");   Sleep(500); //暂停0.5秒   system("cls");   toxy(32,10);   printf("登陆成功!");   break; //跳出循环   }   else //如果输入的密码错误   {    toxy(32,16);   printf("正在登陆....");   Sleep(500);   system("cls");   toxy(30,8);   printf("-------------------------");   toxy(30,9);   printf("|   |");   toxy(30,10);   printf("| 密码错误!是否继续? |");   toxy(30,12);   printf("| 1.是  2.否 |");   toxy(30,13);   printf("|   |");   toxy(30,14);   printf("-------------------------");   while(1)//无限循环为防止其他按键干扰    {   t=getch(); //输入t    if(t=='1')     {   system("cls"); //清屏    break;   }   else if(t=='2') //如果输入t为n,进入开始界面    {   system("cls"); //清屏   Default();break;   }   }   }    }   else  //如果p为空,即输入的账号不正确    {    toxy(32,16);    printf("正在登陆....");    Sleep(500);    system("cls");    toxy(30,8);    printf("-------------------------");    toxy(30,9);    printf("|   |");   toxy(30,10);   printf("| 账号错误!是否继续? |");   toxy(30,11);   printf("|   |");   toxy(30,12);   printf("| 1.是  2.否 |");    toxy(30,13);   printf("|   |");   toxy(30,14);   printf("-------------------------");   while(1) //死循环防止其他按键干扰    {   c=getch();   if(c=='1')   {    system("cls");   break;   }   else if(c=='2')   {   system("cls"); //清屏   Default();   }   }   }   }while(1);   Sleep(500); //暂停0.5秒    User_Menu();  //账号密码均正确,进入用户主菜单   }      void Logon()//注册界面  {   pUser p1;    pUser p=readUserFile();//从文件中读取用户信息,返回一个表头地址    p1=(pUser)malloc(M); //向内存申请一段空间    char *q1,*q2;//q1,q2分别用于接收 *HidePassword()函数返回的值    char userName[10],passWord[18],againPassword[18],c,k,t;//c,k,t均用于选择    do{    system("cls");    system("color 73");   HideCursor(1);//显示光标    int flag=0;//标记信息库中是否存在要注册用户名    toxy(28,8);   printf("南航餐饮管理系统注册界面");   toxy(26,9);   printf("-----------------------------");   toxy(32,11);   printf("用 户 名:");   toxy(32,13);   printf("密 码:");   toxy(32,15);   printf("确认密码:");   toxy(42,11);   scanf("%s",userName);//输入用户名    toxy(42,13);   q1=HidePassword();//输入密码    strcpy(passWord,q1);   toxy(42,15);   q2=HidePassword();//输入确认密码    strcpy(againPassword,q2);   while(p!=NULL) //遍历链表,寻找当前输入的账户的账号    {   if(strcmp(p->userName,userName)==0)//如果信息库中存在该用户名    {   toxy(32,17);   printf("用户名已存在,请重新注册!");   flag=1;//flag为1时表示用户名已存在    break;//跳出循环    }   p=p->next;   }   if(flag)//如果用户名已存在    {   HideCursor(0);//隐藏光标    toxy(32,19);   printf("是否继续?");//询问是否继续    toxy(32,21);   printf("1.是t2.否");   while(1)   {   t=getch();   if(t=='1')   break;   else if(t=='2')   break;   }   if(t=='1')//如果继续,则重新注册    continue;   else if(t=='2')//如果不继续,则回到首页    {   system("cls");//清屏    Default();//回到首页    }    }      if(strcmp(passWord,againPassword)==0) //如果输入的两次密码均正确    {   strcpy(p1->userName,userName);   strcpy(p1->passWord,passWord);   strcpy(_userName,userName);   strcpy(_passWord,passWord);   p1->isVIP=0;   p1->money=0;   if(strcmp(userName,"root")==0&&strcmp(passWord,"root")==0)   p1->isAdministrator=1;   else   p1->isAdministrator=0;   toxy(32,16);   printf("正在注册....");   Sleep(500);   break;  //跳出循环    }   else //如果输入的两次密码不同    {   toxy(32,16);   printf("正在注册....");   Sleep(500);   system("cls");   toxy(30,8);   printf("------------------------------");   toxy(30,9);   printf("|    |");   toxy(30,10);   printf("|两次密码不一致!是否继续注册?|");   toxy(30,11);   printf("|    |");   toxy(30,12);   printf("| 1.是  2.否 |");    toxy(30,13);   printf("|    |");   toxy(30,14);   printf("------------------------------");   while(1)   {   c=getch();   if(c=='1')   {   system("cls");   break;   }   else if(c=='2')   {   system("cls");   Default();   break;   }   }   }   }while(1);   save_User(p1); //调用函数,将p1所指向的内容存储到文件中    system("cls");   toxy(32,10);   printf("注册成功!");   Sleep(500);  //暂停0.5秒    toxy(32,12);   printf("正在自动为您登陆....");   Sleep(500);   User_Menu(); //注册成功后进入主菜单   }      void User_Order()//点餐  {   char ch='0';   char t='0';   int ID;   int number;   do   {   while(1)   {    system("cls");   HideCursor(1);   int flag=0;   pTable T,Thead;   Thead=readTableFile();   T=Thead;   int j=11;   toxy(12,6);   printf("餐桌列表(按任意键继续)");   toxy(2,8);   printf("餐桌编号 | 可坐人数 | 已坐人数");   toxy(0,9);   printf("--------------------------------------");   while(T!=NULL)   {   toxy(6,j);   printf("%-10d%-10d%d",T->ID,T->count,T->People);   j++;   T=T->next;   }   toxy(38,12);   printf("请选择餐桌号:");   scanf("%d",&ID);   toxy(40,14);   printf("请选择人数:");   scanf("%d",&number);   T=Thead;   while(T!=NULL)   {   if(T->ID==ID)   {   if((T->count)-(T->People)>=number)   {   toxy(38,16);   printf("占座成功!按任意键继续点餐");   flag=1;   break;   }   else   {   toxy(38,16);   printf("占座失败!该餐桌座位不够");   flag=0;   break;   }   }   T=T->next;   }   if(T==NULL&&flag==0)   {   toxy(38,16);   printf("该餐桌编号不存在,请重新输入");   Sleep(1000);   continue;   }   else if(T!=NULL&&flag==0)   {   toxy(38,17);   printf("是否继续 1.是 2.否");   while(1)   {   ch=getch();   if(ch=='1'||ch=='2')   break;   }   if(ch=='1')   continue;   else if(ch=='2')   break;   }   else if(flag)   break;   }   if(ch=='2')   break;   getch();   do   {      system("cls");   toxy(32,6);   printf("点餐");   toxy(24,8);   printf("-----------------");   toxy(28,10);   printf("1) 主 食");   toxy(28,12);   printf("2) 副 食");   toxy(28,14);   printf("3) 饮 品");   toxy(28,16);   printf("4)订 单");   toxy(28,18);   printf("5)返 回");   t=getch();   switch(t)   {   case '1':Order_StapleFood();break;   case '2':Order_nonStapleFood();break;   case '3':Order_DrinkBeverage();break;   case '4':Order_Form(ID,number);break;   case '5':break;   default :break;    }    if(t=='5')   break;   }while(1);   if(t=='5')   break;   }while(1);  }         void Order_StapleFood()//主食  {   char t;   do   {   system("cls");   pStapleFood p,head=readStapleFoodFile();   pOrder p1;   p=head;   char foodName[20];   int i=8;   toxy(10,4);   printf("主食菜单");   toxy(6,6);   printf("菜名ttt价格");   toxy(0,7);   printf("-----------------------------------");   while(p!=NULL)   {   toxy(6,i);   printf("%-22s%.2f",p->name,p->price);   i++;   p=p->next;   }   toxy(40,8);   printf("请输入您要点的菜名:");   scanf("%s",foodName);   p=head;   while(p!=NULL&&strcmp(p->name,foodName)!=0)   {   p=p->next;   }   if(p)   {   p1=(pOrder)malloc(Y);   strcpy(p1->name,foodName);   p1->price=p->price;   num++;   if(num==1)   {   orderHead=p1;   p2=p1;   }   else   {   p2->next=p1;   p2=p1;   }   p2->next=NULL;   toxy(40,10);   printf("点餐成功!是否继续?1.是 2.否");   while(1)   {   t=getch();   if(t=='1')   break;   else if(t=='2')   break;   }   if(t=='2')   break;   }   else   {   toxy(36,10);   printf("没有找到这道菜,请检查您输入的菜名是否正确!");   Sleep(1500);   }   }while(1);     }      void Order_nonStapleFood()//副食  {   char t;   do   {   system("cls");   pNon_stapleFood p,head=readNonStapleFoodFile();   pOrder p1;   p=head;   char foodName[20];   int i=8;   toxy(10,4);   printf("副食菜单");   toxy(6,6);   printf("菜名ttt价格");   toxy(0,7);   printf("-----------------------------------");   while(p!=NULL)   {   toxy(6,i);   printf("%-22s%.2f",p->name,p->price);   i++;   p=p->next;   }   toxy(40,8);   printf("请输入您要点的菜名:");   scanf("%s",foodName);   p=head;   while(p!=NULL&&strcmp(p->name,foodName)!=0)   {   p=p->next;   }   if(p)   {   p1=(pOrder)malloc(Y);   strcpy(p1->name,foodName);   p1->price=p->price;   num++;   if(num==1)   {   orderHead=p1;   p2=p1;   }   else   {   p2->next=p1;   p2=p1;   }   p2->next=NULL;   toxy(36,10);   printf("点餐成功!是否继续?1.是 2.否");   while(1)   {   t=getch();   if(t=='1')   break;   else if(t=='2')   break;   }   if(t=='2')   break;   }   else   {   toxy(36,10);   printf("没有找到这道菜,请检查您输入的菜名是否正确!");   Sleep(1500);   }   }while(1);  }      void Order_DrinkBeverage()//饮品  {   char t;   do   {   system("cls");   pDrinkBeverage p,head=readDrinkBeverageFile();   pOrder p1;   p=head;   char foodName[20];   int i=8;   toxy(10,4);   printf("饮品菜单");   toxy(6,6);   printf("菜名ttt价格");   toxy(0,7);   printf("-----------------------------------");   while(p!=NULL)   {   toxy(6,i);   printf("%-22s%.2f",p->name,p->price);   i++;   p=p->next;   }   toxy(40,8);   printf("请输入您要点的菜名:");   scanf("%s",foodName);   p=head;   while(p!=NULL&&strcmp(p->name,foodName)!=0)   {   p=p->next;   }   if(p)   {   p1=(pOrder)malloc(Y);   strcpy(p1->name,foodName);   p1->price=p->price;   num++;   if(num==1)   {   orderHead=p1;   p2=p1;   }   else   {   p2->next=p1;   p2=p1;   }   p2->next=NULL;   toxy(36,10);   printf("点餐成功!是否继续?1.是 2.否");   while(1)   {   t=getch();   if(t=='1')   break;   else if(t=='2')   break;   }   if(t=='2')   break;   }   else   {   toxy(36,10);   printf("没有找到这道菜,请检查您输入的菜名是否正确!");   Sleep(1500);   }   }while(1);  }      void Order_Form(int ID,int number)//订单  {   do   {   system("cls");   int i=10;   char t;   float totalPrice=0;   float actualPayment=0;   pOrder p=orderHead;   pUser q,head;   pTable T,Thead;   q=head;   if(orderHead==NULL)   {   toxy(26,8);   printf("您还没有点任何东西,赶紧去点吧!(按任意键返回)");   getch();   break;   }   else   {   toxy(26,6);   printf("我的订单");   toxy(22,8);   printf("菜品名称tt价格");   toxy(20,9);   printf("***************************");   while(p!=NULL)   {   toxy(22,i);   printf("%-18s%.2f",p->name,p->price);   i++;   totalPrice+=p->price;   p=p->next;   }   head=readUserFile();   q=head;   toxy(20,i);   printf("***************************");   while(q!=NULL&&strcmp(q->userName,_userName)!=0)   {   q=q->next;   }   if(q)   {   toxy(24,++i);   printf("总价: %.2f",totalPrice);   if(q->isVIP)   actualPayment=totalPrice*0.85;   else   actualPayment=totalPrice;   toxy(24,++i);   printf("实付: %.2f",actualPayment);   }   toxy(22,++i);   printf("1.确认支付 2.取消订单 3.返回");   while(1)   {   t=getch();   if(t=='1'||t=='2'||t=='3')   break;   }   if(t=='1')   {   Thead=readTableFile();   T=Thead;   while(T!=NULL&&T->ID!=ID)   {   T=T->next;   }   toxy(24,++i);   printf("正在支付....");   if(q->money>=actualPayment)   {   q->money-=actualPayment;   T->People+=number;   Updata_User(head);   Updata_Table(Thead);   Sleep(1500);   system("cls");   toxy(24,10);   printf("支付成功!按任意键返回");   orderHead=NULL;   getch();   break;   }   else   {   Sleep(1500);   system("cls");   toxy(24,10);   printf("余额不足!按任意键返回");   getch();   break;   }   }   else if(t=='2')   {   orderHead=NULL;   break;   }   else if(t=='3')   break;   }   }while(1);  }      void User_List_Table()//餐桌列表  {   system("cls");   pTable p,head;   head=readTableFile();   p=head;   int i=11;   toxy(32,6);   printf("餐桌列表(按任意键继续)");   toxy(22,8);   printf("餐桌编号 | 可坐人数 | 已坐人数");   toxy(20,9);   printf("--------------------------------------");   while(p!=NULL)   {   toxy(26,i);   printf("%-10d%-10d%d",p->ID,p->count,p->People);   i++;   p=p->next;   }   getch();  }      void Apply_VIP_Menu()//办理会员  {   char t; //t用于选择    do   {   system("cls");   system("color 75");   HideCursor(0);   pUser head=readUserFile();//从文件中读取用户信息,返回一个表头地址   toxy(32,6);   printf("会员办理");   toxy(30,8);   printf("1) 充值 ");   toxy(30,10);   printf("2) 办理会员");   toxy(30,12);   printf("3) 返回");    t=getch();   switch(t)   {   case '1':Add_money(head);break;   case '2':Apply_VIP(head);break;   case '3':break;   default :break;   }   if(t=='3')//如果输入3,则跳出循环,该函数生命周期结束,回到上一级菜单    break;   }while(1);  }      void Add_money(pUser head)//充值  {   float money;//输入要充值的钱    pUser p;   p=head;//head为从 上一级菜单传过来的参数,为用户信息链表的头结点    while(p!=NULL&&strcmp(p->userName,_userName)!=0)//遍历链表,寻找当前登录账户的信息    {   p=p->next;   }   while(1)   {   system("cls");   system("color 76");   toxy(32,6);   printf("南航餐饮充值中心");   if(p!=NULL)   {   if(p->isVIP==0)//如果不是会员    {   toxy(20,8);   printf("对不起,您还不是会员,请先办理会员后再来充值!");   toxy(32,10);   printf("请按任意键返回!");   break;   }   else if(p->isVIP==1)//如果是会员    {   HideCursor(1);   toxy(32,8);   printf("请输入充值金额(一次不少于200):");   scanf("%f",&money);   if(money>=200)//如果充值金额大于200    {   p->money+=money;   toxy(32,10);   printf("正在充值....");   Updata_User(head);//更新用户表    toxy(32,10);   printf("充值成功 ");    toxy(32,12);   printf("请按任意键返回!");   break;   }   else//如果充值金额小于200   {   toxy(32,10);   printf("一次至少充值200元!");   Sleep(1500);   continue;   }   }   }   }   getch();  }      void Apply_VIP(pUser head)//办理会员  {   system("cls");   system("color 76");   pUser p=head;//head为从 上一级菜单传过来的参数,为用户信息链表的头结点   char t;   float money;   toxy(32,6);   printf("南航餐饮会员办理中心");   while(p!=NULL&&strcmp(p->userName,_userName)!=0)//遍历链表,寻找当前登录账户的信息   {   p=p->next;   }   do   {   if(p!=NULL)   {   if(p->isVIP==1)//如果已经是会员    {   toxy(20,8);   printf("您已是本店尊贵会员,无需再次办理!");   toxy(32,10);   printf("请按任意键返回!");   getch();   break;   }   else if(p->isVIP==0)//如果还没办理会员    {   toxy(30,8);   printf("提示:");   toxy(30,9);   printf("1.办理会员至少充值500");   toxy(30,10);   printf("2.冲500送200,冲1000送500");    toxy(32,12);   printf("是否确认办理会员?");   toxy(32,13);   printf("1.是t2.否");   while(1)   {   t=getch();   if(t=='1')   break;   else if(t=='2')   break;   }   if(t=='1')   {   while(1)   {   system("cls");   HideCursor(1);   toxy(32,10);   printf("请输入充值金额:");   scanf("%f",&money);   if(money>=500&&money<1000)   {   money+=200;   p->money+=money;   p->isVIP=1;   Updata_User(head);   toxy(32,12);   printf("恭喜,您已成为本店尊贵会员!");   toxy(32,14);   printf("请按任意键返回主菜单");   getch();   User_Menu();    }   else if(money>=1000)   {   money+=500;   p->money+=money;   p->isVIP=1;   Updata_User(head);   toxy(32,12);   printf("恭喜,您已成为本店尊贵会员!");   toxy(32,14);   printf("请按任意键返回主菜单");   getch();   User_Menu();    }   else   {   toxy(32,12);   printf("办理会员至少充值500");   Sleep(2000);   }   }   }   else if(t=='2')   break;   }   }   }while(1);  }      void Updata_User(pUser head)//更新文件   {   FILE *fp;   pUser p=head->next;    //使p指向第二个结点    fp=fopen("User.txt","w");   //先清空原文件内容再将修改后的信息写入文件    if(fp==NULL)   {   printf("cannot open filen");   }   if(fwrite(head,M,1,fp)!=1)   //将head所指向的数据写入fp所指向的文件    {   printf("file write errorn");   }   fclose(fp);    //关闭文件    fp=fopen("User.txt","a");  // 打开User.txt文件,方式为追加    while(p!=NULL)   //p不为空就执行循环体    {   if(fwrite(p,M,1,fp)!=1)  //将p所指向的1个大小为N的数据结构写入fp所指向的文件    {   printf("file write errorn");   }   p=p->next;   //使p指向下一个结点    }   fclose(fp);  //关闭文件   }      void Amend_passWord()//修改密码  {   system("cls");  //清屏    HideCursor(0); //隐藏光标,看着更舒服    pUser p,head;    head=readUserFile();   do   {   p=head;   char password[18],newpassword[18],t,k,*q1,*q2;   int i=0;   toxy(34,5);  //将光标移动到坐标为(50,5)的位置    printf("南航餐饮点餐系统");   toxy(34,8);   printf("修改密码");   toxy(32,10);   printf("请输入旧密码:");   q1=HidePassword();   strcpy(password,q1);   toxy(32,12);   printf("请输入新密码:");   q2=HidePassword();   strcpy(newpassword,q2);   while(p!=NULL&&strcmp(p->userName,_userName)!=0)//遍历链表,寻找当前登陆账户的账号    {   p=p->next;   }   if(p!=NULL)   //如果p不为空    {   if(strcmp(p->passWord,password)==0)  //如果旧密码输入正确    {   strcpy(p->passWord,newpassword);  //将旧密码改为新密码    break;     //跳出循环    }   else      //如果旧密码输入错误    {   system("cls");   toxy(30,8);   printf("--------------------------");   toxy(30,9);   printf("|   |");   toxy(30,10);   printf("| 密码错误!是否继续? |");   toxy(30,11);   printf("|   |");   toxy(30,12);   printf("| 1.是  2.否 |");   toxy(30,13);   printf("|   |");   toxy(30,14);   printf("--------------------------");   while(1)   {   t=getch();    //输入t    if(t=='1')   {   system("cls");   break;   }   else if(t=='2')   User_Menu();   }   }   }   }while(1);    //永远为真    Updata_User(head);//修改密码    toxy(32,14);   printf("修改成功!正在跳转...");   Sleep(500); //暂停0.5秒   }      void User_Wallet()//我的钱包  {   system("cls");   system("color 78");   pUser p,head;   head=readUserFile();   p=head;   while(p!=NULL&&strcmp(p->userName,_userName)!=0)   {   p=p->next;   }   if(p!=NULL)   {   toxy(32,10);   printf("账户余额为:%.2f",p->money);   toxy(32,12);   printf("请按任意键返回");   }   getch();  }      void Change()//切换账号   {   system("cls");   Default();  }     void Exit()//退出点餐系统   {   char t;   toxy(30,10);   printf("-----------------------");   toxy(30,11);   printf("| 您确定要退出吗? |");   toxy(30,13);   printf("| 1.确定 2.取消 |");   toxy(30,14);   printf("-----------------------");   while(1)   {   t=getch();  //输入t   switch(t)   {   case '1':   system("cls");   toxy(32,10);   printf("正在安全退出....");   Sleep(1000); //暂停1秒    system("cls");   toxy(32,10);   printf("已安全退出软件");   toxy(32,12);   printf("谢谢使用!");   toxy(32,14);   printf("by-by^_^");   exit(0); break; //终止程序    case '2':   break; //调用函数,进入菜单    default :break;   }   if(t=='2')   break;   }   }      void Administrator_Menu()//管理员菜单  {   char t;//用于选择菜单选项    do   {    system("cls");   HideCursor(0); //隐藏光标    system("color 74");   toxy(32,3);   printf("南航餐饮管理系统!");   toxy(32,4);   printf("当前管理员:%s",_userName);   toxy(30,5);   printf("*********************");   toxy(32,7);   printf("| 1.菜品 信息 |");   toxy(32,9);   printf("| 2.餐桌 管理 |");   toxy(32,11);   printf("| 3.查看 用户 |");   toxy(32,13);   printf("| 4.本店 会员 |");   toxy(32,15);   printf("| 5.设置管理员 |");    toxy(32,17);   printf("| 6.修改 密码 |");   toxy(32,19);   printf("| 7.切换 账号 |");    toxy(32,21);   printf("| 8.退出 系统 |");    t=getch();//不回显函数,输入一个值    switch(t)   {   case '1':Food();break;   case '2':Table();break;   case '3':Check_User();break;   case '4':All_VIP();break;   case '5':Setup_administrator();break;   case '6':Amend_passWord();break;   case '7':Change();break;   case '8':Exit();break;   default :break;    }   }while(1);//永远 为真   }      void Administrator_Login()//管理员登录   {   char *q,t,c;//q指针用于接收 *HidePassword()函数返回的指向密码的指针,t和c均用于选择    pUser p=readUserFile();//从文件中读取用户信息,返回一个表头地址    do   {   HideCursor(1);//显示管光标    system("cls");//清屏    system("color 73");//设置颜色    toxy(28,8);   printf("南航餐饮管理员登录界面");   toxy(26,9);   printf("-----------------------------");   toxy(32,11);   printf("用户名:");   toxy(32,13);   printf("密 码:");   toxy(40,11);   scanf("%s",_userName);   toxy(40,13);   q=HidePassword();//输入密码    strcpy(_passWord,q);//将获得的密码复制给_passWord[]数组    while(p!=NULL&&strcmp(p->userName,_userName)!=0) //遍历链表,寻找当前输入的账户的账号    {   p=p->next;   }   if(p!=NULL) //如果p不为空    {   if(strcmp(p->passWord,_passWord)==0&&p->isAdministrator==1) //如果输入的密码正确    {   toxy(32,16);   printf("正在登陆....");   Sleep(500); //暂停0.5秒   system("cls");   toxy(32,10);   printf("登陆成功!");   break; //跳出循环   }   else //如果输入的密码错误   {    toxy(32,16);   printf("正在登陆....");   Sleep(500);   system("cls");   toxy(30,8);   printf("-------------------------");   toxy(30,9);   printf("|   |");   toxy(30,10);   printf("| 密码错误!是否继续? |");   toxy(30,12);   printf("| 1.是  2.否 |");   toxy(30,13);   printf("|   |");   toxy(30,14);   printf("-------------------------");   while(1)//无限循环为防止其他按键干扰    {   t=getch(); //输入t    if(t=='1')     {   system("cls"); //清屏    break;   }   else if(t=='2') //如果输入t为n,进入开始界面    {   system("cls"); //清屏   Default();break;   }   }   }    }   else  //如果p为空,即输入的账号不正确    {    toxy(32,16);    printf("正在登陆....");    Sleep(500);    system("cls");    toxy(30,8);    printf("-------------------------");    toxy(30,9);    printf("|   |");   toxy(30,10);   printf("| 账号错误!是否继续? |");   toxy(30,11);   printf("|   |");   toxy(30,12);   printf("| 1.是  2.否 |");    toxy(30,13);   printf("|   |");   toxy(30,14);   printf("-------------------------");   while(1) //死循环防止其他按键干扰    {   c=getch();   if(c=='1')   {    system("cls");   break;   }   else if(c=='2')   {   system("cls"); //清屏   Default();   }   }   }   }while(1);   Sleep(500); //暂停0.5秒    Administrator_Menu();  //账号密码均正确,进入管理员主菜单    }      void Food()//菜品信息  {   system("color 74");   char t;   do   {   system("cls");   toxy(32,6);   printf("菜品信息");   toxy(28,7);   printf("-----------------");   toxy(30,9);   printf(" 1) 添加菜单");   toxy(30,11);   printf(" 2) 菜单列表");   toxy(30,13);   printf(" 3) 返回上一级");   t=getch();   switch(t)   {   case '1':Add_Food();break;   case '2':List_Food();break;   case '3':break;   default :break;    }   if(t=='3')   break;    }while(1);  }     void save_stapleFood(pStapleFood p)//保存主食信息   {   FILE *fp; //文件指针    fp=fopen("StapleFood.txt","a+"); //以追加的方式打开文件    if(fp==NULL)   {   printf("cannot open filen");   }   if(fwrite(p,N,1,fp)!=1) //将p1所指向的1个大小为N的数据结构写入fp所指向的文件中    {   printf("file write errorn");   }   fclose(fp); //关闭文件   }      void save_non_stapleFood(pNon_stapleFood p)//保存副食信息  {   FILE *fp; //文件指针    fp=fopen("non_StapleFood.txt","a+"); //以追加的方式打开文件    if(fp==NULL)   {   printf("cannot open filen");   }   if(fwrite(p,P,1,fp)!=1) //将p1所指向的1个大小为N的数据结构写入fp所指向的文件中    {   printf("file write errorn");   }   fclose(fp); //关闭文件   }      void save_drinkBeverage(pDrinkBeverage p)//保存饮品信息  {   FILE *fp; //文件指针    fp=fopen("DrinkBeverage.txt","a+"); //以追加的方式打开文件    if(fp==NULL)   {   printf("cannot open filen");   }   if(fwrite(p,Q,1,fp)!=1) //将p1所指向的1个大小为N的数据结构写入fp所指向的文件中    {   printf("file write errorn");   }   fclose(fp); //关闭文件   }      pStapleFood readStapleFoodFile()//从主食文件中读取用户信息,返回一个表头地址   {   FILE *fp; //文件指针    int n=0;//记录链表 的结点数    pStapleFood head=NULL;//定义头指针    pStapleFood p2,p,pre;   fp=fopen("StapleFood.txt","a+"); //以只读的方式打开文件    if(fp==NULL)   {   printf("cannot open filen");   }   else   {   while(!feof(fp)) //判断文件位置标志是否移动到文件末尾    {   n++;   p=(pStapleFood)malloc(N); //向内存申请一段空间    fread(p,N,1,fp); //将fp所指向的文件中的内容赋给p   if(n==1)   {   head=p;   p2=p;   }   else  //创建链表    {   pre=p2;   p2->next=p;   p2=p;   }   }   p2->next=NULL;   }   if(n<=2)   head->next=NULL;   else   pre->next=NULL;   fclose(fp); //关闭文件    return head; //返回头指针   }     pNon_stapleFood readNonStapleFoodFile()//从副食文件中读取用户信息,返回一个表头地址  {   FILE *fp; //文件指针    int n=0;//记录链表 的结点数    pNon_stapleFood head=NULL;//定义头指针    pNon_stapleFood p2,p,pre;   fp=fopen("non_StapleFood.txt","a+"); //以只读的方式打开文件    if(fp==NULL)   {   printf("cannot open filen");   }   else   {   while(!feof(fp)) //判断文件位置标志是否移动到文件末尾    {   n++;   p=(pNon_stapleFood)malloc(P); //向内存申请一段空间    fread(p,P,1,fp); //将fp所指向的文件中的内容赋给p   if(n==1)   {   head=p;   p2=p;   }   else  //创建链表    {   pre=p2;   p2->next=p;   p2=p;   }   }   p2->next=NULL;   }   if(n<=2)   head->next=NULL;   else   pre->next=NULL;   fclose(fp); //关闭文件    return head; //返回头指针   }     pDrinkBeverage readDrinkBeverageFile()//从饮品文件中读取用户信息,返回一个表头地址  {   FILE *fp; //文件指针    int n=0;//记录链表 的结点数    pDrinkBeverage head=NULL;//定义头指针    pDrinkBeverage p2,p,pre;   fp=fopen("DrinkBeverage.txt","a+"); //以只读的方式打开文件    if(fp==NULL)   {   printf("cannot open filen");   }   else   {   while(!feof(fp)) //判断文件位置标志是否移动到文件末尾    {   n++;   p=(pDrinkBeverage)malloc(Q); //向内存申请一段空间    fread(p,Q,1,fp); //将fp所指向的文件中的内容赋给p   if(n==1)   {   head=p;   p2=p;   }   else  //创建链表    {   pre=p2;   p2->next=p;   p2=p;   }   }   p2->next=NULL;   }   if(n<=2)   head->next=NULL;   else   pre->next=NULL;   fclose(fp); //关闭文件    return head; //返回头指针   }     void Add_Food() //添加菜单  {   HideCursor(1);//显示光标    pStapleFood p1;//主食    pNon_stapleFood p2;//副食   pDrinkBeverage p3;//饮品    char name[20];   float price=0;   int type=1;   char t;   do   {   system("cls");   p1=(pStapleFood)malloc(N);   p2=(pNon_stapleFood)malloc(P);   p3=(pDrinkBeverage)malloc(Q);   toxy(30,6);   printf("请输入菜名:");   toxy(30,8);   printf("请输入价格:");   toxy(30,10);   printf("请输入类型:");   toxy(30,12);   printf("(1:主食 2.副食 3.饮品)");   toxy(42,6);   scanf("%s",name);   toxy(42,8);   scanf("%f",&price);   toxy(42,10);   scanf("%d",&type);   if(type==1)   {   strcpy(p1->name,name);   p1->price=price;   save_stapleFood(p1);   }   else if(type==2)   {   strcpy(p2->name,name);   p2->price=price;   save_non_stapleFood(p2);   }   else if(type==3)   {   strcpy(p3->name,name);   p3->price=price;   save_drinkBeverage(p3);   }   toxy(28,14);   printf("添加成功!是否继续?(1.是 2.否)");   while(1)   {   t=getch();   if(t=='1')   break;   else if(t=='2')   break;   }   if(t=='2')   break;   }while(1);     }      void List_Food() //菜单列表  {   system("cls");   int i=8;   toxy(30,4);   printf("菜单列表(按任意键继续)");   pStapleFood p1;//主食    pNon_stapleFood p2;//副食   pDrinkBeverage p3;//饮品    p1=readStapleFoodFile();//从主食文件中读取用户信息,返回一个表头地址    p2=readNonStapleFoodFile();//从副食文件中读取用户信息,返回一个表头地址    p3=readDrinkBeverageFile();//从饮品文件中读取用户信息,返回一个表头地址    toxy(26,6);   printf("菜名ttt价格");   toxy(20,7);   printf("-----------------------------------");   toxy(24,i);   printf("主食:");   i++;   while(p1!=NULL)   {   toxy(26,i);   printf("%-22s%.2f",p1->name,p1->price);   i++;   p1=p1->next;   }   toxy(24,i);   printf("副食:");   i++;   while(p2!=NULL)   {   toxy(26,i);   printf("%-22s%.2f",p2->name,p2->price);   i++;   p2=p2->next;   }   toxy(24,i);   printf("饮品:");   i++;   while(p3!=NULL)   {   toxy(26,i);   printf("%-22s%.2f",p3->name,p3->price);   i++;   p3=p3->next;   }   getch();  }      void Table()//餐桌管理  {   char t;   do   {   system("cls");   HideCursor(0);   toxy(32,4);   printf("餐桌管理");   toxy(26,5);   printf("-------------------");   toxy(30,7);   printf("1) 添加餐桌");   toxy(30,9);   printf("2) 餐桌列表");   toxy(30,11);   printf("3) 清理餐桌");   toxy(30,13);   printf("4) 返回上一级");   t=getch();   switch(t)   {   case '1':Add_Table();break;   case '2':Administrator_List_Table();break;   case '3':Clear_Table();break;   case '4':break;   default :break;   }   if(t=='4')   break;   }while(1);  }      void save_Table(pTable p)//保存餐桌信息  {   FILE *fp; //文件指针    fp=fopen("Table.txt","a+"); //以追加的方式打开文件    if(fp==NULL)   {   printf("cannot open filen");   }   if(fwrite(p,X,1,fp)!=1) //将p1所指向的1个大小为N的数据结构写入fp所指向的文件中    {   printf("file write errorn");   }   fclose(fp); //关闭文件   }      pTable readTableFile()//从餐桌文件中读取用户信息,返回一个表头地址  {   FILE *fp; //文件指针    int n=0;//记录链表 的结点数    pTable head=NULL;//定义头指针    pTable p2,p,pre;   fp=fopen("Table.txt","a+"); //以只读的方式打开文件    if(fp==NULL)   {   printf("cannot open filen");   }   else   {   while(!feof(fp)) //判断文件位置标志是否移动到文件末尾    {   n++;   p=(pTable)malloc(X); //向内存申请一段空间    fread(p,X,1,fp); //将fp所指向的文件中的内容赋给p   if(n==1)   {   head=p;   p2=p;   }   else  //创建链表    {   pre=p2;   p2->next=p;   p2=p;   }   }   p2->next=NULL;   }   if(n<=2)   head->next=NULL;   else   pre->next=NULL;   fclose(fp); //关闭文件    return head; //返回头指针   }     void Add_Table()//添加餐桌   {   HideCursor(1);//显示光标    pTable p,p1;   p1=readTableFile();    char t;   int ID;   int count;   do   {   system("cls");   p=(pTable)malloc(X);   toxy(26,6);   printf("请输入餐桌编号:");   toxy(26,8);   printf("请输入可坐人数:");   toxy(42,6);   scanf("%d",&ID);   toxy(42,8);   scanf("%d",&count);   while(p1!=NULL&&p1->ID!=ID)   {   p1=p1->next;   }   if(p1!=NULL)   {   toxy(30,10);   printf("该餐桌编号已存在,请重新输入!");   Sleep(2000);   continue;   }   p->ID=ID;   p->People=0;   p->count=count;   strcpy(p->Username,"无");   save_Table(p);   toxy(24,10);   printf("添加成功!是否继续?(1.是 2.否)");   while(1)   {   t=getch();   if(t=='1')   break;   else if(t=='2')   break;   }   if(t=='2')   break;   }while(1);  }     void Administrator_List_Table()//餐桌列表  {   system("cls");   pTable p,head;   head=readTableFile();   p=head;   int i=11;   toxy(32,6);   printf("餐桌列表(按任意键继续)");   toxy(22,8);   printf("餐桌编号 | 可坐人数 | 已坐人数 | 订餐人");   toxy(20,9);   printf("--------------------------------------------");   while(p!=NULL)   {   toxy(26,i);   printf("%-10d%-10d%-10d%s",p->ID,p->count,p->People,p->Username);   i++;   p=p->next;   }   getch();  }      void Clear_Table()//清理餐桌  {   char t;   do   {   system("cls");   toxy(32,4);   printf("清理餐桌");   toxy(26,5);   printf("-------------------");   toxy(30,7);   printf("1) 清理指定餐桌");   toxy(30,9);   printf("2) 清理所有餐桌");   toxy(30,11);   printf("3) 返回上一级");   t=getch();   switch(t)   {   case '1':Clear_oneTable();break;   case '2':Clear_allTable();break;   case '3':break;   default :break;   }   if(t=='3')   break;   }while(1);  }      void Updata_Table(pTable head)//更新餐桌文件  {   FILE *fp;   pTable p=head->next;    //使p指向第二个结点    fp=fopen("Table.txt","w");   //先清空原文件内容再将修改后的信息写入文件    if(fp==NULL)   {   printf("cannot open filen");   }   if(fwrite(head,X,1,fp)!=1)   //将head所指向的数据写入fp所指向的文件    {   printf("file write errorn");   }   fclose(fp);    //关闭文件    fp=fopen("Table.txt","a");  // 打开User.txt文件,方式为追加    while(p!=NULL)   //p不为空就执行循环体    {   if(fwrite(p,X,1,fp)!=1)  //将p所指向的1个大小为N的数据结构写入fp所指向的文件    {   printf("file write errorn");   }   p=p->next;   //使p指向下一个结点    }   fclose(fp);  //关闭文件   }      void Clear_oneTable()//清理指定餐桌  {   int ID;   pTable p,head;   char t;   do   {   system("cls");   head=readTableFile();   p=head;   toxy(28,8);   printf("请输入您要清理的餐桌编号:");   scanf("%d",&ID);   while(p!=NULL&&p->ID!=ID)   {   p=p->next;   }   if(p)   {   toxy(32,10);   printf("正在清理....");   p->People=0;   strcpy(p->Username,"无");   Updata_Table(head);   Sleep(2000);   toxy(24,10);   printf("清理成功!是否继续?1.是 2.否");   while(1)   {   t=getch();   if(t=='1')   break;   else if(t=='2')   break;   }   if(t=='2')   break;   }   else   {   toxy(32,10);   printf("该餐桌不存在!请重新输入");   Sleep(1500);   }   }while(1);  }      void Clear_allTable()//清理所有餐桌  {   system("cls");   toxy(32,10);   printf("正在清理....");   pTable p,head;   head=readTableFile();   p=head;   while(p!=NULL)   {   p->People=0;   strcpy(p->Username,"无");   p=p->next;   }   Updata_Table(head);   Sleep(2000);   toxy(32,10);   printf("清理成功!按任意键继续");   getch();  }      void Check_User()//查看用户  {   char t;   do   {   system("cls");   system("color 79");   toxy(32,6);   printf(" 查看用户 ");   toxy(32,7);   printf("----------------");   toxy(32,9);   printf(" 1) 查找用户 ");   toxy(32,11);   printf(" 2) 所有用户 ");   toxy(32,13);   printf(" 3)返回上一级");   t=getch();   switch(t)   {   case '1':Find_User();break;   case '2':All_User();break;   case '3':break;   default :break;   }   if(t=='3')   break;   }while(1);   }      void Find_User()//查找用户  {   system("cls");   char username[10];   pUser p, head=readUserFile();   p=head;   toxy(32,10);   printf("请输入您要查找的用户名:");   scanf("%s",username);   toxy(24,12);   printf("用户名tt余额tt会员状态");   while(p!=NULL&&strcmp(p->userName,username)!=0)   p=p->next;   if(p!=NULL)   {   toxy(24,14);   printf("%stt%.2ftt%d",p->userName,p->money,p->isVIP);   }   else   {   toxy(28,14);   printf("没有找到相关信息");   }   toxy(30,16);   printf("请按任意键返回");   getch();  }      void All_User()//打印所有用户信息  {   system("cls");   pUser p,head;   head=readUserFile();   p=head;   int i=9;   toxy(32,4);   printf("所有用户");   toxy(20,5);   printf("--------------------------------------------------");   toxy(30,6);   printf("按任意键返回");   toxy(24,7);   printf("用户名tt余额tt会员状态");   while(p!=NULL)   {   toxy(24,i);   printf("%stt%.2ftt%d",p->userName,p->money,p->isVIP);   p=p->next;   i+=2;   }   getch();  }      void All_VIP()//查看所有VIP   {   system("cls");   system("color 79");   pUser p,head;   head=readUserFile();   p=head;   int i=11;   toxy(32,6);   printf("本店会员");   toxy(26,8);   printf("用户名tt余额");   toxy(24,9);   printf("--------------------------------");   while(p!=NULL)   {   if(p->isVIP)   {   toxy(26,i);   printf("%sttt%.2f",p->userName,p->money);   i+=2;   }   p=p->next;   }   toxy(30,i);   printf("按任意键返回");   getch();  }     void Setup_administrator()//设置管理员  {      system("color 80");   char t;   char username[10];   pUser p,head;   head=readUserFile();   do   {   system("cls");   p=head;   toxy(26,8);   printf("请输入您要设置为管理员的用户名:");   scanf("%s",username);   while(p!=NULL&&strcmp(p->userName,username)!=0)   {   p=p->next;   }   if(p!=NULL)   {   p->isAdministrator=1;   Updata_User(head);   toxy(32,10);   printf("设置成功!请按任意键返回");   getch();   break;   }   else   {   toxy(24,10);   printf("您所输入的用户名不存在!是否继续?(1.是 2.否)");   while(1)   {   t=getch();   if(t=='1')   break;   else if(t=='2')   break;   }   if(t=='2')   break;   }   }while(1);   }         int main()  {    Default();//进入欢迎界面    return 0;  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<计算机技术网(www.ctvol.com)!!>。

—-想了解C语言实现餐饮点餐管理系统分享!全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

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

ctvol管理联系方式QQ:251552304

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

(0)
上一篇 2020年11月9日
下一篇 2020年11月9日

精彩推荐