电子词典_3

#!/usr/bin/env python3
#coding=utf-8
from socket import *
import sys
import getpass 


def main():
    if len(sys.argv) < 3:
        print('argv is error')
        return
    HOST = sys.argv[1]
    PORT = int(sys.argv[2])
    s = socket()
    s.connect((HOST,PORT))

    while True:
        print('''
            ==========Welcome=========
            --1.注册   2.登录   3.退出--
            ==========================
            ''')
        try:
            cmd = int(input("输入选项(1,2or3)>>"))
        except Exception:
            print("命令错误")
            continue
        if cmd not in [1,2,3]:
            print("请输入正确选项")
            sys.stdin.flush() #清除标准输入
            continue
        elif cmd == 1:
            if do_register(s) == 0:
                print("注册成功!")
            else:
                print("注册失败!")
        elif cmd == 2:
            name = do_login(s)
            if name != 1:
                print("登录成功!")
                login(s,name)
            else:
                print("登录失败!")
        elif cmd == 3:
            s.send(b'E')
            sys.exit("谢谢使用")

def do_register(s):
    while True:
        name = input("User:")
        passwd = getpass.getpass()
        passwd1 = getpass.getpass("Confirm:")
        if (' ' in name) or (' ' in passwd):
            print('用户名或密码不许有空格')
            continue 
        if passwd != passwd1:
            print("密码不一致")
            continue 

        msg = 'R {} {}'.format(name,passwd)
        #发送请求
        s.send(msg.encode())
        #收到回复
        data = s.recv(128).decode()

        if data == 'OK':
            return 0
        elif data == "EXISTS":
            print("用户已存在")
            return 1
        else:
            return 1


def do_login(s):
    name = input("User:")
    passwd = getpass.getpass()
    msg = "L {} {}".format(name,passwd)
    s.send(msg.encode())
    data = s.recv(128).decode()

    if data == 'OK':
        return name
    else:
        print("用户名或密码不正确")
        return 1


def do_query(s,name):
    while True:
        word = input("单词:")
        if word == '##':
            break

        msg = 'Q {} {}'.format(name,word)
        s.send(msg.encode())
        data = s.recv(128).decode()
        if data == 'OK':
            data = s.recv(2048).decode()
            print(data)
        else:
            print("没有找到该单词")


def do_history(s,name):
    msg = 'H {}'.format(name)
    s.send(msg.encode())
    data = s.recv(128).decode()

    if data == 'OK':
        while True:
            data = s.recv(1024).decode()
            if data == '##':
                break
            print(data)
    else:
        print('没有历史记录')

def login(s,name):
    while True:
        print('''
            ==============查询界面===========
            --1.查词    2.历史记录   3.退出--
            ================================
            ''')
        try:
            cmd = int(input("输入选项(1,2or3)>>"))
        except Exception:
            print("命令错误")
            continue
        if cmd not in [1,2,3]:
            print("请输入正确选项")
            sys.stdin.flush() #清除标准输入
            continue
        elif cmd == 1:
            do_query(s,name)
        elif cmd == 2:
            do_history(s,name)
        elif cmd == 3:
            return

if __name__ == "__main__":
    main()
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值