可視化編程C sharp 記事本課程設(shè)計_第1頁
可視化編程C sharp 記事本課程設(shè)計_第2頁
可視化編程C sharp 記事本課程設(shè)計_第3頁
可視化編程C sharp 記事本課程設(shè)計_第4頁
可視化編程C sharp 記事本課程設(shè)計_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、 二0一四 二0一五 學(xué)年第 一 學(xué)期計算機科學(xué)與技術(shù)學(xué)院課程設(shè)計報告書 題 目: 記事本程序 課程名稱: 可視化編程 班 級: 學(xué) 號: 姓 名: 指導(dǎo)教師: 張 志 輝二0一四年 十二月十日 目錄1、 課程設(shè)計的目的與要求22、 題目說明22.1程序開發(fā)景.42.2開發(fā)工紹.42.3設(shè)計流程圖.43、 總體設(shè)計54、 詳細說明64.1 系統(tǒng)實施.64.2 設(shè)計步驟124.3控件屬性135、 遇到的問題和解決法.146、 課程設(shè)計總結(jié).16七、 附錄17 7.1 程序完整碼17 7.2 參考文獻21 一、課程設(shè)計的目的與要求 目的: 1、熟悉.NET開發(fā)環(huán)境,能夠使用C#語言在.NET平臺上

2、獨立設(shè)計、開發(fā)WINDOWS應(yīng)用程序。 2、掌握C#語言的異常處理技術(shù),能夠使用.NET各種調(diào)試方法調(diào)試代碼,掌握幫助的使用方法。 3、掌握常用控件以及控件的常用屬性的使用方法。 要求: 1、程序中應(yīng)有不少于100300行的自行編寫的代碼,代碼需書寫詳細注釋。 2、軟件界面美觀大方,操作簡潔易用,功能完備可靠。 3. 通過c#課程設(shè)計,使學(xué)生能將學(xué)到的面向?qū)ο蟮某绦蛟O(shè)計思想用到具體的工作和學(xué)習(xí)中,加深對類和對象的理解,要求學(xué)生能夠?qū)ΜF(xiàn)實生活中許多具體事物抽象出類,并掌握繼承與派生,基類、虛方法和抽象方法和多態(tài)性的概念。二、題目說明 創(chuàng)建支持多文檔的記事本,每個子窗口都應(yīng)包含一個Rich Tex

3、t Box。MDI父窗口具有“格式”菜單,用于子菜單控制活動子窗口中文本的大小、字體和顏色。每個子菜單至少含有三個選項極其快捷鍵。另外,父菜單還含有“文件”菜單,菜單項有“新建”(創(chuàng)建新的子窗口)、“關(guān)閉”(關(guān)閉活動子窗體)和“退出”(退出應(yīng)用程序)。父窗口還有“窗口”菜單顯示一系列打開的子窗口及其布局選項。 參考界面如下: 圖1主要實現(xiàn)界面2.1程序開發(fā)背景 為了滿足用戶對于記事本的一些基礎(chǔ)需求,主要包括“打開”記事本,“新建”、“字體編輯”及保存等功能,所以在老師與自己查閱書籍的情況下,選擇編寫記事本這一題目。2.2開發(fā)工具介紹C#(讀做 "C sharp",中文譯音暫

4、時沒有.專業(yè)人士一般讀"C sharp",現(xiàn)在很多非專業(yè)一般讀"C井"。 C#是微軟公司發(fā)布的一種面向?qū)ο蟮?、運行于.NET Framework之上的高級程序設(shè)計語言。并定于在微軟職業(yè)開發(fā)者論壇(PDC)上登臺亮相。C#是微軟公司研究員Anders Hejlsberg的最新成果。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承、接口、與Java幾乎同樣的語法和編譯成中間代碼再運行的過程。 但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司.NET windows網(wǎng)絡(luò)框架的主角。

5、2.3程序設(shè)計流程圖三、總體設(shè)計總體設(shè)計思路主要是為了實現(xiàn)用戶打開記事本時,通過新建新的文本文檔,來記事。用戶可以執(zhí)行的操作有,錄入文本后,對文本的字體、顏色、格式等進行編輯,同時還可以進行撤消、剪切、粘貼、全選等操作,是用戶方便使用。待文字及其格式做好后,用戶可以保存,或者另存為到自己想要的位置。四、詳細說明用戶可以在記事本里通過新建、編輯、保存等功能實現(xiàn)正常記事本的功能。還可以通過格式里面的字體、顏色等來編輯文字。同時編輯里面的撤銷、剪切、粘貼等功能也從不同層面上滿足用戶的一定需求。通過程序所要實現(xiàn)的功能可以看出,該程序中有文件、格式等主要對象,所以我們可以通過定義生成子窗體、字體窗體、顏

