Python程序设计基础(第十章类与面向对象编程 练习记录)

继续上次的练习

本章比较面向过程和面向对象的编程实践,涵盖了类和对象的基本概念,并讨论了属性、方法、封装和数据隐藏、__init__函数(类似于构造函数)、访问器、复制器,学习如何使用UML对类进行建模,以及如何在特定问题中查找类。

#1Pet类
class Pet:
    def __init__(self,name,animal_type,age):
        self.__name=name
        self.__animal_type=animal_type
        self.__age=age
    def set_name(self,name):
        self.__name=name
    def set_animal_type(self,animal_tyoe):
        self.__animal_type=animal_tyoe
    def set_age(self,age):
        self.__age=age
    def get_name(self):
        return self.__name
    def get_animal_type(self):
        return self.__animal_type
    def get_age(self):
        return self.__age
def main():
    pet=Pet('Tom','Cat',12)
    print(pet.get_name()+" "+pet.get_animal_type()+" "+str(pet.get_age()))
    pet.set_name('Jerry')
    pet.set_animal_type('Mouse')
    pet.set_age(12)
    print(pet.get_name() + " " + pet.get_animal_type() + " "+ str(pet.get_age()))
if __name__=="__main__":
    main()
#2Car类
class Car:
    def __init__(self,year_model,make):
        self.__year_model=year_model
        self.__make=make
        self.__speed=0
    def accelerate(self):
        self.__speed+=5
    def brake(self):
        self.__speed-=5
    def get_speed(self):
        return self.__speed
def main():
    car=Car('Carriage','My neighbour')
    for i in range(5):
        car.accelerate()
        print(car.get_speed())
    for i in range(5):
        car.brake()
        print(car.get_speed())
if __name__=="__main__":
    main()
#3Information(个人信息)类
class Information:

    def __init__(self,name,address,age,phone):
        self.__name=name
        self.__address=address
        self.__age=age
        self.__phone=phone
    def set_name(self,name):
        self.__name=name
    def set_address(self,address):
        self.__address=address
    def set_age(self,age):
        self.__age=age
    def set_phone(self,phone):
        self.__phone=phone
    def get_name(self):
        return self.__name
    def get_address(self):
        return self.__address
    def get_age(self):
        return self.__age
    def get_phone(self):
        return self.__phone
def main():
    p1=Information('Tom','England',18,'123456789')
    p2=Information('Jack','American',20,'123456765')
    p3=Information('Bob','Russian',20,'213132113')
if __name__=="__main__":
    main()
#4Employee(员工)类
class Employee:
    def __init__(self,name,id,dep,pos):
        self.__name=name
        self.__id=id
        self.__dep=dep
        self.__pos=pos
    def __str__(self):
        return "Name:" + self.__name + " Id:" + self.__id + " Department:" + self.__dep + " Position:" + self.__pos
def main():
    e=[]
    e.append(Employee('Susan Meyers','47899','Accounting','Vice President'))
    e.append(Employee('Mark Jones','39119','IT','Programmer'))
    e.append(Employee('Joy Rogers','81774','Manufacturing','Engineer'))
    for i in e:
        print(i.__str__())
if __name__=="__main__":
    main()
#5RetailItem类
class RetailItem:
    def __init__(self,des,unit,price):
        self.__des=des
        self.__unit=unit
        self.__price=price
    def __str__(self):
        return "Description:"+self.__des+" Unit:"+str(self.__unit)+" Price"+str(self.__price)
def main():
    r=[]
    r.append(RetailItem('Jacket',12,59.95))
    r.append(RetailItem('Designer Jeans',40,34.95))
    r.append(RetailItem('Shirt',20,24.95))
    for i in r:
        print(i)
if __name__=="__main__":
    main()
#6病人计费
class Patient:
    def __init__(self,name,middle_name,surname,address,city,state,postcode,tel_number,emergency_contact,emergency_contact_tel_number):
        self.__name=name
        self.__middle_name=middle_name
        self.__surname=surname
        self.__address=address
        self.__city=city
        self.__state=state
        self.__postcode=postcode
        self.__tel_number=tel_number
        self.__emergency_contact=emergency_contact
        self.__emergency_contact_tel_number=emergency_contact_tel_number

    def get_name(self):
        return self.__name

    def get_middle_name(self):
        return self.__middle_name

    def get_surname(self):
        return self.__surname

    def get_address(self):
        return self.__address

    def get_city(self):
        return self.__city

    def get_state(self):
        return self.__state

    def get_postcode(self):
        return self.__postcode

    def get_tel_number(self):
        return self.__tel_number

    def get_emergency_contact(self):
        return self.__emergency_contact

    def get_emergency_contact_tel_number(self):
        return self.__emergency_contact_tel_number

    def set_name(self, name):
        self.__name = name

    def set_middle_name(self, middle_name):
        self.__middle_name = middle_name

    def set_surname(self, surname):
        self.__surname = surname

    def set_address(self, address):
        self.__address = address

    def set_city(self, city):
        self.__city = city

    def set_state(self, state):
        self.__state = state

    def set_postcode(self, postcode):
        self.__postcode = postcode

    def set_tel_number(self, tel_number):
        self.__tel_number = tel_number

    def set_emergency_contact(self, emergency_contact):
        self.__emergency_contact = emergency_contact

    def set_emergency_contact_tel_number(self, emergency_contact_tel_number):
        self.__emergency_contact_tel_number = emergency_contact_tel_number

