Exemple #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");
		}
	}
}
Exemple #2
0
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;
}