6、色窗體等來實現(xiàn)記事本文字的編輯部分,還要定義類,完成窗體間的轉(zhuǎn)換。4.1 系統(tǒng)實施1、 文件->新建2、 功能簡介:通過點擊文件下的新建功能,可以彈出多個文本框,方便用實現(xiàn)記事功能。界面截圖如下: 圖2新建實現(xiàn)效果 關(guān)鍵代碼如下: /新建 private void toolStripButton1_Click(object sender, EventArgs e) if (baocun = false) /未保存 if (richTextBox1.Text != "") /確保有內(nèi)容 if (MessageBox.Show("內(nèi)容不為空,且未保存,是否保存&

7、quot;, "警告?", MessageBoxButtons.OKCancel) = DialogResult.OK) ; SaveFile(); 2、文件->另存為 功能簡介:通過點擊文件下的另存為功能,可以彈出窗口,給出用戶可以保存文件的位置,方便用戶實現(xiàn)保存文本不丟失的功能。 界面截圖如下:圖3另存為實現(xiàn)效果關(guān)鍵代碼如下: /另存為 private void 另存為aToolStripMenuItem_Click(object sender, EventArgs e) filepath = "" SaveFile(); 3、文件->打

8、開功能簡介:在新建文本后,通過點擊文件下的打開功能,用戶可以打開路徑文位置的文件。方便隨時進行編輯。 界面截圖如下:圖4頁面設(shè)置實現(xiàn)效果 關(guān)鍵代碼如下: /打開 private void toolStripButton2_Click(object sender, EventArgs e) if (openFileDialog1.ShowDialog() = DialogResult.OK) filepath = openFileDialog1.FileName; /記錄打開的文件名 /實例化一個字節(jié)流的對象 StreamReader sr = new StreamReader(filepath

9、, Encoding.Default); richTextBox1.Text = sr.ReadToEnd(); /將流中的字符寫到文本框中 sr.Close(); /關(guān)閉字節(jié)流 this.Text = "藍色風(fēng)暴記事本" + filepath; /設(shè)置窗體標(biāo)題 baocun = true; /設(shè)置文檔是已保存 4、文件->退出功能簡介:在用戶輸入文字途中,若要退出當(dāng)前窗口,可以點擊文件下的退出功能,會彈出一個提示框,提醒用戶是否確認(rèn)退出并保存文檔。 界面截圖如下:圖5退出功能 關(guān)鍵代碼如下: /退出 private void 退出ToolStripMenuItem_

10、Click(object sender, EventArgs e) if (baocun = false) if (richTextBox1.Text != "") if (MessageBox.Show("當(dāng)前文本內(nèi)容不為空,是否保存", "警告", MessageBoxButtons.OKCancel) = DialogResult.OK) if (SaveFile() /如果保存成功 Application.Exit(); /退出 else Application.Exit(); /退出 5、工具->字體 功能簡介:在用戶

11、輸入文字時,若想對內(nèi)容進行編輯,可以通過字體菜單來實現(xiàn)。字體菜單主要有自動換行、字體、顏色等功能,用戶可以有選擇的使用。界面截圖如下:圖6編輯字體實現(xiàn)效果 關(guān)鍵代碼如下: /字體 private void 字體ToolStripMenuItem_Click(object sender, EventArgs e) /關(guān)聯(lián)起來 fontDialog1.Font = richTextBox1.Font; fontDialog1.Color = richTextBox1.ForeColor; if (fontDialog1.ShowDialog() = DialogResult.OK) richTex

12、tBox1.Font = fontDialog1.Font; richTextBox1.ForeColor = fontDialog1.Color; baocun = false; 6、幫助->關(guān)于功能簡介:在用戶想要了解記事本版本相關(guān)信息時,可以通過幫助下的關(guān)于框進行了解。界面截圖如下:圖7編輯顏色實現(xiàn)效果 關(guān)鍵代碼如下: /關(guān)于 private void 關(guān)于ToolStripMenuItem_Click(object sender, EventArgs e) AboutBox1 ab = new AboutBox1(); ab.Show(); 以上就是該記事本運行可以實現(xiàn)的功能的大

13、部分介紹,希望用戶可以方便簡單的運用起來。4.2設(shè)計步驟1.設(shè)置全局變量(路徑、保存)。2.用字節(jié)流實現(xiàn)打開、保存、和新建。3.實現(xiàn)菜單條、工具條、右鍵菜單的復(fù)制、剪切、粘貼、全選、撤銷功能。4.實現(xiàn)對字體的設(shè)置。5.實現(xiàn)狀態(tài)欄的字?jǐn)?shù)統(tǒng)計。6.實現(xiàn)在線幫助和狀態(tài)欄的鏈接操作。7.實現(xiàn)退出和關(guān)閉事件的操作。8.實現(xiàn)對象的查找和關(guān)于對話框的創(chuàng)建。4.3控件屬性Main 及其控件的屬性設(shè)置名稱屬性屬性值MainText藍色風(fēng)暴記事本Icon圖標(biāo)Tool strip Container在父類容器中???,并隱藏左右欄Menu Strip 1文件(F)/新建/打開/保存/編輯(E)/剪切/復(fù)制/粘貼/工具

