您的位置:

c语言点菜实例,点菜系统c语言

本文目录一览:

用C语言为学校食堂做一个点菜系统,当用户选择自己喜欢的菜,所消费的钱就能显示出来。 菜谱封面如下:

#include stdio.h

void main()

{

int a[4],i,j,m;

char t;

printf(”********************************* \n1.红烧肉5.0元2.炸鸡翅3.0元\n3.炒芹菜2.0元4.五香蛋1.0元\n5.退出\n********************************\n\n”);

printf(“请输入您点的菜\n”);

for(i=0;i=3;i++)

{ scanf(“%d”,a[i]);j=i;

if(i=2)

{ printf(“是否继续点菜\n回复Y OR N\n”);

scanf(“%c”,t);

if(t==Y)

continue;

else if(t==N){j=i;break;}

else {printf(“error,自动结算\n”);j=i;break;}}

}

for(i=0,m=0;i=j;i++)

m=m+a[i];

printf(“总金额%d\n”,m);

}

//手机编写,错误难免,问题不大,多多包含

C语言程序编一个点菜系统??咋做呀

#include#include#define ROW1 2#define COL1 2#define ROW2 COL1#define COL2 4int main(void){int arr1[ROW1][COL1]={{1,2},{3,4}},arr2[ROW2][COL2]={{1,2,1,2},{1,2,1,2}},arr3[ROW2][COL2],i,j,k;for(i=0;i

c语言点菜系统

// 下面是前期的点餐系统的基础数据维护,其它功能你可以自己尝试写,如果遇到什么问题可以提出来追问喔,相信你可以解决的(我怕代码太多提交会受字数限制)。

// mm.h 头文件

#includestdio.h

#includestdlib.h

#define MENU_NUM_MAX 100  // 假设有100种菜式

#define LEN sizeof(struct MenuInfo)

struct MenuInfo 

{

int ID;

char MenuName[20];

float price;

}Menu[MENU_NUM_MAX];

/*   基础数据维护 */

void AddMenu()

{

FILE *fp;

int menu_num;

printf("\t\t 你要添加多少种菜?:");

scanf("%d",menu_num);

for(int i=0;imenu_num;i++)

{

printf("\n"); // added this line

        printf("\t\t请输入ID:");

scanf("%d",Menu[i].ID);

printf("\t\t请输入菜名:");

scanf("%s",Menu[i].MenuName);

printf("\t\t请输入[%s]菜的价格:",Menu[i].MenuName);

Menu[i].price=0.0f; //initial float price

scanf("%f",Menu[i].price);

fflush(stdin);

}

if((fp=fopen("MenuInfo.dat","ab"))==NULL) // open binary file 

{

printf("Can't open file\n");

exit(1);

}

for(int j=0;jmenu_num;j++)

{   

if(fwrite(Menu[j],LEN,1,fp)!=1) //writing data to binary file

printf("Error writing file.\n");

}

   fclose(fp); // close file point

}

void DisplayMenuInfo()

{

    FILE *fp;

printf("\n\t\tID  菜名\t\t价格\n"); // column headings

    if((fp=fopen("MenuInfo.dat","rb"))==NULL) // open binary file 

{

printf("Can't open file\n");

exit(1);

}

int i=0;

do

{

        fseek(fp,i*LEN,SEEK_SET); // move file head location

if(fread(Menu[i],LEN,1,fp)) // read data save to structure variable

{

printf("\t\t%d  %5s\t\t%5.1f元\n",Menu[i].ID,Menu[i].MenuName,Menu[i].price);

i++;

}

}while(!feof(fp));

fclose(fp);

}

void DeleteToMenu()

{

FILE *fp; 

int MenuID;

int todelete=-1;

int i=0;

printf("请输入要删除的菜名的ID:");

scanf("%d",MenuID);

/* load or reload the file and check that record with that ID exists */

if((fp=fopen("MenuInfo.dat","rb"))==NULL) // open binary file 

{

printf("Can't open file\n");

exit(1);

}

do

{

fseek(fp,i*LEN,SEEK_SET); // move file head location

if(fread(Menu[i],LEN,1,fp))

{

if (Menu[i].ID==MenuID) todelete=i;   

i++;

}

}while(!feof(fp));

fclose(fp);

if (todelete==-1)

{

printf("A menu with that ID doesn't exist\n");

}

else

{

/* write records back to file excluding one to be deleted */

if((fp=fopen("MenuInfo.dat","wb"))==NULL) // open binary file 

{

printf("Can't open file\n");

exit(1);

}

for(int j=0;ji;j++)

if (j==todelete) continue;  /* skip record to be deleted */ 

if(fwrite(Menu[j],LEN,1,fp)!=1) //writing data to binary file

printf("Error writing file.\n");

}

fclose(fp); // close file point

}

}

