freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c語言課程設(shè)計c語言文本編輯器-wenkub

2023-07-10 06:24:25 本頁面
 

【正文】 后,它的默認值為drawmenu(0,0),表示繪制File菜單及其5個菜單選項,并將菜單選擇光帶條置于第一個菜單選項上。下面分別介紹這3項功能的具體實現(xiàn)。它的具體實現(xiàn)過程如下:(1) 若全局變量backup的值大于0(大于0表示已經(jīng)有字符放入了剪貼板數(shù)組)中,則執(zhí)行下面的操作。(2) 利用全局變量backup保存value的值后,將value賦值為0。(7)(2)保存當(dāng)前位置的坐標(biāo),利用循環(huán)語句,依次利用x[0]至x[value1]數(shù)組元素保存已選定字符的坐標(biāo),調(diào)用del()函數(shù)在單鏈表中一次刪除一個選定的字符。其文本選定的實現(xiàn)過程如下:(1) 當(dāng)用戶按下Ctrl+或Ctrl+鍵時,程序?qū)?dāng)前光標(biāo)位置向左或向右移動一個位置。在剪切板操作模塊中,主要完成對已選定文本的剪切、復(fù)制和粘貼工作,因此剪貼板操作與文本選定工作密切相關(guān)。(4) 計算出第m行中沒有字符的位置的個數(shù)num,然后在第m+1行的相應(yīng)列單鏈表中截取num個節(jié)點,并將行單鏈表中的第m+1節(jié)點的數(shù)據(jù)域改為相應(yīng)列單鏈表中的第num個節(jié)點后的節(jié)點的地址。若在第m行、第n列的位置刪除一個字符,其在列單鏈表中刪除一個節(jié)點的操作域插入工作十分相似,所以這里重點介紹刪除該字符后,單鏈表中數(shù)據(jù)的前移工作過程。(3) 若tail所指節(jié)點的數(shù)據(jù)域為Enter鍵(ASCII為13)且在行單鏈表中只有m個節(jié)點,則在此行單鏈表中添加一個新的節(jié)點,新節(jié)點的數(shù)據(jù)域為p2的值,指針域為空,并將m節(jié)點的指針域指向它。若字符不是插入在第m行第1列,則執(zhí)行簡單的單鏈表中插入節(jié)點的操作。若在第m行,第n列的位置插入一個字符,其insert()過程描述如下:(1) 定位至行單鏈表中的第m個節(jié)點,得到這個節(jié)點的數(shù)據(jù)域的值,其值為對應(yīng)列單鏈表中第一個節(jié)點的地址。下面介紹這4個功能的具體設(shè)計與實現(xiàn)。(4) 依次讀取行單鏈表節(jié)點中保存的首地址的相應(yīng)列單鏈表節(jié)點的數(shù)據(jù)域的值,若其值為回車符,則用換行符替代后將其寫入文件中;否則直接將其值寫入文件中,直至該列單鏈表中指針域為NULL的最后一個元素結(jié)束。2)保存文件 保存文件操作主要完成將單鏈表中的數(shù)據(jù)寫入文件中的任務(wù),它的具體實現(xiàn)流程如下。1)打開文件 ,它首先提示用戶輸入要打開文件的文件名,若該文件不存在或由于其他原因打開失敗,則會結(jié)束文件打開操作。在此程序中,共有兩種類型的單鏈表,我們稱其為行單鏈表和列單鏈表,一個列單鏈表用來保存一行的字符,有多少行即有多少個這樣的單鏈表。若為F1鍵,則調(diào)用File菜單;若為F2鍵,則調(diào)用Edit菜單;若為F3鍵,則調(diào)用Help菜單。若為Ctrl+C鍵,則將選定的相關(guān)內(nèi)容保存起來,重新顯示單鏈表中的內(nèi)容(目的:為了去除字符的底色)。(5) 若按鍵為Ctrl開頭的按鍵,則執(zhí)行與其相關(guān)的操作。(1) 若按鍵為常規(guī)字符,即其ASCII碼大于32小于127,則繼續(xù)判斷在文本編輯區(qū)的當(dāng)前光標(biāo)位置有沒有字符,若有字符,則調(diào)用insert()函數(shù),將此字符插入在當(dāng)前位置,否則在判斷沒有滿行后,將此字符添加在單鏈表的數(shù)據(jù)域中,若此行已滿,則執(zhí)行添加新行操作。 3 總體設(shè)計 功能模塊設(shè)計,簡單描述了各功能模塊的作用,下面分別介紹各功能模塊的具體設(shè)計。主窗口要有菜單欄,文本編輯區(qū)和狀態(tài)欄三大部分構(gòu)成,菜單欄用來顯示菜單項,文本編輯區(qū)主要用來文本字符的輸入,刪除等操作,狀態(tài)欄主要用來顯示當(dāng)前光標(biāo)在文本窗口中的坐標(biāo)值。 (5) 幫助及其他模塊。光帶條在子菜單之間的上下移動或菜單之間的左右移動和子菜單項的選取。如果用戶要復(fù)制文本以便可以將它黏貼到其他位置,必須先選定文本,然后選擇Edit菜單上的Copy紫菜單或按Ctrl+C快捷鍵來完成復(fù)制任務(wù)。用戶可以使用左移鍵(←),右移鍵(→),上移鍵(↑)和下移鍵(↓)來移動光標(biāo)位置。(2) 文本編輯器模塊。在文件操作模塊中,主要完成文件的創(chuàng)建,打開,保存和另存操作。更重要的是,希望此程序能拋磚引玉,引領(lǐng)讀者掌握編程的方法和技巧,開發(fā)出更優(yōu)秀的程序。在本章中,我們將向讀者講解如何利用C語言來發(fā)展開發(fā)一個簡易的文本編輯器。文本編輯器 文本編輯器是最常用的文檔創(chuàng)建和編輯工具。 1 設(shè)計目的利用C語言的單鏈表數(shù)據(jù)結(jié)構(gòu)及相關(guān)函數(shù),本章編程實現(xiàn)了一個與DOS操作系統(tǒng)下的Edit相似的文本編輯器。 2 功能描述 ,文本編輯器主要由五大功能模塊構(gòu)成,它們分別是文件操作模塊,文本編輯模塊,剪切操作模塊,菜單控制模塊和幫助及其他模塊。用戶可以選擇File菜單上的New子菜單來完成新建文本文件操作;選擇File菜單上的Save子菜單來完成保存文件操作選擇File菜單上的Open子菜單來完成打開文件操作;選擇Flie菜單上的Save as子菜單來完成文件的另存為操作。在文本編輯器模塊中,主要完成在編輯窗口中以添加或插入的方式輸入字符,刪除光標(biāo)所在當(dāng)前位置的單個字符或前一個位置的單個字符,朝上下左右4個方向的光標(biāo)移動操作。(3) 剪貼板操作模塊。如果用戶要粘貼剪切或復(fù)制的文本,必須將光標(biāo)置于要粘貼文本的位置,然后選擇Edit菜單上的Paste子菜單或按Ctrl+V快捷鍵來完成粘貼任務(wù)。本文本編輯器共有Flie,Edit和Help3個子菜單項,用戶可以分別按F1,F2和F3功能鍵來完成這3個菜單項的調(diào)用,即顯示某項菜單。在幫助及其他模塊中,主要完成系統(tǒng)功能及按鍵的簡要介紹。注意:Turbo ,共有80列(或40列),25行的文本單元,每個單元包括一個字符和一個屬性,字符即ASCII碼字符,屬性規(guī)定該字符的顏色和強度。在介紹各功能模塊的具體設(shè)計之前,有必要先描述一下主程序的執(zhí)行流程。(2) 若按鍵為Enter鍵,則將光標(biāo)移至下一行的行首,等待用戶輸入新的字符。具體來說,若為Ctrl+左移鍵(←),則將選定當(dāng)前光標(biāo)的位置開始向右的一個字符,若按住Ctrl鍵不放,連續(xù)按右移鍵,可以選定多個字符。若為Ctrl+V鍵,則調(diào)用insert()函數(shù)將保存起來的字符插入在單鏈表中,并重新顯示單鏈表中的內(nèi)容。2.文件操作模塊在此模塊中,主要實現(xiàn)文件的新建、打開、保存和另存為操作。行單鏈表只有一個,它的每個節(jié)點的數(shù)據(jù)域用來保存不同列單鏈表的首節(jié)點的地址。若文件成功打開并且文件指針沒有到文件尾,則從文件中一次讀取一個字符,并將該字符添加到一列單鏈表節(jié)點中,直至遇到換行符(ASCII碼10)或連續(xù)讀取字符個數(shù)大于76(在此文件編輯器中,每行最多為76個字符)。(1) 用戶輸入一個保存此單鏈表數(shù)據(jù)的文件名。(5) 讀取行單鏈表中的下一個節(jié)點,并跳至步驟(3)。1) 添加字符當(dāng)光標(biāo)處在文本編輯的最后一行的位置且光標(biāo)后面沒有字符時,若此時輸入字符,程序會判斷一行中字符的個數(shù),若字符個數(shù)不等于76,則在當(dāng)前的列單鏈表的最后一個節(jié)點中保存輸入的字符,然后添加一個新的節(jié)點來保存下一個輸入的字符:若等于76,則在當(dāng)前的列單鏈表的最后一個節(jié)點中保存輸入的字符,然后在行單鏈表中添加一個新節(jié)點用來保存下一行的列單鏈表的首地址,添加一個新的列單鏈表節(jié)點來保存下一個用戶輸入的字符。(2) 定位至列單鏈表中的第n1個節(jié)點。(5) 插入此字符后,調(diào)用test()函數(shù),從第m行開始檢查各行是否滿足每行只允許有76個字符的條件,若不滿足此條件,則必須進行處理。若tail所指節(jié)點反而數(shù)據(jù)域為Enter鍵(ASCII為13)且在行單鏈表中有多于m個節(jié)點,與上面不同的是,它執(zhí)行的是在行單鏈表插入一個新的節(jié)點的操作。(1) 在相應(yīng)的列單鏈表中刪除第n個節(jié)點。(5) 調(diào)用m++語句,是變量m增1,跳至步驟(3),開始對下一行進行處理。下面分別介紹文本的選定和對選定文本的剪切、復(fù)制和粘貼操作的具體實現(xiàn)。(2) 當(dāng)前光標(biāo)所在位置的字符的x坐標(biāo)、y坐標(biāo)和字符值保存在數(shù)組元素r[value]中value從0開始,若按減為Ctrl+,value值在原來基礎(chǔ)上每次加1;若按鍵為Ctrl+,value值在原來基礎(chǔ)上每次減1.(3) 調(diào)用Colorview()函數(shù),用不同的顏色來顯示已經(jīng)選定的當(dāng)前文本,以達到突出選定文本的效果。(3)利用全局變量backup保存value的值后,將value賦值為0。(3) 重新在文本編輯器中顯示單鏈表中保存的所有字符,并將光標(biāo)置位到原來的位置。(2) 保存當(dāng)前位置的坐標(biāo),利用循環(huán)語句,依次利用x[0]至x[backup1]數(shù)組元素保存已選定字符的坐標(biāo)和字符值,調(diào)用insert()函數(shù)在單鏈表中一次插入一個字符。1) 顯示菜單用戶可按FF2和F3功能鍵來分別調(diào)用File、Edit和Help菜單,即完成菜單的顯示。下面簡要描述一下draw(value,flag)函數(shù)的過程。(2) 然后繪制菜單的邊框及菜單選項值。(1) 若為左移鍵,則調(diào)用drawmenu(value,flag)函數(shù),將切換至某個菜單的左邊鄰居菜單。3) 選取菜單當(dāng)用戶將光帶選擇條置于某個菜單選項上時,可按Enter鍵來選取該菜單選項。6.幫助及其他模塊幫助模塊主要用于提示用戶如何使用本軟件,它的實現(xiàn)非常簡單。它主要利用文本窗口的gotoxy()函數(shù)和cprintf()函數(shù)來實現(xiàn),這里需要對文本窗口的坐標(biāo)進行仔細設(shè)計。int col,line。char ch:保存一個選定的文本字符。}node。struct node*next:指針域,指向列單鏈表中的下一個節(jié)點。Hnode結(jié)構(gòu)體定義了在一個單鏈表中保存列單鏈表首節(jié)點地址的結(jié)構(gòu),我們稱由Hnode類型的節(jié)點構(gòu)成的單鏈表為行單鏈表。4. 全局變量及數(shù)組int value,backup,NUM:value保存有值數(shù)組元素的最大下標(biāo)值,backup保存value的副本,NUM保存當(dāng)前行中用戶輸入的字符個數(shù)。q為指向行單鏈表中第一個節(jié)點的指針。7)test()函數(shù)原型:int test(Hnode*Hhead,int n)test()函數(shù)用于執(zhí)行后,檢驗第n行及后面的數(shù)據(jù),使其滿足每行不多于76個字符的規(guī)則。11)drawmenu()函數(shù)原型:void drawmenu(int m,int n)drawmenu函數(shù)用于畫菜單,m表示第幾項菜單,n表示第m項的第n個子菜單項。15)opens()函數(shù)原型:void opens(Hnode*Hp)opens()函數(shù)用于從任意文本文件中讀取文件內(nèi)容,保存至行單鏈表形式的數(shù)據(jù)結(jié)構(gòu)中。/*value保存有值數(shù)組元素的最大下標(biāo)值,backup保存value的副本,NUM保存當(dāng)前行中的用戶輸入的字符個數(shù)*/typedef struct record { char ch。 /*定義一個有500個元素的結(jié)構(gòu)體數(shù)組,保存選定的文本字符的屬性*/typedef struct node /*定義保存行中的單個字符的結(jié)構(gòu)*/ { char ch。 /*指向列單鏈表的首節(jié)點的地址*/ struct Hnode *nextl。void drawmain() /*畫主窗口函數(shù)*/ { int i,j。 /*在文本模式中選擇新的字符顏色0為BLACK黑*/ insline()。 /*(x,y)中x不變,y++*/ cprintf(%c,196)。i=79。 /*在第25行,第2列開始*/ cprintf(%c,196)。 cprintf(%c,196)。 cprintf(%c,196)。 cprintf(%c %c Edit %c %c,179,17,179)。 /*跳至窗口底端*/ textcolor(1)。 }文本字符顯示輸出模塊的作用是通過循環(huán)讀取各單鏈表,醬爆錯在單鏈表眾多的字符在文本編輯區(qū)中顯示輸出。 /*view()函數(shù)聲明*/ node *p。 /*清屏*/ /*循環(huán)讀取兩個單鏈表中的值:q是一個指向行單鏈表首節(jié)點的指針, 此單鏈表數(shù)據(jù)域的值為實際保存各行字符的列單鏈表p中的首節(jié)點地址*/ do{ p=qnext。)。 /*指向下一個節(jié)點*/ printf(\n)。 drawmain()。i24。 }void view(Hnode *q) /*按行顯示保存在單鏈表中的文本字符,q為指向行單鏈表中第一個節(jié)點的指針*/ { node *p。amp。amp。/*在文本窗口中輸出該字符*/ p=pnext。q!=NULL) gotoxy(1,wherey()+1)。下面介紹另外兩個對字符進行檢測的函數(shù),它在字符的刪除、插入等許多操作中都有用到。 int i,num=0,j,flag=0。m==1) return。 m=m1。im。in1。 free(p1)。 q1=q。 /*指向下一行的元素的地址*/ p1=p2=qnext。 q1next=p1。 /*p1指向p2的前一個節(jié)點,p2指向行單鏈表中下一個節(jié)點*/ p2=p2next。/*下行移至上行的最后一個元素,指針置空*/ } return flag。 q=Hhead。 p=qnex
點擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1