Aircraft Marshalling School
Java 8, 505 bytes
Golfed (with help from @masterX244 for shaving a big chunk off)
class f{static boolean T(String u,String v){return u.equals(v);}public static void main(String[]a){java.util.Scanner q=new java.util.Scanner(System.in);String s=q.nextLine();int x=0;int y=0;int d=0;int[][]v={{0,1},{-1,0},{0,-1},{1,0}};int b=1;for(String r:s.split(&quot;,&quot;)){if(T(r,&quot;o/&quot;)||T(r,&quot;-/&quot;))b=~1;if(b&lt;0){if(T(r,‌​&quot;~-&quot;))d=(d+3)%4;if(T‌​(r,&quot;-~&quot;))d=(d+1)%4;i‌​f(T(r,&quot;~~&quot;)){x+=v[d]‌​[0];y+=v[d][1];}if(T‌​(r,&quot;::&quot;)){x-=v[d][0]‌​;y-=v[d][1];}}}Syste‌​m.out.println(&quot;(&quot;+x+‌​&quot;,&quot;+y+&quot;,&quot;+&quot;NWSE&quot;.cha‌​rAt(d)+&quot;)&quot;);}}

More readable
class f {
    static boolean T(String u,String v){return u.equals(v);}
    public static void main(String[] a) {
        java.util.Scanner q=new java.util.Scanner(System.in);
        String s=q.nextLine();
        int x=0;
        int y=0;
        int d=0;
        int[][] val = {
                {0,1},  // N
                {-1,0}, // W
                {0,-1}, // S
                {1,0}   // E
        };
        int b=1;
        for (String r: s.split(&quot;,&quot;)) {
            // toggle b if either start or stop engine
            if(T(r,&quot;o/&quot;) || T(r,&quot;-/&quot;))
                b=~1;
            if(b&lt;0){
                // right
                if(T(r,&quot;~-&quot;)) d=(d+3)%4;
                // left
                if(T(r,&quot;-~&quot;)) d=(d+1)%4;
                // come forward
                if(T(r,&quot;~~&quot;)) {
                    x+=val[d][0];
                    y+=val[d][1];
                }
                // move back
                if(T(r,&quot;::&quot;)) {
                    x-=val[d][0];
                    y-=val[d][1];
                }
            }
        }
        System.out.print(&quot;(&quot;+x+&quot;,&quot;+y+&quot;,&quot;+&quot;NWSE&quot;.charAt(d)+&quot;)&quot;);
    }
}