python小项目电子词典之客户端

from socket import *
import time
import os, sys
import getpass


def do_register(s):
while True:
name = input('请输入名称')
passwd = getpass.getpass('请输入密码')
passwd1 = getpass.getpass('Again')
if (' ' in name) or (' ' in passwd):
print('用户名或密码不允许由空格')
continue
if passwd != passwd1:
print('两次密码不一致请重新输入')
continue

name_post = 'Z {} {}'.format(name, passwd)
print(name_post)
s.send(name_post.encode())
data = s.recv(1024).decode()
print(data)

if data == 'OK':
return 0

elif data == 'EXISTS':
return 1
else:
return 2


def do_up(s):
while True:
name = input('请输入用户名')
passwd = getpass.getpass('请输入密码')

name_post = 'D {} {}'.format(name, passwd)
s.send(name_post.encode())
data = s.recv(1024).decode()
if data == 'OK':

return name
else:
return 2


def do_find(s, name):
print('find被调用')
a1 = input('请输入您要查询的英文内容')
word1 = 'F {} {}'.format(a1, name)
s.send(word1.encode())
data = s.recv(1024).decode()
if not data:
print('未查询到相关字词')
print('{}的中文意思是{}'.format(a1, data))


def do_second(s, name):
print('-----------------------------------')
print('---------欢迎进入电子词典1.0--------')
print('---------1 查询-----————————————---')

print('---------3 退出--------------------')
while True:
try:

cmd = int(input('请输入操作选项'))
except:
print('输入错误请重新输入')
continue

if cmd == 1:
do_find(s, name)

if cmd == 3:
sys.exit('服务端退出')
break


def main():
if len(sys.argv) < 3:
print('链接出错')
HOST = sys.argv[1]
POST = int(sys.argv[2])
ADDR = (HOST, POST)
s = socket()
try:
s.connect(ADDR)
except:
print('链接服务器失败')
while True:
print('*********************')
print('-----电子词典1.0------')
print('---------1 登录------')
print('---------2 注册------')
print('---------3 退出------')
try:
cmd = int(input('请输入你要进行的操作'))
except:
print('输入错误请重新输入')
continue
if cmd not in [1, 2, 3]:
print('请输入正确选项')
sys.stdin.flush() # 清除标准输入
continue
if cmd == 1:
r = do_up(s)
if r == 2:
print('登录失败')
else:
print('登录成功')
name = r
do_second(s, name)

if cmd == 2:
r = do_register(s)
if r == 0:
print('注册成功')
elif r == 1:
print('用户已存在')
else:
print('注册失败')
if cmd == 3:
s.send(b'Quit')
sys.exit('欢迎再次使用')
break


if __name__ == '__main__':
main()
posted @ 2020-05-21 11:38  小鬼鬼QVQ  阅读(193)  评论(0)    收藏  举报