主函数:

import adminView
import os
import pickle
from bankFunction import BankFunction
import time def main():
# pass
# 欢迎界面
adminView.welcomeView()
if adminView.loginView() == 1:
pass
adminView.functionView() bank = BankFunction({}) while True:
number = input("请输入您要选择的功能编号: ")
if number == "":
bank.createUser()
elif number == "": # 查询
bank.questUser()
elif number == "": # 存款
bank.saveMoney()
elif number == "": # 取款
bank.getMoney()
elif number == "": # 转账
bank.transferMoney()
elif number == "": # 改密码
bank.editPasswd()
elif number == "": # 锁卡
bank.lockCard()
elif number == "": # 解锁
bank.unlockCard()
elif number == "": # 补卡
bank.fillCard()
elif number == "": # 销户
bank.killCard()
elif number == "q":
print("正在推出系统,请稍后......")
time.sleep(2)
print("退出成功")
break
else:
print("您输入的数字有误,请重新输入") def test():
adminView.welcomeView()
adminView.loginView()
adminView.functionView() if __name__ == '__main__':
main()
# test()

调用数据库的部分:

"""
类:bankFunction 银行对象
属性:银行功能
"""
import random
import adminView
import pymysql global db
db = pymysql.connect(
host='localhost',
port=3306,
user='root',
password='caiyishuai',
db='bank',
charset='utf8mb4'
)
global cursor
cursor = db.cursor() class BankFunction(object):
def __init__(self, dictUser):
self.dictUser = dictUser # 开户
def createUser(self):
# 请输入您的姓名
name = input("请输入您的姓名: ")
# 请输入您的身份证号码
idCard = input("请输入您的身份证号码: ")
# 请输入您的电话号码
phone = input("请输入您的电话号码: ")
cardNumber = self.createCardNumber()
passwd = self.setPasswd()
if passwd == -1:
print("创建失败")
return -1
# 设置金额:钱
money = float(input("请输入您想存入的金额: "))
# 目的:创建一个user,并且保存字典(数据库)
sql = "INSERT INTO user VALUES(%s,%s,%s,%s)"
cursor.execute(sql, (name, idCard, phone, cardNumber))
db.commit() # 提交数据
sql = "INSERT INTO card VALUES(%s,%s,%s,%s)"
cursor.execute(sql, (cardNumber, passwd, money, 1))
db.commit() # 提交数据
print("%s,你好,你的卡号是 %s" % (name, cardNumber)) # 设置密码
def setPasswd(self):
for i in range(3):
passwd1 = input("请输入您的密码: ")
passwd2 = input("请再次输入您的密码: ")
if passwd1 == passwd2:
return passwd1
if i == 2:
return -1
print("对不起,您两次输入的密码不相同,请重新输入") # 随机生成卡号
def createCardNumber(self):
while True:
cardNumber = ""
for i in range(6):
cardNumber += str(random.randrange(0, 10))
cursor.execute("SELECT * FROM card where cardNumber = '%s' " % cardNumber)
card = cursor.fetchone()
print("card", card)
if card is None:
return cardNumber
print(cardNumber) # 查询
def questUser(self):
cardNumber = input("请输入您的卡号: ")
# 使用execute()方法执行SQL语句
cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
# 使用fetall()获取全部数据
card = cursor.fetchone()
# 打印获取到的数据
# print(card) if card is None:
print("对不起,您输入的卡号不存在!")
elif card[3]=='':
print("对不起,您的卡已被锁定")
else:
cursor.execute("SELECT * FROM user where cardNumber='%s' " % cardNumber)
data = cursor.fetchall()[0]
print(data[0], "您好!")
for i in range(3):
pswd = input("请输入您的密码: ")
if pswd == card[1]:
print("您有金额: ", card[2])
break
else:
print("对不起,您输入的密码错误")
if i == 2:
print("非法用户!强制退出!") # 存款
def saveMoney(self):
print('输入账号')
cardNumber = input("请输入您的卡号:")
cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
card = cursor.fetchone()
if card is None:
print("您输入的卡号有误,请重新输入:")
return -1
# 获得卡
cursor.execute("SELECT * FROM user where cardNumber='%s' " % cardNumber)
data = cursor.fetchall()[0]
print(data[0], "您好!")
if card[3] == '':
print("你的卡被锁了,不能存款")
return -1
res = self.checkPwd(cardNumber)
if res == -1: # 密码输入错误次数过多
card[3] = ''
return -1
savemoney = float(input("请输入您要存入的金额:"))
money = str(float(card[2]) + savemoney)
cursor.execute("UPDATE card SET money = '%s' WHERE cardNumber = '%s' " % (money,cardNumber))
db.commit()
# 提示消息
print("存款成功,您当前用户可用余额为:%s元" % (money)) # 取款
def getMoney(self):
# 输入账号
cardNumber = input("请输入您的卡号:")
cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
card = cursor.fetchone()
if card is None:
print("您输入的卡号有误,请重新输入:")
return -1
# 获得卡
cursor.execute("SELECT * FROM user where cardNumber='%s' " % cardNumber)
data = cursor.fetchall()[0]
print(data[0], "您好!")
if card[3] == '':
print("你的卡被锁了,不能存款")
return -1
res = self.checkPwd(cardNumber)
if res == -1: # 密码输入错误次数过多
card[3] = ''
return -1 getmoney = float(input("请输入您要取出的金额:"))
if getmoney > float(card[2]):
print("对不起,您的余额当前余额为%s元,余额不足!!!" % float(card[2]))
return -1
else:
card_money = str(float(card[2]) - getmoney)
cursor.execute("UPDATE card SET money = '%s' WHERE cardNumber = '%s' " % (card_money,cardNumber))
db.commit()
print("取款成功,您当前用户可用余额为:%s元" % (card_money)) # 转账
def transferMoney(self):
cardNumber = input("请输入您的卡号:")
cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
card = cursor.fetchone()
if card is None:
print("您输入的卡号有误,请重新输入:")
return -1
elif card[3] == '':
print("你的卡被锁了,不能存款")
return -1
else:
cursor.execute("SELECT * FROM user where cardNumber='%s' " % cardNumber)
data = cursor.fetchall()[0]
print(data[0], "您好!")
for i in range(3):
pswd = input("请输入您的密码: ")
# 密码输入正确
if pswd == card[1]:
# 你有的钱
have_money = float(card[2])
print("您有金额: ", have_money)
cardNumber2 = input("请输入您要转账的卡号: ")
cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber2)
card2 = cursor.fetchone()
if card2 is None:
print("对不起,您输入的卡号不存在!")
elif card2[3] == '':
print("此人的卡被锁了,不能转账")
else:
while True:
turn_money = float(input("请输入您要转的金额: "))
if turn_money > have_money:
print("对不起,您没有那么多钱,请重新输入")
else:
your_card_money =str( float(card[2])-turn_money)
his_card_money =str( float( card2[2])+turn_money)
cursor.execute("UPDATE card SET money = '%s' WHERE cardNumber = '%s' " % (your_card_money,cardNumber))
db.commit()
cursor.execute("UPDATE card SET money = '%s' WHERE cardNumber = '%s' " % (his_card_money,cardNumber2))
db.commit()
print("恭喜你转账成功,你还有", your_card_money, "元")
break
break
else:
print("对不起,您输入的密码错误")
if i == 2:
print("非法用户!强制退出!") def checkPwd(self, cardNumber):
cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
card = cursor.fetchone()
card_p = card[1]
for i in range(3): # 最多验证3次
Pwd = input("请输入您的密码:")
if Pwd == card_p:
return 0 # 表示密码输入正确
if i == 2:
return -1 # 3次输入密码错误
print("您的密码输入不正确,请重新输入:") # 改密
def editPasswd(self):
cardNumber = input("请输入您的卡号:")
cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
card = cursor.fetchone()
if card is None:
print("您输入的卡号有误,请重新输入:")
else:
cursor.execute("SELECT * FROM user where cardNumber='%s' " % cardNumber)
data = cursor.fetchall()[0]
print(data[0], "您好!")
for i in range(3):
pswd = input("请输入您的密码: ")
if pswd == card[1]:
print("您有金额: ", card[2])
while True:
new_passwd1 = input("请输入您新密码: ")
new_passwd2 = input("请再次输入您新密码: ")
if new_passwd1 != new_passwd2:
print("对不起,您两次输入的新密码不同,请重新输入!")
else:
cursor.execute("UPDATE card SET passwd = '%s' WHERE cardNumber = '%s' " % (new_passwd1,cardNumber))
db.commit()
print("恭喜你!改密成功!")
break
break
else:
print("对不起,您输入的密码错误")
if i == 2:
print("非法用户!强制退出!") # 锁卡
def lockCard(self):
cardNumber = input("请输入您的卡号:")
cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
card = cursor.fetchone()
if card is None:
print("您输入的卡号有误,请重新输入:")
return -1
res = self.checkPwd(cardNumber)
if res == -1: # 密码输入错误次数过多
card[3] = ''
return -1
flag = input("请问您确认锁卡吗?(YSE/NO)")
if flag == "YES":
cursor.execute("UPDATE card SET isLock = '%s' WHERE cardNumber = '%s' " % ('',cardNumber))
db.commit()
print("您的账号已成功锁定")
else:
return # 解锁
def unlockCard(self):
cardNumber = input("请输入您的卡号:")
cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
card = cursor.fetchone()
if card is None:
print("您输入的卡号有误,请重新输入:")
return -1
res = self.checkPwd(cardNumber)
if res == -1: # 密码输入错误次数过多
card[3] = ''
return -1
cursor.execute("UPDATE card SET isLock = '%s' WHERE cardNumber = '%s' " % ('',cardNumber))
db.commit()
print("您的账号已成功解锁") # 补卡
def fillCard(self):
cardNumber = input("请输入您的卡号:")
cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
card = cursor.fetchone()
if card is None:
print("您输入的卡号有误,请重新输入:")
return -1
res = self.checkPwd(cardNumber)
if res == -1: # 密码输入错误次数过多
card[3] = ''
return -1
if input("是否确认补卡号为:%s的账户(y/n)" % cardNumber) == "y":
new = self.createCardNumber()
cursor.execute("UPDATE card SET cardNumber = '%s' WHERE cardNumber = '%s' " % (new,cardNumber))
db.commit()
cursor.execute("UPDATE user SET cardNumber = '%s' WHERE cardNumber = '%s' " % (new,cardNumber))
db.commit()
print("补卡成功,新卡号为%s,即将返回功能选择页面" % new)
return 0 # 表示补卡成功 # 销户
def killCard(self):
cardNumber = input("请输入您的卡号:")
cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
card = cursor.fetchone()
if card is None:
print("您输入的卡号有误,请重新输入:")
return -1
res = self.checkPwd(cardNumber)
if res == -1: # 密码输入错误次数过多
card[3] = ''
return -1
if input("是否确认注销卡号为:%s的账户(y/n)" % cardNumber) == "y":
sql = "DELETE FROM card WHERE cardNumber = %s"
cursor.execute(sql, (cardNumber))
db.commit() # 提交数据
sql = "DELETE FROM user WHERE cardNumber = %s"
cursor.execute(sql, (cardNumber))
db.commit() # 提交数据
print("销户成功,已注销账户:%s,即将返回功能选择页面" % cardNumber)
return 0 # 表示销户成功

