首页 > 编程语言 > 详细

用python写一个ATM机(1)

时间:2019-08-14 17:18:07      阅读:328      评论:0      收藏:0      [点我收藏+]

设计知识点:1,设计知识点:文件,函数,模块,数据库等
2,ATM机编程设计众多知识点,已经成为各个编程语言中练手项目
3,今天先演示一下需求及他人写的部分代码(自己精选的代码)
一、题目要求:
通过Python编程完成一个银行ATM机模拟系统,具备如下功能:
(1)登陆验证:用户输入用户名密码登陆,检测用户名是否存在以及用户名密码是否匹配;用户名密码各有三次输入机会,超过三次系统退出。
(2)菜单界面:登陆成功后显示功能操作界面,输入序号选择对应功能。
(3)用户注册:用户可以输入用户名和密码创建自己的账号,并输入电话号码等信息,如果用户名存在则让用户重新输入用户名。注册后免费赠送5000元余额。
(4)账户管理:用户可以随时查看自己的账户余额。用户可以输入其他账户用户名,实现转账功能;用户名必须存在。用户也可以模拟实现存取款功能。
(5)用户名和密码以及账户信息等必须永久保存。且基于命令行完成,不需要开发GUI界面。
二、实现过程:
1.连接MySQL数据库、建立数据表、给数据表中插入数据:
如果事先没有建立数据表,则需在程序中加上这一部分代码,但运行一次后需删除这部分内容,因为二次运行后会导致之前存放的数据丢失;如果数据表事先已经建立好,则不需再编写这部分内容

(1)代码一
Python练习项目——模拟ATM机登录系统
一、题目要求:
通过Python编程完成一个银行ATM机模拟系统,具备如下功能:
(1)登陆验证:用户输入用户名密码登陆,检测用户名是否存在以及用户名密码是否匹配;用户名密码各有三次输入机会,超过三次系统退出。
(2)菜单界面:登陆成功后显示功能操作界面,输入序号选择对应功能。
(3)用户注册:用户可以输入用户名和密码创建自己的账号,并输入电话号码等信息,如果用户名存在则让用户重新输入用户名。注册后免费赠送5000元余额。
(4)账户管理:用户可以随时查看自己的账户余额。用户可以输入其他账户用户名,实现转账功能;用户名必须存在。用户也可以模拟实现存取款功能。
(5)用户名和密码以及账户信息等必须永久保存。且基于命令行完成,不需要开发GUI界面。
二、实现过程:
1.连接MySQL数据库、建立数据表、给数据表中插入数据:
如果事先没有建立数据表,则需在程序中加上这一部分代码,但运行一次后需删除这部分内容,因为二次运行后会导致之前存放的数据丢失;如果数据表事先已经建立好,则不需再编写这部分内容

  1. coding=utf-8

  2. import MySQLdb
  3. conn = MySQLdb.connect(host=‘127.0.0.1‘,port=3306,user=‘root‘,passwd=‘971012‘,db=‘test‘,charset="utf8") #连接mysql数据库
  4. cursor = conn.cursor() #获取游标来进行查询
  5. 创建数据表用来存放用户信息

  6. sql = ‘‘‘CREATE TABLE IF NOT EXISTS userinfoes (
  7.       user  VARCHAR(20),
  8.      password  VARCHAR(6),
  9.      age VARCHAR(3),  
  10.      sex VARCHAR(5),
  11.      mobile VARCHAR(11),
  12.      balance FLOAT(12,2))'''
  13. cursor.execute(sql)
  14. sql = ‘‘‘INSERT INTO userinfoes(user,
  15.      password,age,sex,mobile,balance)
  16.      VALUES ('luu','123456','19','woman','12345678900',10000)'''
  17. cursor.execute(sql)

