0.1143

五煦查题

快速找到你需要的那道考题与答案

尔雅c#程序设计_2期末答案(学习通2023完整答案)

67 min read

尔雅c#程序设计_2期末答案(学习通2023完整答案)

第1讲 C#程序设计简介

第1讲测验 C#程序设计简介

1、尔雅以下哪个属于控件
A、序设习通按钮
B、计期标签
C、末答下拉框
D、案学图片框
E、完整Timer
F、答案单选按钮
G、尔雅复选框
H、序设习通整数
I、计期实数

2、末答编写事件,案学可以在属性窗口中找到“闪电”图标

3、完整按惯例,答案C#中的尔雅属性、方法、事件的首字母都大写

4、编写事件,可以在属性窗口中找到“闪电”图标

5、using名字空间的好处是后面可以简写

6、一般说来,属性都是名词或形容词

7、方法一般都用动词

8、程序的入口是main方法,这里的main要小写。

9、解析整数,可以用int的什么方法

10、使用哪个函数可以修改颜色?

11、计时器控件的时间间隔是用哪个属性表示的

12、随机数是用什么对象表示的

13、切换到代码窗口按快捷键

14、解析实数,可以用double的什么方法

15、可以用哪个类表示数学相关的函数

16、求平方根,可以用哪个函数

第1讲作业 简单的程序

1、编写一个简单的C#程序。要求使用WindowsForm及控件,使用对象的属性、方法及事件。 提交作业时,请将项目下的所有文件压缩成rar或zip文件并提交(要求含项目及源程序等,但最好要去掉bin及obj文件夹)。 评分标准: 程序能编译运行(3分); 使用窗体及控件(3分); 使用属性、方法及事件(3分); 总体效果较好,或者有一定创意(1分)。

第2讲 C#语言基础

2.1 数据类型、变量与常量 —— 语言中的单词随堂测验

1、+(加号)可以表示
A、算术的加法
B、正号
C、字符串的连接
D、事件的注册(+=)

2、int是引用类型

3、string是引用类型

4、double在内存中占8个字节

5、int占2个字节

6、Person p1 = new Person(18); //Person是引用类型 Person p2 = p1; 如果 p1.age=35; 则 p2.age也是35

7、Point p1 = new Point(18,20); //Point是struct Point p2 = p1; 如果置 p1.x=35; 则 p2.x也是35

8、1E7 是不合法的,因为它不是标识符

9、byte是无符号字节

10、uint是无符号整数

11、string等价于System.String

12、++运算符最好写到复杂的表达式中,而不要单独写

2.2 运算符与表达式 —— 语言中的标点符号随堂测验

1、非零即真

2、a>b>c是合法的

3、优先级是这样的:算术>关系>逻辑>三目>赋值;位运算比较乱

4、||表示条件或

5、&是表示字符连接运算

6、^是表示乘方运算

7、写表达式时,适当加上圆括号,则其可读性会更好

8、&&是条件与,也叫短路与

9、++运算符最好写到复杂的表达式中,而不要单独写

第2讲测验 C#语言基础

1、int是值类型

2、int是引用类型

3、string是引用类型

4、double在内存中占8个字节

5、int占2个字节

6、Person p1 = new Person(18); //Person是引用类型 Person p2 = p1; 如果 p1.age=35; 则 p2.age也是35

7、1E7 是不合法的,因为它不是标识符。

8、byte是无符号字节

9、uint是无符号整数

10、string等价于System.String

11、++运算符最好写到复杂的表达式中,而不要单独写

12、&&是条件与,也叫短路与

13、写表达式时,适当加上圆括号,则其可读性会更好

14、^是表示乘方运算

15、&是表示字符连接运算

16、||表示条件或

17、a>b>c是不合法的

18、优先级是这样的:算术>关系>逻辑>三目>赋值;位运算比较乱

19、非零即真

20、数组要先分配空间然后才使用

21、在声明数组时,可以直接指明大小

22、数组的下标从1开始

23、所有的数组都有一个属性Length

24、二维数组的写法是[,]

25、交错数组实际上是数组的数组

26、int[][] a = new int[][3]; 是合法的

27、数组在new时,其元素会默认初始化

28、二维数组的第二维的大小可以使用GetLength(1)来得到

29、先写注释后写代码是一个好习惯

30、控件命名使用匈牙利命名法是一个好习惯

31、程序中要尽量少写函数

32、循环一般都有五要素

33、if语句子可以没有else子句

34、switch语句中,一般情况下每个case都有break

35、switch语句中,case后面可以是变量

36、switch语句的变量可以是string类型的

37、do循环至少执行一次

38、循环中的continue表示执行下一次循环

39、循环中的break表示中断循环

40、屏保程序的扩展名叫.scr

第2讲作业 自动出题并判分的改进

1、作业题1 编写一个Windows程序,实现自动出题并判分的功能。 功能要求 能使用Random类随机出加减法的题目(2分) 能使用if/switch进行答案的判断(2分) 能使用事件处理,当用户答案填正确时,界面上有反馈(如文本框背景颜色的改变)(2分) 能使用Timer控件,自动发出事件,如自动出题(2分) 其他扩充功能(选做),如难题的判断,得分的计算等等(2分)。 界面可以参考(仅供参考,可以自由发挥)

