Shallow-water flow is traditionally formulated in terms of water depth and fluid velocity. This formulation enjoys great success for flow with horizontal bottom and no friction when the governing equations reduce to conservation laws. It, however, encounters difficulties in the presence of uneven bottom topography; in particular, it fails to replicate stationary flow. To overcome the difficulties, we formulate the problem of shallow-water flow in terms of water surface level and fluid velocity. The non-homogeneous equations are solved using the fractional step method together with a Godunov-type scheme for the homogeneous conservation law equations. The Riemann problem in this formulation is complicated but is readily solved with an approximation equivalent to coarsening the grid for bottom topography by doubling its size locally. Our method exactly replicates the stationary flow, and accurately computes quasi-stationary, steady, and unsteady flow. It has also been applied to compute the tidal bores on the Qiantang River on the East coast of China, producing excellent agreement with field observations.