套接字方式编写员工管理系统的输入、修改、浏览、查询、删除员工信息功能服务端的具体代码
时间: 2023-07-10 11:09:24 浏览: 109
以下是一个简单的使用套接字方式实现员工管理系统的服务端代码:
```python
import socket
import threading
# 员工信息数据库,示例数据
employees = [
{'id': '001', 'name': '张三', 'age': 25, 'position': '经理'},
{'id': '002', 'name': '李四', 'age': 28, 'position': '技术员'},
{'id': '003', 'name': '王五', 'age': 30, 'position': '销售员'},
]
# 处理客户端请求的线程函数
def handle_client_request(client_socket):
while True:
# 接收客户端发送的请求数据
recv_data = client_socket.recv(1024)
if recv_data:
# 解析客户端请求数据,根据请求类型进行相应操作
recv_str = recv_data.decode('utf-8')
recv_list = recv_str.split(',')
if recv_list[0] == '1': # 查询员工信息
emp_id = recv_list[1]
emp_info = None
for emp in employees:
if emp['id'] == emp_id:
emp_info = emp
break
if emp_info:
# 将查询到的员工信息发送给客户端
send_str = '{},{},{},{}'.format(emp_info['id'], emp_info['name'], emp_info['age'], emp_info['position'])
client_socket.send(send_str.encode('utf-8'))
else:
client_socket.send('not found'.encode('utf-8'))
elif recv_list[0] == '2': # 添加员工信息
emp_id = recv_list[1]
emp_name = recv_list[2]
emp_age = int(recv_list[3])
emp_position = recv_list[4]
emp_info = {'id': emp_id, 'name': emp_name, 'age': emp_age, 'position': emp_position}
employees.append(emp_info)
client_socket.send('ok'.encode('utf-8'))
elif recv_list[0] == '3': # 修改员工信息
emp_id = recv_list[1]
emp_name = recv_list[2]
emp_age = int(recv_list[3])
emp_position = recv_list[4]
for emp in employees:
if emp['id'] == emp_id:
emp['name'] = emp_name
emp['age'] = emp_age
emp['position'] = emp_position
break
client_socket.send('ok'.encode('utf-8'))
elif recv_list[0] == '4': # 删除员工信息
emp_id = recv_list[1]
for emp in employees:
if emp['id'] == emp_id:
employees.remove(emp)
break
client_socket.send('ok'.encode('utf-8'))
elif recv_list[0] == '5': # 浏览所有员工信息
emp_infos = []
for emp in employees:
emp_info_str = '{},{},{},{}'.format(emp['id'], emp['name'], emp['age'], emp['position'])
emp_infos.append(emp_info_str)
send_str = ';'.join(emp_infos)
client_socket.send(send_str.encode('utf-8'))
else:
# 客户端断开连接,退出线程
break
client_socket.close()
# 启动服务端
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('127.0.0.1', 8888))
server_socket.listen(128)
print('服务器已启动,等待客户端连接...')
while True:
# 等待客户端连接
client_socket, client_addr = server_socket.accept()
print('客户端已连接:', client_addr)
# 创建新的线程处理客户端请求
t = threading.Thread(target=handle_client_request, args=(client_socket,))
t.start()
```
以上代码实现了查询、添加、修改、删除和浏览员工信息的功能。客户端可以通过 socket 套接字连接到服务端,并发送请求数据进行相应操作。服务端接收客户端请求数据后,解析请求类型和参数,并根据请求类型进行相应的操作,最后将结果发送给客户端。服务端使用多线程技术,可以同时处理多个客户端的请求。
阅读全文