第3讲 面向对象的C#语言

3.1 类、字段、方法 —— 面向对象那点事儿随堂测验

1、字段与方法都要放到类中,不能独立于类之外。

2、this指当前对象,后面用->符号来访问其成员。

3、构造方法返回类型是void

4、字段相当于变量,方法相当于函数。

3.3 类的继承 —— 富二代值得羡慕吗随堂测验

1、C#中,用哪个符号来表示继承

2、访问父类的成员,使用关键词

3、C#所有的类都是___________的子类

4、要重写父类的方法,使用关键词

5、判断一个对象是不是某个类的实例,使用运算符

6、类似于强制类型转换但不抛出异常的运符符是

3.4 修饰符 —— 形容词有大作用随堂测验

1、protected是与继承相关的

2、C#变量不能将全局变量写在类之外,但可以用static变量表示全局变量。

3、const只能用于基本类型及string

4、sealed表示不能被继承

5、abstract表示抽象的,不能被实例化,也就是说不能有构造方法

6、static方法中可以用this来访问其成员

7、static变量,即可以用类名来访问,又可以用对象实例来访问

8、internal大体相当于C++的friendly,但是它是基于程序集的

9、readonly就是const

10、abstract类一般都是用来被继承的

第3讲测验 面向对象的C#语言

1、字段与方法都要放到类中,不能独立于类之外。

2、字段相当于变量,方法相当于函数。

3、this指当前对象,后面用->符号来访问其成员。

4、构造方法返回类型是void

5、C#中,用冒号来表示继承

6、访问父类的成员,使用关键词father

7、C#所有的类都是object的子类

8、所有的对象都有ToString()方法

9、object等价于System.Object

10、要重写父类的方法,使用关键词override。

11、as类似于强制类型转换但不抛出异常

12、判断一个对象是不是某个类的实例,使用运算符is

13、如果要一个Person对象,来一个Student对象是完全可以的。

14、internal是基于程序集的访问控制

15、protected是与继承相关的

16、static变量,即可以用类名来访问,又可以用对象实例来访问

17、static本质上与this是对立的

18、static方法中可以用this来访问其成员

19、C#变量不能将全局变量写在类之外,但可以用static变量表示全局变量。

20、readonly就是const

21、const可用于基本类型及string

22、sealed表示不能被继承

23、abstract表示抽象的,不能被实例化

24、abstract表示抽象的,不能被实例化,也就是说不能有构造方法

25、abstract类一般都是用来被继承的

26、interface表示接口

27、interface中的方法自动就是public的,而且是abstract的

28、interface一般用于表示某种特征

29、一个类只能实现一个接口

30、interface的名字习惯用字母I开始

31、实现interface的方法前一定要用public修饰

32、enum本质是上符号化的整数

33、enum量可以用于switch语句

34、面向对象的程序的主体是定义各种类

第3讲作业 ATM示例程序的改进

1、在3.1中的银行ATM示例的基础上,利用本讲所学的面向对象的思想及语法,进行改进。要求如下: 1. 使用面向对象的思想,模拟现实世界中的银行、账号、ATM等对象,其中类中有字段、方法; 2. 在程序中适当的地方,使用属性、索引,注意使用修饰符; 3. 使用继承,继承账号(Account类)得到一个子类(如信用账号),增加字段(如信用额度)、属性、方法,覆盖(overrid)一些方法(如WithdrawMoney)。 4. 根据程序的需要(可选做),使用C#的其他语法成分,诸如:接口、结构、枚举等。 程序中加上适当的注释,并加一个说明文件,简要描述在什么地方使用了一些特殊的语法要素。 评分标准: 银行、账号、ATM等类,其中类中有字段、方法(3分); 使用属性或索引,注意使用修饰符(2分); 使用继承(3分); 使用其他语法要素(2分)。

第4讲 C#语言高级特性

第4讲测验 C#语言高级特性

1、如果try子句中有return语句,则finally子句就不会执行了。

2、在catch异常时,子类异常(更具体的异常)在写到父类异常(更一般的异常)的前面。

3、自定义异常要从Exception(或其子类)进行继承

4、Attribute在使用时用方括号

5、C#中是可以使用指针的,但是要慎用

6、在C#2以上的版本中,可以这样写:MyDelegate d2 = obj.myMethod;

7、C#可以实现函数的函数(高阶函数)

8、委托具有多播的特点,即一次可以调用多个函数

9、在C#中,(省略new EventHandler)可以简写为:button1.Click += button1_Click;

10、运算符本质上是一个函数,但是书写起来更直观

11、在C#中,要注意[](索引)还有运算符也都是函数

12、在C#中,[]有索引、Attribute、数组等用途

13、程序集是指编译生成的dll及exe。

14、internal修饰符是针对程序集的可访问性

15、Lambda本质上是一种匿名函数

16、Lambda表达式的函数参数型是可以省略的

17、匿名函数可以不带参数

18、抛出异常可以使用throw语句

19、一般要使用InnerException来形成异常的链接

20、Lambda表达式不能作为函数的参数