数据库部分:

设计思路(部分):

python连接mysql数据库实例demo(银行管理系统数据库版)的更多相关文章

  1. Python连接MySQL的实例代码

    Python连接MySQL的实例代码   MySQLdb下载地址:http://sourceforge.net/projects/mysql-python/ 下载解压缩后放到%Python_HOME% ...

  2. python入门(十七)python连接mysql数据库

    mysql 数据库:关系型数据库mysql:互联网公司 sqllite:小型数据库,占用资源少,手机里面使用oracle:银行.保险.以前外企.sybase:银行+通信 互联网公司key:valuem ...

  3. python 连接Mysql数据库

    1.下载http://dev.mysql.com/downloads/connector/python/ 由于Python安装的是3.4,所以需要下载下面的mysql-connector-python ...

  4. Python连接MySQL数据库的多种方式

    上篇文章分享了windows下载mysql5.7压缩包配置安装mysql 后续可以选择 ①在本地创建一个数据库,使用navicat工具导出远程测试服务器的数据库至本地,用于学习操作,且不影响测试服务器 ...

  5. Python 使用PyMySql 库 连接MySql数据库时 查询中文遇到的乱码问题(实测可行) python 连接 MySql 中文乱码 pymysql库

    最近所写的代码中需要用到python去连接MySql数据库,因为是用PyQt5来构建的GUI,原本打算使用PyQt5中的数据库连接方法,后来虽然能够正确连接上发现还是不能提交修改内容,最后在qq交流群 ...

  6. pymysql模块使用---Python连接MySQL数据库

    pymysql模块使用---Python连接MySQL数据库 浏览目录 pymysql介绍 连接数据库 execute( ) 之 sql 注入 增删改查操作 进阶用法 一.pymysql介绍 1.介绍 ...

  7. python连接MySQL/redis/mongoDB数据库的简单整理

    python连接mysql 用python操作mysql,你必须知道pymysql 代码示意: import pymysql conn = pymysql.connect(host='127.0.0. ...

  8. Python连接Mysql数据库_20160928

    python版本 2.7.1,python 连接mysql需要安装MYSQLdb模块 安装方法一种是cmd pip命令安装 pip install MySQLdb 一种是网上下载python MYSQ ...

  9. 【初学python】使用python连接mysql数据查询结果并显示

    因为测试工作经常需要与后台数据库进行数据比较和统计,所以采用python编写连接数据库脚本方便测试,提高工作效率,脚本如下(python连接mysql需要引入第三方库MySQLdb,百度下载安装) # ...

随机推荐

  1. [USACO19JAN]Redistricting——单调队列优化DP

    原题链接 首先有一个\(O(nk)\)的很显然的\(dp\),把荷斯坦牛看成\(1\),把更赛牛看成\(-1\),这样就可以很方便地通过前缀和来判断某一段中谁有优势了 考虑怎么优化,观察转移: \[f ...

  2. 干货 | 以太坊Mist负责人教你建立无服务器应用

    作者:Alex Van de Sande译者:王建/蔡佳慧译者介绍: 王建:万云平台区块链技术专家,拥有多年应用系统架构经验,目前在区块链落地方面进行积极探索 蔡佳慧:万云平台实习生,区块链技术爱好者 ...

  3. indexedDB 前端数据库(使用的简单案例)

    前端存储 之 indexDB 1.indexedDB是什么? indexedDB是一个非关系型数据库 它不需要我们去写一些特定的SQL语句来对数据库进行操作 它是NoSQL的,数据形式使用的json ...

  4. 公共钥匙盒(CCF)【模拟】

    问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中 ...

  5. parent([expr]) 取得一个包含着所有匹配元素的唯一父元素的元素集合。

    parent([expr]) 概述 取得一个包含着所有匹配元素的唯一父元素的元素集合.大理石构件 你可以使用可选的表达式来筛选. 参数 exprStringV1.0 用来筛选的表达式 示例 描述: 查 ...

  6. Codevs 3012 线段覆盖 4

    3012 线段覆盖 4 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 黄金 Gold 题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标,坐标范围在0~100 ...

  7. 安装conda后取消命令行前出现的base,取消每次启动自动激活conda的基础环境, 使用ubuntu 自带的Python环境

    方法一: 退出base环境回到系统自带的环境 conda deactivate 方法二 1,通过将auto_activate_base参数设置为false实现: conda config --set ...

  8. 使用io/ioutil进行读写文件

    读文件: package main import ( "fmt" "io/ioutil" ) func main() { b, err := ioutil.Re ...

  9. ARTS打卡计划第十五周

    Algorithms: https://leetcode-cn.com/problems/single-number/submissions/ Review: “What Makes a Good D ...

  10. Zookeeper系列(十)zookeeper的服务端启动详述

    作者:leesf    掌控之中,才会成功:掌控之外,注定失败.出处:http://www.cnblogs.com/leesf456/p/6105276.html尊重原创,大家功能学习进步:  一.前 ...