14、(T)/字體/查找/撤銷/幫助(H)/在線幫助/關(guān)于/Tool Strip 1Display StyleImage And Textimage工具圖標(biāo)Tool Strip 2Display StyleImage And Textimage工具圖標(biāo)Tool Strip 3Display Style TextText Box輸入框Status Strip 1Text Box當(dāng)前輸入字?jǐn)?shù)為:NameMiddleRich Text Box 1??糠绞皆诟溉萜髦蠨etect Ur lsTrueContext Menu Strip 1Context MenuContext Menu Strip 1Open

15、 File Dialog 1Text打開Save File Dialog 1Text保存Font Dialog 1Text字體菜單欄邊框截圖,如下:部分控件具體屬性,如下:名稱屬性屬性值名稱屬性屬性值Menu Strip 1VisibleFalseMun CopyText復(fù)制(C)Save FileText文件(F)Short cut KeyCTRL +CMerge ActionMatch OnlyMun PasteText粘貼(V)Save CopyEnabledFalseShort cut KeyCTRL +VSave CloseText關(guān)閉(C)Save DeleteEnabledFal

16、seMerge ActionInsertText刪除(D)Merge Index2Short cut KeyDeleteMun SaveText保存(S)Mun FindText查找(Z)Short cut KeyCTRL +SShort cut KeyAlt +ZMerge ActionInsertMun ReplaceText撤銷(S)Merge Index4Short cut KeyAlt +SMun EditText編輯(E)Mun Select ALLText全選(A)Merge ActionInsertShort cut KeyCTRL +AMerge Index1Mun Word

17、 WrapText自動換行Tool Strtip1Merge ActionInsertCheckedTrueMerge Index6Check ClickTrue五、遇到的問題和解決方法例如:1.在沒有提前聲明System.IO的情況下,使用字節(jié)流函數(shù),在設(shè)置完字節(jié)流之后,沒有及時關(guān)閉字節(jié)流。這樣的直接后果就是,在運行程序打開文本時出現(xiàn)了亂碼。2.在調(diào)用方法 Save File()時,有一個地方漏掉了返回值,后再運行代碼時一直報錯,直到看過提示之后,在明白過來。3.在用代碼實現(xiàn)剪切、復(fù)制、粘貼、刪除時,起初直接按照自己的思路用代碼進行編輯,結(jié)果各種麻煩來了,要么沒有實現(xiàn)預(yù)期功能,要么代碼冗長,

18、多步編輯時,錯誤頻出,后來在網(wǎng)上查閱相關(guān)資料之后,才明白其實可以直接調(diào)用微軟提前寫好的類快捷語句Cut、Copy、Paste等來實現(xiàn),這樣方便、快捷,效率和準(zhǔn)確率高。4.因為在窗體設(shè)計時,對控件命名的不規(guī)范,直接導(dǎo)致了后期在Click事件方法對應(yīng)時,出現(xiàn)了事件與方法對應(yīng)混亂,找尋繁瑣。5.在對鼠標(biāo)右鍵快捷菜單設(shè)置時把Context Menu Strip控件在窗體上的所有屬性值都編輯好了,卻發(fā)現(xiàn)無論程序怎么運行,改控件都不起作用,后來查閱資料后。才明白Context Menu Strip與tool Strip及Menu Strip屬性有區(qū)別,還要在屬性框添加Context Menu Strip屬