class Procedure:
    def __init__(self,name,date,executor,expense):
        self.__name=name
        self.__date=date
        self.__executor=executor
        self.__expense=expense

    def set_name(self, name):
        self.__name = name

    def set_date(self, date):
        self.__date = date

    def set_executor(self, executor):
        self.__executor = executor

    def set_expense(self, expense):
        self.__expense = expense

    def get_name(self):
        return self.__name

    def get_date(self):
        return self.__date

    def get_executor(self):
        return self.__executor

    def get_expense(self):
        return self.__expense
def main():
    p=Patient('Donald Trump','Donald','Trump','Columbia University','New York','New York','10041 NY 212','1234','Joe Biden','321')
    proc=[]
    proc.append(Procedure('Physical Exam','Today\'s date','Dr.Irvine',250.00))
    proc.append(Procedure('X-ray','Today\'s date','Dr.Jamison',500.00))
    proc.append(Procedure('Blood test','Today\'s date','Dr.Smith',200.00))
    print(p.get_name())
    print(p.get_middle_name())
    print(p.get_surname())
    print(p.get_address())
    print(p.get_city())
    print(p.get_state())
    print(p.get_postcode())
    print(p.get_tel_number())
    print(p.get_emergency_contact())
    print(p.get_emergency_contact_tel_number())
    sum_=0
    for i in proc:
        sum_+=i.get_expense()
    print("Total expense:", sum_)
if __name__=="__main__":
    main()
#7员工管理系统
import pickle
class Employee:
    def __init__(self,name,id,dep,pos):
        self.__name=name
        self.__id=id
        self.__dep=dep
        self.__pos=pos
    def __str__(self):
        return "Name:" + self.__name + " Id:" + self.__id + " Department:" + self.__dep + " Position:" + self.__pos
    def set_name(self,name):
        self.__name=name
    def set_id(self,id):
        self.__id=id
    def set_dep(self,dep):
        self.__dep=dep
    def set_pos(self,pos):
        self.__pos=pos
def read_inf():
    file=open('inf.dat','rb')
    try:
        dic = pickle.load(file)
    except IOError:
        dic=dict()
    file.close()
    return dic
def write_inf(dic):
    file=open('inf.dat','wb')
    pickle.dump(dic,file)
    file.close()
def looking(dic):
    id=input("Please enter ID from employee:")
    if id in dic:   print(dic[id].__str__())
    else:   print("This employee non-exist")
def adding(dic):
    id=input("Please enter the id:")
    if id in dic:
        print("This person is existing")
        return
    name=input("Please enter the name:")
    dep=input("Please enter the department:")
    pos=input("Please enter the position:")
    one=Employee(name, id, dep, pos)
    dic[id]=one
def editing(dic):
    id=input("Please enter the id:")
    if id not in dic:
        print("This employee is non-existing")
        return
    one=dic[id]
    name = input("Please enter the name:")
    one.set_name(name)
    dep = input("Please enter the department:")
    one.set_dep(dep)
    pos = input("Please enter the position:")
    one.set_pos(pos)
def deleting(dic):
    id=input("Please enter id from employee:")
    if id in dic:
        del dic[id]
def main():
    Flag=True
    dic = dict()
    while Flag:
        dic=read_inf()
        print("******-Looking for an employee please enter           :1-******")
        print("******-Adding new employee please enter               :2-******")
        print("******-Editing information from employee please enter :3-******")
        print("******-Deleting a employee please enter               :4-******")
        print("******-Exiting please enter                           :0-******")
        choice=input()
        if choice=='0':Flag=False
        elif choice=='1':looking(dic)
        elif choice=='2':adding(dic)
        elif choice=='3':editing(dic)
        elif choice=='4':deleting(dic)
        else: continue
        write_inf(dic)
if __name__=="__main__":
    main()
#8收银机
class RetailItem:
    def __init__(self,des,unit,price):
        self.__des=des
        self.__unit=unit
        self.__price=price
    def __str__(self):
        return "Description:"+self.__des+" Unit:"+str(self.__unit)+" Price"+str(self.__price)
    def get_price(self):
        return self.__price
class CashRegister:
    def __init__(self):
        self.__lis=[]
    def purchase_item(self,retail_item):
        self.__lis.append(retail_item)
    def get_total(self):
        sum=0
        for i in self.__lis:
            sum+=i.get_price()
        return sum
    def show_item(self):
        for i in self.__lis:
            print(i)
    def clear(self):
        self.__lis.clear()
def main():
    c=CashRegister()
    r=[]
    r.append(RetailItem('Jacket',12,59.95))
    r.append(RetailItem('Designer Jeans',40,34.95))
    r.append(RetailItem('Shirt',20,24.95))
    for i in r:
        c.purchase_item(i)
    c.show_item()
    print(f'{c.get_total():0.2f}')
    c.clear()
if __name__=="__main__":
    main()
#9Trivia(问答)游戏
class Question:
    def __init__(self,problem,key1,key2,key3,key4,key):
        self.__problem=problem
        self.__key1=key1
        self.__key2=key2
        self.__key3=key3
        self.__key4=key4
        self.__key=key

    def get_problem(self):     return self.__problem

    def get_key1(self):     return self.__key1

    def get_key2(self):     return self.__key2

    def get_key3(self):     return self.__key3

    def get_key4(self):     return self.__key4

    def get_key(self):     return self.__key

    def set_problem(self, problem):    self.__problem = problem

    def set_key1(self, key1):    self.__key1 = key1

    def set_key2(self, key2):    self.__key2 = key2

    def set_key3(self, key3):    self.__key3 = key3

    def set_key4(self, key4):    self.__key4 = key4

    def set_key(self, key):    self.__key = key
def main():
    pass
if __name__=="__main__":
    main()
  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值