案例.docx
- 文档编号:29183544
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:79
- 大小:44.68KB
案例.docx
《案例.docx》由会员分享,可在线阅读,更多相关《案例.docx(79页珍藏版)》请在冰豆网上搜索。
案例
usingSystem;//引入其他命名空间
namespaceHello_ACCP//定义命名空间{
classProgram//类的定义{
staticvoidMain(string[]args)//程序入口
{Console.Write("HelloWorld");}}}
(1)控制台程序
1)AssemblyInfo.cs是关于本程序集(一般是dll)的一些信息,主要都是Attribute(特性),
strings="HelloWorld";//同上例,修改为字符串变量
Console.Write(s);
//Console.ReadKey();//使得程序能够暂停或者按ctrl+F5运行程序。
}}}
(2)窗体程序
privatevoidbutton1_Click(objectsender,EventArgse){
intresult;
result=Convert.ToInt32(textBox1.Text)*Convert.ToInt32(textBox1.Text);
textBox2.Text=result.ToString();}
如果输入为空,则报错!
可用trycatch
trycatch如何使用,文本的换行如何实现;
privatevoidbutton1_Click(objectsender,EventArgse){
intresult;
//intx1;
try{
result=Convert.ToInt32(textBox1.Text)*Convert.ToInt32(textBox1.Text);
textBox2.Text=result.ToString("x");
}
catch(Exceptionex){
MessageBox.Show("无法识别的数字!
"+ex.ToString());
12345.ToString(“n”);//12,345.00标准计数法
12345.ToString(“C”);//¥12,345.00货币
12345.ToString(“e”);//1.234500e+004科学计数法
12345.ToString(“f4”);//12345.0000浮点保留有效数字
12345.ToString(“x”);//3039(16进制)
12345.ToString(“p”);//1,234,500.00%百分数
privatevoidbutton1_Click(objectsender,EventArgse){try{
doublex1,x2;
x1=Convert.ToDouble(textBox1.Text);
textBox3.Text=(x1+x2).ToString();}
catch(Exceptionex){
//MessageBox.Show("无法识别的数字!
","错
误!
",MessageBoxButtons.OK,MessageBoxIcon.Error);
//textBox1.Focus();}}
3.基本语法(程序示例)
(1)限定输入字符
本题练习顺序语句及文本框控制输入的方法。
源码位置:
privatevoidtextBox1_KeyPress(objectsender,KeyPressEventArgse)
{stringstr1;str1="0123456789-.";intx=0;
if(str1.IndexOf(e.KeyChar,0)<0&&e.KeyChar!
=8)
{e.Handled=true;}}
(2)滚动字幕(Timer+抖动窗口)
本体练习:
timer控件、条件语句。
源码位置:
D:
\DotNetTechnology\课程资料\宏鸣_Dotnet\Class_Case\Basic_Knowledge:
04FormScrollWord.cs
boolScrollDirection;//设置滚动方向
publicFormScrollWord()
{InitializeComponent();
ScrollDirection=true;//初始化滚动方向,向左走}
privatevoidFormScrollWord_Load(objectsender,EventArgse)
{label1.Font=newFont("宋体",16);
label1.AutoSize=true;
timer1.Enabled=true;}
privatevoidtimer1_Tick(objectsender,EventArgse)
{//向左滚//label1.Left-=5;//if(label1.Left<=-label1.Width)//{//label1.Left=this.Width;//}
//往返摆动
一基础知识
第9页共78页
if(ScrollDirection)
{label1.Left-=5;}
else
{label1.Left+=5;}
if(label1.Right>=this.Width){
ScrollDirection=true;
//label1.Left-=5;}
if(label1.Left<=0){
ScrollDirection=false;
//label1.Left+=5;}}
//timer做的抖动窗口
//D:
\DotNetTechnology\课程资料\宏鸣_Dotnet\Class_Case\WinformControl:
FormShake.cs
inti=0;
privatevoidbutton1_Click(objectsender,EventArgse){
timer1.Enabled=true;}
privatevoidtimer1_Tick(objectsender,EventArgse){
//利用timer控件,添加代码实现,左上,右下动
//更加周全的抖动
privatevoidtimer1_Tick(objectsender,EventArgse)//利用timer控件,添加代码实现,上,左,右下动
{varcurrPos=this.Location;
C#.NET
第10页共78页
if(shaketimes%4==0)
{this.Top+=10;}
elseif(shaketimes%4==1)
{this.Left+=10;}
elseif(shaketimes%4==2)
{this.Top-=10;}
else
{this.Left-=10;}
if(shaketimes++>=16)//抖动次数
{this.Location=currPos;//重设窗体初始
timer1.Enabled=false;
shaketimes=0;
}}
(3)累加到100
本题目练习:
dowhile,while,foreach。
源码位置:
D:
\DotNetTechnology\课程资料\宏鸣_Dotnet\Class_Case\Basic_Knowledge:
05FormAccuHundred.cs
//数组类(Array)实现:
//foreach循环主要用于遍历实现了IEnumerable的容器类型,数组类型和常用容器都实
//ArrayList是Array的复杂版本,是动态数组
/*ArrayList内部封装了一个Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于ArrayList的许多方法,如Index、IndexOf、Contains、Sort等都是在内部数组的基础上直接
调用Array的对应方法*/
privatevoidbutton3_Click(objectsender,EventArgse)
(4)三角星号
本题目练习:
while。
源码位置:
D:
\DotNetTechnology\课程资料\宏鸣_Dotnet\Class_Case\Basic_Knowledge:
06FormTriangle.cs
privatevoidbutton1_Click(objectsender,EventArgse)
{//左对齐的星号
intTotal=5,Currentline=0;
label1.Text="";string.Empty
stringx="";string.Empty
while(Currentline<=5){
Currentline+=1;
//label1.Text+=x.PadRight(Currentline,'*');
label1.Text+=x.PadRight(Currentline,'*')+System.Environment.NewLine;;}}
//右对齐的星号
privatevoidbutton2_Click(objectsender,EventArgse){
intTotal=5,Currentline=0;
label1.Text="";
stringx="";
while(Currentline Currentline+=1; label1.Text+=x.PadLeft(Total-Currentline,'')+ x.PadLeft(Currentline,'*')+ System.Environment.NewLine;}} //等边梯形的星号 privatevoidbutton3_Click(objectsender,EventArgse) { intTotal=5,Currentline=0; label1.Text=""; stringx=""; while(Currentline {Currentline+=1; label1.Text+=x.PadLeft(Total-Currentline,'')+ x.PadLeft(Currentline*2-1,'*')+ System.Environment.NewLine; }}(6)99乘法表 本题目练习: fornext,控制输出位置。 源码位置: D: \DotNetTechnology\课程资料\宏鸣_Dotnet\Class_Case\Basic_Knowledge: 08Form9Mul9.cs privatevoidbutton1_Click(objectsender,EventArgse){ label1.Text=""; label1.Font=newFont("",16); inti=1,j=1; stringresult=""; for(;i<=9;i++){ for(j=1;j<=i;j++) {result=i+"×"+j+"="+i*j+"";//以下两行,可以对齐的方法 label1.Text+=result.PadRight(15-result.Length,''); }label1.Text+=System.Environment.NewLine;//‘\n’}} (7)猜数字8次 本题目练习: 多窗体的调用,参数传递,静态函数。 源码位置: //InputBox窗体的定义: publicpartialclassInputBox: Form {publicInputBox() {InitializeComponent(); this.StartPosition=FormStartPosition.CenterParent; this.FormBorderStyle=FormBorderStyle.FixedDialog; this.MinimizeBox=false; this.MaximizeBox=false; label1.AutoSize=true;} publicstaticintInput(stringTitle,stringText,intDefVal) {InputBoxinputBox=newInputBox(); inputBox.Text=Title; inputBox.label1.Text=Text; inputBox.textBox1.Text=DefVal.ToString(); DialogResultresult=inputBox.ShowDialog(); if(result==DialogResult.OK) returnConvert.ToInt32(inputBox.textBox1.Text); else returnDefVal;} privatevoidbutton1_Click(objectsender,EventArgse) {this.DialogResult=DialogResult.OK;} privatevoidbutton2_Click(objectsender,EventArgse) {this.DialogResult=DialogResult.Cancel;} C#.NET 第14页共78页 //调用的过程: privatevoidbutton2_Click(objectsender,EventArgse) {Randomrd=newRandom(); intx=rd.Next(0,100); for(inti=1;i<=8;i++) {intlefttimes=9-i; inty=InputBox.Input("猜数字! ","您还有"+lefttimes.ToString()+"次机会! ",0); if(x>y) {MessageBox.Show("小了点! ");} elseif(x {MessageBox.Show("大了点! ");} else {MessageBox.Show("您真聪明,仅用了"+i.ToString()+"次就猜对了! "); return;}} MessageBox.Show("很遗憾您没有猜对,该数是: "+x.ToString());} //调用VB中的InputBox 首先,在“解决方案资源管理器”中的“引用”项上单击右键,单击菜单中的“添加引用”,选择 “Microsoft.VisualBasic”。 然后在开头引入命名空间: usingMicrosoft.VisualBasic; Randomrd=newRandom(); intx=rd.Next(0,100); for(inti=1;i<=8;i++) {intlefttimes=9-i; inty= Convert.ToInt16(Microsoft.VisualBasic.Interaction.InputBox("您还有"+lefttimes.ToString()+"次机 会! ")); //inty=InputBox.Input("猜数字! ","您还有"+lefttimes.ToString()+"次机会! ",0); if(x>y) {MessageBox.Show("小了点! ");} elseif(x {MessageBox.Show("大了点! ");} else{ MessageBox.Show("您真聪明,仅用了"+i.ToString()+"次就猜对了! "); return;}} MessageBox.Show("很遗憾您没有猜对,该数是: "+x.ToString()); (8)最大公约数(最小公倍数) 本题目练习: 多窗体的调用,求余数。 源码位置: D: \DotNetTechnology\课程资料\宏鸣_Dotnet\Class_Case\Basic_Knowledge: 10FormCommonDivisor.cs 一基础知识 第15页共78页 继续使用inputbox进行数据的输入 privatevoidbutton1_Click(objectsender,EventArgse) {intm,n,mn,r; m=InputBox.Input("","",2); n=InputBox.Input("","",2); mn=m*n; r=m%n; while(r! =0) {m=n; n=r; r=m%n;} MessageBox.Show("最大公约数为: "+ n.ToString()+";"+"最小公倍数为: "+(mn/n).ToString()); } (9)对称数 本题目练习: 使用字符数组。 源码位置: publicstaticboolfindNumber1(intn) {stringnumber=n.ToString(); for(inti=0;i {if(number[i]! =number[number.Length-1-i])returnfalse;} returntrue; } privatevoidbutton1_Click(objectsender,EventArgse) {intInumber=Convert.ToInt16(textBox1.Text); if(findNumber1(Inumber)) {MessageBox.Show(Inumber+"是对称数","",MessageBoxButtons.OK);}} else {MessageBox.Show(Inumber+"不是对称数","",MessageBoxButtons.OK);} (10)属相/每个月多少天 (11)产生指定数量的随机数并统计个数 二面向对象 1.命名空间 命名空间就像XX省XX市XX县XX单位,也许在不同的省或市会有同名的县或单位,那么需要靠各 自的归属来区分。 有时候可以把命名空间理解成一个文件目录,也许会更容易理解一些,只不过文件目 录市物理上的分组,而命名空间是类的逻辑上的一种分组。 2.继承 ●构造函数和析构函数不能被继承,访问方式决定派生类能否访问他们; ●派生类如果定义了继承而来的成员同名的新成员,那么就可以覆盖已继承的成员。 但不是删除,只 是不可访问; ●类可以定义虚方法、虚属性及虚索引指示器,它的派生类能够重载这些成员,从而使类可以展示出 多态性; ●派生类只能从一个类中继承,可以通过接口来实现多重继承。 本题练习继承的执行顺序。 (2)访问基类成员 两种方式: ①通过base.<方法名>()的方式调用基类的方法成员() ②通过显式类型转换 classProgram {staticvoidMain(string[]args) {//base.SayHello();//注: 从静态方法中使用base关键字是错误的(方法一可以访问) ChildClasschild=newChildClass(); child.Say(); child.SayHello(); ((ParentClass)child).SayHello();//方法二: 显式类型转换 Console.ReadKey(); (3)隐藏基类成员 (4)密封类和密封方法 如果所有的类都可以被继承,如果滥用会是什么后果? C#提供了密封类(sealedclass) publicsealedclassParentClass,该语句在上面的例子中将产生一系列的错误! (5)抽象类和抽象方法 密封类和密封方法是不想继承的情况,还有一种相反的情况是为了继承而生的。 基类并不实现任何 执行代码,只是做个定义。 publicabstractclassParentClass {publicParentClass() {Console.WriteLine("父类构造函数");} publicabstractvoidSayHello(); } publicclassChildClass: ParentClass {publicChildClass() {Console.WriteLine("子类构造函数");} publicoverridevoidSayHello() {Console.WriteLine("我是子类");//隐藏了基类的成员} } classProgram {staticvoidMain(string[]args) {publicstaticvoidMain() {ChildClasschild=newChildClass();//父类构造函数,子类构造函数 child.SayHello();//显示"我是子类" Console.ReadKey();}} 注意: 如果类中包含抽象方法,则类必须声明为抽象类。 如果不想把类声明为抽象类,但又想实现方法在基类里不具体实现,而是在派生类中重写实现功能,该 怎么办呢? : 通过把方法声明为虚函数(virtual)的形式来实现方法的重写。 publicclassParentClass {publicParentClass() {Console.WriteLine("父类构造函数");} publicvirtualvoidSayHello() {//虚函数必须声明方法主体。 抽象方法可以不需要} } publicclassChildClass: ParentClass {publicChildClass() {Console.WriteLine("子类构造函数");} publicoverridevoidSayHello()//与上一例无变化 {Console.WriteLine("我是子类");//隐藏了基类的成员}} classProgram {staticvoidMain(string[]args) {publicstaticvoidMain() {ChildClasschild=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 案例