21、event可以理解为一种特殊的委托变量

22、事件的委托类型一般带两个参数,一个sender,一个是事件参数

23、事件在类之外可以使用+=、-=

24、事件在类之外可以判断是否为null

25、事件可以在类之外进行调用

第4讲作业 再次改进“银行系统”

1、在上一讲作业的“银行系统”的基础上,再一次改进,做一个新的版本,增加本讲所学的语法要素,如委托、事件与异常等。 要求如下: 1)上一版本中关于类、属性、方法、继承、修饰符等你不太满意的地方(或者你从别人那里学到的)可以进一步改进。改进的地方可以加上注释说明。(占3分) 2)程序中使用事件及委托。参照视频中提到的“六步法”,在ATM类中实现一个事件BigMoneyFetched (一大笔钱被取走了),即ATM机在操作时如果用户取款数大于10000,则可以激活这个事件。事件参数也是一个对象(可以定义类BigMoneyArgs),含有账号及当时取款数。在程序中(如Main中)注册这个事件,使之能在界面中显示出告警信息(相当于银行的监控功能)。(占3分) 3)程序中使用自定义异常。比如,定义一个异常类BadCashException,表示有坏的钞票。在程序中适当的地方(如取款函数)中,抛出(throw)(自定义的异常类(如random的Next(3)小于1,表示有三个之一的概率时就抛出),在ATM调用这个函数时进行捕获(catch)。(占3分) 4)使用其他语法(可选,如Attribute、Lambda表达式)。(占1分,虽没有使用这些语法,但程序总体印象较好时,也可获得这1分) 提交时,最好写一个简短说明你用的类及技术。

第5讲 基础类及常用算法

第5讲测验 基础类及常用算法

1、DotNet基本库包括System,System.Data,System.Windows等多个名称空间。

2、任何对象都是object类的子类或间接子类

3、任何对象都有ToString()方法

4、任何对象都有Equals()方法

5、任何对象都有GetType()方法

6、参与运算时,所有的byte, short等转为int

7、常量也是对象

8、3.ToString()是合法的

9、"Hello".Length是合法的

10、强制类型转换的书写方法是:int(3.14)

11、System.Convert可以方便地用来进行类型转换

12、Convert.ToDateTime()方法表示转成日期时间类型

13、Convert.ToDouble()方法表示转成实数

14、Convert.ToInt()方法表示转成整数

15、int也是一种类型,相当于System.Int32

16、int.MaxValue表示最小整数

17、int.MinValue表示最小整数

18、Double.IsNaN()用于判断是不是一个数值

19、int也是继承了System.Object

20、int.Parse(string)可能会抛出异常

21、int.TryParse()方法可能会抛出异常

22、Math类提供了相关的数学方法

23、Math.Abs()表示绝对值

24、Math.Round()表示舍入到几位小数

25、Math.Exp() 表示指数

26、Math.Pow() 表示乘方

27、Math.Sqrt()表示平方根

28、Random的NextDouble()表示产生一个0至1之间的实数

29、Random的Next(100)表示产生一个0至100(含)之间的实数

30、DateTime 是引用类型

31、DateTime.Now表示当前时间

32、DateTime的AddMinutes(5)表示加5秒

33、两个日期相减,可以得到一个TimeSpan

34、String的Substring(idx, len ) 表示求子串

35、String对象的Length()是一个方法

36、String对象的.StartsWith()表示判断是以某字符串结尾

37、String对象的Trim()表示去掉字符串中的所有空格

38、String对象的Split(',')表示按逗号进行分割

39、String对象在循环体中用 s+=….可能会带来效率问题

40、string对象的内容是不可变的

41、StringBuilder内容是不可变的

42、foreach(类型 变量 in xxxx)表示遍历数组或集合

43、List 、 LinkedList、 SortedList 表示列表(线性表)

44、Dictionary 表示字典,可以用来表示key-value对的集合

45、Stack表示栈

46、Queue表示队列

47、Hashtable的 [ ] 索引,可以表示获取/加入/修改/删除(置为null)

48、Array.Sort方法可以用来表示排序

49、算法是指令的有限序列

50、算法要求有穷性

51、算法要求可行性

52、算法要求确定性

53、算法有输入输出

54、遍试算法在逻辑上是针对所有可能的情况进行判断

55、遍试算法在形式上是for中用if

56、迭代算法在形式上是while中用a = f( a )

57、递归算法在逻辑上是一个问题化为同样的问题

58、递归算法在逻辑上是一个问题化为同样的问题

59、递归算法在形式上是f(n)中调用f(n-1)

60、递归算法的思想是“分而治之”

61、现实生活中有很多递归现象

62、遍试、迭代、递归是常用的三种算法

第5讲作业 关于画树例子的改进

1、改进5.7中“画树”的例子程序,画出不同风格的“树”来。 在5.7的例子中,两棵子树的生长点都在(x1,y1),我们改进一下,将两棵子树的生长点不同,在(x1,y1)及(x2,y2)。 程序中可以加上一些控件(如滚动条、文本框等),以方便用户修改角度(例子中是35及30度)、长度(例子中是per1,per2),这里又加了两子树的位置的系数(即点0至点2的长度是点0至点1的长度的多少倍k)。(例子中,x1=x0+leng*cos(th), 这里要加个x2=x0+leng*k*cos(th) )。 还可以加上颜色、粗细、是否随机等选项,全在于发挥你的想像力!