2.实现登录验证

  1. def login():
  2.  ##########判断用户名##########    
  3.  print u'请输入你的用户名:'
  4.  k=3 #记录输错次数
  5.  while k:
  6.      global username
  7.      username = raw_input()
  8.      userinfoes = "SELECT * FROM userinfoes WHERE user='%s'"%username #查询该用户是否存在
  9.      j = cursor.execute(userinfoes) #满足该条件的数据条数
  10.     if username == '':
  11.         print u'用户名不能为空!'
  12.     elif j == 0:
  13.         k-=1
  14.         if k!=0:
  15.             print u'用户名错误,请重新输入:'
  16.         else:
  17.             print u'你已输错三次!'
  18.             conn.close()
  19.             cursor.close()
  20.             exit()
  21.     else:
  22.         break
  23. ##########判断密码##########
  24. print u'请输入你的密码:'
  25. k = 3
  26. while k:
  27.     password = raw_input()
  28.     userinfoes = "SELECT * FROM userinfoes WHERE user='%s' and password='%s'"%(username,password) #查询输入的密码是否与用户匹配
  29.     j = cursor.execute(userinfoes)
  30.     if password == '':
  31.         print u'密码不能为空!'
  32.     elif j == 0:
  33.         k-=1
  34.         if k!=0:
  35.             print u'密码错误,请重新输入:'
  36.         else:
  37.             print u'你已输错三次!'
  38.             conn.close()
  39.             cursor.close()
  40.             exit()
  41.     else:
  42.         print u'恭喜你,登录成功!'
  43.         break

3.实现用户注册

  1. 注册

  2. def enroll():
  3.  print u'请输入用户名(长度<=20):' #用户名
  4.  while 1:
  5.      username = raw_input()
  6.      userinfoes = "SELECT * FROM userinfoes WHERE user='%s'"%username #查询该用户是否存在
  7.      j = cursor.execute(userinfoes) #满足此条件的数据条数
  8.      if j==1:
  9.          print u'该用户名已经存在,请重新输入!'
  10.     elif username=='':
  11.         print u'用户名不能为空!'
  12.     else:
  13.         break
  14. def judge():
  15.     while(1):
  16.         password = raw_input()
  17.         if len(password)!=6:
  18.             print u'长度不正确,请重新输入:'
  19.         else:
  20.             break
  21.     return password    
  22. while 1:
  23.     print u'请输入密码(长度=6):'
  24.     p = judge()
  25.     print u'请再次确认密码:'
  26.     q = judge()
  27.     if p!=q:
  28.         print u'两次输入的密码不相等,请重新输入!'
  29.     else:
  30.         break
  31. print u'请输入你的年龄:'
  32. while 1:
  33.     age = raw_input()
  34.     if age=='':
  35.         print u'年龄不能为空,请重新输入!'
  36.     elif len(age)>3:
  37.         print u'请输入有效年龄!'
  38.     else:
  39.         break
  40. print u'请输入你的性别(man/woman):'
  41. while 1:
  42.     sex = raw_input()
  43.     if sex!='man' and sex!='woman':
  44.         print u'请输入正确信息!'
  45.     else:
  46.         break
  47. print u'请输入你的电话号码:'
  48. while 1:
  49.     mobile = raw_input()
  50.     j=0
  51.     for i in mobile:
  52.         if i<'0' or i>'9':
  53.             j+=1
  54.     if len(mobile)!=11 or j!=0:
  55.         print u'请输入有效信息!'
  56.     else:
  57.         break
  58. sql = "INSERT INTO userinfoes(user,password,age,sex,mobile,balance)VALUES('%s','%s','%s','%s','%s','%f')" % (username,p,age,sex,mobile,5000.00)
  59. try:
  60.     cursor.execute(sql)
  61.     conn.commit()
  62.     print u'注册成功,获得5000元余额!'
  63.     judge1()
  64. except:
  65.     conn.rollback()

4.系统退出(数据库用完后一定要记得断开数据库连接)

  1. conn.close()
  2. cursor.close()

