As Zhen Lin says in a comment, your type system needs disjoint unions. This is analogous to the way that you need to have ordered pairs (product objects) in order to model $\land I$ and $\land E$. (You might want to look at the product objects first. They are simpler, because the $\land I$ rule is simpler than the corresponding $\lor E$ rule you are trying to model.)
We will extend the basic type system with union types, as follows: for each pair of types $A$ and $B$ there is a union type, called $A\lor B$. For each term $a : A$ we have a term $\def\L#1{{\operatorname{Left}}\;#1}\L a : A\lor B$, and similarly for each term $b: B$ we have a term $\def\R#1{{\operatorname{Right}}\;#1}\R b : A \lor B$
($\L{}$ and $\R{}$ are actually different for each different $A\lor B$, so we should be writing $\operatorname{Left}_{A\lor B}$ and $\operatorname{Right}_{A\lor B}$, but I tried that way and the notation was just too much. I will leave the ${A\lor B}$ implicit.)
The $\lor I$ rules $A\to A\lor B$ and $B\to A\lor B$ then correspond to applications of $\L{}$ and $\R{}$, respectively.
We also need a destructor for removing the constructors again, which is a case statement: $$\def\csx{\operatorname{Case}} \def\C#1#2#3{\csx #1 \text{ of }\L y: #2\mid\R z: #3 }\C x{F(y)}{G(z)};$$ This tests $x$ to see if it is a $\L a$, in which case the result is $F(a)$, or $\R b$, in which case the result is $G(b)$. Here $F$ must be a term of type $A\to C$ and $G$ must be a term of type $B\to C$; the entire $\csx$ expression then has type $(A\lor B)\to C$. Variables $x,y,z$ have types $x:A\lor B, y: A, z: B$.
(This is more or less exactly how it manifests in a programming language; you can translate this almost symbol-for-symbol into Haskell, for example.)
The $\lor E$ rule you quoted corresponds to an appearance of $\csx$. In your rule, you have $$x:P\lor Q,\; F:P\to C,\; G:Q\to C,$$ and you can convert these to a single expression of type $C$ by writing $$\C x{F(y)}{G(z)}.$$
This is of course the intuitionistic $\lor$ operator, so one cannot construct a value with type $$P\lor\lnot P$$ unless some non-intuitionistic construction is available. (There is a rather famous paper by Wadler that discusses this: "Call-by-Value is Dual to Call-by-Name". See the story about the Devil and the billion dollars in section 4. The Devil uses continuations.)
For another example, see What is a constructive proof of $\lnot\lnot(P\vee\lnot P)$? on this web site, which discusses how to construct a value of that type.