Using Form to update User Profile and submit form
Yep, that's totally do-able. Check out this article to see how to create a registration form. 

Then check out this article to see how to create the update profile form.

The thing to note is that any custom fields like address or city need to be pre-pended with fields. 

So, let's say you want the user to enter their city. On your front-end form the markup looks like this:

&lt;h3&gt;&lt;label for="city"&gt;City&lt;/label&gt;&lt;/h3&gt;
&lt;input id="city" type="text" name="fields[city]"
{%- if currentUser is defined %} value="{{ currentUser.city }}"{% endif %}&gt;
    {% if currentUser is defined %}
        {{ errorList(currentUser.getErrors('city')) }}
    {% endif %}


... and so on.

Make sure that your field handle(s) in the CP align with what you call them on your front-end form.

Here is how you can check for the current user.

Here is another great example of how to populate custom fields in your profile/registration form.

Hope this helps!