




已阅读5页,还剩70页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C#程序设计总复习,计算机科学与技术 张荣高,考试题型,1. 单项选择题(本大题共15小题,每小题1分,共15分) 2. 填空题(本大题共10空,每空1分,共10分) 3. 简答题(本大题共5小题,每小题6分,共30分) 4. 程序阅读题(本大题共5小题,每小题6分,共30分) 5. 程序填空题(本大题共3小题,每小题5分,共15分),第1章 概述,.NET框架包括两个主要组件: 公共语言运行库(简称运行库) 类库 VS.NET 2008常用应用程序模板: 控制台应用程序,使用统一的重定向文本输出形式,在命令行方式下运行,用于交互操作不多、主要偏重与内部功能实现的场合。 Windows应用程序,实现窗体形式操作界面,主要用于交互性操作较多场合。 ASP应用程序,通过Internet传递可以被客户浏览的页面,如各类网站以及基于Web的网络办公系统等,第1章 概述,在C#中,using关键字有3个用途: 作为引用指令 指明引用的命名空间 作为别名指令,用来简化命名空间的表达形式 作为语句,用于定义一个范围 应用程序的入口点规定为Main Main方法声明为public static,除非有特殊理由,一般不要更改Main方法的声明 Main方法的返回值只能是void或者int Main方法可以放在任何一个类中 一个应用程序中必须有一个类包含Main方法。,第2章 数据类型与流程控制,C#数据类型分为两类:值类型和引用类型。 值类型: 简单类型:整型、浮点、decimal、char、bool 枚举类型:enum 结构类型:struct 可空类型 引用类型:引用类型的变量又称为对象 类: object、class、string 接口:interface 数组 委托: delegate,第2章 数据类型与流程控制,数值类型的变量和引用类型的变量,两者最根本区别在于: 数值类型的变量本身包含他们的数据,而引用类型的变量包含的是,指向包含数据的内存的引用或者叫句柄。 对于数值类型,每个变量有一份自己的数据复制,因而也就不能通过操作其中的一个来影响到另一个。 而对于引用类型,两个变量有可能引用同一个对象,因而也就可能通过操作其中的一个变量来影响也被另一个变量引用的对象,第2章 数据类型与流程控制,有两种转换方式:隐式转换与显式转换。如果是不同类型之间的转换,可以使用Convert类 Object类型:是所有其他引用类型的基类 装箱:将值类型转换为object类型 拆箱:将object类型转换为值类型 控制台输出 Console.Write (); Console.WriteLine(); 控制台输入 Console.ReadKey(); Console.ReadLine();,第2章 数据类型与流程控制,循环语句 for语句 while语句 do-while语句,循环体内的程序至少会执行一次 foreach语句,对集合、数组进行操作 foreach语句用于逐个提取集合中的元素,并对集合中每个元素执行语句序列中操作的场合,注意循环变量是一个只读型的局部变量: foreach ( 类型 标识符 in 表达式 ) 语句序列 ,第2章 数据类型与流程控制,if语句:根据布尔表达式的值选择要执行的语句序列 switch 语句也叫case语句 switch条件表达式的值和每个case后的常量表达式可以是string、int、char、enum或其它值类型 每个case块的最后一句一定要是break语句 break语句 功能:break语句只能出现在循环结构和switch结构中,退出break语句所在循环结构和多分支结构 continue语句 功能:continue语句只能出现在循环结构中,不执行循环体中的后续语句,返回循环的开头进行新的循环处理,只能结束本次循环,第2章 数据类型与流程控制,try-catch语句 在程序运行正常的时候,执行try块内的程序。如果try块中出现了异常,程序就转移到catch块中执行。 try-catch-finally语句 throw语句,第3章 常用数据类型的用法,String类的表示方法: string str = “C:testfirst.cs“ string str = “C:testfirst.cs“ 取字符串中的某个字符的方法: string myString = “some text“; char chFirst = myString2; /结果为m string.Compare(): 比较字符串的内容。 string.Copy(): 将一个字符串内容原样复制到一个新字符串中 string.Format(): 格式化字符串 Contains():查找一个字符串中是否包含指定的子字符串 IndexOf():求某个字符或者子串在字符串中出现的位置,第3章 常用数据类型的用法,Substring():截取字符串 Remove():删除指定数量的字符 Replace():字符串替换 Insert():插入字符串 Trim():删除首部和尾部空格 string.Join():在数组的每个元素之间串联指定的分隔符,从而产生单个串联的字符串。语法为: public static string Join( string separator, string value) Split():将字符串按照指定的一个或多个字符进行分离,从而得到一个字符串数组。常用语法为: public string Split( params char separator),第3章 常用数据类型的用法,String类实际表示的是一系列不可变的字符。说其实例是“不可变的”,是因为无法直接修改给该字符串分配的堆中的字符串。例如myString += “ and a bit more “ 实际操作并不是在原来myString所占内存空间的后面直接附加上第二个字符串,而是返回一个新String实例,即重新为新字符串分配内存空间。,class Program static void ChangeString(string s) s = “new string“; static void Main(string args) string s = “old string“; ChangeString(s); Console.WriteLine(s); ,第3章 常用数据类型的用法,数组是一种引用类型,而不是值类型 C#中可以有一维数组、多维数组、交错数组 在C#中,数组的下标默认是从 0 开始索引的。 int a = new int30; int, b = new int3,5; Array.Sort(): 升序 Array.Reverse(): 倒序 Contains()、IndexOf() Average()、Sum()、Max()、Min(),第3章 常用数据类型的用法,枚举(enum)是一组命名常量的集合,称为枚举成员列表。可以为一组在逻辑上密不可分的整数值提供便于记忆的符号,从而使代码更清晰,也易于维护 enum daysMon, Tue,Wed,Thu,Fri,Sat Enum.GetNames() , Enum.GetValues(),第3章 常用数据类型的用法,泛型(Generic)是具有占位符(类型参数)的类、结构、接口和方法,它与普通类的区别是泛型多了一个或多个表示类型的占位符,这些占位符用尖括号括起来。例如: public class MyClass public T MyProp get; set; /定义属性MyProp public void Print( ) Console.WriteLine(MyProp); ,第3章 常用数据类型的用法,List泛型类表示可通过索引访问的强类型对象列表,该类提供了对列表进行搜索、排序和操作的方法。 Add():将指定值的元素添加到列表中 AddRange():将指定值的元素集合添加到列表中 Insert():在列表的中间插入一个新元素 Contains():测试该列表中是否存在某个元素 Remove():从列表中移除带有指定键的元素 Clear():移除列表中的所有元素,第3章 常用数据类型的用法,Math类位于System命名空间下,为三角函数、对数函数和其他通用数学函数提供常数和静态方法。 Math.Min()、Math.Abs()、Math.Sqrt() 、Math.PI Random类用于生成随机数 默认情况下,Random类的无参数构造函数使用系统时钟生成其种子值,而参数化构造函数可根据当前时间的刻度数采用Int32值。 常用方法: Random r = new Random( ); int i=r.Next(10);,第4章 面向对象编程基础,构造函数:对类的成员进行初始化 构造函数特点: 每个类至少有一个构造函数。若程序代码中没有构造函数则系统会自动提供一个默认的构造函数 一个构造函数总是和它的类名相同 构造函数不包含任何返回值(包括void) 构造函数通常是public的;若是private类型的,则该类不能被实例化,常用于只含有静态成员的类 构造函数中不要进行初始化以外的事情;不要尝试显示调用构造函数。(构造函数在创建对象时被调用),第4章 面向对象编程基础,重载构造函数 有时候可能会遇到这样的情况:在一个类中的多个方法中都要用到某一个数据成员,而该成员值必须从其他类中传递过来。这时,无参数的构造函数就不能胜任了,解决这个问题最好的办法就是:重载构造函数 当字段和局部变量名相同时: 如果要引用静态字段,可以使用形式:类名.字段名 如果是实例字段,则使用形式:this.字段名 静态成员:指定类名调用 实例成员:指定实例对象调用,第4章 面向对象编程基础,C#中有以下成员访问修饰符: Private:私有成员, 在类的内部才可以访问 Protected:保护成员,该类内部和继承类中可以访问 Public:公共成员,完全公开,没有访问限制 Internal:在同一命名空间内可以访问,第4章 面向对象编程基础,属性的作用:可以限制外部对类中成员变量的存取权限。 属性的声明和定义 指定字段级别的访问 指定属性的类型和名称 声明get访问器和set访问器 get:用来读取数据成员的值 set:用来设置数据成员的值 使用value的隐含参数,public class MyClass private int number = 0; public int Number get return number; set if ( value 0) number = value; ,第4章 面向对象编程基础,结构struct是由一系列相关的、但类型不一定相同的变量组织在一起而构成的数据表示形式,所有结构类型都隐式地从类型object继承 结构和类的区别: 结构是一个值类型,保存在栈上;类是一个引用类型,保存在受管制的堆上 对结构中的数据进行操作比对类或对象中的数据进行操作速度要快 一般用结构存储多种类型的数据,当创建一个很多类或对象共用的小型对象时,使用结构效率更高,第4章 面向对象编程基础,方法是一组程序代码的集合,每个方法都有一个方法名,便于识别和让其他方法调用 对于方法,参数传递分为值传递和引用传递两种 值参数(值传递)形参不加任何修饰符; 引用参数(ref传递)形参以ref修饰符声明 注意:作ref传递的实参必须初始化;调用时实参必须指明ref 输出参数(out传递)形参以out修饰符声明,能返回一个或多个值给用户(调用时实参必须指明out) 数组参数(param传递)形参以param修饰符声明。(数组默认的参数传递方式),第4章 面向对象编程基础,方法重载:指具有相同的方法名,但参数类型或参数个数不完全相同的多个方法可以同时出现在一个类中 面向对象的基本特征 封装:将描述对象的数据及处理这些数据的代码组装在一起,形成一个不可分割的独立单位(类),并尽可能地隐藏对象的内部细节,只保留有限的对外接口使之与外界发生联系 继承:就是指不需要编写相同的代码,子类可以从基类继承其全部属性和方法 多态:所谓多态性就是指同一个名字可以代表不同、但相似的功能。程序运行时,面向对象的语言会自动判断对象的派生类型,并调用相应的方法,第5章 面向对象的高级编程,两种实现继承的方式:类继承和接口继承。 类继承只允许单一继承 ,接口可实现多重继承。 被继承的类叫基类 继承自其他类的类叫扩充类,扩充类继承了所有定义在基类中数据的定义和方法。但扩充类不继承基类的构造函数,第5章 面向对象的高级编程,虚方法 在基类中,如果想让某个方法或者事件被扩充类重写,可以使用修饰符virtual表明: public virtual void myMethod() 扩充类则用override重写: public override void myMethod() 使用虚拟方法和重写方法时,要注意下面几个方面: 虚拟方法不能声明为静态的。 virtual不能和private一起使用。 重写方法的名称、参数个数、类型以及返回值都必须和虚拟方法的一致。,第5章 面向对象的高级编程,隐藏基类的方法 new 作为运算符,用于创建对象和调用构造函数 new 作为修饰符,在扩充类中,隐藏基类中同名的方法或属性 抽象类使用abstract修饰符,只能做基类 抽象类与非抽象类的区别: 抽象类不能直接被实例化,只能在扩充类中通过继承使用,对抽象类使用new运算符会产生编译时错误。 抽象类可以包含抽象成员,而非抽象类不能包含抽象成员。当从抽象类派生非抽象类时,这些非抽象类必须具体实现所继承的所有抽象成员。,第5章 面向对象的高级编程,public abstract class A public A() Console.WriteLine(“A“); public virtual void Fun( ) Console. WriteLine (“A.Fun()“); public class B : A public B() Console.WriteLine(“B“); public new void Fun() Console. WriteLine(“B.Fun()“); ,class Program public static void Main() A a = new B(); a.Fun(); ,第5章 面向对象的高级编程,C#在内部按照下列顺序处理构造函数:从扩充类依次向上寻找其基类直到找到最初的基类,然后开始执行最初的基类的构造函数,再依次向下执行扩充类的构造函数,直至执行完最终的扩充类的构造函数为止。 用C#编写方法时,如果在扩充类中重写基类的方法,需要用override声明;要隐藏基类的方法,需要用new声明,这是C#进行版本控制的依据。 调用非虚拟方法时不会受到版本的影响 调用虚拟方法的实现部分可能会因扩充类的重写而影响执行结果。,第5章 面向对象的高级编程,class A public virtual void Method() Console.WriteLine(“A.Method“); class B : A public new virtual void Method() Console.WriteLine(“B.Method“); class C : B public override void Method() Console.WriteLine(“C.Method“); ,class Program static void Main() A a = new A(); B b = new C(); A c = b; a.Method(); b.Method(); c.Method(); Console.ReadLine(); ,第5章 面向对象的高级编程,使用interface声明一个接口,主要特点是只有声明部分,没有实现部分。 定义在接口中的方法都是public的,接口成员的实现是通过类完成的。 接口和抽象类区别: 接口支持多继承;抽象类不能实现多继承。 接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。 接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。 接口可以用于支持回调;抽象类不能实现回调,因此继承不支持。 接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。 接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。例如,struct就可以继承接口,而不能继承类,第5章 面向对象的高级编程,委托 类似与C+中的函数指针,不同的是C+语言的函数指针只能够指向静态的方法,而委托除了可以指向静态的方法之外,还可以指向对象实例的方法。 委托最大特点是:它不知道或不关心自己引用的对象的类。 委托的应用:回调机制、事件处理 委托的声明和使用 public delegate void FuncDelegate(string str);,第5章 面向对象的高级编程,1声明一个委托对象,其参数形式一定要和你想要包含的方法的参数形式一致。 public delegate void MyDelegate(参数); 2定义所有你要定义的方法,其参数形式和第一步中声明的委托对象的参数形式必须相同。 Method(参数); 3创建委托对象并将所希望的方法包含在该委托对象中。 MyDelegate objMyDelegate = new MyDelegate(类.Method); 4通过委托对象调用包含在其中的各个方法。 objMyDelegate(待传入参数),public delegate string MyDelegate(string name); public class Program public static string FunctionA(string name) return “A say Hello to “ + name; public static string FunctionB(string name) return “B say Hello to “ + name; public static void MethodA(MyDelegate Me) Console.WriteLine(Me(“张三“); public static void Main() MyDelegate a = new MyDelegate(FunctionA); MyDelegate b = new MyDelegate(FunctionB); MethodA(a); MethodA(b); Console.ReadLine(); ,第5章 面向对象的高级编程,事件 事件是响应用户对鼠标、键盘操作或自动执行某个与事件关联的方法的行为。事件和方法一样具有签名,签名包括名称和参数列表。 事件的签名通过委托类型来定义,为事件定义委托的常用形式为: public delegate MyEventHandler(Object sender, EventArgs e) 事件可以使用event关键字进行声明,例如: public event MyEventHandler TriggerIt; 若要引发该事件,可以定义引发该事件时要调用的方法,如下例所示: public void Trigger( ) TriggerIt( ); 可以通过“+=”和“-=”运算符向事件添加委托来订阅或取消对应的事件。,class TestEvent public delegate void MyEventHandler(); public event MyEventHandler Click; public void Trigger() Click(); public void M1() Console.WriteLine(“Hello!“); public void M2() Console.WriteLine(“Hello again!“); public void M3() Console.WriteLine(“Good-bye!“); static void Main() TestEvent myEvent = new TestEvent(); myEvent.Click += new MyEventHandler(myEvent.M1); myEvent.Click += new MyEventHandler(myEvent.M2); myEvent.Click += new MyEventHandler(myEvent.M3); myEvent.Trigger(); myEvent.Click -= new MyEventHandler(myEvent.M2); Console.WriteLine(“不再引发“Hello again!“); myEvent.Trigger(); Console.ReadLine(); ,第6章 窗体、控件和组件,1、窗体应用程序的启动和停止 使用Application类提供的静态方法来启动、停止应用程序 Application类提供的方法: Run方法:用于在当前线程上启动应用程序消息循环,并显示窗体 static void Main() Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1(); ,第6章 窗体、控件和组件,如何在代码中打开一个新窗体 Form2 fm = new Form2(); fm.Show(); 或者fm.ShowDialog(); 模式对话框是指用户只能在当前的对话框窗体进行操作,在该窗体关闭之前不能切换到程序的其他窗体,通过窗体的ShowDialog()方法显示。 非模式对话框是指当前所操作的对话框窗体可以与程序的其他窗体切换,通过窗体的Show()方法显示 Load:窗体载入事件,当窗体载入时触发该事件。例如运行应用程序时,窗体frmMain显示,则触发了frmMain的Load事件。,第6章 窗体、控件和组件,对话框用于与用户交互和检索信息。 MessageBox对话框:调用MessageBox类的静态Show方法来显示消息对话框。返回值是MessageBoxResult枚举的值,其中每个值都等同于消息对话框可以显示的按钮之一。 Show方法提供了多种重载形式,常用的重载形式有: public static DialogResult Show(string text) public static DialogResult Show(string text, string caption) public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon),第6章 窗体、控件和组件,Text:在消息框中显示的文本。 caption:在消息框的标题栏中显示的文本。 buttons:MessageBoxButtons枚举值之一,指定在消息框中显示哪些按钮。枚举值有OK、OKCancel、YesNoCancel和YesNo。 icon:MessageBoxIcon枚举值之一,指定在消息框中显示哪个图标。枚举值有None(不显示图标)、Hand(手形)、Question(问号)、Exclamation(感叹号)、Asterisk(星号)、Stop(停止)、Error(错误)、Warning(警告)和Information(信息)。 Show方法的返回值是DialogResult枚举值之一。DialogResult枚举值有:None(消息框未返回值)、OK、Cancel、Yes和No。,第6章 窗体、控件和组件,ColorDialog:提供颜色选择 方法:ShowDialog() 返回值:DialogResult类型 FontDialog:提供字体选择。 方法:ShowDialog() 返回值:DialogResult类型 用法如下: ColorDialog colorDlg = new ColorDialog( ); if (colorDlg.ShowDialog( ) = DialogResult.OK) textBox1.ForeColor = colorDlg.Color; ,第6章 窗体、控件和组件,常用属性: Name:设置控件名称,代码中通过该属性来访问控件 Text:设置控件上所要显示的文本, Enabled:决定控件是否可用 Anchor:保持控件与边框距离不变,使控件随窗口一起动态调整大小 Dock:让控件始终紧靠边框,第6章 窗体、控件和组件,Timer组件:主要用于设置某个时间间隔,并在每次到达设置的时间间隔时,触发指定的事件。 Enabled:设置Timer控件是否工作 Interval:设置Tick事件间的时间间隔,以毫秒为单位 Tick():每隔Interval毫秒触发一次Tick事件 Button控件,主要用于接收用户的单击Click事件。当用户用鼠标单击或用Enter键按下命令按钮时,都会触发Click事件,从而执行相应的代码,达到某种特定操作的目的。 Label控件:主要用于显示不希望被用户修改的静态文本,因为Label控件不能由用户直接对其进行编辑 Text属性,第6章 窗体、控件和组件,TextBox控件,主要用于文本输入、显示、编辑和修改 Text:表示文本框中显示的内容 ReadOnly:设置文本框中的文本内容是否只读 Multiline:控制文本框中的文本内容是否多行显示 PasswordChar:指定屏蔽密码字符时所使用的符号 TextChanged():文本框的文本内容发生改变时触发,第6章 窗体、控件和组件,列表类控件(ListBox控件、ComboBox控件) 用于显示一组条目,以便操作者从中选择一条或者多条信息,并对其进行相应的处理。 Items:表示列表项集合 SelectedIndex:选中的列表项的索引号 SelectedItem:选中的列表项的文本内容 SelectedItems:选中的列表项集合 Items.Add()、Items.AddRange() Items.Remove()、Items.RemoveAt()、Items.Clear() SelectedIndexChanged():选择的列表项发生改变时触发,第6章 窗体、控件和组件,ListBox控件的其他属性 MutiColumn:决定是否可以以多列的形式显示各项。 SelectionMode:选择列表项的方式 ComboBox控件的其他属性 DropDownStyle:组合框显示样式,有3种选择形式 /删除选定的所有项 for (int i=listBox1.SelectedItems.Count-1; i=0; i-) listBox1.Items.Remove(listBox1.SelectedItemsi); 注意:删除操作一定是从选中的列表项集合中下标最大值开始删除,第6章 窗体、控件和组件,CheckBox控件、RadioButton控件 Checked:True表示被选中,False表示未被选中 CheckedChanged():用户更改按钮状态时触发 DateTimePicker控件,用于对日期(年月日)和时间(时分秒)进行处理,控件提供一个可选择的日期范围,供用户选择/编辑日期或时间。 Text:设置可转换为DateTime类型的字符串 Value:当前的日期/时间值 Format:设置可显示的日期/时间的格式 ShowUpDown:是否使用up-down控件调整日期/时间,第7章 目录与文件管理,System.IO命名空间中文件操作类: 1. File 2. FileInfo 相同点:都能完成对文件的复制、移动、重命名、创建、打开、删除和追加到文件操作。 不同点: FileInfo类提供实例化后的属性、方法 File 只提供静态方法,第7章 目录与文件管理,File类 1.判断文件是否存在:Exist(FileName) 2.复制文件;Copy (sourceFileName, destFileName,bool overwrite) 2.删除文件:Delete (string path) 3.移动文件:Move (sourceFileName, destFileName) 注意:Move方法不提供创建目录的功能,要确保存在目标文件目录,第7章 目录与文件管理,设置或获取属性 1.对File类:用SetAttributes方法,GetAttributes方法设置、获取 2.对FileInfo类:用Attributes属性设置、获取 下面的代码演示了如何判断某个路径是目录还是文件: if (File.GetAttributes(path) ,第7章 目录与文件管理,OpenFileDialog控件和SaveFileDialog 1. 功能:用于显示用户打开文件的对话框。常用方法:ShowDialog() SaveFileDialog用于显示保存文件对话框,提示用户选择文件的保存位置 调用SaveFileDialog的ShowDialog方法,将打开【另存为】对话框,如果用户在单击【保存】按钮,则保存该文件,并返回DialogResult.OK,否则返回DialogResult.Cancel,第7章 目录与文件管理,File类提供了非常方便的读写文本文件的方法。 1ReadAllText方法和AppendAllText方法 ReadAllText方法打开一个文件,读取文件的每一行,将每一行添加为字符串的一个元素。然后关闭文件。 public static string ReadAllText(string path, Encoding encoding) AppendAllText方法用于将指定的字符串追加到文件中,如果文件不存在则自动创建该文件, public static void AppendAllText(string path, string contents, Encoding encoding),第7章 目录与文件管理,2、ReadAllLines方法和WriteAllLines方法 ReadAllLines方法打开一个文本文件,将文件的所有行都读入一个字符串数组,然后关闭该文件。 WriteAllLines方法创建一个新文件,在其中写入指定的字符串数组,然后关闭文件。如果目标文件已存在,则覆盖该文件。 3StreamReader类和StreamWriter类 流是字节序列的抽象概念。流也是进行数据读取操作的基本对象,流提供了连续的字节流存储空间。流有如下几种操作。 读取:从流中读取数据到变量中。 写入:把变量中的数据写入到流中。 定位:重新设置流的当前位置,以便随机读写,第7章 目录与文件管理,StreamReader类提供了利用流来按行读取文本文件信息的方法。如果不指定编码,StreamReader的默认编码为UTF-8,而不是当前系统的ANSI编码。 StreamWriter类提供了按行写入文本信息的方法。与StreamReader类似,如果不指定编码,StreamWriter默认使用UTF-8编码,而不是当前系统的ANSI编码。 File类的Open方法先创建一个FileStream对象,然后使用FileStream对象对文件进行读取、写入、打开和关闭操作,/ 读取C:Readme.txt文本文件 public static void Main(string args) string fileName=“c:ReadMe.txt“; FileStream fs=new FileStream (fileName,FileMode.Open,FileAccess.Read); StreamReader reader=new StreamReader(fs); txtContent.Text=reader.ReadToEnd(); fs. Close() ,/ 保存改写C:Readme.txt文本文件 public static void Main() string fileName=“ C:Readme.txt“; FileStream fs=new FileStream(fileName,FileMode.Open, FileAccess.Write); StreamWriter writer=new StreamWriter(fs); writer.Write(txtContent.Text); writer. Flush(); fs. Close() ; ,第8章 图形图像处理,GDI+坐标系中的基本结构 Point:某个特定位置相对于原点的水平和垂直距离。例如 Point p = new Point (1,1); Size 有两个整型属性来表示水平和垂直距离Width和Height。例如:Size s = new Size (5,5); Rectangle 用来指定矩形的坐标,它由一个Point和一个Size组成,其中Point表示矩形左上角,Size表示矩形大小 Graphics对象的TranslateTransform()改变原点 Graphics对象的PageUnit属性改变度量单位。,第8章 图形图像处理,绘制图形图像前,首先必须创建Graphics对象,然后利用这个对象绘制直线、曲线、椭圆等图形图像。 有三种常见的创建Graphics对象的方法: 1. 在窗体或控件的Paint事件中获取Graphics对象 2. 通过当前窗体的CreateGraphics方法,把当前窗体的画笔、字体、颜色作为默认值,获取对Graphics对象的引用 3. 从继承自图像的任何对象创建Graphics对象,第9章 ADO.NET与数据操作,VS2008开发环境下使用的是ADO.NET 2.0,第9章 ADO.NET与数据操作,ADO.NET数据提供程序的四个核心对象 (1) Connection对象 提供与数据源的连接 (2) Command对象 执行T-SQL语句,包括返回数据,修改数据,运行存储过程以及发送或检索参数信息的数据库命令 (3) DataReader对象 从数据源中读取仅向前的、只读的数据流 (4) DataAdapter对象 可以执行针对数据源的各种操作,包括填充DataSet,更新变动数据到数据源中,并使对DataSet中数据的更改与数据源保持一致。 SQL Server数据库:SqlConnection、SqlDataAdapter Oracle数据库:OracleConnection、OracleDataAdapter,第9章 ADO.NET与数据操作,ADO.NET使用SqlConnection对象与SQL Server进行连接。 1.使用Windows集成安全身份验证,例如: string connectionString =“Integrated Security=SSPI; Server=localhost; Database=MyDatabase.mdf;“; 2.使用用户名、密码形式,例如: string connectionString =“server=localhost; uid=sa; pwd=123; database=MyDatabase.mdf“; 3. 如果与SQL Server Express Edition创建连接,可以直接使用附加数据库名的方式。连接字符串的一般形式为: string connectionString =“Data Source=.SQLEXPRESS; AttachDbFilename=|DataDirectory|DatabaseName;“ + “Integrated Security=True;Connect Timeout=60;User Instance=True”,第9章 ADO.NET与数据操作,需要在代码中添加对命名空间的引用: using System.Data.SqlClient; 可通过连接字符串直接创建SqlConnection对象,例如: SqlConnection conn = new SqlConnection(connString); 或者: SqlConnection conn = new SqlConnection(); conn.ConnectionString = connString;,第9章 ADO.NET与数据操作,在ADO.NET中,有两种操作数据库的方式: 1.采用无连接的方式 2.采用保持连接的方式 不论采用哪种方式,都可以通过SqlCommand对象提供的方法传递对数据库操作的命令,并返回命令执行的结果 在保持连接的方式下操作数据库的一般步骤为: 1) 创建SqlConnection的实例; 2) 创建SqlCommand的实例; 3) 打开连接; 4) 执行命令; 5) 关闭连接。,第9章 ADO.NET与数据操作,SqlCommand对象提供了多种完成对数据库操作的方法: 1. ExecuteNonQuery 该方法执行SQL语句的结果,但不返回命令执行的表数据,仅返回操作所影响的行数 2. ExecuteReader 返回一个SqlDataReader对象 3. ExecuteScaler() 该方法用于执行SELECT查询,得到的返回结果为一个值的情况,比如使用count函数求表中记录个数或者使用sum函数求和等,第9章 ADO.NET与数据操作,第9章 ADO.NET与数据操作,private void AddGrade() using (SqlConnection conn = new SqlConnection(connectionString) string sql = “update MyTable2 set 成绩=成绩+10 where 姓名=张三玉“; SqlCommand cmd = new SqlCommand(sql, conn); listBox1.Items.Clear(); try conn.Open(); int number = cmd.ExecuteNonQuery(); listBox1.Items.Add(string.Format(“修改了0条记录“, number); catch (Exception ex) listBox1.Items.Add(string.Format(“修改记录失败:0“, ex.Message); ,第9章 ADO.NET与数据操作,private void ShowMyTable1() using (SqlConnection conn = new SqlConnection(connectionString) SqlCommand cmd = new SqlCommand(“select * from MyTable1“, conn); listBox1.Items.Clear(); try conn.Open(); SqlDataReader r = cmd.ExecuteReader(); while (r.Read() listBox1.Items.Add(string.Format(“01“, r0, r1); r.Close(); catch (Exception ex) MessageBox.Show(ex.Message, “读取记录失败“); ,第9章 ADO.NET与数据操作,private void CountMyTable2() using (SqlConnection conn = new SqlConnection(connectionString) SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; try conn.Open(); cmd.CommandText = “select count(*) from MyTable2 where 姓名 like 王%“; int record = (int)cmd.ExecuteScalar(); cmd.CommandText = “select sum(成绩) from MyTable2 where 姓名 like 王%“; double sumValue = Convert.ToDouble(cmd.ExecuteScalar(); MessageBox.Show(string.Format(“有0条姓王的记录,合计成绩为1“, record, sumValu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 砼工程技术交底
- 2026届上海市高桥中学高三上化学期中学业质量监测模拟试题含解析
- 尿液上皮细胞临床解析
- 如何书写方案汇报
- 热控车间动画讲解
- 消化道肿瘤的预防
- 内蒙古乌兰察布市集宁区集宁一中2026届化学高三上期中达标检测试题含解析
- 项目履约季度汇报
- 施工安全管理汇报
- 唐代楷书教学讲解
- 河北省专业技术职务任职资格申报评审条件摘编(2003年版)
- GB/T 4666-2009纺织品织物长度和幅宽的测定
- GB/T 15166.4-2021高压交流熔断器第4部分:并联电容器外保护用熔断器
- GB/T 13477.17-2017建筑密封材料试验方法第17部分:弹性恢复率的测定
- 送达地址确认书(完整版)
- 四川滑雪场商业综合体设计方案文本含个方案 知名设计院
- 日立电梯常用零配件价格清单
- 单位人事证明(共7篇)
- 水泵设备单机试运转记录
- 保密管理-公司涉密人员保密自查表
- 日常安全检查记录
评论
0/150
提交评论