python小项目实战my--电子词典
写一个电子词典功能说明1.用户可以登录和注册登录凭借用户名和密码登录注册要求用户必须填写用户名,密码,其他内容自己拟定用户名不能重复2.用户信息需要长期保存,以满足随时登录要求使用数据库保存3.能够满足多个用户同时登录操作的需要4.项目分为客户端和服务端,客户端负责请求和展示数据,其余处理由服务端完成5.客户端启动即进入一级界面(界面print打印),一级界面功能登录,注册 退出6.用户登录后即进入二级界面(注册后是否处于登录状态自定),二级界面功能1.查看单词:可以循环输入单词,获取单词解释提示:每个单词占一行单词按照顺序排列单词和解释之间一定有空格可以选择直接操作文本,或者将单词本导入数据库然后从数据库查找2.查看历史记录:格式: name word time可以显示登录人员查的所有单词或者最近10条,自定义3.注销(回到登录界面)1.确定技术点2.建立数据库,设计表如果需要将单词导入数据库,则编程完成导入3.结构设计,仿照ftp文件服务器4.完成通信的搭建5.功能分析技术分析:服务端
1.登录注册采用字典使用mysql数据库来进行操作,创建userinfo表登录:在userinfo表中查找用户名与密码匹配,如果匹配则进行下一步,不匹配则返回,提示用户名密码错误注册:将用户新注册的信息存入到userinfo表记录中,userinfo (字段)主键name(不可重复,必填) password:(3-6位字母或数字) 性别(选填) 电话:(选填) 注册时间
----------------------------------------------------------------------------------------------------------------------------------------------
该项目分为3个py文件
- dict_insert.py 单词插入数据库
- dict_client.py 客户端
- dict_server.py 服务端
dict_insert.py ------把单词插入数据库,由于不能添加附件,你们可以网上下载原生单词本即可,文件名改为dict.txt.,不多说了,这里直接上代码.
`'''
把词典单词插入数据库
'''import pymysql
import ref = open('dict.txt')
db =pymysql.connect('localhost','root','123456','dict')
cursor = db.cursor()for line in f:try:obj = re.match(r'([-a-zA-Z]+)\s+(.+)',line)word = obj.group(1)interpret = obj.group(2)except:continuesql = "insert into words (word,interpret) values('%s','%s')"%(word,interpret)try:cursor.execute(sql)db.commit()except:db.rollback()
f.close()`
dict_client.py
#coding = utf-8from socket import *
import sys
import getpass#网络连接
def main():if len(sys.argv)<3:print('argv is error')returnHOST = sys.argv[1]PORT = int(sys.argv[2])s = socket()try:s.connect((HOST,PORT))except Exception as e:print(e)returnwhile True:print('''=============欢迎使用电子词典V1.0版本===============***1.注册 ***2.登录 ***3.退出====================================================''')try:cmd = int(input('请选择:'))except Exception as e:print('输入错误',e)continueif cmd not in [1,2,3]:print('没有该选项')continueelif cmd == 1:do_register(s)elif cmd == 2:do_login(s)elif cmd == 3:s.send(b'E')sys.exit('Thanks TO Use!') def do_register(s):while True:name = input('请输入用户名:')passwd = getpass.getpass() #隐藏输入密码passwd1 = getpass.getpass("再次输入密码:")if (' ' in name) or (' ' in passwd):print('用户名或密码不合法')continueif passwd != passwd1:print('两次密码不一致,请再次输入!')continue#发送请求msg = 'R %s %s' %(name,passwd)s.send(msg.encode())#等待回复data = s.recv(128).decode()if data == 'OK':print('注册成功')elif data == 'EXISTS':print('该用户已存在')else:print('注册失败')return def do_login(s):name = input('输入用户名:')passwd = getpass.getpass()msg = "L %s %s"%(name,passwd)s.send(msg.encode())data = s.recv(128).decode()if data == 'OK':print('登录成功')login(s,name)else:print('登录失败')def login(s,name):while True:print('''=================查询界面=================***1.查词 ***2.历史记录 ***3.注销============================================''')try:cmd = int(input('请选择:'))except Exception as e:print('输入错误',e)continueif cmd not in [1,2,3]:print('没有该选项')continueelif cmd == 1:do_query(s,name)elif cmd == 2:do_hist(s,name)elif cmd == 3:returndef do_query(s,name):while True:word = input('输入单词:')if word == '##':breakmsg = 'Q %s %s'%(name,word)s.send(msg.encode())data = s.recv(1024).decode()if data == 'FAIL':print('没有找到该单词')else:print(data)def do_hist(s,name):msg= 'H %s'%names.send(msg.encode())data = s.recv(128).decode()if data =='OK':while True:data = s.recv(1024).decode()if data == '##':breakprint(data)else:print('没有历史记录')if __name__ == '__main__':main()
dict_server.py
'''
name:Tedu
modules:pymysql
This is a dict project for AID
'''from socket import *
import pymysql
import os
import sys
from threading import Thread
import time#定义需要的全局变量
DICT_TEXT = './dict.txt' #文本查找
HOST = '0.0.0.0'
PORT = 8000
ADDR = (HOST,PORT)#处理僵尸进程
def zombie():os.wait()#网络搭建
def main():#创建数据库连接db = pymysql.connect('localhost','root','123456','dict')#创建套接字s = socket()s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)s.bind(ADDR)s.listen(5)print('监听...')while True:try:c,addr = s.accept()print('Connect from ',addr)except KeyboardInterrupt:s.close()sys.exit('服务器退出')except Exception as e:print(e)continue#创建子进程pid = os.fork()if pid == 0:s.close()do_child(c,db) #子进程函数else:c.close()t = Thread(target=zombie)t.setDaemon(True)t.start()continuedef do_child(c,db):while True:data = c.recv(128).decode() #接收客户端请求print(c.getpeername(),':',data) #getpeername() 客户端地址if (not data) or data[0] == 'E':c.close()sys.exit()elif data[0] == 'R': #注册do_register(c,db,data)elif data[0] == 'L': #登录do_login(c,db,data)elif data [0] == 'Q':#查找do_query(c,db,data)elif data[0] =='H':#历史记录do_hist(c,db,data)def do_hist(c,db,data):l = data.split(' ')name =l[1]cursor = db.cursor()sql = "select * from hist where name = '%s'"%namecursor.execute(sql)r = cursor.fetchall()if not r :c.send(b'FAIL')returnelse:c.send(b'OK')time.sleep(0.1)for i in r:msg = "%s %s %s"%(i[1],i[2],i[3])c.send(msg.encode())time.sleep(0.1)c.send(b'##')def do_query(c,db,data):l = data.split(' ')name = l[1]word = l[2]cursor = db.cursor()def insert_history():tm = time.ctime()sql = "insert into hist (name,word,time) values ('%s','%s','%s')"%(name,word,tm)try:cursor.execute(sql)db.commit()except:db.rollback() #使用单词本查找try:f = open(DICT_TEXT)except:c.send(b'FAIL')returnfor line in f :tmp = line.split(' ')[0]if tmp > word:c.send(b'FAIL')f.close()returnelif tmp == word:c.send(line.encode())f.close()insert_history()return# c.send(b'FAIL')f.close()def do_register(c,db,data):l = data.split(' ')name = l[1]passwd = l[2]cursor = db.cursor()sql = 'select * from user where name = "%s"'%namecursor.execute(sql)r = cursor.fetchone()print(r)if r != None:c.send(b'EXISTS')return#插入用户sql ="insert into user (name ,passwd) values ('%s','%s')"%(name,passwd)try:cursor.execute(sql)db.commit()c.send(b'OK')except:db.rollback()s.send(b'FAIL')def do_login(c,db,data):l = data.split(' ')name = l[1]passwd = l[2]cursor = db.cursor()sql = "select * from user where name = '%s' and passwd = '%s'"%(name,passwd)#查询用户cursor.execute(sql)r = cursor.fetchone()if r ==None:c.send(b'FAIL')else:c.send(b'OK')if __name__ == '__main__':main()
python小项目实战my--电子词典相关推荐
- python智慧城市_智慧城市背景下Python机器学习项目实战案例分享
首先,何为智慧城市?智慧城市的"智慧"源自何处? 智慧城市的特征在于运用大数据和数字技术提高居民生活质量. 机构获得的数据越全面.越实时,它们就越有能力观测事件发生的详情.分析需求 ...
- 项目-OOP版电子词典
问题及代码: /* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:main.cpp *作 者:李磊涛 *完成时间:2016年6月2 ...
- 智慧城市背景下Python机器学习项目实战案例分享
首先,何为智慧城市?智慧城市的"智慧"源自何处? 智慧城市的特征在于运用大数据和数字技术提高居民生活质量. 机构获得的数据越全面.越实时,它们就越有能力观测事件发生的详情.分析需求 ...
- 开源Python小项目
原文地址:开源Python小项目贡献! (github.com) 自述文件模板 项目 SR 否 项目 描述 作者 1 掷骰子刺激器Dice rolling Stimulator 这是一个使用Pytho ...
- android简单app实例_Android安卓小项目实战视频教程集锦
Android安卓小项目实战视频教程,点击进入视频教程: 一.安卓项目视频教程: 1蓝牙聊天APP介绍-分步骤介绍一个简单安卓蓝牙APP的开发过程 - 西瓜视频 2蓝牙聊天开发流程-分步骤介绍一个简单 ...
- python小项目实例流程-Python小项目:快速开发出一个简单的学生管理系统
原标题:Python小项目:快速开发出一个简单的学生管理系统 本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: ...
- python小项目案例-Python小项目:快速开发出一个简单的学生管理系统
本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: 包括: 学校信息的管理 教师信息的管理 学生信息的管理 根据A ...
- python小项目-python 小项目
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 事先录制好一段音频,客户接通电话后,自动播放https:blog.csd ...
- python爬虫项目-33个Python爬虫项目实战(推荐)
今天为大家整理了32个Python爬虫项目. 整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快~O(∩_∩)O WechatSogou [1] ...
- 五十一、结合百度API接口打造 Python小项目
@Author: Runsen 本项目围绕图像识别,通过调用百度 API 接口,可以实现很多人性化的功能,比如手势识别.比对.人像分割以及颜值打分等功能. 本次Gitchat付费文章,但是因为订阅太少 ...
最新文章
- fullPage教程 -- 整屏滚动效果插件 fullpage详解
- linux拨号上网的命令,LINUX下ADSL拨号上网
- iPhoneX设计稿适配Android,UI设计干货:关于IPHONE X适配问题
- 关于python语言、下列说法不正确的是-下列语句中,___________是不正确的Python语句...
- 遇见C++ AMP:在GPU上做并行计算
- 网上邻居访问提示未授予用户在此计算机上的请求登录类型的解决
- java 堆内存不释放_Java可以写入/读取已释放的堆内存吗?
- Verilog HDL中使用系统任务 $readmemh遇到问题及解决方法
- iOS核心动画高级技术(九) 图层时间
- 开发高性能的 ASP.NET 应用程序
- nginx反向代理解决跨域问题,使本地调试更方便
- 可能是最全的一份 2017 年中国移动互联网年度报告(建议收藏)
- 基于C++的即时通信软件设计
- Linux ftrace 2.3、kprobe event的使用
- uniapp上传图片视频插架分享
- Hunger Snake 2
- mv或者cp带小括号文件名解析问题总结
- 【思科设备命令最全合集,快快收藏!】
- 因为爱情的计算机谱子是多少,《因为爱情》歌曲简谱
- 更新!Python文献超级搜索工具,可关键词搜索并批量下载!