




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、專業(yè)計算機科學與技術班級姓名設計起止日期設計題目:文章編輯系統(tǒng)設計任務(主要技術參數):本課程設計要求結合數據結構所學的基礎知識利用C語言進行程序設 計,本程序要求實現以下功能:輸入一頁文字,程序可以統(tǒng)計出文字、數字、空格的個數。硬件環(huán)境:處理器:英特爾第三代酷睿i3-3110M 雙核內存:4GB (二星 DDR3 1333MHz)主硬盤:希捷 ST500LM012 HN-M500MBB (500GB/5400 轉/分) 顯示器:三星SEC3649(14英寸)軟件環(huán)境:操作系統(tǒng):Windows 8 64位(DirectX 11)開發(fā)環(huán)境:VC+課程設計任務書指導教師評語:成績:簽字:年 月 日
2、文章編輯系統(tǒng)一、課程設計前言1. 程序設計的目的本課程設計是為了配合數據結構課程的開設,通過設計一個完整的程 序,使學生掌握數據結構的應用、算法的編寫、類C語言的算法轉換成C程序并用 TC上機調試的基本方法。課程設計是實踐性教學中的一個重要環(huán)節(jié),它以某一課程為基礎,可以涉及 和課程相關的各個方面,是一門獨立于課程之外的特殊課程。課程設計是讓同學 們對所學的課程更全面的學習和應用,理解和掌握課程的相關知識。數據結構 是一門重要的專業(yè)基礎課,是計算機理論和應用的核心基礎課程。數據結構課程設計,要求學生在數據結構的邏輯特性和物理表示、數據結構 的選擇和應用、算法的設計及其實現等方面,加深對課程基本內
3、容的理解。同時, 在程序設計方法以及上機操作等基本技能和科學作風方面受到比較系統(tǒng)和嚴格 的訓練。文章編輯系統(tǒng)是一種簡便快捷的對于輸入的文章進行操作的方法,它可以統(tǒng) 計文章的數字、空格和字母的個數等,以及查找和刪除特定字符串。二、程設計方案論證設計思路根據課題文章編輯的詳細要求,可將程序的運行分為三個模塊,即文章統(tǒng)計 模塊、文章查找模塊、文章刪除模塊。如圖1所示。構造多個線性表,將輸入的文章的每一行字符,都分別靜態(tài)存儲在相應的線 性表中。每個線性表的存儲容量不超過80個字符。文章輸入結束后,程序輸出指令菜單,列出程序可以合法執(zhí)行的操作指令,并選擇輸入合法的指令,以執(zhí)行相應的指令操作。圖1功能模塊
4、圖依照課題要求,程序設計了6大功能,分別為統(tǒng)計文章中總字符數、統(tǒng)計文 章中空格個數、統(tǒng)計文章中數字個數、統(tǒng)計文章中英文字母個數、刪除文章中指 定字符串、統(tǒng)計文章中指定字符串出現次數,并且為每一項功能提供相信的執(zhí)行 指令。程序的執(zhí)行流程如圖2所示。首先按要求輸入文章,然后按照指令菜單選擇 要執(zhí)行的指令,程序判斷指令,并且執(zhí)行相應的指令操作,輸出指令執(zhí)行結果后, 重新返回指令菜單,再次等待指令輸入。指令書輸入和指令執(zhí)行為無限循環(huán),在 用戶退出程序前,程序不會自動結束圖2程序的執(zhí)行流程圖函數功能分析1定義結構體struct line,文本行采用順序存儲,行與行之間采用鏈式存儲typedef stru
5、ct linechar *data;struct 1ine *next;LINE;存儲結構:采用單鏈表結構存儲文章,沒兒個點存儲一行,每行最長不超過 80個字符。LINE為單鏈表為單鏈表存儲結構,以節(jié)點的序列表示的線性表叫做 單鏈表,單鏈表是鏈式存取的結構,是用一組地址任意的存儲單元存放線性表中 的數據元素。鏈表中的數據是以節(jié)點來表示的,每個節(jié)點的構成:元素就是存儲 數據的存儲單元,指針就是連接每個節(jié)點的地址數據。2. 主要函數:(1) 統(tǒng)計文章總字數:void Count Al KLINE * & head)本函數的作用就是統(tǒng)計文章所有的字符數,包括空格。將P付給表頭指針;初始化count為
6、0:用do-wh訂e語句遍歷鏈表,同時統(tǒng)計字符串中總字數;用printf語句輸出文章中總字數。(2) 統(tǒng)計文章中的空格數:void CountSpace (LINE * &head)本函數的作用就是統(tǒng)計字符串鏈表中的空格數。將P付給表頭指針;初始化count為0;用do-wh訂e語句遍歷鏈表,同時統(tǒng)計字符串中空格數;用printf語句輸出文章中空格數。(3) 統(tǒng)計文章中數字個數:void CountNumber (LINE * &head)本函數的作用就是統(tǒng)計字符串鏈表中的數字個數將P付給表頭指針;初始化count為0:用do-wh訂e語句遍歷鏈表,同時統(tǒng)計字符串中數字個數;用printf語句
7、輸出文章中數字個數。流程如圖3(4) 統(tǒng)計文章中英文字母數:void CountLetter(LINE * &head)本函數的作用就是統(tǒng)計字符串鏈表中的英文字母個數。將P付給表頭指針;初始化count為0:用do-wh訂e語句遍歷鏈表,同時統(tǒng)計字符串中英文字母數;用printf語句輸出文章中英文字母數。(5) 查找字符串的函數:void FindString(LINE * &head)本函數的作用就是查找在鏈表中出現的特定的字符串。將P付給表頭指針;初始化count為0:初始化lenl,用來保存當前行的總字符數;定義整型變量len2表示待統(tǒng)計字符串的長度;用printf語句提醒用戶輸入要統(tǒng)計
8、的字符串;用d。-wh訂e語句遍歷鏈表,同時用for循環(huán)和辻語句找出指定字符串在文章 中出現的次數;用printf語句輸出指定字符串在文章中出現的總次數。流程如圖4(6) 刪除字符串的函數:void DelString(LINE * &head)本函數的作用就是將在鏈表中出現的特定的字符串進行刪除。先創(chuàng)建一個deistringword,其中包含兩個字符串char *s和char *str, 用*$表示輸入的字符串,*str表示要刪除的字符。這個函數的功能是找到字符串s在字符串中出現的位置并刪除該字符串。定義字符串的刪除函數DelString(),用do-while語句遍歷鏈表,語句中再套用 辻
9、語句,并調用deistringword() 進行刪除圖3統(tǒng)計數字函數流程圖圖4統(tǒng)計str在文章中的出現次數三、課程設計運行結果與分析課程設計運行結果本實驗所要實現的功能:輸入一頁文字,程序可以統(tǒng)計出文字、數字、空格的個數。靜態(tài)存儲一頁文章,每行最多不超過80個字符,共N行;要求:(1)分別統(tǒng)計出其中英文字母數和空格數及整篇文章總字數;(2)統(tǒng)計某一字符串在文章中出現的次數,并輸出該次數;(3)刪除某一子串,并將后面的字符前移。存儲結構使用線性表,分別用兒個子函數實現相應的功能;輸入數據的形式和范圍:可以輸入大寫、小寫的英文字母、任何數字及標點符號。輸出形式:(1)分行輸出用戶輸入的各行字符;(
10、2)分4行輸出全部字母數、數字個數、空格個數和文章總字數 輸出刪除某一字符串后的文章;用鏈表存放數據非常靈活,只要內存足夠大,對鏈表可以做任意擴充和修改。主要的手段為鏈表的遍歷。定義一個頭指針head,每個結點的數據域存放數據本 身,指針域存放下一個結點地址,所以,我們只要知道head,就可以遍歷整個鏈 表,找到我們所需要的字符(串),進行相應的操作。下面是源程序的初始界面,如圖5所示:圖5初始界面在運行的界面上輸入文章,運行后會出現如圖6所示的運行界面。圖6運行界面在運行界面上輸入1:統(tǒng)計字符數,如圖7所示:圖7統(tǒng)計字符界面在運行的界面輸入2:刪除字符,運行結果如圖8所示:圖8刪除字符在運行
11、的界面輸入3:退出程序,運行結果如圖9所示:圖9輸入退出程序指令h nD:VC+6.0Microsoft Visual StudioMyProjects121Debuq121 ,exen19940821 id my birthday? tt雄名:高楓. 學號:F1459104 輸入的炙章為:I have a sercet? my name is gaofeng.19940821 id ny birthday?數;數g 字總卄菜 部1早卄 全翹工丸桿興959 12 3、T禺H 統(tǒng)迪 I .Ki先一先一 、Tz ,、Tz 要序要 你程你 入出入刖 -w、r-w 主冃n主冃圖10退出程序調試過程與分
12、析(1) 主流程進入死循環(huán)。.解決方案:每個循環(huán)都加break,每跳出一個模塊,opt重新賦值為0。(2) 輸入多個變量,需要空格間隔時,程序只讀空格前的變量解決方案:輸.入函數用t()函數,形式為:get (tmp),即可解決著個問題。(3) 不識別自定義函數。解決方案:函數定義前要函數聲明,若不聲明,則調用函數必須在函數定義之后, 否則不識別。(4) 程序結束之后,鏈表仍占空間。解決方案:在建立鏈表是所申請的內存空間在程序結束之前用free_l ink (LINE*&head)函數釋放,即刪除鏈表中的全部結點,且將鏈表頭指針置為空。四、課程設計體會這個學期是我第一次接觸數據結構,在完成設計
13、的過程中,我遇到了一 系列的問題,能明顯感覺到自己在很多方面的不足,但另一方面,問題是要分析 解決的,找出問題以便為完善學習計劃,改變學習內容與方法提供實踐依據。所 以在整個過程中,我不斷加深了對數據結構的理解與一些程序寫書時要注意的事 項,體會了數據結構這 門課程在解決現實生活問題上的可行性,也更進一步地激發(fā)了我的學習熱情。問題越多,明白的也就會越來越多,做一次課程設計就像從頭到尾做了一次 系統(tǒng)的復習,從基礎到難點,從輪廓到每個知識點,數據結構的研究內容在我的 腦海里就再也不像以前那么模糊了。設計程序來解決現在存在的問題,把理論知 識付諸于實踐,對于我們這些計算機專業(yè)的本科生來說,實際能力的
14、培養(yǎng)至關重 要,而這種實際能力的培養(yǎng)單靠課堂教學是遠遠不夠的,必須從課堂走向實踐, 這也是我們學習的目的。做完設計,我已深刻體會到了學習這門課程的重要性與 必要性了,同時,它留給我很多思考:學習是思考一個的過程,我們應該主動去 想學習一門知識后怎么去運用,而不是一味地被動地接受。數據結構及其算法在解決現實生活中的常見問題和書寫軟件設計方面上都有 著重要的意義,我們應該好好掌握它的相關知識,在以后的學習過程中,更多的 去學會如何運用知識。五、參考文獻1 譚浩強.C語言程序設計M.北京:清華大學出版社,:1-2002 吳躍.數據結構與算法M 北京:機械工業(yè)出版社,:15-1203 田淑清.C程序設
15、計M.北京:清華大學出版社,:90-2004 蔡子經,施伯樂.數據結構教程M.上海:復旦大學出版社,20065 李春褒.數據結構教程(第二版)M.北京:清華大學出版社,2007 附錄:源程序include Sinclude ncludetypedef struct linechar *data;struct line *next;LINE;void Create(LINE * &head)LINE *p;printf (請輸入一頁文章,以#為結尾(每行最多輸入80字符!):n); p= (struct line*)malloc(sizeof(struet line);head二p;char t
16、mp200一;for(;l;)gets(tmp);if (strlen(tmp) 80)printf C每行最多輸入80字符);break;if (tmp 10 35) break;p二p-next二(struct line*)malloc(sizeof(struct line); p-data=(char*)malloc(strlen(tmp);strcpy(p-data, tmp);if(tmp.strlen(tmp)-1二二35)p-datastrlen(tmp)-1二0 ;break;p-next二NULL;head=head-next;int CountLetter (LINE *
17、&head)/統(tǒng)計英文字母個數LINE *p二head;int count二0;doint Len=strlen(p-data);for(int i=0;idatai 二a &p-datai datai 二A &p-datai next)!=NULL);return count;int CountNumber (LINE * &head)/統(tǒng)計數字個數LINE *p=head;int count=0:doint Len二strlen(p-data);for (int i=0;idatai=48 & p-datainext)!=NULL);return count;/統(tǒng)計空格個數int Coun
18、tSpace (LINE * &head)LINE *p=head;int count=0:doint Len=strlen(p-data);for(int i=0;idatai=32)count+;while (p=p-next)!=NULL);return count;/*統(tǒng)計文章的總字數*/int CountAll(LINE * &head)LINE *p=head;int count二0;docount+strlen(p-data);while(p=p-next) UNULL);:return count;/查找特定字符串int FindString(LINE * &head,char
19、 *str)LINE *p=head;int count二0;int h二0;int lenl二0;int len2二strlen(str);int i, j, k;dolenl=strlen(p-data);for(i=0;idatai=str01)k=0;for(j=0;jdatai+j二二strj) k+;if (k=len2)count+; ii+k-l;while(p=p-next)!=MULL);return count;/刪除特定字符串void deistringword (char *s,char *str)char *pstrstr(s, str);char tmp80;in
20、t lenstrlen(s);int i=len-strlen(p);int j=i+strlen(str);int count=0;for (int m二0;mi;m+)tmpcount+二smfor (int n二j;ndata, str);while (p=p-next)!=NULL);void OutPut (LINE * &head)/退出程序LINE *p=head;doprintf(“sn, p-data);while(p=p-next)!=NULL); void main()inti=0;intoperate;LINE * head;Create(head);printf C姓名:高楓學號:F1459104n);printf C輸入的文章為:n);OutPut(head);printf (rT);printf C全部字母數:%d n, Co
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年液體管道運輸服務項目合作計劃書
- 無氟( F ) 發(fā)泡PU組合料項目績效評估報告
- 黑沙蒿粗多糖與殼聚糖對奶牛產奶性能、瘤胃發(fā)酵及菌群多樣性影響的比較研究
- 基于區(qū)塊鏈的匿名聯(lián)邦學習研究
- 街鎮(zhèn)級養(yǎng)老設施規(guī)劃策略研究
- 晶粒尺寸與加工參數對多晶γ-TiAl合金納米切削的影響
- 2025年度辦公設備供應商合作與質量控制協(xié)議
- 二零二五年度辦事處消費者權益保護與合規(guī)管理合作協(xié)議
- 2025年學前教育服務項目合作計劃書
- 2025年度辦事處續(xù)簽網絡安全合作協(xié)議
- 《化工設備機械基礎(第8版)》完整全套教學課件
- 帶式運輸機傳動裝置的設計
- 初級消防設施操作員實操題庫 (一)
- 2024版《糖尿病健康宣教》課件
- 代理記賬業(yè)務內部規(guī)范制度-代理記賬業(yè)務規(guī)范
- 山東虛擬電廠商業(yè)模式介紹
- 2024-2025學年高中思想政治選擇性必修2 法律與生活統(tǒng)編版(部編版)教學設計合集
- 新員工三級安全教育考試試題參考答案
- 第09講二元一次方程組中的新定義題型(原卷版+解析)-2021-2022學年下學期七年級數學下冊期末復習高頻考點專題(人教版)
- 數學史簡介課件可編輯全文
- 水痘護理查房課件
評論
0/150
提交評論