用python写atm自动取款_Python编写ATM(初级进阶)

1 importos2

3

4 #普通用户

5 classClient:6 def __init__(self, data):7 print(data)8 self.id = data[0] #id

9 self.password = data[1] #密码

10 self.level = data[2] #级别

11 self.money = data[3] #金额

12 self.stauts = data[4] #状态

13

14 #查询 金额

15 defchaxun(self):16 print("账号'%s',余额为%.2f$" %(self.id, int(self.money)))17 returnself.money18

19 #取钱

20 defqu(self):21 num = int(input("输入取走金额(以百为单位,最高5000):"))22 while num % 100 != 0 or num > int(self.money) or num < 100 or num > 5000:23 num = int(input("输入错误,请重试:"))24 data_list =[]25 with open("user_info.txt", 'r', encoding='utf8') as f:26 for line inf:27 data_list.append(line)28 with open("user_info(副本).txt", 'w', encoding='utf8') as f1:29 for i inrange(len(data_list)):30 detail_list = data_list[i].strip().split(',')31 if detail_list[0] ==self.id:32 #取完后的钱

33 self.money = str(int(detail_list[3]) -num)34 detail_list[3] =self.money35 info_str = ','.join(detail_list) + "\n"

36 f1.write(info_str)37 else:38 info_str = ','.join(detail_list) + '\n'

39 f1.write(info_str)40 os.remove('user_info.txt')41 os.rename('user_info(副本).txt', 'user_info.txt')42 print("账号'%s',取走%.2f$,余额为%.2f$" %(self.id, int(num), int(self.money)))43 returnself.money44 #存钱

45 defcun(self):46 num = int(input("输入存入金额(以百为单位):"))47 while num % 100 != 0 or num < 100:48 num = int(input("输入错误,请重试:"))49 data_list =[]50 with open("user_info.txt", 'r', encoding='utf8') as f:51 for line inf:52 data_list.append(line)53 with open("user_info(副本).txt", 'w', encoding='utf8') as f1:54 for i inrange(len(data_list)):55 detail_list = data_list[i].strip().split(',')56 if detail_list[0] ==self.id:57 #存完之后的钱

58 self.money = str(int(detail_list[3]) +num)59 detail_list[3] =self.money60 info_str = ','.join(detail_list) + "\n"

61 f1.write(info_str)62 else:63 info_str = ','.join(detail_list) + '\n'

64 f1.write(info_str)65 os.remove('user_info.txt')66 os.rename('user_info(副本).txt', 'user_info.txt')67 print("账号'%s',取走%.2f$,余额为%.2f$" %(self.id, int(num), int(self.money)))68 returnself.money69

70 #转账

71 defzhuan(self):72 id_list =[]73 with open("user_info.txt", 'r', encoding='utf8') as f:74 for line inf:75 info_list = line.strip().split(',')76 id_list.append(info_list[0])77 print("#ID列表", id_list, )78 id = input("输入转账ID:")79 while id not in id_list or id ==self.id:80 id = input("ID输入错误,请重试:")81 if id.lower() == 'q':82 return

83

84 num = int(input("输入转账金额(以百为单位,最高5000):"))85 while num % 100 != 0 or num > int(self.money) or num < 100 or num > 5000:86 num = int(input("金额输入错误,请重试:"))87

88 data_list =[]89 with open("user_info.txt", 'r', encoding='utf8') as f:90 for line inf:91 data_list.append(line)92

93 with open("user_info(副本).txt", 'w', encoding='utf8') as f1:94 for i inrange(len(data_list)):95 detail_list = data_list[i].strip().split(',')96 if detail_list[0] == self.id: #修改自己的 金额

97 self.money = str(int(detail_list[3]) -num)98 detail_list[3] =self.money99 info_str = ','.join(detail_list) + "\n"

100 f1.write(info_str)101 elif detail_list[0] == id: #增加 接收人的金额

102 detail_list[3] = str(int(detail_list[3]) +num)103 info_str = ','.join(detail_list) + "\n"

104 f1.write(info_str)105 else:106 info_str = ','.join(detail_list) + '\n'

107 f1.write(info_str)108 os.remove('user_info.txt')109 os.rename('user_info(副本).txt', 'user_info.txt')110 print("转账成功,剩余余额%.2f" %int(self.money))111 returnself.money112

113 #修改密码

114 defxiugai(self, ):115 old_pwd = input("输入旧密码:")116 while old_pwd !=self.password:117 old_pwd = input("密码错误,请重试:")118