5.主菜单界面

  1. def Home_page():
  2.  print u'''======欢迎使用蜗牛ATM无限制存取款系统======
  3. ====请输入你的选项,1:登录 2:注册 3:退出===
  4. ===========================================‘‘‘
  5. 主菜单

  6. def judge1():
  7.  Home_page()
  8.  while 1:
  9.     judge_1 = raw_input()
  10.     if judge_1=='1': #登录
  11.         login()
  12.         judge2()
  13.     elif judge_1 == '2': #注册
  14.         enroll()
  15.     elif judge_1=='3': #退出
  16.         print u'感谢你的使用!'
  17.         conn.close()
  18.         cursor.close()
  19.         exit()
  20.     else:
  21.         print u'请输入有效数字!'

6.登陆后副菜单界面(实现余额查询、转账、取款、存款等)

  1. def Home_page_2():
  2.  print u'''====================请输入你的选项=====================
  3. ==1:查询余额 2:转账 3:取款 4:存款 5:返回主菜单 6:退出==
  4. =======================================================‘‘‘
  5. 副菜单

  6. def judge2():
  7.  while 1:
  8.      Home_page_2()
  9.      judge_2 = raw_input()
  10.      if judge_2=='1':#余额
  11.          print u'你的余额为:%0.2f'%user_balance(username) 
  12.          continue
  13.     elif judge_2=='2': #转账
  14.         print u'请输入对方用户名:'
  15.         while 1:
  16.             other_username = raw_input()
  17.             userinfoes = "SELECT * FROM userinfoes WHERE user='%s'"%other_username #查询该用户是否存在
  18.             j = cursor.execute(userinfoes) #满足该条件的数据条数
  19.             if other_username == '':
  20.                 print u'用户名不能为空!'
  21.             elif j==0:
  22.                 print u'用户名不存在,请输入有效用户名;'
  23.             else:
  24.                 print u'请输入转账金额:'
  25.                 sum = float(raw_input())
  26.                 M_balance = user_balance(username)
  27.                 O_balance = user_balance(other_username)
  28.                 if M_balance-sum >= 0:
  29.                     sq1 = "UPDATE userinfoes SET balance=%0.2f WHERE user='%s'" % (M_balance-sum, username)
  30.                     sq2 = "UPDATE userinfoes SET balance=%0.2f WHERE user='%s'" % (O_balance+sum, other_username)
  31.                     try:
  32.                         cursor.execute(sq1)
  33.                         cursor.execute(sq2)
  34.                         conn.commit()
  35.                         print u'转账成功!'
  36.                     except:
  37.                         conn.rollback()
  38.                         print u'转账失败'
  39.                 else:
  40.                     print u'转账失败,你余额不足!'
  41.             break   
  42.         continue
  43.     elif judge_2=='3': #取款
  44.         print u'请输入你的取款金额:'
  45.         sum = float(raw_input())
  46.         M_balance = user_balance(username)
  47.         if M_balance-sum >= 0:
  48.             sq1 = "UPDATE userinfoes SET balance='%0.2f' WHERE user='%s'"%(M_balance-sum, username)
  49.             try:
  50.                 cursor.execute(sq1)
  51.                 conn.commit()
  52.                 print u'取款成功!'
  53.             except:
  54.                 conn.rollback()
  55.         else:
  56.             print u'你的余额不足!'
  57.         continue
  58.     elif judge_2=='4': #存款
  59.         print u'请输入你的存款金额(金额<100,000,000.00):'
  60.         sum = raw_input()
  61.         if ',' in sum:
  62.             sum = sum.replace(',','')
  63.         sum = float(sum)
  64.         sq1 = "UPDATE userinfoes SET balance=balance+'%0.2f' WHERE user='%s'"%(sum, username)
  65.         try:
  66.             cursor.execute(sq1)
  67.             conn.commit()
  68.             print u'存款成功!'
  69.         except:
  70.             conn.rollback()
  71.             print u'存款失败!'
  72.         continue
  73.     elif judge_2=='5': #返回主菜单
  74.         judge1()
  75.     elif judge_2=='6': #退出
  76.         print u'感谢你的使用!'
  77.         conn.close()
  78.         cursor.close()
  79.         exit()
  80.     else:
  81.         print u'请输入有效数字!'
  82.         continue
  83.     break
  84. 余额

  85. def user_balance(h):
  86.  userinfoes = "SELECT * FROM userinfoes WHERE user='%s'"%h
  87.  j = cursor.execute(userinfoes)
  88.  k = cursor.fetchmany(j)
  89.  for i in k:
  90.      return i[5]
  91. 7.基本功能都已经实现,最后再调用主菜单就大功告成了!
    judge1()
    三、运行结果部分截图

技术分享图片

技术分享图片

用python写一个ATM机(1)

原文:https://www.cnblogs.com/abdm-989/p/11353241.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!