内容
说明: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); } }