面向对象小项目练习(迷你DVD系统)

import sys
import datetime
class DVD(object):#创建DVD类
def __init__(self,name,state,date):#设置对象属性
self.name = name
self.state = state
self.date = date#设置私有属性
@property#相当于get方法
def date(self):
return self.__date
@date.setter#相当于set方法
def date(self,date):
if self.state == 0:#如果DVD是已借出,那么date时间就不能为空
self.__date = date
else:
self.__date = ""#如果DVD是可借状态,日期可以为空


class Manage():#业务类;继承DVD类的属性
#初始化光碟
Dvd_list = []#用于存放Dvd
def initDvd(self):#先初始化三本书
d1 = DVD("霸王别姬",1,"")#状态为1,表示可借;状态为0表示已借出
Manage.Dvd_list.append(d1)
d2 = DVD("阿甘正传",1,"")#创建实例对象,并初始化值
Manage.Dvd_list.append(d2)
d3 = DVD("肖克申救赎",1,"")
Manage.Dvd_list.append(d3)
@staticmethod#定义静态方法,不需要创建对象可以直接访问犯法
def memu():#创建页面方法
dict1 = {1:"增加DVD",2:"查看DVD",3:"删除DVD",4:"借出DVD",5:"归还DVD",6:"退出"}
print("-------欢迎使用迷你DVD系统-------")
for key,value in dict1.items():
print("\t\t",key,"." + value)
print("-------------------------------")
def add(self):#创建增加方法
flag = False
while True:
name = input("请输入DVD名称:")
new_d = DVD(name,1,"")#将新增的DVD实例化
Manage.Dvd_list.append(new_d)#添加到Dvd列表
print("新增%s成功!"%name)
a = input("是否继续添加:")
if a == "y":
flag = True
else:
self.select()#同类中调用方法是self.同类方法名
def find(self):#查找方法
print("---->查书")
print("序号\t\t状态\t\t名称\t\t借出日期")
for i in range(len(Manage.Dvd_list)):
print(i,"\t\t",Manage.Dvd_list[i].state,"\t",Manage.Dvd_list[i].name,"\t\t",Manage.Dvd_list[i].date)
def delete(self):
count = 0
delete_list = []
print("---->删除")
delete_name = input("请输入DVD名称:")
for i in range(len(Manage.Dvd_list)):
if Manage.Dvd_list[i].name == delete_name:
Manage.Dvd_list.pop(i)
print("删除成功!")
break
else:
count += 1
if count == len(Manage.Dvd_list):
print("对不起没有该书")

def loan(self):
print("---->借出DVD")
loan_name = input("请输入DVD名称:")
count = 1
for i in range(len(Manage.Dvd_list)):
if Manage.Dvd_list[i].name == loan_name:
if not Manage.Dvd_list[i].state == 0:
Manage.Dvd_list[i].state = 0
d1 = datetime.datetime.now()
d2 = d1.strftime("%Y-%m-%d")
Manage.Dvd_list[i].date = d2
count = 0
print("借阅成功")
else:
print("暂不可借")
count = 0
if count == 1:
print("没有找到该DVD")
def back(self):
print("---->归还")
back_name = input("请输入DVD名称:")
count = 1
for i in range(len(Manage.Dvd_list)):
if Manage.Dvd_list[i].state == 0:
if Manage.Dvd_list[i].name == back_name:
back_date = input("请输入归还日期:")
d4 = datetime.datetime.strptime(back_date,"%Y-%m-%d")
d5 = datetime.datetime.strptime(Manage.Dvd_list[i].date,"%Y-%m-%d")
d6 = d4-d5
money = d6.days * 5
Manage.Dvd_list[i].state = 1
print("归还成功\n 归还日期:%s\n 借出日期:%s\n 租金:%d" %(back_date,Manage.Dvd_list[i].date,money ))
count = 0
break
else:
print("本书没有借出")
count = 0
break
if count == 1:
print("本店没有该书")
def select(self):
self.memu()
while True:
num = int(input("选择>>>:"))
if num == 1: # 调用增加方法
self.add()
elif num == 2: # 调用查看方法
self.find()
elif num == 3: # 调用删除方法
self.delete()
elif num == 4: # 调用借出方法
self.loan()
elif num == 5: # 调用归还方法
self.back()
elif num == 6: # 调用退出方法
sys.exit()

m = Manage()
m.initDvd()
m.select()


猜你喜欢

转载自www.cnblogs.com/guojie-guojie/p/9272676.html