用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语言菜单点菜并计算价格问题
输出的格式对齐你自己可以调一下,程序本身没有任何问题。
程序是在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;
}
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语言点菜系统
// 下面是前期的点餐系统的基础数据维护,其它功能你可以自己尝试写,如果遇到什么问题可以提出来追问喔,相信你可以解决的(我怕代码太多提交会受字数限制)。
// 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语言 餐馆点菜系统程序代码c语言
本文路径:http://scgulin.cn/article/doehigd.html