做了一个很简陋的记账工具

import string
import pymysql
import random
import time

users={"xiaowang":"xiaowang123"}
no=0
charge_info={}
welcome_info = """
欢迎使用记账系统
出品人:流氓兔
理性消费!
请输入你的操作执行,支持的命令如下:
welcome
edit
list
"""
def func(s):
    Flag1=False
    Flag2=False
    Flag3=False
    if not isinstance(s,str):
        return None
    for i in s:
        if i in string.ascii_letters:
            Flag1=True
        if i in string.digits:
            Flag2=True
        if i in string.punctuation:
            Flag3=True
    if Flag1 and Flag2 and Flag3:
        return True
    else:
        return False

def show_welcome():
    global welcome_info
    print(welcome_info)

def register():
    global users
    while True:
        username=input("请输入用户名:")
        if len(username)<=7:
            continue
        if username in users.keys():
            print("user is exists")
            continue
        if not func(username):
            print("输入的用户名必须是大小写字母,数字或者下划线")
            continue
        else:
            break

    while True:
        password=input("请输入密码:")
        if len(password)<7:
            print("密码必须大于7位,请重新输入")
            continue
        if not func(password):
            print("输入的密码必须是大小写字母,数字或者下划线")
            continue
        password2=input("请再次输入您要使用的密码:")
        if password==password2:
            users[username]=password
            print("%s注册成功!"%username)
            break
        else:
            print("两次输入的密码不一致!请重新输入")
            continue

def login():
    global users
    while True:
        login_username=input("请输入登录的用户名:")
        login_password=input("请输入登录的密码:")
        if login_username in users:
            if login_password==users[login_username]:
                print("%s用户登录成功!"%login_username)
                users[login_username]=None
                break
        print("您输入的用户名和密码有误,请重新输入!")

def edit_charge_info():
    cname="lala"
    global charge_info
    global no
    no+=1
    charge_id=no
    charge_info[charge_id]={}
    charge_name=input("请输入花销名字:")
    charge_detail=input("请输入花销细节:")
    charge_info[charge_id]["charge_name"]=charge_name
    charge_info[charge_id]["charge_detail"]=charge_detail
    insert_data(cname, charge_name, charge_detail)


def insert_data(name,c_name,c_detail):
    def now():
        return time.strftime("%Y-%m-%d")

    conn = pymysql.connect(
        host="127.0.0.1",
        port=3306,
        user="root",
        passwd="admin",
        db="charge",
        charset="utf8"
    )
    # 使用cursor()方法获取数据库的操作游标
    cursor = conn.cursor()
    # 另一种插入数据方法,通过格式字符串传入值,此方式可以防止sql注入
    sql = "insert into cost values(%s, %s, %s, %s, %s)"
    cursor.execute(sql, (random.randint(1, 10000),name, c_name,c_detail,now()))

    # 关闭游标
    cursor.close()
    # 提交事务
    conn.commit()
    # 关闭数据库连接
    conn.close()
    print(u"sql语句执行成功!")

def fetch_data():
    conn = pymysql.connect(
        host="127.0.0.1",
        port=3306,
        user="root",
        passwd="admin",
        db="charge",
        charset="utf8"
    )
    # 使用cursor()方法获取数据库的操作游标
    cursor = conn.cursor()
    cursor.execute("select * from cost")

    # 获取所有数据
    resSet = cursor.fetchall()
    print("共%s条数据。" % len(resSet))
    print(resSet)
    # 关闭游标
    cursor.close()
    # 提交事务
    conn.commit()
    # 关闭数据库连接
    conn.close()
    print("sql语句执行成功!")


def get_all_charge_info():
    global charge_info
    for key,value in charge_info.items():
        print("花销的编号:",key)
        print("花销的名字:",value["charge_name"])
        print("花销的细节:",value["charge_detail"])
        print("*"*30)
    fetch_data()

while 1:
    command=input("please enter command:")
    if command=="exit":
        break
    elif command=="welcome":
        show_welcome()
    elif command=="register":
        register()
    elif command=="login":
        login()
    elif command=="edit":
        edit_charge_info()
    elif command=="get":
        get_all_charge_info()
    else:
        print("请输入正确的指令!")
        continue

  

posted @ 2020-03-17 20:58  wing-小  阅读(133)  评论(0)    收藏  举报