zoukankan      html  css  js  c++  java
  • 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
    不发请输入:2
    "))
                        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("请选择:
    注册输入:z
    登录输入:d
    ").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,所以还需要改进一下!

  • 相关阅读:
    《Java编程思想》笔记 第二十章 注解
    《Java编程思想》笔记 第十九章 枚举类型
    《Java编程思想》笔记 第十七章 容器深入研究
    一个关于Java 多线程问题的知识点
    Tomcat 部署2个项目,只有一个可以访问的解决方案
    抄书(Copying Books, UVa 714)
    Checker Challenge
    Case of the Zeros and Ones
    Tom and paper
    不规则棋盘问题
  • 原文地址:https://www.cnblogs.com/pangblog/p/3263254.html
Copyright © 2011-2022 走看看