字串實現簡單的行編輯器 資料結構課程設計參考樣本

2022-05-18 02:49:32 字數 4595 閱讀 4871

用字串實現乙個簡單的行編輯器

學生姓名:蛋疼姐指導老師:犀利哥

摘要本課程設計主要解決在文字編輯中,對行編輯的問題,通過字串完善對文字的編輯,實現對文字的查詢、替換、和修改資料。在本課程設計中,系統開發平台為windows2000,程式語言為c語言,程式執行平台為windws 98/2000/xp。在程式設計中採用了字串的方法實現對簡單的行編輯器。

程式通過除錯執行,初步實現了設計目標,並且經過適當完善後,將可以應用在實際中解決問題。

關鍵詞程式設計;行編輯器; c語言;

1 引言

對於日常生活中的文字編輯來說,行編器是乙個很重要的問題,文字的完善關係到檔案做出的完美,決定了人們在編輯文字的時效率。乙個好的用字串實現的行編輯可以大大的提高人們辦公效率。

1.1 課題背景

行編輯器是文字編輯器的一種,針對行進行編輯。現在看來當然非常地老式,這種編輯器起源於操作員還使用電傳打字機的年代,也就是乙個印表機連著鍵盤,因為沒有顯示器,也就無法在文件中移動游標。行編輯器只能從事最簡單的輸入輸出。

輸入、編輯、文件顯示並不能同步地進行。一般而言,使用者無法直接輸入文字,而只能在文字終端上通過簡要的命令,對已有的文件進行新增或編寫。命令和文字,以及編輯器的相應輸出,會根據他們的輸入順序,從底部開始逐一顯示。

雖然命令一般會顯示被修改的行,但如果要將行連同文件中的上下文顯示,則需要另外單獨的命令。

現在常見的編輯器,都是通過移動游標,來選取要編輯的文字段落,與此不同的是,行編輯只能對「當前行」進行編輯。一般也可以在行內進行上下文匹配,或者選擇特定行,以決定哪部分文件將被編輯或顯示。當然,這些編輯每次都只能針對一行。

行編輯器就只能一行一行的編輯,不能出錯,一出錯就得重來。

因此我們用字串來定義,可以增強行編輯器的應用,增強可讀性,加快人們的編輯文字的效率,從而推進社會的發展。這就是其重要意義。

1.2 課程設計目的

資料結構是在整個電腦科學與技術領域上廣泛被使用的術語。它用來反映乙個資料的內部構成,即乙個資料由那些成分資料構成,以什麼方式構成,呈什麼結構。資料結構有邏輯上的資料結構和物理上的資料結構之分。

邏輯上的資料結構反映成分資料之間的邏輯關係,而物理上的資料結構反映成分資料在計算機內部的儲存安排。資料結構是資料存在的形式。資料結構是資訊的一種組織方式,其目的是為了提高演算法的效率,它通常與一組演算法的集合相對應,通過這組演算法集合可以對資料結構中的資料進行某種操作。

資料結構課程的主要目的是介紹一些常用的資料結構,闡明資料結構內在的邏輯關係,討論它們在計算機中的儲存表示,並結合各種資料結構,討論對它們實行的各種運算的實現演算法。

生活中的例子,比如現在要做乙個考試系統,要描述每個考生的資訊,有姓名、性別、考號等,全部這些資訊就構成乙個小資料結構,每個考生有他自己的資料結構,這些結構要如何存放在計算機中,各個結構之間是什麼關係,對整體需要哪些操作,比如查詢、刪除,怎樣儲存會使這樣的操作效率更高,這些就是資料結構要解決的問題。如圖1-1。

圖1-1

圖1.1 實現的資料結構

1.3課程設計內容

本課程設計是用字串實現乙個簡單的行編輯器,其中包括字元的按行錄入、修改、替換、查詢。如圖1-2所示:

圖1.2行編輯器功能框架圖

2 設計思路與方案

2.1設計思路

棧是一種先進後出的線性表。它只允許在表的一端進行插入和刪除元素,而在另一端不進行任何操作。比如假設棧為q=(a1,a2,…an),那麼a1就是棧低元素,an則是棧頂元素。

棧中的元素是按照a1,a2,…an的順序進入的,出棧是可以按照這個次序依次退出。如圖2-1

a1,a2,a3,…an進棧

圖2-1 c棧元素進棧

圖2-2 c棧元素出棧後進入d棧

最後d棧出棧的元素序列是:a1,a2,…an。與輸入序列完全一致。

2.2資料結構設計(還必須寫詳細些)

棧是一種先進後出的線性表,為了能按照原來的輸入順序輸出元素,我在程式中設計了兩個棧,第乙個棧用來儲存輸入的字元,然後把第乙個棧的元素出棧,並且把出棧的元素放入第二個棧中,這樣就實現了出棧是元素的順序和最開始輸入的順序是一致的了。

