• 面向对象小项目练习(迷你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(" ",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("序号 状态 名称 借出日期")
    for i in range(len(Manage.Dvd_list)):
    print(i," ",Manage.Dvd_list[i].state," ",Manage.Dvd_list[i].name," ",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("归还成功 归还日期:%s 借出日期:%s 租金:%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()


  • 相关阅读:
    HDU 4539郑厂长系列故事――排兵布阵(状压DP)
    HDU 2196Computer(树形DP)
    HDU 4284Travel(状压DP)
    HDU 1520Anniversary party(树型DP)
    HDU 3920Clear All of Them I(状压DP)
    HDU 3853LOOPS(简单概率DP)
    UVA 11983 Weird Advertisement(线段树求矩形并的面积)
    POJ 2886Who Gets the Most Candies?(线段树)
    POJ 2828Buy Tickets
    HDU 1394Minimum Inversion Number(线段树)
  • 原文地址:https://www.cnblogs.com/guojie-guojie/p/9272676.html
Copyright © 2020-2023  润新知