void FindMenu()

{

FILE *fp;

int MenuID;

bool find_mark=false;

printf("\n\t\t请输入你要查找的菜名ID:");

scanf("%d",MenuID);

    

printf("\n\t\tID  菜名\t\t价格\n"); // column headings

if((fp=fopen("MenuInfo.dat","rb"))==NULL) // open binary file 

{

printf("Can't open file\n");

exit(1);

}

    int i=0;

do

{

        fseek(fp,i*LEN,SEEK_SET); // move file head location

fread(Menu[i],LEN,1,fp);  // read data save to structure variable

if(Menu[i].ID==MenuID)

{

printf("\t\t%d  %5s\t\t%5.1f元\n",Menu[i].ID,Menu[i].MenuName,Menu[i].price);

find_mark=true;

break;

}

i++;

}while(!feof(fp));

if(!find_mark) printf("\n\t 尊敬的客户:我们餐厅没有你要点的菜喔,你可以试试我们的招牌菜啊^-^.\n");

fclose(fp);

}

/*   基础数据维护完毕   */

// sc.cpp主文件

#include stdio.h

#include stdlib.h

#include "mm.h"

void main(void)

{

//AddMenu();

//DisplayMenuInfo();

//FindMenu();

}

C语言编写点菜系统

简单的点菜系统,可供学习:

#include stdio.h

#include stdlib.h

#include errno.h

#include string.h

#include netdb.h

#include sys/types.h

#include netinet/in.h

#include sys/socket.h

#define SERVPORT 3333

#define MAXDATASIZE 100 /*每次最大数据传输量 */

int main(int argc, char *argv[])

