学习笔记☞面向对象编程示例(日记本管理系统项目)


#!/usr/bin/python3
'''
日记本管理系统项目
	notebook(日记本)
		|
		+--1页(时间:年,月,日,天气,内容)
		|
		+--2页
		|
		+--
	事件:
		1.添加页
		2.修改当天日记
		3.列出所有日记信息(不包括内容)
		4.查看日记内容
	对象:
		1.日记本(一个)
		2.页(多个)
'''


# 此类用于封装日记本的页类
class Page :
    def __init__( self , year , month , day , weather ) :
        self.__year = year
        self.__month = month
        self.__day = day
        self.__weather = weather
        self.__content = ''  # 此时不填写任何内容

    def get_title( self ) :
        s = str( self.__year ) + '年' + str( self.__month ) + '月' + str( self.__day ) + '日  天气:' + self.__weather
        return s

    def get_content( self ) :  # 获取一页的内容
        s = self.get_title( ) + "\n%s" % self.__content
        return s

    def set_content( self , s ) :  # 设置一页内容
        self.__content = s

    def getdate( self ) :
        return [ self.__year , self.__month , self.__day ]


# 此类用于封装日记本类
class NoteBook :
    def __init__( self ) :
        self.__pages = [ ]  # 此列表用于存储数据页

    # 1.添加页
    def __add_page( self ) :
        year = int( input( '请输入年:' ) )
        month = int( input( '请输入月:' ) )
        day = int( input( '请输入日:' ) )
        weather = input( '请输入天气:' )
        # 创建一个页
        p = Page( year , month , day , weather )
        # 把页面放到此pages列表的最后
        self.__pages.append( p )

    # 2.修改当天日记
    def __modify_last( self ) :
        if len( self.__pages ) <= 0 :
            return  # 此时日记里没有内容
        lastpage = self.__pages[ -1 ]
        s = lastpage.get_content( )  # 获取此页的内容
        print( '内容是:\n%s' % s )
        s = input( '请输入新内容:' )
        lastpage.set_content( s )  # 设置修改后的新内容

    # 3.列出所有日记信息( 不包括内容 )
    def __list_pages( self ) :
        print( '----------日记列表----------' )
        i = 0
        while i < len( self.__pages ) :
            s = self.__pages[ i ].get_title( )
            print( '     %d)%s' % ((i + 1) , s) )
            i += 1

    # 4.查看日记内容
    def __lookup( self ) :
        year = int( input( '请输入年:' ) )
        month = int( input( '请输入月:' ) )
        day = int( input( '请输入日:' ) )
        i = 0
        while i < len( self.__pages ) :
            cur_page = self.__pages[ i ]
            if [ year , month , day ] == cur_page.getdate( ) :
                print( '内容是:\n%s' % cur_page.get_content( ) )
                break
            i += 1
        else :
            print( '未找到!' )

    def __menu( self ) :
        print( '1.添加页\n'
               '2.修改当天日记\n'
               '3.列出所有日记信息(不包括内容)\n'
               '4.查看日记内容\n5.退出' )

    def mainloop( self ) :
        # 循环等待用户输入相应的事件操作,调用notebook相应的方法
        while True :
            # 打印选择菜单
            self.__menu( )
            s = input( '请选择:' )
            if s == '1' :
                self.__add_page( )
            elif s == '2' :
                self.__modify_last( )
            elif s == '3' :
                self.__list_pages( )
            elif s == '4' :
                self.__lookup( )
            elif s == '5' :
                break


notebook = NoteBook( )
notebook.mainloop( )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值