第6讲 流、文件

第6讲测验 流、文件

1、File类的方法都是static的,而FileInfo则可以new一个实例。

2、使用文本文件,经常要考虑文本编码。

3、FileInfo是FileSystemInfo类的子类。

4、DirectoryInfo继承自FileInfo。

5、DirectoryInfo继承自FileSystemInfo。

6、使用BinaryFormatter对象的Deserialize()方法可以反序列化。

7、Serialize()方法可以反序列化。

8、[Serialize]这个Attribute表示对象可序列化

9、FileStream可以用于二进制文件内容的读写

10、可以求出文件的大小、日期的类是______

11、读取文本文件最好用的类是______

12、向文本文件写入信息最好用的类是______

13、Encoding.______表示默认编码。

14、使用StreamReader的_____()方法表示读取一行

15、使用StreamReader的_____()方法表示读取到文件尾

16、使用StreamWriter的_____()方法表示写入一行

第6讲作业 背单词程序

1、这一讲是关于文件及流的操作。我们来做一个综合但不太复杂的程序"背单词"。 (单词的文本文件,请见本讲的小结中的“附件--英语四级单词文本”。) 要求如下: (4分)能将英语四级单词文本文件的内容读出来及放到内存的数组或列表中(使用StreamReader的循环读ReadLine()或直接ReadToEnd(), 然后用string的Split('\n')分割成多行;然后对每一行Trim().Split('\t')得到的string[]的第0个即为英语单词,第1个即为汉语意思,可以放到两个数组或列表List中)。 (4分)使用大仕老师最喜欢的Timer,每隔一定时间,让英语单词及汉语意思显示到屏幕上(可以用两个标签控件)。(注意要有一个下标变量,每次加加,以实现每次显示的单词不同)。(再提示:让窗体的TopMost属性置为True,这个窗体就不会被其他窗口遮盖,你就可以随时随地背单词了!) (2分)你可以加点花样,如随机,如可以让用户可以调整背单词的速度,或者你可以将界面做得比较cool,更高级的是还可以保存进度,再高级的是使用艾宾浩斯遗忘曲线(我们的作业要求不要这么高,再高就是一个商业软件的的要求了,呵呵)。

第7讲 Windows窗体与控件

7.2 常用控件随堂测验

1、控件Control类都是System.Windows.Forms.Control的子类

2、Control实现了IDisposable等接口

3、组件也是显示在界面上的控件

4、KeyPress事件实际上包括了KeyDown及KeyUp

5、文本框的PasswordChar可以使之成为密码框

6、多行文本框要设置MultiLine属性

7、向列表框中添加项目可以使用Items.Add()方法

8、日期时间框的Value属性可以用来表示用户选取的时期时间

9、进度条 ProgressBar的Maximum表示最小值

10、RichTextBox 富文本框的.Select(start,len)方法表示选中其中一部分

11、富文本框的SelectionColor属性可以用来设定一部分内容的颜色

12、面板及选项卡是常用的容器

第7讲测验 Windows窗体与控件

1、编程时,要根据需要来选择合理的事件

2、在英文中,Anchor表示抛锚、锚定;Dock表示船坞、船停靠码头。

3、打开窗口可以使用Show或ShowDialog方法

4、使用static变量可以表示窗体间的公用变量

5、用户控件可以使用拖动的方式添加到窗体中

6、控件Control类都是System.Windows.Forms.Control的子类

7、Control实现了IDisposable等接口

8、组件也是显示在界面上的控件

9、KeyPress事件实际上由KeyDown及KeyUp才能激发

10、文本框的PasswordChar可以使之成为密码框

11、多行文本框要设置MultiLine属性

12、多行文本框最好要设置ScrollBars属性

13、向列表框中添加项目可以使用Items.Add()方法

14、日期时间框的Value属性可以用来表示用户选取的时期时间

15、进度条 ProgressBar的Maximum表示最小值

16、RichTextBox 富文本框的.Select(start,len)方法表示选中其中一部分

17、富文本框的SelectionColor属性可以用来设定一部分内容的颜色

18、富文本框的SelectionFont属性可以用来设定一部分内容的字体

19、面板及选项卡是常用的容器

20、容器不是控件

21、窗体也是控件

22、WebBrowser控件可以使用Navigate方法来显示网页

23、WebBrowser控件可以使用ShowPage方法来显示网页

24、用户控件可以将多个控件组合起来

25、用户控件一定含有多个子控件

26、Visible 表示可见性

27、Enabled表示可见性

28、ProgressBar的Value表示当前值

29、OpenFileDialog控件可以用来选择文件

30、ColorDialog可以用来选字体

第7讲作业 2048小游戏