19、性框,才能真正被應(yīng)用。6.在對VS文件保存時,因為誤操作更改了文件保存路徑,結(jié)果重新把文件移動到工作文件夾時,系統(tǒng)提示打開文件錯誤,找不到原始路徑文件。后來只好再重新編輯。7.在對軟件發(fā)布之后,應(yīng)用程序出現(xiàn)圖標(biāo)丟失問題,在icon屬性值上無論怎么添加圖片路徑都無法導(dǎo)入應(yīng)用程序圖標(biāo),后來上網(wǎng)查閱之后才明白,原來VS應(yīng)用程序圖標(biāo)是應(yīng)該在項目文件/屬性/應(yīng)用程序下進行添加的。8.在應(yīng)用篩選器對文件進行篩選時,因為命名錯誤遺漏了“|”符號,這個細節(jié)問題直接導(dǎo)致篩選命名錯誤,無法進行。9.在添加“關(guān)于對話框”時,不了解系統(tǒng)自帶編輯框?qū)傩裕率钩绦虺霈F(xiàn)意外空語句錯誤。10.在運行過程中,會隨機地出現(xiàn)未處理

20、“System.NullReferenceException”類型的異常出現(xiàn)在未知模塊中及信息,未將對象引用設(shè)置到對象的實例,或出現(xiàn)未處理的“System.ArgumentException”類型的異常出現(xiàn)在system.windows.forms.dll 中?!边@樣的兩個異常錯誤,點擊中斷后則會出現(xiàn)提示“沒有可用的當(dāng)前代碼”。11.據(jù)題目要求,需在運行時顯示狀態(tài)欄,這將更好地達多文檔的思想。我們采用了加入菜單查看,添加名稱為狀態(tài)的子菜單。雙擊后在其Click事件中加入它的執(zhí)行語句:this.statusBar1.Text=this.ActiveMdichile.Text;這樣運行后就可以通過

21、點擊查看菜單中的狀態(tài)欄來查看目前處于活動狀態(tài)的文檔是所建立的第幾個文檔。六、課程設(shè)計總結(jié) 在此次課程設(shè)計中,我設(shè)計的記事本基本上實現(xiàn)了記事本的相關(guān)功能,比如文檔的編輯、修改、保存、打開等功能。在設(shè)計初期由于對VS庫中原有類的不了解,導(dǎo)致編輯途中出現(xiàn)了各種各樣的問題。雖然這些問題最終都得以解決,程序也能較好的應(yīng)用。但是依舊存在一些小問題待解決:1.在文件保存時,未能像微軟開發(fā)的記事本一樣,默認(rèn)保存類型text,這樣的后果就是不能用記事本打開自己生成的文件,并且每次還得指定用微軟記事本打開。2.在查找功能上使用了單一的查找代碼,不能及時完成對所有相同結(jié)果的同步查找,介于此,替換功能就無法執(zhí)行下去了

22、。3.在字體編輯方面,雖然較之微軟記事本多了“顏色調(diào)整”功能,但是在對部分對象進行編輯時,執(zhí)行后默認(rèn)對全部對象做出了調(diào)整,造成這樣的原因是:在將方法用代碼實現(xiàn)時,思想不夠嚴(yán)密,代碼結(jié)構(gòu)簡單單一造成的,這在以后的設(shè)計中一定要引以為戒,時刻保持思想謹(jǐn)慎、代碼邏輯嚴(yán)密。當(dāng)然,此記事本也并非一無是處,相比微軟記事本,還是有屬于自己特色的方面的。比如:1.在記事本狀態(tài)欄用“計數(shù)”取代了“定位”,這樣方便了解當(dāng)前輸入字?jǐn)?shù),比單純定位好多了。2.記事本加入了“工具欄”這項,經(jīng)常用到的工具可以快速啟用。3.對右鍵菜單個性化設(shè)置,提高操作效率。4.字體編輯項加入了顏色選擇功能,更加方便。 整個設(shè)計的過程中,我們

23、不僅僅只是經(jīng)歷了是失敗與成功所帶來的啟迪,我們還體會到了一種很重要的東西,那就是團體的力量。設(shè)計中,我有不懂得地方就請教老師和同學(xué),可以說在大家的幫助下我才得以完整的呈現(xiàn)出我的成果。 這次課程設(shè)計讓我學(xué)到了很多東西。對圖形化設(shè)計有了更具體的認(rèn)識,讓我們復(fù)習(xí)了以前學(xué)過的知識,也讓我們對圖形化設(shè)計更深刻的理解。團隊精神的重要性??傊?這次的設(shè)計使我受益頗深。7、 附錄7.1程序代碼 如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.D

