The main focus of this thesis is directed towards distributed control strategies for multi-agent systems. Given an asymmetric network of homogeneous agents with single-integrator dynamics and weighted links, it is desired to design a control rule for each agent using its local information as well as the information it receives from its neighbors to solve the average consensus problem. In other words, the global objective is to drive every agent's state to the average of the initial states of all agents (static average consensus) or the average of the reference inputs (dynamic average consensus). The main challenge, however, is to achieve these objectives in a general weighted network, i.e., when the graph representing the network is directed and each edge is weighted. To this end, a novel two-stage strategy is proposed, where in the first stage a mirror model is defined for every agent to compute its final state based on a standard consensus protocol. Then in the second stage, the standard update rule is adjusted for each agent accordingly to account for the discrepancy between the the final state of its mirror model and the desired average consensus state. Simulations demonstrate the effectiveness of the proposed control strategies in different scenarios.