#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<arpa/inet.h>
#include<netinet/in.h>
#define SERV_PORT 8000 //端口号
//员工信息结构体
struct employee
{
char name[32];
int age;
char phone[32];
char worknumber[32];
};
//客户端发来的命令数据包结构体
struct client_command
{
int cmd;
struct employee emp;
};
struct server_response//服务器响应的数据包的结构体
{
int code;
struct employee emp;
};
int main()
{
int fd;
unsigned short port; //port
struct in_addr ia; //adress
int cmd; //指令
struct sockaddr_in si;
port=htons(8000);
inet_aton("127.0.0.1",&ia);
si.sin_family=AF_INET;
si.sin_port=port;
si.sin_addr=ia;
fd=socket(AF_INET,SOCK_STREAM,0);
int res;
res=connect(fd,(struct sockaddr *)&si/*服务器通信尸体的信息*/,sizeof(struct sockaddr_in));
char str[]="****";
int data=1000; //简单变量
struct client_command cc;
struct server_response rs;
printf("欢迎使用员工管理系统!\n");
if(res==-1)
perror("Connect");
else
{
while(1)
{
printf("请您从下面选择您要进行的操作:\n");
printf("1.增加员工信息\n");
printf("2.查询员工信息\n");
printf("3:修改员工信息\n");
printf("4:删除员工信息\n");
printf("5:退出程序 \n");
scanf("%d",&cmd);
if(cmd == 1)
{
cc.cmd=1; //发命令
printf("请您输入员工姓名:");
scanf("%s", cc.emp.name);
printf("请您输入员工年龄:");
scanf("%d",&cc.emp.age);
printf("请您输入员工电话:");
scanf("%s", cc.emp.phone);
printf("请您输入员工工号:");
scanf("%d",cc.emp.worknumber);
res=send(fd,&cc,sizeof(struct client_command),0);
if(res==-1)
printf("连接出错。\n");
else
printf("已发送。\n");
}
else if(cmd == 2)
{
cc.cmd = 2;
strcpy(cc.emp.name,"小明");
cc.emp.age=22;
strcpy(cc.emp.phone,"123456789");
strcpy(cc.emp.worknumber,"88");
res=send(fd,&cc,sizeof(struct client_command),0);
}
if(cmd == 3)
{
cc.cmd=3;
printf("请您输入修改后的员工姓名:");
scanf("%s", cc.emp.name);
printf("请您输入修改后员工年龄:");
scanf("%d",&cc.emp.age);
printf("请您输入修改后员工电话:");
scanf("%s", cc.emp.phone);
printf("请您输入修改后的员工工号:");
scanf("%d", cc.emp.worknumber);
res=send(fd,&cc,sizeof(struct client_command),0);
if(res==2)
printf("连接出错。\n");
else
printf("已发送。\n");
}
if(cmd == 4)
{
cc.cmd=4;
printf("请您要删除的员工姓名:");
scanf("%s", cc.emp.name);
res=send(fd,&cc,sizeof(struct client_command),0);
if(res==2)
printf("连接出错。\n");
else
printf("已发送。\n");
}
else
{
printf("退出本程序!\n");
break;
}
res = recv(fd, &rs, sizeof(struct server_response), 0);
if (res > 0)
{
switch (rs.code)
{
case 101:
printf("服务器响应:新员工添加成功。\n");
break;
case 102:
printf("命令不支持。\n");
break;
case 103:
//显示收到的每一个记录,一行一个员工记录
printf("员工姓名:%s",rs.emp.name);
printf("\t员工年龄:%d",rs.emp.age);
printf("\t员工电话:%s\n",rs.emp.phone);
printf("员工工号:%d",rs.emp.worknumber);
break;
case 104:
printf("数据库文件打开出现问题。");
break;
case 106:
printf("显示完毕!");
break;
}
}
if (res =3)
{
switch (rs.code)
{
case 107:
printf("服务器响应:员工修改成功。\n");
break;
case 108:
printf("命令不支持。\n");
break;
} }
if (res =4)
{
switch (rs.code)
{
case 112:
printf("服务器响应:员工删除成功。\n");
break;
case 110:
printf("命令不支持。\n");
break;
case 111:
printf("选择删除员工姓名:%s",rs.emp.name);
printf("\t选择删除员工的年龄:%d",rs.emp.age);
printf("\t选择删除员工的电话:%s\n",rs.emp.phone);
printf("选择删除的员工工号:%d",rs.emp.worknumber);
break;
}
}
else
{printf("连接已丢失!\n");}}}
close(fd);
}