餐廳管理系統——計算機軟體技術基礎課程設計
阿新 • • 發佈:2018-12-26
內容說明:C語言編寫,大一計算機軟體技術基礎課程設計課題,參考https://blog.csdn.net/kiddingstreet/article/details/78258787完成。題目:網上訂餐系統設計
設計一個小程式,維護某家餐廳的客戶資訊和訂餐資訊。客戶資訊包括:姓名,電話,餘額。可以查詢這些資訊。可以充值,充值後餘額相應改變。菜品包括酸菜魚,15元。豆花魚,12元。紅燒魚,8元。客戶預定某項菜品後,餘額相應改變,訂購的菜品亦可查詢。
#include<stdio.h> #include<stdlib.h> #include<string.h> //建立關於選單的結構體 typedef struct food { char name[20]; int price; struct food *next; }food,*link_food; //建立關於使用者的結構體 typedef struct user { char name[10]; char tel[10]; int balance; struct user *next; }user,*link_user; //建立關於訂單的結構體 typedef struct foodw { char namef[20]; int price; char yonghu[20]; struct foodw *nextf; }foodw,*link_foodw; //開始介面 void welcome() { int i=0; char a[52]="\t\t->>WELCOME TO RESTAURANT MANAGEMENT SYSTEM<<--"; printf("\n\n\n\n\t\t"); while(a[i]) { printf("%c",a[i]); i++; } printf("\n\n\n\n\t\t"); printf("\n\n\n\n\t\t\t\t\t--------------------------------\n"); printf("\t\t\t\t\t 餐 廳 管 理 系 統 \n"); printf("\t\t\t\t\t 1.選單 \n"); printf("\t\t\t\t\t 2.使用者 \n"); printf("\t\t\t\t\t--------------------------------\n"); } //建立使用者 void *creats() { char a[30],b[20]; int d; link_user LU; user *s,*r; LU=r=(user *)malloc(sizeof(user)); LU->next=NULL; r=LU; while(1) { printf("請輸入使用者資訊:\n"); printf("\t\t● 使用者姓名:"); scanf("%s",a); printf("\n\t\t● 使用者電話:"); scanf("%s",b); if(strcmp(a,"0")!=0) { printf("\n\t\t● 使用者餘額:"); scanf("%d",&d); s=(user *)malloc(sizeof(user)); strcpy(s->name,a); strcpy(s->tel,b); s->balance=d; r->next=s; s->next=NULL; r=s; } else break; } return LU; } //建立訂單 void *creatsfw(link_user LU) { char a[30],d[20]; int b; link_foodw LFW; foodw *s,*r; LFW=r=(foodw *)malloc(sizeof(foodw)); LFW->nextf=NULL; r=LFW; while(1) { printf("請輸入訂單資訊:\n"); printf("\t\t● 訂單:"); scanf("%s",a); printf("\n\t\t● 訂單價格:"); scanf("%d",&b); if(strcmp(a,"0")!=0) { printf("\n\t\t● 使用者姓名:"); scanf("%s",d); s=(foodw *)malloc(sizeof(foodw)); strcpy(s->namef,a); s->price=b; strcpy(s->yonghu,d); r->nextf=s; s->nextf=NULL; r=s; disvalue(LU,b,d); } else break; } return LFW; } //輸出訂單 void outputuserw(link_foodw LFW) { foodw *x; x=LFW->nextf; printf("\n\t\t\t\t\t 訂 單 "); printf("\n\t\t\t\t\t------------------------------------\n"); printf("\t\t\t\t\t使用者 訂單 價格\n"); printf("\t\t\t\t\t------------------------------------\n"); while(x!=NULL) { printf("\t\t\t\t\t%-13s%-12s%-12d元\n",x->yonghu,x->namef,x->price); printf("\t\t\t\t\t------------------------------------\n"); x=x->nextf; } } //輸出使用者列表 void outputuser(link_user LU) { user *x; x=LU->next; printf("\n\t\t\t\t\t 用 戶 "); printf("\n\t\t\t\t\t------------------------------------\n"); printf("\t\t\t\t\t姓名 電話 餘額\n"); printf("\t\t\t\t\t------------------------------------\n"); while(x!=NULL) { printf("\t\t\t\t\t%-13s%-12s%-12d元\n",x->name,x->tel,x->balance); printf("\t\t\t\t\t------------------------------------\n"); x=x->next; } } //充值 void value(link_user LU) { user *x; char a[10]; int b; x=LU->next; printf("輸入使用者電話:\n"); scanf("%s",a); printf("輸入充值價格:\n"); scanf("%d",&b); if(strcmp(a,x->tel)!=0) { x=x->next; } else { x->balance=x->balance+b; } } //餘額減少 int disvalue(link_user LU,int b,char a[]) { user *x; x=LU->next; if(strcmp(a,x->name)!=0) { x=x->next; } else { x->balance=x->balance-b; } return 0; } //選擇介面 void choose(int x) { if(x==1) { meun(); } if(x==2) { users(); } } //訂單介面 void foodwrite(link_user LU) { int x; link_foodw LFW; printf("\n\n\n\n\t\t\t\t\t--------------------------------\n"); printf("\t\t\t\t\t 訂 單 管 理 系 統 \n"); printf("\t\t\t\t\t 1.建立訂單 \n"); printf("\t\t\t\t\t 2.檢視訂單 \n"); printf("\t\t\t\t\t 0.返回 \n"); printf("\t\t\t\t\t--------------------------------\n"); while(scanf("%d",&x)!=0) { if(x==1) { LFW=creatsfw(LU); } if(x==2) { outputuserw(LFW); } if(x==0) break; } return 0; } //使用者介面 int users() { int x; link_user LU; printf("\n\n\n\n\t\t\t\t\t--------------------------------\n"); printf("\t\t\t\t\t 用 戶 管 理 系 統 \n"); printf("\t\t\t\t\t 1.新使用者 \n"); printf("\t\t\t\t\t 2.使用者名稱單 \n"); printf("\t\t\t\t\t 3.充值 \n"); printf("\t\t\t\t\t 4.訂單 \n"); printf("\t\t\t\t\t 0.返回 \n"); printf("\t\t\t\t\t--------------------------------\n"); while(scanf("%d",&x)!=0) { if(x==1) { LU=creats(); } if(x==2) { outputuser(LU); } if(x==3) { value(LU); } if(x==4) { foodwrite(LU); } if(x==0) break; } return 0; } //輸出菜譜 void outputfood(link_food LF) { food *p; p=LF->next; printf("\n\t\t\t\t\t 菜 譜 "); printf("\n\t\t\t\t\t-------------------------\n"); printf("\t\t\t\t\t\t菜名 菜價 \n"); printf("\t\t\t\t\t-------------------------\n"); while(p) { printf("\t\t\t\t\t%-13s%-12d元%\n",p->name,p->price); printf("\t\t\t\t\t-------------------------\n"); p=p->next; } } //菜譜 int meun() { int i=0,j=0,k; link_food LF; food *s,*r; char a[10][10]={"酸菜魚","豆花魚","紅燒魚"}; int b[10]={15,12,8}; LF=(food *)malloc(sizeof(food)); LF->next=NULL; r=LF; printf("需要增加新菜品嗎?\n"); printf("1.YES 2,NO\n"); scanf("%d",&k); if(k==1) { int q,p; q=j+3; for(p=0;p<7;p++) { printf("請輸入菜名:\n"); scanf("%s",a[q]); printf("請輸入價格:\n"); scanf("%d",&b[q]); if(strcmp(a[q],"0")==0) break; q++; j++; } } for(j=0;j<10;j++) { if(strcmp(a[j],"0")!=0) { s=(food *)malloc(sizeof(food)); s->price=b[j]; strcpy(s->name,a[j]); r->next=s; s->next=NULL; r=s; } else break; } outputfood(LF); return 0; } //主函式 void main() { int x; welcome(); while(scanf("%d",&x)!=EOF) { choose(x); } }