import datetime
class Journal:
def __init__(self, journal_name):
self.journal_name = journal_name
self.journal_date = datetime.datetime.now().strftime('%Y-%m-%d')
self.journal_ expenses = []
def add_expense(self, amount, category):
if category not in ['正餐', '零食', '玩樂', '應酬', '學習']:
raise ValueError('Invalid category')
self.journal_expenses.append((category, amount))
def remove_expense(self, category):
self.journal_expenses.remove((category, self.journal_expenses.index(category) + 1))
def list_expenses(self):
if not self.journal_expenses:
return []
expenses = []
for category, index in self.journal_expenses:
expenses.append({'category': category, 'amount': self.journal_expenses[index]})
return expenses
def save_journal(self, filename):
with open(filename, 'w') as f:
f.write(f'Date: {self.journal_date}\n')
f.write(f'Expenses:\n')
for category, index in self.journal_expenses:
f.write(f'{category}: {self.journal_expenses[index]}\n')
f.write(f'\n')
if __name__ == '__main__':
journal = Journal('Expense Journal')
while True:
print('Journal>')
choice = input('Enter an option (add, remove, list, save): ')
if choice == 'add':
category, amount = input('Enter category: ').split(',')
if not category or not amount:
print('Invalid input')
continue
journal.add_expense(amount, category)
elif choice == 'remove':
category = input('Enter category: ').split(',')[0]
journal.remove_expense(category)
elif choice == 'list':
journal.list_expenses()
elif choice == 'save':
filename = input('Enter filename: ')
journal.save_journal(filename)
else:
print('Invalid choice')