There can be many different solutions possible. I'd suggest to consider following.
First consider standard tools. Can your users use VeraCrypt?
If not, how about using some broadly used archiving formats like ZIP, RAR, 7z? They all support encryption.
Use any of encryption algorithms that are broadly known like AES-256, ChaCha20, Threefish-256.
Think of proper mode. For instance, if files are relatively big and if you need random access to different file fragments, you may prefer AES GCM to AES CBC.
Applying passwords for encryption as is can make brute-forcing easier, because depending an attacker can test a considerable number of passwords in a short time. Instead, derive the encryption key using algorithms like Argon2, bcrypt, scrypt. Configure it in such way that derivation of a single key takes 1s. Such delay can be acceptable for user and this will reduce brute-forcing speed to 1 password per second.
To derive encryption key you will need the same parameters as used for encryption: salt, the number of iterations, memory factor (Argon2), parallelism (Argon2). That's why you need to store them. How you store them (at the beginning, at the end) is up to you.