1、游戏2048是一个很好玩的游戏(我家的小女儿有段时间天天玩这个游戏)。它的基本方法是:用上下左右4个方向键,将屏幕上的数字块进行“移动”,如果移动后相同的则进行数字的合并,每次移动后又产生一个新的数(2或4)。要求用户得到数字2048就赢了。 请在本讲小结中下载大仕老师写的初步的2048小程序,进行阅读理解,然后改得更好。 阅读后要写个简单的阅读报告(可以与程序的说明文件写到一起),谈谈你的理解与阅读收获。 给程序加上显示分数的功能(score这个变量程序中已有了)。 给程序加上选择模式的功能(gameMode这个变量已有了,想办法用上)。 给程序加上记录最高分的功能(可以写到一个文本文件中)。如果用户得到的分数比记录高,则更新这个记录,并给用户以祝贺。 其他方面的修改,如美化界面,加上下左右4个按钮(让用户可以使用鼠标)来完成,或者是其他方面的修改(就要发挥你的想像了)。 评分标准: 有阅读报告(2分); 有显示分数的功能(2分); 有模式的选择(2分); 能记录最高分数(2分); 其他改进(2分)。

第8讲 绘图及图像

第8讲测验 绘图及图像

1、程序中进行绘图,要使用绘图对象,这个对象是
A、Graphics
B、Drawing
C、Paint
D、HDC

2、DrawRectangle表示
A、画正方形
B、画矩形
C、画填充的矩形
D、画圆

3、获得Color的方法包括
A、Color.FromArgb()
B、Color.FromName()
C、Color.Red等
D、new Color()

4、Pen, Brush, Color, Rectangle表示画笔,画刷,颜色,矩形

5、自己创建的各种绘图对象,如Graphics, Pen, Brush最好调用Dispose方法进行资源的释放

6、Size()是个结构体,它进行了+及-运算符的重载

7、Point和PointF是一样的

8、Paint事件的参数中可以有Graphics对象

9、DrawString方法中都需要字体、画刷等参数

10、Bitmap类是表示图像

11、使用bitmap.GetPixel(x,y)可以得到像素点

12、在进行图像处理时,使用指针可以提高效率

13、图像滤镜的作用是对图像进行变换处理

14、可以用控件的( )方法得到Graphics对象

15、( )可以实现绘图时的坐标变换

16、( )表示绘图路径

17、( )属性可以实现绘图过程的双缓冲

18、表示图像的抽象类是( )

第8讲作业 公章或搞笑证书生成器

1、使用绘图功能生成一个公章或搞笑证书。 关于搞笑证书可以从网上搜索。 你也可以生成一个转账截图或微信对话截图之类的图片。 其中可能会用到诸如tranlate/rotate等功能,也可能会用到绘制图像的功能。 评分标准: 使用绘图功能来生成一个公章或证书或其他(8分); 总体效果(2分)。

第9讲 文本处理及正则表达式

第9讲测验 文本处理及正则表达式

1、Main()函数可以带 string[]参数

2、Main()函数可以有返 回值(int),也可以为void

3、String对象的内容是不可变的

4、正则表达式(Regular Expression)用来表示匹配某类文本

5、[0-9]{ 2,4} 表示数字是2个或4个

6、^[a-zA-Z]+$ 表示多个字母组成的行

7、[a-zA-z] 即\W (大写W)

8、[0-9] 即\d

9、\s 即空白

10、.表任意一个字符

11、|表示或者

12、()表示成组

13、位置限定用^$分别表示首尾

14、\b单词边界

15、(?<名称>xxxxxxxx) 表示对分组进行命名

16、在替换时, 使用 ${ 名称}

17、若不命名,则为$1, $2等等 而$0 表示整个匹配

18、MulitLine 与SingleLine 是两个相反的选项

19、正则表达式使用System.Text.RegularExpressions下的()类

20、Regex对象的( )方法可以找到所有的匹配

21、可变内容的字符串是用( ) 类

22、处理文本编码的类是 System.Text.( )类

第9讲作业 身份证输入框

1、对输入框中输入的身份证是否合法进行验证:一是使用正则表达式对格式进行验证(共18位,前17位是数字,最后1位是数字或字母X);二是对身份证的最后一位的有效性进行验证。 背景知识:身份证号码中的校验码是身份证号码的最后一位,是根据〖中华人民共和国国家标准GB 11643-1999〗中有关公民身份号码的规定,根据计算公式计算出来的,计算公式可参见百度百科: http://baike.baidu.com/view/5112521.htm 评分标准: 使用正则表达式进行格式验证(4分); 使用身份证校验公式进行有效性验证(4分); 整体效果(2分)。

第10讲 网络信息获取及Xml处理

第10讲测验 网络信息获取及Xml处理

1、xml文档最前面是声明<?xml

2、xml文档中用<!-- -->表示注释

3、xml文档中用<表示大于号

4、xml文档中用&表示&

5、XmlDocument是表示Xml文档的类

6、XmlNode是XmlDocument的子类

7、InnerXml是表示节点的内部xml

8、ChildNodes是表示子节点的集合

9、XPath 是对XML进行查询的表达式

10、SelectNodes是使用Xpath进行查询的基本方法

11、Chrome/FireFox等浏览器 F11表示进行开发者工具

12、Request 类 是请求响应

13、HttpServerUtility是实用工具,可以用来对网址进行编码

14、WebClient具有DownloadData 及 DownloadFile等方法

