主函数:

  1. import adminView
  2. import os
  3. import pickle
  4. from bankFunction import BankFunction
  5. import time
  6.  
  7. def main():
  8. # pass
  9. # 欢迎界面
  10. adminView.welcomeView()
  11. if adminView.loginView() == 1:
  12. pass
  13. adminView.functionView()
  14.  
  15. bank = BankFunction({})
  16.  
  17. while True:
  18. number = input("请输入您要选择的功能编号: ")
  19. if number == "":
  20. bank.createUser()
  21. elif number == "": # 查询
  22. bank.questUser()
  23. elif number == "": # 存款
  24. bank.saveMoney()
  25. elif number == "": # 取款
  26. bank.getMoney()
  27. elif number == "": # 转账
  28. bank.transferMoney()
  29. elif number == "": # 改密码
  30. bank.editPasswd()
  31. elif number == "": # 锁卡
  32. bank.lockCard()
  33. elif number == "": # 解锁
  34. bank.unlockCard()
  35. elif number == "": # 补卡
  36. bank.fillCard()
  37. elif number == "": # 销户
  38. bank.killCard()
  39. elif number == "q":
  40. print("正在推出系统,请稍后......")
  41. time.sleep(2)
  42. print("退出成功")
  43. break
  44. else:
  45. print("您输入的数字有误,请重新输入")
  46.  
  47. def test():
  48. adminView.welcomeView()
  49. adminView.loginView()
  50. adminView.functionView()
  51.  
  52. if __name__ == '__main__':
  53. main()
  54. # test()

