备忘录小程序开发记录v2

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39591494/article/details/82719098
#!/usr/bin/env python
# -*- coding:utf-8 -*-

import sys
import pickle
import time
import os
from color_me  import  ColorMe

__author__ = "YanZanG"

init = ["系统提示:此信息为初始化信息,默认会有一条数据, 请忽略........"]

class Memo(object):
    """备忘录类"""
    def __init__(self, name, thing, date, time, id):
        self.name = name
        self.thing = thing
        self.date = date
        self.time = time
        self._id = id

    @property
    def id(self):
        return self._id

    @id.setter
    def id(self, id):
        "获取id值,每次在原有基础+1"
        if not isinstance(restart, str):
            raise ValueError('restart must be an integer!')
        self._id = id

    def welcome(self):
        "欢迎词儿"
        print(f"Welcome to the {__author__} applet.".center(60,"-"))

class MemoAdmin(object):
    "处理备忘录主程序"
    def __init__(self):
        self.user_list = []

    def user_add(self):
        "备忘录添加信息函数"
        count = True
        while (count):
            Your_title = input("请您输入备忘录标题:".strip())
            Your_event = input("请您输入备忘录事件:".strip())
            Your_date = input("请您输入备忘录用时时间:".strip())
            time1 = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

            if Your_title == "":
                print("标题不能为空!!!")

            elif Your_event == "":
                print("备忘录事件不能为空")

            elif Your_date == "":
                print("备忘录用时不能为空")

            else:
                self.create(Your_title, Your_event, Your_date, time1)
                count = False

    def create(self,Your_title, Your_event, Your_date, time1):
        "备忘录创建并输出数据"
        memo = Memo(Your_title, Your_event, Your_date, time1, self.count())
        user_result = (f"ID:{memo.id}、标题:{Your_title}、事件:{Your_event}、用时时间:{Your_date}、创建时间 : {time1}")

        self.user_list.append(user_result)
        self.save()

    def user_delete(self):
        "删除备忘录函数--->某一条信息"
        if os.path.isfile("db.pkl"):
            user_delete = int(input("请您输入您需要删除的id号:".strip()))
            with open('db.pkl', 'rb') as f:
                data = pickle.load(f)
                data.pop(user_delete)
                self.user_list = []
            for a in data:
                self.user_list.append(a)

            self.save()
        else:
            print("nonono")

    def user_search(self):
        "查找备忘录信息--->使用ID号查找"
        search_result = int(input("请您输入您需要查找的ID:".strip()))
        if os.path.isfile("db.pkl"):
            with open('db.pkl', 'rb') as f:
                data = pickle.load(f)
                print(data[search_result])
        else:
            search_result = ColorMe("没有备忘录信息,请您选择添加备忘录并创建").red()
            print(search_result)

    def save(self):
        "保存备忘录信息--->db.pkl"
        with open('db.pkl', 'wb') as f:
            pickle.dump(self.user_list, f)
            save_result = ColorMe(f"您当前一共有{len(self.user_list)}条备忘录信息").green()
            print(save_result)

    def load(self):
        "加载备忘录数据,并输出结果。"
        if os.path.isfile("db.pkl"):
            with open('db.pkl', 'rb') as f:
                data = pickle.load(f)
            load_welcome = ColorMe("备忘录信息,数据如下:".center(60, "-")).green()
            print(load_welcome)
            for line in data:
                print(line)
        else:
            load_warning = ColorMe("没有备忘录文件,请你添加并创建").red()
            print(load_warning)

    def count(self):
        "获取ID值"
        with open('db.pkl', 'rb') as f:
            data = pickle.load(f)
            result = len(data)
            return  result

    def exit(self):
        "退出备忘录程序"
        save_Tips = ColorMe("欢迎你再次使用,再见......".center(60,"-")).green()
        print(save_Tips)
        sys.exit()

    def delete(self):
        "删除备忘录信息--->db.pkl"
        if os.path.isfile("db.pkl"):
            os.remove("db.pkl")
            delete_success = ColorMe("恭喜您,清除备忘录成功!!!").green()
            print(delete_success)
        else:
            delete_warning =  ColorMe("没有备忘录文件,请你添加并创建").red()
            print(delete_warning)

    def user_input(self):
        "用户输入主入口函数--->通过反射获取self.方法"
        print(f"Welcome to the {__author__} memo applet.".center(60,"-"))
        user_menu = {
            "1" : "添加备忘录数据",
            "2" : "删除备忘录数据",
            "3" : "查找备忘录数据",
            "P" : "查看备忘录数据",
            "D" : "清空备忘录数据",
            "Q" : "退出备忘录数据"
        }

        user_menu2 = {
            "1" : "user_add",
            "2" : "user_delete",
            "3" : "user_search",
            "P" : "load",
            "D" : "delete",
            "Q" : "exit"
        }

        if os.path.isfile("db.pkl"):
            with open('db.pkl', 'rb') as f:
                data = pickle.load(f)
                for a in data:
                    self.user_list.append(a)
                Os_Tips_result = ColorMe(f"系统提示,初始备忘录信息成功,目前一共有{len(self.user_list)}条数据").green()
                print(Os_Tips_result)

        else:
            with open('db.pkl', 'wb') as f:
                C = ColorMe("系统提示:备忘录程序初始化完毕,请再次打开.....").green()
                print(C)
                pickle.dump(init, f)
                sys.exit()

        try:
            count = True
            while (count):
                for k, v in user_menu.items():
                    print(f"""
                    {k}、{v}
                    """)
                User_choice = input("请您输入选项:".strip()).upper()
                if User_choice.strip() == "":
                    error_warning = ColorMe("请您输入正确的数值!!!").red()
                    print(error_warning)

                elif User_choice == "Q":
                    count = False
                else:
                    if hasattr(self,user_menu2.get(User_choice)):
                        func = getattr(self,user_menu2.get(User_choice))
                        func()
                    else:
                        error_warning2 = ColorMe("系统检测错误,请您输入正确的选项").red()
                        print(error_warning2)
        except Exception as f:
            print(f)

