第一篇:淺談C#程序設(shè)計課程的創(chuàng)新教學(xué)方法
淺談C#程序設(shè)計課程的創(chuàng)新教學(xué)方法
【摘要】本文主要討論高職軟件技術(shù)專業(yè)C#程序設(shè)計課程的教學(xué)方法,擬將創(chuàng)新學(xué)習(xí)的理論和實踐應(yīng)用于課程教學(xué)中,分析了接受性學(xué)習(xí)和創(chuàng)新學(xué)習(xí)各自的特點和適用知識的范圍。并對課堂教學(xué)模式、課后作業(yè)布置模式等教學(xué)環(huán)節(jié)提出了一些創(chuàng)新性的看法。
【關(guān)鍵詞】教學(xué)方法主動學(xué)習(xí)創(chuàng)新學(xué)習(xí)課件開發(fā)教師學(xué)習(xí)
【中圖分類號】G71 【文獻標識碼】A 【文章編號】2095-3089(2014)06-0249-01
1.序言
現(xiàn)在很多高職院校的軟件技術(shù)專業(yè)一般都開設(shè)了微軟公司開發(fā)的C#程序設(shè)計這門課程。學(xué)生對C#程序設(shè)計課程的學(xué)習(xí)都存在一定的問題。這門課程和那些傳統(tǒng)的知識型課程對比,有很多不一樣的創(chuàng)新思維過程在里面。因此這門課程的教學(xué)肯定不能像其它知識型課程那樣教學(xué),我們必須另想辦法來解決。筆者先后多次擔任《C#程序設(shè)計》課程的教學(xué),在教學(xué)過程中積累了一些實際的教學(xué)心得體會。
2.創(chuàng)新教學(xué)的理論
對于C#程序設(shè)計課程而言,其語法格式、變量、方法、屬性、封裝、繼承、多態(tài)等基本的程序設(shè)計技巧和方法都屬于可以采用接受性學(xué)習(xí)方式的概念性知識。而程序設(shè)計實例則是一項典型的創(chuàng)新活動,其主要的知識內(nèi)涵是如何在現(xiàn)有的知識和方法論的基礎(chǔ)上設(shè)計出不存在的知識作品(程序)。這就需要創(chuàng)新教學(xué)方法來使學(xué)生跟隨你的教學(xué)方式。
所謂創(chuàng)新教學(xué)并不是與把學(xué)生接受性學(xué)習(xí)絕對對立的,它必須以接受性學(xué)習(xí)為基礎(chǔ)和前提。創(chuàng)新教學(xué)的主要特征就是讓學(xué)生以掌握知識的全部內(nèi)涵為目的,運用邏輯思維,通過再創(chuàng)新教學(xué)內(nèi)容的方式進行,將知識的學(xué)習(xí)過程變?yōu)橹R的創(chuàng)新過程。
3.創(chuàng)新教學(xué)的實際應(yīng)用
筆者在實際教學(xué)過程中,對于那些理論性的知識,如語法結(jié)構(gòu)、程序結(jié)構(gòu)、觸發(fā)事件服務(wù)等,筆者采用大量真實有趣的生活實例進行案例教學(xué)方法。最后用一個綜合性的簡單程序?qū)嵗齺砺?lián)系整門課程的大部分理論和實踐知識,并且將這個實例程序的編寫過程錄制成屏幕錄像形式的動畫文件,在動畫中用注解的方式將教師的講解融入其中,程序設(shè)計中的注意事項,要掌握的組件屬性、方法和事件以及其中蘊含的編程技巧、程序的擴展思路和思考問題都在動畫中得以體現(xiàn)。教師上課時可以播放動畫并作針對性講解,這樣就完全避免了這類課程在教學(xué)時教師邊操作、邊講解的手足無措的現(xiàn)象。更重要的是,有些學(xué)生在上課時經(jīng)常開小差或請假,下課又搞不懂,他就可以通過下載動畫課件文件在課后反復(fù)觀看,就把老師在課堂上的講解重現(xiàn)出來方便學(xué)習(xí)。這樣就可以將課堂教學(xué)直接延伸到了課堂之外,使得教師的知識教學(xué)和學(xué)生的自主學(xué)習(xí)可以達到高效而持續(xù)的教學(xué)目的。筆者的演示課件一般是課堂主要實例的編制全過程錄像加上文字解說,采用的屏幕錄像軟件是由天狼星軟件工作室開發(fā)的《屏幕錄像專家》?!镀聊讳浵駥<摇泛鸵话闫聊讳浵褴浖淖畲髤^(qū)別是給制作者更大的靈活性,可以全過程錄制也可以手動選擇重點知識需要的畫面進行錄制,錄制完后還可以很方便地任意剪輯、添加幀以及加入有趣的注解形式,并且在后期還可以適當加入部分配音。更難得的是《屏幕錄像專家》可以生成Flash格式的動畫文件,使得課件文件存儲空間大大減小,一般一個45分鐘的屏幕錄像課件不到5MB。而其他AVI格式的屏幕錄像軟件制作出來的動畫文件則動輒幾十MB甚至一百多BM。
對于軟件技術(shù)專業(yè)的當代大學(xué)生來說,自學(xué)是獲取知識的另一次要途徑,它的重要性有時甚至超過課堂學(xué)習(xí)。筆者指導(dǎo)學(xué)生自學(xué)主要采用的是專業(yè)學(xué)習(xí)網(wǎng)站和圖書館資料。很多專業(yè)教學(xué)網(wǎng)站上都包括教材全部的知識點和實例的講解、源代碼甚至習(xí)題,學(xué)生可以通過這個網(wǎng)站完成初步自學(xué)的過程,這就大大減輕了教師課堂教學(xué)的壓力。另外通過興趣教學(xué)和擴展性很強的課后作業(yè)可以督促學(xué)生充分地利用互聯(lián)網(wǎng)和圖書館等多種途徑去學(xué)習(xí)課程中所沒有的知識點、方法和技巧,使學(xué)生的創(chuàng)新學(xué)習(xí)能力得到很大的培養(yǎng)。
在最后兩周的實訓(xùn)教學(xué)中,筆者采用的是一種模塊化的教學(xué)方式,將最后的那個程序項目分為若干個有序而獨立的子模塊讓學(xué)生自己思考,解決了一個子模塊的同學(xué)可以上講臺演示和講解,然后在此基礎(chǔ)上進入下一個子模塊,直至問題全部解決,完整的可執(zhí)行的軟件應(yīng)用程序項目也就呈現(xiàn)出來。最后,教師對整個過程進行點評。在此過程中,每一個解決模塊的學(xué)生必須根據(jù)上一個學(xué)生的思路來進行,也可以修正上一個同學(xué)的不合理的編碼,臺下的同學(xué)可以自由參與討論或借鑒別人的經(jīng)驗,最終目的是讓每個學(xué)生完成一個完整的程序作品并上交教師,讓學(xué)生覺得心理有很大的滿足感和成就感。
再探索過程是通過課后作業(yè)環(huán)節(jié)來實現(xiàn)的。作業(yè)的選題主要包含課程的知識點且有時要高于知識點,其中作業(yè)要求也是分層次的,學(xué)生能夠做什么就做什么層次的作業(yè)。這些層次都是循序漸進、環(huán)環(huán)相扣的,既體現(xiàn)了程序設(shè)計的趣味性又將面向?qū)ο蟮木幊趟枷肴谌氲阶鳂I(yè)中,更重要的是學(xué)生從這些作業(yè)的創(chuàng)新編程過程中體會到編程的樂趣和成就感,加深了他們對于程序設(shè)計的熱愛,提高了他們的創(chuàng)新思維能力。在筆者的教學(xué)實施過程中,課后作業(yè)這一環(huán)節(jié)是非常重要的,它是培養(yǎng)學(xué)生學(xué)習(xí)能力和解決問題能力最主要的教學(xué)環(huán)節(jié)。
4.教師的創(chuàng)新學(xué)習(xí)
教師的智能結(jié)構(gòu)包括知識結(jié)構(gòu)和能力結(jié)構(gòu)兩方面。創(chuàng)造型教師的知識結(jié)構(gòu)是一種三維立體結(jié)構(gòu)模式,它由知識的廣度、深度和獲取知識的方法三個維度變量組成。知識的廣度意味著創(chuàng)造型教師要具備廣博的科學(xué)基礎(chǔ)知識,特別是新興的或邊緣學(xué)科知識,能從多角度對自己的專業(yè)知識進行審視分析、類比演繹,并且能在多學(xué)科交叉的“無人區(qū)”發(fā)現(xiàn)新問題,開拓新領(lǐng)域。知識的深度意味著創(chuàng)造型教師要具備精深的專業(yè)知識,對本專業(yè)的新動向和新成果有清晰的了解,并對本專業(yè)的課題有一定深度的見解,引導(dǎo)學(xué)生進行科學(xué)研究與發(fā)明創(chuàng)造。獲取知識的方法意味著教師不僅教給學(xué)生固定的知識,而且主要的是要教會學(xué)生獲得知識的方法。創(chuàng)新型教師就應(yīng)當具備科學(xué)的方法論知識,讓學(xué)生更快更有效地學(xué)習(xí)好科學(xué)文化知識。
筆者在任課程教學(xué)的之余,經(jīng)常加強學(xué)習(xí),從軟件工程、UML、軟件測試等到各種程序設(shè)計語言的各個領(lǐng)域,除此之外,還多次利用暑假的時間深入軟件公司進行真實項目開發(fā),有效拓寬了自己的知識面和研究創(chuàng)新能力,形成扎實的技術(shù)功底,在課堂面對學(xué)生時才能自信而游刃有余,也才有能力帶領(lǐng)學(xué)生進入深入的創(chuàng)新學(xué)習(xí)的思維中。同時在自己的學(xué)習(xí)過程中嘗試運用創(chuàng)新方法,使創(chuàng)新方法在課堂的實踐可以循著一條可行的思路,做到有據(jù)可依。
5.結(jié)論
知識是教師教學(xué)和學(xué)生學(xué)習(xí)的共同載體,將知識劃分為理論性知識和程序性知識而采取不同的學(xué)習(xí)和教學(xué)方法,是創(chuàng)新教學(xué)法在高職教育中的重要應(yīng)用原則。接受性學(xué)習(xí)和創(chuàng)新教學(xué)各自適用于不同的知識內(nèi)涵,而創(chuàng)新教學(xué)和教師的創(chuàng)造能力是教學(xué)中培養(yǎng)學(xué)生創(chuàng)新能力的重要因素。
第二篇:C#程序設(shè)計實驗報告
實驗報告書寫要求
實驗報告原則上要求學(xué)生手寫,要求書寫工整。若因課程特點需打印的,標題采用四號黑體,正文采用小四號宋體,單倍行距。紙張一律采用A4的紙張。
實驗報告書寫說明
實驗報告中實驗?zāi)康暮鸵?、實驗儀器和設(shè)備、實驗內(nèi)容與過程、實驗結(jié)果與分析這四項內(nèi)容為必需項。教師可根據(jù)學(xué)科特點和實驗具體要求增加項目。
填寫注意事項
(1)細致觀察,及時、準確、如實記錄。(2)準確說明,層次清晰。
(3)盡量采用專用術(shù)語來說明事物。
(4)外文、符號、公式要準確,應(yīng)使用統(tǒng)一規(guī)定的名詞和符號。(5)應(yīng)獨立完成實驗報告的書寫,嚴禁抄襲、復(fù)印,一經(jīng)發(fā)現(xiàn),以零分論處。
實驗報告批改說明
實驗報告的批改要及時、認真、仔細,一律用紅色筆批改。實驗報告的批改成績采用五級記分制或百分制,按《金陵科技學(xué)院課堂教學(xué)實施細則》中作業(yè)批閱成績評定要求執(zhí)行。
實驗報告裝訂要求
實驗批改完畢后,任課老師將每門課程的每個實驗項目的實驗報告以自然班為單位、按學(xué)號升序排列,裝訂成冊,并附上一份該門課程的實驗大綱。
金陵科技學(xué)院實驗報告
實驗項目名稱: C#基礎(chǔ)編程 實驗學(xué)時: 6 同組學(xué)生姓名: 實驗地點: 1318 實驗日期: 10月5日-10月19日 實驗成績: 批改教師: 批改時間:
金陵科技學(xué)院實驗報告
實驗1 C#基礎(chǔ)編程
一、實驗?zāi)康?/p>
1、熟悉Visual Studio.NET開發(fā)環(huán)境。
2、掌握C#應(yīng)用程序的基本操作過程。
3、掌握C#的數(shù)據(jù)類型,運算符以及表達式的使用。
4、掌握分支和循環(huán)語句的使用方法。
5、掌握一維數(shù)組,二維數(shù)組及數(shù)組型數(shù)組的使用。
二、實驗要求
(1)編寫程序要規(guī)范、正確,上機調(diào)試過程和結(jié)果要有記錄(2)做完實驗后給出本實驗的實驗報告。
三、實驗設(shè)備、環(huán)境
安裝有Visual Studio.NET軟件。
四、實驗步驟
1、分析題意。
2、根據(jù)題目要求,新建項目。
3、編寫并輸入相關(guān)的程序代碼。
5、運行與調(diào)試項目。
6、保存項目。
五、實驗內(nèi)容
1、編寫一個簡單的控制臺應(yīng)用程序,打印一行文字(如你的姓名)。
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace one.first {
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine(“我叫王蕾!”);
}
} }
2、編寫一個簡單的Windows應(yīng)用程序,在窗體Load事件中書寫代碼,標簽中顯示你的姓名。
using System;using System.Collections.Generic;using System.ComponentModel;
金陵科技學(xué)院實驗報告
using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;
namespace one.second {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.Text = “Windows 程序”;
Label lblShow = new Label();
lblShow.Location = new Point(20, 30);
lblShow.AutoSize = true;
lblShow.Text = “王蕾!”;
this.Controls.Add(lblShow);
}
} }
3、編寫一個一個程序,用來判斷輸入的是大寫字母,小寫字母,數(shù)字還是其他的字符。
using System;using System.Collections.Generic;using System.Text;
namespace one.third {
class Program
{
static void Main(string[] args)
{
Console.WriteLine(“請輸入一個字符:”);
char c = Convert.ToChar(Console.ReadLine());
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
Console.WriteLine(“這是一個字母”);
if(char.IsDigit(c))
Console.WriteLine(“這是一個數(shù)字”);
金陵科技學(xué)院實驗報告
}
} }
4、分別用while,do-while,for循環(huán)求1到100的和。
using System;using System.Collections.Generic;using System.Text;
namespace one.forth.one {
class Program
{
static void Main(string[] args)
{
int i = 1, sum = 0;
while(i <= 100)
{
sum = sum + i;
i++;
}
Console.WriteLine(“1到100的自然數(shù)之和為:” + sum);
}
} } using System;using System.Collections.Generic;using System.Text;
namespace one.forth.two {
class Program
{
static void Main(string[] args)
{
int i = 1, sum = 0;
do
{
sum = sum + i;
i++;
}
while(i <= 100);
Console.WriteLine(“1到100的自然數(shù)的和為:” + sum);
}
}
金陵科技學(xué)院實驗報告
} using System;using System.Collections.Generic;using System.Text;
namespace one.forth.three {
class Program
{
static void Main(string[] args)
{
int i , sum = 0;
for(i = 1;i <= 100;i++)
{
sum = sum + i;
}
Console.WriteLine(“1到100的自然數(shù)的和為:” + sum);
}
} }
5、定義一個一維數(shù)組,用隨機數(shù)為此賦值,用foreach循環(huán)輸出其中的內(nèi)容。
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace first.five {
class Program
{
static void Main(string[] args)
{
int[] a = {0,1,2,3,4};
foreach(int i in a)
{
Console.WriteLine(a[i]);
}
}
} }
6、實現(xiàn)二維數(shù)組的輸入和輸出。
using System;using System.Collections.Generic;using System.Linq;
金陵科技學(xué)院實驗報告
using System.Text;
namespace first.six {
class Program
{
static void Main(string[] args)
{
int[,] a = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
{
for(int i = 0;i < 2;i++)
{
for(int j = 0;j < 3;j++)
{ Console.WriteLine(a[i, j]);}
}
}
}
} }
7、實現(xiàn)數(shù)組型數(shù)組的輸入和輸出。
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace first.seven {
class Program
{
static void Main(string[] args)
{
int[][] a = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 } };
for(int i = 0;i < a.Length;i++)
{
for(int j = 0;j < a[i].Length;j++)
{
Console.WriteLine(a[i][j]);
}
}
}
} }
六、實驗體會(遇到問題及解決辦法,編程后的心得體會)
剛開始編程的時候覺得無從下手,盡管我們已經(jīng)學(xué)了好幾種高級編程語言,但每個都
金陵科技學(xué)院實驗報告
有其獨特的地方,稍不留神就會混淆。
通過這次實驗,我體會到課后復(fù)習(xí)鞏固的重要性。在編程的時候,很多內(nèi)容都不記得,需要去翻書。不得不說,實驗是鞏固課程的好方法!本次實驗,我熟悉Visual Studio.NET開發(fā)環(huán)境;掌握了C#應(yīng)用程序的基本操作過程;掌握了C#的數(shù)據(jù)類型,運算符以及表達式的使用;掌握了分支和循環(huán)語句的使用方法以及一維數(shù)組,二維數(shù)組及數(shù)組型數(shù)組的使用。
金陵科技學(xué)院實驗報告
實驗項目名稱: 類與對象 實驗學(xué)時: 6 同組學(xué)生姓名: 實驗地點: 1318 實驗日期: 10月26日-11月9日 實驗成績: 批改教師: 批改時間:
金陵科技學(xué)院實驗報告
實驗2 類與對象
一、實驗?zāi)康摹⒁?/p>
(1)掌握類的定義和使用;
(2)掌握類的數(shù)據(jù)成員,屬性的定義和使用;
(3)掌握方法的定義,調(diào)用和重載以及方法參數(shù)的傳遞;(4)掌握構(gòu)造函數(shù)的定義和使用。
二、實驗要求
(1)編寫程序要規(guī)范、正確,上機調(diào)試過程和結(jié)果要有記錄;(2)做完實驗后給出本實驗的實驗報告。
三、實驗設(shè)備、環(huán)境
安裝有Visual Studio.NET軟件。
四、實驗步驟
1、分析題意;
2、根據(jù)題目要求,新建項目;
3、編寫并輸入相關(guān)的程序代碼;
5、運行與調(diào)試項目;
6、保存項目。
五、實驗內(nèi)容
1、定義一個方法,實現(xiàn)兩個數(shù)的交換(分別把參數(shù)按值傳遞和按引用傳遞)。
using System;using System.Collections.Generic;using System.Text;
namespace second.one {
class Program
{
static void Main(string[] args)
{
Swaper s = new Swaper();
Console.WriteLine(“輸入x的值:”);
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(“輸入y的值:”);
int b=Convert.ToInt32(Console.ReadLine());
金陵科技學(xué)院實驗報告
Console.WriteLine(s.Swap(a, b));
Console.WriteLine(s.Swap(ref a,ref b));
}
class Swaper
{
public string Swap(int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
return 后:x={0},y={1}“,x,y);
}
public string Swap(ref int x, ref int y)
{
int temp;
temp = x;
x = y;
y = temp;
return string.Format(”按引用傳參交換之后:x={0},y={1}“, x, y);
}
}
} }
2、定義一個方法,實現(xiàn)數(shù)組的排序。using System;using System.Collections.Generic;using System.Text;
namespace second.two {
class Program
{
string.Format(”
按
值
傳
參
交
換
之
金陵科技學(xué)院實驗報告
public class sort
{
public void change(int[] a)
{
Console.WriteLine(“排序前,數(shù)組順序為:”);
show(a);
int i, j, m;
for(i = 0;i < 10;i++)
{
m = a[i];
j = ib;
}
}
static void Main(string[] args)
{
sum s = new sum();
int a = 10;
int b = 3;
int m, n;
s.ab(out m, out n, a, b);
Console.WriteLine(“{0}+{1}={2};{0}-{1}={3}”,a,b,m,n);
金陵科技學(xué)院實驗報告
}
} }
5、用構(gòu)造函數(shù)重載,實現(xiàn)矩形的面積,圓的面積,梯形的面積;
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace secong.five {
class Program
{
public class square
{
public double area;
public square(){ }
public square(double a)
{
area = a * a * 3.14;
}
public square(double a, double b)
{
area = a * b;
}
public square(double a, double b, double h)
{
area =(a + b)/ 2 * h;
}
}
static void Main(string[] args)
{
double a, b, h,area;
a = 2;b = 5;h = 3;
金陵科技學(xué)院實驗報告
square s = new square(a,b);
Console.WriteLine(“求矩形面積,長為a={0},寬為b={1},面積area={2}”,a,b,s.area);
square i = new square(a);
Console.WriteLine(“求圓形面積,半徑a={0},面積area={1}”, a, i.area);
square j = new square(a, b, h);
Console.WriteLine(“求梯形面積,上底為a={0},下底為b={1},高為h={2}面積area={3}”, a, b,h, j.area);
}
} }
6、設(shè)計一個windows應(yīng)用程序,在該程序中定義一個學(xué)生類和班級類,以處理每個學(xué)生的學(xué)號,姓名,語文,數(shù)學(xué)和英語成績,要求:
1)能查詢每個學(xué)生的總成績。2)能顯示全班前三名的名單。
3)能顯示單科成績最高分和不及格的學(xué)生名單。4)能統(tǒng)計全班學(xué)生的平均成績。
5)能顯示各科成績不同分數(shù)段的學(xué)生人數(shù)的百分比。
Student類: using System;using System.Collections.Generic;using System.Text;namespace Test2_6 {
public class Student
{
public string stuNo;
public string name;
public double chinese;
public double math;
public double english;
public double sumScore
{
金陵科技學(xué)院實驗報告
get { return chinese + math + english;}
}
} } StudentList類: using System;using System.Collections.Generic;using System.Text;namespace Test2_6 {
public class StudentList:Student
{
int snums;
public Student[] stu=new Student[50];
public StudentList()
{
snums = 0;
}
public void addstu(Student s)
{
stu[snums] = s;
snums++;
}
public int searchstu(string name)
{
int i;
for(i = 0;i < snums;i++)
{
if(stu[i].name == name)break;
}
if(i == snums)return-1;
else return i;
}
//給所有成績排序,用后面實現(xiàn)前三名的排名
金陵科技學(xué)院實驗報告
public void ProThree()
{
for(int i = 0;i < snums;i++)
{
int k = i;
for(int j = i + 1;j < snums;j++)
if(stu[j].sumScore > stu[k].sumScore)k = j;
if(k!= i)
{
Student temp;
temp = stu[k];
stu[k] = stu[i];
stu[i] = temp;
}
}
}
//顯示單科成績的最高分
public int HighScore(int k)
{
int p = 0;
if(k == 0)
{
for(int i = 1;i < snums;i++)
if(stu[i].math > stu[p].math)p = i;
}
else if(k == 1)
{
for(int i = 1;i < snums;i++)
if(stu[i].chinese > stu[p].chinese)p = i;
}
else
{
for(int i = 1;i < snums;i++)
if(stu[i].chinese > stu[p].chinese)p = i;
金陵科技學(xué)院實驗報告
}
return p;
}
//顯示不及格名單
public string BuhgName(int k)
{
string name=“ ”;
if(k == 0)
{
for(int i = 0;i < snums;i++)
if(stu[i].math < 60)name +=stu[i].name+“n”;
}
else if(k == 1)
{
for(int i = 0;i < snums;i++)
if(stu[i].chinese < 60)name += stu[i].name + “n”;
}
else
{
for(int i = 0;i < snums;i++)
if(stu[i].english < 60)name += stu[i].name + “n”;
}
return name;
}
public string getHL()
{
string Maxer = “ ”, Loser = “ ”;
Maxer += “單科數(shù)學(xué)最高:” + stu[HighScore(0)].name + “n”;
Maxer += “ 單科語文最高:” + stu[HighScore(1)].name + “n”;
Maxer += “ 單科英語最高:” + stu[HighScore(2)].name + “n”;
Loser += “單科數(shù)學(xué)掛科名單:” +BuhgName(0)+ “n”;
Loser += “單科語文掛科名單:” + BuhgName(1)+ “n”;
Loser += “單科英語掛科名單:” + BuhgName(2)+ “n”;
金陵科技學(xué)院實驗報告
return Maxer + “n” + Loser;
}
//全班的平均成績
public string SumScore()
{
double sum = 0;
double avg=0;
for(int i = 0;i < snums;i++)
{
sum = sum + stu[i].sumScore;
}
avg = sum / snums;
return “班級總分平均分:”+avg;
}
//各科成績不同分數(shù)段的學(xué)生百分比
//英語成績各分數(shù)段百分比
public string PerC()
{
double per1, per2, per3, per4, per5;
double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;
for(int i = 0;i < snums;i++)
{
if((stu[i].chinese > 90)&&(stu[i].chinese <= 100))
{
sumC1++;
}
else if((80 <= stu[i].chinese)&&(stu[i].chinese < 90))
{
sumC2++;
}
金陵科技學(xué)院實驗報告
else if((70<=stu[i].chinese)&&(stu[i].chinese < 80))
{
sumC3++;
}
else if((60<=stu[i].chinese)&&(stu[i].chinese < 70))
{
sumC4++;
}
else
{sumC5++;}
}
per1 = sumC1 / snums;
per2 = sumC2 / snums;
per3 = sumC3 / snums;
per4 = sumC4 / snums;
per5 = sumC5 / snums;
return “語文成績百分比:”+“n”+“90~100:”+per1+“ 80~90:”+per2+“ 80~70:”+per3+“ 70~60:”+per4+“ 60以下的:”+per5;
}
//數(shù)學(xué)成績各分數(shù)段百分比
public string PerM()
{
double per1, per2, per3, per4, per5;
double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;
for(int i = 0;i < snums;i++)
{
if((stu[i].math> 90)&&(stu[i].math <= 100))
{
sumC1++;
}
else if((80 <= stu[i].math)&&(stu[i].math < 90))
{
金陵科技學(xué)院實驗報告
sumC2++;
}
else if((70 <= stu[i].math)&&(stu[i].math < 80))
{
sumC3++;
}
else if((60 <= stu[i].math)&&(stu[i].math < 70))
{
sumC4++;
}
else
{ sumC5++;}
}
per1 = sumC1 / snums;
per2 = sumC2 / snums;
per3 = sumC3 / snums;
per4 = sumC4 / snums;
per5 = sumC5 / snums;
return string.Format(“數(shù)學(xué)成績百分比:” + “n” + “90~100:” + per1 + “ 80~90:” + per2 + “ 80~70:” + per3 + “ 70~60:” + per4 + “ 60以下的:” + per5);
}
//英語成績各分數(shù)段百分比
public string PerE()
{
double per1, per2, per3, per4, per5;
double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;
for(int i = 0;i < snums;i++)
{
if((stu[i].english > 90)&&(stu[i].english <= 100))
{
sumC1++;
金陵科技學(xué)院實驗報告
}
else if((80 <= stu[i].english)&&(stu[i].english < 90))
{
sumC2++;
}
else if((70 <= stu[i].english)&&(stu[i].english < 80))
{
sumC3++;
}
else if((60 <= stu[i].english)&&(stu[i].english < 70))
{
sumC4++;
}
else
{ sumC5++;}
}
per1 = sumC1 / snums;
per2 = sumC2 / snums;
per3 = sumC3 / snums;
per4 = sumC4 / snums;
per5 = sumC5 / snums;
return string.Format(“數(shù)學(xué)成績百分比:” + “n” + “90~100:” + per1 + “ 80~90:” + per2 + “ 80~70:” + per3 + “ 70~60:” + per4 + “ 60以下的:” + per5);
}
} } From窗體代碼: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;
金陵科技學(xué)院實驗報告
using System.Windows.Forms;namespace Test2_6 {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public StudentList sl = new StudentList();
private void btnAdd_Click(object sender, EventArgs e)
{
Student s = new Student();
s.stuNo = txtStuNo.Text;
s.name = txtName.Text;
s.chinese = Convert.ToDouble(txtChina.Text);
s.math = Convert.ToDouble(txtMath.Text);
s.english = Convert.ToDouble(txtEng.Text);
sl.addstu(s);
MessageBox.Show(“添加成功”);
}
private void btnSearch_Click(object sender, EventArgs e)
{
int pos = sl.searchstu(this.textBox1.Text);
if(pos!=-1)
{
label7.Text = this.textBox1.Text + “的總成績:sl.stu[pos].sumScore;
}
else { MessageBox.Show(”不存在這個人!“);}
}
private void btnFinish_Click(object sender, EventArgs e)
{
label7.Text = ”前3名:“+”n“;
” + 金陵科技學(xué)院實驗報告
for(int i = 0;i < 3;i++)
{
sl.ProThree();
label7.Text+= sl.stu[i].name+“n”;
}
label7.Text += sl.getHL()+“n”;
label7.Text += Convert.ToString(sl.SumScore())+“n”;
label7.Text += sl.PerC()+“n”;
label7.Text += sl.PerM()+“n”;
label7.Text += sl.PerE()+“n”;
}
} }
六、實驗體會(遇到問題及解決辦法,編程后的心得體會)
通過本次實驗,我掌握了類的定義與使用;掌握了類的數(shù)據(jù)成員,屬性的定義和使用;掌握了方法的定義,調(diào)用和重載以及方法參數(shù)的傳遞以及構(gòu)造函數(shù)的定義和使用。值得注意的是:本次實驗中return的使用以及所在的位置,類型轉(zhuǎn)換時也經(jīng)常用到
金陵科技學(xué)院實驗報告
實驗項目名稱: 繼承與多態(tài) 實驗學(xué)時: 6 同組學(xué)生姓名: 實驗地點: 1318 實驗日期: 11月16日-11月30日 實驗成績: 批改教師: 批改時間:
金陵科技學(xué)院實驗報告
實驗3 繼承與多態(tài)
一、實驗?zāi)康?、要?/p>
(1)掌握類的繼承性與多態(tài)性;
(2)掌握虛方法的定義以及如何使用虛方法實現(xiàn)多態(tài);(3)掌握抽象類的定義以及如何使用抽象方法實現(xiàn)多態(tài);
二、實驗要求
(1)編寫程序要規(guī)范、正確,上機調(diào)試過程和結(jié)果要有記錄;(2)做完實驗后給出本實驗的實驗報告。
三、實驗設(shè)備、環(huán)境
安裝有Visual Studio.NET軟件。
四、實驗步驟
1、分析題意;
2、根據(jù)題目要求,新建項目;
3、編寫并輸入相關(guān)的程序代碼;
5、運行與調(diào)試項目;
6、保存項目。
五、實驗內(nèi)容
1、設(shè)計一個Windows應(yīng)用程序,在該程序中首先構(gòu)造一個學(xué)生基本類,再分別構(gòu)造小學(xué)生、中學(xué)生、大學(xué)生派生類,當輸入相關(guān)數(shù)據(jù),單擊不用的按鈕時,將分別創(chuàng)建不同的學(xué)生類對象,并輸出當前學(xué)生的總?cè)藬?shù),該學(xué)生的姓名,學(xué)生類型,平均成績。
Student類: using System;using System.Collections.Generic;using System.Text;namespace Test3_1 {
public abstract class Student
{
protected string name;
protected int age;
public static int number;
public Student(string name, int age)
{
this.name = name;
this.age = age;
金陵科技學(xué)院實驗報告
number++;
}
public string Name
{
get { return name;}
}
public abstract double Average();
}
public class Pupil : Student
{
protected double chinese;
protected double math;
public Pupil(string name, int age, double chinese, double math)
: base(name, age)
{
this.chinese = chinese;
this.math = math;
}
public override double Average()
{
return(chinese + math)/ 2;
}
}
public class Middle : Student
{
protected double chinese;
protected double math;
protected double english;
public Middle(string name, int age, double chinese, double math, double english)
: base(name, age)
{
this.chinese = chinese;
this.math = math;
金陵科技學(xué)院實驗報告
this.english = english;
}
public override double Average()
{
return(chinese + math + english)/ 3;
}
}
public class College : Student
{
protected double required;
protected double elective;
public College(string name, int age, double required, double elective)
: base(name, age)
{
this.required = required;
this.elective = elective;
}
public override double Average()
{
return(required + elective)/ 2;
}
} } Form窗體內(nèi)的代碼:
using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Test3_1 {
public partial class Form1 : Form
{
金陵科技學(xué)院實驗報告
public Form1()
{
InitializeComponent();
}
private void btnSmall_Click(object sender, EventArgs e)
{
Pupil),Convert.ToDouble(txtMath.Text));
lblShow.Text += “總?cè)藬?shù):” +Convert.ToString(Student.number)+ “,” + “姓名:” + p.Name + “,” + “小學(xué)生” + “,” + “平均成績?yōu)椋骸?+ p.Average()+“n”;
}
private void btnMiddle_Click(object sender, EventArgs e)
{
Middle Convert.ToInt32(txtAge.Text),m
=
new
Middle(txtName.Text,Convert.ToDouble(txtChinese.Text), p
=
new Pupil(txtName.Text,Convert.ToInt32(txtAge.Text),Convert.ToDouble(txtChinese.TextConvert.ToDouble(txtMath.Text),Convert.ToDouble(TxtEnglish.Text));
lblShow.Text += “總?cè)藬?shù):” + Convert.ToString(Student.number)+ “,” + “姓名:” + m.Name + “,” + “中學(xué)生” + “,” + “平均成績?yōu)椋骸?+ m.Average()+ “n”;
}
private void btnBig_Click(object sender, EventArgs e)
{
College Convert.ToInt32(txtAge.Text), Convert.ToDouble(txtMath.Text));
lblShow.Text += “總?cè)藬?shù):” + Convert.ToString(Student.number)+ “,” + “姓名:” + c.Name + “,” + “大學(xué)生” + “,” + “平均成績?yōu)椋骸?+ c.Average()+ “n”;
}
}
c
=
new
College(txtName.Text,Convert.ToDouble(txtChinese.Text),金陵科技學(xué)院實驗報告
}
2、設(shè)計一個Windows應(yīng)用程序,在該程序中定義平面圖形抽象類和派生類圓,矩形和三角形。
Figure類代碼: using System;using System.Collections.Generic;using System.Text;namespace Test3_2 {
public abstract class Figure
{
public abstract double Area();
}
public class Circle:Figure
{
double radius;
public Circle(double r)
{
radius = r;
}
public override double Area()
{
return radius * radius * 3.14;
}
}
public class JUxing:Figure
{
double chang;
double kuan;
public JUxing(double c, double k)
{
this.chang = c;
this.kuan = k;
}
金陵科技學(xué)院實驗報告
public override double Area()
{
return chang * kuan;
}
}
public class San:Figure
{
double bian;
double heigth;
public San(double b, double h)
{
this.bian = b;
this.heigth = h;
}
public override double Area()
{
return bian * heigth / 2;
}
} } Form窗體代碼: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Test3_2 {
public partial class Form1 : Form
{
public Form1()
{
金陵科技學(xué)院實驗報告
InitializeComponent();
}
private void btnCircle_Click(object sender, EventArgs e)
{
Circle c=new Circle(Convert.ToInt32(TxtChang.Text));
lblShow.Text = “圓的面積為:” + c.Area();
}
private void btnJu_Click(object sender, EventArgs e)
{
JUxing
j
=
new JUxing(Convert.ToInt32(TxtChang.Text),Convert.ToInt32(TxtHigh.Text));
lblShow.Text = “矩形的面積為:” + j.Area();
}
private void btnSan_Click(object sender, EventArgs e)
{
San
s
=
new
San(Convert.ToInt32(TxtChang.Text), Convert.ToInt32(TxtHigh.Text));
lblShow.Text = “三角形的面積為:” + s.Area();
}
} }
3、定義一個Person類,包含姓名字段和一個方法,早上8:30學(xué)生開始上課,教師開始講課。分別用new關(guān)鍵字,虛方法,抽象類實現(xiàn)多態(tài)性。
New關(guān)鍵字: using System;using System.Collections.Generic;using System.Text;
namespace third.three {
class Program
{
static void Main(string[] args)
金陵科技學(xué)院實驗報告
{
Student s=new Student(“學(xué)生”);
Teacher t=new Teacher(“教師”);
Console.WriteLine(s.name+s.work());
Console.WriteLine(t.name+t.work());
Console.ReadLine();
}
}
public class Person
{
public string name;
public interface method
{ string work();}
}
public class Student:Person
{
public Student(string name)
{ this.name = name;}
public string work()
{ return “早上8:30開始上課”;}
}
public class Teacher:Person
{
public Teacher(string name)
{ this.name = name;}
public string work()
{ return “開始講課”;}
} } 虛方法: using System;using System.Collections.Generic;using System.Text;
金陵科技學(xué)院實驗報告
namespace third.three.two {
class Program
{
static void Main(string[] args)
{
Student s = new Student(“張三”,“學(xué)生”);
PersonWork(s);
Teacher t=new Teacher(“李斯”,“教師”);
PersonWork(t);
}
private static void PersonWork(Person Person)
{ Console.WriteLine(Person.Work());}
}
public class Person
{
public string name;
public Person(string name)
{ this.name = name;}
public virtual string Work()
{ return string.Format(“Person{0}:早上8:30開始”,name);}
}
public class Student : Person
{
private string type;
public Student(string name, string type)
: base(name)
{ this.type = type;}
public override string Work()
{
return string.Format(“Person{0}:早上8:30開始上課”, name);
}
}
public class Teacher : Person
金陵科技學(xué)院實驗報告
{
private string type;
public Teacher(string name, string type)
: base(name)
{ this.type = type;}
public override string Work()
{
return string.Format(“Person{0}:開始講課”, name);
}
} }
抽象類: using System;using System.Collections.Generic;using System.Text;
namespace third.three.three {
class Program
{
static void Main(string[] args)
{
Student s = new Student(“張三”, “學(xué)生”);
PersonWork(s);
Teacher t = new Teacher(“李斯”, “教師”);
PersonWork(t);
}
private static void PersonWork(Person person)
{
Console.WriteLine(person.Work());
}
}
public abstract class Person
金陵科技學(xué)院實驗報告
{
public string name;
public Person(string name)
{ this.name = name;}
public abstract string Work();
}
public class Student : Person
{
private string type;
public Student(string name, string type)
: base(name)
{
this.type = type;
}
public override string Work()
{
return string.Format(“Person{0}:早上8:30開始上課”, name);
}
}
public class Teacher : Person
{
private string type;
public Teacher(string name, string type)
: base(name)
{
this.type = type;
}
public override string Work()
{
return string.Format(“Person{0}:開始講課”, name);
}
} }
金陵科技學(xué)院實驗報告
六、實驗體會(遇到問題及解決辦法,編程后的心得體會)
通過本次實驗,我理解了類的繼承性與多態(tài)性;掌握了虛方法的定義以及如何用虛方法來實現(xiàn)多態(tài);掌握了抽象類的定義以及如何用抽象方法來實現(xiàn)多態(tài)。這次實驗與前兩次不同,采用Windows應(yīng)用程序,既涉及到代碼段也涉及到界面的設(shè)計。所以,勉強通過實驗。
金陵科技學(xué)院實驗報告
實驗項目名稱: 接口、文件和流 實驗學(xué)時: 6 同組學(xué)生姓名: 實驗地點: A205 實驗日期: 12月7日-12月21日 實驗成績: 批改教師: 批改時間:
金陵科技學(xué)院實驗報告
實驗4 接口、文件和流
一、實驗?zāi)康?/p>
(1)掌握接口的定義及使用方法;
(2)掌握流,序列化和反序列化的概念和使用方法;(3)掌握流文件的讀寫操作類及其使用方法;
(4)掌握OpenFileDialog,SaveFileDialog等控件的使用。
二、實驗要求
(1)編寫程序要規(guī)范、正確,上機調(diào)試過程和結(jié)果要有記錄;(2)做完實驗后給出本實驗的實驗報告。
三、實驗設(shè)備、環(huán)境
安裝有Visual Studio.NET軟件。
四、實驗步驟
1、分析題意;
2、根據(jù)題目要求,新建項目;
3、編寫并輸入相關(guān)的程序代碼;
5、運行與調(diào)試項目;
6、保存項目。
五、實驗內(nèi)容
1、定義一個Person類,包含姓名字段和一個方法,早上8:30學(xué)生開始上課,教師開始講課。用接口來實現(xiàn)。
using System;using System.Collections.Generic;using System.Text;namespace Test4_1 {
class Program
{
static void Main(string[] args)
{
Student s = new Student(“張三”,“學(xué)生”);
Console.WriteLine(s.Work());
Teacher t = new Teacher(“李四”,“老師”);
Console.WriteLine(t.Work());
}
金陵科技學(xué)院實驗報告
public abstract class Person
{
public string name;
public Person(string name)
{
this.name = name;
}
}
interface IPerson
{
string type { get;}
string Work();
}
public class Student :Person, IPerson
{
public string type
{
get { return string.Format(“老師”);}
}
public Student(string name, string type)
: base(name)
{
this.name=name;
}
public string Work()
{
return string.Format(“Person{0}:早上8:30開始上課”, name);
}
}
public class Teacher :Person, IPerson
{
public string type
{
金陵科技學(xué)院實驗報告
get { return string.Format(“學(xué)生”);}
}
public Teacher(string name, string type)
: base(name)
{
this.name = name;
}
public string Work()
{
return string.Format(“Person{0}:早上8:30開始講課”, name);
}
}
} }
2、聲明一個接口Iplayer,包含5個接口方法:播放,停止,暫停,上一首和下一首。在該程序中定義一個MP3播放器類和一個AVI播放器類,以實現(xiàn)該接口。
MP3類(包含Iplayer接口,AVI類): using System;using System.Collections.Generic;using System.Text;namespace Test4_2 {
interface IPlayer
{
string Play();
string Stop();
string Pause();
string Pre();
string Next();
}
public class MP3:IPlayer
{
public string Play()
金陵科技學(xué)院實驗報告
{
return “正在播放MP3歌曲!”;
}
public string Stop()
{
return “停止播放MP3歌曲!”;
}
public string Pause()
{
return “暫停播放MP3歌曲!”;
}
public string Pre()
{
return “播放上一首MP3歌曲!”;
}
public string Next()
{
return “播放下一首MP3歌曲!”;
}
}
public class AVI : IPlayer
{
public string Play()
{
return “正在播放AVI歌曲!”;
}
public string Stop()
{
return “停止播放AVI歌曲!”;
}
public string Pause()
{
return “暫停播放AVI歌曲!”;
}
金陵科技學(xué)院實驗報告
public string Pre()
{
return “播放上一首AVI歌曲!”;
}
public string Next()
{
return “播放下一首AVI歌曲!”;
}
} } Form窗體里代碼: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Test4_2 {
public partial class Form1 : Form
{
IPlayer iplayer;
MP3 mp3;
AVI avi;
public Form1()
{
InitializeComponent();
}
private void btnMp3_Click(object sender, EventArgs e)
{
mp3 = new MP3();
iplayer =(IPlayer)mp3;
}
金陵科技學(xué)院實驗報告
private void btnPlay_Click(object sender, EventArgs e)
{
label1.Text = iplayer.Play();
}
private void btnUp_Click(object sender, EventArgs e)
{
label1.Text = iplayer.Pre();
}
private void btnStop_Click(object sender, EventArgs e)
{
label1.Text = iplayer.Stop();
}
private void btnPause_Click(object sender, EventArgs e)
{
label1.Text = iplayer.Pause();
}
private void btnNext_Click(object sender, EventArgs e)
{
label1.Text = iplayer.Next();
}
private void btnAvi_Click(object sender, EventArgs e)
{
avi = new AVI();
iplayer =(IPlayer)avi;
}
} }
3、實現(xiàn)對文本文件的讀寫操作,用文件操作控件打開和保存文件。
using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;namespace Test4_3
金陵科技學(xué)院實驗報告
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSave_Click(object sender, EventArgs e)
{
saveFileDialog1.ShowDialog();
StreamWriter
sw = StreamWriter(saveFileDialog1.FileName,true);
sw.WriteLine(DateTime.Now.ToString());
sw.WriteLine(txtSource.Text);
sw.Close();
}
private void btnShow_Click(object sender, EventArgs e)
{
StreamReader sr = StreamReader(saveFileDialog1.FileName);
txtShow.Text = sr.ReadToEnd();
sr.Close();
}
} }
4、實現(xiàn)對二進制文件的讀寫操作。
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;
new
new
金陵科技學(xué)院實驗報告
namespace Test4_4 {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSave_Click(object sender, EventArgs e)
{
FileStream
fs
= FileStream(@“d:Datastudent.dat”,FileMode.Append,FileAccess.Write);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(Int32.Parse(txtStuNo.Text));
bw.Write(TxtName.Text);
bool isMale;
if(rdoMan.Checked)
isMale = true;
else
isMale = false;
bw.Write(isMale);
fs.Close();
bw.Close();
}
private void btnShow_Click(object sender, EventArgs e)
{
lstShow.Items.Clear();
lstShow.Items.Add(“學(xué)號t姓名t性別”);
FileStream
fs
= FileStream(@“d:Datastudent.dat”,FileMode.Open,FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
fs.Position = 0;
while(fs.Position!= fs.Length)
{
new
new
金陵科技學(xué)院實驗報告
int s_no = br.ReadInt32();
string name = br.ReadString();
string sex = “";
if(br.ReadBoolean())
sex = ”男“;
else
sex = ”女“;
string
result String.Format(”{0}t{1}t{2}“,s_no,name,sex);
lstShow.Items.Add(result);
}
br.Close();
fs.Close();
}
} }
5、實現(xiàn)對象序列化和反序化。
Student類: using System;using System.Collections.Generic;using System.Text;namespace Test4_5 {
[Serializable]
public class Student
{
public int sno;
public string name;
public bool sex;
public Student(int s_no, string name, bool isMale)
{
this.sno = s_no;
this.name = name;
this.sex = isMale;
=
金陵科技學(xué)院實驗報告
}
} } StudentList類: using System;using System.Collections.Generic;using System.Text;namespace Test4_5 {
[Serializable]
public class StudentList
{
private Student[] list = new Student[100];
public Student this[int index]
{
get
{
if(index < 0 || index >= 100)
return list[0];
else
return list[index];
}
set
{
if(!(index < 0 || index >=100))
list[index] = value;
}
}
} } Form下的代碼: using System;using System.Collections.Generic;using System.ComponentModel;
金陵科技學(xué)院實驗報告
using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;using System.Runtime.Serialization.Formatters.Binary;namespace Test4_5 {
public partial class Test9_32 : Form
{
private StudentList list = new StudentList();
private int i = 0;
public Test9_32()
{
InitializeComponent();
}
private void Test9_32_Load(object sender, EventArgs e)
{
}
private void btnSave_Click(object sender, EventArgs e)
{
string file = @”d:datastudent.dat";
Stream
stream
= FileStream(file,FileMode.OpenOrCreate,FileAccess.Write);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(stream,list);
stream.Close();
}
private void btnAdd_Click(object sender, EventArgs e)
{
int sno = Int32.Parse(txtStuNo.Text);
bool isMale;
if(rdoMan.Checked)
isMale = true;
new
第三篇:程序設(shè)計課程教學(xué)方法的探討和實踐
程序設(shè)計課程教學(xué)方法的探討和實踐
高等學(xué)校的根本任務(wù)是培養(yǎng)人才,人才培養(yǎng)是辦學(xué)的核心問題。在高等教育大眾化、國際化的趨勢中,高等學(xué)校辦學(xué)的競爭日益加劇。教學(xué)質(zhì)量將決定著一所學(xué)校的生存和發(fā)展。因此,教學(xué)質(zhì)量是教育者、管理者不可不思、不可不謀、不可不為的重要任務(wù)。
隨著經(jīng)濟的發(fā)展和科技的進步,對人才素質(zhì)提出了更高的要求,在人才培養(yǎng)上,各高校都在夯實基礎(chǔ)的同時重視能力的培養(yǎng),開始實施理論教學(xué)和實踐的配套改革,進一步加強實踐教學(xué),加強學(xué)生實踐能力、創(chuàng)新能力的培養(yǎng)。但是,對不同層次的高校而言,教育培養(yǎng)的對象雖然都是大學(xué)生,但各校均有自己的特性,在教學(xué)方法上,有其共性,也具有特殊性,互相之間,只能借鑒,不能照搬,而需要根據(jù)自己的情況來制定切合實際的教學(xué)方法。本文是以某高校計算機專業(yè)的“程序設(shè)計”課程為對象,探討教學(xué)方法的改進和實踐。
科學(xué)的教學(xué)方法是通向成功的橋梁。古人曰:“授之以魚,供一飯之需;教之以漁,終身受用不盡?!笔谥苑椒?培養(yǎng)學(xué)生的自學(xué)能力,是實現(xiàn)“教是為了不教”的正確途徑。教學(xué)方法的改進,首先要改傳統(tǒng)的單純灌輸式教學(xué)法為啟發(fā)式和探究式的教學(xué)法,教師提出問題,激發(fā)學(xué)生積極思維,主動思考,發(fā)現(xiàn)未知,發(fā)展智力,達到由此及彼、由表及里、聞一知
十、舉一反三的目的。教師不僅要注意培養(yǎng)學(xué)生的“智商”,更要發(fā)展學(xué)生的“情商”,即非智力因素,充分調(diào)動學(xué)生學(xué)習(xí)的需要、興趣、動機,引導(dǎo)學(xué)生進行科學(xué)的思維,包括形式邏輯思維、形象思維、靈感思維等,以培養(yǎng)學(xué)生獨立思考問題、提出問題和解決問題的能力,即所謂“既要授之以魚,更要授之以漁”。教師可以假設(shè)一種以案例和問題為核心的情景和背景,激發(fā)學(xué)生探究問題的興趣,通過選擇與確定問題,討論與提出設(shè)想,實踐與尋求結(jié)果,驗證與得出結(jié)論,培養(yǎng)學(xué)生獨立思考能力、研究能力和創(chuàng)新能力,形成一種討論式、開放式的現(xiàn)代教學(xué)方法,這就體現(xiàn)了大學(xué)教學(xué)的創(chuàng)新精神和平等合作精神,這種方法稱為程序案例教學(xué)法或程序驅(qū)動教學(xué)法。這種方法要求教師精心備課,根據(jù)學(xué)生的知識水平和能力,創(chuàng)設(shè)實用的程序案例,引導(dǎo)過程中的問題情境,幫助學(xué)生激發(fā)創(chuàng)新意識,促進學(xué)生質(zhì)疑,培養(yǎng)學(xué)習(xí)興趣。在課堂上,要努力營造民主、寬松、和諧的學(xué)習(xí)環(huán)境。
現(xiàn)今普遍的程序設(shè)計教學(xué)方法都是從語法入手,詳細地講解各種編程語言的語法,而涉及的程序案例卻很少,雖然有一些例題,但很簡單,距離解決實際問題的復(fù)雜度相差甚遠,學(xué)生在學(xué)習(xí)之后,常常缺乏動手能力和解決問題的能力,無法構(gòu)建程序設(shè)計的思維,而且機械式的記憶語法規(guī)則往往是枯燥無味的,很難激發(fā)學(xué)習(xí)的興趣。以“C++程序設(shè)計”為例,針對各種語法規(guī)則,創(chuàng)建16個實用的程序案例:1)庫存清單應(yīng)用程序(變量,輸入);2)工資計算應(yīng)用程序(算法,偽代碼);3)牙科付費應(yīng)用程序(邏輯運算符,字符串);4)購車還貸應(yīng)用程序(WHILE循環(huán)語句);5)計算班級平均成績應(yīng)用程序(標記控制循環(huán));6)利息計算應(yīng)用程序(FOR循環(huán)語句和數(shù)學(xué)函數(shù));7)計算個人所得稅應(yīng)用程序(多分支選擇語句SWITCH);8)捐款管理應(yīng)用程序(作用域與函數(shù)原型);9)游戲應(yīng)用程序(生成隨機數(shù)和枚舉);10)薪金統(tǒng)計應(yīng)用程序(一維數(shù)組);11)學(xué)生成績統(tǒng)計應(yīng)用程序(二維數(shù)組);12)數(shù)字時鐘應(yīng)用程序(自定義類和對象);13)購物清單管理應(yīng)用程序(指針,引用及動態(tài)數(shù)據(jù)結(jié)構(gòu));14)工資表應(yīng)用程序(繼承與多態(tài)性);15)便箋信息應(yīng)用程序(順序訪問文件);16)屏幕抓取應(yīng)用程序(字符串處理)。
首先教師給出程序案例的框架結(jié)構(gòu),學(xué)生經(jīng)過思考,選擇合適的算法和指令語句,經(jīng)互相討論,完善和豐富程序案例,然后上機調(diào)試,通過運行來檢驗結(jié)果。程序案例的教學(xué)法是從興趣入手,首先給人們編程的樂趣,繼而帶領(lǐng)學(xué)生進入程序的天地,提高探索的欲望,使學(xué)習(xí)編程變得生動而有趣。經(jīng)過對計算機科學(xué)專業(yè)198名學(xué)生的問卷調(diào)查表明,其中194人贊成這種教學(xué)方法,在反饋的意見中,認為這種方法效果很好,能夠很容易接受。在教學(xué)過程中既學(xué)到應(yīng)得的知識,又感受到編程的快樂;既感受到成功的喜悅,又得到探索的樂趣??己说某煽儽砻?85%的學(xué)生達到預(yù)期的效果,其中有20%的學(xué)生達到優(yōu)秀的水平,雖然,教學(xué)實踐取得明顯的效果,但仍有15%的學(xué)生尋求適合的解決方法。尚未達到預(yù)期的效果,這表明仍有一些問題尚待解決,今后將進一步研究不足之處。
(作者單位:山東省濰坊科技學(xué)院)
第四篇:C#程序設(shè)計案例評語
C#程序設(shè)計案例評語:
優(yōu)秀:該生在課程實習(xí)過程中,能夠按照實習(xí)任務(wù)書的要求,完整的開發(fā)記事本及計算器程序,設(shè)計過程中能主動查閱資料,獨立完成程序開發(fā),軟件設(shè)計界面良好,功能完整,實習(xí)報告內(nèi)容詳細。實習(xí)過程中表現(xiàn)突出。
良好:該生在課程實習(xí)過程中,能夠按照實習(xí)任務(wù)書的要求,完整的開發(fā)記事本及計算器程序,設(shè)計過程中能獨立完成程序開發(fā),軟件設(shè)計界面良好,功能完整,實習(xí)報告內(nèi)容詳細。實習(xí)過程中表現(xiàn)良好。
中等:該生在課程實習(xí)過程中,能夠按照實習(xí)任務(wù)書的要求,比較完整的開發(fā)記事本及計算器程序,設(shè)計過程中能在老師的指導(dǎo)下完成程序開發(fā),功能完整,實習(xí)報告內(nèi)容完整。實習(xí)過程中表現(xiàn)一般。
及格:該生在課程實習(xí)過程中,基本能夠按照實習(xí)任務(wù)書的要求,比較完整的開發(fā)記事本及計算器程序,設(shè)計過程中能在老師和同學(xué)的指導(dǎo)下完成程序開發(fā),功能基本完整,實習(xí)報告內(nèi)容完整。實習(xí)過程中表現(xiàn)一般。
第五篇:淺談中職學(xué)校計算機程序設(shè)計課程教學(xué)方法探討
淺談中職學(xué)校計算機程序設(shè)計課程教學(xué)
方法探討
〔論文關(guān)鍵詞」中職學(xué)校 計算機 程序設(shè)計 教學(xué)方法
〔論文摘要」計算機程序設(shè)計課程是中職學(xué)校計算機專業(yè)的主要課程之一,曾受到各中職學(xué)校的高度重視。但程序設(shè)計課程教學(xué)設(shè)計、教學(xué)目標及教學(xué)方法遠遠跟不上形勢,怎樣調(diào)動中職學(xué)生對程序設(shè)計語言的學(xué)習(xí)興趣與提高他們的學(xué)習(xí)效率成為中職計算機教師們的共同關(guān)注的焦點。
程序設(shè)計課程作為計算機專業(yè)的一門基礎(chǔ)課程,它有利于提高學(xué)生的思維能力,對學(xué)生深人學(xué)習(xí)計算機專業(yè)知識有很大的幫助。其目的就是通過學(xué)習(xí)程序設(shè)計語言的基本思想、語法知識和編程方法,提高學(xué)生的程序設(shè)計能力、分析解決實際問題的能力,并培養(yǎng)形成嚴密的邏輯思維能力。那么如何根據(jù)社會經(jīng)濟發(fā)展變化,對程序設(shè)計語言課程的教學(xué)內(nèi)容、教學(xué)方法、考核方式進行相應(yīng)的改革,實現(xiàn)培養(yǎng)高等技術(shù)應(yīng)用型和高技能型計算機人才目標,已經(jīng)成為廣大中職教師普遍關(guān)注和重點研究的課題。
1程序設(shè)計語言教學(xué)中存在的問題
1.1教學(xué)課時少
目前我校計算機專業(yè)的學(xué)制2+1的模式,學(xué)校開設(shè)的程序設(shè)計語言課程的課時(包括理論課時和實踐課時)較少,這就導(dǎo)致實際教學(xué)中存在理論課時和實踐課時不夠的情況,學(xué)生只能掌握最基礎(chǔ)的程序設(shè)計知識,理解書本上現(xiàn)有的一些設(shè)計實例,而不能用該程序設(shè)計語言進行實際問題的處理。
1.2學(xué)生基礎(chǔ)參差不齊,學(xué)習(xí)程序設(shè)計的信心、興趣不足
因為學(xué)習(xí)程序設(shè)計需要較強的邏輯思維能力和較扎實的數(shù)學(xué)功底,而中職學(xué)校的學(xué)生普遍數(shù)學(xué)基礎(chǔ)較薄弱,導(dǎo)致在學(xué)習(xí)程序設(shè)計時顯得力不從心。由于缺乏對計算機本身解題的認識和了解,有些基礎(chǔ)較差的學(xué)生還對計算機程序產(chǎn)生一種莫名其妙的神秘感和畏懼感,人為的給自己學(xué)習(xí)程序設(shè)計語言設(shè)置了一道門檻。學(xué)生對程序設(shè)計課程的學(xué)習(xí)興趣不高,課堂教學(xué)中反常行為較多,如卜課睡覺、講話、玩手機、不配合老師、不交作業(yè)等。學(xué)生普遍反映難學(xué),提不起學(xué)習(xí)興趣,感覺學(xué)不到知識或?qū)W的知識沒用。
1.3學(xué)校對程序課程的重視程度不高
計算機程序設(shè)計課程注重對學(xué)生的思維能力的訓(xùn)練,這與圖像處理,動畫設(shè)計等培養(yǎng)學(xué)生動手能力的課程不同,不能立竿見影的看到學(xué)生的學(xué)習(xí)成果。這就導(dǎo)致一些領(lǐng)導(dǎo)對這門課程不夠重視,從而使部分教師對這類課程的教學(xué)參與興趣不濃厚,甚至有些學(xué)校以取消了程序設(shè)計語言的課程設(shè)置。
1.4教學(xué)方法落后
中職程序設(shè)計語言課程一般采用的教學(xué)方法是教師課上講授加學(xué)生實驗的形式,學(xué)生在上機實驗時僅僅是對書本上現(xiàn)有的一些實例進行編輯調(diào)試,一旦調(diào)試成功就完成任務(wù)。這種教學(xué)方法實際上只是讓學(xué)生掌握了一些程序設(shè)計的語法知識和調(diào)試技巧,而達不到培養(yǎng)學(xué)生利用該程序設(shè)計語言從一個實際問題人手分析問題、解決問題的能力。
1.5考核方式較簡單不能全面檢驗學(xué)生的學(xué)習(xí)效果
目前的考試方式以試卷為主,無法全面檢驗學(xué)生的學(xué)習(xí)效果,對學(xué)生的實踐能力考查無法體現(xiàn)學(xué)生的真正學(xué)習(xí)效果。
2間題分析
是什么原因造成了以上這些問題那?隨著高中教育不斷普及,中職生源及綜合素質(zhì)急劇下降。普遍特點是他們基礎(chǔ)薄弱,尤其數(shù)學(xué)和英語,這是學(xué)好程序設(shè)計的最大障礙。教材不能適應(yīng)中職教學(xué)的要求?,F(xiàn)今中職程序設(shè)計語言教材存在的普遍問題是實踐性教學(xué)和實訓(xùn)內(nèi)容不足,沒有體現(xiàn)教材的實用性和職業(yè)性,不能保證對學(xué)生實踐能力的培養(yǎng),不能體現(xiàn)技術(shù)應(yīng)用型人才的培養(yǎng)要求,缺少中職教育特色。面對這些問題,我們不能望而卻步,一味地去埋怨是起不到效果的,要真正想解決問題,最好就要去不斷地摸索,尋找解決問題的突破點,探索適合學(xué)生發(fā)展的教學(xué)方法和教學(xué)內(nèi)容,以充分調(diào)動他們的學(xué)生積極性和主觀能動性。3解決間題的關(guān)鍵在于教育方法的創(chuàng)新
古人云:“知之者不如好之者,好之者不如樂之者?!迸d趣對學(xué)生的學(xué)習(xí)有著神奇的內(nèi)驅(qū)動作用,能變無效為有效,化低效為高效。充分激發(fā)學(xué)生的學(xué)習(xí)興趣是當前開展素質(zhì)教育,優(yōu)化課堂教學(xué),減負提質(zhì)的最根本、最有效的途徑之一。興趣的產(chǎn)生來源于興趣源,興趣源必須由教師來創(chuàng)造,并貫穿于教師授課全過程的各個環(huán)節(jié)中。針對程序設(shè)計這門課程的特點教師可采用以下一些方法提高學(xué)生的對本課程的興趣。
(1)基于問題的教學(xué)。提出問題,以學(xué)生獨立完成為主,教師只提供必要的輔導(dǎo),培養(yǎng)學(xué)生探索問題和解決問題的能力,更有利于創(chuàng)新能力的培養(yǎng)。
(2)“項目驅(qū)動”教學(xué)。在理論教學(xué)中采用“項目驅(qū)動”教學(xué)法,整個課程教學(xué)圍繞一個“工程項目”進行,通過逐步拓展的實訓(xùn)項目和設(shè)計,將每一階段的學(xué)習(xí)進行小結(jié)性的貫穿與能力提高,將知識點都溶化到一個個實訓(xùn)項目的程序編寫中。
(3)討論教學(xué)法。在教學(xué)過程中,充分發(fā)揮學(xué)生的積極性與主動性是非常重要的一環(huán)。程序設(shè)計有一個最大的特點,一題多解。針對這個特點,教師在習(xí)題課的教學(xué)中,可以采用討論式教學(xué)方法。在此過程中,學(xué)生們通過提問、答辯、論證、反駁、判斷等激烈的討論,互相啟發(fā)、相互協(xié)作去分析問題、發(fā)現(xiàn)問題、解決問題,總結(jié)經(jīng)驗。不僅可以讓學(xué)生獲得課外的知識,同時也利于充分挖掘?qū)W生的學(xué)習(xí)潛力。
(4)歸納教學(xué)法編程語言有很多的定義、概念、語法規(guī)則,它們使用靈活、難以記憶,也特別容易出錯。如果能夠引導(dǎo)學(xué)生進行歸納,將會起到事半功倍的效果。編程語言的定義、概念、語法規(guī)則有許多相似的地方,例如:FOR ??TO??與DO??W HILE等命令,有很多語法規(guī)則是一樣的,對它們進行歸納之后,學(xué)生只要記住其中一個,另一個自然就會使用了。
(5)分組教學(xué)法。注重培養(yǎng)團隊精神,以“競”求進上機編程實踐是學(xué)好程序設(shè)計語言的關(guān)鍵。但上機實踐過程中如果“各自為戰(zhàn)”,或在教師的統(tǒng)一“指揮”下以完成不同題型的任務(wù)為實踐內(nèi)容,對于中職學(xué)生而言很容易失去上機興趣,也很難達到上機實踐之目的。因此,不妨針對中職學(xué)生的特點,適當轉(zhuǎn)變上機實踐的形式。以組建團隊的形式上機實踐,事前分配給每個學(xué)習(xí)小組不同的實踐任務(wù)。組長負責本組學(xué)生利用課余時間去思考、收集資料,上機時各組先分別完成相應(yīng)任務(wù),然后相互演示成果,評判優(yōu)劣,最后再進行任務(wù)交換,討論編程心得。在此過程中教師主要充當協(xié)調(diào)者的角色,對確有疑難的地方可適當加以指導(dǎo),主要過程可由學(xué)生自行解決,則學(xué)習(xí)能力強的學(xué)生自然會成為教師的助手。
(6)案例分析教學(xué)。對程序設(shè)計語言的教學(xué),不僅僅是教程序設(shè)計語言知識,更重要的是讓學(xué)生學(xué)會如何利用程序設(shè)計語言知識去編程,去應(yīng)用于實際需求中。采用案例教學(xué),可以實現(xiàn)課堂內(nèi)外的有機結(jié)合,實現(xiàn)理論與實踐相結(jié)合。結(jié)合學(xué)生自學(xué),讓學(xué)生帶著疑問進行案例分析,教師在分析過程中穿插講授專業(yè)理論知識,學(xué)生在分析案例的時候,一方面增長知識視野,豐富分析應(yīng)用技巧;另一方面,在探索思考如何把知識運用于實踐,從而及時有效地促進學(xué)生對知識的消化吸收,真正達到理論與實踐相結(jié)合的目的。當然在案例的選擇上應(yīng)結(jié)合學(xué)生的專業(yè)實踐,讓學(xué)生能學(xué)以致用。
4結(jié)語
對于職業(yè)中專的學(xué)生來說,學(xué)習(xí)語法不是學(xué)習(xí)程序設(shè)計語言的真正目的,應(yīng)該在掌握語法的基礎(chǔ)上,通過上機實踐,真正的讓學(xué)生學(xué)會使用程序設(shè)計語言來解決各種實際問題,學(xué)以致用。教師應(yīng)在開學(xué)初就要讓學(xué)生充分了解程序設(shè)計語言的學(xué)習(xí)并不難,然后在以后的教學(xué)過程中,要使學(xué)生在學(xué)習(xí)中得到快樂、嘗試成功的喜悅,提高學(xué)習(xí)的積極性和主動性,讓程序設(shè)計語言真正成為學(xué)生喜愛的課程。課堂教學(xué)創(chuàng)新性有助于促使教師的教育觀點的轉(zhuǎn)變,確立以學(xué)生為中心,以學(xué)生主體實踐為主,以培養(yǎng)學(xué)生創(chuàng)新素質(zhì)和健全人格、特別是創(chuàng)新精神和創(chuàng)新能力為基本價值取向的教育思想;學(xué)生的整體素質(zhì)得到了有效提高,在教學(xué)的起始階段得以順利入門,在整個學(xué)習(xí)階段保持對學(xué)習(xí)的高度興趣,實際應(yīng)用能力得到大大提高;教育教學(xué)的質(zhì)量得到了穩(wěn)步提升。