C#大作业完成版Word格式.docx
《C#大作业完成版Word格式.docx》由会员分享,可在线阅读,更多相关《C#大作业完成版Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
VisualStudio则是一种集成开发环境,这种环境能够方便、高效地编写、调试、生成应用程序。
2、简述.NET程序的编译和执行机制。
编译器将.NET源程序编译为CIL。
当.NET程序运行时,CLR的ClassLoader会将需要的CIL代码装入内存。
JIT负责将CIL转换成NativeCode。
尽管.NET源程序最初被编译成CIL,但实际上是以本地代码运行的,这就意味着程序运行速度几乎与最初就把它编译为本地代码一样快。
3、简述抽象类和接口的区别。
声明方法的存在而不去实现它的类被叫做抽象类(abstractclass),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。
不能创建abstract类的实例。
然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。
不能有抽象构造函数或抽象静态方法。
Abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。
取而代之,在子类中实现该方法。
知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。
在接口中,所有方法都是抽象的。
多继承性可通过实现这样的接口而获得。
接口中的所有方法都是抽象的,没有一个有程序体。
接口只可以定义staticfinal成员变量。
接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。
当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。
然后,它可以在实现了该接口的类的任何对象上调用接口的方法。
由于有抽象类,它允许使用接口名作为引用变量的类型。
通常的动态联编将生效。
引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。
4、什么是流?
列举.NET中几种常见的流?
它们的共同抽象基类是什么?
所谓流是字节序列的抽象概念,例如文件、输入输出设备、内部进程通信或者TCP/IP套接字等对数据的输入和输出均可看成流。
数据从外部传输到程序中,称之为读取流;
数据从程序传输到外部源,称之为写入流。
常见的流:
FileStream类(文件流),MemoryStream类(内存流),NetWorkStream类(网络流),BufferedStream类(缓冲处理流)。
共同抽象基类:
Stream类
5、简述值类型和引用类型的主要区别。
(1).值类型的数据存储在内存的栈中;
引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址。
(2).值类型存取速度快,引用类型存取速度慢。
(3).值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用(4).值类型继承自System.ValueType,引用类型继承自System.Object(5).栈的内存分配是自动释放;
而堆在.NET中会有GC来释放
C#中基本数据类型是值类型,结构也是值类型。
而数组、类、接口、字符串都是引用类型。
6、.NETFramework3.0/3.5增加了哪些新功能?
.NET3.5是在2.0和3.0现有技术基础之上附加了一些新的技术(如:
LINQ、AJAX、新编译器、基础类库中的附加类型等),具体见下图:
二、编程题(每题5分,共20分)
1、一列数的规则如下:
1、1、2、3、5、8、13、21、34......。
编写一个控制台应用,求第30位数是多少。
(要求使用递归算法实现)
代码如下:
namespace递归递加
{
classProgram
{
staticvoidMain(string[]args)
Console.WriteLine("
第30个数字为:
{0}"
add(30));
}
staticintadd(intx)
inta;
if((x==1)||(x==2))
a=1;
else
a=add(x-1)+add(x-2);
returna;
}
输出结果:
832040
2、编写一个控制台应用,实现输出一个从1开始到11*11长度的随机数序列。
namespace随机数序列
Randomrd=newRandom();
int[,]nums=newint[11,11];
for(inti=0;
i<
11;
i++)
{
for(intj=0;
j<
j++)
inta=rd.Next(100);
nums[i,j]=a;
Console.Write("
{0}"
nums[i,j]);
Console.WriteLine();
}
18252556179514517668
41871398751257891691
486604410985714166073
4177458630456370988761
2757634344489398958414
9338654176952872898
674536532120791439173
873842806654920176489
276712076289417118471
188918791277319814596
64547113729878817244
请按任意键继续...
3、编写一段代码,随机产生10个[10,99]之间整数,并将这些数添加到ListBox控件中,每个数占一行。
namespacelist
publicpartialclassForm1:
Form
publicForm1()
InitializeComponent();
privatevoidForm1_Load(objectsender,EventArgse)
listBox1.Items.Add(rd.Next(10,99));
4、设计一个描述坐标点的CPoint类,该类实现以下功能:
其私有变量x和y代表一个点的x,y坐标值。
利用构造函数传递参数,并设其默认参数值为60和75,利用公有成员方法display()输出这一默认值;
利用公有成员方法setpoint()将坐标值修改为(80,150),并利用成员方法输出修改后的坐标值。
namespacepoint
classCPoint
privateintX;
privateintY;
publicCPoint(intx,inty)
X=x;
Y=y;
publicvoiddisplay()
point({0},{1})"
X,Y);
publicvoidsetpoint(intx,inty)
X=x;
Y=y;
CPointcp=newCPoint(60,75);
cp.display();
cp.setpoint(80,150);
point(60,75)
point(80,150)
三、综合设计题(每题25分,共50分)
1、已知SQL2000数据库myDB中存在一个“学生基本信息”表(表中已经存在若干记录),表的数据结构如下:
学号
姓名
性别
出生日期
住址
char(11)
Varchar(10)
char
(2)
datetime
Varchar(100)
现假设已经在窗体上添加了一个DataGridView控件(name属性设为DataGridView1)和一个listBox控件(name属性设为listBox1)。
请在窗体的Load事件中编写相应代码,使窗体运行时在DataGridView中显示学生基本信息表中的所有记录,并将表中姓名字段值显示在列表框中,运行效果如上图所示。
这道题不确定
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;
namespacesql
stringstrCN=@"
server=.\SQLEXPRESS;
database=Northwind;
IntegrateSecurity=True"
;
SqlConnectioncn=newSqlConnection(strCN);
cn.Open();
SqlData