设计知识点: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数据库、建立数据表、给数据表中插入数据:
如果事先没有建立数据表,则需在程序中加上这一部分代码,但运行一次后需删除这部分内容,因为二次运行后会导致之前存放的数据丢失;如果数据表事先已经建立好,则不需再编写这部分内容
创建数据表用来存放用户信息
user VARCHAR(20), password VARCHAR(6), age VARCHAR(3), sex VARCHAR(5), mobile VARCHAR(11), balance FLOAT(12,2))''' password,age,sex,mobile,balance) VALUES ('luu','123456','19','woman','12345678900',10000)'''2.实现登录验证
##########判断用户名########## print u'请输入你的用户名:' k=3 #记录输错次数 while k: global username username = raw_input() userinfoes = "SELECT * FROM userinfoes WHERE user='%s'"%username #查询该用户是否存在 j = cursor.execute(userinfoes) #满足该条件的数据条数 if username == '': print u'用户名不能为空!' elif j == 0: k-=1 if k!=0: print u'用户名错误,请重新输入:' else: print u'你已输错三次!' conn.close() cursor.close() exit() else: break##########判断密码##########print u'请输入你的密码:'k = 3while k: password = raw_input() userinfoes = "SELECT * FROM userinfoes WHERE user='%s' and password='%s'"%(username,password) #查询输入的密码是否与用户匹配 j = cursor.execute(userinfoes) if password == '': print u'密码不能为空!' elif j == 0: k-=1 if k!=0: print u'密码错误,请重新输入:' else: print u'你已输错三次!' conn.close() cursor.close() exit() else: print u'恭喜你,登录成功!' break3.实现用户注册
注册
print u'请输入用户名(长度<=20):' #用户名 while 1: username = raw_input() userinfoes = "SELECT * FROM userinfoes WHERE user='%s'"%username #查询该用户是否存在 j = cursor.execute(userinfoes) #满足此条件的数据条数 if j==1: print u'该用户名已经存在,请重新输入!' elif username=='': print u'用户名不能为空!' else: breakdef judge(): while(1): password = raw_input() if len(password)!=6: print u'长度不正确,请重新输入:' else: break return password while 1: print u'请输入密码(长度=6):' p = judge() print u'请再次确认密码:' q = judge() if p!=q: print u'两次输入的密码不相等,请重新输入!' else: breakprint u'请输入你的年龄:'while 1: age = raw_input() if age=='': print u'年龄不能为空,请重新输入!' elif len(age)>3: print u'请输入有效年龄!' else: breakprint u'请输入你的性别(man/woman):'while 1: sex = raw_input() if sex!='man' and sex!='woman': print u'请输入正确信息!' else: breakprint u'请输入你的电话号码:'while 1: mobile = raw_input() j=0 for i in mobile: if i<'0' or i>'9': j+=1 if len(mobile)!=11 or j!=0: print u'请输入有效信息!' else: breaksql = "INSERT INTO userinfoes(user,password,age,sex,mobile,balance)VALUES('%s','%s','%s','%s','%s','%f')" % (username,p,age,sex,mobile,5000.00)try: cursor.execute(sql) conn.commit() print u'注册成功,获得5000元余额!' judge1()except: conn.rollback()4.系统退出(数据库用完后一定要记得断开数据库连接)
5.主菜单界面
print u'''======欢迎使用蜗牛ATM无限制存取款系统======主菜单
Home_page() while 1: judge_1 = raw_input() if judge_1=='1': #登录 login() judge2() elif judge_1 == '2': #注册 enroll() elif judge_1=='3': #退出 print u'感谢你的使用!' conn.close() cursor.close() exit() else: print u'请输入有效数字!'6.登陆后副菜单界面(实现余额查询、转账、取款、存款等)
print u'''====================请输入你的选项=====================副菜单
while 1: Home_page_2() judge_2 = raw_input() if judge_2=='1':#余额 print u'你的余额为:%0.2f'%user_balance(username) continue elif judge_2=='2': #转账 print u'请输入对方用户名:' while 1: other_username = raw_input() userinfoes = "SELECT * FROM userinfoes WHERE user='%s'"%other_username #查询该用户是否存在 j = cursor.execute(userinfoes) #满足该条件的数据条数 if other_username == '': print u'用户名不能为空!' elif j==0: print u'用户名不存在,请输入有效用户名;' else: print u'请输入转账金额:' sum = float(raw_input()) M_balance = user_balance(username) O_balance = user_balance(other_username) if M_balance-sum >= 0: sq1 = "UPDATE userinfoes SET balance=%0.2f WHERE user='%s'" % (M_balance-sum, username) sq2 = "UPDATE userinfoes SET balance=%0.2f WHERE user='%s'" % (O_balance+sum, other_username) try: cursor.execute(sq1) cursor.execute(sq2) conn.commit() print u'转账成功!' except: conn.rollback() print u'转账失败' else: print u'转账失败,你余额不足!' break continue elif judge_2=='3': #取款 print u'请输入你的取款金额:' sum = float(raw_input()) M_balance = user_balance(username) if M_balance-sum >= 0: sq1 = "UPDATE userinfoes SET balance='%0.2f' WHERE user='%s'"%(M_balance-sum, username) try: cursor.execute(sq1) conn.commit() print u'取款成功!' except: conn.rollback() else: print u'你的余额不足!' continue elif judge_2=='4': #存款 print u'请输入你的存款金额(金额<100,000,000.00):' sum = raw_input() if ',' in sum: sum = sum.replace(',','') sum = float(sum) sq1 = "UPDATE userinfoes SET balance=balance+'%0.2f' WHERE user='%s'"%(sum, username) try: cursor.execute(sq1) conn.commit() print u'存款成功!' except: conn.rollback() print u'存款失败!' continue elif judge_2=='5': #返回主菜单 judge1() elif judge_2=='6': #退出 print u'感谢你的使用!' conn.close() cursor.close() exit() else: print u'请输入有效数字!' continue break余额
userinfoes = "SELECT * FROM userinfoes WHERE user='%s'"%h j = cursor.execute(userinfoes) k = cursor.fetchmany(j) for i in k: return i[5]

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