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