15、网络信息获取经常需要使用线程

第10讲作业 简单的网络爬虫

1、做一个网络爬虫程序: 从一个网址,如http://hao.360.cn开始,得到网页的内容,找到其中的链接,并进一步下载(注:可以将已下载的链接保存入一个Hashtable中,其key为链接的网址,下载前其值为false,下载后其值为true)。 (要注意绝对引用与相对引用的问题,为了简化,可以只考虑绝对引用的链接)。 评分标准: 能获取网页内容(3分); 能解析出网页的内容中的网址(3分); 能放入一个hashtable中进一步下载(3分); 总体情况(1分)。

第11讲 多线程与异步编程

第11讲测验 测验: 线程、并行及异步编程

1、线程的基本类是Thread

2、Thread类的构造方法要求一个委托

3、Thread中可以使用lambda表达式

4、Thread中的委托可以有返回值

5、使用Join()方法将单独的执行线程合并成一个线程

6、Timer的本质是一个线程

7、集合都是线程安全的

8、对界面的更新只能使用专门的界面处理线程

9、Task类,是利用线程池来进行任务的执行

10、Parallel类,是并行执行任务类的实用类

11、async表示异步编程

12、await语句只能用在异步环境

13、使用async可以简化线程对界面的更新

第11讲作业 多线程的网络信息获取处理

1、作业题1 编写一个程序,进行多线程的网络信息获取处理 1)要求使用网络信息(3分); 2)要求使用正则表达式或xml技术(2分); 3)使用多线程技术或异步技术(3分); 4)整体效果较好(2分)。 在作业提交时,请注意: 1)程序内要有适应的中文注释,变量名/函数名/类名要合适. 2)程序的基本功调试通过并能出结果才进行提交. 3)可以写一个readme文件,摸述一下程序的功能,程序的特点,程序的模块,所用到的技术,以及尚未完成的功能. 题目具体内容可以选择以下的内容(注意:以下地址仅供参考,如果不可用,请自行查找,可以在浏览器中用F12查看网络信息。另外,网址可以换换http及https试试),也可以自定: ●自动联想词语: 使用baidu及google的suggestion做一个自动联想及提示功能(可在上课示例的基础上改造) ●自动语言翻译: 使用baidu或yahoo的翻译功能,作一个翻译接力程序,可以在多种语言间翻译;或者使用多种翻译源(可参考课上的示例) ●网络词典: 使用多个网络词典的查询功能, 作一个词典 (可参考www.lingeos.com) 以下两个网址供查询 互动词典 http://dict.hudong.com/dict.do?title=XXXXXXX&from=lingoes&type=1 词典 http://api.dict.cn//wapi.php?q=XXXXXXXX&client=lingoes ●地震数据显示: 将地震数据的经纬度数据在图上显示出来(经纬度作坐标,震级作点的大小,深度作颜色) 数据地址: http://www.csndmc.ac.cn/newweb/cgi-bin/csndmc/cenc_cat_w.pl?mode=list&days=7 地图地址: 可以使用百度地图的static map api ●实时信息显示: 实时获取股票/汇率/天气等信息并显示或计算或告警 ●随机图片显示:使用google, baidu, bing或flickr等网站上的图片显示出来,或动态切换, 或设为桌面背景. 思路可参考 http://www.codeproject.com/KB/IP/google_image_search_api.aspx ●下载一个网页中所含的图片或Flash: 给一个网址,得到网页的内容,找到其中所有的图片及Flash并下载保存. ●下载网页并过滤其中的"脏字"(如不文明的用语). ●做一个网络爬虫程序: 从一个网址开始,得到网页的内容,找到其中的链接,并进一步下载(注:为了防止循环引用的问题,可以将已下载的链接保存入一个Hashtable中).(要注意绝对引用与相对引用的问题,为了简化,可以只考虑绝对引用的链接). ●做一个网络爬虫收集email地址. ●做一个网络爬虫统计常用字的出现频率(或词的出现频率).(提示:以上几种爬虫程序也可以合在一起,定义一个事件,在事件中处理各种各样的功能需求). ●做一个程序可以自动生成“宋词”。宋词中常用的高频词见 http://blog.sina.com.cn/s/blog_4920e0b40100wrnk.html

第12讲 访问数据库

第12讲测验 访问数据库

1、数据库系统的优点包括
A、共享性
B、独立性
C、完整性
D、冗余数据多

2、数据库管理系统的功能包括
A、数据定义
B、数据操纵
C、完整性控制
D、安全控制
E、并发控制

3、常用的数据库管理系统包括
A、Oracle
B、Sql Server
C、MySql
D、Access

4、数据库管理系统简称DBMS

5、关系型数据库以二维表格的形式来组织数据

6、DataTable对应于数据库中的表

7、DataRow对应于数据库中的行(记录)

8、DataColumn对应于数据库中的行

9、主键(primary key)是数据表中的某一行

10、数据表只能表示实体,不能表示实体之间的关系

11、实体关系图也叫E-R图

12、SQL语言是数据库的标准操作语言

13、SQL语言在所有的数据库中都是完全一样的

14、最常用的语句包括增删改查的语句

