项目需求

  1. 将dict.txt的数据导入到数据库中保存
  2. 登录注册功能,不能重复登录,重复注册
  3. 单词查询功能
  4. 历史记录功能,存储单词,意思,以及查询时间
  5. 基于TCP,支持多客户端连接
  6. 采用数据库保存用户信息与历史记录
  7. 按下ctrl+c退出客户端后,注销该客户端的登录信息

项目逻辑

通信协议

  • 用户注册:发送数据第一位为0,后跟用户名**usrpasswd字符串数据,以0**结尾。

​ 如果注册成功返回1,注册失败返回0

  • 用户登录:发送数据第一位为1,后跟用户名**usrnamepasswd字符串数据,中间以数字0分割,最后以0**结尾。

  • 用户上传单词:发送数据格式为2、单词数据、0

  • 服务器发送单词和翻译:数据格式为单词、0、翻译、0,如果单词不存在,则发送0

函数模块

客户端:

  • 用户注册do_register:向服务先发送账号数据,如果没有重复账号收到1,然后输入密码,如果密码不合法要重新输入。

    如遇重复账号收到0,需要输入新的账号。

  • 用户登录do_login:向服务器发送账号密码数据,如果其中有任何一个数据出错则收到0

  • 用户搜索单词do_translate:向服务发送单词数据,搜索成功返回单词和意思,打印单词和意思,失败则返回0

  • 用户查询历史do_history:向服务发送请求,如果没有历史记录收到0并打印提示,否则打印所有历史记录。

服务端:

  • 处理用户注册do_register:接受用户的username数据,使用sql语句判断是否有重名,没有重名继续接受密码数据,然后在、存入数据库中;如果有重名发送0然后重新等待username数据。
  • 处理用户登录do_login:同时接受账号和密码数据,使用sql语句查找是否有相同数据,有发送1,没有发送0
  • 处理用户单词do_translate:接受用户的完整单词数据,在数据库中查找,如果查找成功发送单词和意思,如果有多个意思先把翻译拼接在一起然后发送;如果查找失败发送0。然后把搜索历史插入数据库中。
  • 查询用户历史do_history:根据用户的账号查询历史,将所有历史数据拼接在一起发送;没有发送0