python数据库做成邮箱的注册系统!

#! /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,所以还需要改进一下!

posted @ 2013-08-16 19:46  pangbangb  阅读(437)  评论(0编辑  收藏  举报