15、SELECT avg( salary ) FROM employee 表示查出最大值

16、SELECT语句中用while表示查询条件

17、SELECT count(*) FROM employee 表示查出记录条数

18、增加记录用insert语句

19、更改记录用update语句

20、删除记录用delete语句

21、创建表用create table语句

22、针对不同的数据库要使用不同的Provider

23、DataSet可以含有多个DataTable

24、访问数据的两种基本方式包括DataAdapter及DataReader

25、数据库连接串用来表示要连接的数据库及相关信息

26、Connection表示连接

27、Command表示命令

28、编写数据库应用时,可以建立自己的实用程序类,这样方便数据库的访问。

29、编写数据库应用时,最好将界面层、业务层、数居访问层分开。

30、使用DataGridView可以方便地显示DataTable数据

第12讲作业 使用数据库的背单词程序

1、做一个“背单词”程序,要求使用数据库技术。其中具体的单词可以参考第6讲,要求放入到数据库中。数据库可以采用小型的数据库(如Access, Sqlite等),也可以采用一般的数据库(如sql server)。要求有窗体界面。如果能加入标记生词或记录已背次数、测验等功能会更好。 评分标准: 窗体应用(2分); 使用了数据库技术(3分); 有背单词的功能(3分); 整体功能较好(2分)。

第13讲 深入理解C#语言

第13讲测验 深入理解C#语言

1、值类型包括
A、简单类型
B、结构类型
C、枚举类型
D、字符串类型

2、引用类型包括
A、类类型
B、数组类型
C、指代类型
D、接口类型

3、值类型与引用类型在内存中的创建方式有所不同

4、值类型不能使用new来创建

5、字符串是特殊的值类型

6、String类型的字符串的内容是不可变的

7、枚举类型与数字类型之间可以显式转换(强制类型转换)

8、不同的结构类型之间可以转换,前提是字节数相同

9、Person p = new Student(); 是一种隐式转换

10、Boxing and unboxing是引用类型与值类型之间的转换

11、类static变量相当于类中的“全局变量”

12、域变量(字段)相当于对象中的变量

13、局部变量也是一种字段

14、局部变量自动有初始值

15、ref参数在传之间必先赋值

16、out参数在函数中必须赋值后才能返回

17、表达式及对象的属性不能作ref及out参数

18、params参数本质上是一种数组

19、在参变量中可以使用默认值

20、多态性是一个面象对象程序设计中很重要的概念

21、虚方法必须有virtual或abstract或override所修饰

22、所有的方法自动都是虚方法

23、static方法不是虚方法

24、虚方法调用的方法是由对象实例的类型所决定

25、非虚方法调用的方法是由所声明的对象类型来决定的

26、is运算符用于判断运行时对象的类型

27、引用类型的相等一定是判断是否是同一对象

28、String类型的相等是判断内容是否相同

29、typeof运算可以得到对象的类型

30、使用反射Reflection可以得到类型信息及attribute信息

31、构造方法中不用this且不用base,则会自动会调用base()

32、字段的初始化中不能引用this

33、构造方法的执行时,字段的初始化先于base构造方法的调用

34、应避免在构造方法中调用任何虚方法

35、静态构造方法总是在该类的所有静态域初始化之后执行

36、静态构造方法是每创建(new)一个对象时就会被执行一次

37、可以用delete语句来显式地调用析构方法

38、System.GC.Collect();可以让系统进行垃圾回收

39、资源的释放最好实现IDisposable接口,而不是用析构方法

40、使用using语句可以比较方便地管理资源的释放

41、C#2.0 引入泛型

42、C#3.0 引入Lambda及Linq

43、C#4.0 引入动态特性 dynamic

44、C#5.0 引入并行及异步 async/await及Task

45、C#6.0 可以方便地进行属性初始化

期末考试

判断题

1、按惯例,C#中的属性、方法、事件的首字母都小写

2、一般说来,属性是名词或形容词来表示的

3、解析实数,可以用double的Parse()方法

4、求平方根,可以用Math.Sqrt()函数

5、&&是条件或,也叫短路或

6、数组要先分配空间然后才使用

7、所有的数组都有一个属性Length

8、Attribute在使用时用方括号

9、event可以理解为一种特殊的委托变量

10、事件的委托类型一般带两个参数,一个sender,一个是事件参数

11、控件的Tag属性可以是任意类型(Object)

12、多行文本框要设置MultiLine属性

13、编写事件,可以在属性窗口中找到“闪电”图标

14、int占2个字节

15、string等价于System.String

16、protected是与继承相关的

17、static变量,即可以用类名来访问,又可以用对象实例来访问

18、interface中的方法自动就是public的,而且是abstract的

19、String对象的Split(',')表示按逗号进行分割

20、遍试算法在逻辑上是针对所有可能的情况进行判断

21、File类的方法都是static的,而FileInfo则可以new一个实例来使用。

22、各种控件是System.Windows.Forms.Control的子类

23、TextChanged表示文本改变事件

24、进度条ProgressBar的Maximum表示最小值

25、访问父类的成员,使用关键词super

26、要重写父类的方法,使用关键词overload

27、使用StreamReader的ReadLine()方法表示读取一行

