第一篇: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、在刀具壽命關系式v?T中,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分)
??Td?1???1?a?2?sin??2???,(2.5
?dw(H3)???Td?1??1??2?a?sin??2??,(2.5
分)?dw(對稱)?0(2.5分)