119 new_pwd = input("输入新密码(q返回):")120 if new_pwd.lower() == 'q':121 print("取消修改密码")122 return

123

124 while len(new_pwd) < 6 or len(set(new_pwd)) == 1:125 new_pwd = input("新密码不能小于6位或者6位完全相同,请重试:")126

127 new_pwd_2 = input("确认新密码:")128 while len(new_pwd_2) < 6 or len(set(new_pwd_2)) == 1:129 print("新密码不能小于6位或者6位完全相同,请重试:")130 if new_pwd ==new_pwd_2:131 data_list =[]132 with open("user_info.txt", 'r', encoding='utf8') as f:133 for line inf:134 data_list.append(line)135

136 with open("user_info(副本).txt", 'w', encoding='utf8') as f1:137 for i inrange(len(data_list)):138 detail_list = data_list[i].strip().split(',')139 if detail_list[0] == self.id: #修改自己密码

140 self.password =new_pwd141 detail_list[1] =self.password142 info_str = ','.join(detail_list) + "\n"

143 f1.write(info_str)144 else:145 info_str = ','.join(detail_list) + '\n'

146 f1.write(info_str)147 os.remove('user_info.txt')148 os.rename('user_info(副本).txt', 'user_info.txt')149 print("密码修改成功,新密码为%s" %self.password)150 returnself.password151

152 else:153 print("2次密码不一样,请重试")154 return

155

156 #管理员

157 classAdmin:158 def __init__(self):159 self.id = 'a0001'

160 self.password = '112233'

161

162 #添加 用户

163 deftianjia(self):164 id_list =[]165 with open("user_info.txt", 'r', encoding='utf8') as f:166 for line inf:167 info_list = line.strip().split(',')168 id_list.append(info_list[0])169

170 new_id = input("输入新账号ID:")171 while new_id inid_list:172 new_id = input("ID已存在,请重试:")173

174 with open("user_info.txt", 'a', encoding='utf8') as f:175 f.write(new_id + ',' + '123456' + ',' + '1' + ',' + '10000' + ',' + '0' + '\n')176 print(new_id, '添加成功')177

178 #冻结

179 defdongjie(self):180 id_list =[]181 with open("user_info.txt", 'r', encoding='utf8') as f:182 for line inf:183 info_list = line.strip().split(',')184 id_list.append(info_list[0])185

186 dongjie_id = input("输入冻结账号ID:")187 while dongjie_id not inid_list:188 dongjie_id = input("ID不存在,请重试:")189

190 data_list =[]191 with open("user_info.txt", 'r', encoding='utf8') as f:192 for line inf:193 data_list.append(line)194

195 with open("user_info(副本).txt", 'w', encoding='utf8') as f1:196 for i inrange(len(data_list)):197 detail_list = data_list[i].strip().split(',')198 if detail_list[0] == dongjie_id: #修改自己密码

199 detail_list[-1] = '1'

200 info_str = ','.join(detail_list) + "\n"

201 f1.write(info_str)202 else:203 info_str = ','.join(detail_list) + '\n'

204 f1.write(info_str)205 os.remove('user_info.txt')206 os.rename('user_info(副本).txt', 'user_info.txt')207 print(dongjie_id, '以冻结')208

209 #解冻

210 defjiedong(self):211 id_list =[]212 with open("user_info.txt", 'r', encoding='utf8') as f:213 for line inf:214 info_list = line.strip().split(',')215 id_list.append(info_list[0])216

217 jiedong_id = input("输入解冻账号ID:")218 while jiedong_id not inid_list:219 jiedong_id = input("ID不存在,请重试:")220

221 data_list =[]222 with open("user_info.txt", 'r', encoding='utf8') as f:223 for line inf:224 data_list.append(line)225

226 with open("user_info(副本).txt", 'w', encoding='utf8') as f1:227 for i inrange(len(data_list)):228 detail_list = data_list[i].strip().split(',')229 if detail_list[0] == jiedong_id: #修改自己密码

230 detail_list[-1] = '0'

231 info_str = ','.join(detail_list) + "\n"

232 f1.write(info_str)233 else:234 info_str = ','.join(detail_list) + '\n'

235 f1.write(info_str)236 os.remove('user_info.txt')237 os.rename('user_info(副本).txt', 'user_info.txt')238 print(jiedong_id, '已解冻')239

240 #查询用户信息

