个人作业三-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、心得和经验
在网上查询了许多优秀完整的系统,感觉到独自编程对自己来说还是有很多困难,要加强自己的编程能力。

浙公网安备 33010602011771号