{

int sockfd, recvbytes;

char buf[MAXDATASIZE];

struct hostent *host;

struct sockaddr_in serv_addr;

if (argc 2)

{ fprintf(stderr,"Please enter the server's hostname!\

"); exit(1); }

if ((host=gethostbyname(argv[1]))==NULL)

{ perror("gethostbyname出错!"); exit(1); }

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)

{ perror("socket创建出错!"); exit(1); }

//初始化客户端

serv_addr.sin_family=AF_INET;

serv_addr.sin_port=htons(SERVPORT);

serv_addr.sin_addr = *((struct in_addr *)host-h_addr);

bzero((serv_addr.sin_zero),8);

//connect

if (connect(sockfd, (struct sockaddr *)serv_addr, sizeof(struct sockaddr)) == -1)

{ perror("connect error!"); exit(1); }

//recv

if ((recvbytes=recv(sockfd, buf, MAXDATASIZE, 0)) ==-1)

{ perror("recv出错!"); exit(1); }

buf[recvbytes] = '\\0';

printf("Received: %s",buf);

close(sockfd);

return 0;

}

客户端#include stdio.h

#include stdlib.h

#include errno.h

#include string.h

#include sys/types.h

#include netinet/in.h

#include sys/socket.h

#include sys/wait.h

#define SERVPORT 3333 /*服务器监听端口号 */

#define BACKLOG 10 /* 最大同时连接请求数 */

int main()

{

int sockfd,client_fd,sin_size; /*sock_fd:监听socket;client_fd:数据传输socket */

struct sockaddr_in my_addr; /* 本机地址信息 */

struct sockaddr_in remote_addr; /* 客户端地址信息 */

//创建一个套接字,PF_INET,流式,

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)

{ perror("socket"); exit(1); }

//初始化服务端

my_addr.sin_family=AF_INET;

my_addr.sin_port=htons(SERVPORT);

my_addr.sin_addr.s_addr = INADDR_ANY;

bzero((my_addr.sin_zero),8);

//将套接字地址与所创建的套接字号联系起来

if (bind(sockfd, (struct sockaddr *)my_addr, sizeof(struct sockaddr)) == -1)

{ perror("bind"); exit(1); }

//愿意接收连接

if (listen(sockfd, BACKLOG) == -1)

{ perror("listen"); exit(1); }

while(1)

{

sin_size = sizeof(struct sockaddr_in);

if ((client_fd = accept(sockfd, (struct sockaddr *)remote_addr, sin_size)) == -1)

{ perror("accept"); continue; }

printf("received a connection from %s\

", inet_ntoa(remote_addr.sin_addr));

if (!fork()) { /* 子进程代码段 */

if (send(client_fd, "Hello, you are connected!\

", 26, 0) == -1)

perror("send"); close(client_fd); exit(0); }

close(client_fd); }

return 0;

}

C语言菜单点菜并计算价格问题

输出的格式对齐你自己可以调一下,程序本身没有任何问题。

程序是在Visual Studio 2008上编译运行的。

#include "stdafx.h"

#include iostream

#include vector

#include string

using namespace std;

char menu[6][8][16]={

{"菜单","开胃菜","主菜","主食","饭后甜点","饮料"},

{"开 胃 菜","烧椒皮蛋","蓝莓山药墩","竹笋干炒肉","干煎野山菌","小炒黄牛肉"},

{"主 菜","菠萝古老肉","水煮鱼","茄汁基围虾","盐焗手撕鸡","红烧黄花鱼","蚝油生菜","金牌蒜香骨"},

{"主 食","三鲜水饺","手擀面","米饭"},

{"饭后甜点","草莓奶昔","冰激凌","蛋糕"},

{"饮 料","雪碧","蔬菜汁","啤酒","果汁"},

};

double price[6][8]={

{0},

{0,8,10,8,13,12},

{0,15,20,35,30,28,8,18},

{0,15,12,2},

{0,10,16,10},

{0,5,8,8,8}

};

vectorint menuvec; //保存选了那些菜单项

vectorint foodvec; //保存选了那些食物

vectorint countvec; //保存每个食物都选了几份

bool dinner()

{

for(int i = 0; i 6; i++)

{

if (i == 0)

{

cout menu[0][i] ;

cout":"endl;

}

else

{

cout " " i ".";

cout menu[0][i] endl;

}

}

cout " ""0点餐结束"endl;

int imenu = 0; //选择菜单项

cout "请选择 ";

cin imenu;

if (imenu == 0)

return false;

cout " " imenu "." menu[0][imenu] endl;

for(int i = 1; i 8 ; i ++)

{

if (strcmp(menu[imenu][i],"") == 0)//如果没有此项食物则退出输出

break;

cout " " i "." menu[imenu][i] " " price[imenu][i] endl;

}

cout " 0 返回" endl;

int ifood = 0;//选择要点的食物

int icount = 0;//选择要点的食物的份数

cout "请选择";

cin ifood ;

if (ifood == 0)

return true;

cout "你点的是" menu[imenu][ifood] ",""请问你要几分:";

cin icount;

menuvec.push_back(imenu);

foodvec.push_back(ifood);

countvec.push_back(icount);

return true;

}

int main()

{

while(dinner())

{

system("cls");

}

system("cls");

cout "你点的菜单是:" endl;

cout " 菜名 "" 单价 "" 数量 " " 价格 " endl;

vectorint::iterator menuIter = menuvec.begin();

vectorint::iterator foodIter = foodvec.begin();

vectorint::iterator countIter = countvec.begin();

double pricesum = 0; //计算总价钱

for(;menuIter != menuvec.end(),foodIter!= foodvec.end(),countIter != countvec.end();menuIter++,foodIter++,countIter++)

{

int menutemp = *menuIter;

cout menu[0][menutemp];

cout ":";

int foodtemp = *foodIter;

cout menu[menutemp][foodtemp];

cout " " price[menutemp][foodtemp];

int counttemp = *countIter;

cout " "counttemp;

cout " " counttemp*price[menutemp][foodtemp] endl;

pricesum += counttemp*price[menutemp][foodtemp] ;

}

cout "-----------------------------------------------------------------------------"endl;

cout " ""总价是 " pricesum endl;

}