第一篇:C#语言和数据库技术基础学习小结
C#语言和数据库技术基础学习小结
第1章
第一个 C#程序
一..NET 是 Microsoft.NET 的简称,是基于 Windows平二.Program.cs:该文件是项目的启动文件,在该文件中 定义项目的启动入口,即 Main()方法。在 C#中,程序 源文件以.cs 作为扩展名。
三.HelloWorld.exe:这个文件位于 binDebug 目录下,是项目编译后的可执行文件,可以直接运行。四.C#关键字
1.namespace 关键字:namespace(命名空间)是 C# 中组织代码的方式,它的作用类似于 Java 中的 package(包)这样我们就可以把密切相关的一些代码放在同,一个命名空间中,大大提高管理和使用的效率。2.using 关键字:
使用 Using 关键在来引用其他命名空间。3.class 关键字:
不要求类名必须与源文件的名字一样。4.Main()方法:是程序运行的入口 5.关键代码: Console.WriteLine();//从控制台输出内容 Console.ReadLine();五.C#中数据类型 //从控制台输入
1.整型:int。2.浮点型:float。3.双精度型:double。4.字符串:string。5.布尔型:bool。六.C#中变量命名的规则:
1.组成: 个英文字母52(A-Z、、个数字a-z)10(0-9)、下划线(_),除此之外不能包含其他字符。2.开头:只能以字母或下划线开头。3.不能使用的:不能使用 C#中的关键字。七.常用的输出方法有两个: 1.Console.WriteLine(),输出后换行 2.Console.Write(),输出后不换行 第2章
一.switch 结构: C#语法快速热身
switch(int/char/string 表达式){ Case 常量表达式 1: 语句 1; break; //必须有 } 二.一维数组: 数据类型[ ] 数组名; //创建一个含有 //省略数组长度 //省略 new 关键
1.Int[ ] array=new int[5]{0,1,2,3,4,};五个整型数组的数组
2.int[ ] arra1=new int[] { 0,1,2,3,4};3.int[ ] arra2={0,1,2,3,4};字
三.通过数组的 Length 属性,可以获得数组长度,通常 会用它来作为循环终止条件 语法:数组名.Length;同 Java 一样,访问数组的元素使用的形式如下,下标 从 0 开始,C#中我们也把下标叫做索引。数组名[下标] 四.foreach 循环:
each 是每个的意思,foreach 结构用于遍历一个数据 集(如数组)的每一项,需要设置一个标识符(变量)语法: Foreach(类型 元素 in 集合或者数组){ 代码块 }
语法中的“元素”是一个只读变量 五.循环应用的区别如下:
1.while 循环是先判断条件表达式是否成立。若成立则 实行循环体;否则结束循环
2.do-while 循环先执行一次循环体再判断条件表达是 否成立。若成立则继续循环,否则结束循环
3.for 循环必须使用整型变量做循环计算器,通过条件 表达式限定计数器变量值来控制循环 4.foreach()自动遍历给定集合的所有值 六.冒泡排序算法:
1.N 个数字来排队,两两相比小靠前 2.外层循环 N-1,内层循环 N-1-i;3.如果要降序排序,只要把程序中的大于号换成小于 号就行了 第3章
使用属性升级 MyBank 一.访问修饰符:访问修饰符是用来修饰类成员字段和 方法的符号,依次限定类成员的可访问级别 private(私有的)
如果将类的成员(变量或者方法)声明为 public,就 表示这些成员可以被其他类访问。如果使用 private 限 定类成员的访问权限,那么这些类成员就只能在该类 里面使用,其他类对它们没有访问权限
如果将某个字段或者方法声明为 public,就表示其他 类可以访问这个字段和方法;如果声明为 private,那 么该字段或者方法只能在本类中使用,其他类不能访 问
二.C#中的访问修饰符:
1.public 不受任何限制访问级别最高
2.private 只有类的内部可以使用访问级别最低 注:如果在成员定义之钱没有制定访问修饰符,那么 这个类成员的访问权限默认为 internal,它只能在本项 目内访问 三.this 关键字:
this 是指当前对象本身,通过 this 可以引用当前类的 成员变量和方法,使用 this 关键字可以解决成员变量 和局部变量名称冲突问题 四.用属性实现字段分装: 1.C#的属性:
如果要访问类中的字段,需要通过 get 和 set 访问器实 现,这种结合了字段和方法的实现方式我们成为属性(property)。
2.get 访问器用来返回相应的私有字段的值,get 访问器 与方法相似,必须用 return 语句返回字段的值 3.set 访问器用来设定希相应的私有字段的值,set 访 问器类似于返回类型为 void 的方法,它使用一个隐含 的输入参数 value 4.属性的数据类型:
定义类中的一个属性是,属性的数据类型必须与它所 访问的字段类型一致 5.属性的访问类型:
只读属性:只包含 get 访问器 只写属性:值包含 set 访问器 读写属性,包含 get 和 set 访问器 五.编程规范:
1.在为类的私有字段命名时,要以下划线“_”开头,随后出现的英文字母采用 Camel 命名法,即以第一个 单词的首字母小写,如果字段由多个单词组成,其后 单词的首字母大写
2.在为类的属性命名时,采用 Pascal 命名法。即组成 属性名称的多个单词的首字母要大写 3.封装字段的快捷键是:Ctrl+R+E 六.封装的优点: 1.避免使用非法数据赋值 2.保证数据的完整性
3.避免内部发生修改时,导致整个程序的修改 六.按引用传递参数:
要想使参数按引用传递,需要使用 ref 关键字来修饰 参数 第4章
1.bool Equals(string 深入 C#的 String 类
value):比较一个字符串与另一个 一.常用的字符串处理方法
字符串 value 的值是否相等,如果二者相等返回 true,如果不相等返回 false,该方法的作用与运算符“==” 相同
2.int Compare(string str A ,string str B):比较两个字符串 的大小关系,返回一个整数,如果 str A 小于 str B,返 回值小于 0,如果 str A 等于 str B,返回值为 0,如果 str A 大于 str B,返回值大于 0 3.int IndexOf(string value):获取指定的 value 字符串在 当前字符串中第一个匹配项的位置,如果找到了 value, 就返回它的位置,如果没有找到就返回-1.4.int LastIndexOf(string value):获取指定的字符串
value 在当前字符串字符串中最后一个匹配项的位置,如果找到了 value,就返回它的位置,如果没有找到,就返回-1.5.string Join(string separator, string[] value):把字符串
数组 value 中的每个字符串用指定的分割符 separator 连接,返回连接后字符串 6.string[] Split(char 7.string 8.string 9.string 10.string separator): 用 制 定 的 分 割 符
separator 分割字符串,返回分割后的字符串数组 Substring(int startdex, int length):从制定的位 ToLower():获取字符串的小写形式 ToUpper():获取字符串的大写形式 Trim():去掉字符串前后两端多余的空格
置 startIndex 开始检索长度为 length 的子字符串 二.运算符==和 String 类方法 Equals()的区别如下: 1.==通常用来比较 int,double 等数值类型的数据是否 相等
2.Equals()通常用来比较两个对象的值是否相等 三.“”和 String.Empty 的区别如下:
1.“”为 String 对象分配一个长度为零的储存空间 2.String.Empty 不会为对象分配储存空间 四.Foramt 格式化:
String myString=String.Format(“格式字符串” 参数列 表);五.格式化数值结果表: C:货币格式 D:十进制格式 F:小数点后的位数固定 N:用逗号(,)隔开的数字 P:百分比计数法 X:十六进制格式 五.简单的类型转换: 1.隐式类型转换 2.显示类型转换
六.数值类型与字符串之间的转换 1.字符串转换为数值型: 控制台接收整数:
int.Parse(Console.ReadLine());字符串转换为整型的代码: Int.Parse(string);字符串转换为单精度浮点型的代码: float.Parse(string);字符串转换为双精度浮点型: Double.Parse(string);2.数值型转换为字符串: 第6章
程序数据集散地:数据库 一.使用数据库的必要性:
1.可以结构化存储大量的数据信息,方便用户进行有 效的检索和访问
2.可以有效地保持数据信息的一致性,完整性,降低 数据冗余
3.可以满足应用的共享和安全方面的要求
4.数据库技术能够方便智能化地分析,产生新的有用 信息
二.数据库的基本概念:
1.实体:是所有客观存在的,可以被描述事物,这些 都被称为实体 2.记录:每一“行”实际上对应一个实体,这样的一 行,在数据库中,通常叫做一条记录
3.表格中的每一“列” 如编号,姓名,年龄,民族等,在数据库中,通常叫做“列”,也可称之为“字段” 三.数据库管理系统和数据库系统
1.数据库管理系统、DBMS 是一种系统软件,由一个 互相关联的数据集合和一组访问数据的程序构成。数 据库管理系统的主要功能是维护数据库,并有效的访 问数据库中各个部分的数据。
2.数据库系统、DBS、是一个实际可运行的系统,可以 对系统提供的数据进行存储,维护和应用,它是有存 储介质,处理对象和管理系统共同组成的集合体,通 常有软件、数据库和数据管理员组成
3.数据库管理员、DBA 在数据库系统中负责创建,监 控和维护整个数据库,使数据能被有权使用的人有效 使用
四.数据冗余和数据完整性
1.在数据库系统中,数据重复的现象就是数据冗余 2.数据的完整性是指数据库的准确性 五.数据库按照用途可以划分为如下两种 1.系统数据库 2.用户数据库 系统数据库是管理和维护 SQL 六.数据库操作权限:
1.db_backupoperator 权限可以备份数据库 2.db_datareader 可以读取数据库中的数据 3.db_denydatareader 不允许读取数据 七.创建数据库
1.数据库文件:一个数据库可以有一个后多个数据库 文件,一个数据库文件只属于一个数据库,当有多个 数数据库文件时,有一个文件被定义为主数据库文件,主数据库文件的扩展名为.mdf,它用来存储数据库的 启动信息数据。一个数据库只能有一个主数据库文件,其他数据库文件被称为次数据库文件。Server 所必须的数据
库,用户数据库是用户自己建立的数据库
2.事物日志文件:事物日志文件用来记录数据库的更 新情况,在对数据库进行操作的时候,数据库中内容 更改的操作信息都会记录在此文件中,事物日志文件 的文件扩展名为.ldf,一个数据库可以有一个或多个事 物日志文件
3.文件组:类似于文件夹,文件组主要用于分配磁盘 空间并进行管理,每个文件组有一个组名,与数据库 文件一样,文件组也分为主文件组和此文件组 八.数据库关注选项: 1.兼容级别 2.数据库为只读 3.访问限制 4.自动关闭 5.自动收缩
九.数据库的管理和维护
1.分离和附加数据库:移动数据库分亮不进行,首先 是分离数据库,然后是附加数据库 2.备份和还原数据库:
四种数据库备份方式:1.完全备份 2.差异备份 3.事物 日志备份 4.文件和文件组备份 第7章 一.数据完整性 用表组织数据
1.实体完整性约束:要求表中的每一行数据都反应不 同的实体,不能存在相同的数据行,通过索引、唯一 约束、主键约束或标识列属性,可以实现表的实体完 整性
2.域完整性约束:域完整性指的是给定列输入的有效 性,通过限制数据类型、检查约束、输入格式、外键 约束,默认值、非空约束等多种方法,可以实现表的 完整性
3.引用完整性约束:在输入或删除数据行时,引用完 整性约束来保持表之间已定义的关系 4.自定义完整性约束: 二.主键和外键
1.主键:需要一个列,这个列的值用来标识表中的每 一行,用于强制表的实体完整性,这样的列定义为表 的主键,一个表只能有一个主键
2.外键:外键用来强制引用完整性,一个表可以有多 个外键
三.确定列的数据类型:1.二进制数据类型 2.文本数据 类型 3.日期和数据类型 4.数字数据类型 5.货币数据类 型 6.bit 数据类型 第8章 操纵语言
用 SQL 语句操作数据
一.SQL 的组成:1.DML:数据操作语言,也成为数据 2.DDL:数据定义语言 3.DQL 数据查询语言 4.DCL 数据 控制语言
二.SQL 中的预算符
1.算数运算符 2.赋值运算符 3.比较运算符 4.逻辑运 算符
三.使用 T_SQL 插入数据 1.使用 INSERT 插入数据: 语法:INSERT 列表)2.一次插入多行数据:通过 INSERT SELECT 语句将现 有表中的数据添加到已存在的表中
例:INSET INTO AddressList(姓名、地址、电子邮件)SELECT SName, SAdress, SEmail FROM Students 3.通过 SELECT INTO 语句将现有表中的数据添加到新 表中: 语法:SELECT 增长量)AS 列名
IDENTITY(数据类型,标识种子,标识 [INTO] 表名[列名列表] VALUES(值 INTO 新表 FROM 原始表
4.通过 UNION 关键字合并数据进行插入 5.使用 UPDATE 更新数据:
语法:UPDATE 表名 SET 列名 = 更新值 [WHERE 更新 条件] 6.使用 T_SQL 删除数据 语法:DELETE [FROM] 表名 [WHERE<删除条件>] 7.使用 TRUNCATE TABLE 删除数据 第9章 语法:
SELECT <列名> FROM<表名> 数据查询基础
一.使用 SELECT 语句进行查询 [WHERE<查询条件表达式>] [ORDER BY<排序的列名>[ASC 或 DESC]] 1.查询所有的数据行和列: SELECT * FROM Students 2.查询部分行或列 3.在查询中使用列的别名
4.查询空值:在 SQL 语句中采用“IS NULL”或者“IS NOT NULL”来判断是否为空: SELECT IS NULL 5.在查询中使用常量列 6.查询返回限制的行数 二.查询排序
如果需要按照一定顺序排列查询语句选中的行,则 需要使用 ORDER BY 子句,并且排序可以是升序
(ASC)或者降序(DESC)如果不指定 ASC 或者 DESC,记录集按默认 ASC 升序排序 三.在查询中使用函数 1.字符串函数:
CHARINDEX:用来寻找指定的字符串在另一个字符 串中的起始位置
LEN:返回传递给它的字符串长度
RIGHT:从字符串右边返回指定数目的字符,右边去字 符
REPLACE:替换一个字符串中的字符 2.日期函数:
GETDATE:取得当前的系统日期
DATEADD:将指定的数值添加到指定的日期部分后的 SName FROM Students WHERE SEmail 日期
DATEDIFF:两个日期之间的指定日期部分间隔 DATENAME:日期中指定部分的字符串形式 DATEPART:日期中指定日期部分的整数形式 3.数学函数:
RAND:返回从 0 到 1 之间的随机 float 值
CEILING:向上取整,取大于或等于指定数值,表达式 的最小整数、大于它的最小整数
FLOOR:向下取整数,取小于或等于指定表达式的最 大整数、小于它的最大整数
ROUND:将数值表达式四舍五入为指定精度 4.系统函数:
CINVERT:用来转变数据类型 第 10 章 来进行
模糊查询和聚合函数
一.模糊查询:模糊查询可以使用 LIKE 关键字,通配符 1.通配符:通配符是一类字符,它可以代替一个或多 个真正的字符,查找信息时作为替代字符出现-:一个字符 CS、Cd 等 示例:A LIKE ’C_’,则符合条件的 A 如 %:任意长度的字符串 如 CONST、COKE 等
B LIKE ‘CO%’,则符合条件的 B C LIKE ’WO[1-2]’, D LIKE []:括号中所指定范围内的一个字符 则符合条件的 C 如 9W01 或 9W02 [^]:不在括号中所指定范围内的任意一个字符 二.使用 BETWEEN:在某个范围内进行查询:
‘9W0[^1-2]’,则符合条件的 D 如 9W03 或 9W07 等 例:查询分数在 60(含)到 80(含)之间的信息: SELECT *FROM Score BETWEEN 60 AND 80 三.使用 IN 在列举值内进行查询:
例: 查询北京、广州、或者上海的学生姓名:
SELECT SName AS 学生姓名 FORM Students WHERE SAdress IN(‘北京’,’广州’,’上海’)ORDER BY SAdress 四.聚合函数:
1.SUM():返回表达式中所有数值的总和 2.AVG():返回表达式中所有数值的平均值 3.MAX():返回表达式中的最大值 4.MIN():返回表达式中的最小值
5.COUNT():返回提供的组或记录集中的计数,另外也 可以使用星号(*)作为 COUNT 的表达式 第 11 章
联接查询和分组查询
一.使用 group by 进行分组查询 二.使用 having 子句进行分组筛选 group by 后面一般跟字段
-----------------------having 分组后筛选、where 查询后筛选
--where 子句:用来筛选 from 子句中指定的操作所产生 的行
--group by 子句:用来分组 where 子句的输出--having 子句:用来从分组的结果中筛选行---------------------------总结(内联查询)三.多表联接查询:--1.inner join....on select a 表.列名,b 表.列名 from a 表 inner join b 表 on a 表.主键=b 表.外键 where 条件 and......--2.where select a 表.列名,b 表.列名 from a 表,b 表 where a 表.主键=b 表.外键 and.......--交叉查询 cross join--完整联接 Full join--总结
--左外联 left join...on(会把 left 左边表的数据全部显 示)null--右外联 right join...on(会把 rigth 左边表的数据全部 显示)null 第 14 章
使用 ADO.NET 访问数据库 一.ADO.NET 的主要组件:
1..NET Framework 数据库提供程序:专门为数据处理 以及快速地只进、只读访问数据而设计的组建。2.DataSet(数据集):是专门为独立于任何数据源的数 据访问而设计的
二..NET Framework 数据提供程序的四个核心对象: 1.Connection:建立与特定的数据源的连接 2.Command:对数据源执行命令
3.DataReader:从数据源中读取只进且只读的数据流 4.DataAdapter:用数据源填充 DataSet 并解析更新 总结:
一.查询单个值: 1.创建连接字符串 string str=“server=.;database= 数 据 库
名;uid=sa;pwd=sa”;2.创建 connection 对象
SqlConnection connection=new SqlConnection(str);3.打开数据库连接 connection.Open();4.创建 Sql 语句 string sql="";5.创建 command 对象 SqlCommand SqlCommand(sql,connection);6.执行 sql 命令 int result=Convert.ToInt32(command.ExecuteScalar());(转换)7.关闭数据库连接 connection.Close();二.查询若干条记录: 需要使用 Command 对象的 ExecuteReader()方法,步 骤如下:
1.创建 Connection 对象 2.拼写 SQL 查询语句 command=new 3.使用 SQL 语句和 Connection 对象创建 Command 对 象
4.打开数据库连接,调用 Connection 对象的 Open()方 法
5.调用 Command 对象的 ExecuteReader()方法,返回一 个 DataReader 对象
6.在循环中使用 DataReader 对象的 Read()方法,逐行 读取记录。如果读到记录则返回 true,否则返回 false。7.使用(type)dataReader[列名或索引]的方式读取这一 行中某一列的值
8.调用 DataReader 对象的 Close()方法,关闭 DataReader 对象
9.操作完成后关闭数据库连接,调用 Connection 对象 的 Close()方法 三.数据更新操作:
对数据库执行数据更新操作时(包括增加,修改,删 除数据)都使用 Command 对象的 ExecuteNonQuery()方法,步骤如下: 1.创建 Connection 对象 2.拼写 SQL 增删改语句
3.使用 SQL 语句和 Connection 对象创建 Command 对 象
4.打开数据库连接,调用 Connection 对象的 Open()方 法
5.调用 Command 对象的 ExecuteNonQuery()方法执行 命令,返回数据库中受影响的行数
6.操作完成后关闭数据库连接,调用 Connection 对象 的 Close()方法
Command 对象的三种方法的对比如下所示:
ExecuteScalar()方法:执行查询操作,并返回结果集中 的第一行和第一列
ExecuteReader()方法:执行查询操作,返回 DataReader 对象
ExcutenNonQuery()方法:执行添加、修改、删除操作、返回受影响的行数
第二篇:c#基础总结
【1】面向对象程序设计语言的三大特点是什么?答:【23】Main函数特点?答:1)Main方法是C#程序的限定,默认的为private【2】三种命名法则的特点?答:匈牙利命名法:在变限定符,返回类型为void或int类型,Main方法必须是静态方法;3)一个类或结构只能有一个有效的入驼表示法:一个标示符用若干个有意义的英语单词或口点函数;4)main方法必须定义在某一个类中。缩写组成,第一个单词首字母小写,后边的首字母大【24】多态(重写、隐藏)
写;Pascal表示法:与骆驼表示法类似,但是第一个 单词的首字母也需要大写。【3】C#注释的三种形式特点?答1)单行注释:// 2)class A /// {public virtual void F()【4】引用类型和值类型的数据类型? {Console.WriteLine(“A.F”);}} abstract class B:A(1)int valOne = 0;{public abstract override void F();}int valTwo = valOne;答:abstract override 是不可以一起修饰 int valThree = 333;例:在下面的例子里 valTwo = 333;TestValueRefRef1 = new TestValueRef();class A TestValueRefRef2 = Ref1;{public A(){PrintFields();} Ref2.value = 444;public virtual void PrintFields(){} } Console.WriteLine(“values:{0},{1}”, Ref1.value, class B:A Ref2.value);{int x=1;int y;public B(){y=-1;} Console.WriteLine(“values:{0}, {1},{2}”,valOne, public override void valTwo,valThree);PrintFields(){Console.WriteLine(“x={0},y={1}”,答:输出结果:values:444,444 x,y);} 当使用new B()创建B的实例时,产生什么输出?(2)public class EnumTest答:x=1,y=0 { enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};分析:执行new B()时,由于B继承自A,所以会调用static void Main()A的构造函数,并执行其中的PrintFields()方法,由{int x=(int)Days.Sun;inty=(int)Days.Fri;于该方法为虚方法,在继承类中被重写,所以,将执Console.WriteLine(“Sun = {0}”, x);行B中的PrintFields()方法。此时,将在DOS界面Console.WriteLine(“Fri = {0}”, y);}} 上输出“x=1,y=0”,然后,在运行B的构造函数中的答:输出结果:Sun = 2Fri = 7 y=-1。(建议同学们将此程序放入到代码中,设置断点【5】枚举类型的字段和关联值?枚举类型有三个要看执行过程。)
【25】什么是多态对象?答:用基类类名声明,但是特性 修饰符 enum 枚举名 : 基础类型 {枚举成员声明,枚举成员声明,„„,枚举成员声明}默认的基础函数来实例化的对象。这类对象的主要用途是引发多类型为int;关联值:如果没有被声明,默认为0。态,为了将它们和一般的对象(声明和创建都使用同【6】强制类型转换(例:若有double f=2.7;int 一个类型名的对象)加以区别、揭示它们的特点和用2)将源类型的对象途,这种形态的对象称为多态对象。转换成为目的类型的对象 【26】接口的特点。答:接口只能包含抽象方法,不【7】运算符&和&&的区别?答:条件“与”运算符(&&)没有访问修饰符,接口成员必须是方法属性事件或者时才计算第二个操作数。而&需要计算所有操作数,索引器不能包含常数字段运算符也不能有静态成员。并且优先级高于&& 【27】委托和事件,【8】装箱和拆箱的概念?答:装箱就是把一个值类型委托的定义修饰符 delegate 返回类型 委托类型名(参数列表); 【9】for循环和if语句联合使用的程序分析,for(;;)eg: public delegate int DelegateClass(stringinfo);
和continue的区别?答:break跳出循委托的创建(实例化)委托对象 = new 委托名(关联方法); 【11】命名空间的特点答:它提供一种命名机制,是eg: DelegateClass obj=new DelegateClass(MethodA);
合方式无关,不能表明源文件的存取方式,命名空间DelegateClass obj=MethodA;//隐式创建和初是按层次组织的。始化(不用new)【12】数组元素的的复制和读值 例:分析下列语句: int[3]{5,6,2},new int[5]{6,9,7,8,3},new Hello(string target);} int[2]{3,2}};myArray3[2][2]的值是(D)A)9;B)2;该语句的作用是:在TestCS 命名空间中定义了了一C)6;D)越界 个名为Hello 的委托类型;
【13】类和对象的关系?答:类是对象的抽象,对象【28】Windows窗体中Button按钮触发的事件是什【14】关键字this和base的区别?答:base指代基【29】Windows窗体中控件的标识符如何修改?答:【15】关键字new、using的多种用法?答:new修饰【30】如何修改Windows窗体的启动窗体?答:修改被重写,但new修饰符可终止这一特性;向下传播; 实例化一个对象。Using:导入命名空间;自动释放【31】要使用SQL Server需要使用哪两个命名空间? Using代码框里的资源。【16】索引器的特点?答:索引器允许重载;字符串Using System.Date.SqlClient: 【32】什么是DataSet、DataAdapter?两者联系?答:过签名标识;通过元素访问来访问;必须为实例成员;索引器的get访问器具有与索引器相同的形参表;除DataAdapter:数据适配器,数据库与DataSet间的桥value参数外,索引器的set访问器还具有与索引器梁,把数据库中数据下载到DataSet或回传回去。相同的形参表。【33】用户登录和密码修改(带数据库)【17】静态数据成员特点?答:为所有类所共享,区用户登录 【18】构造函数的特点?答:(1)构造函数名与类名UserName='“ + txtUsername.Text.Trim().ToLower()+ ”' and UserPwd='“ + txtPassword.Text.Trim()+ 【19】析构函数的特点?答:(1)析构函数名是在类”'“;if(OperateDB.ExecuteReader(sql))型(默认为空)和修饰符;(3)析构函数不能被重载。{username = txtUsername.Text.Trim().ToLower();【20】什么是方法的重载?重载的特点是什么?答: frmMain frm = new frmMain();frm.Show();this.Hide();} 定义一组方法。重载的特点:1)位于同一类中;2)else
方法名相同;3)方法参考列表不同,包括参数个数不{MessageBox.Show(”用户名或密码错误“, ”出错了“, 同和参数类型不同;4)与方法返回值和修饰符没关系。MessageBoxButtons.OK, MessageBoxIcon.Error);} 【21】虚函数的特点?答:1)虚方法前不允许有修改密码: 修饰符;2)虚方法不能是私有的,因此不能使用private修饰符; where UserName='” + frmLogin.username + “' and 【22】抽象类和抽象方法的主要特点?答:抽象类:UserPwd='” + txtOldPwd.Text.Trim()+ “'”;(或者if(OperateDB.ExecuteReader(sqlCheckPwd))说,不能产生对象。但是,它可以有构造函数。(2){string sql = “update UserInfo set UserPwd='” 设计abstract类的目的是为了被继承。抽象方法:是+ txtNewPwd.Text.Trim()+ “' where UserName='” + 不完整的,不能执行的。frmLogin.username + “'”;
if(OperateDB.ExecuteNonQuery(sql)== 1)
{MessageBox.Show(“密码修改成功!”);}else
{ MessageBox.Show(“密码修改失败!”);}}
else{MessageBox.Show(“旧密码不正确!”);}
【34】抽象类定义和继承使用
特点:1.没有被完整定义,因而它不能用来实例化,或者说,不能产生对象。(但是,它可以有构造函数。)2.设计abstract类的目的是为了被继承。public abstract class Employee{public virtual void Pay(){ }
public abstract void CalculatePay();} public class HourlyEmployee: Employee
{public override void Pay(){CalculatePay();}public override void CalculatePay(){ }} 【35】接口及继承类的使用
特定功能的抽象成员的集合。一个类可以继承多个接口,从而获得多个行为的描述,将它们组合成新的功能并在类中实现。继承类中必须实现接口中的所有抽象成员。
定义接口的格式:修饰符 interface 接口名:基接口列表 {接口体} 其中,接口体的声明可以包括:接口方法声明;接口属性声明;接口事件声明;接口索引器声明
public delegate void
StringListEvent(IStringList sender);public interface IStringList{ void Add(string s);//方法int Count{get;}//属性event StringListEvent Changed;//事件string this[int index]{get;set;}//索引器} 【编程题例题】
定义一MobilePhone类,包括属性成员——网络类型(NetworkType),字段成员——屏幕尺寸(screenSize)、手机品牌(brand),手机型号
(brandModel),公共方法成员——Open、Close。其中screenSize为单位是英寸的双精度数,brand为字符串,NetworkType只能是“GSM”或“CDMA”字符串。要求:(1)在此类中包含构造函数,构造函数用于对数据(屏幕尺寸、手机品牌和手机型号)进行初始化。(2)公共成员方法中输出相应提示信息(参见(3)中的输出结果格式)。(3)写一测试类,在类中实例化一MobilePhone对象,最后能在DOS界面下显示如下结果:诺基亚N81(屏幕尺寸2.0英寸),是一款GSM手机。手机关机了。using System;
public enum NetworkType {GSM,CDMA,}
public class MobilePhone {public double screenSize;public string brand;
public string brandModel;
public NetworkType networkType;public NetworkType NetworkType{get { return networkType;}}
public MobilePhone(double ss, string bra, string bm, NetworkType nt){screenSize = ss;brand = bra;brandModel = bm;networkType = nt;}public void Open()
{Console.WriteLine(“{0}{1}(屏幕尺寸{2}英寸),是一款{3}手机.”,brand,brandModel,screenSize.ToString(“.0”), networkType);}
public void Close()
{Console.WriteLine(“手机关机了。”);} }
public class Test
{public static void Main()
{MobilePhone mp = new MobilePhone(2.0, “诺基亚”, “N81”, NetworkType.GSM);mp.Open();mp.Close();
System.Console.ReadLine();} }
【例】写一名为Desk的类,包含两个字段Length(双精度类型)、Height(双精度类型)。再写一继承类ComputerDesk类。ComputerDesk类除了有Length和Height外,还有KeyboardTray(字符串类型)。Public class desk {double length;double height;}
Public class computerdesk:desk {string keyboardtray}
第三篇:数据库小结
数据库总结
1、数据库开课6天,到今天已全部结束
2、学习内容
一、数据库的安装与删除:已独立上机操作实现。
二、数据利器sql 1)用sql进行单表查询:
查询语句: select 所查内容 from 表 where 条件
排序: select 所查内容 from 表 where 条件order by排序的依据
分组:select 所查内容 from 表 where 条件 group by 分组依据 其他要显示的内容(having 条件)
字段运算查询:select 运算 from表
变换查询:select 原名 新名 from 表
2)多表查询:
无条件多表查询 select 所差内容 from 多个表
等值多表查询
select 所差内容 from 多个表 where 一个
表内容=另一个表内容
非等值多表查询select 所差内容 from 多个表 where 一个
条件 and(or)其他条件
3)嵌套查询
带in、any(some)、all、exist的嵌套查询:
select 所查内容 from 表 where 内容 in(select 所查
内容 from 表 where 条件)
注意:any(some)包括等于条件、all不包括
并(union)、交(intersect)、差操作(minus): 4)常用的函数查询
Ceil(n)取大于等于n的最小整数
Floor(n)取小于等于n的最大整数
Mod(m,n)取m整除n后的余数
Pow(m,n)取m的n次方
Round(m,n)取四舍五入,保留小数点后n位
Sign(n)n》0取1;n=0取0;n《0取-1
Avg(字段名)求平均值
Count(字段名)或者count(*)统计总数
Min(字段名)计算数值型字段最小数
Max(字段名)计算数值型字段最大数
Sum(字段名)计算总数 5)录入数据
单行录入:Insert into 数据表(字段1,2。。)values
(字段1的值,2的值。。)
多行录入:insert into 数据表(字段1,2。)(select
(字段1或运算,2或运算。。)from
数据表 where 条件)表间数据复制:create table 表名 as(select 字段from原
有的表where 条件)
6)删除记录
删除记录:Delete from 数据表 where 条件
整表数据删除:truncate table 数据表 7)更新数据
直接赋值更新:update 数据表 set 字段名1=新的赋值,字段名2=新的赋值。where条件
嵌套更新:update 数据表 set 字段名1=(select 字段列
表 from 数据表 where 条件),字段名(select字段列表 from 数据表 where条件)。。
三、编程进阶Pl/sql 1)程序结构
Delacre
定义语句段
Begin
执行语句段
Exception
异常处理语句段 End 2)基本语法
定义变量%type:获得字段的数据类型
定义变量%rowtype:获得整个记录的数据类型f 定义记录类型变量 :type 记录类型 is record()
定义一维表类型变量:type 表类型 is table of 类型 index by
binary_integer, 表变量名 表类型
定义多维表类型变量
3)表达式
数值表达式:加+,减-,乘*,除/,乘方**
字符表达式:连接符号||
关系表达式(9种): 4)事务处理
提交:Committee
回滚:rollback
保存点:savepoint 5)游标
定义、打开、提取、关闭 6)过程
创建、查询、修改、执行
·
第四篇:C#基础编程设计实验报告
C# 基础编程 设计实验报告
一、实验目的
1、熟悉 Visual Studio.NET 开发环境。
2、掌握 C#应用程序的基本操作过程。
3、掌握 C#的数据类型,运算符以及表达式的使用。
4、掌握分支和循环语句的使用方法。
5、掌握一维数组,二维数组及数组型数组的使用。
二、实验要求
(1)编写程序要规范、正确,上机调试过程和结果要有记录(2)做完实验后给出本实验的实验报告。
三、实验设备、环境
安装有 Visual Studio.NET 软件。
四、实验步骤
1、分析题意。
2、根据题目要求,新建项目。
3、编写并输入相关的程序代码。
5、运行与调试项目。
6、保存项目。
五、实验内容
1、编写一个简单的控制台应用程序,打印一行文字(如你的姓名)。
using System;using System.Collections.Generic;
using System.Linq;using System.Text;
namespace one.first {
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine(“我叫王蕾!”);
}
} } 2、编写一个简单的 Windows 应用程序,在窗体 Load 事件中书写代码,标签中显示你的姓名。
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;
using System.Windows.Forms;
namespace one.second {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.Text = “Windows 程序”;
Label lblShow = new Label();
lblShow.Location = new Point(20, 30);
lblShow.AutoSize = true;
lblShow.Text = “王蕾!”;
this.Controls.Add(lblShow);
}
}
} 3、编写一个一个程序,用来判断输入的是大写字母,小写字母,数字还是其他的字符。
using System;using System.Collections.Generic;using System.Text;
namespace one.third {
class Program
{
static void Main(string[] args)
{
Console.WriteLine(“请输入一个字符:”);
char c = Convert.ToChar(Console.ReadLine());
if((c>=“a”&&c<=“z”)||(c>=“A”&&c<=“Z”))
Console.WriteLine(“这是一个字母”);
if(char.IsDigit(c))
Console.WriteLine(“这是一个数字”);
}
}
} 4、分别用 while,do-while,for 循环求 1 到 100 的和。
using System;using System.Collections.Generic;using System.Text;
namespace one.forth.one {
class Program
{
static void Main(string[] args)
{
int i = 1, sum = 0;
while(i <= 100)
{
sum = sum + i;
i++;
}
Console.WriteLine(“1 到 100 的自然数之和为:” + sum);
}
}
} using System;using System.Collections.Generic;using System.Text;
namespace one.forth.two {
class Program
{
static void Main(string[] args)
{
int i = 1, sum = 0;
do
{
sum = sum + i;
i++;
}
while(i <= 100);
Console.WriteLine(“1 到 100 的自然数的和为:” + sum);
}
}
} using System;using System.Collections.Generic;using System.Text;
namespace one.forth.three {
class Program
{
static void Main(string[] args)
{
int i , sum = 0;
for(i = 1;i <= 100;i++)
{
sum = sum + i;
}
Console.WriteLine(“1 到 100 的自然数的和为:” + sum);
}
} } 5、定义一个一维数组,用随机数为此赋值,用 foreach 循环输
出其中的内容。
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace first.five {
class Program
{
static void Main(string[] args)
{
int[] a = {0,1,2,3,4};
foreach(int i in a)
{
Console.WriteLine(a[i]);
}
}
} } 6、实现二维数组的输入和输出。
using System;
using System.Collections.Generic;using System.Linq;using System.Text;
namespace first.six {
class Program
{
static void Main(string[] args)
{
int[,] a = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
{
for(int i = 0;i < 2;i++)
{
for(int j = 0;j < 3;j++)
{ Console.WriteLine(a[i, j]);}
}
}
}
} }
7、实现数组型数组的输入和输出。
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace first.seven {
class Program
{
static void Main(string[] args)
{
int[][] a = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 } };
for(int i = 0;i < a.Length;i++)
{
for(int j = 0;j < a[i].Length;j++)
{
Console.WriteLine(a[i][j]);
}
}
}
} } 六、实验体会(遇到问题及解决办法,编程后的心得体会)
刚开始编程的时候觉得无从下手,尽管我们已经学了好几种高级编程语言,但每个都有其独特的地方,稍不留神就会混淆。
通过这次实验,我体会到课后复习巩固的重要性。在编程的时候,很多内容都不记得,需要去翻书。不得不说,实验是巩固课程的好方法!本次实验,我熟悉 Visual Studio.NET 开发环境;掌握了 C#应用程序的基本操作过程;掌握了 C#的数据类型,运算符以及表达式的使用;掌握了分支和循环语句的使用方法以及一维数组,二维数组及数组型数组的使用。
实验项目名称:
类与对象
实验学时:
同组学生姓名:
实验地点:
1318
实验日期:
月 26 日-11 月 9 日 实验成绩:
批改教师:
批改时间:
实验 2
类与对象
一、实验目的、要求
(1)掌握类的定义和使用;(2)掌握类的数据成员,属性的定义和使用;(3)掌握方法的定义,调用和重载以及方法参数的传递;(4)掌握构造函数的定义和使用。
二、实验要求
(1)编写程序要规范、正确,上机调试过程和结果要有记录;(2)做完实验后给出本实验的实验报告。
三、实验设备、环境
安装有 Visual Studio.NET 软件。
四、实验步骤
1、分析题意; 2、根据题目要求,新建项目; 3、编写并输入相关的程序代码; 5、运行与调试项目; 6、保存项目。
五、实验内容
1、定义一个方法,实现两个数的交换(分别把参数按值传递和按引用传递)。
using System;
using System.Collections.Generic;using System.Text;
namespace second.one {
class Program
{
static void Main(string[] args)
{
Swaper s = new Swaper();
Console.WriteLine(“输入 x 的值:”);
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(“输入 y 的值:”);
int b=Convert.ToInt32(Console.ReadLine());
Console.WriteLine(s.Swap(a, b));
Console.WriteLine(s.Swap(ref a,ref b));
}
class Swaper
{
public string Swap(int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
return string.Format(“按值传参交换之后:x={0},y={1}”,x,y);
}
public string Swap(ref int x, ref int y)
{
int temp;
temp = x;
x = y;
y = temp;
return string.Format(“按引用传参交换之后:x={0},y={1}”, x, y);
}
}
} }2、定义一个方法,实现数组的排序。
using System;using System.Collections.Generic;using System.Text;
namespace second.two {
class Program
{
public class sort
{
public void change(int[] a)
{
Console.WriteLine(“排序前,数组顺序为:”);
show(a);
int i, j, m;
for(i = 0;i < 10;i++)
{
m = a[i];
j = i-1;//a[j]为数组前一个值
while(j >= 0 && m > a[j])//判断 i 下标的数是否大于 j 下标的数
{
a[j + 1] = a[j];//如果 i 下标大于j 把 j 往后移一个位
j--;
}
a[j+1] = m;//当不大于 j 的时候就把 M的值放到 i 下标下面 j+1 是为了下标减到最前时考虑-1 + 1 还是下标的最前面
}
Console.WriteLine(“排序后,数组顺序为:”);
show(a);
}
void show(int[] a)
{
int i;
for(i = 0;i < 10;i++)
{
Console.Write(“{0} ”, a[i]);
}
Console.WriteLine();
}
}
static void Main(string[] args)
{
int[] a ={ 4, 7, 1, 2, 5, 8, 9, 10, 3, 6 };
sort s=new sort();
s.change(a);
}
} } 3、定义一个学生类,把学生类当作对象来传递。
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace second.three {
class Program
{
public class student
{
public void st()
{
int a = 999;
}
}
public class st
{
public void aa(student s)
{
Console.WriteLine(s);
}
}
static void Main(string[] args)
{
student s=new student();
st s1 = new st();
s1.aa(s);
}
} } 4、定义一个方法,求两个数的和和差,通过参数把这两个值带回。
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace
second.four
{
class Program
{
public class sum
{
public void ab(out int m, out
int n,int a, int b)
{
m = a + b;
n = a-b;
}
}
static void Main(string[] args)
{
sum s = new sum();
int a = 10;
int b = 3;
int m, n;
s.ab(out m, out n, a, b);
Console.WriteLine(“{0}+{1}={2};{0}-
{1}={3}”,a,b,m,n);
}
} } 5、用构造函数重载,实现矩形的面积,圆的面积,梯形的面积; using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace secong.five {
class Program
{
public class square
{
public double area;
public square(){ }
public square(double a)
{
area = a * a * 3.14;
}
public square(double a, double b)
{
area = a * b;
}
public square(double a, double b, double h)
{
area =(a + b)/ 2 * h;
}
}
static void Main(string[] args)
{
double a, b, h,area;
a = 2;b = 5;h = 3;
square s = new square(a,b);
Console.WriteLine(“求矩形面积,长为 a={0},宽为 b={1},面积 area={2}”,a,b,s.area);
square i = new square(a);
Console.WriteLine(“求圆形面积,半径 a={0},面积 area={1}”, a, i.area);
square j = new square(a, b, h);
Console.WriteLine(“求梯形面积,上底为a={0},下底为 b={1},高为 h={2}面积 area={3}”, a, b,h, j.area);
}
} } 6、设计一个 windows 应用程序,在该程序中定义一个学生类和班级类,以处理每个学生的学号,姓名,语文,数学和英语成绩,要求:
1)能查询每个学生的总成绩。
2)能显示全班前三名的名单。
3)能显示单科成绩最高分和不及格的学生名单。
4)能统计全班学生的平均成绩。
5)能显示各科成绩不同分数段的学生人数的百分比。
Student 类:
using System;using System.Collections.Generic;using System.Text;namespace Test2_6 {
public class Student
{
public string stuNo;
public string name;
public double chinese;
public double math;
public double english;
public double sumScore
{
get { return chinese + math + english;}
}
} } StudentList 类:
using System;using System.Collections.Generic;using System.Text;namespace Test2_6 {
public class StudentList:Student
{
int snums;
public Student[] stu=new Student[50];
public StudentList()
{
snums = 0;
}
public void addstu(Student s)
{
stu[snums] = s;
snums++;
}
public int searchstu(string name)
{
int i;
for(i = 0;i < snums;i++)
{
if(stu[i].name == name)break;
}
if(i == snums)return-1;
else return i;
}
//给所有成绩排序,用后面实现前三名的排名
public void ProThree()
{
for(int i = 0;i < snums;i++)
{
int k = i;
for(int j = i + 1;j < snums;j++)
if(stu[j].sumScore > stu[k].sumScore)k = j;
if(k!= i)
{
Student temp;
temp = stu[k];
stu[k] = stu[i];
stu[i] = temp;
}
}
}
//显示单科成绩的最高分
public int HighScore(int k)
{
int p = 0;
if(k == 0)
{
for(int i = 1;i < snums;i++)
if(stu[i].math > stu[p].math)p = i;
}
else if(k == 1)
{
for(int i = 1;i < snums;i++)
if(stu[i].chinese > stu[p].chinese)p = i;
}
else
{
for(int i = 1;i < snums;i++)
if(stu[i].chinese > stu[p].chinese)p = i;
}
return p;
}
//显示不及格名单
public string
BuhgName(int k)
{
string name=“ ”;
if(k == 0)
{
for(int i = 0;i < snums;i++)
if(stu[i].math < 60)name +=stu[i].name+“n”;
}
else if(k == 1)
{
for(int i = 0;i < snums;i++)
if(stu[i].chinese < 60)name += stu[i].name + “n”;
}
else
{
for(int i = 0;i < snums;i++)
if(stu[i].english < 60)name += stu[i].name + “n”;
}
return name;
}
public string getHL()
{
string Maxer = “ ”, Loser = “ ”;
Maxer += “ 单 科 数 学 最 高 :
” + stu[HighScore(0)].name + “n”;
Maxer += “ 单 科 语 文 最 高 :
” +
stu[HighScore(1)].name + “n”;
Maxer += “ 单 科 英 语 最 高 :
” + stu[HighScore(2)].name + “n”;
Loser += “单科数学挂科名单:” +BuhgName(0)+ “n”;
Loser += “单科语文挂科名单:” + BuhgName(1)+ “n”;
Loser += “单科英语挂科名单:” + BuhgName(2)+ “n”;
return Maxer + “n” + Loser;
}
//全班的平均成绩
public string SumScore()
{
double sum = 0;
double avg=0;
for(int i = 0;i < snums;i++)
{
sum = sum + stu[i].sumScore;
}
avg = sum / snums;
return “班级总分平均分:”+avg;
}
//各科成绩不同分数段的学生百分比
//英语成绩各分数段百分比
public string PerC()
{
double per1, per2, per3, per4, per5;
double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;
for(int i = 0;i < snums;i++)
{
if((stu[i].chinese > 90)&&(stu[i].chinese <= 100))
{
sumC1++;
}
else if((80 <= stu[i].chinese)&&(stu[i].chinese < 90))
{
sumC2++;
}
else if((70<=stu[i].chinese)&&(stu[i].chinese < 80))
{
sumC3++;
}
else if((60<=stu[i].chinese)&&(stu[i].chinese < 70))
{
sumC4++;
}
else
{sumC5++;}
}
per1 = sumC1 / snums;
per2 = sumC2 / snums;
per3 = sumC3 / snums;
per4 = sumC4 / snums;
per5 = sumC5 / snums;
return “ 语 文 成 绩 百 分 比 :”+“n”+“90~100:”+per1+“
80~90:”+per2+“
80~70:”+per3+“
70~60:”+per4+“
以下的:”+per5;
}
//数学成绩各分数段百分比
public string PerM()
{
double per1, per2, per3, per4, per5;
double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;
for(int i = 0;i < snums;i++)
{
if((stu[i].math> 90)&&(stu[i].math <= 100))
{
sumC1++;
}
else if((80 <= stu[i].math)&&(stu[i].math < 90))
{
sumC2++;
}
else if((70 <= stu[i].math)&&(stu[i].math < 80))
{
sumC3++;
}
else if((60 <= stu[i].math)&&(stu[i].math < 70))
{
sumC4++;
}
else
{ sumC5++;}
}
per1 = sumC1 / snums;
per2 = sumC2 / snums;
per3 = sumC3 / snums;
per4 = sumC4 / snums;
per5 = sumC5 / snums;
return string.Format(“数学成绩百分比:” + “n” + “90~100:” + per1 + “
80~90:” + per2 + “
80~70:” + per3 + “
70~60:” + per4 + “
以下的:” + per5);
}
//英语成绩各分数段百分比
public string PerE()
{
double per1, per2, per3, per4, per5;
double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;
for(int i = 0;i < snums;i++)
{
if((stu[i].english > 90)&&(stu[i].english <= 100))
{
sumC1++;
}
else if((80 <= stu[i].english)&&(stu[i].english < 90))
{
sumC2++;
}
else if((70 <= stu[i].english)&&(stu[i].english < 80))
{
sumC3++;
}
else if((60 <= stu[i].english)&&(stu[i].english < 70))
{
sumC4++;
}
else
{ sumC5++;}
}
per1 = sumC1 / snums;
per2 = sumC2 / snums;
per3 = sumC3 / snums;
per4 = sumC4 / snums;
per5 = sumC5 / snums;
return string.Format(“数学成绩百分比:” + “n” + “90~100:” + per1 + “
80~90:” + per2 + “
80~70:” + per3 + “
70~60:” + per4 + “
以下的:” + per5);
}
} } From 窗体代码:
using System;using System.Collections.Generic;
using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Test2_6 {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public StudentList sl = new StudentList();
private void btnAdd_Click(object sender, EventArgs e)
{
Student s = new Student();
s.stuNo = txtStuNo.Text;
s.name = txtName.Text;
s.chinese = Convert.ToDouble(txtChina.Text);
s.math = Convert.ToDouble(txtMath.Text);
s.english = Convert.ToDouble(txtEng.Text);
sl.addstu(s);
MessageBox.Show(“添加成功”);
}
private void btnSearch_Click(object sender, EventArgs e)
{
int pos = sl.searchstu(this.textBox1.Text);
if(pos!=-1)
{
label7.Text = this.textBox1.Text + “的总成绩:” + sl.stu[pos].sumScore;
}
else { MessageBox.Show(“不存在这个人!”);}
}
private void btnFinish_Click(object sender, EventArgs e)
{
label7.Text = “前 3 名:”+“n”;
for(int i = 0;i < 3;i++)
{
sl.ProThree();
label7.Text+= sl.stu[i].name+“n”;
}
label7.Text += sl.getHL()+“n”;
label7.Text += Convert.ToString(sl.SumScore())+“n”;
label7.Text += sl.PerC()+“n”;
label7.Text += sl.PerM()+“n”;
label7.Text += sl.PerE()+“n”;
}
} }
六、实验体会(遇到问题及解决办法,编程后的心得体会)
通过本次实验,我掌握了类的定义与使用;掌握了类的数据成员,属性的定义和使用;掌握了方法的定义,调用和重载以及方法参数的传递以及构造函数的定义和使用。值得注意的是:本次实验中 return的使用以及所在的位置,类型转换时也经常用到
实验项目名称:
继承与多态
实验学时:
同组学生姓名:
实验地点:
1318
实验日期:月 16 日-11 月 30 日 实验成绩:
批改教师:
批改时间:
实验 3
继承与多态
一、实验目的、要求
(1)掌握类的继承性与多态性;(2)掌握虚方法的定义以及如何使用虚方法实现多态;(3)掌握抽象类的定义以及如何使用抽象方法实现多态; 二、实验要求
(1)编写程序要规范、正确,上机调试过程和结果要有记录;(2)做完实验后给出本实验的实验报告。
三、实验设备、环境
安装有 Visual Studio.NET 软件。
四、实验步骤
1、分析题意; 2、根据题目要求,新建项目; 3、编写并输入相关的程序代码; 5、运行与调试项目; 6、保存项目。
五、实验内容
1、设计一个 Windows 应用程序,在该程序中首先构造一个学生基本类,再分别构造小学生、中学生、大学生派生类,当输入相关数据,单击不用的按钮时,将分别创建不同的学生类对象,并输出当前学生的总人数,该学生的姓名,学生类型,平均成绩。
Student 类:
using System;using System.Collections.Generic;using System.Text;namespace Test3_1 {
public abstract class Student
{
protected string name;
protected int age;
public static int number;
public Student(string name, int age)
{
this.name = name;
this.age = age;
number++;
}
public string Name
{
get { return name;}
}
public abstract double Average();
}
public class Pupil : Student
{
protected double chinese;
protected double math;
public Pupil(string name, int age, double chinese, double math)
: base(name, age)
{
this.chinese = chinese;
this.math = math;
}
public override double Average()
{
return(chinese + math)/ 2;
}
}
public class Middle : Student
{
protected double chinese;
protected double math;
protected double english;
public Middle(string name, int age, double
chinese, double math, double english)
: base(name, age)
{
this.chinese = chinese;
this.math = math;
this.english = english;
}
public override double Average()
{
return(chinese + math + english)/ 3;
}
}
public class College : Student
{
protected double required;
protected double elective;
public College(string name, int age, double required, double elective)
: base(name, age)
{
this.required = required;
this.elective = elective;
}
public override double Average()
{
return(required + elective)/ 2;
}
} } Form 窗体内的代码:
using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Test3_1 {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSmall_Click(object sender, EventArgs e)
{
Pupil p = new Pupil(txtName.Text,Convert.ToInt32(txtAge.Text),Convert.ToDouble(txtChinese.Text),Convert.ToDouble(txtMath.Text));
lblShow.Text += “ 总 人 数 :” +Convert.ToString(Student.number)+ “,” + “姓名:” + p.Name + “,” + “小学生” + “,” + “平均成绩为:” + p.Average()+“n”;
}
private void btnMiddle_Click(object sender, EventArgs e)
{
Middle m = new Middle(txtName.Text, Convert.ToInt32(txtAge.Text), Convert.ToDouble(txtChinese.Text), Convert.ToDouble(txtMath.Text),Convert.ToDouble(TxtEnglish.Text));
lblShow.Text += “ 总 人 数 :” + Convert.ToString(Student.number)+ “,” + “姓名:” + m.Name +
“,” + “中学生” + “,” + “平均成绩为:” + m.Average()+ “n”;
}
private void btnBig_Click(object sender, EventArgs e)
{
College c = new College(txtName.Text, Convert.ToInt32(txtAge.Text), Convert.ToDouble(txtChinese.Text), Convert.ToDouble(txtMath.Text));
lblShow.Text += “ 总 人 数 :” + Convert.ToString(Student.number)+ “,” + “姓名:” + c.Name + “,” + “大学生” + “,” + “平均成绩为:” + c.Average()+ “n”;
}
} } 2、设计一个 Windows 应用程序,在该程序中定义平面图形抽象类和派生类圆,矩形和三角形。
Figure 类代码:
using System;using System.Collections.Generic;using System.Text;namespace Test3_2
{
public abstract class Figure
{
public abstract double Area();
}
public class Circle:Figure
{
double radius;
public Circle(double r)
{
radius = r;
}
public override double Area()
{
return radius * radius * 3.14;
}
}
public class JUxing:Figure
{
double chang;
double kuan;
public JUxing(double c, double k)
{
this.chang = c;
this.kuan = k;
}
public override double Area()
{
return chang * kuan;
}
}
public class San:Figure
{
double bian;
double heigth;
public San(double b, double h)
{
this.bian = b;
this.heigth = h;
}
public override double Area()
{
return bian * heigth / 2;
}
} } Form 窗体代码:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Test3_2 {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnCircle_Click(object sender, EventArgs e)
{
Circle c=new
Circle(Convert.ToInt32(TxtChang.Text));
lblShow.Text = “圆的面积为:” + c.Area();
}
private void btnJu_Click(object sender, EventArgs e)
{
JUxing j = new JUxing(Convert.ToInt32(TxtChang.Text),Convert.ToInt32(TxtHigh.Text));
lblShow.Text = “矩形的面积为:” + j.Area();
}
private void btnSan_Click(object sender, EventArgs e)
{
San s = new San(Convert.ToInt32(TxtChang.Text), Convert.ToInt32(TxtHigh.Text));
lblShow.Text = “三角形的面积为:” + s.Area();
}
} }
3、定义一个 Person 类,包含姓名字段和一个方法,早上 8:30学生开始上课,教师开始讲课。分别用 new 关键字,虚方法,抽象类实现多态性。
New 关键字:
using System;using System.Collections.Generic;using System.Text;
namespace third.three {
class Program
{
static void Main(string[] args)
{
Student s=new Student(“学生”);
Teacher t=new Teacher(“教师”);
Console.WriteLine(s.name+s.work());
Console.WriteLine(t.name+t.work());
Console.ReadLine();
}
}
public class Person
{
public string name;
public interface method
{ string work();}
}
public class Student:Person
{
public Student(string name)
{ this.name = name;}
public string work()
{ return “早上 8:30 开始上课”;}
}
public class Teacher:Person
{
public Teacher(string name)
{ this.name = name;}
public string work()
{ return “开始讲课”;}
} } 虚方法:
using System;
using System.Collections.Generic;using System.Text;
namespace third.three.two {
class Program
{
static void Main(string[] args)
{
Student s = new Student(“张三”,“学生”);
PersonWork(s);
Teacher t=new Teacher(“李斯”,“教师”);
PersonWork(t);
}
private static void PersonWork(Person Person)
{ Console.WriteLine(Person.Work());}
}
public class Person
{
public string name;
public Person(string name)
{ this.name = name;}
public virtual string Work()
{ return string.Format(“Person{0}:早上 8:30 开始”,name);}
}
public class Student : Person
{
private string type;
public Student(string name, string type)
: base(name)
{ this.type = type;}
public override string Work()
{
return string.Format(“Person{0}:早上 8:30 开始上课”, name);
}
}
public class Teacher : Person
{
private string type;
public Teacher(string name, string type)
: base(name)
{ this.type = type;}
public override string Work()
{
return string.Format(“Person{0}:开始讲课”, name);
}
} }
抽象类:
using System;using System.Collections.Generic;using System.Text;
namespace third.three.three {
class Program
{
static void Main(string[] args)
{
Student s = new Student(“张三”, “学生”);
PersonWork(s);
Teacher t = new Teacher(“李斯”, “教师”);
PersonWork(t);
}
private static void PersonWork(Person person)
{
Console.WriteLine(person.Work());
}
}
public abstract class Person
{
public string name;
public Person(string name)
{ this.name = name;}
public abstract string Work();
}
public class Student : Person
{
private string type;
public Student(string name, string type)
: base(name)
{
this.type = type;
}
public override string Work()
{
return string.Format(“Person{0}:早上 8:30 开始上课”, name);
}
}
public class Teacher : Person
{
private string type;
public Teacher(string name, string type)
: base(name)
{
this.type = type;
}
public override string Work()
{
return string.Format(“Person{0}:开始讲课”, name);
}
}
}
六、实验体会(遇到问题及解决办法,编程后的心得体会)
通过本次实验,我理解了类的继承性与多态性;掌握了虚方法的定义以及如何用虚方法来实现多态;掌握了抽象类的定义以及如何用抽象方法来实现多态。
这次实验与前两次不同,采用 Windows 应用程序,既涉及到代码段也涉及到界面的设计。所以,勉强通过实验。
实验项目名称:
接口、文件和流
实验学时:
同组学生姓名:
实验地点:
A205
实验日期:月 7 日-12 月 21 日 实验成绩:
批改教师:
批改时间:
实验 4
接口、文件和流
一、实验目的
(1)掌握接口的定义及使用方法;(2)掌握流,序列化和反序列化的概念和使用方法;(3)掌握流文件的读写操作类及其使用方法;(4)掌握 OpenFileDialog,SaveFileDialog 等控件的使用。
二、实验要求
(1)编写程序要规范、正确,上机调试过程和结果要有记录;(2)做完实验后给出本实验的实验报告。
三、实验设备、环境
安装有 Visual Studio.NET 软件。
四、实验步骤
1、分析题意; 2、根据题目要求,新建项目; 3、编写并输入相关的程序代码; 5、运行与调试项目; 6、保存项目。
五、实验内容
1、定义一个 Person 类,包含姓名字段和一个方法,早上 8:30学生开始上课,教师开始讲课。用接口来实现。
using System;using System.Collections.Generic;
using System.Text;namespace Test4_1 {
class Program
{
static void Main(string[] args)
{
Student s = new Student(“张三”,“学生”);
Console.WriteLine(s.Work());
Teacher t = new Teacher(“李四”,“老师”);
Console.WriteLine(t.Work());
}
public abstract class Person
{
public string name;
public Person(string name)
{
this.name = name;
}
}
interface IPerson
{
string type { get;}
string Work();
}
public class Student :Person, IPerson
{
public string type
{
get { return string.Format(“老师”);}
}
public Student(string name, string type)
: base(name)
{
this.name=name;
}
public string Work()
{
return string.Format(“Person{0}:早上 8:30 开始上课”, name);
}
}
...
第五篇:机械制造技术基础小结1
1、0是 前角 的符号,是在 正交平面内测量的 前刀 面与 基 面的夹角。
2、s是 刃倾角 的符号,是在 切削平面内测量的 主切削刃 与 基 面的夹角。
3、过选定点,垂直于切削刃在 基 面内投影的剖面叫 正交平面。
4、在刀具寿命关系式vT中,m代表的是v对T的影响程度,m越大,影响 越小,m越小,影响 越大。
5、砂轮的硬度是 磨粒受力后从砂轮表面脱落的难易程度,工作材料硬,应选用硬度 较软 砂轮,磨削有色金属等软材料时,应选用 较硬 砂轮。
6、为减小加工表面的理论粗糙度,f应 减小。
7、车床主轴轴线与车床导轨在水平面内不平行,加工出的工件形状是 锥形 ;
在铅垂面内不平行,加工出的工件形状是 鞍形。
8、按工序的加工要求,工件应限制的自由度数未予限制的定位,称为 欠定位 ;工件的同一自由度被两个或两个以上的支承点重复限制的定位,称为 过定位。
1、YT30、YG8、YT5、YG3、WI8Gr4V是什么刀具材料?其组成成分是什么?各适合于加工哪类工件材料?在怎样 的加工要求下选用?(4分)答:
YT30是硬质合金、含TiC30%、适合加工钢、粗加工;(1分)
YG8是硬质合金、含Co8%、其余成分为WC、适合加工铸铁及有色金属、粗加工;(1分)
YT5是硬质合金、含TiC5%、适合加工钢、精加工;(1分)W18Gr4V是高速钢刀具材料,表示含W18%、含Gr4%,含V1%。高速钢刀具材料适合加工钢,易做成复杂刀具使用。(1分)
3、叙述粗、精基准的选择原则,加工顺序安排原则。(4分)答:
粗基准的选择原则:保证加工表面相对于不加工表面具有一定位置精度的原则;合理分配加工余量的原则;便于装夹的原则;粗基准一般不得重复使用的原则。(2分)
粗基准的选择原则:基准统一、基准重合、互为基准、自为基准的原则。(2分)
4、试述夹紧力的确定原则。(4分)答:
夹紧力的方向:应使定位基面与定位元件接触良好,保证零件定位准确可靠;应与工件刚度最大的方向一致;尽量与切
削力重力方向一致。(2分)
夹紧力的作用点:应正对支承元件或位于支承元件所形成的支承面内。应位于工件刚度较好的部位应尽量靠近加工表面。(1分)夹紧力的大小:类比法和计算法。(1分)
如图所示,工作以外圆为定位表面加工键槽,Ⅴ形块夹角为ɑ。求定位误差△dw(H1)、△dw(H2)、△dw(H3)、△dw(对称).答:(10分)
dw(H1)Tda2sin2,dw(H2)定 误差分)
(2.5分)
Td11a2sin2,(2.5
dw(H3)Td112asin2,(2.5
分)dw(对称)0(2.5分)