Python基础语法4—机房管理系统


基础知识

一、类的创建

# 定义"小孩"类
class kid():
    # 属性:爱好是玩
    hobby = '玩'
    
    # 方法:吃饭
    def eatFood(self,food):
        print(f'吃{food}')

xiaoming = kid() # 类的实例化,小明属于“小孩”类,小明就具备“小孩”类中的属性和方法
print(xiaoming.hobby)
xiaoming.eatFood('包子')

这个self是用来做什么的呢?🤦‍♂️

# 定义"小孩"类
class kid():
    # 属性:爱好是玩
    hobby = '玩'
    
    # 方法:吃饭
    def eatFood(self,food):
        print(f'吃{food}')
    
    # 方法:说话(说出自己的爱好)
    def say(self):
        print(f'我的爱好是{self.hobby}')
 
xiaoming = kid() # 类的实例化,小明属于“小孩”类,小明就具备“小孩”类中的属性和方法
print(xiaoming.hobby)
xiaoming.eatFood('包子')
xiaoming.say()

self是在类还没有创建完成的时候,却又想在类的内容调用类属性或其他方法时
就可以用self.属性名或self.方法名调用自身的方法或属性

二、类的初始化

初始化方法的作用在于:当每个实例对象创建时,该方法内的代码无须调用就会自动执行。

# 定义"小孩"类
class kid():

    # 当类实例化的时候自动执行,设置“姓名”属性为小明
    def __init__(self):
        self.name = '小明'

    # 属性:爱好是玩
    hobby = '玩'
    
    # 方法:吃饭
    def eatFood(self,food):
        print(f'吃{food}')
    
    # 方法:说话(说出自己的爱好)
    def say(self):
        print(f'我的爱好是{self.hobby}')
 
xiaoming = kid()
print(xiaoming.name)

当然,初始化方法的正确用法是在类实例化的时候,我们给一些属性设初值。

# 定义"小孩"类
class kid():

    # 当类实例化的时候自动执行,设置“姓名”属性为小明
    def __init__(self,name):
        self.name = name

    # 属性:爱好是玩
    hobby = '玩'
    
    # 方法:吃饭
    def eatFood(self,food):
        print(f'吃{food}')
    
    # 方法:说出自己的爱好
    def say(self):
        print(f'我的爱好是{self.hobby}')
        print(f'我的姓名是{self.name}')
# 实例化对象小明
xiaoming = kid('小明')
print(xiaoming.name)
xiaoming.say()
# 实例化对象小红
xiaohong = kid('小红')
print(xiaoming.name)
xiaoming.say()

三、类的继承与定制

class ball():
    weight = 10
 
    def move(self,speed):
        print('小球移动速度是{}'.format(speed))
 
class new_ball(ball):
    def move(self,speed):
        print('小球移动速度是{}'.format(speed*2))
 
ball_1 = ball()
ball_2 = new_ball()
ball_1.move(10)
ball_2.move(10)

但是这样直接重写父类的方法,如果父类的方法发生变化,子类的方法也得重新修改,不利于我们维护,最好先继承父类的方法,再做修改。

class ball():
    weight = 10
 
    def move(self,speed):
        print('小球移动速度是{}'.format(speed))
 
class new_ball(ball):
 
    def move(self,speed):
        ball.move(self,speed*2)
 
ball_1 = ball()
ball_2 = new_ball()
ball_1.move(10)
ball_2.move(10)

项目一、智能储蓄罐

你有一个智能储蓄罐,该储蓄罐安装了高级人工智能芯片,会做四件事。
一是可以查询余额 (假设你是一个中东土豪,在对象实例化时,你已经在该储蓄罐已经存了100元)
二是可以存钱
三是可以取钱
四是可以换算美元汇率,1美元=6.3717人民币

# 定义"智能存钱罐"类
class moneyBox():
    
    # 初始化函数,类实例化的时候自动调用
    def __init__(self,money):
        self.money = money

    # 菜单
    def menu(self):
        print('欢迎使用智能存钱罐')
        while True:
            user_choice = input('请选择功能(1、查询余额 2、存钱 3、取钱 4、换算美元 5、退出):')
            if user_choice == '1':
                self.showMoney()
            elif user_choice == '2':
                self.saveMoney()
            elif user_choice == '3':
                self.drawMoney()
            elif user_choice == '4':
                self.exchangeRate()
            elif user_choice == '5':
                print('谢谢您的使用,下次记得多来存点钱啊')
                break

    # 展示余额    
    def showMoney(self):
        print(f'你现在一共存了{self.money}元')
    
    # 存钱
    def saveMoney(self):
        money = int(input('请输入你要存多少钱:'))
        self.money = self.money + money
        print(f'你现在一共存了{self.money}元')

    # 取钱
    def drawMoney(self):
        money = int(input('请输入你要取多少钱:'))
        if self.money < money:
            print('抱歉,您太穷了,您没有那么多钱')
            return False
        self.money = self.money - money
        print(f'你现在一共存了{self.money}元')

    # 汇率换算
    def exchangeRate(self):
        dollar = round(self.money/6.3717,2)  # round(x,y) 对x的前y位四舍五入取整
        print(f'换算成美元是{dollar}$')
        
my_moneyBox = moneyBox(100)
my_moneyBox.menu()
input('按下任意键退出程序')

项目二、智能点菜机器人

练习:

'''
项目需求:
你是一名享誉全球的考古学家,在三星堆的发掘作业中,
你发现了一个奇怪的机器,经过研究,这是距今23亿万年前的亚特兰蒂斯文明所遗留的科技。
那时的人类已经可以实现自动点菜的功能了,这无疑是一项颠覆世界的发现。
但因年代久远,丢失了一些代码片段,你同时作为中职Python首席科学家,需要补全代码
'''

# 定义“菜”类
class dish():

    # 每道菜有两个属性、菜的名字和价格,每道菜的这两个属性各不相同
    def __init__(self,name,price):
        self.name = name 
        self.price = price

    # 每道菜具有相同的方法、如你所见,即展示自己的菜名和价格,
    # 因为它已经是一个成熟的“菜”类了,要学会自己介绍自己
    def show_info(self):
        print(f'菜名:{self.name},价格{self.price}元') 

# 定义“智能点菜机器人”类
class orderMachine():

    # 类初始化时,我们希望他有一个初始的菜单,dish_list里管理的应该是“菜”类的实例化对象
    def __init__(self,dish_list):
        self.dish_list = dish_list
        # 用户点的菜,这个玩意不需要实例化的时候从外面传,因为这个得靠用户自己点,总不能还没点就有东西吧
        self.user_order_list = []  

    # 操作菜单(5分)
    def menu(self):
        print('今年是超新星纪元305年,欢迎使用亚特兰蒂斯点菜系统:')
        while True:
            user_input = input('请选择:1、查看菜单 2、增加菜单 3、点菜 4、退出系统:')
            # 记得看演示程序运行的效果,然后补全
    
    # 查看菜单(5分)
    def show_menu(self):
    # 记得看演示程序运行的效果,然后补全
    	if user_input == '1':
            self.show_menu()
    
    # 增加菜单(5分)
    # 此功能最好需要输入密码才可以使用,否则用户万一捣乱,往菜单里添加一个“稀饭煮翔”,岂不糟糕?
    def add_dish(self):
    # 记得看演示程序运行的效果,然后补全

    # 点菜(5分)
    # 消费 100 元及以上享受 8 折优惠,100 元以下享受每满 10 减 1 优惠”的活动(5分)
    def order_dish(self):
    # 记得看演示程序运行的效果,然后补全
        
# “菜”类的实例化
dish1 = dish('红烧排骨',46)
dish2 = dish('香炸刀鱼',45)
dish3 = dish('虾仁炒蛋',68)
dish_list = [dish1,dish2,dish3]
# “智能点菜机器人”类的实例化
my_orderMachine = orderMachine(dish_list)
my_orderMachine.menu()

项目三、机房管理系统

一、定义“房间”类

“房间”类就两个属性,房间号和房间名

class room():
    def __init__(self,number,name):
        self.number = number
        self.name = name
 
Room203 = room(203,'网络综合布线工作室') # 实例化对象

print(Room203.number)
print(Room203.name)

二、定义“机房管理系统”类

class room():
    def __init__(self,number,name):
        self.number = number
        self.name = name
 
class system():
    # 菜单
    def menu(self):
        print('欢迎使用海盐商贸学校机房管理系统!!!')
        while True:
            choice = input('请选择(1、查看所有机房2、增加机房3、借用机房4、归还机房5、退出):')
            if choice == '1':
                self.showAllRoom()
            elif choice == '2':
                self.addRoom()
            elif choice == '3':
                self.borrowRoom()
            elif choice == '4':
                self.returnRoom()
            elif choice == '5':
                break

HaiYanSystem = system()
HaiYanSystem.menu()

三、查看所有机房

class room():
    # state为借出状态,默认未借出
    def __init__(self,number,name,state = 0):
        self.number = number
        self.name = name
        self.state = state
    
    def __str__(self):
        if self.state == 0:
            state_text = '未借用'
        else:
            state_text = '已借用'
        return '机房房间号{},机房名字{},机房借用状态{}'.format(self.number,self.name,state_text)
 
class system():

    def __init__(self) -> None:
        Room203 = room('203','网络综合布线工作室')
        Room204 = room('204','网络搭建机房')
        Room305 = room('305','Python学习机房')
        self.Room_list = [Room203,Room204,Room305]
    
    # 菜单
    def menu(self):
        print('欢迎使用海盐商贸学校机房管理系统!!!')
        while True:
            choice = input('请选择(1、查看所有机房2、增加机房3、借用机房4、归还机房5、退出):')
            if choice == '1':
                self.showAllRoom()
            elif choice == '2':
                self.addRoom()
            elif choice == '3':
                self.borrowRoom()
            elif choice == '4':
                self.returnRoom()
            elif choice == '5':
                break

    #查看所有机房
    def showAllRoom(self):
        for Room in self.Room_list:
            print(Room)

HaiYanSystem = system()
HaiYanSystem.menu()

四、增加机房

#增加机房
def addRoom(self):
    number = input('请输入房间号:')
    name = input('请输入机房名:')
    new_room = room(number,name)
    self.Room_list.append(new_room)

五、借用机房

#借用机房
def borrowRoom(self):
    number = input('请输入你要借用的机房房间号:')
    for room in self.Room_list:
        if room.number == number:
            if room.state == 0:
                print('成功借用机房')
                room.state = 1
            else:
                print('该机房已被借用')
            break
    else:
        print('没有该机房')

六、归还机房

#归还机房
def returnRoom(self):
    number = input('请输入你要归还的机房房间号:')
    for room in self.Room_list:
        if room.number == number:
            if room.state == 1:
                print('成功归还机房')
                room.state = 0
            else:
                print('该机房没被借用')
            break
    else:
        print('没有该机房')

文章作者: 彭韦浩
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 彭韦浩 !
  目录