Best way to implement jump method for character controller

I’m designing my character movement system and am stuck on the jump method. I’ve looked around but can’t seem to find the right answer. Can you look at my code and tell me what you think would be the best way to implement a jump method?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(CharacterController))]
public class Player : MonoBehaviour {

  private CharacterController controller;
  [SerializeField]
  private float Speed = 6f;
  private float gravity = 9.81f;
  public float RotateSpeed = 6f;
 



 

void Start () {
	controller = GetComponent<CharacterController>();

}
void Update () {
	// CalculateMovement();
	
	CharacterController controller = GetComponent<CharacterController>();
     if (transform != null)
     {
         transform.Rotate(0, Input.GetAxis("Horizontal") * RotateSpeed, 0);
         var forward = transform.TransformDirection(Vector3.forward);
         float curSpeed = Speed * Input.GetAxis("Vertical");
         controller.SimpleMove(forward * curSpeed);
     }
	 
	 

}
}

Thanks!

@jonstephens778
Here is a nice little script that does movement and jump without any problems I think lol.
Have fun with the script. I tried to explain it a bit through comments.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

//Make sure that our object has a CharacterController
//It is required for movement
[RequireComponent(typeof(CharacterController))]
public class TesterThubg : MonoBehaviour
{
    //Private reference to the controller
    private CharacterController controller;

    //Movement speed
    [SerializeField]
    private float Speed = 6f;

    //Rotation speed
    public float RotateSpeed = 6f;

    //Speed or force of our jump
    public float jumpSpeed = 8.0F;

    //Used to get the direction of our movement
    private Vector3 moveDirection = Vector3.zero;

    //Force of gravity that effects movement
    private float gravity = 9.81f;

    void Start()
    {
        //Get our reference for our controller
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        //Checks to see whether our object exists
        if (transform != null)
        {
            //If our controller is grounded and we press the jump button
            if (controller.isGrounded && Input.GetButton("Jump"))
            {
                //Set our move direction's y equal to our force or speed of our jump
                moveDirection.y = jumpSpeed;
            }
            //Make sure our descent to the ground looks naturalish
            moveDirection.y -= gravity * Time.deltaTime;

            //Move our controller appropriately
            controller.Move(moveDirection * Time.deltaTime);

            //Used to rotate character with given inputs
            transform.Rotate(0, Input.GetAxis("Horizontal") * RotateSpeed, 0);

            //Inputs used for ground movement
            var forward = transform.TransformDirection(Vector3.forward);
            float curSpeed = Speed * Input.GetAxis("Vertical");

            //Move our controller appropriately given the inputs
            controller.SimpleMove(forward * curSpeed);
        }
    }
}