241 defchaxun(self):242 id_list =[]243 with open("user_info.txt", 'r', encoding='utf8') as f:244 for line inf:245 info_list = line.strip().split(',')246 id_list.append(info_list[0])247 print('ID列表', id_list)248 chaxun_id = input("查询ID:")249

250 while chaxun_id not inid_list:251 print('ID列表', id_list)252 chaxun_id = input("ID不存在,请重试:")253

254 l = ['账号', '密码', '级别(0管理员,1普通)', '金额', '状态(0正常,1冻结)']255

256 with open("user_info.txt", 'r', encoding='utf8') as f:257 for line inf:258 info_list = line.strip().split(',')259 if chaxun_id ==info_list[0]:260 for i inrange(len(info_list)):261 print(l[i], ">>>", info_list[i])262 return

263 else:264 print("ID不存在,请重试:")265

266

267 #ATM 系统

268 classATM:269

270 def __init__(self):271 with open("user_info.txt", 'w', encoding='utf8') as f:272 f.write("a0001,112233,0,10000,0" + '\n') #管理员

273 f.write("p0001,123456,0,10000,0" + '\n') #普通账号1

274 f.write("p0002,123456,0,10000,0" + '\n') #普通账号2

275

276 #密码错三次冻结

277 defdongjie(self, ID):278 data_list =[]279 with open("user_info.txt", 'r', encoding='utf8') as f:280 for line inf:281 data_list.append(line)282

283 with open("user_info(副本).txt", 'w', encoding='utf8') as f1:284 for i inrange(len(data_list)):285 detail_list = data_list[i].strip().split(',')286 if detail_list[0] == ID: #修改自己密码

287 detail_list[-1] = '1'

288 info_str = ','.join(detail_list) + "\n"

289 f1.write(info_str)290 else:291 info_str = ','.join(detail_list) + '\n'

292 f1.write(info_str)293 os.remove('user_info.txt')294 os.rename('user_info(副本).txt', 'user_info.txt')295

296 #z主程序运行

297 defrun(self):298 ID = input("请输入卡号:")299 password = input("请输入密码:")300 client =None301 admin =None302

303 #管理员登录

304 if ID == 'a0001':305 while password != '112233':306 password = input("密码错误,联系管理员(q退出系统):")307 if password.lower() == 'q':308 print('退出系统...')309 return

310 print("管理员登录成功")311 admin =Admin()312

313 if admin !=None:314 task = {'1': admin.tianjia, '2': admin.dongjie, '3': admin.jiedong, '4': admin.chaxun}315 menu = {'1': "添加账号", '2': "冻结账号", '3': "解冻", '4': "查询信息", '5': '退出系统'}316

317 while 1:318 for k, v inmenu.items():319 print(k, v)320

321 choice = input("请输入你要执行的任务序号:")322 if choice == '5':323 print('退出系统...')324 return

325 try:326 task[choice]()327 exceptException as e:328 print("出错,请重试....")329 print('\n')330

331 with open("user_info.txt", 'r', encoding='utf8') as f:332 data_list =[]333 for line inf:334 data_list.append(line)335

336 for line indata_list:337 num = 1

338

339 #用户信息列表

340 data = line.strip().split(",")341 if ID == data[0]: #判断 账号是否存在

342 if data[-1] == "1":343 print('该账号已冻结,请联系管理员解冻')344 return

345

346 #密码错三次 账号冻结

347 while password != data[1] and num < 3:348 num += 1

349 password = input("密码错误,请重试(第%s次尝试):" %num)350

351 if ID == data[0] and password == data[1]:352

353 print('"%s",登录成功\n' %ID)354 client = Client(data) #实例化一个客户类 把用户信息传进去

355 break #跳出 for 循环

356

357 else:358 self.dongjie(ID)359 print("该账号'%s'已冻结,联系管理员解冻" %ID)360 break #跳出 for 循环

361 else:362 print("账号'%s'不存在,请联系管理员" %ID)363

364 if client !=None:365 task = {'1': client.chaxun, '2': client.qu, '3': client.cun, '4': client.zhuan, '5': client.xiugai}366 menu = {'1': "查询余额", '2': "取款", '3': "存款", '4': "转账", '5': "修改个人密码", '6': '退出系统'}367 while 1:368 for k, v inmenu.items():369 print(k, v)370

371 choice = input("请输入你要执行的任务序号(默认为1):")372 if choice == '6':373 print('退出系统...')374 return

375 try:376 task[choice]()377 exceptException as e:378 print("出错,请重试...")379 print('\n')380

381

382 if __name__ == '__main__':383 ATM().run() #程序的入口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值