# TODO([email protected]) 转换器-----> 2018年9月14日

class Money_conversion(object):
    "金钱转换类"
    def __init__(self):
        self.rmb = "元"
        self.dollars = "$"

    def currency_result(self, user_curr):
        "人民币及美元转换程序"
        your_money = int(user_curr)
        rmb = your_money / 6.6
        rmb = round(rmb, 2)
        Conversion_results = (f"您需要转换的人民币为{user_curr}元 转换为美元结果为:{rmb}$(按q退出!!!)")
        print(Conversion_results)

    def dollar_result(self, user_curr):
        your_money = int(user_curr)
        Conversion_results = (f"您需要转换的美元为{user_curr}$ 转换为人民币结果为:{your_money * 6.6}元(按q退出!!!)")
        print(Conversion_results)

    def currency(self):
        "判断用户输入人民币结尾"
        while True:
            user_curr = input("输入金额(元):")
            return self.currency_result(user_curr)

    def dollar(self):
        "判断用户输入美元结尾"
        while True:
            user_curr = input("输入金额($):")
            return self.dollar_result(user_curr)

    def user_input(self):
        "用户输入程序,提供用户选择输入"
        user_data = {
            "1" : "人民币转美元",
            "2" : "美元转人民币",
            "Q" : "退出此程序"
        }

        user_data2 = {
            "1" : "currency",
            "2" : "dollar",
        }

        count = True
        while (count):
            Tips = ColorMe("温馨提示:使用转换时人民币以:(元)结尾,美元为($)结尾".center(50,"-")).green()
            print(Tips)
            for k, v in user_data.items():
                print(f"{k}、{v}")
            user_input = input("请您输入您需要的转换业务:".strip()).upper()
            if user_input.strip() == "":
                print("输入非法,请您重新输入")
            elif user_input == "Q":
                count = False
            else:
                if hasattr(self, user_data2.get(user_input)):
                    func = getattr(self, user_data2.get(user_input))
                    func()
                else:
                    print("nnnnnnnnnnnn")

# TODO([email protected]) 天气-----> 2018年9月15日