24、rawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;namespace hu_Node public partial class Main : Form string filepath = "" /文件路徑 bool baocun = false; /當(dāng)前文檔保存狀態(tài) public Main() InitializeComponent(); /打開 private void toolStripButton2_Click(object sender, Eve

25、ntArgs e) if (openFileDialog1.ShowDialog() = DialogResult.OK) filepath = openFileDialog1.FileName; /記錄打開的文件名 /實例化一個字節(jié)流的對象 StreamReader sr = new StreamReader(filepath, Encoding.Default); richTextBox1.Text = sr.ReadToEnd(); /將流中的字符寫到文本框中 sr.Close(); /關(guān)閉字節(jié)流 this.Text = "藍色風(fēng)暴記事本" + filepath; /

26、設(shè)置窗體標(biāo)題 baocun = true; /設(shè)置文檔是已保存 /保存 private void toolStripButton3_Click(object sender, EventArgs e) SaveFile(); /保存文檔 返回是否保存成功 private bool SaveFile() if (filepath = "") /未保存的文檔 if (saveFileDialog1.ShowDialog() = DialogResult.OK) filepath = saveFileDialog1.FileName; StreamWriter sw = new S

27、treamWriter(filepath, false, Encoding.Default); sw.WriteLine(richTextBox1.Text); /從文本框中得到內(nèi)容 sw.Flush(); sw.Close(); baocun = true; this.Text = "藍色風(fēng)暴記事本?" + filepath; /設(shè)置窗體標(biāo)題 return true; /保存成功 try-catch else return false; else/不為空 StreamWriter sw = new StreamWriter(filepath, false, Encodin

28、g.Default); sw.WriteLine(richTextBox1.Text); /從文本框中得到內(nèi)容 sw.Flush(); sw.Close(); baocun = true; return true; /保存成功 /新建 private void toolStripButton1_Click(object sender, EventArgs e) if (baocun = false) /未保存 if (richTextBox1.Text != "") /確保有內(nèi)容 if (MessageBox.Show("內(nèi)容不為空,且未保存,是否保存"

29、, "警告?", MessageBoxButtons.OKCancel) = DialogResult.OK) ; SaveFile(); /把所有的東西全部置為初始值 richTextBox1.Text = "" this.Text = "藍色風(fēng)暴記事本" baocun = false; filepath = "" /另存為 private void 另存為aToolStripMenuItem_Click(object sender, EventArgs e) filepath = "" Sa

30、veFile(); /剪切 private void toolStripButton4_Click(object sender, EventArgs e) richTextBox1.Cut(); baocun = false; /復(fù)制 private void toolStripButton5_Click(object sender, EventArgs e) richTextBox1.Copy(); /粘貼 private void toolStripButton6_Click(object sender, EventArgs e) richTextBox1.Paste(); baocun

31、= false; /全選 private void 全選ToolStripMenuItem_Click(object sender, EventArgs e) richTextBox1.SelectAll(); /字體 private void 字體ToolStripMenuItem_Click(object sender, EventArgs e) /關(guān)聯(lián)起來 fontDialog1.Font = richTextBox1.Font; fontDialog1.Color = richTextBox1.ForeColor; if (fontDialog1.ShowDialog() = Dial

32、ogResult.OK) richTextBox1.Font = fontDialog1.Font; richTextBox1.ForeColor = fontDialog1.Color; baocun = false; /自動換行 private void toolStripButton7_Click(object sender, EventArgs e) if (richTextBox1.WordWrap = false) richTextBox1.WordWrap = true; else richTextBox1.WordWrap = false; /內(nèi)容改變的時候發(fā)生(狀態(tài)欄) pr

33、ivate void richTextBox1_TextChanged(object sender, EventArgs e) tsslbl_num.Text = richTextBox1.Text.Length.ToString(); baocun = false; private void 在線幫助ToolStripMenuItem_Click(object sender, EventArgs e) System.Diagnostics.Process.Start(" /退出 private void 退出ToolStripMenuItem_Click(object sender

34、, EventArgs e) if (baocun = false) if (richTextBox1.Text != "") if (MessageBox.Show("當(dāng)前文本內(nèi)容不為空,是否保存", "警告", MessageBoxButtons.OKCancel) = DialogResult.OK) if (SaveFile() /如果保存成功 Application.Exit(); /退出 else Application.Exit(); /退出 /關(guān)閉時發(fā)生窗體 private void Main_FormClosing(object

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論