示例#1
0
//客户端界面
void mainPage(){
	while(1){
		printf("  欢迎使用迷你ATM机\n");
		printf("---------------------\n");
		printf("[1] 开户");
		printf("      [2] 销户\n");
		printf("[3] 存钱");
		printf("      [4] 取钱\n");
		printf("[5] 查询");
		printf("      [6] 转账\n");
		printf("[0] 退出\n");
		printf("---------------------\n");
		printf("请选择:\n");
		int num = 0;
		scanf("%d",&num);
		switch(num){
			case 1:createUser();break;
			case 2:destroyUser();break;
			case 3:saveMoney();break;
			case 4:getMoney();break;
			case 5:checkMoney();break;
			case 6:moveMoney();break;
			case 0:printf("谢谢使用,再见!\n");return ;
			default:printf("输入错误\n");
		}
	}
}
示例#2
0
void *handle(void *arg)
{
	char recvbuff[256];
	char sendbuff[256];
	int n;
	memset(recvbuff, '\0', 256);
	memset(sendbuff, '\0', 256);

	int connfd = *(int *)arg;
	struct Account acc;
	struct Account p;
	while(1)
	{
		n=read(connfd,recvbuff,sizeof(recvbuff));
		recvbuff[n]=0;
		printf("%s\n",recvbuff);

		
		if(strcmp(recvbuff,"1")==0)
		{
			
			memset(recvbuff, '\0', 256);
			n=read(connfd,recvbuff,sizeof(recvbuff));
			recvbuff[n]=0;
			strcpy(acc.name,recvbuff);
			printf("%s\n",acc.name);

			memset(recvbuff, '\0', 256);
			n=read(connfd,recvbuff,sizeof(recvbuff));
			recvbuff[n]=0;
			strcpy(acc.password,recvbuff);
			printf("%s\n",acc.password);

			memset(recvbuff, '\0', 256);
			n=read(connfd,recvbuff,sizeof(recvbuff));
			recvbuff[n]=0;
			strcpy(acc.money,recvbuff);
			printf("%s\n",acc.money);
			createUser(acc);
			strcpy(sendbuff,"creat a new user success");
			write(connfd,sendbuff,sizeof(sendbuff));
		}

		if(strcmp(recvbuff,"2")==0)
		{
			memset(recvbuff, '\0', 256);
			n=read(connfd,recvbuff,sizeof(recvbuff));
			recvbuff[n]=0;
			strcpy(acc.name,recvbuff);
			printf("%s\n",acc.name);

			memset(recvbuff, '\0', 256);
			n=read(connfd,recvbuff,sizeof(recvbuff));
			recvbuff[n]=0;
			strcpy(acc.password,recvbuff);
			printf("%s\n",acc.password);
			destoryUser(acc);
			
			memset(sendbuff, '\0', 256);
			strcpy(sendbuff,"destroyUser success");
			write(connfd,sendbuff,sizeof(sendbuff));
		}
		if(strcmp(recvbuff,"3")==0)
		{
			memset(recvbuff, '\0', 256);
			n=read(connfd,recvbuff,sizeof(recvbuff));
			recvbuff[n]=0;
			strcpy(acc.name,recvbuff);
			printf("%s\n",acc.name);

			memset(recvbuff, '\0', 256);
			n=read(connfd,recvbuff,sizeof(recvbuff));
			recvbuff[n]=0;
			strcpy(acc.password,recvbuff);
			printf("%s\n",acc.password);

			memset(recvbuff, '\0', 256);
			n=read(connfd,recvbuff,sizeof(recvbuff));
			recvbuff[n]=0;
			strcpy(acc.money,recvbuff);
			printf("%s\n",acc.money);
			
			p=saveMoney(acc);
			if(strcmp(p.password,acc.password)==0)
			{
				memset(sendbuff, '\0', 256);
				strcpy(sendbuff,p.money);
				write(connfd,sendbuff,sizeof(sendbuff));
			}
			else
			{
				memset(sendbuff, '\0', 256);
				strcpy(sendbuff,"password wrong");
				write(connfd,sendbuff,sizeof(sendbuff));
			}
		}

		if(strcmp(recvbuff,"4")==0)
		{
			memset(recvbuff, '\0', 256);
			n=read(connfd,recvbuff,sizeof(recvbuff));
			recvbuff[n]=0;
			strcpy(acc.name,recvbuff);
			printf("%s\n",acc.name);

			memset(recvbuff, '\0', 256);
			n=read(connfd,recvbuff,sizeof(recvbuff));
			recvbuff[n]=0;
			strcpy(acc.password,recvbuff);
			printf("%s\n",acc.password);

			memset(recvbuff, '\0', 256);
			n=read(connfd,recvbuff,sizeof(recvbuff));
			recvbuff[n]=0;
			strcpy(acc.money,recvbuff);
			printf("%s\n",acc.money);
			
			p=getMoney(acc);
			if(strcmp(p.password,acc.password)==0)
			{
				memset(sendbuff, '\0', 256);
				strcpy(sendbuff,p.money);
				write(connfd,sendbuff,sizeof(sendbuff));
			}
			else
			{
				memset(sendbuff, '\0', 256);
				strcpy(sendbuff,"password wrong");
				write(connfd,sendbuff,sizeof(sendbuff));
			}
		}
		if(strcmp(recvbuff,"5")==0)
		{
			memset(recvbuff, '\0', 256);
			n=read(connfd,recvbuff,sizeof(recvbuff));
			recvbuff[n]=0;
			strcpy(acc.name,recvbuff);
			printf("%s\n",acc.name);

			memset(recvbuff, '\0', 256);
			n=read(connfd,recvbuff,sizeof(recvbuff));
			recvbuff[n]=0;
			strcpy(acc.password,recvbuff);
			printf("%s\n",acc.password);
			p=checkMoney(acc);
			if(strcmp(p.password,acc.password)==0)
			{
				memset(sendbuff, '\0', 256);
				strcpy(sendbuff,p.money);
				write(connfd,sendbuff,sizeof(sendbuff));
			}
			else
			{
				memset(sendbuff, '\0', 256);
				strcpy(sendbuff,"password wrong");
				write(connfd,sendbuff,sizeof(sendbuff));
			}
		}
	}
}
示例#3
0
文件: open.c 项目: Jvinzhuang/code
int main()
{
	int msgid1 = msgget(key1,0);
	if(msgid1 == -1)
	{
		perror("获取消息队列一失败");
		printf("服务启动失败\n");
		exit(-1);
	}
	int msgid2 = msgget(key2,0);
	if(msgid2 == -1)
	{
		perror("获取消息队列二失败");
		printf("服务启动失败\n");
		exit(-1);
	}
   //开始接受消息
	while(1)
	{
		struct Msg msg;
		struct Account accMove,accResult;
		if(msgrcv(msgid1,&msg,sizeof(msg.acc),0,0) <= 0)
		{
			 continue;
		}
		if(msg.mtype == M_OPEN)
		{
		   int id = generator_id();
		   accMove = msg.acc;
		   accMove.id = id;
		   if(createUser(accMove) == -1)
		   {
			    printf("开户失败\n");
				  msg.mtype = M_FAILED;
		   }
		   else
		   {
			   printf("开户成功\n");
				 msg.mtype = M_SUCESS;
			}
			msgsnd(msgid2,&msg,sizeof(msg.acc),0);
		}
		else if(msg.mtype == M_DESTROY)
		{
          if(destoryUser(msg.acc) == -1)
			 {
				 printf("销户失败\n");
				 msg.mtype = M_FAILED;
			 }
			 else
		    {
				 printf("销户成功\n");
				 msg.mtype = M_SUCESS;
			 }
			 msgsnd(msgid2,&msg,sizeof(msg.acc),0);
		}
		else if(msg.mtype == M_SAVE)
		{
         if(saveMoney(msg.acc, &accResult) == -1)
			{
				printf("存钱失败\n");
				msg.mtype = M_FAILED;
			}
			else
			{
				printf("存钱成功\n");
				msg.mtype = M_SUCESS;
			}
			//发送是否存钱成功的标志
			msg.acc.balance = accResult.balance;
			msgsnd(msgid2,&msg,sizeof(msg.acc),0);
		}
		else if(msg.mtype == M_TAKE)
		{
			 if(getMoney(msg.acc,&accResult) == -1)
			 {
				  printf("取钱失败\n");
				  msg.mtype = M_FAILED;
			 }
			 else
			 {
				  printf("取钱成功\n");
				  msg.mtype = M_SUCESS;
			 }
			 //将服务器处理的结果发送给客户端
			 msg.acc.balance = accResult.balance;
			 msgsnd(msgid2,&msg,sizeof(msg.acc),0);
		}
		else if(msg.mtype == M_QUERY)
		{
			 if(checkMoney(msg.acc,&accResult) == -1)
			 {
				  printf("查询失败\n");
				  msg.mtype = M_FAILED;
			 }
			 else
			 {
				 printf("查询成功\n");
				 msg.mtype = M_SUCESS;
			 }
			 //发送查询出的余额
			 msg.acc.balance = accResult.balance;
			 msgsnd(msgid2,&msg,sizeof(msg.acc),0);
		}
		else if(msg.mtype == M_TRANSF)
		{
			 //定义一个消息结构体,来接受转入的帐号
			 struct Msg msgTemp;
			 msgrcv(msgid1,&msgTemp,sizeof(msgTemp.acc),0,0);
			 if(moveMoney(msg.acc,msgTemp.acc,&accResult) == -1)
			 {
				 printf("转入失败\n");
				 msg.mtype = M_FAILED;
			 }
			 else
			 {
				 printf("转入成功\n");
				 msg.mtype = M_SUCESS;
			 }
			 msg.acc.balance = accResult.balance;
			 printf("转帐之后的结果是:%lf\n",msg.acc.balance);
			 //发送处理结果到客户端
			 msgsnd(msgid2,&msg,sizeof(msg.acc),0);
		}
	}
   return 0;
}