C语言编写点菜系统

C语言编写点菜系统,第1张

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

#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

}

#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=0i<=3i++)

{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=ibreak}

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

}

for(i=0,m=0i<=ji++)

m=m+a[i]

printf(“总金额悄辩雹%d\n”,m)

}

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

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

程序是在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}

}

vector<int>menuvec //保存选了那些菜单项

vector<int>foodvec //保存选了那些食物

vector<int>countvec//保存每个食物都选了几份

bool dinner()

{

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

{

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 = 1i <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

vector<int>::iterator menuIter = menuvec.begin()

vector<int>槐态::iterator foodIter = foodvec.begin()

vector<int>::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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12527368.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存