28、计时器控件的时间间隔是用Interval属性表示的

29、判断一个对象是不是某个类的实例,使用as运算符

30、使用StreamWriter的WriteLine()方法表示写入一行

31、自己创建的各种绘图对象,如Graphics, Pen, Brush最好调用Dispose方法进行资源的释放

32、Size是个结构体,它进行了+及-运算符的重载

33、可以用控件的CreateGraphics ()方法得到Graphics对象

34、DoubleBuffered属性可以实现绘图过程的双缓冲

35、在进行图像处理时,使用指针可以提高效率

36、String对象的内容是不可变的

37、正则表达式(?<名称>xxxxxxxx) 表示对分组进行命名

38、XmlDocument是表示Xml文档的类

39、XPath 是对XML进行查询的表达式

40、网络信息获取经常需要使用线程

41、WebClient具有DownloadData 及 DownloadFile等方法

42、Thread中可以使用lambda表达式

43、Timer的本质是一个线程

44、集合都是线程安全的

45、对界面的更新只能使用主线程

46、await语句只能用在异步环境

47、SQL语言是数据库的标准操作语言

48、params参数本质上是一种数组参数

49、引用类型的相等==一定是判断是否是同一对象

50、资源的释放最好实现IDisposable接口,而不是用析构方法

学习通c#程序设计_2

在学习c#程序设计的过程中,掌握语法是很重要的一步。在上一篇文章中,我们已经介绍了一些基础语法知识,包括变量、运算符、流程控制等。在本篇文章中,我们将继续深入学习c#的语法,包括方法、数组、类等内容。

1. 方法

方法是c#程序中的一个基本组成部分,也是一个很重要的概念。方法可以看作是一种功能的封装,它可以接收参数,执行一系列操作,最后返回一个值。方法的定义如下:

访问修饰符 返回类型 方法名(参数列表){ 方法体 return 返回值;}

其中,访问修饰符决定了方法的访问权限,返回类型定义了方法返回的数据类型,方法名是该方法的标识符,参数列表定义了方法接收的参数类型和名称,方法体是在方法中执行的操作,return语句用于返回方法的执行结果。

下面是一个简单的方法定义示例:

public int Add(int a, int b){ int result = a + b; return result;}

上述方法的访问修饰符是public,返回类型是int,方法名是Add,参数列表包含两个int类型的参数a和b。在方法体中,我们定义了一个变量result,用于保存a和b的和,然后使用return语句将result作为方法的返回值。

调用该方法的示例如下:

int c = Add(2,3);

上述代码调用了Add方法,并将参数2和3传递给该方法。执行该方法后,返回结果5被赋值给变量c。

2. 数组

数组是c#中一种重要的数据结构,它可以用于存储一组相同类型的数据。数组的定义格式如下:

数据类型[] 数组名 = new 数据类型[数组长度]

其中,数据类型是要存储的数据类型,数组名是该数组的标识符,数组长度是数组中元素的个数。下面是一个简单的数组定义示例:

int[] numbers = new int[5];

上述代码定义了一个包含5个int类型元素的数组,名称为numbers。

数组的访问方式是通过下标来实现的,下标从0开始计数。下面是一个示例:

int[] numbers = new int[5];numbers[0] = 1;numbers[1] = 2;numbers[2] = 3;numbers[3] = 4;numbers[4] = 5;

上述代码分别将1~5赋值给numbers数组中的每个元素。要访问数组中的元素,可以使用下标,如下:

int a = numbers[0];

上述代码将numbers数组中第一个元素的值(即1)赋值给变量a。

3. 类

类是c#中的一个核心概念,它是一种用于封装数据和方法的数据结构。类可以看作是一种模板,可以用于创建对象并执行特定的操作。类的定义格式如下:

访问修饰符 class 类名{ 成员变量 构造函数 成员方法}

其中,访问修饰符决定了类的访问权限,类名是该类的标识符,成员变量是该类中的数据成员,构造函数是用于初始化对象的特殊方法,成员方法是该类中的操作方法。

下面是一个简单的类定义示例:

public class Person{ public string name; public int age; public void SayHello(){ Console.WriteLine(\Hello, my name is \name+\ and I am \age+\ years old.\ }}

上述代码定义了一个名为Person的类,包含两个成员变量(分别是字符串类型的name和整型的age)和一个成员方法SayHello。在SayHello方法中,我们使用Console.WriteLine语句输出一句问候语,并将name和age变量的值插入到字符串中。

要使用该类,需要先创建一个对象。创建对象的方式如下:

Person p = new Person();p.name = \Tom\p.age = 20;

上述代码创建了一个名为p的Person对象,并分别将Tom和20赋值给该对象的name和age属性。

调用该对象的SayHello方法的方式如下:

p.SayHello();

上述代码调用了p对象的SayHello方法,输出一句问候语并显示p对象的name和age属性值。

总结

在本篇文章中,我们介绍了c#中的一些重要概念,包括方法、数组和类。方法是一个执行特定操作的代码块,数组是一种用于存储相同类型数据的数据结构,类是一种封装数据和方法的数据结构。理解这些概念对于掌握c#程序设计非常重要,希望本篇文章对读者有所启发。