㈠ 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语言编写的收银台结算程序。
//以下是参考代码有相似结构,数据结构自己设计一下。
//如果没参考价值,手下留情,别点不采纳。
#defineMAXPARKINGPOS100
#defineMAXPRICETYPE3
#defineMAXLINE4096
structdetail
{
charnum[MAXLINE];
charname[MAXLINE];
doublepricePerHour;
time_tstart;
time_tend;
doubleperiod;
doublecost;
};
staticintcurrentParkingNum=0;
staticstructdetaildetailBuf[MAXPARKINGPOS];
staticdoublepriceBuf[MAXPRICETYPE]={11.0,22.0,33.0};
intmain(void){
charbuf[MAXLINE];
structdetail*myParking;
intiChoice,leavingIndex,i,numEexisted;
structtm*begin,*end;
while(true){
selectService:
printf("Servicetype,whatisyourchoice? 1.park 2.leave 3.exit ");
gets(buf);
if(strcmp(buf,"3")==0){
return0;
}
if(strcmp(buf,"1")==0){
//park
if(currentParkingNum==MAXPARKINGPOS){
printf("Sorry,notempty! ");
continue;
}
myParking=detailBuf+currentParkingNum;
printf("yourname: ");
gets(myParking->name);
printf("yourparkingnum: ");
gets(myParking->num);
numEexisted=0;
for(i=0;i<currentParkingNum;i++){
if(strcmp(detailBuf[i].num,myParking->num)==0){
numEexisted=1;
break;
}
}
if(numEexisted!=0){
printf("Thecar%sisin ",myParking->num);
gotoselectService;
}
selectPrice:
printf("Servicecost,whatisyourchoice? ");
for(inti=0;i<MAXPRICETYPE;i++){
printf("%d.$%.2fperhour ",i+1,priceBuf[i]);
}
gets(buf);
iChoice=atoi(buf);
if(!(iChoice>=1&&iChoice<=MAXPRICETYPE)){
printf("Yourchoiceisincorrect! ");
gotoselectPrice;
}
myParking->pricePerHour=priceBuf[iChoice-1];
time(&myParking->start);
currentParkingNum++;
printf("Parckingok! ");
}elseif(strcmp(buf,"2")==0){
//leave
printf("yourparkingnum: ");
gets(buf);
myParking=NULL;
for(i=0;i<currentParkingNum;i++){
if(strcmp(detailBuf[i].num,buf)==0){
myParking=&detailBuf[i];
leavingIndex=i;
break;
}
}
if(myParking==NULL){
printf("Cannotfindyourcar! ");
continue;
}
myParking->end=time(&myParking->end);
myParking->period=difftime(myParking->end,myParking->start);
myParking->cost=myParking->period/3600.0*myParking->pricePerHour;
printf("******CostDetails****** ");
printf("name:%s ",myParking->name);
printf("number:%s ",myParking->num);
printf("price:%.2f ",myParking->pricePerHour);
begin=localtime(&myParking->start);
strftime(buf,sizeof(buf),"%Y-%m-%d%H:%M:%S",begin);
printf("begin:%s ",buf);
end=localtime(&myParking->end);
strftime(buf,sizeof(buf),"%Y-%m-%d%H:%M:%S",end);
printf("end:%s ",buf);
printf("period:%.2fhour(s) ",myParking->period/3600.0);
printf("cost:$%.2f ",myParking->cost);
printf("service:$%.2fperhour ",myParking->pricePerHour);
for(i=leavingIndex;i<currentParkingNum;i++){
if(i+1<currentParkingNum){
detailBuf[i]=detailBuf[i+1];
}
}
detailBuf[currentParkingNum-1].cost=0.0;
detailBuf[currentParkingNum-1].end=0;
detailBuf[currentParkingNum-1].name[0]='