Besides mining, is there any other way for user to earn ether coin? For example, if userA deploy a contract and userB wants to use this contract, should userB pay ether to userA?
I'm a newbie to ethereum, please help me.
Probably slightly tangential to what you're asking, but you can also earn ether in a more traditional way... by actually working for it.
CommitEth allows groups to post work items that they'd like completed, together with a pledge of how much they'll pay, in ETH. Likely to be mostly of interest to programmers and testers.
I'm going to call this Real-Life Proof of Work (RLPoW). (Where the proof is the working code you submit to receive your pay.)
In the Ethereum networks Ethers are earned by mining and via transaction's Fees.
If a user want to use the contract normally, he pays only the transaction fee to the miners while he is sending a normal transaction. thus, in the normal scenario userB pays nothing to user A. However, userA could set a rule in his smart contract to force the users to pay him before using his smart contract (e.g he could ask the users to send ethers to the contract he is controlling and then forwarding all this money to himself).
https://ethlance.com/ - similar to upwork.com model to make money.
Getting ether is no different than earning fiat. You have to do something. No one gets it for free.