mekasu0124

Untitled

Mar 11th, 2024
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.76 KB | None | 0 0
  1. import random
  2. import string
  3. from datetime import datetime, timedelta
  4.  
  5. class LibraryRecord:
  6.     def __init__(self, first_name, last_name, email, address, city, state, zip_code, phone_number):
  7.         self.first_name = first_name
  8.         self.last_name = last_name
  9.         self.email = email
  10.         self.address = address
  11.         self.city = city
  12.         self.state = state
  13.         self.zip_code = zip_code
  14.         self.phone_number = phone_number
  15.         self.books_checked_out = {}
  16.  
  17.     def generate_library_records(self, num_records):
  18.         library_records = []
  19.         for _ in range(num_records):
  20.             first_name = ''.join(random.choices(string.ascii_uppercase + string.ascii_lowercase, k=8))
  21.             last_name = ''.join(random.choices(string.ascii_uppercase + string.ascii_lowercase, k=8))
  22.             email = first_name.lower() + last_name.lower() + '@example.com'
  23.             address = ''.join(random.choices(string.ascii_uppercase + string.ascii_lowercase + '0123456789', k=10))
  24.             city = ''.join(random.choices(string.ascii_uppercase + string.ascii_lowercase, k=6))
  25.             state = ''.join(random.choices(string.ascii_uppercase, k=2))
  26.             zip_code = ''.join(random.choices(string.digits, k=5))
  27.             phone_number = ''.join(random.choices(string.digits, k=10))
  28.             record = LibraryRecord(first_name, last_name, email, address, city, state, zip_code, phone_number)
  29.             record.generate_books_checked_out(random.randint(1, 5))
  30.             library_records.append(record)
  31.         return library_records
  32.  
  33.     def generate_books_checked_out(self, num_books):
  34.         for _ in range(num_books):
  35.             book_title = 'Book ' + ''.join(random.choices(string.ascii_uppercase + string.ascii_lowercase, k=8))
  36.             book_author = 'Author ' + ''.join(random.choices(string.ascii_uppercase + string.ascii_lowercase, k=8))
  37.             book_publisher = 'Publisher ' + ''.join(random.choices(string.ascii_uppercase + string.ascii_lowercase, k=8))
  38.             publication_date = ''.join(random.choices(string.digits, k=4))
  39.             edition = random.randint(1, 10)
  40.             isbn = ''.join(random.choices(string.digits, k=10))
  41.             subject_classification_number = ''.join(random.choices(string.ascii_uppercase + string.digits, k=4))
  42.             number_of_copies = random.randint(1, 5)
  43.             barcode_number = ''.join(random.choices(string.digits, k=8))
  44.             shelf_location = 'Shelf ' + ''.join(random.choices(string.ascii_uppercase + string.digits, k=4))
  45.             status = random.choice(['available', 'checked out', 'lost', 'on hold'])
  46.             book = Book(book_title, book_author, book_publisher, publication_date, edition, isbn,
  47.                         subject_classification_number, number_of_copies, barcode_number, shelf_location, status)
  48.             book.generate_books_borrow_history(random.randint(1, 3))
  49.             book.generate_book_acquisition_records()
  50.             book.generate_book_condition_details()
  51.             book.generate_book_reviews()
  52.             self.books_checked_out[book_title] = book
  53.  
  54.  
  55. class Book:
  56.     def __init__(self, title, author, publisher, publication_date, edition, isbn,
  57.                  subject_classification_number, number_of_copies, barcode_number, shelf_location, status):
  58.         self.title = title
  59.         self.author = author
  60.         self.publisher = publisher
  61.         self.publication_date = publication_date
  62.         self.edition = edition
  63.         self.isbn = isbn
  64.         self.subject_classification_number = subject_classification_number
  65.         self.number_of_copies = number_of_copies
  66.         self.barcode_number = barcode_number
  67.         self.shelf_location = shelf_location
  68.         self.status = status
  69.         self.books_borrow_history = {}
  70.         self.book_acquisition_records = {}
  71.         self.book_condition_details = {}
  72.         self.book_reviews = {}
  73.  
  74.     def generate_books_borrow_history(self, num_events):
  75.         for _ in range(num_events):
  76.             checkout_date = datetime.now() - timedelta(days=random.randint(1, 365))
  77.             return_date = checkout_date + timedelta(days=random.randint(1, 30))
  78.             borrower_info = BorrowerInfo(''.join(random.choices(string.digits, k=6)), random.randint(0, 50))
  79.             self.books_borrow_history[checkout_date.strftime('%Y-%m-%d %H:%M:%S')] = {'checkout_date': checkout_date.strftime('%Y-%m-%d %H:%M:%S'), 'return_date': return_date.strftime('%Y-%m-%d %H:%M:%S'), 'borrower_info': borrower_info}
  80.  
  81.     def generate_book_acquisition_records(self):
  82.         acquisition_method = random.choice(['purchase', 'donation'])
  83.         purchase_info = {'purchase_method': acquisition_method, 'purchase_info': None, 'donation_info': None, 'book_cost': random.randint(1, 50), 'acquisition_date': datetime.now().strftime('%Y-%m-%d %H:%M:%S')}
  84.         if acquisition_method == 'purchase':
  85.             purchase_info['purchase_info'] = ''.join(random.choices(string.ascii_uppercase + string.ascii_lowercase, k=8))
  86.         else:
  87.             purchase_info['donation_info'] = ''.join(random.choices(string.ascii_uppercase + string.ascii_lowercase, k=8))
  88.         self.book_acquisition_records = purchase_info
  89.  
  90.     def generate_book_condition_details(self):
  91.         physical_condition = random.choice(['good', 'fair', 'poor'])
  92.         damages = ''.join(random.choices(string.ascii_lowercase, k=random.randint(0, 20)))
  93.         self.book_condition_details = {'physical_condition': physical_condition, 'damages': damages, 'repairs': {}}
  94.         if damages:
  95.             self.generate_repairs(random.randint(0, 3))
  96.  
  97.     def generate_repairs(self, num_repairs):
  98.         for _ in range(num_repairs):
  99.             repair_date = datetime.now() - timedelta(days=random.randint(1, 365))
  100.             repair_amount = random.randint(1, 10)
  101.             repair_details = ''.join(random.choices(string.ascii_lowercase, k=random.randint(0, 20)))
  102.             self.book_condition_details['repairs'][repair_date.strftime('%Y-%m-%d %H:%M:%S')] = {'repair_date': repair_date.strftime('%Y-%m-%d %H:%M:%S'), 'repair_amount': repair_amount, 'repair_details': repair_details}
  103.  
  104.     def generate_book_reviews(self):
  105.         for _ in range(random.randint(0, 3)):
  106.             review_date = datetime.now() - timedelta(days=random.randint(1, 365))
  107.             username = ''.join(random.choices(string.ascii_lowercase, k=8))
  108.             details = ''.join(random.choices(string.ascii_lowercase, k=random.randint(0, 50)))
  109.             star_rating = random.randint(1, 5)
  110.             self.book_reviews[review_date.strftime('%Y-%m-%d %H:%M:%S')] = {'review_date': review_date.strftime('%Y-%m-%d %H:%M:%S')}
  111.  
  112. class BorrowerInfo:
  113.     def __init__(self, library_card_number, book_fines):
  114.         self.library_card_number = library_card_number
  115.         self.book_fines = book_fines
  116.  
Advertisement
Add Comment
Please, Sign In to add comment