




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课程设计讲义,类与面向对象概念,对象万事万物均为对象,对象可以是一个实体,也可以是一个抽象的概念。对象的特征:有一个区别于其他对象的名字有若干个用于描述该对象外在特征的状态(名词),称为属性。有一组操作,用于决定对象的功能和行为(动词),称之为方法能感受外界对其的作用。外界对对象的作用称为事件,如鼠标单击复选框。,类与面向对象概念,例如:张三,性别男,身高175cm,会走路、踢球。这就是一个对象,包含了对象名、属性和方法。远处有人呼叫其姓名,他能听见,就是感受到事件,如回头观察,就是执行了一个方法。在计算机内部,对象可看成数据和操作的集合,即:对象=数据+操作,这里的数据就是属性,操作就是方法,方法由程序代码实现。 现实世界中对象的特征和行为对应了计算机世界中对象的属性和方法。,类与面向对象概念,对象的封装特性对象犹如一个黑盒子,用户只须知道它的特征和操作(功能)即可使用对象的状态数据和行为代码被封装在盒子内部,一般用户无须了解对象的内部细节对对象内部的修改、完善等细节均被局限于该对象的内部,不涉及外部举例:电源插座;用计算机、旧录音机录制音乐节目;录像机与电视机的连接,类与面向对象概念,类概念 类是一组客观对象的抽象,它将一组对象所具有的共同特征(包括结构特征和行为特征)集中起来,说明该组对象的能力和性质。例如:猫、虎、豹、狮等动物具有相似的外形与习性,生物学家将其归纳为“猫科动物”例如:凳子、椅子、沙发等物品的相似作用是供人落座,归为一类,为坐具;又因与餐桌、办公桌、实验台等一起使用,合为一类称家具。,类与面向对象概念,对象是类的实例;类是对象的抽象如果一组类具有相同的属性或操作,也抽象出一个类,称基类或父类,被抽象的类称派生类或子类例如:C#“工具箱”中的TextBox就是一个类,它是所有文本框控件的“蓝图”,可以在窗体上形成各种文本框,C#窗体与控件,最简单的C#Windows应用程序:在窗体上放置一个命令按钮,单击按钮,用对话框输出“大家好”。namespace WindowsApplication2 public partial class Form1 : Form public Form1() InitializeComponent(); private void button1_Click(object sender, EventArgs e) MessageBox.Show (大家好!); /输入语句 ,C#的数据类型和表达式,C#的数据类型较之C语言有了很大的扩展,类型更多,使用更方便。数据类型见下页表 bool类型:只能够取true或false值false等效于0值,而true等效于非0值不能够在Bool类型与其他类型之间转换。 char类型取值范围为数字065535每个数字代表一个Unicode字符字符常量需用一对“”括起。如数,C#的数据类型和表达式,C#的数据类型和表达式,红色的类型表示C#默认类型,隐式,不用强制转换,C#的数据类型和表达式,decimal:计算精度极高,可用于财务统计,与double类型的转换需显式进行,如:decimal a=78.9;double b;b=(double)a; a=(decimal)b;byte类型保存整型数据,占用1字节取值范围为0255无负数与int需显式转换,C#的数据类型和表达式,int类型:4字节,-2147483648+2147483647 long类型:8字节-9223372036854775808+9223372036854775807float类型:4字节浮点数。默认情况下,赋值运算符右侧的实数被当作double类型,如:float f=4.4;,因为4.4是double型,可以使用F或f标明是float类型,或用(folat)运算符强制转换成float;不能隐式转换为float型。float f=4.4f; /正确float f=(float)4.4; /正确,C#的数据类型和表达式,string类型:字符串型,表示一个字符序列,最多可存储将近20亿(231)个Unicode字符。string a=hello;string b;b=a;数组的定义:如要定义有10个元素的整型数组aint a=new int10; 数组访问方法同C语言数组数组初始化:int a=new int 1, 3, 5, 7, 9;string weekDays = new string 星期日,星期一,星期二,星期三,星期四,星期五,星期六;,命令按钮控件,常用属性ForeColor文本颜色BackColor背景色Text按钮标题FlatStyle按钮样式,包括Flat、PopUp(平的,遇鼠标成立体状)、Standard (立体的)、System(由操作系统决定)常用事件Click鼠标单击事件颜色的指定方法:例如将按钮的背景色设为蓝色button1.BackColor=Color.Blue;例:在窗体上放置一个命令按钮;连续单击按钮,让窗体的背景色交替显示为蓝色和红色。,文本框控件,文本框是最重要的控件之一,用于输入数据、显示结果。几乎每个Windows应用程序都具备文本框。常用属性:ReadOnly只读PasswordChar密码符号,如*号MultiLine设置为True后可以有多行文字ScrollBars当MultiLine为True时决定是否有水平、垂直等滚动条MaxLength允许的最多文字数SelectedText选定的文本ForeColor文本颜色BackColor背景色Text文本框内容,文本框控件,常用方法:Focus()获得焦点SelectAll选定全部文本Undo取消上一次的操作Copy复制选定的文档Cut剪切选定的文档Paste粘贴剪贴板中的内容常用事件TextChanged文本更新时触发的事件Click鼠标单击事件DoubleClick鼠标双击事件Enter获得焦点事件Leave失去焦点事件,文本框控件,例题:在窗体上放置四个文本框、一个命令按钮;要求:在第一、第二个文本框中输入整数,单击按钮后,在第三、第四个文本框中分别输出两数相除的商和余数;不使用按钮,第一个文本框输入完成后按回车键即自动进入第二个文本框;第二个文本框输入完成后按下回车键即在其余两个文本框中输出商和余数。避免出现被零除的错误,一旦分母为0则在第三个文本框中显示“Error”;增加一个按钮,用于清除四个文本框的内容,并将插入点(焦点)移到第一个文本框中,便于用户输入新的数据;用groupBox将输入数据和输出结果分开显示;,文本框控件,例:在窗体上放置两个文本框;当插入点从第一个文本框进入到第二个文本框时,利用第一个文本框的失去焦点事件在文本框中显示“焦点丢失”,利用第二个文本框的获得焦点事件在文本框中输出“得到焦点”,GroupBox控件,分组控件,本身是一个容器,Text为其标题,其余属性和方法较少使用。如果有两组单选按钮,则分组控件必不可少。 例如:将前面例题中的4个文本框用分组控件分为两组,分组框的标题依次为“输入数”、“输出数”,单选按钮RadioButton,单选按钮控件即单选按钮,通常若干个单选按钮构成一组,任意时刻只能有一个选定常用属性Appearance:Normal通常的小圆点;Button按钮样式Text:标题Checked:有无被选取,true为选中,false未选中常用事件CheckedChanged:状态改变时发生Click:单击时发生,单选按钮RadioButton,编写一个简易计算器程序(如右侧图示),在第一、第二个文本框中输入操作数,通过单击选项按钮选择计算方法,在第三个文本框中输出答案编写右侧图示窗体,单击按钮后判断文本框中的数据是1、质数还是合数。自然数从1开始,可分为1、质数和合数,如17是质数,27为合数。质数是只能被1和自身整除的自然数。,复选框CheckBox,复选框的状态为选定和未选定(是否有对勾)常用属性Checked:选定时为true,否则为false;Text:复选框的标题常用事件Click。 可以通过单击复选框改变其状态,也可以用代码改变其状态例:在文本框中输入一个整数,单击窗体后用一个复选框表示该整数的正负性,另一个复选框显示其奇偶性。代码与界面如下:,复选框CheckBox,private void Form1_Click(object sender, EventArgs e) int a; a = Convert.ToInt32(textBox1.Text); if (a 0) checkBox1.Checked = true; else checkBox1.Checked = false; if (a % 2 = 0) checkBox2.Checked = true; else checkBox2.Checked = false; ,例:在窗体上放置一个文本框,两个复选框,一个复选框标题为“低温”,另一个标题为“晴天”;单击某复选框,在文本框中合成一句话,反映今天的天气情况。,列表框listBox,列表框控件最大的特点是可以保存大量的数据,其后台有一个数组,用于保存数据。常用属性:listBox1.Items.Count:返回列表框中数据项的个数listBox1.SelectedIndex:返回列表框中选定数据项的下标,0为第一项数据,-1为未选定数据listBox1.Text:返回选定的数据项值listBox1.Items下标:列表框数组中指定下标的某一项常用方法:listBox1.Items.Add (数据):向列表框中添加一个新数据listBox1.Items.Remove (数据):从列表框中删除指定的数据listBox1.Items.RemoveAt (下标):删除列表框中指定下标的数据项listBox1.Items.Clear():删除列表框中全部数据,列表框listBox,例:编程实现右图所示的程序功能例:新建项目,将斐波那契数列的前40项保存到列表框中。例:界面如右图所示,运行程序时,自动向左侧的列表框中输入10个随机两位正整数;单击第一个按钮,可将所有偶数转移到第二个列表框中;单击第二个按钮,可将所有小于均数的数据移动到第二个列表框中。,定时器Timer,定时器的作用在于每隔一段时间即产生一个定时事件,完成一个特定的任务。定时器控件工作在后台。常用属性:Enabled:定时器是否有效Interval:定时间隔时间常用事件:timer1_Tick 例:新建项目,界面上有一个按钮、一个文本框;文本框内容为0;单击按钮,文本框开始自己计数,每隔1秒增加1,直到10为止。,定时器Timer,例:编写一个简单的数码电子钟程序。系统时间的获取方法:DateTime t;t=DateTime.Now; /系统日期时间其中t为日期时间型变量。分离出其中的年、月、日、时、分、秒数据可分别应用方法.Year、.Month、.Day、.Hour、.Minute、.Second例:编写电子秒表程序,用两位的时、分、秒方式计时,用一个按钮作为开始计时、停止计时的开关。编写倒计时器程序,假定20小时后有重大事件发生,用两位的时、分、秒方式倒计时,直到00:00:00时停止。,常用算法,用矩形法对单位圆作定积分,计算圆周率值。N的值分别取10、100、1000、10000等,观察计算的精度。C#程序中使用随机数的方法:用随机数类定义随机数对象;用随机数对象的Next方法产生随机数;例:Random R = new Random();a = R.Next(60, 101);即产生一个60100之间的随机整数例:应用随机对象的Next方法产生n个随机正整数保存到数组中,计算这一组数据的最大值、最小值、平均值、标准差。,常用算法,堆栈概念:堆栈是一种数据结构,由若干个数据项组成,是一个数据序列只能在一端插入或删除数据能进行数据插入、删除的一端称栈顶,另一端成栈底可以用一个静态数组表示堆栈,下标为0的元素为栈底,并用一个整型变量记录最上端的栈顶元素,称堆栈指针。例:编写程序,单击按钮后将一个文本框中的十进制正整数转换为二进数,显示在另一个文本框中。因转换过程采用除2取余法,所得余数需倒序显示,故要利用数组实现堆栈,编写数据的入栈和出栈函数供调用。,常用算法,a0,a1,a2,a3,a4,a5,0,1,2,3,4,5,6,7,top,a0,a1,a2,a3,a4,a5,a6,a7,0,1,2,3,4,5,6,7,top,栈满,a0,a1,a2,a3,a4,a5,0,1,2,3,4,5,6,7,top,空栈,堆栈示意图,常用算法,线性表:线性表是一个线性结构,它是一个含有n0个结点的有限序列,其中头结点没有前驱结点,尾结点没有后继结点,其它的结点都有且仅有一个前驱和一个后继结点。一般地,一个线性表可以表示成一个线性序列(a1, a2, a3, , an)。 可以用一个数据表示线性表线性表(数组)中数据的插入与删除例:在10、20、30、100中插入一个数据,完成后数据仍呈升序排列。数据可通过输入对话框得到(见下一页介绍),可使用列表框输出数组内容,以便观察。例:应用上题的数据插入方法,进行数据的排序(插入排序),逐个输入数据,逐个进行排序,并在列表框中显示。例:生成10个随机正整数保存在数组中,在文本框中输入一个数据,单击“删除”按钮,若文本框中的数据在数组中存在则予以删除。数组中全部数据显示在列表框中。,常用算法,C#没有输入对话框,需要“借用”VB的InputBox()函数,起到类似于C的scanf()函数的作用在项目中添加对Microsoft.VisualBasic引用引用方法:菜单“项目”“添加引用”对话框的“.Net”卡“Microsoft.VisualBasic”项“确定”在项目中添加命名空间using Microsoft.VisualBasic=Microsoft.VisualBasic.Interaction.InputBox(提示性文字, 对话框标题, 默认值, X坐标, Y坐标); 若坐标取-1则对话框位于窗体中央,常用算法,例:用选择法进行排序,并计算选择排序的时间开销。选择法排序是常见的排序算法,算法过程易理解,不占用额外的存储空间,但速度较慢。其原理是:在全部数据中找出最大值并排在数组的第一位,在剩下的数据中再找出最大值,排在数组第二位,以此类推,直到找到第n-1个大数。数据的折半查找,及其时间开销分析。折半查找的前提是数据必须是有序的,通常是升序排列(从小到大)。按“找一次丢一半”的原理,实现数据的高速检索。频数分析。频数分析是统计落在某个范围内的数据的个数。例如:有250名学生参加C语言考试,现需要按10分一档统计各档分数段学生的人数,即100、9099、8089、7079、09。,常用算法,二维数组的应用二维数组的定义类似于一维数组,但与传统C语言略有不同。例如,定义一个名为a的4行5列的二维数组的语句为:int , a=new int 4,5;例:用19随机整数向4行5列的二维数组a赋值:int, a = new int4, 5;int i, j;string s;Random r=new Random();for (i = 0; i = 3; i+) for (j = 0; j = 4; j+)ai, j = r.Next(1, 10);,常用算法,二维数组的输出:要完整地输出二维数组的全部内容较麻烦,可以采用多行的文本框(在属性窗口设置Multiline=True、ScrollBars=Both 、WordWrap=False),将一行数据加空格连接起来输出,用System. Environment.NewLine实现换行。例:输出上一例题中的二维数组a for (i = 0; i = 3; i+) s = ;for (j = 0; j = 4; j+)s = s + ai, j.ToString() + ;textBox1.Text = textBox1.Text + s +System.Environment. NewLine; ,常用算法,例:定义一个77二维数组,令其右上三角形区域内的元素均为1(含主对角线),左下三角形区域元素均为0。例:定义一个77二维数组,用两位随机正整数赋值,在文本框中输出,然后计算主对角线上元素的和。例:数据同上题,计算每一列的最大值,显示在多行文本框中(与原始数据隔开一行)。输出杨辉三角形的前8项,11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 1,数据文件,C#数据文件的种类C#编程读写文本文件,文件中的数据均为字符串。步骤:在项目代码窗口的using部分,增加using System.IO;定义一个StreamWrite类的对象;应用File对象的CreateText()方法打开一个文件(括号中输入该文件的盘符、路径、文件名,之间用“”隔开),并将返回值赋给该对象;用该对象的WriteLine方法写入数据,自动换行;或用Write方法写入数据,不自动换行;数据写入完毕,用该对象的Close()方法关闭文件,确保数据存盘。,数据文件,读数据文件:从数据文件中读取数据,进行处理。步骤:在项目代码窗口的using部分,增加using System.IO;定义一个StreamReader类的对象;应用该对象的File.OpenText方法打开一个文本文件(括号中输入该文件的盘符、路径、文件名,之间用“”隔开);用该对象的ReadLine方法读取数据,并将数据赋给一个字符串变量;可在循环中重复上述过程,直到该对象的EndOfStream属性为true为止。读取操作完成后,用该对象的Close()方法关闭数据文件。例:读取c:txt.txt文件中的数据,显示在列表框中。,数据文件,例:单击“存盘”按钮,创建数据文件stud.txt,保存在C盘根目录下,用于记录一名学生的学号、姓名、性别、年龄、电话;然后单击“读取”按钮,将stud.txt中的数据显示在5个文本框中。,private void button1_Click(object sender, EventArgs e) StreamWriter W; W = File.CreateText(C:stud.txt); W.WriteLine(1201234); W.WriteLine(李朝歌); W.WriteLine(男); W.WriteLine(23); W.WriteLine; W.Close(); ,private void button2_Click(object sender, EventArgs e) StreamReader R; R = File.OpenText(c:stud.txt); textBox1.Text = R.ReadLine(); textBox2.Text = R.ReadLine(); textBox3.Text = R.ReadLine(); textBox4.Text = R.ReadLine(); textBox5.Text = R.ReadLine(); R.Close(); ,数据文件,例:数据文件score.txt中保存了4位同学的3门课程成绩,读取该文件中的全部数据,用stud_name数组保存学生姓名,用二维数组data保存全部的分数;计算出每位学生的总分。将各位学生的原始数据和总分保存到文件score1.txt中。,private void button1_Click(object sender, EventArgs e) string stud_name = new string4; int, data = new int4, 4; int n = 0,i,j; StreamReader R; StreamWriter W; R = File.OpenText(c:score.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 亲情话题的课件
- 亲子阅读汇报课件
- 公司考勤管理培训课件
- 少儿才艺比赛策划书
- 物业综合经理工作总结
- 美术室规章制度
- 研究生个人年终总结报告
- 行政人事年终个人工作总结
- 《表情丰富的脸》课件
- 《虽有嘉肴》课件
- GB 23466-2025听力防护装备的选择、使用和维护
- 人教PEP版(2024)四年级上册英语-Unit 3 Places we live in 单元整体教学设计(共6课时)
- 华为信息安全管理培训课件
- 贵阳市殡仪服务中心招聘考试真题2024
- 重庆市危险化学品企业变更管理实施指南(试行)解读2025.7.25
- 诗经整本书阅读课件
- 煤改电工程施工质量监控方案和措施
- 布病的护理教学课件
- 2025年全国保密教育线上培训考试试题库完整答案附带答案详解
- 全套教学课件《工程伦理学》
- 邢其毅基础有机化学考研有机化合物的命名培训讲学
评论
0/150
提交评论