zoukankan      html  css  js  c++  java
  • 面向对象小项目练习(迷你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()


  • 相关阅读:
    MATLAB 高斯金字塔
    MATLAB 灰度图直方图均衡化
    MATLAB 生成高斯图像
    MATLAB 灰度、二值图像腐蚀膨胀
    MATLAB 中值滤波
    MATLAB 最大中值滤波
    MATLAB 最大均值滤波
    MATLAB 图像加噪,各种滤波
    MATLAB 图像傅里叶变换,幅度谱,相位谱
    十款最佳人工智能软件
  • 原文地址:https://www.cnblogs.com/guojie-guojie/p/9272676.html
Copyright © 2011-2022 走看看