運行效果預覽:
?
?
?
?
?
先看實踐應用要求:
1.編寫一個函數,用于計算1!+2!+3!+4!+5!,在控制臺或頁面輸出運行結果。
2.在控制臺或頁面輸出九九乘法表。
3.輸入10個以內的整數,輸出該組整數的降序排列,要求采用數組實現。
4.計算兩個數的商,在控制臺或頁面輸出結果,要求包含異常處理。
5.定義一個汽車類,該類具有重量和速度屬性;再定義一個跑車類,該類繼承汽車類的屬性,并擁有自己的顏色屬性;然后聲明一個汽車類的對象和一個跑車類的對象,并把它們的屬性輸出到控制臺上。
6.假設某動物園管理員每天需要給他所負責飼養的獅子、猴子和鴿子喂食。請用一個程序來模擬他喂食的過程。
要求:
(1)飼養員喂食時,不同動物執行不同的吃的功能,例如獅子吃肉、猴子吃香蕉、鴿子吃大米等。
(2)飼養員喂動物時,不能使用判斷語句判斷動物類型。
(3)使用虛方法或抽象方法實現喂養不同動物的多態,不能使用方法重載。
提示:需要建一個動物類,動物類有一個虛的或抽象的吃方法,動物類下面有幾個子類,不同的子類重寫父類的吃方法。飼養員類提供喂食方法。然后,在Main方法中一一調用吃的方法。
?
?
?
前端practice.aspx源碼:
?
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="practice.aspx.cs" Inherits="practice" enableEventValidation="false"%>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> ??
?<title>實驗二 C#程序設計練習</title>
<style type="text/css">
??????? button{
??????????? width:120px;
??????????? height:30px;
??????????? background:#9933FA;
??????????? color:#fff;
??????? }
??????? button:hover{
??????????? background:#9A32CD;
??????? }
??????? div{
??????????? text-align:center;
??????? }
??????? h2{
??????????? text-align:center;
??????????? color:red;
??????? }
??????? span{
??????????? color:gray;
??????? }
??????? textarea{
??????????? width:900px;
??????????? height:400px;
??????????? font-size:20px;
??????? }
??? </style>
</head>
<body id="mybody">
??? <form id="form1" runat="server">
??????? <br /><br />
??? <div id="div_btn" runat="server">
??????? <button id="Button1" onserverclick="factorial" runat="server">factorial</button>
??????? <button id="Button2" onserverclick="multiplication" runat="server">multiplication</button>
??????? <button id="Button3" onserverclick="bubbleSort" runat="server">bubbleSort</button>
??????? <button id="Button4" onserverclick="division" runat="server">division</button>
??????? <button id="Button5" onserverclick="car" runat="server">car</button>
??????? <button id="Button6" onserverclick="zoo" runat="server">zoo</button>
??? </div>
??????? <br />
??????? <div id="div_bubble" runat="server" EnableViewState="false" visible="false" >
??????????? 輸入參數:<asp:TextBox id="TextNumber" runat="server" OnTextChanged="bubbleBtnClick" AutoPostBack ="true"></asp:TextBox> ??????????? <asp:Label ID="eMesg_bubble" runat="server">10個以內整數,空格分隔,Enter/Tap鍵執行排序</asp:Label><br /><br />
??????? </div>
??????? <div id="div_division" runat ="server" EnableViewState="false" visible="false" >
??????????? 輸入被除數:<asp:TextBox id="textA" runat="server"></asp:TextBox>
??????????? 輸入除數:<asp:TextBox id="textB" runat="server" OnTextChanged="divisionBtnClick" AutoPostBack ="true"></asp:TextBox>
??????????? <asp:Label ID="eMesg_division" runat="server">Enter/Tap鍵執行計算</asp:Label><br /><br />
???????? ??????? </div>
??? <div id="div_view" runat="server" EnableViewState="false">
??????? </div>
??????? <div>
??????????? <textarea id="displayArea" runat="server" rows="1" cols="1">輸出結果將在此處顯示.......</textarea>
??????? </div>
??? </form>
</body>
</html>
?
后端practice.aspx.cs源碼:
?
?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
?
public partial class practice : System.Web.UI.Page {
??? protected void Page_Load(object sender, EventArgs e)
??? {
??????? Response.Write("<h2>單擊按鈕分別顯示各個練習題代碼運行結果</h2>");
??????? div_division.Visible = false;
??????? div_bubble.Visible = false;
??? }
??? protected void factorial(object sender, EventArgs e)
??? {
??????? if (IsPostBack)
??????? {
??????????? div_bubble.Visible = false;
??????????? div_division.Visible = false;
??????????? div_view.InnerHtml = "Follow will calculate the union of \"1!+2!+3!+4!+5!\":";
??????? }
??????? factorial calculate = new factorial();
??????? displayArea.InnerHtml = "1!+2!+3!+4!+5!=" + calculate.add().ToString();
??? }
??? protected void multiplication(object sender, EventArgs e)
??? {
??????? if (IsPostBack)
??????? {
??????????? div_bubble.Visible = false; ??????????? div_division.Visible = false;
??????? }
?
?
??????? int i, j;
??????? displayArea.InnerHtml = "";???????????? //擦除前一次對textarea的寫入記錄
??????? for (i = 1; i < 10; i++)
??????? {
??????????? for (j = 1; j <= i; j++)
??????????? {
??????????????? displayArea.InnerHtml+=j+"*"+i+"="+(i * j)+"\t";
??????????? }
??????????? displayArea.InnerHtml += "\n";
??????? }
??? }
??? protected void bubbleSort(object sender, EventArgs e)
??? {
??????? if (IsPostBack)
??????? {
??????????? div_bubble.Visible = false;
??????????? div_division.Visible = false;
??????? }
?
??????? div_bubble.Visible = true;
??????? displayArea.InnerHtml = "bubbleSort";
??? }
??? protected void bubbleBtnClick(object sender, EventArgs e)
??? {
??????? if (IsPostBack)
??????? {
??????????? div_bubble.Visible = false;
??????????? div_division.Visible = false;
??????? }
??????? div_bubble.Visible = true;
??????? ??????? String str=TextNumber.Text;
?
??????? //String[] a=str.Split();//稍候再寫,未完
??????? /* ??????? int i = 0, j=1; ??????? int[] number = new int[12]; ??????? while (i < str.Length) ??????? { ??????????? if (str[i].Equals(' ')) ??????????? { ??????????????? i++; ??????????? } ??????????? else ??????????? { ??????????????? number[j] = int.Parse (str[i].ToString ()); ??????????? } ??????? } ??????? */
?
??????? displayArea.InnerHtml = "";???? //擦除前一次textarea輸出記錄
??????? displayArea.InnerHtml =str;
??? }
??? protected void division(object sender, EventArgs e)
??? {
??????? if (IsPostBack)
??????? {
??????????? div_bubble.Visible = false;
??????????? div_division.Visible = false;
??????? }
?
??????? div_division.Visible = true;
??????? displayArea.InnerHtml = "兩數求商,輸入被除數與除數后,按 Enter / Tap 鍵執行運算";
??? }
??? protected void divisionBtnClick(object sender,EventArgs e)
??? {
??????? if (IsPostBack)
??????? {
??????????? div_bubble.Visible = false;
??????????? div_division.Visible = false;
??????? }
?
??????? float a = float.Parse(textA.Text);
??????? float b = float.Parse(textB.Text);
??????? float result;
??????? div_division.Visible = true;
??????? try
??????? {
??????????? if (b == 0)
??????????????? throw new Exception("Error:DivideByZeroException[除數為零]");
??????????? result = a / b;
??????????? displayArea.InnerHtml = a + "/" + b + "=";
??????????? displayArea.InnerHtml += a / b;
??????? }
??????? catch (Exception error)
??????? {
??????????? eMesg_division.Text = error.Message;
??????? }
??? }
??? protected void car(object sender, EventArgs e)
??? {
??????? if (IsPostBack)
??????? { ?
?????????? div_bubble.Visible = false;
??????????? div_division.Visible = false;
??????? }
?
??????? car cardemo = new car();
??????? supercar supercardemo = new supercar();
??????? cardemo.set(2500, 180);
??????? displayArea.InnerHtml = "汽車類的質量:" + cardemo.weight + "Kg,汽車類的速度:" + cardemo.speed + "Km/h\n";
?
??????? supercardemo.color = "red";
??????? cardemo.set(2500, 180);
??????? supercardemo.set(2000, 250);
??????? displayArea.InnerHtml +="超跑類的重量:"+supercardemo.weight+"Kg,超跑類的速度:"+supercardemo.speed+"Km/h,超跑的顏色:"+supercardemo.color; ??? }
??? protected void zoo(object sender, EventArgs e)
??? {
??????? if (IsPostBack)
??????? {
??????????? div_bubble.Visible = false;
??????????? div_division.Visible = false;
??????? }
?
??????? feeder feederdemo = new feeder();
??????? animals animalsdemo = new animals();
?
??????? String food = "null";
??????? String foodmeat,foodbanana,foodrice,meat,banana,rice;
??????? food = "meat";
??????? foodmeat=feederdemo.feed(food);
??????? animalsdemo = new lion();
??????? meat=animalsdemo.eat();
??????? displayArea.InnerHtml = foodmeat + "\n" + meat + "\n";
?
??????? food = "banana";
??????? foodbanana=feederdemo.feed(food);
??????? animalsdemo = new monkey();
??????? banana=animalsdemo.eat();
??????? displayArea.InnerHtml += foodbanana + "\n" + banana + "\n";
?
??????? food = "rice";
??????? foodrice=feederdemo.feed(food);
??????? animalsdemo = new pigeon();
??????? rice=animalsdemo.eat();
??????? displayArea.InnerHtml += foodrice + "\n" + rice + "\n";
??????? //displayArea.InnerHtml = foodmeat + "\n" + meat + "\n" + foodbanana + "\n" + banana + "\n" + foodrice + "\n" + rice;
??? }
}
?
?
?
//1!+2!+3!+4!+5!
class factorial {
??? public int add()
??? {
??????? int i = 1, temp = 1, sum = 0;
??????? for (; i < 6; i++)
??????? {
??????????? temp = i * temp;
??????????? sum = sum + temp;
??????? }
??????? return sum;
??? }
}
?
//bubbleSort
/* ?class bubbleSort ??? {
??????? public void sort(int n)
??????? {
??????????? int i, j;
??????????? for (i = 1; i < n; i++)
??????????? {
??????????????? for (j = i; j < n; j++)
??????????????? {
??????????????????? if (a[i] > a[j])
??????????????????? { ?
?????????????????????? a[0] = a[i]; ??????????????????????? a[i] = a[j]; ??????????????????????? a[j] = a[0];
??????????????????? }
??????????????? }
??????????? }
??????? }
??? } */
?
?
?
//car class
class car
{
??? public float weight;
??? public float speed;
??? public void set(float weight, float speed)
??? {
???????? this.weight = weight;
??????? this.speed = speed;
??? }
}
class supercar : car {
??? public String color;
}
?
//zoo
??? class feeder
??? {
??????? public String feed(String food)
??????? {
??????????? return (food);
??????? }
??? }
??? class animals
??? {
??????? public virtual String eat()
??????? {
??????????? return "feed animals with food!";
??????? }
??? }
??? class lion : animals
??? {
??????? public override String eat()
??????? {
??????????????? return "\'獅子\'吃的是? meat? ......";
??????? }
??? }
??? class monkey : animals
??? {
??????? public override String eat()
??????? {
??????????????? return "啾~,俺老孫來也,\'猴子\'就愛吃? banana? ......";
??????? }
??? }
??? class pigeon : animals
??? {
??????? public override String eat()
??????? {
??????????????? return "聽~,是\'鴿子\'在啄食? rice? ......";
??????? }
??? } ?
?
?
網頁初次打開運行效果如圖:
單擊按鈕分別顯示各個練習題代碼運行結果
?