The formulas for determining how much damage a Pokémon can do to another is very complex.
This page does the best I can do to explain what is going on.
This is the "basic" formula for the Damage inflicted by a Single attack Move:
Damage =  FLOOR  (  (  )  ×  (  )  × Effectiveness  )  + 1  
(BaseAttack + AttackIV) × AttackerCPM  Power × STAB × WeatherBoost  
(BaseDefense + DefenseIV) × DefenderCPM  2  
Here is what everything means:
FLOOR  Chop off everything after the decimal point. 

BaseAttack  The Attacking Pokémon's Base Attack score. 
BaseDefense  The Defending Pokémon's Base Defense score. 
AttackIV  The Attacking Pokémon's Attack IV score. 
DefenseIV  The Defending Pokémon's Defense IV score. 
AttackerCPM  The CPM for the Attacking Pokémon. 
DefenderCPM  The CPM for the Defending Pokémon. 
Power  How much damage will be caused by the move. 
STAB (Same Type Attack Bonus) 
If the type of the attack is the same as the Attacking Pokémon's type then it is 1.25, otherwise it is 1. For example: Tyranitars are of type Rock and Dark. The Move Bite is a Dark type move, so Tyranitars with this move DO get a STAB. (STAB = 1.25) On the other hand the Move Iron Tail is a Steel type move, so Tyranitars with this move DO NOT get a STAB. (STAB = 1) 
WeatherBoost  If the type of the attack is boosted by the current weather then it is 1.25, otherwise it is 1. (Similar to STAB) For example: Vine Whip is a Grass type move and Grass types are boosted by Sunny weather. So, if the weather is Sunny Vine Whip WILL be boosted. (WeatherBoost = 1.25) On the other hand if the weather is Cloudy Vine Whip WILL NOT get boosted. (WeatherBoost = 1) 
Effectiveness  A bonus or penalty depending upon the Type of the Move and the Type of the Defending Pokémon. 
AttackTime  The amount of time it takes the Attacking Pokémon to perform the move. 
To make things worse, as mentioned above, that formula is for the Damage from a Single Move! To get the DPS for that one Move you would only need to do:
DPS =  Damage 
AttackTime 
... BUT ...
To get the DPS for a Move Set you need to figure out:
In the end, the formula looks like this:
Base DPS =  (  FastMoveDamage × CEILING  (  )  )  + ChargedMoveDamage  
ChargedMoveEnergy  
FastMoveEnergy  
(  FastMoveTime × CEILING  (  )  )  + ChargedMoveTime  
ChargedMoveEnergy  
FastMoveEnergy  
Here is what everything means:
CEILING  Get the smallest whole number (integer) that is greater than or equal to value. 

FastMoveDamage  The amount of Damage (using Damage Formula above) that a single Fast Move will inflict. 
ChargedMoveDamage  The amount of Damage (using Damage Formula above) that a single Charged Move will inflict. 
FastMoveEnergy  The amount of Energy the Fast Move generates. 
ChargedMoveEnergy  The amount of Energy the Charged Move requires. 
FastMoveTime  The amount of time it takes to perform the Fast Move. 
ChargedMoveTime  The amount of time it takes to perform the Fast Move. 
Simply put it is:
Unfortunately, there are some things that will change for each situation.
For example, some parts of the formulas really require us to know what Pokémon is being attacked. (Effectiveness, CPM, BaseIV, etc.)
However, we can choose to assume several things to get a good idea of the damage a specific Attacking Pokémon can inflict with a specific Move Set:
With those assumptions, the Damage formula (after simplification) becomes:
Damage =  FLOOR  (  )  + 1  
(BaseAttack + 15) × Power × STAB  
200  
Then, merging that into the Base DPS formula (which is now a little easier than it would have been with the full Damage formula), we end up with:
True DPS = 



I refer to this as the "True DPS" on the charts in Pokémon Move Sets.
Obviously, True DPS is still quite a complex formula.
To simplify it further, many people will use only the values from the Move Set itself, removing the values from the Pokémon. This will give a generic DPS for the moveset.
(In other words, it will be the same value regardless the Pokémon.)
With that, we end up with:
Base DPS = 



I personally don't pay attention to this, but I include it as the "Base DPS" on the charts in Pokémon Move Sets in case you are interested.
I have included both Base DPS and True DPS in the Pokémon Move Sets page. However, in my humble opinion, the True DPS formula is the most useful, and the one I pay attention to the most.
Although these formulas are a quite technical, I have programmed them into a spreadsheet that does all the calculations. If any of the values change in the future, I just copyandpaste them in and regenerate the data for the pages on this site.