#! /usr/bin/env python2.7
# -*- coding:utf-8 -*-
#File:w7.py
#Date:2013-7-18
#Author:wangyu
import re
import sqlite3
"""当你感到有些日子先当难过的时候,那你一定经历一些不一样的东西,这些东西会让你变的更加强大,谢谢世界给我的苦难和思考"""
"""开始学习正则表达式"""
"""邮箱注册系统"""
class e_mail:
def xuanze(self,xuanxian):
if (xuanxian=='z'):
print "欢迎注册"
elif (xuanxian=='d'):
print "欢迎登录"
else:
print "输入错误请重新输入"
return xuanxian
def zhuce(self):
a=True
conn=sqlite3.connect('/home/wy/py/test/test/bin/e_mail')
conn.isolation_level=None#这个就是事物隔离级别,默认是自己需要的commit才能修改数据库,设置为None则自动每次修改都提交,否则为""
c=conn.cursor()
c.execute('''create table if not exists zhuce7(username txt FRIMARY KEY,
password txt,
liuyan NCHAR(256)
)
''')
c.execute('''select username,password from zhuce7;''')
while a==True:
username=raw_input("请输入您的注册帐号:")
# print "nima"
m=re.match(r"^([a-zA-Z0-9]+[-\\|.]?)+[a-zA-Z0-9]@([0-9A-Za-z]+(-[a-z0-9A-Z]+)?\.)+[a-zA-Z]{2,}$",username);
# print m
if m:
d=c.fetchall()
i=0
for (s,b) in d:
while True:
if s==username:
print "您注册的"+str(username)+"帐号已经被注册,请你重新注册"
username=raw_input("请输入您的注册帐号:")
# print "wocao"
else:
a=False
break
break
else:
print "你的邮箱"+str(username)+"格式错误,请重新填写"
username=raw_input("请重新填写您的邮箱")
while True:
password=raw_input("请输入您的密码:")
pwd=re.match(r"^([a-zA-Z0-9])",password)
if (pwd and (len(password)<9)):
print "密码过短,或者不符合格式"
else:
break
while True:
password1=raw_input("请再次输入您的密码:")
if (password!=password1):
print "两次输入不一致,请重新输入"
else:
break
while True:
if (pwd and (len(password)<9)):
print "密码过短,或者不符合格式"
else:
break
while True:
yzm=int(raw_input("请输入您的验证码:123+123=?:"))
if yzm!=246:
print "验证码错误请重新输入"
else:
break
print "邮箱注册成功,注意保管自己的密码"
c.execute('''insert into zhuce7(username,password)
values(?,?)''',(username,password)
)
conn.commit()
# 自动提交插入数据
c.close()
def denglu(self):
username1=raw_input("请输入用户名:")
password1=raw_input("请输入密码:")
conn=sqlite3.connect('/home/wy/py/test/test/bin/e_mail')
conn.isolation_level=None
d=conn.cursor()
d.execute('''select username,password
from zhuce7;
''')
up=d.fetchall()
count =0
a=len(up)
while True:
if (up[count][0]==username1):
print up[count][0]
# 这个循环输出的是一个二元表,所以直接验证二元表里面的数据就好
if ( password1==up[count][1]):
print "登录成功"
#开始留言
ce=int(raw_input("是否发信:发信请输入:1\n不发请输入:2\n"))
if ce==1:
liuyan =str(raw_input("请在此处写下您的发件内容:"))
# ceshi=liuyan.decode('utf-8').encode('gbk')
d.execute('''update zhuce7 set liuyan=? where username=?
''',(liuyan,username1)
)
break
else:
return 0
else:
print "密码不正确,请注意大小写"
break
count=count+1
a=a-1
if (a==0):
print "帐号没有注册,请重新输入"
break
return 0
if __name__=='__main__':
"""刚刚在测试的时候发现,python的容错系统是一个有限数组,比如我测试文件输入选项时,提示错误次数超过一定次数,就会终止程序"""
app=e_mail()
print "++++++++++++++感谢您的使用++++++++++++++"
while True:
try:
xuanxian=raw_input("请选择:\n注册输入:z\n登录输入:d\n").strip()[0].lower()
except(EOFError,KeyboardInterrupt):
xuanxian=c
if xuanxian not in 'zd':
print "您输入的键值为[%s]输入不合法,请重新输入"%xuanxian
else:
break
app.xuanze(xuanxian)
if (xuanxian=='z'):
app.zhuce()
elif(xuanxian=='d'):
app.denglu()这个其中有几个bug,我没有处理!原因是我不能很好的使用try,所以还需要改进一下!