个人作业三-ATM管理系统

个人作业三-ATM管理系统


博客班级 AHPU软件工程
作业要求 ATM管理系统
作业目标 编码实现ATM自助银行服务系统
学号 3180701124

一、题目要求

编写一个ATM管理系统,语言不限,要求应包括以下主要功能:

(1)开户,销户

(2)查询账户余额

(3)存款

(4)取款

(5)转账(一个账户转到另一个账户)等...

二、代码提交

1、对象关于用户

def str(self):
return '姓名:{},身份证:{},卡号:{}'.format(self.name, self.uid, self.card.cid)

将用户对象保存到文件中

@staticmethod
def save_user(userinfo):
pathname = os.path.join(os.getcwd(), 'userinfo.db')
with open(pathname, 'wb') as fp:
pickle.dump(userinfo, fp)

从文件中加载数据重新转换为用户对象

@staticmethod
def load_user():
pathname = os.path.join(os.getcwd(), 'userinfo.db')
if os.path.exists(pathname):
with open(pathname, 'rb') as fp:
userinfo = pickle.load(fp)
return userinfo
else:
return {}

2、对象关于管理员

显示欢迎页面

def welcome(self):
print('' * 30)
print(' ' * 5 + '欢迎使用xx银行管理系统')
print('
' * 30)

登录页面

def login(self):
account = input('请输入管理员账号:')
password = input('请输入管理员密码:')

if account == 'admin' and password == '123456':
return True
return False

操作菜单

def menu(self):
print('' * 30)
print('开户[1] 销户[2] 查询[3] 存款[4]')
print('取款[5] 转账[6] 该密[7] 锁定[8]')
print('解锁[9] 退出[0] 显示所有用户[10]')
print('
' * 30)

3、对象关于银行卡

def init(self, cardID, card_passwd, card_Money):
self.cardID = cardID # 卡号
self.card_passwd = card_passwd # 密码
self.card_Money = card_Money # 余额
self.cardLock = False # 是否锁定

4、关于操作

⚝⚝⚝开户、销户

def new_user(self):
name = input('请输入用户名:')
uid = input('请输入身份证:')
pwd = input('请输入密码:')
# 加密密码
pwd = Helper.generate_password_hash(pwd)
# 先创建银行卡对象
# 生成卡号
cid = Helper.generate_cid()
card = Card(cid, pwd)
user = User(uid, name, card)
# 保存到字典中
self.userinfo[cid] = user
# 保存所有用户信息
User.save_user(self.userinfo)
print('开户成功')

def del_user(self):
print('销户')

⚝⚝⚝查询账户余额、存款、取款

def query_money(self):
cid = input('请输入您的卡号:')
user = self.userinfo.get(cid)
if user:
# 查看是否已经锁定
if user.card.is_lock:
print('该卡已锁定,请先解锁')
return
print('账户余额:¥{}元'.format(user.card.money))
else:
print('无效的卡号')

def get_money(self):
print('取钱成功')

def save_money(self):
cid = input('请输入您的卡号:')
user = self.userinfo.get(cid)
if user:
# 查看是否已经锁定
if user.card.is_lock:
print('该卡已锁定,请先解锁')
return
# 记录密码错误次数
count = 0
while count < 3:
pwd = input('请输入您的密码:')
# 校验密码
if Helper.check_password_hash(pwd, user.card.pwd):
money = input('请输入您要存的金额:')
user.card.money += int(money)
User.save_user(self.userinfo)
print('存款成功')
break
else:
count += 1
print('密码有误,请重新输入')
else:
user.card.is_lock = True
User.save_user(self.userinfo)
print('密码错误已达上限,该卡已锁定')
else:
print('无效的卡号')

⚝⚝⚝转账

def pass_money(self):
cid = input('请输入您的卡号:')
user = self.userinfo.get(cid)
if user:
pwd = input('请输入您的密码:')
if Helper.check_password_hash(pwd, user.card.pwd):
dst_cid = input('请输入收款人账号:')
dst_user = self.userinfo.get(dst_cid)
if dst_user:
money = int(input('请输入您的转账金额:'))
# 判断账户余额是否充足
if user.card.money >= money:
user.card.money -= money
dst_user.card.money += money
User.save_user(self.userinfo)
print('转账成功')
else:
print('余额不足,请及时充值')
else:
print('收款人信息有误')
else:
print('密码错误')
else:
print('无效的卡号')

def change_pwd(self):
print('修改密码成功')

三、个人小结

1、psp表格

psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 120 8
Development 开发 100 150
Analysis 需求分析(包括学习新技术) 10 10
Design Spec 生成设计文档 30 40
Design Review 设计复审 5 10
Coding Standard 代码规范 3 2
Design 具体设计 10 12
Coding 具体编码 36 21
Code Review 代码复审 5 7
Test 测试(自我测试,修改代码,提交修改) 10 15
Reporting 报告 9 6
Test Report 测试报告 3 2
Size Measurement 计算工作量 2 1
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 3 3

2、心得和经验

在网上查询了许多优秀完整的系统,感觉到独自编程对自己来说还是有很多困难,要加强自己的编程能力。

posted @ 2020-11-18 23:11  小雅*  阅读(160)  评论(0)    收藏  举报