欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實現(xiàn)簡單餐飲管理與點餐系統(tǒng)

 更新時間:2022年05月30日 08:44:29   作者:Sriven  
這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單餐飲管理與點餐系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)餐飲管理與點餐系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

/*
?? ?項目名稱:南航餐飲管理系統(tǒng)
?? ?組員:梁文新,劉青林,劉藝,施瑞文(組長)
*/
?
?
//當注冊用戶名為:root,密碼為:root的賬號時,系統(tǒng)默認為初始管理員
?
//頭文件?
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#include<windows.h>
#include<string.h>
?
?
//宏定義區(qū)
#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)//訂單表大小?
?
//結(jié)構(gòu)體
?
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;//已坐人數(shù)
?? ?int count;//可容納人數(shù)
?? ?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;
?
?
//自定義函數(shù)區(qū)
?
?? ?//用戶客戶端?
?
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();//設(shè)置管理員?
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();//餐桌列表?
?
?
?? ?//公共函數(shù)
void toxy(int x,int y);//將光標移動到x,y坐標處
void HideCursor(int x);//隱藏光標?
char *HidePassword();//隱藏密碼?
void Exit();//退出系統(tǒng) ?
void Change();//切換賬號?
void Amend_passWord();//修改密碼?
void List_Food();//菜單列表?
?
//全局變量區(qū)
char _userName[10];?
char _passWord[18];//記錄當前用戶?
pOrder orderHead=NULL,p2=NULL;//記錄當前用戶的訂單?
int num=0;
?
//函數(shù)實現(xiàn)區(qū)
?
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) ? ?//死循環(huán)為防止其他按鍵干擾?
?? ??? ?{
?? ??? ??? ?t=getch();//不回顯函數(shù)?
?? ??? ??? ?if(t=='1')//如果按1,則進入登錄界面?
?? ??? ??? ??? ?User_Login();
?? ??? ??? ?else if(t=='2')//如果按2,則進入注冊界面?
?? ??? ??? ??? ?Logon();
?? ??? ??? ?else if(t=='3')
?? ??? ??? ??? ?Administrator_Login();
?? ??? ?}//如果既不是1也不是2和3,則循環(huán)輸入?
?? ?}while(1);//永遠為真?
?? ?
}?
?
void User_Menu()//用戶菜單?
{
?? ?
?? ?char t;//用于選擇菜單選項?
?? ?do
?? ?{?? ?
?? ??? ?system("cls");
?? ??? ?HideCursor(0); //隱藏光標?
?? ??? ?system("color 74");
?? ??? ?toxy(32,3);
?? ??? ?printf("南航餐飲點餐系統(tǒng)!");
?? ??? ?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ǒng) ?|");
?? ??? ?t=getch();//不回顯函數(shù),輸入一個值?
?? ??? ?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;//記錄密碼位數(shù)?
?? ?char t;//輸入密碼?
?? ?for(;;) ? ? ? ? ? ? ?//此處為輸入密碼不回顯操作?
?? ??? ?{
?? ??? ??? ?t=getch(); ? ? ? //輸入k?
?? ??? ??? ?if(t=='\r') ? ? ?//如果輸入k為回車,則跳出循環(huán)?
?? ??? ??? ?{
?? ??? ??? ??? ?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++; ? ? ? ? ? ? ?//密碼位數(shù)加1?
?? ??? ??? ?}
?? ??? ?}
?? ??? ?password[i]='\0';//在數(shù)組末端加一個結(jié)束符?
?? ??? ?p=password;//讓p指向該數(shù)組?
?? ??? ?return p; //返回一個指向密碼的指針?
}?
?
pUser readUserFile()//從文件中讀取用戶信息,返回一個表頭地址?
{
?? ?FILE *fp; ? ? ? //文件指針?
?? ?int n=0;//記錄鏈表 的結(jié)點數(shù)?
?? ?pUser head=NULL;//定義頭指針?
?? ?pUser p2,p,pre;
?? ?fp=fopen("User.txt","a+"); ? ? //以只讀的方式打開文件?
?? ?if(fp==NULL)
?? ?{
?? ??? ?printf("cannot open file\n");
?? ?}
?? ?else
?? ?{
?? ??? ?while(!feof(fp)) ? ? ? ?//判斷文件位置標志是否移動到文件末尾?
?? ??? ?{
?? ??? ? ? ?n++;
?? ??? ??? ?p=(pUser)malloc(M); //向內(nèi)存申請一段空間?
?? ??? ? ? fread(p,M,1,fp); ? ? //將fp所指向的文件中的內(nèi)容賦給p
?? ??? ? ? if(n==1)
?? ??? ? ? {
?? ??? ? ? ? ?head=p;
?? ??? ? ? ? ?p2=p;
?? ??? ? ? ?}
?? ??? ? ? ?else ? ? ? ? ? ? //創(chuàng)建鏈表?
?? ??? ? ? ?{
?? ??? ? ? ??? ?pre=p2;
?? ??? ? ? ??? ?p2->next=p;
?? ??? ? ? ??? ?p2=p;
?? ??? ??? ?}
?? ? ? ?}
?? ? ? ?p2->next=NULL;
?? ?}
?? ?if(n<=2)
?? ??? ?head->next=NULL;
?? ?else
?? ??? ?pre->next=NULL;
? ? fclose(fp); ? ?//關(guān)閉文件?
? ? return head; ? //返回頭指針?
}
?
void save_User(pUser p1) ? ? //將p1所指向的內(nèi)容存儲到文件中?
{
?? ?FILE *fp; ? ? ? //文件指針?
?? ?fp=fopen("User.txt","a+"); ? ?//以追加的方式打開文件?
?? ?if(fp==NULL)
?? ?{
?? ??? ?printf("cannot open file\n");
?? ?}
?? ?if(fwrite(p1,M,1,fp)!=1) ? ?//將p1所指向的1個大小為N的數(shù)據(jù)結(jié)構(gòu)寫入fp所指向的文件中?
?? ?{
?? ??? ?printf("file write error\n");
?? ?}
?? ?fclose(fp); ? ? ? ?//關(guān)閉文件?
}
?
void User_Login()//登錄頁面?
{?
?? ?char *q,t,c;//q指針用于接收 *HidePassword()函數(shù)返回的指向密碼的指針,t和c均用于選擇?
?? ?pUser p=readUserFile();//從文件中讀取用戶信息,返回一個表頭地址?
?? ?do
?? ?{
?? ??? ?HideCursor(1);//顯示管光標?
?? ??? ?system("cls");//清屏?
?? ??? ?system("color 73");//設(shè)置顏色?
?? ??? ?toxy(28,8);
?? ??? ?printf("南航餐飲管理系統(tǒng)登錄界面");
?? ??? ?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[]數(shù)組?
?? ??? ?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; ? ?//跳出循環(huán)
?? ??? ??? ?}
?? ??? ??? ?else ? ? ?//如果輸入的密碼錯誤
?? ??? ??? ?{?
?? ??? ??? ??? ?toxy(32,16);
?? ??? ??? ??? ?printf("正在登陸....");
?? ??? ??? ??? ?Sleep(500);
?? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ?toxy(30,8);
?? ??? ??? ??? ?printf("-------------------------");
?? ??? ??? ??? ?toxy(30,9);
?? ??? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |");
?? ??? ??? ??? ?toxy(30,10);
?? ??? ??? ??? ?printf("| 密碼錯誤!是否繼續(xù)? ?|");
?? ??? ??? ??? ?toxy(30,12);
?? ??? ??? ??? ?printf("| 1.是 ? ? ? ? ? ? 2.否 |");
?? ??? ??? ??? ?toxy(30,13);
?? ??? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |");
?? ??? ??? ??? ?toxy(30,14);
?? ??? ??? ??? ?printf("-------------------------");
?? ??? ??? ??? ?while(1)//無限循環(huán)為防止其他按鍵干擾?
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?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("| ?賬號錯誤!是否繼續(xù)? |");
?? ??? ??? ?toxy(30,11);
?? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |");
?? ??? ??? ?toxy(30,12);
?? ??? ??? ?printf("| ?1.是 ? ? ? ? ? ?2.否 |");?
?? ??? ??? ?toxy(30,13);
?? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |");
?? ??? ??? ?toxy(30,14);
?? ??? ??? ?printf("-------------------------");
?? ??? ??? ?while(1) ? ? ?//死循環(huán)防止其他按鍵干擾?
?? ??? ??? ?{
?? ??? ??? ??? ?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); ? ? //向內(nèi)存申請一段空間?
?? ?char *q1,*q2;//q1,q2分別用于接收 *HidePassword()函數(shù)返回的值?
?? ?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("南航餐飲管理系統(tǒng)注冊界面");
?? ??? ?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;//跳出循環(huán)?
?? ??? ??? ?}
?? ??? ??? ?p=p->next;
?? ??? ?}
?? ??? ?if(flag)//如果用戶名已存在?
?? ??? ?{
?? ??? ??? ?HideCursor(0);//隱藏光標?
?? ??? ??? ?toxy(32,19);
?? ??? ??? ?printf("是否繼續(xù)?");//詢問是否繼續(xù)?
?? ??? ??? ?toxy(32,21);
?? ??? ??? ?printf("1.是\t2.否");
?? ??? ??? ?while(1)
?? ??? ??? ?{
?? ??? ??? ??? ?t=getch();
?? ??? ??? ??? ?if(t=='1')
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?else if(t=='2')
?? ??? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?if(t=='1')//如果繼續(xù),則重新注冊?
?? ??? ??? ??? ?continue;
?? ??? ??? ?else if(t=='2')//如果不繼續(xù),則回到首頁?
?? ??? ??? ?{
?? ??? ??? ??? ?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; ? ? ? ? ? ? ?//跳出循環(huán)?
?? ??? ?}
?? ??? ?else ? ?//如果輸入的兩次密碼不同?
?? ??? ?{
?? ??? ??? ?toxy(32,16);
?? ??? ??? ?printf("正在注冊....");
?? ??? ??? ?Sleep(500);
?? ??? ??? ?system("cls");
?? ??? ??? ?toxy(30,8);
?? ??? ??? ?printf("------------------------------");
?? ??? ??? ?toxy(30,9);
?? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? ?|");
?? ??? ??? ?toxy(30,10);
?? ??? ??? ?printf("|兩次密碼不一致!是否繼續(xù)注冊?|");
?? ??? ??? ?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); ? ? //調(diào)用函數(shù),將p1所指向的內(nèi)容存儲到文件中?
?? ?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("餐桌列表(按任意鍵繼續(xù))");
?? ??? ??? ?toxy(2,8);
?? ??? ??? ?printf("餐桌編號 | 可坐人數(shù) | 已坐人數(shù)");
?? ??? ??? ?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("請選擇人數(shù):");
?? ??? ??? ?scanf("%d",&number);
?? ??? ??? ?T=Thead;
?? ??? ??? ?while(T!=NULL)
?? ??? ??? ?{
?? ??? ??? ??? ?if(T->ID==ID)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?if((T->count)-(T->People)>=number)
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?toxy(38,16);
?? ??? ??? ??? ??? ??? ?printf("占座成功!按任意鍵繼續(xù)點餐");
?? ??? ??? ??? ??? ??? ?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("是否繼續(xù) ?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("菜名\t\t\t價格");
?? ??? ?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("點餐成功!是否繼續(xù)?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("菜名\t\t\t價格");
?? ??? ?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("點餐成功!是否繼續(xù)?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("菜名\t\t\t價格");
?? ??? ?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("點餐成功!是否繼續(xù)?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("菜品名稱\t\t價格");
?? ??? ??? ?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("餐桌列表(按任意鍵繼續(xù))");
?? ?toxy(22,8);
?? ?printf("餐桌編號 | 可坐人數(shù) | 已坐人數(shù)");
?? ?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,則跳出循環(huán),該函數(shù)生命周期結(jié)束,回到上一級菜單?
?? ??? ??? ?break;
?? ?}while(1);
}?
?
void Add_money(pUser head)//充值
{
?? ?float money;//輸入要充值的錢?
?? ?pUser p;
?? ?p=head;//head為從 上一級菜單傳過來的參數(shù),為用戶信息鏈表的頭結(jié)點?
?? ?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為從 上一級菜單傳過來的參數(shù),為用戶信息鏈表的頭結(jié)點
?? ?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)//如果已經(jīng)是會員?
?? ??? ??? ?{
?? ??? ??? ??? ?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指向第二個結(jié)點?
?? ?fp=fopen("User.txt","w"); ? ? ? ? ? ? ? ? ?//先清空原文件內(nèi)容再將修改后的信息寫入文件?
?? ?if(fp==NULL)
?? ?{
?? ??? ?printf("cannot open file\n");
?? ?}
?? ?if(fwrite(head,M,1,fp)!=1) ? ? ? ? ? ? ? ? //將head所指向的數(shù)據(jù)寫入fp所指向的文件?
?? ?{
?? ??? ?printf("file write error\n");
?? ?}
?? ?fclose(fp); ? ? ? ? ? ? ? ? ? ? ? ? //關(guān)閉文件?
?? ?fp=fopen("User.txt","a"); ? ? ? ? ?// 打開User.txt文件,方式為追加?
?? ?while(p!=NULL) ? ? ? ? ? ? ? ? ? ?//p不為空就執(zhí)行循環(huán)體?
?? ?{
?? ??? ?if(fwrite(p,M,1,fp)!=1) ? ? ? ? ? ?//將p所指向的1個大小為N的數(shù)據(jù)結(jié)構(gòu)寫入fp所指向的文件?
?? ? ? ?{
?? ??? ??? ?printf("file write error\n");
?? ? ? ?}
?? ? ? ?p=p->next; ? ? ? ? ? ? ? ? ? ? //使p指向下一個結(jié)點?
?? ?}
?? ?fclose(fp); ? ? ? ? ? ? ?//關(guān)閉文件?
}?
?
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("南航餐飲點餐系統(tǒng)");
?? ??? ?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; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //跳出循環(huán)?
?? ??? ??? ?}
?? ??? ??? ?else ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //如果舊密碼輸入錯誤?
?? ??? ??? ?{
?? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ?toxy(30,8);
?? ??? ??? ??? ?printf("--------------------------");
?? ??? ??? ??? ?toxy(30,9);
?? ??? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ?|");
?? ??? ??? ??? ?toxy(30,10);
?? ??? ??? ??? ?printf("| ?密碼錯誤!是否繼續(xù)? ?|");
?? ??? ??? ??? ?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("修改成功!正在跳轉(zhuǎn)...");
?? ?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()//退出點餐系統(tǒng)?
{
?? ?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; ? //調(diào)用函數(shù),進入菜單?
?? ??? ??? ?default :break;
?? ??? ?}
?? ??? ?if(t=='2')
?? ??? ??? ?break;
?? ?}
?}?
?
void Administrator_Menu()//管理員菜單
{
?? ?char t;//用于選擇菜單選項?
?? ?do
?? ?{?? ?
?? ??? ?system("cls");
?? ??? ?HideCursor(0); //隱藏光標?
?? ??? ?system("color 74");
?? ??? ?toxy(32,3);
?? ??? ?printf("南航餐飲管理系統(tǒng)!");
?? ??? ?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.設(shè)置管理員 ?|");?
?? ??? ?toxy(32,17);
?? ??? ?printf("| ?6.修改 ?密碼 ?|");
?? ??? ?toxy(32,19);
?? ??? ?printf("| ?7.切換 ?賬號 ?|");?
?? ??? ?toxy(32,21);
?? ??? ?printf("| ?8.退出 ?系統(tǒng) ?|");?
?? ??? ?t=getch();//不回顯函數(shù),輸入一個值?
?? ??? ?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()函數(shù)返回的指向密碼的指針,t和c均用于選擇?
?? ?pUser p=readUserFile();//從文件中讀取用戶信息,返回一個表頭地址?
?? ?do
?? ?{
?? ??? ?HideCursor(1);//顯示管光標?
?? ??? ?system("cls");//清屏?
?? ??? ?system("color 73");//設(shè)置顏色?
?? ??? ?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[]數(shù)組?
?? ??? ?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; ? ?//跳出循環(huán)
?? ??? ??? ?}
?? ??? ??? ?else ? ? ?//如果輸入的密碼錯誤
?? ??? ??? ?{?
?? ??? ??? ??? ?toxy(32,16);
?? ??? ??? ??? ?printf("正在登陸....");
?? ??? ??? ??? ?Sleep(500);
?? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ?toxy(30,8);
?? ??? ??? ??? ?printf("-------------------------");
?? ??? ??? ??? ?toxy(30,9);
?? ??? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |");
?? ??? ??? ??? ?toxy(30,10);
?? ??? ??? ??? ?printf("| 密碼錯誤!是否繼續(xù)? ?|");
?? ??? ??? ??? ?toxy(30,12);
?? ??? ??? ??? ?printf("| 1.是 ? ? ? ? ? ? 2.否 |");
?? ??? ??? ??? ?toxy(30,13);
?? ??? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |");
?? ??? ??? ??? ?toxy(30,14);
?? ??? ??? ??? ?printf("-------------------------");
?? ??? ??? ??? ?while(1)//無限循環(huán)為防止其他按鍵干擾?
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?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("| ?賬號錯誤!是否繼續(xù)? |");
?? ??? ??? ?toxy(30,11);
?? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |");
?? ??? ??? ?toxy(30,12);
?? ??? ??? ?printf("| ?1.是 ? ? ? ? ? ?2.否 |");?
?? ??? ??? ?toxy(30,13);
?? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |");
?? ??? ??? ?toxy(30,14);
?? ??? ??? ?printf("-------------------------");
?? ??? ??? ?while(1) ? ? ?//死循環(huán)防止其他按鍵干擾?
?? ??? ??? ?{
?? ??? ??? ??? ?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 file\n");
?? ?}
?? ?if(fwrite(p,N,1,fp)!=1) ? ?//將p1所指向的1個大小為N的數(shù)據(jù)結(jié)構(gòu)寫入fp所指向的文件中?
?? ?{
?? ??? ?printf("file write error\n");
?? ?}
?? ?fclose(fp); ? ? ? ?//關(guān)閉文件?
}?
?
void save_non_stapleFood(pNon_stapleFood p)//保存副食信息
{
?? ?FILE *fp; ? ? ? //文件指針?
?? ?fp=fopen("non_StapleFood.txt","a+"); ? ?//以追加的方式打開文件?
?? ?if(fp==NULL)
?? ?{
?? ??? ?printf("cannot open file\n");
?? ?}
?? ?if(fwrite(p,P,1,fp)!=1) ? ?//將p1所指向的1個大小為N的數(shù)據(jù)結(jié)構(gòu)寫入fp所指向的文件中?
?? ?{
?? ??? ?printf("file write error\n");
?? ?}
?? ?fclose(fp); ? ? ? ?//關(guān)閉文件?
}?
?
void save_drinkBeverage(pDrinkBeverage p)//保存飲品信息
{
?? ?FILE *fp; ? ? ? //文件指針?
?? ?fp=fopen("DrinkBeverage.txt","a+"); ? ?//以追加的方式打開文件?
?? ?if(fp==NULL)
?? ?{
?? ??? ?printf("cannot open file\n");
?? ?}
?? ?if(fwrite(p,Q,1,fp)!=1) ? ?//將p1所指向的1個大小為N的數(shù)據(jù)結(jié)構(gòu)寫入fp所指向的文件中?
?? ?{
?? ??? ?printf("file write error\n");
?? ?}
?? ?fclose(fp); ? ? ? ?//關(guān)閉文件?
}?
?
pStapleFood readStapleFoodFile()//從主食文件中讀取用戶信息,返回一個表頭地址?
{
?? ?FILE *fp; ? ? ? //文件指針?
?? ?int n=0;//記錄鏈表 的結(jié)點數(shù)?
?? ?pStapleFood head=NULL;//定義頭指針?
?? ?pStapleFood p2,p,pre;
?? ?fp=fopen("StapleFood.txt","a+"); ? ? //以只讀的方式打開文件?
?? ?if(fp==NULL)
?? ?{
?? ??? ?printf("cannot open file\n");
?? ?}
?? ?else
?? ?{
?? ??? ?while(!feof(fp)) ? ? ? ?//判斷文件位置標志是否移動到文件末尾?
?? ??? ?{
?? ??? ? ? ?n++;
?? ??? ??? ?p=(pStapleFood)malloc(N); //向內(nèi)存申請一段空間?
?? ??? ? ? fread(p,N,1,fp); ? ? //將fp所指向的文件中的內(nèi)容賦給p
?? ??? ? ? if(n==1)
?? ??? ? ? {
?? ??? ? ? ? ?head=p;
?? ??? ? ? ? ?p2=p;
?? ??? ? ? ?}
?? ??? ? ? ?else ? ? ? ? ? ? //創(chuàng)建鏈表?
?? ??? ? ? ?{
?? ??? ? ? ??? ?pre=p2;
?? ??? ? ? ??? ?p2->next=p;
?? ??? ? ? ??? ?p2=p;
?? ??? ??? ?}
?? ? ? ?}
?? ? ? ?p2->next=NULL;
?? ?}
?? ?if(n<=2)
?? ??? ?head->next=NULL;
?? ?else
?? ??? ?pre->next=NULL;
? ? fclose(fp); ? ?//關(guān)閉文件?
? ? return head; ? //返回頭指針?
}
?
pNon_stapleFood readNonStapleFoodFile()//從副食文件中讀取用戶信息,返回一個表頭地址
{
?? ?FILE *fp; ? ? ? //文件指針?
?? ?int n=0;//記錄鏈表 的結(jié)點數(shù)?
?? ?pNon_stapleFood head=NULL;//定義頭指針?
?? ?pNon_stapleFood p2,p,pre;
?? ?fp=fopen("non_StapleFood.txt","a+"); ? ? //以只讀的方式打開文件?
?? ?if(fp==NULL)
?? ?{
?? ??? ?printf("cannot open file\n");
?? ?}
?? ?else
?? ?{
?? ??? ?while(!feof(fp)) ? ? ? ?//判斷文件位置標志是否移動到文件末尾?
?? ??? ?{
?? ??? ? ? ?n++;
?? ??? ??? ?p=(pNon_stapleFood)malloc(P); //向內(nèi)存申請一段空間?
?? ??? ? ? fread(p,P,1,fp); ? ? //將fp所指向的文件中的內(nèi)容賦給p
?? ??? ? ? if(n==1)
?? ??? ? ? {
?? ??? ? ? ? ?head=p;
?? ??? ? ? ? ?p2=p;
?? ??? ? ? ?}
?? ??? ? ? ?else ? ? ? ? ? ? //創(chuàng)建鏈表?
?? ??? ? ? ?{
?? ??? ? ? ??? ?pre=p2;
?? ??? ? ? ??? ?p2->next=p;
?? ??? ? ? ??? ?p2=p;
?? ??? ??? ?}
?? ? ? ?}
?? ? ? ?p2->next=NULL;
?? ?}
?? ?if(n<=2)
?? ??? ?head->next=NULL;
?? ?else
?? ??? ?pre->next=NULL;
? ? fclose(fp); ? ?//關(guān)閉文件?
? ? return head; ? //返回頭指針?
}
?
pDrinkBeverage readDrinkBeverageFile()//從飲品文件中讀取用戶信息,返回一個表頭地址
{
?? ?FILE *fp; ? ? ? //文件指針?
?? ?int n=0;//記錄鏈表 的結(jié)點數(shù)?
?? ?pDrinkBeverage head=NULL;//定義頭指針?
?? ?pDrinkBeverage p2,p,pre;
?? ?fp=fopen("DrinkBeverage.txt","a+"); ? ? //以只讀的方式打開文件?
?? ?if(fp==NULL)
?? ?{
?? ??? ?printf("cannot open file\n");
?? ?}
?? ?else
?? ?{
?? ??? ?while(!feof(fp)) ? ? ? ?//判斷文件位置標志是否移動到文件末尾?
?? ??? ?{
?? ??? ? ? ?n++;
?? ??? ??? ?p=(pDrinkBeverage)malloc(Q); //向內(nèi)存申請一段空間?
?? ??? ? ? fread(p,Q,1,fp); ? ? //將fp所指向的文件中的內(nèi)容賦給p
?? ??? ? ? if(n==1)
?? ??? ? ? {
?? ??? ? ? ? ?head=p;
?? ??? ? ? ? ?p2=p;
?? ??? ? ? ?}
?? ??? ? ? ?else ? ? ? ? ? ? //創(chuàng)建鏈表?
?? ??? ? ? ?{
?? ??? ? ? ??? ?pre=p2;
?? ??? ? ? ??? ?p2->next=p;
?? ??? ? ? ??? ?p2=p;
?? ??? ??? ?}
?? ? ? ?}
?? ? ? ?p2->next=NULL;
?? ?}
?? ?if(n<=2)
?? ??? ?head->next=NULL;
?? ?else
?? ??? ?pre->next=NULL;
? ? fclose(fp); ? ?//關(guān)閉文件?
? ? 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("添加成功!是否繼續(xù)?(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("菜單列表(按任意鍵繼續(xù))");
?? ?pStapleFood p1;//主食?
?? ?pNon_stapleFood p2;//副食
?? ?pDrinkBeverage p3;//飲品?
?? ?p1=readStapleFoodFile();//從主食文件中讀取用戶信息,返回一個表頭地址?
?? ?p2=readNonStapleFoodFile();//從副食文件中讀取用戶信息,返回一個表頭地址?
?? ?p3=readDrinkBeverageFile();//從飲品文件中讀取用戶信息,返回一個表頭地址?
?? ?toxy(26,6);
?? ?printf("菜名\t\t\t價格");
?? ?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 file\n");
?? ?}
?? ?if(fwrite(p,X,1,fp)!=1) ? ?//將p1所指向的1個大小為N的數(shù)據(jù)結(jié)構(gòu)寫入fp所指向的文件中?
?? ?{
?? ??? ?printf("file write error\n");
?? ?}
?? ?fclose(fp); ? ? ? ?//關(guān)閉文件?
}?
?
pTable readTableFile()//從餐桌文件中讀取用戶信息,返回一個表頭地址
{
?? ?FILE *fp; ? ? ? //文件指針?
?? ?int n=0;//記錄鏈表 的結(jié)點數(shù)?
?? ?pTable head=NULL;//定義頭指針?
?? ?pTable p2,p,pre;
?? ?fp=fopen("Table.txt","a+"); ? ? //以只讀的方式打開文件?
?? ?if(fp==NULL)
?? ?{
?? ??? ?printf("cannot open file\n");
?? ?}
?? ?else
?? ?{
?? ??? ?while(!feof(fp)) ? ? ? ?//判斷文件位置標志是否移動到文件末尾?
?? ??? ?{
?? ??? ? ? ?n++;
?? ??? ??? ?p=(pTable)malloc(X); //向內(nèi)存申請一段空間?
?? ??? ? ? fread(p,X,1,fp); ? ? //將fp所指向的文件中的內(nèi)容賦給p
?? ??? ? ? if(n==1)
?? ??? ? ? {
?? ??? ? ? ? ?head=p;
?? ??? ? ? ? ?p2=p;
?? ??? ? ? ?}
?? ??? ? ? ?else ? ? ? ? ? ? //創(chuàng)建鏈表?
?? ??? ? ? ?{
?? ??? ? ? ??? ?pre=p2;
?? ??? ? ? ??? ?p2->next=p;
?? ??? ? ? ??? ?p2=p;
?? ??? ??? ?}
?? ? ? ?}
?? ? ? ?p2->next=NULL;
?? ?}
?? ?if(n<=2)
?? ??? ?head->next=NULL;
?? ?else
?? ??? ?pre->next=NULL;
? ? fclose(fp); ? ?//關(guān)閉文件?
? ? 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("請輸入可坐人數(shù):");
?? ??? ?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("添加成功!是否繼續(xù)?(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("餐桌列表(按任意鍵繼續(xù))");
?? ?toxy(22,8);
?? ?printf("餐桌編號 | 可坐人數(shù) | 已坐人數(shù) | 訂餐人");
?? ?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指向第二個結(jié)點?
?? ?fp=fopen("Table.txt","w"); ? ?//先清空原文件內(nèi)容再將修改后的信息寫入文件?
?? ?if(fp==NULL)
?? ?{
?? ??? ?printf("cannot open file\n");
?? ?}
?? ?if(fwrite(head,X,1,fp)!=1) ? //將head所指向的數(shù)據(jù)寫入fp所指向的文件?
?? ?{
?? ??? ?printf("file write error\n");
?? ?}
?? ?fclose(fp); ? ?//關(guān)閉文件?
?? ?fp=fopen("Table.txt","a"); ? // 打開User.txt文件,方式為追加?
?? ?while(p!=NULL) ? ??//p不為空就執(zhí)行循環(huán)體?
?? ?{
?? ??? ?if(fwrite(p,X,1,fp)!=1) ? ?//將p所指向的1個大小為N的數(shù)據(jù)結(jié)構(gòu)寫入fp所指向的文件?
?? ? ? ?{
?? ??? ??? ?printf("file write error\n");
?? ? ? ?}
?? ? ? ?p=p->next; ?  //使p指向下一個結(jié)點?
?? ?}
?? ?fclose(fp); ??//關(guān)閉文件?
}?
?
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("清理成功!是否繼續(xù)?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("清理成功!按任意鍵繼續(xù)");
?? ?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("用戶名\t\t余額\t\t會員狀態(tài)");
?? ?while(p!=NULL&&strcmp(p->userName,username)!=0)
?? ??? ?p=p->next;
?? ?if(p!=NULL)
?? ?{
?? ??? ?toxy(24,14);
?? ??? ?printf("%s\t\t%.2f\t\t%d",p->userName,p->money,p->isVIP);
?? ?}
?? ?else
?? ?{
?? ??? ?toxy(28,14);
?? ??? ?printf("沒有找到相關(guān)信息");
?? ?}
?? ?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("用戶名\t\t余額\t\t會員狀態(tài)");
?? ?while(p!=NULL)
?? ?{
?? ??? ?toxy(24,i);
?? ??? ?printf("%s\t\t%.2f\t\t%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("用戶名\t\t余額");
?? ?toxy(24,9);
?? ?printf("--------------------------------");
?? ?while(p!=NULL)
?? ?{
?? ??? ?if(p->isVIP)
?? ??? ?{
?? ??? ??? ?toxy(26,i);
?? ??? ??? ?printf("%s\t\t\t%.2f",p->userName,p->money);
?? ??? ??? ?i+=2;
?? ??? ?}
?? ??? ?p=p->next;
?? ?}
?? ?toxy(30,i);
?? ?printf("按任意鍵返回");
?? ?getch();
}
?
void Setup_administrator()//設(shè)置管理員
{
?? ?
?? ?system("color 80");
?? ?char t;
?? ?char username[10];
?? ?pUser p,head;
?? ?head=readUserFile();
?? ?do
?? ?{
?? ??? ?system("cls");
?? ??? ?p=head;
?? ??? ?toxy(26,8);
?? ??? ?printf("請輸入您要設(shè)置為管理員的用戶名:");
?? ??? ?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("設(shè)置成功!請按任意鍵返回");
?? ??? ??? ?getch();
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?toxy(24,10);
?? ??? ??? ?printf("您所輸入的用戶名不存在!是否繼續(xù)?(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;
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 引用numpy出錯詳解及解決方法

    引用numpy出錯詳解及解決方法

    這篇文章主要介紹了引用numpy出錯 解決方法的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • C語言簡易掃雷游戲

    C語言簡易掃雷游戲

    這篇文章主要為大家詳細介紹了C語言簡易掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 淺析C++中memset,memcpy,strcpy的區(qū)別

    淺析C++中memset,memcpy,strcpy的區(qū)別

    本篇文章是對C++中memset,memcpy,strcpy的區(qū)別進行了詳細的分析介紹,需要的朋友參考下
    2013-07-07
  • 記錄一個C++在條件查詢時遇到的問題(推薦)

    記錄一個C++在條件查詢時遇到的問題(推薦)

    這篇文章主要介紹了記錄一個C++在條件查詢時遇到的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • C++ sort排序函數(shù)用法詳解

    C++ sort排序函數(shù)用法詳解

    本文主要介紹了C++ sort排序函數(shù)用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • C++命名空間using?namespace?std是什么意思

    C++命名空間using?namespace?std是什么意思

    namespace中文意思是命名空間或者叫名字空間,傳統(tǒng)的C++只有一個全局的namespace,下面這篇文章主要給大家介紹了關(guān)于C++命名空間using?namespace?std是什么意思的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 基于C++編寫一個Json解析器

    基于C++編寫一個Json解析器

    這篇文章主要為大家詳細介紹了如何基于C++編寫一個Json解析器,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以了解一下
    2023-03-03
  • C++代碼和可執(zhí)行程序在x86和arm上的區(qū)別介紹

    C++代碼和可執(zhí)行程序在x86和arm上的區(qū)別介紹

    這篇文章主要介紹了C++代碼和可執(zhí)行程序在x86和arm上的區(qū)別,X86和ARM是占據(jù)CPU市場的兩大處理器,各有優(yōu)劣,本文給大家詳細介紹了兩者的區(qū)別,需要的朋友可以參考下
    2022-07-07
  • C語言基于哈希表實現(xiàn)通訊錄

    C語言基于哈希表實現(xiàn)通訊錄

    這篇文章主要為大家詳細介紹了C語言基于哈希表實現(xiàn)通訊錄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 詳解如何在C/C++中測量一個函數(shù)或功能的運行時間

    詳解如何在C/C++中測量一個函數(shù)或功能的運行時間

    本文算是一個比較完整的關(guān)于在 C/C++ 中測量一個函數(shù)或者功能的總結(jié),最后會演示三種方法的對比,文章通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下
    2023-12-12

最新評論