#include "client.h"
int id_ask;
int id_reply;
int main()
{
int num;
id_ask = msgget(KEY_ASK,IPC_CREAT|0644);
id_reply = msgget(KEY_REPLY,IPC_CREAT|0644);
while(num = show())
{
if (num < 0 || num >6)
{
printf("非法输入请重新输入\n");
continue;
}
switch(num)
{
case 1:
open_kh();
break;
case 2:
destory();
break;
case 3:
save();
break;
case 4:
take();
break;
case 5:
trans_w();
break;
case 6:
look();
break;
}
}
return 0;
}
int show()
{
int num;
printf("请输入要办理的业务\n");
printf("—————1.开户—————\n");
printf("—————2.销户—————\n");
printf("—————3.存钱—————\n");
printf("—————4.取钱—————\n");
printf("—————5.转账—————\n");
printf("—————6.查询—————\n");
printf("—————0.退出—————\n");
scanf("%d",&num);
return num;
}
void open_kh(void)
{
struct TAG buf,rbuf;
memset(&buf,0,sizeof(buf));
memset(&rbuf,0,sizeof(rbuf));
buf.type = OPEN;
printf("输入姓名\n");
scanf("%s",buf.name);
printf("输入密码\n");
scanf("%s",buf.passwd);
printf("输入起始金额\n");
scanf("%f",&buf.money);
//向服务器发送开户请求
msgsnd(id_ask,&buf,sizeof(buf)-sizeof(long),0);
//接收服务器反馈开户结果
msgrcv(id_reply,&rbuf,sizeof(rbuf)-sizeof(long),OPEN,0);
if(strlen(rbuf.err) != 0)
printf("open err:%s",rbuf.err);
else
printf("新开账户:%d, 密码:%s ,余额:%.2f",rbuf.id,rbuf.passwd,rbuf.money);
}
void destory(void)//销户
{
struct TAG acc,racc;
memset(&acc,0,sizeof(acc));
memset(&racc,0,sizeof(racc));
acc.type = DESTROY;
printf("输入要销户的账号\n");
scanf("%d",&acc.id);
printf("输入要销户账号的密码\n");
scanf("%s",acc.passwd);
msgsnd(id_ask,&acc,sizeof(acc)-sizeof(long),0);
msgrcv(id_reply,&racc,sizeof(racc)-sizeof(long),DESTROY,0);
if(strlen(racc.err) == 0)
printf("销户成功\n");
else
{
printf("销户失败:%s\n",racc.err);
}
}
void look(void)//查询
{
struct TAG buf,rbuf;
memset(&buf,0,sizeof(buf));
memset(&rbuf,0,sizeof(rbuf));
buf.type = LOOK;
printf("输入要查询的账号\n");
scanf("%d",&buf.id);
printf("输入要查询账号的密码\n");
scanf("%s",buf.passwd);
msgsnd(id_ask,&buf,sizeof(buf)-sizeof(long),0);
msgrcv(id_reply,&rbuf,sizeof(rbuf)-sizeof(long),LOOK,0);
if(strlen(rbuf.err) == 0)
printf("余额为:%.2f\n",rbuf.money);
else
{
printf("查询失败:%s\n",rbuf.err);
}
}
void save(void)//存钱
{
struct TAG buf,rbuf;
memset(&buf,0,sizeof(buf));
memset(&rbuf,0,sizeof(rbuf));
buf.type = SAVE;
printf("输入存钱的账号\n");
scanf("%d",&buf.id);
printf("输入存钱账号的密码\n");
scanf("%s",buf.passwd);
printf("输入要存钱的金额\n");
scanf("%f",&buf.money);
msgsnd(id_ask,&buf,sizeof(buf)-sizeof(long),0);
msgrcv(id_reply,&rbuf,sizeof(rbuf)-sizeof(long),SAVE,0);
if(strlen(rbuf.err) == 0)
printf("存钱成功,余额为:%.2f\n",rbuf.money);
else
{
printf("存钱失败:%s\n",rbuf.err);
}
}
void take(void)//取钱
{
struct TAG buf,rbuf;
memset(&buf,0,sizeof(buf));
memset(&rbuf,0,sizeof(rbuf));
buf.type = TAKE;
printf("输入取钱的账号\n");
scanf("%d",&buf.id);
printf("输入取钱账号的密码\n");
scanf("%s",buf.passwd);
printf("输入要取钱的金额\n");
scanf("%f",&buf.money);
msgsnd(id_ask,&buf,sizeof(buf)-sizeof(long),0);
msgrcv(id_reply,&rbuf,sizeof(rbuf)-sizeof(long),TAKE,0);
if(strlen(rbuf.err) == 0)
printf("取钱成功,余额为:%.2f\n",rbuf.money);
else
{
printf("取钱失败:%s\n",rbuf.err);
}
}
void trans_w(void)//转账
{
struct TAG buf2,buf1,rbuf1,rbuf2;
memset(&buf1,0,sizeof(buf1));
memset(&buf2,0,sizeof(buf2));
memset(&rbuf1,0,sizeof(rbuf1));
memset(&rbuf2,0,sizeof(rbuf2));
buf1.type = TRANS;
buf2.type = TRANS;
printf("输入转出的账号\n");
scanf("%d",&buf1.id);
printf("输入转出账号的密码\n");
scanf("%s",buf1.passwd);
printf("输入要转出的金额\n");
scanf("%f",&buf1.money);
printf("输入转入的账号\n");
scanf("%d",&buf2.id);
msgsnd(id_ask,&buf1,sizeof(buf1)-sizeof(long),0);
msgrcv(id_reply,&rbuf1,sizeof(rbuf1)-sizeof(long),TRANS,0);
if(strlen(rbuf1.err) == 0)
{
printf("转出成功,余额为:%.2f\n",rbuf1.money);
msgsnd(id_ask,&buf2,sizeof(buf2)-sizeof(long),0);
msgrcv(id_reply,&rbuf2,sizeof(rbuf2)-sizeof(long),TRANS,0);
if(strlen(rbuf2.err) == 0)
{
printf("转入成功\n");
}
else
{
printf("转入失败:%s\n",rbuf2.err);
}
}
else
{
printf("转出失败:%s\n",rbuf1.err);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
0503(复件).rar (20个子文件)
0503(复件)
save.c 1KB
.vscode
c_cpp_properties.json 403B
settings.json 42B
take.c 2KB
open_kh.h 114B
destory.h 70B
Makefile 214B
look.h 64B
trans.c 2KB
server.c 834B
client.c 5KB
common.h 834B
client.h 190B
account
destory.c 1KB
look.c 1KB
take.h 64B
server.h 127B
trans.h 66B
save.h 64B
open_kh.c 945B
共 20 条
- 1
资源评论
ckidsdscsd
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- MyBatis进阶技巧:探索动态SQL的无限可能.md
- HM2300C-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- HM2300B-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 员工解除劳动合同申请表.pdf
- 物模块模型代码,前往设计物模块所属
- mybatis动态sql(使用<where>标签来处理多个查询条件)
- Java面试手册,助力大家面试过五关斩六将,面试成功
- HITK0303MP-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- mybatis动态sql之xml增删改查批量操作示例EmpMapper.xml
- C/C++内存检测工具Sanitizers
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功