第一篇:C#實訓(xùn)日志1
12月23日(星期一):
(一)在今天我們學習了如何創(chuàng)建Windows應(yīng)用程序:
單擊“文件”——選擇“新建”——選擇“項目”——選擇“Windows應(yīng)用程序”,在此界面中可以設(shè)置項目名稱、存儲位置等,然后單擊“添加”,項目新建成功。
創(chuàng)建Windows應(yīng)用程序后會自動生成一個名為Form1的窗體,一般情況下我們將它刪除,自行新建新窗體。
(二)然后我們學習了如何在已經(jīng)創(chuàng)建好的項目中創(chuàng)建窗體:
右鍵單擊項目——單擊“添加”——選擇“新建項”——在此窗口中選擇“Windows”窗體,添加的默認名字為Form2,Form3等,我們最好將名稱改為“數(shù)據(jù)庫表名+Form”方便記憶,然后單擊“添加”,窗體新建成功。
實踐后我們了解到在一個項目中我們可以創(chuàng)建多個窗體,如果想運行哪個窗體,則需要總在該項目的“Program.cs”文件中,將“Application.Run(new MainForm());”中的“MainForm()”改成對應(yīng)的窗體名稱。
(三)我們在了解了項目需求后實現(xiàn)了父窗體以及子窗體的設(shè)定:
由于我們需要建立的是一個有菜單,有多項功能,能打開多個窗體的項目,所以我們需要一個主窗體,以及多個下屬功能窗體,也就是一個父窗體,以及多個子窗體。
我們需要一個窗體作為容器成為基類或父窗體,另一個窗體作為模板,也叫子窗體。在父窗體中可以打開多個文檔,每個文檔都是由一個單獨的子窗體顯示,所有的子窗體都是類似的,可以使用窗體的模板來創(chuàng)建,從類的角度來看所有的子窗體都是一個類的不同實例。創(chuàng)建父窗體的方法非常簡單,即為將想要設(shè)定的窗體的“IsMdiContainer”屬性值設(shè)為“True”,此時窗體的背景變?yōu)榛疑摯绑w就變?yōu)楦复绑w。然后就可以在此窗體中添加菜單從而實現(xiàn)調(diào)用其他窗體的功能。
(四)我們在創(chuàng)建好窗體后熟悉了環(huán)境中的幾項比較重要的工具窗口:
在創(chuàng)建好窗體之后我們開始在子窗體中進行界面設(shè)計,首先是熟悉環(huán)境的屬性界面,在軟件右側(cè)有兩個工具欄,分別是“解決方案資源管理器”和“屬性”窗口。
這兩項窗口都可以在視圖中找到后調(diào)出。在“解決方案資源管理器”中我們可以查看當前打開的項目的文件,雙擊即可打開對應(yīng)文件。在“屬性”中我們可以查看選中的窗體或者選中的各個控件的各項屬性值,同時可以對各項屬性進行調(diào)整。我們可以在“屬性”欄中將屬性名按照字母順序排序以方便查找,我們還可以查找對應(yīng)事件并進行修改。
而在界面左側(cè)則有一個“工具箱”,在工具箱中我們可以找到幾乎所有我們所需要的控件、容器、工具欄等。只要單擊工具箱中需要的控件,再單擊窗體就可以添加控件成功。我們也可以用容器中控件來規(guī)劃窗體,如我們可以使用“SplitContainer”空間來將窗體分割成兩部分,在兩部分中分別添加其他空間,進行不同的內(nèi)容的添加。
(五)在今天下午的課程中我們學習了如何調(diào)整窗體的各項基本屬性:
首先我們學習了如何為窗體的標題欄修改文字內(nèi)容,在屬性窗口中,我們找到“Text”屬性,然后輸入想顯示的內(nèi)容,如我們首先設(shè)計了工作信息窗體,所以在“Text”屬性右側(cè)框中輸入“工作信息管理”字樣。
然后我們了解了確定窗體的初賽可視狀態(tài)屬性,在屬性欄中找到“WindowsState”屬性,在此我們可以選擇“Minimized”也就是打開時最小化顯示,“Maximized”打開時最大化顯示以及“Normal”標準話顯示。
第二篇:C#實訓(xùn)日志3
12月25日(星期三):
(一)今天首先實現(xiàn)了“修改”按鈕的功能:
在實現(xiàn)“修改”功能之前,首先我們需要做的是將右側(cè)的數(shù)據(jù)顯示到左側(cè)的文本框中,然后我們才能方便進行修改和刪除。我們希望做到的效果是在雙擊右側(cè)數(shù)據(jù)條頭部時,可以將數(shù)據(jù)提取出來然后顯示在左側(cè),所以我們創(chuàng)建了一個“dgvJobs_RowHeaderMouseDoubleClick”事件,提取了數(shù)據(jù)庫中的數(shù)據(jù)。
然后我們通過定義局部變量來判斷想要修改成的工作編號格式是否符合要求,用“if”語句判斷是否有此工作編號,然后實現(xiàn)了修改功能。
(二)在測試中出現(xiàn)了一個問題:
在我準備執(zhí)行時出現(xiàn)了“sa登錄失敗”的錯誤,我在“JobsForm_Load”事件中添加了“this.jobsTableAdapter.Connection.ConnectionString = “ server =.;user = sa;password = 123456;database = pubs”;”語句后就解決了問題,其他同學也有遇到這個問題的,他們提供了另一種方法給我參考,就是重新綁定數(shù)據(jù)源,在登錄數(shù)據(jù)庫時使用“Windows驗證”登錄。
(三)然后我們實現(xiàn)了“刪除”功能:
刪除功能和修改功能類似,很多代碼可以公用,只需要簡單的復(fù)制粘貼,然后在修改一些值就可以直接使用,在此我也了解到有得時候編程序不需要一行一行的重復(fù)編寫,有的時候只要你記住以前自己編寫過的代碼,并理解其中的道理就可以直接使用。在這里我們就用來同樣的代碼對工作編號的格式和是否存在該工作編號進行了判斷,如果判斷后沒有異常則刪除。
(四)實現(xiàn)“保存”功能:
在實現(xiàn)了基本的增刪改功能之后,我們經(jīng)過測試基本沒有錯誤,但是此處的功能實現(xiàn)只是局限于左側(cè)文本框與右側(cè)數(shù)據(jù)顯示區(qū)的交互,并沒有真正的實現(xiàn)于數(shù)據(jù)庫中,所以每次我們執(zhí)行完操作以后,一旦關(guān)閉了窗體,再次運行窗體時,之前添加或修改的數(shù)據(jù)并沒有顯示出來。所以
我們需要完成一個保存功能,來將修改的結(jié)果同步到數(shù)據(jù)庫中。我們編寫了“btnSave_Click”事件來實現(xiàn)保存功能。定義變量“count”來計數(shù),實現(xiàn)更新數(shù)據(jù)庫中數(shù)據(jù)。
在這個地方老師又特殊強調(diào)了一個“pubsDataSet.RejectChanges();”,也就是回滾功能,這個語句在判斷是否保存成功的語句中實現(xiàn)。我們進行的設(shè)計是,如果保存成功,顯示“保存成功”,并顯示受影響的記錄的條數(shù),條數(shù)的計數(shù)就是通過“count”來實現(xiàn)的。如果保存不成功,我們會將右側(cè)數(shù)據(jù)還原到點擊“添加”或“修改”按鈕之前的狀態(tài),以方便用戶重新操作。
(五)實現(xiàn)“查找”和“取消查找”功能:
查找功能我們使用“jobsBindingSource.Filter”語句實現(xiàn),“Filter”用于獲取或設(shè)置用于篩選查看哪些行的表達式。我們使用SQL語句進行模糊查詢。
取消查詢的功能實現(xiàn)起來也很簡單,只需要將查詢文本框中的文本內(nèi)容清空,然后將“jobsBindingSource.Filter”也清空即可。
第三篇:C#實訓(xùn)日志7
12月31日(星期二):
(一)項目總結(jié):
在之前的項目設(shè)計中,我們發(fā)現(xiàn),雖然可以實現(xiàn)各個功能,但是對于某些細微的要求想要實現(xiàn)就很困難,比如在輸入密碼時要區(qū)分大小寫等等細節(jié)功能的實現(xiàn)反而非常復(fù)雜。所以在設(shè)計下一個系統(tǒng)的時候,老師準備教我們使用另一種設(shè)計方法設(shè)計下一個“學生信息管理系統(tǒng)”。
(二)設(shè)計方式:
在“學生信息管理系統(tǒng)”的設(shè)計中,我們采用C/S的設(shè)計方法設(shè)計,設(shè)計分為界面層和數(shù)據(jù)訪問層,界面層提供給用戶一個視覺上的界面,通過界面層,用戶輸入數(shù)據(jù)、獲取數(shù)據(jù),并傳給數(shù)據(jù)訪問層。數(shù)據(jù)層定義、維護數(shù)據(jù)的完整性、安全性,它響應(yīng)邏輯層的請求,訪問數(shù)據(jù)。這一層通常由大型的數(shù)據(jù)庫服務(wù)器實現(xiàn),如“Oracle”、“Sybase”、“MS SQl Server”等。
C/S 結(jié)構(gòu),即大家熟知的客戶機和服務(wù)器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu),通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到Client端和Server端來實現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應(yīng)用軟件系統(tǒng)都是Client/Server形式的兩層結(jié)構(gòu),由于現(xiàn)在的軟件應(yīng)用系統(tǒng)正在向分布式的Web應(yīng)用發(fā)展,Web和Client/Server 應(yīng)用都可以進行同樣的業(yè)務(wù)處理,應(yīng)用不同的模塊共享邏輯組件;因此,內(nèi)部的和外部的用戶都可以訪問新的和現(xiàn)有的應(yīng)用系統(tǒng),通過現(xiàn)有應(yīng)用系統(tǒng)中的邏輯可以擴展出新的應(yīng)用系統(tǒng)。這也就是目前應(yīng)用系統(tǒng)的發(fā)展方向。
Client/Server是建立在局域網(wǎng)的基礎(chǔ)上的,Browser/Server是建立在廣域網(wǎng)的基礎(chǔ)上的。
(三)主窗體界面設(shè)計:
主窗體的總體設(shè)計與“雇員管理系統(tǒng)”的主窗體大概一致,只是將菜單名改變,同樣有“快捷鍵”、“窗口”、等功能,也同樣是將主窗體設(shè)置成為一個父窗體。
(四)關(guān)于界面設(shè)計:
值得一提的是,在幫助菜單下拉列表中我們添加了“關(guān)于”功能,這項功能可以實現(xiàn)顯示此程序的版本號、設(shè)計人員名稱、LOGO、設(shè)計日期等相關(guān)信息。
具體的設(shè)計方法與普通窗體設(shè)計略有不同,在“Microsoft Visual Studio”軟件中,系統(tǒng)為我們提供了已經(jīng)設(shè)計好的“關(guān)于”窗體,只要右鍵單擊項目名——點擊“添加”——選擇“新建項”——選中“‘關(guān)于’框”就可以自動生成“關(guān)于”界面。只需要適當?shù)男薷膱D標、文本框內(nèi)容等屬性即可。
(五)“學生信息管理”界面設(shè)計:
我們在設(shè)計完主窗體后,就開始對“學生信息管理”進行基本的設(shè)計,也就是界面層的設(shè)計。
在這里我們基本使用的都是與之前的“工作信息管理”基本一致的界面,所以設(shè)計基本界面的時候十分的方便,只要打開之前的“工作信息管理”然后進行簡單的改名等操作即可完成。在這里我們深深的發(fā)現(xiàn)有得時候如果懂得利用以前的資源,就可以節(jié)省很多時間,減少編寫代碼的量。
在這個界面上與之前稍有不同的地方是添加了性別。性別錄入使用了“RadioButton”控件。這個控件的具體使用方法是當與其他單選按鈕成對出現(xiàn)時,允許用戶從一組選項中選擇單個選項,其中“一組”的意思是,所有在同一容器內(nèi)的這個控件,都稱為一組,也就是只能選擇其中一項,因為人的性別只能是男性或女性其中一種,所以選擇了“RadioButton”單選按鈕控件。
第四篇:C#實訓(xùn)日志8
1月2日(星期四):
(一)繼續(xù)完成“學生信息管理”窗體的界面設(shè)計:
由于我們在學生表中有密碼項,為了符合大眾軟件的習慣,也為用戶的信息安全性著想,所以我們將密碼輸入文本框的“PasswordCard”屬性設(shè)置為“*”,設(shè)置此屬性后,當用戶在輸入密碼文本的時候,文本信息不會顯示在密碼文本框中,輸入的值將以“*”的形式展現(xiàn)出來。
(二)“學生信息管理”界面層其他方面設(shè)計:
在設(shè)計中我們在加入新的學生信息的時候我們?yōu)檩斎氲拿艽a設(shè)計了密碼驗證功能 if(txtStuPassword.Text.Equals(txtVPassword.Text)== true){ stu.Password = txtStuPassword.Text;}else{ MessageBox.Show(“兩次密碼輸入不一致,請確認!”);return;}
使用“Equals”判斷,如果輸入的密碼與輸入在驗證密碼中的字符一致,則將密碼賦值給數(shù)據(jù)庫,否則提示“兩次密碼輸入不一致,請確認!”這項功能的判斷是為了使用戶如果偶然輸入錯誤密碼,系統(tǒng)可以自動判斷識別,提示用戶,進行重新輸入。
(三)“學生信息管理”“Entity”設(shè)計:
因為是C/S結(jié)構(gòu)設(shè)計,所以我們新建了兩個類庫,只需單擊“文件”——選擇“新建”——選中“項目”,然后在“模版”模塊下選擇“類庫”,這里需要注意的是我們不再是“創(chuàng)建新解決方案”而是選擇“添入解決方案”將新建的類庫加入已經(jīng)創(chuàng)建的“StudentsApp”項目中。我們新建了“Entity”實體層和“DAL”數(shù)據(jù)訪問層,其中實體層負責承載數(shù)據(jù)。
(四)“學生信息管理”“DAL”設(shè)計
在此層中我們分別實現(xiàn)與數(shù)據(jù)庫連接的的各項功能。
如根據(jù)班級編號查詢學生信息的方法中,首先我們需要實例化一個SQL數(shù)據(jù)庫連接,然后實例化一個SQL命令,還需要實例化一個數(shù)據(jù)讀取器。然后我們?yōu)楦鱾€對象賦值,以達到連接數(shù)據(jù)庫,并對其下達命令的功能。在打開數(shù)據(jù)庫連接后,我們讀取一個數(shù)據(jù)庫中的數(shù)據(jù),并賦值給之前實例化的數(shù)據(jù)讀取器。然后使用“while”循環(huán)語句判斷數(shù)據(jù)庫中的數(shù)據(jù)是否已經(jīng)讀取完畢,如果“dr.Read()”中沒有數(shù)據(jù),則結(jié)束此循環(huán)。最后用“return”語句將表單返回。
其他功能與數(shù)據(jù)庫的連接與查詢的代碼相似,存在區(qū)別是使用了“ExecuteNonQuery()”語句,通過返回受影響行數(shù)來判斷是否添加或刪除成功。
在此,我們需要用“try-catch”判斷數(shù)據(jù)是否提取成功。如果不成功,我們需要提示用戶異常原因,我們需要將異常拋出,返回到界面層,由于操作層無法顯示異常,所以我們要“new”一個異常,把異常原因放入此對象中,再將此對象拋出。
為了防止有人惡意篡改代碼,在輸入的文本中添加惡意代碼,防止注入攻擊,我們使用SQL參數(shù),以保證安全。
在此我們著重實現(xiàn)了登錄的功能,在“LoginByStudentIDAndPassword”方法中,我們使用“string sql = “select StudentID,Password from Students where StudentID = @StudentID and Password = @Password ”;”語句判斷是否存在一條數(shù)據(jù)的登錄名和登錄密碼與輸入的登錄名和登錄密碼一致。使用“ExecuteScalar()”語句,如果返回查詢所返回的結(jié)果集中的第一行的第一列不為空,則返回“真”否則返回“假”。
第五篇:C#實訓(xùn)總結(jié)
C#實訓(xùn)總結(jié)
實訓(xùn)期間讓我學到很多東西,不僅在理論上讓我對it領(lǐng)域有了全新的認識,在實踐能力上也得到了很大的提高,真正的學到了學以致用,更學到很多做人的道理,對我來說受益匪淺。特別是利用周六上午的時間山大為我們安排的講座讓我們了解it領(lǐng)域一些新的發(fā)展動態(tài)以及一些領(lǐng)先的技術(shù),讓我意識到自己知識的缺少,這激勵我在以后的學習、工作、生活中要不斷了解信息技術(shù)發(fā)展動態(tài)以及信息發(fā)展中出現(xiàn)的新的技術(shù)。
除此之外,我還學到了如何與人相處,如何和人跟好的交流,我們組成一個團隊大家一起開發(fā)一個項目,大家的交流溝通顯得尤為重要,如何將自己的想法清楚明白的告訴隊友,如何提出自己想法的同時又不傷害其他的隊友的面子,這些在我的實訓(xùn)生活中都有一些體會。可是說,第一次親身體會理論與實際相結(jié)合,讓我大開眼界。也是對以前學習的一個初審吧,相信這次實訓(xùn)多我以后的學習、工作也將會有很很大的影響,在短短的二十幾天里這些寶貴的經(jīng)驗將會成為我以后工作的基石。
作為大二的學生,經(jīng)過兩年的在校學習,對程序設(shè)計有了一些基本的理性的認識和理解。在校期間一直忙于理論的學習,沒有機會也沒有經(jīng)驗來參與我們項目的開發(fā),所以在實習之前軟件按開發(fā)對我來說是非常抽象的,一個完整的項目要怎么來分工以及完成該項目所需要的基本步驟也不明確,經(jīng)過這次實訓(xùn)讓我明白一個完整項目的完成必須團隊分工合作,并在每個階段進行必要的總結(jié)和檢查。在我們項目的開發(fā)過程中我們項目的步驟:詳細設(shè)計、詳細設(shè)計review、編碼、編碼review、單體測試。在項目開發(fā)過程中我也深刻的體會到詳細設(shè)計對一個項目開發(fā)有明確的指引作用,它可以使開發(fā)人員對這個項目所要實現(xiàn)的功能在總體上有具體的認識,并能減少在開發(fā)過程中出現(xiàn)不必要的脫節(jié)。
經(jīng)過二十多天的obbligato信息安全管理的java開發(fā),是我對C#軟件開發(fā)平臺有了更深一步的了解,也對nec公司的obbligato平臺有了一定的了解。
這次實訓(xùn)是對我們兩年學習的一個檢驗,雖然項目中很多知識我們在日常的學習中都沒有遇到,這同時提醒我:要想成為一個合格的程序員就有具備一種自學能力,在工作中會遇到很多從未接觸過的問題,當有了問題時要去解決,在你不斷努力,尋找答案的過程中,自己的能力也在潛移默化的提升。有時遇到問題時可能有很多想法但卻不知道那個正確,這就讓我們不斷地去探索,不斷地嘗試。
這次實訓(xùn)也讓我深刻的了解到,不管在工作中還是在生活中要和老師、同學保持良好的關(guān)系是很重要的。做事首先要先做人,要明白做人的道理,如何與人相處是現(xiàn)代社會的做認得一個最基本的問題,對已自己這樣一個即將步入社會的人來說,需要學習的東西很多。從一起做項目的同學身上我看到了謙虛謹慎、細心努力的態(tài)度,在以后我的生活中我還會留意身邊同學的優(yōu)點,從他們身上找尋我所缺少的品質(zhì),不斷學習。從老師那里我看到了企業(yè)人的生活面貌,沒有事情可以不勞而獲,今天老師們能夠領(lǐng)導(dǎo)我們是他們之前努力的結(jié)果,雖然老師沒有和我們講很多公司里的事情,可是他們的言行中所表現(xiàn)出來的都是比我們要嚴謹?shù)亩嗟膶ぷ鞯膽B(tài)度。