调用数据库的部分:

  1. """
  2. 类:bankFunction 银行对象
  3. 属性:银行功能
  4. """
  5. import random
  6. import adminView
  7. import pymysql
  8.  
  9. global db
  10. db = pymysql.connect(
  11. host='localhost',
  12. port=3306,
  13. user='root',
  14. password='caiyishuai',
  15. db='bank',
  16. charset='utf8mb4'
  17. )
  18. global cursor
  19. cursor = db.cursor()
  20.  
  21. class BankFunction(object):
  22. def __init__(self, dictUser):
  23. self.dictUser = dictUser
  24.  
  25. # 开户
  26. def createUser(self):
  27. # 请输入您的姓名
  28. name = input("请输入您的姓名: ")
  29. # 请输入您的身份证号码
  30. idCard = input("请输入您的身份证号码: ")
  31. # 请输入您的电话号码
  32. phone = input("请输入您的电话号码: ")
  33. cardNumber = self.createCardNumber()
  34. passwd = self.setPasswd()
  35. if passwd == -1:
  36. print("创建失败")
  37. return -1
  38. # 设置金额:钱
  39. money = float(input("请输入您想存入的金额: "))
  40. # 目的:创建一个user,并且保存字典(数据库)
  41. sql = "INSERT INTO user VALUES(%s,%s,%s,%s)"
  42. cursor.execute(sql, (name, idCard, phone, cardNumber))
  43. db.commit() # 提交数据
  44. sql = "INSERT INTO card VALUES(%s,%s,%s,%s)"
  45. cursor.execute(sql, (cardNumber, passwd, money, 1))
  46. db.commit() # 提交数据
  47. print("%s,你好,你的卡号是 %s" % (name, cardNumber))
  48.  
  49. # 设置密码
  50. def setPasswd(self):
  51. for i in range(3):
  52. passwd1 = input("请输入您的密码: ")
  53. passwd2 = input("请再次输入您的密码: ")
  54. if passwd1 == passwd2:
  55. return passwd1
  56. if i == 2:
  57. return -1
  58. print("对不起,您两次输入的密码不相同,请重新输入")
  59.  
  60. # 随机生成卡号
  61. def createCardNumber(self):
  62. while True:
  63. cardNumber = ""
  64. for i in range(6):
  65. cardNumber += str(random.randrange(0, 10))
  66. cursor.execute("SELECT * FROM card where cardNumber = '%s' " % cardNumber)
  67. card = cursor.fetchone()
  68. print("card", card)
  69. if card is None:
  70. return cardNumber
  71. print(cardNumber)
  72.  
  73. # 查询
  74. def questUser(self):
  75. cardNumber = input("请输入您的卡号: ")
  76. # 使用execute()方法执行SQL语句
  77. cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
  78. # 使用fetall()获取全部数据
  79. card = cursor.fetchone()
  80. # 打印获取到的数据
  81. # print(card)
  82.  
  83. if card is None:
  84. print("对不起,您输入的卡号不存在!")
  85. elif card[3]=='':
  86. print("对不起,您的卡已被锁定")
  87. else:
  88. cursor.execute("SELECT * FROM user where cardNumber='%s' " % cardNumber)
  89. data = cursor.fetchall()[0]
  90. print(data[0], "您好!")
  91. for i in range(3):
  92. pswd = input("请输入您的密码: ")
  93. if pswd == card[1]:
  94. print("您有金额: ", card[2])
  95. break
  96. else:
  97. print("对不起,您输入的密码错误")
  98. if i == 2:
  99. print("非法用户!强制退出!")
  100.  
  101. # 存款
  102. def saveMoney(self):
  103. print('输入账号')
  104. cardNumber = input("请输入您的卡号:")
  105. cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
  106. card = cursor.fetchone()
  107. if card is None:
  108. print("您输入的卡号有误,请重新输入:")
  109. return -1
  110. # 获得卡
  111. cursor.execute("SELECT * FROM user where cardNumber='%s' " % cardNumber)
  112. data = cursor.fetchall()[0]
  113. print(data[0], "您好!")
  114. if card[3] == '':
  115. print("你的卡被锁了,不能存款")
  116. return -1
  117. res = self.checkPwd(cardNumber)
  118. if res == -1: # 密码输入错误次数过多
  119. card[3] = ''
  120. return -1
  121. savemoney = float(input("请输入您要存入的金额:"))
  122. money = str(float(card[2]) + savemoney)
  123. cursor.execute("UPDATE card SET money = '%s' WHERE cardNumber = '%s' " % (money,cardNumber))
  124. db.commit()
  125. # 提示消息
  126. print("存款成功,您当前用户可用余额为:%s元" % (money))
  127.  
  128. # 取款
  129. def getMoney(self):
  130. # 输入账号
  131. cardNumber = input("请输入您的卡号:")
  132. cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
  133. card = cursor.fetchone()
  134. if card is None:
  135. print("您输入的卡号有误,请重新输入:")
  136. return -1
  137. # 获得卡
  138. cursor.execute("SELECT * FROM user where cardNumber='%s' " % cardNumber)
  139. data = cursor.fetchall()[0]
  140. print(data[0], "您好!")
  141. if card[3] == '':
  142. print("你的卡被锁了,不能存款")
  143. return -1
  144. res = self.checkPwd(cardNumber)
  145. if res == -1: # 密码输入错误次数过多
  146. card[3] = ''
  147. return -1
  148.  
  149. getmoney = float(input("请输入您要取出的金额:"))
  150. if getmoney > float(card[2]):
  151. print("对不起,您的余额当前余额为%s元,余额不足!!!" % float(card[2]))
  152. return -1
  153. else:
  154. card_money = str(float(card[2]) - getmoney)
  155. cursor.execute("UPDATE card SET money = '%s' WHERE cardNumber = '%s' " % (card_money,cardNumber))
  156. db.commit()
  157. print("取款成功,您当前用户可用余额为:%s元" % (card_money))
  158.  
  159. # 转账
  160. def transferMoney(self):
  161. cardNumber = input("请输入您的卡号:")
  162. cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
  163. card = cursor.fetchone()
  164. if card is None:
  165. print("您输入的卡号有误,请重新输入:")
  166. return -1
  167. elif card[3] == '':
  168. print("你的卡被锁了,不能存款")
  169. return -1
  170. else:
  171. cursor.execute("SELECT * FROM user where cardNumber='%s' " % cardNumber)
  172. data = cursor.fetchall()[0]
  173. print(data[0], "您好!")
  174. for i in range(3):
  175. pswd = input("请输入您的密码: ")
  176. # 密码输入正确
  177. if pswd == card[1]:
  178. # 你有的钱
  179. have_money = float(card[2])
  180. print("您有金额: ", have_money)
  181. cardNumber2 = input("请输入您要转账的卡号: ")
  182. cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber2)
  183. card2 = cursor.fetchone()
  184. if card2 is None:
  185. print("对不起,您输入的卡号不存在!")
  186. elif card2[3] == '':
  187. print("此人的卡被锁了,不能转账")
  188. else:
  189. while True:
  190. turn_money = float(input("请输入您要转的金额: "))
  191. if turn_money > have_money:
  192. print("对不起,您没有那么多钱,请重新输入")
  193. else:
  194. your_card_money =str( float(card[2])-turn_money)
  195. his_card_money =str( float( card2[2])+turn_money)
  196. cursor.execute("UPDATE card SET money = '%s' WHERE cardNumber = '%s' " % (your_card_money,cardNumber))
  197. db.commit()
  198. cursor.execute("UPDATE card SET money = '%s' WHERE cardNumber = '%s' " % (his_card_money,cardNumber2))
  199. db.commit()
  200. print("恭喜你转账成功,你还有", your_card_money, "元")
  201. break
  202. break
  203. else:
  204. print("对不起,您输入的密码错误")
  205. if i == 2:
  206. print("非法用户!强制退出!")
  207.  
  208. def checkPwd(self, cardNumber):
  209. cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
  210. card = cursor.fetchone()
  211. card_p = card[1]
  212. for i in range(3): # 最多验证3次
  213. Pwd = input("请输入您的密码:")
  214. if Pwd == card_p:
  215. return 0 # 表示密码输入正确
  216. if i == 2:
  217. return -1 # 3次输入密码错误
  218. print("您的密码输入不正确,请重新输入:")
  219.  
  220. # 改密
  221. def editPasswd(self):
  222. cardNumber = input("请输入您的卡号:")
  223. cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
  224. card = cursor.fetchone()
  225. if card is None:
  226. print("您输入的卡号有误,请重新输入:")
  227. else:
  228. cursor.execute("SELECT * FROM user where cardNumber='%s' " % cardNumber)
  229. data = cursor.fetchall()[0]
  230. print(data[0], "您好!")
  231. for i in range(3):
  232. pswd = input("请输入您的密码: ")
  233. if pswd == card[1]:
  234. print("您有金额: ", card[2])
  235. while True:
  236. new_passwd1 = input("请输入您新密码: ")
  237. new_passwd2 = input("请再次输入您新密码: ")
  238. if new_passwd1 != new_passwd2:
  239. print("对不起,您两次输入的新密码不同,请重新输入!")
  240. else:
  241. cursor.execute("UPDATE card SET passwd = '%s' WHERE cardNumber = '%s' " % (new_passwd1,cardNumber))
  242. db.commit()
  243. print("恭喜你!改密成功!")
  244. break
  245. break
  246. else:
  247. print("对不起,您输入的密码错误")
  248. if i == 2:
  249. print("非法用户!强制退出!")
  250.  
  251. # 锁卡
  252. def lockCard(self):
  253. cardNumber = input("请输入您的卡号:")
  254. cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
  255. card = cursor.fetchone()
  256. if card is None:
  257. print("您输入的卡号有误,请重新输入:")
  258. return -1
  259. res = self.checkPwd(cardNumber)
  260. if res == -1: # 密码输入错误次数过多
  261. card[3] = ''
  262. return -1
  263. flag = input("请问您确认锁卡吗?(YSE/NO)")
  264. if flag == "YES":
  265. cursor.execute("UPDATE card SET isLock = '%s' WHERE cardNumber = '%s' " % ('',cardNumber))
  266. db.commit()
  267. print("您的账号已成功锁定")
  268. else:
  269. return
  270.  
  271. # 解锁
  272. def unlockCard(self):
  273. cardNumber = input("请输入您的卡号:")
  274. cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
  275. card = cursor.fetchone()
  276. if card is None:
  277. print("您输入的卡号有误,请重新输入:")
  278. return -1
  279. res = self.checkPwd(cardNumber)
  280. if res == -1: # 密码输入错误次数过多
  281. card[3] = ''
  282. return -1
  283. cursor.execute("UPDATE card SET isLock = '%s' WHERE cardNumber = '%s' " % ('',cardNumber))
  284. db.commit()
  285. print("您的账号已成功解锁")
  286.  
  287. # 补卡
  288. def fillCard(self):
  289. cardNumber = input("请输入您的卡号:")
  290. cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
  291. card = cursor.fetchone()
  292. if card is None:
  293. print("您输入的卡号有误,请重新输入:")
  294. return -1
  295. res = self.checkPwd(cardNumber)
  296. if res == -1: # 密码输入错误次数过多
  297. card[3] = ''
  298. return -1
  299. if input("是否确认补卡号为:%s的账户(y/n)" % cardNumber) == "y":
  300. new = self.createCardNumber()
  301. cursor.execute("UPDATE card SET cardNumber = '%s' WHERE cardNumber = '%s' " % (new,cardNumber))
  302. db.commit()
  303. cursor.execute("UPDATE user SET cardNumber = '%s' WHERE cardNumber = '%s' " % (new,cardNumber))
  304. db.commit()
  305. print("补卡成功,新卡号为%s,即将返回功能选择页面" % new)
  306. return 0 # 表示补卡成功
  307.  
  308. # 销户
  309. def killCard(self):
  310. cardNumber = input("请输入您的卡号:")
  311. cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber)
  312. card = cursor.fetchone()
  313. if card is None:
  314. print("您输入的卡号有误,请重新输入:")
  315. return -1
  316. res = self.checkPwd(cardNumber)
  317. if res == -1: # 密码输入错误次数过多
  318. card[3] = ''
  319. return -1
  320. if input("是否确认注销卡号为:%s的账户(y/n)" % cardNumber) == "y":
  321. sql = "DELETE FROM card WHERE cardNumber = %s"
  322. cursor.execute(sql, (cardNumber))
  323. db.commit() # 提交数据
  324. sql = "DELETE FROM user WHERE cardNumber = %s"
  325. cursor.execute(sql, (cardNumber))
  326. db.commit() # 提交数据
  327. print("销户成功,已注销账户:%s,即将返回功能选择页面" % cardNumber)
  328. 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. 桌面Ubuntu卡死解决方案

    通常情况下,我们用桌面Ubuntu会遇到卡住的的情况,我们一般会进行强制关机处理,但其实还有另一种操作,不用强制关机. 切换到tty模式,执行命令pkill X;start X;就能重新进入桌面,不用 ...

  2. 编译原理实战——使用Lex/Flex进行编写一个有一定词汇量的词法分析器

    编译原理实战--使用Lex/Flex进行编写一个有一定词汇量的词法分析器 by steve yu 2019.9.30 参考文档:1.https://blog.csdn.net/mist14/artic ...

  3. jenkins 配置主从机制(master-slaver)

    1. 中文:系统管理——节点管理——新建节点(左上侧) 英文:Manage Jenkins——Manage Node——新建节点(左上侧) 2. 中文配图 英文配图: 3. 远程工作目录 以mac为例 ...

  4. JavaScript教程——数据类型概述

    简介 JavaScript 语言的每一个值,都属于某一种数据类型.JavaScript 的数据类型,共有六种.(ES6 又新增了第七种 Symbol 类型的值,本教程不涉及.) 数值(number): ...

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

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

  6. C语言|博客作业12-学期总结

    我学到的内容 我的收获 第一次:https://www.cnblogs.com/tongyingjun/p/11563433.html:总结:初步了解了C语言.代码.博客园和Markdown语法. 第 ...

  7. jvm crash分析

    问题描述:线上进程异常退出,查看服务器端日志,有jvm crash文件生成 # # A fatal error has been detected by the Java Runtime Enviro ...

  8. Spring事务管理----------整合学习版

    作者:学无先后 达者为先 Spring提供了一流的事务管理.在Spring中可以支持声明式事务和编程式事务. 一  spring简介 1 Spring的事务       事务管理在应用程序中起着至关重 ...

  9. ACM-ICPC 2015 沈阳赛区现场赛 F. Frogs && HDU 5514(容斥)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5514 题意:有m个石子围成一圈, 有n只青蛙从跳石子, 都从0号石子开始, 每只能越过xi个石子.问所 ...

  10. vue2 练习

    table标签的frame和rules属性,可以控制边框的显示.frame属性控制着表格最外围的四条边框的可见性,而 rules 则控制着表格内部边框的可见性. frame属性可取的值及含义如下: * ...