首先,構造乙個空棧函式initstack(sqstack &s);然後設計輸入函式push(sqstack &s,char e)和出棧函式pop(sqstack &s,char &e);在這兩個函式裡,我們通過頂指標的增加(*和指標的減少來實現元素的進棧和出棧(e=*

我們通過設計函式destroystack(sqstack &s)來清空棧中所有的元素,通過使用free()函式來釋放*的位址。通過函式printstack(sqstack &s)來輸出顯示輸入的所有元素。

3 詳細實現

3.1輸入文字

定義乙個輸入函式,顯示「請輸入字串」,從而可以輸入字元。

3.2 編輯字元

圖3.1 編輯文字流程圖

3.3修改字元

本操作的流程圖如下所示:

圖3-2 文件的顯示流程圖

3.4輸出文字

呼叫單鏈表中的find函式,查詢該檔案內容在單鏈表中的位置,如果位置異常,輸出提示資訊」沒有該檔案」,否則,呼叫單鏈表中的get函式,找出該檔案並輸出。操作流程圖如下所示:

圖3-3輸出文字流程圖

4 執行環境與結果

4.1執行環境

在本課程設計中,系統開發平台為windows2000,程式語言為visual c++6.0,程式的執行環境為visual c++ 6.0。

visual c++一般分為三個版本:學習版、專業版和企業版,不同的版本適合於不同型別的應用開發。實驗中可以使用這三個版本的任意一種,在本課程設計中,以visual c++ 6.

0為程式設計環境。

microsoft visual c++ 6.0是microsoft公司的microsoft visual studio 6.0開發工具箱中的乙個c++程式開發包。

visual c++包中除包括c++編譯器外,還包括所有的庫、例子和為建立windows應用程式所需要的文件。自2023年microsoft公司推出visual c++1.0後,隨著其新版本的不斷問世,visual c++已成為專業程式設計師進行軟體開發的首選工具。

visual c++從最早期的1.0版本,發展到最新的7.0版本,visual c++已經有了很大的變化,在介面、功能、庫支援方面都有許多的增強。

最新的7.0版本在編譯器、mfc類庫、編輯器以及聯機幫助系統等方面都比以前的版本做了較大改進。

雖然微軟公司推出了visual c++.net(visual c++7.0),但它的應用的很大的侷限性,只適用於windows 2000,windows xp和windows nt4.

0。所以實際中,更多的是以visual c++6.0為平台。

visual c++ 6.0是microsoft公司推出的目前使用最廣泛的基於windows平台的視覺化程式設計環境。visual c++ 6.

0是在以往版本不斷更新的基礎上形成的,由於其功能強大,靈活性好,完全課擴充套件以及具有強大的internet支援,因而在各種c++語言開發工具中脫穎而出,成為目前最為流行的c++語言整合開發環境。

visual c++ 6.0秉承visual c++以前版本的優異特性,為使用者提供了一套良好的視覺化開發環境:主要包括文字編輯器、資源編輯器、工程建立工具、debugger偵錯程式等等。

使用者可以在整合開發環境中建立工程、開啟工程、建立、開啟和編輯檔案、編譯、鏈結、執行、除錯應用程式。

4.2執行結果

(1)在程式開始執行時,就會顯示出提示語,提示「請輸入字串」 ,如下圖所示。.

圖4-1 顯示最初執行的頁面

(2)輸入字串。結果如下圖所示:

圖4-2輸入字串

(3)當輸入#則可以消去乙個字元,如圖所示

圖4-3 輸入#後的執行圖

(3)當輸入@則可以消去乙個字元,如圖所示

圖4-4輸入@後的執行圖

(5) 提示語「press any key to continue」 退出程式。如下圖12所示:

圖4-5 退出程式

5 結束語

課程設計是培養學生綜合運用所學知識,發現,提出,分析和解決實際問題,鍛鍊實踐能力的重要環節,是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發展的日新月異,微控制器已經成為當今計算機應用中空前活躍的領域, 在生活中可以說得是無處在。回顧起此次微控制器課程設計,至今我仍感慨頗多,的確,從選題到定稿,從理論到實踐,在整整兩星期的日子裡,可以說得是苦多於甜,但是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。

通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,今後一定好好學習.。

與其臨淵羡魚,不如退而結網。這次資料結構課程設計給我的最大的印象就是如果自己有了興趣,就動手去做,困難在勇氣和毅力下是抬不了頭的。從做這個資料結構課程設計開始,無論遇到什麼困難,我都沒有一絲的放棄的念頭。

出於對知識的渴望,出於對新技術的好奇,出於對一切未知的求知。我完成了這次資料結構課程設計,不過這只是我學習路上的驛站,語言並不重要畢竟它僅僅是工具,用好乙個工具並不是一件值得為外人道的事情,主要是了解學習思想。在今後的日子裡,我會好好學習專業知識,不斷進步。

字串的處理

一 查詢 1 比較兩個字串大小 int comparison char a,char b 3 在主串中查詢乙個字元 二 替換 1 只替換第一次出現的乙個 2 要全部替換 三 複製 1 乙個串全部複製到另乙個空串中 2 乙個串中的一部分字元 子串 複製到另乙個空串中 3 把乙個串中的一部分字元 子串 ...

shell字串的擷取

shell字串的擷取的問題 一 linux shell 擷取字元變數的前8位,有方法如下 substr a 1 8 a awk a cut c1 8 a a dd bs 1 count 8 2 dev null 二 按指定的字串擷取 1 第一種方法 從左向右擷取最後乙個string後的字串 從左向右...

字串拷貝函式使用的總結

字串拷貝函式使用注意事項 溫輝敏 2008 7 30 摘要 本文簡單介紹了windows平台下c和c 程式設計時,字串操作函式的一些注意事項。作者部落格 看到大家在 中有很多用wcscpy strcpy等的,這裡總結下給大家參考下,希望對大家有幫助 這裡的api都是windows平台下的,linux...