class Weather_conversion(object):
    "天气转换类"
    def __init__(self):
        self.Centigrade = "℃"
        self.Fahrenheit = "℉"

    def temper_result(self, user_curr):
        "摄氏温度转华氏温度"
        temper_result = int(user_curr)
        Calculation_result = (temper_result * 1.8 + 32)
        print(f"您输入的摄氏度为:{temper_result}{self.Centigrade}  转换为华氏温度为{Calculation_result}{self.Fahrenheit}")

    def overturn_temper_result(self, user_curr):
        "华氏温度转摄氏温度"
        overturn_result = int(user_curr)
        Fahrenheit_result = (overturn_result / 1.8 - 32)
        air = round(Fahrenheit_result, 2)
        print(f"您输入的华氏温度为:{overturn_result}{self.Fahrenheit} 转换为摄氏温度为{air}{self.Centigrade}")

    def temper(self):
        "天气摄氏温度转换函数"
        while True:
            user_curr = input("输入需要转换的摄氏温度(℃):").upper()
            return self.temper_result(user_curr)

    def overturn_temper(self):
        "天气摄氏温度转换函数"
        while True:
            user_curr = input("输入需要转换的华氏温度(℉):").upper()
            return self.overturn_temper_result(user_curr)

    def user_input(self):
        "天气程序主入口,可提供用户选择菜单"
        user_data = {
            "1" : "摄氏温度转华氏温度",
            "2" : "华氏温度转摄氏温度",
            "Q" : "退出此程序"
        }

        user_data2 = {
            "1" : "temper",
            "2" : "overturn_temper",
        }

        count = True
        while (count):
            Tips = ColorMe("温馨提示:使用转换时摄氏温度以:(C)结尾,华氏温度(F)结尾".center(50, "-")).green()
            print(Tips)
            for k, v in user_data.items():
                print(f"{k}、{v}")
            user_input = input("请您输入您需要的转换业务:".strip()).upper()
            if user_input.strip() == "":
                warning = ColorMe("输入非法,请您重新输入").red()
                print(warning)
            elif user_input == "Q":
                print("退出天气转换成功!!!")
                count = False

            else:
                if hasattr(self, user_data2.get(user_input)):
                    func = getattr(self, user_data2.get(user_input))
                    func()

def menu():
    "此程序主程序入口 提供用户选择需要的业务并,调用类中的方法。"
    count = True
    while (count):
        menu = {
            "1" : "进入备忘录程序",
            "2" : "进入金钱转换程序",
            "3" : "进入天气转换程序",
            "Q" : "退出此程序"
        }

        user_choice = ColorMe("请您选择相关的业务!!!".center(60, "-")).green()
        print(user_choice)
        for k, v in menu.items():
            print(f"{k}、{v}")

        user_menu = input("请您输入:".strip()).upper()
        if user_menu == "1":
            Admin = MemoAdmin()
            Admin.user_input()

        elif user_menu == "2":
            Money = Money_conversion()
            Money.user_input()

        elif user_menu == "3":
            weather = Weather_conversion()
            weather.user_input()

        elif user_menu == "Q":
            menu_result = ColorMe("欢迎您再次使用,再见~").green()
            print(menu_result)
            sys.exit()

        else:
            warning_result = ColorMe("输入非法,请您重新输入!!!").red()
            print(warning_result)
            count = True

if __name__ == '__main__':
    menu()

Color_me:

#!/usr/bin/env Python
#-*- coding:utf-8 -*-

__author__ = 'De8ug'

class ColorMe:
    """
    give me color see see...
    实际用起来很简单:
        ColorMe('somestr').blue()
    """
    def __init__(self, some_str):
        self.color_str = some_str

    def blue(self):
        str_list = ["\033[34;1m", self.color_str, "\033[0m"]
        return ''.join(str_list) # "\033[34;1m" + self.color_str + "\033[0m"

    def green(self):
        str_list = ["\033[32;1m", self.color_str, "\033[0m"]
        return ''.join(str_list) # "\033[34;1m" + self.color_str + "\033[0m"

    def yellow(self):
        str_list = ["\033[33;1m", self.color_str, "\033[0m"]
        return ''.join(str_list) # "\033[34;1m" + self.color_str + "\033[0m"

    def red(self):
        str_list = ["\033[31;1m", self.color_str, "\033[0m"]
        return ''.join(str_list) # "\033[34;1m" + self.color_str + "\033[0m"


def main():
    ColorMe('somestr').blue()

if __name__ == '__main__':
    main()

猜你喜欢

转载自blog.csdn.net/qq_39591494/article/details/82719098