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

C語(yǔ)言實(shí)現(xiàn)餐飲管理系統(tǒng)

 更新時(shí)間:2022年03月18日 15:48:21   作者:在zai  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)餐飲管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <windows.h>
#define N sizeof(user)?
#define M sizeof(table)?
#define T sizeof(order)?
#define S sizeof(menu)?
?
typedef struct User{
?? ?char username[12];//賬號(hào)?
?? ?char password[18];//密碼
?? ?int vip;//1為會(huì)員 ?0不是
?? ?int adm;//administrator同上
?? ?//或?qū)⒁陨系牟捎脭?shù)據(jù)域的方式存儲(chǔ)?
?? ?struct User* next;?
}user; //注意初始化 ,可以寫(xiě)一個(gè)初始化函數(shù) ?借鑒7月9號(hào)的筆記中的“初始化”?
?
?
typedef struct Menu{
?? ?int num;//1~10為熱菜 ?11~20為冷菜 ?21~25為飲料?
?? ?char name[20];
?? ?int price;
?? ?struct Menu* next;?
}menu;
?
?
typedef struct Table{
?? ?int number;
?? ?int is_blank;
?? ?int peoplenum;
?? ?struct Order* ordert;//接該桌的訂單的頭結(jié)點(diǎn)?
?? ?int price;//該桌的總價(jià)?
?? ?struct Table* next;?
}table;?
?
?
typedef struct Order{
?? ?int number;//菜的編號(hào)
?? ?char name[20];
?? ?int copies;//菜的份數(shù)
?? ?int price;
?? ?int xiaoji;
?? ?struct Order* next;?
}order;
?
?
//以下為自定義函數(shù)
void welcome();
int ORDER(order* head);//點(diǎn)菜函數(shù)?
//void reg();//注冊(cè)函數(shù)?
void login();
void logon();
void show();//顯示菜單函數(shù)?
void client();//客戶函數(shù)?
void look_amend();//查看修改函數(shù)?
void add();//加菜函數(shù)?
void cancel();//取消菜函數(shù)?
int priceall();//計(jì)算總價(jià)函數(shù)?
void getpassword(char password[18],char againpassword[18]);
int is_password_same(char password[18],char againpassword[18]);
void save_user(user* p);
menu* ffmenuhot();
menu* ffmenucold();
menu* ffmenudrink();
table* fftable();
void resave_table(table* head);
?
?
?
table* fftable()
{
?? ?FILE *fp1; ? ? ? //文件指針?
?? ?int n = 0;
?? ?table* head = NULL;
?? ?table* q;
?? ?table* p;
?? ?//system("md E:\\canyin\\table");
?? ?fp1 = fopen("E:\\canyin\\table\\table.txt","a+"); ? ? //以只讀的方式打開(kāi)文件?
?? ?if(fp1 == NULL)
?? ?{
?? ??? ?printf("文件打開(kāi)失敗\n");
?? ??? ?//getchar();
?? ??? ?//exit(0);
?? ?}
?? ?else
?? ?{
?? ??? ?while(!feof(fp1)) ? ? ? ?//判斷文件位置標(biāo)志是否移動(dòng)到文件末尾?
?? ??? ?{
?? ??? ? ? ?n ++;
?? ??? ? ? ?? ?p = (table*)malloc(sizeof(table)); //向內(nèi)存申請(qǐng)一段空間?
?? ??? ? ? ?//fread(p, N, 1, fp1); ? ? //將fp所指向的文件中的內(nèi)容賦給p
?? ??? ??? ?fscanf(fp1,"%d %d %d %d %d", &p->number , &p->is_blank , &p->peoplenum , &p->price , &p->ordert );?
?? ??? ? ? ?if(n == 1)
?? ??? ? ? ?{
?? ??? ? ? ? ??? ?head = p;
?? ??? ? ? ? ??? ?q = p;
?? ??? ? ? ?}
?? ??? ? ? ?else ? ? ? ? ? ? //創(chuàng)建鏈表?
?? ??? ? ? ?{
?? ??? ? ? ??? ?q->next = p;
?? ??? ? ? ??? ?q = p;
?? ??? ??? ?}
?? ? ? ?}
?? ? ? ?q->next = NULL;
?? ?}
? ? fclose(fp1); ? ?//關(guān)閉文件?
? ? return head; ? //返回頭指針?
}
?
?
?
void resave_table(table* head)
{
?? ?table* p;
?? ?p = head;
?? ?//system("md E:\\canyin\\table");
?? ?FILE *file; ? ? ? //文件指針?
?? ?file = fopen("E:\\canyin\\table\\table.txt","wb+"); ? ?//以追加的方式打開(kāi)文件?
?? ?if(file == NULL)
?? ?{
?? ??? ?printf("文件打開(kāi)失敗\n");
?? ?}
?? ?///if(fwrite(p, N, 1, fp)!=1) ? ?//將p所指向的1個(gè)大小為N的數(shù)據(jù)結(jié)構(gòu)寫(xiě)入fp所指向的文件中?
?? ?//{
?? ??? ?//printf("文件寫(xiě)入失敗\n");
?? ?while(p->next != NULL)
?? ?{
?? ? ? ?fprintf( file ,"%d %d %d %d %d \n", p->number, p->is_blank , p->peoplenum , p->price , p->ordert);
?? ? ? ?p=p->next;
?? ?}
?? ?//}
?? ?fclose(file); ? ? ? ?//關(guān)閉文件?
}
?
?
?
void client()
{
?? ?order* orderh;
?? ?orderh=(order*)malloc(sizeof(order));
?? ?int tablenum;
?? ?printf("當(dāng)前可選擇的桌位有:\n");
?? ?table* head;
?? ?table* p;
?? ?head = (table*)malloc(sizeof(table));
?? ?p = (table*)malloc(sizeof(table));
?? ?head = fftable();
?? ?p = head;
?? ?while(p->next != NULL)
?? ?{
?? ??? ?if(p->is_blank==0)
?? ??? ? ? ?printf("%d號(hào)\t",p->number);
?? ?}
?? ?printf("請(qǐng)選擇你的桌位號(hào):");
?? ?scanf("%d",&tablenum);
?? ?p = head;
?? ?while(p->number == tablenum)
?? ?{
?? ??? ?p->is_blank = 1;
?? ??? ?p->ordert = orderh;
?? ??? ?break;
?? ?}
? ? //確定座位號(hào)?
?? ?//char a;
?? ?/*?
?? ?printf("1.點(diǎn)菜");
?? ?printf("2.查看已點(diǎn)的菜");?
?? ?scanf("%s",&a);
?? ?switch(a)
?? ?{
?? ??? ?case'1':order();break;//調(diào)用點(diǎn)菜函數(shù)?
?? ??? ?case'2':look_amend();break;//調(diào)用查看函數(shù)
?? ??? ?default:printf("請(qǐng)輸入正確的選項(xiàng)!");break;?
?? ? } */
?? ? printf("請(qǐng)點(diǎn)菜:\n");
?? ? p->price = ORDER(orderh);
?? ? resave_table(head);?
}
?
?
int ORDER(order* head)
{
?? ?menu* hot;
?? ?menu* cold;
?? ?menu* drink;
?? ?int copies;
?? ?int i=1;
?? ?int priceall = 0;
?? ?hot = ffmenuhot();
?? ?cold = ffmenucold();
?? ?drink = ffmenudrink();
?? ?menu *h , *c , *d;
?? ?show();//顯示菜單函數(shù)?
?? ?int numo;?
? ? printf("\n請(qǐng)輸入你要點(diǎn)的菜的序號(hào):(以#結(jié)束)");?
? ? //將要點(diǎn)的菜加入訂單鏈表中
? ? //order* head;
? ? order* p;
? ? order* q;
? ? head = (order*)malloc(sizeof(order));
? ? p = head;
? ? while(getch()!='#')
? ? {
? ? ?? ?printf("%d:",i);
? ? ?? ?scanf("%d",&numo);
? ? ?? ?printf("份數(shù):");
? ? ?? ?scanf("%d",&copies);
? ? ?? ?h = hot;
? ? ?? ?c = cold;
? ? ?? ?d = drink;
? ? ?? ?while(h->next != NULL)
? ? ?? ?{
? ? ?? ??? ?if(h->num==numo)
? ? ?? ??? ?{
? ? ?? ??? ??? ?//p = (order*)malloc(sizeof(order));
? ? ?? ??? ??? ?q = (order*)malloc(sizeof(order));
? ? ?? ??? ??? ?q->next = NULL;
? ? ?? ??? ??? ?p->number = h->num;
? ? ?? ??? ??? ?strcmp(p->name , h->name );
? ? ?? ??? ??? ?p->price = h->price;
? ? ?? ??? ??? ?p->copies = copies;
? ? ?? ??? ??? ?p->next = q;
? ? ?? ??? ??? ?q = p;
? ? ?? ??? ??? ?priceall = priceall + copies*(h->price);
? ? ?? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?
?? ??? ?while(c->next != NULL)
? ? ?? ?{
? ? ?? ??? ?if(c->num==numo)
? ? ?? ??? ?{
? ? ?? ??? ??? ?//p = (order*)malloc(sizeof(order));
? ? ?? ??? ??? ?q = (order*)malloc(sizeof(order));
? ? ?? ??? ??? ?q->next = NULL;
? ? ?? ??? ??? ?p->number = c->num;
? ? ?? ??? ??? ?strcmp(p->name , c->name );
? ? ?? ??? ??? ?p->price = c->price;
? ? ?? ??? ??? ?p->copies = copies;
? ? ?? ??? ??? ?p->next = q;
? ? ?? ??? ??? ?q = p;
? ? ?? ??? ??? ?priceall = priceall + copies*(h->price);
? ? ?? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ?}
? ? ?? ?
? ? ?? ?while(d->next != NULL)
? ? ?? ?{
? ? ?? ??? ?if(d->num==numo)
? ? ?? ??? ?{
? ? ?? ??? ??? ?//p = (order*)malloc(sizeof(order));
? ? ?? ??? ??? ?q = (order*)malloc(sizeof(order));
? ? ?? ??? ??? ?q->next = NULL;
? ? ?? ??? ??? ?p->number = d->num;
? ? ?? ??? ??? ?strcmp(p->name , d->name );
? ? ?? ??? ??? ?p->price = d->price;
? ? ?? ??? ??? ?p->copies = copies;
? ? ?? ??? ??? ?p->next = q;
? ? ?? ??? ??? ?q = p;
? ? ?? ??? ??? ?priceall = priceall + copies*(h->price);
? ? ?? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?i++;
?? ?}
? ??
? ??
?? ?printf("\n點(diǎn)菜成功!");?
?? ?printf("您的訂單總價(jià)是:%d",priceall);
?? ?Sleep(10000);
?? ?system("cls");
?? ?return priceall;
?? ?//look_amend();
}
?
void look_amend()
{
?? ?char a;?
?? ?printf("你點(diǎn)的菜是:\n");
?? ?//將訂單鏈表中的菜逐個(gè)輸出?
?? ?printf("1.添加菜品\n");
?? ?printf("2.刪除菜品\n");
?? ?printf("3.確定\n");?
?? ?scanf("%s",&a);
?? ?switch(a)
?? ?{
?? ??? ?case'1':add();break;//調(diào)用加菜函數(shù)?
?? ??? ?case'2':cancel();break;//調(diào)用減菜函數(shù)
?? ??? ?case'3':priceall();break;?
?? ??? ?default:printf("請(qǐng)輸入正確的選項(xiàng)!");break;?
?? ? }?
}
?
void add()
{
?? ?show();
?? ?printf("請(qǐng)輸入你要加入的菜的序號(hào):");
?? ?//將菜加入訂單鏈表
?? ?printf("\n加菜成功!");
?? ?Sleep(2000);
?? ?system("cls");?
?? ?look_amend();
}
?
?
void cancel()
{
?? ?printf("你點(diǎn)的菜是:");
?? ?printf("\n請(qǐng)輸入你要?jiǎng)h除的菜的序號(hào):");
?? ?//將菜從訂單鏈表中刪除
?? ?printf("\n取消成功!");?
?? ?Sleep(2000);
?? ?system("cls");?
?? ?look_amend();
}
?
/*
void enter()//登錄?
{?
?? ?printf("賬號(hào):\n");?
?? ?printf("密碼:");
?? ?//調(diào)用判斷登錄函數(shù);?
?? ?printf("\n登錄成功!");
?? ?Sleep(2000);
?? ?printf("\n歡迎您!");//判斷普通客戶 ?會(huì)員 ?管理員?
?? ?client();
}*/
/*
void login()
{
?? ?printf("賬號(hào):\n");?
?? ?printf("密碼:");
?? ?//調(diào)用判斷登錄函數(shù);?
?? ?printf("\n登錄成功!");
?? ?Sleep(2000);
?? ?printf("\n歡迎您!");//判斷普通客戶 ?會(huì)員 ?管理員?
?? ?client();
}*/
?
/*
void reg()//注冊(cè)函數(shù)?
{
?? ?//注冊(cè)賬戶?
?? ?printf("注冊(cè)成功!");
?? ?Sleep(2000);
?? ?system("cls");
?? ?order();//調(diào)用點(diǎn)菜函數(shù)?
} */
?
?
void show()//顯示?
{
?? ?menu* p1;
?? ?menu* p2;
?? ?menu* p3;
?? ?menu* headhot;
?? ?menu* headcold;
? ? menu* headdrink;
?? ?headhot = ffmenuhot();
?? ?headcold = ffmenucold();
?? ?headdrink = ffmenudrink();
?? ?p1 = headhot;
?? ?p2 = headcold;
?? ?p3 = headdrink;
?? ?printf("熱菜:\n");
?? ?printf("序號(hào) ? ? ? 菜名 ? ? ? 價(jià)格\n");?
?? ?printf("%d %s %d \n", p1->num, p1->name ?, p1->price);
?? ?while(p1->next != NULL)
?? ?{
?? ? ? ?printf("%d %s %d \n", p1->num, p1->name ?, p1->price);
? ? ? ? p1=p1->next;
?? ?}
?? ?
?? ?
?? ?printf("冷菜:\n");
?? ?printf("序號(hào) ? ? ? 菜名 ? ? ? 價(jià)格\n");
?? ?while(p2->next!=NULL)
?? ?{
?? ? ? ?printf("%d %s %d \n", p2->num, p2->name ?, p2->price);
? ? ? ? p2=p2->next;
?? ?}
?? ?
?? ?printf("飲料:\n");
?? ?printf("序號(hào) ? ? ? 菜名 ? ? ? 價(jià)格\n");?
?? ?while(p3->next!=NULL)
?? ?{
?? ? ? ?printf("%d %s %d \n", p3->num, p3->name ?, p3->price);
? ? ? ? p3=p3->next;
?? ?}
}?
?
?
int priceall()//合計(jì)價(jià)格?
{
?? ?//計(jì)算總價(jià)并輸出?
?? ?printf("您訂單的總價(jià)是:");
??? ?printf("\n請(qǐng)等待服務(wù)員為你上菜(如需修改請(qǐng)和服務(wù)員聯(lián)系)");
}?
?
?
void welcome()
{
?? ?system("cls");
?? ?system("color 3E");
?? ?printf("===============歡迎來(lái)到贛味客家餐館管理系統(tǒng)===============\n\n\n\n");
?? ?printf("\t 1.登錄\n");?
?? ?printf("\t 2.注冊(cè)\n");
?? ?printf("請(qǐng)選擇[1 2] : [ ? ]\b\b\b");
?? ?int n;
?? ?while(1)
?? ?{
?? ??? ?scanf("%d",&n);
?? ??? ?switch(n)
?? ??? ?{
?? ??? ??? ?case 1:
?? ??? ??? ??? ?login();//登錄?
?? ??? ??? ??? ?break;
?? ??? ??? ?case 2:
?? ??? ??? ??? ?logon();//注冊(cè)?
?? ??? ??? ??? ?break;?? ?
?? ??? ??? ?default:
?? ??? ??? ??? ?break;
?? ??? ?}
?? ?}
}
?
user* ff1() ? ? ? ? ? ? ? //將存賬號(hào)的文件里的內(nèi)容輸出到鏈表中
{
?? ?FILE *fp1; ? ? ? //文件指針?
?? ?int n = 0;
?? ?user* head = NULL;
?? ?user* q;
?? ?user* p;
?? ?system("md E:\\canyin\\zhanghu");
?? ?fp1 = fopen("E:\\canyin\\zhanghu\\zhanghu.txt","a+"); ? ? //以只讀的方式打開(kāi)文件?
?? ?if(fp1 == NULL)
?? ?{
?? ??? ?printf("文件打開(kāi)失敗\n");
?? ??? ?//getchar();
?? ??? ?//exit(0);
?? ?}
?? ?else
?? ?{
?? ??? ?while(!feof(fp1)) ? ? ? ?//判斷文件位置標(biāo)志是否移動(dòng)到文件末尾?
?? ??? ?{
?? ??? ? ? ?n ++;
?? ??? ? ? ?? ?p = (user*)malloc(N); //向內(nèi)存申請(qǐng)一段空間?
?? ??? ? ? ?//fread(p, N, 1, fp1); ? ? //將fp所指向的文件中的內(nèi)容賦給p
?? ??? ??? ?fscanf(fp1,"%s %s %d %d",p->username ,p->password ,&p->vip ,&p->adm);?
?? ??? ? ? ?if(n == 1)
?? ??? ? ? ?{
?? ??? ? ? ? ??? ?head = p;
?? ??? ? ? ? ??? ?q = p;
?? ??? ? ? ?}
?? ??? ? ? ?else ? ? ? ? ? ? //創(chuàng)建鏈表?
?? ??? ? ? ?{
?? ??? ? ? ??? ?q->next = p;
?? ??? ? ? ??? ?q = p;
?? ??? ??? ?}
?? ? ? ?}
?? ? ? ?q->next = NULL;
?? ?}
? ? fclose(fp1); ? ?//關(guān)閉文件?
? ? return head; ? //返回頭指針?
}
?
//從菜單文件中讀取菜單?
menu* ffmenuhot()
{
?? ?FILE *fp1; ? ? ? //文件指針?
?? ?int n = 0;
?? ?menu* head = NULL;
?? ?menu* q;
?? ?menu* p;
?? ?system("md E:\\canyin\\menu");
?? ?fp1 = fopen("E:\\canyin\\menu\\hotcai.txt","a+"); ? ? //以只讀的方式打開(kāi)文件?
?? ?if(fp1 == NULL)
?? ?{
?? ??? ?printf("文件打開(kāi)失敗\n");
?? ??? ?//getchar();
?? ??? ?//exit(0);
?? ?}
?? ?else
?? ?{
?? ??? ?while(!feof(fp1)) ? ? ? ?//判斷文件位置標(biāo)志是否移動(dòng)到文件末尾?
?? ??? ?{
?? ??? ? ? ?n ++;
?? ??? ? ? ?? ?p = (menu*)malloc(sizeof(menu)); //向內(nèi)存申請(qǐng)一段空間?
?? ??? ? ? ?//fread(p, N, 1, fp1); ? ? //將fp所指向的文件中的內(nèi)容賦給p
?? ??? ??? ?fscanf(fp1,"%d %s %d",&p->num ,p->name ,&p->price);?
?? ??? ? ? ?if(n == 1)
?? ??? ? ? ?{
?? ??? ? ? ? ??? ?head = p;
?? ??? ? ? ? ??? ?q = p;
?? ??? ? ? ?}
?? ??? ? ? ?else ? ? ? ? ? ? //創(chuàng)建鏈表?
?? ??? ? ? ?{
?? ??? ? ? ??? ?q->next = p;
?? ??? ? ? ??? ?q = p;
?? ??? ??? ?}
?? ? ? ?}
?? ? ? ?q->next = NULL;
?? ?}
? ? fclose(fp1); ? ?//關(guān)閉文件?
? ? return head; ? //返回頭指針?
}
?
?
menu* ffmenucold()
{
?? ?FILE *fp1; ? ? ? //文件指針?
?? ?int n = 0;
?? ?menu* head = NULL;
?? ?menu* q;
?? ?menu* p;
?? ?system("md E:\\canyin\\menu");
?? ?fp1 = fopen("E:\\canyin\\menu\\coldcai.txt","a+"); ? ? //以只讀的方式打開(kāi)文件?
?? ?if(fp1 == NULL)
?? ?{
?? ??? ?printf("文件打開(kāi)失敗\n");
?? ??? ?//getchar();
?? ??? ?//exit(0);
?? ?}
?? ?else
?? ?{
?? ??? ?while(!feof(fp1)) ? ? ? ?//判斷文件位置標(biāo)志是否移動(dòng)到文件末尾?
?? ??? ?{
?? ??? ? ? ?n ++;
?? ??? ? ? ?? ?p = (menu*)malloc(sizeof(menu)); //向內(nèi)存申請(qǐng)一段空間?
?? ??? ? ? ?//fread(p, N, 1, fp1); ? ? //將fp所指向的文件中的內(nèi)容賦給p
?? ??? ??? ?fscanf(fp1,"%d %s %d",&p->num ,p->name ,&p->price);?
?? ??? ? ? ?if(n == 1)
?? ??? ? ? ?{
?? ??? ? ? ? ??? ?head = p;
?? ??? ? ? ? ??? ?q = p;
?? ??? ? ? ?}
?? ??? ? ? ?else ? ? ? ? ? ? //創(chuàng)建鏈表?
?? ??? ? ? ?{
?? ??? ? ? ??? ?q->next = p;
?? ??? ? ? ??? ?q = p;
?? ??? ??? ?}
?? ? ? ?}
?? ? ? ?q->next = NULL;
?? ?}
? ? fclose(fp1); ? ?//關(guān)閉文件?
? ? return head; ? //返回頭指針?
}
?
?
menu* ffmenudrink()
{
?? ?FILE *fp1; ? ? ? //文件指針?
?? ?int n = 0;
?? ?menu* head = NULL;
?? ?menu* q;
?? ?menu* p;
?? ?system("md E:\\canyin\\menu");
?? ?fp1 = fopen("E:\\canyin\\menu\\drink.txt","a+"); ? ? //以只讀的方式打開(kāi)文件?
?? ?if(fp1 == NULL)
?? ?{
?? ??? ?printf("文件打開(kāi)失敗\n");
?? ??? ?//getchar();
?? ??? ?//exit(0);
?? ?}
?? ?else
?? ?{
?? ??? ?while(!feof(fp1)) ? ? ? ?//判斷文件位置標(biāo)志是否移動(dòng)到文件末尾?
?? ??? ?{
?? ??? ? ? ?n ++;
?? ??? ? ? ?? ?p = (menu*)malloc(sizeof(menu)); //向內(nèi)存申請(qǐng)一段空間?
?? ??? ? ? ?//fread(p, N, 1, fp1); ? ? //將fp所指向的文件中的內(nèi)容賦給p
?? ??? ??? ?fscanf(fp1,"%d %s %d",&p->num ,p->name ,&p->price);?
?? ??? ? ? ?if(n == 1)
?? ??? ? ? ?{
?? ??? ? ? ? ??? ?head = p;
?? ??? ? ? ? ??? ?q = p;
?? ??? ? ? ?}
?? ??? ? ? ?else ? ? ? ? ? ? //創(chuàng)建鏈表?
?? ??? ? ? ?{
?? ??? ? ? ??? ?q->next = p;
?? ??? ? ? ??? ?q = p;
?? ??? ??? ?}
?? ? ? ?}
?? ? ? ?q->next = NULL;
?? ?}
? ? fclose(fp1); ? ?//關(guān)閉文件?
? ? return head; ? //返回頭指針?
}
?
?
void login() ? ? ?// 賬號(hào)登陸?
{?
?? ?system("cls"); ? //清屏?
?? ?user* p;
?? ?user* head; ? ?
?? ?head = ff1();
?? ?p = head;
? ? //調(diào)用函數(shù) ,返回值為頭結(jié)點(diǎn)的指針
? ? /*
?? ?p = head;
?? ?while(p->next!=NULL)
?? ?{
?? ? ? ?printf("%s %s %d %d\n", p->username ,p->password , p->vip, p->adm);
? ? ? ? p=p->next;
?? ?}*/
? ? do{
?? ? ? ?char t, c, k, name1[12], password1[18];
?? ? ? ?int i = 0;
?? ??? ?printf("***************************\n\n\n\n");
?? ??? ?printf("\t\t ? ? 登陸狀態(tài) ? ? ? ");
?? ??? ?printf("請(qǐng)輸入您的賬號(hào):");
?? ??? ?scanf("%s", name1);
?? ??? ?printf("請(qǐng)輸入您的密碼:");
?? ??? ?for(;;) ? ? ? ? ? ? ?//此處為輸入密碼不回顯操作?
?? ??? ?{
?? ??? ??? ?k = getch(); ? ? ? //輸入k?
?? ??? ??? ?if(k == '\r') ? ? ?//如果輸入k為回車,則跳出循環(huán)?
?? ??? ??? ?{
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?else if(k == '\b') ?//如果輸入k為刪除鍵?
?? ??? ??? ?{
?? ??? ??? ??? ?if(i > 0) ? ? ? //如若密碼還沒(méi)完全刪除?
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?printf("\b");
?? ??? ??? ??? ??? ?printf(" ");
?? ??? ??? ??? ??? ?printf("\b");
?? ??? ??? ??? ??? ?i--;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?else ? ? ? ? ? ? ?//如果輸入的k既不是刪除鍵,也不是回車鍵?
?? ??? ??? ?{
?? ??? ??? ??? ?password1[i] = k; ? //把k的值賦給_password[i];?
?? ??? ??? ??? ?printf("*"); ? ? ?//輸出*號(hào),保護(hù)用戶隱私?
?? ??? ??? ??? ?i ++; ? ? ? ? ? ? ?//密碼位數(shù)加1?
?? ??? ??? ?}
?? ??? ?}
?? ??? ?password1[i] = '\0';
?? ??? ?while( (p != NULL) && (strcmp(p->username, name1) != 0) ) ? //遍歷鏈表,尋找當(dāng)前輸入的賬戶的賬號(hào)?
?? ??? ?{
?? ??? ??? ?p = p->next;
?? ??? ?}
?? ??? ?if(p != NULL) ? //如果p不為空?
?? ??? ?{
?? ? ? ??? ?if(strcmp(p->password, password1) == 0) ? ? //如果輸入的密碼正確?
?? ??? ??? ?{
?? ??? ??? ??? ?printf("正在登陸....\n");
?? ??? ??? ??? ?Sleep(500); ? ? ?//暫停0.5秒
?? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ?printf("登陸成功!\n");
?? ??? ??? ??? ?break; ? ?//跳出循環(huán)
?? ??? ??? ?}
?? ??? ??? ?else ? ? ?//如果輸入的密碼錯(cuò)誤
?? ??? ??? ?{?
?? ??? ??? ??? ?printf("正在登陸....\n");
?? ??? ??? ??? ?Sleep(500);
?? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ?printf("-------------------------\n");
?? ??? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |\n");
?? ??? ??? ??? ?printf("| 密碼錯(cuò)誤!是否繼續(xù)? ?|\n");
?? ??? ??? ??? ?printf("| 1.是 ? ? ? ? ? ? 2.否 |\n");
?? ??? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |\n");
?? ??? ??? ??? ?printf("-------------------------\n");
?? ??? ??? ??? ?while(1)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?t = getch(); ?//輸入t ? ?
?? ??? ??? ??? ??? ?if(t == '1') ? ? ? ? ?
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?system("cls"); ?//清屏?
?? ??? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?else if(t == '2') ? ? //如果輸入t為n,進(jìn)入開(kāi)始界面?
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?welcome();
?? ??? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}
?? ??? ??? ?}?
?? ? ? }
?? ? ? else ? ? ? ? ? ? ?//如果p為空,即輸入的賬號(hào)不正確?
?? ? ? {
?? ? ? ?? ? ? ?printf("正在登陸....\n");
?? ? ? ?? ? ? ?Sleep(500);
?? ? ? ?? ? ? ?system("cls");
?? ? ? ?? ? ? ?printf("-------------------------\n");
?? ? ? ?? ? ? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |\n");
?? ??? ??? ?printf("| ?賬號(hào)錯(cuò)誤!是否繼續(xù)? |\n");
?? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |\n");
?? ??? ??? ?printf("| ?1.是 ? ? ? ? ? ?2.否 |\n");?
?? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |\n");
?? ??? ??? ?printf("-------------------------\n");
?? ??? ??? ?while(1) ? ? ?//死循環(huán)防止其他按鍵干擾?
?? ??? ??? ?{
?? ??? ??? ??? ?c = getch();
?? ??? ??? ??? ?if(c == '1')
?? ??? ??? ??? ?{ ?
?? ??? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else if(c == '2')
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?welcome();
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ? ? }
? ? }while(1); ? ? ?//永遠(yuǎn)為真?
? ??? ?Sleep(500); ? ? ?//暫停0.5秒?
? ??? ?client();
? ??? ?//menu(); ? ? ? ? //賬號(hào)密碼均正確,進(jìn)入主菜單?
}
?
?
?
?
?
void logon() ? ? ? ?//注冊(cè)賬號(hào)?
{?? ?
? ? //system("md E:\\canyin\\zhanghu");
?? ?system("cls");
?? ?user* p;?
?? ?p = (user*)malloc(N); ? ? //向內(nèi)存申請(qǐng)一段空間?
?? ?p->next==NULL;
?? ?//do
?? ?//{
?? ??? ?char name[12],password[18],againpassword[18],c,k;
?? ??? ?int i = 0;?
?? ??? ?printf("贛味客家餐飲管理系統(tǒng)\n");
?? ??? ?printf("**************************\n");
?? ??? ?printf("請(qǐng)輸入賬號(hào)(手機(jī)號(hào)):\n");
?? ??? ?scanf("%s",name);
?? ??? ?//printf("請(qǐng)輸入密碼:\n");
?? ??? ?for(;;) ? ? ? ? ? ? ?//此處為輸入密碼不回顯操作?
?? ??? ?{
?? ??? ??? ?getpassword(password,againpassword);
?? ??? ? ? ?if(is_password_same(password,againpassword)==1);
?? ??? ?//if(strcmp(password, againpassword) == 0) ? ? ? ?//如果輸入的兩次密碼均正確?
?? ??? ? ? ?{
?? ??? ??? ? ? ?strcpy(p->username, name);
?? ??? ??? ? ? ?strcpy(p->password, password);
?? ??? ??? ? ? ?printf("\n是否注冊(cè)為會(huì)員(0.否,1.是)");
?? ??? ??? ? ? ?scanf("%d", &p->vip);
?? ??? ??? ? ? ?printf("\n是否注冊(cè)為管理員(0.否,1.是)");?
?? ??? ??? ? ? ?scanf("%d", &p->adm);?
?? ??? ??? ? ? ?printf("正在注冊(cè)....\n");
?? ??? ??? ? ? ?save_user(p);
?? ??? ??? ? ? ?Sleep(500);
?? ??? ??? ? ? ?system("cls");
?? ??? ??? ? ? ?printf("注冊(cè)成功!\n");
?? ??? ??? ? ? ?Sleep(500); ? ? ? ? //暫停0.5秒?
?? ??? ??? ? ? ?break; ? ? ? ? ? ? ?//跳出循環(huán)?
?? ??? ? ? ?}
?? ??? ?/*
?? ??? ?else ? ?//如果輸入的兩次密碼不同?
?? ??? ?{
?? ??? ??? ?printf("正在注冊(cè)....\n");
?? ??? ??? ?Sleep(500);
?? ??? ??? ?system("cls");
?? ??? ??? ?printf("-----------------------------");
?? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? |");
?? ??? ??? ?printf("| ?注冊(cè)失?。纱蚊艽a不統(tǒng)一,是否繼續(xù)注冊(cè)? |");
?? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? |");
?? ??? ??? ?printf("| ?1.是 ? ? ? ? ? ? ? 2.否 ?|");?
?? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? |");
?? ??? ??? ?printf("-----------------------------");
?? ??? ??? ?while(1)
?? ??? ??? ?{
?? ??? ??? ??? ?c = getch();
?? ??? ??? ??? ?if(c == '1')
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ??? ?//logon();
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else if(c == '2')
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?welcome();
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}*/
?? ?}
?? ?//}while(1); ? ?//永遠(yuǎn)為真?
?? ?printf("正在自動(dòng)為您登陸....\n");
?? ?Sleep(500);
?? ?printf("\n登錄成功!");
?? ?Sleep(2000);
?? ?printf("\n歡迎您!");//判斷普通客戶 ?會(huì)員 ?管理員?
?? ?client();
?? ?//login();
}
?
void getpassword(char password[18],char againpassword[18])
{
?? ?char k;
?? ?int i=0;
?? ?printf("請(qǐng)輸入密碼:\n");
?? ??? ?for(;;) ? ? ? ? ? ? ?//此處為輸入密碼不回顯操作?
?? ??? ?{
?? ??? ??? ?k = getch(); ? ? ? //輸入k?
?? ??? ??? ?if(k == '\r') ? ? ?//如果輸入k為回車,則跳出循環(huán)?
?? ??? ??? ?{
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?else if(k == '\b') ?//如果輸入k為刪除鍵?
?? ??? ??? ?{
?? ??? ??? ??? ?if(i > 0) ? ? ? //如若密碼還沒(méi)完全刪除?
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?printf("\b");
?? ??? ??? ??? ??? ?printf(" ");
?? ??? ??? ??? ??? ?printf("\b");
?? ??? ??? ??? ??? ?i --;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?else ? ? ? ? ? ? ?//如果輸入的k既不是刪除鍵,也不是回車鍵?
?? ??? ??? ?{
?? ??? ??? ??? ?password[i] = k; ? //把k的值賦給_password[i];?
?? ??? ??? ??? ?printf("*"); ? ? ?//輸出*號(hào),保護(hù)用戶隱私?
?? ??? ??? ??? ?i ++; ? ? ? ? ? ? ?//密碼位數(shù)加1?
?? ??? ??? ?}
?? ??? ?}
?? ??? ?
?? ??? ?password[i] = '\0';
?? ??? ?i = 0;
?? ??? ?printf("\n請(qǐng)確認(rèn)您的密碼:\n");
?? ??? ?for(;;) ? ? ? ? ? ? ?//此處為輸入密碼不回顯操作?
?? ??? ?{
?? ??? ??? ?k = getch(); ? ? ? //輸入k?
?? ??? ??? ?if(k == '\r') ? ? ?//如果輸入k為回車,則跳出循環(huán)?
?? ??? ??? ?{
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?else if(k == '\b') ?//如果輸入k為刪除鍵?
?? ??? ??? ?{
?? ??? ??? ??? ?if(i > 0) ? ? ? //如若密碼還沒(méi)完全刪除?
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?printf("\b");
?? ??? ??? ??? ??? ?printf(" ");
?? ??? ??? ??? ??? ?printf("\b");
?? ??? ??? ??? ??? ?i --;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?else ? ? ? ? ? ? ?//如果輸入的k既不是刪除鍵,也不是回車鍵?
?? ??? ??? ?{
?? ??? ??? ??? ?againpassword[i] = k; ? //把k的值賦給_password[i];?
?? ??? ??? ??? ?printf("*"); ? ? ?//輸出*號(hào),保護(hù)用戶隱私?
?? ??? ??? ??? ?i++; ? ? ? ? ? ? ?//密碼位數(shù)加1?
?? ??? ??? ?}
?? ??? ?}
?? ??? ?againpassword[i] = '\0';
}
?
?
int is_password_same(char password[18],char againpassword[18])
{
?? ?char c;
?? ?if(strcmp(password, againpassword) != 0)
?? ?{
?? ??? ?{
?? ??? ??? ?printf("正在注冊(cè)....\n");
?? ??? ??? ?Sleep(500);
?? ??? ??? ?system("cls");
?? ??? ??? ?printf("-----------------------------");
?? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? |");
?? ??? ??? ?printf("| ?注冊(cè)失敗!兩次密碼不統(tǒng)一,是否繼續(xù)注冊(cè)? |");
?? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? |");
?? ??? ??? ?printf("| ?1.是 ? ? ? ? ? ? ? 2.否 ?|");?
?? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? |");
?? ??? ??? ?printf("-----------------------------");
?? ??? ??? ?while(1)
?? ??? ??? ?{
?? ??? ??? ??? ?c = getch();
?? ??? ??? ??? ?if(c == '1')
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ??? ?//logon();
?? ??? ??? ??? ??? ?getpassword(password,againpassword);
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else if(c == '2')
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?return 0;
?? ??? ??? ??? ??? ?welcome();
?? ??? ??? ??? ??? ?//break;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}
?? ?}
?? ?else
?? ? ? ?return 1;
}
?
void save_user(user* p)
{
?? ?system("md E:\\canyin\\zhanghu");
?? ?FILE *file; ? ? ? //文件指針?
?? ?file = fopen("E:\\canyin\\zhanghu\\zhanghu.txt","a"); ? ?//以追加的方式打開(kāi)文件?
?? ?if(file == NULL)
?? ?{
?? ??? ?printf("文件打開(kāi)失敗\n");
?? ?}
?? ?///if(fwrite(p, N, 1, fp)!=1) ? ?//將p所指向的1個(gè)大小為N的數(shù)據(jù)結(jié)構(gòu)寫(xiě)入fp所指向的文件中?
?? ?//{
?? ??? ?//printf("文件寫(xiě)入失敗\n");
?? ?fprintf( file ,"%s %s %d %d\n", p->username , p->password , p->vip , p->adm );
?? ?//}

這是以前寫(xiě)的餐飲管理系統(tǒng),和大佬們沒(méi)得比,可以參考一下,因?yàn)槭且郧皩?xiě)的所以文件找不到了,可以自己把文件部分修改一下重新創(chuàng)建即可 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論