版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、淮 海 工 學(xué) 院 計算機工程學(xué)院課程設(shè)計報告設(shè)計名稱: 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 選題名稱: 簡單行編輯 姓 名: 侯耀生 學(xué) 號: 2012122694 專業(yè)班級: 軟件工程 軟件121 系 (院): 計算機工程學(xué)院 設(shè)計時間: 2013.12.232013.1.5 設(shè)計地點: 軟件工程實驗室、教室 成績:指導(dǎo)教師評語: 簽名: 年 月 日1課程設(shè)計目的1、訓(xùn)練學(xué)生靈活應(yīng)用所學(xué)數(shù)據(jù)結(jié)構(gòu)知識,獨立完成問題分析,結(jié)合數(shù)據(jù)結(jié)構(gòu)理論知識,編寫程序求解指定問題。 2.初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能;3.提高綜合運用所學(xué)的理論知識和方法獨立分析和解決問題的能力;4.訓(xùn)
2、練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進行軟件開發(fā),鞏固、深化學(xué)生的理論知識,提高編程水平,并在此過程中培養(yǎng)他們嚴謹?shù)目茖W(xué)態(tài)度和良好的工作作風(fēng)。2課程設(shè)計任務(wù)與要求:任務(wù)根據(jù)教材數(shù)據(jù)結(jié)構(gòu)-C語言描述(耿國華主編)和參考書數(shù)據(jù)結(jié)構(gòu)題集(C語言版)(嚴蔚敏、吳偉民主編)選擇課程設(shè)計題目,要求通過設(shè)計,在數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示、數(shù)據(jù)結(jié)構(gòu)的選擇應(yīng)用、算法的設(shè)計及其實現(xiàn)等方面加深對課程基本內(nèi)容的理解和綜合運用。設(shè)計題目從任務(wù)書所列選題表中選取,每班每題不得超過2人。學(xué)生自選課題學(xué)生原則上可以結(jié)合個人愛好自選課題,要求課題有一定的深度與難度,有一定的算法復(fù)雜性,能夠鞏固數(shù)據(jù)結(jié)構(gòu)課程所學(xué)的知識。學(xué)生自選課題
3、需在18周前報課程設(shè)計指導(dǎo)教師批準方可生效。要求:1、在處理每個題目時,要求從分析題目的需求入手,按設(shè)計抽象數(shù)據(jù)類型、構(gòu)思算法、通過設(shè)計實現(xiàn)抽象數(shù)據(jù)類型、編制上機程序和上機調(diào)試等若干步驟完成題目,最終寫出完整的分析報告。前期準備工作完備與否直接影響到后序上機調(diào)試工作的效率。在程序設(shè)計階段應(yīng)盡量利用已有的標準函數(shù),加大代碼的重用率。 2、.設(shè)計的題目要求達到一定工作量(300行以上代碼),并具有一定的深度和難度。3、程序設(shè)計語言推薦使用C/C+,程序書寫規(guī)范,源程序需加必要的注釋;4、每位同學(xué)需提交可獨立運行的程序;5 、每位同學(xué)需獨立提交設(shè)計報告書(每人一份),要求編排格式統(tǒng)一、規(guī)范、內(nèi)容充實
4、,不少于10頁(代碼不算);6、課程設(shè)計實踐作為培養(yǎng)學(xué)生動手能力的一種手段,單獨考核。 3課程設(shè)計說明書一 需求分析設(shè)計一個簡單的行編輯程序,輸入一頁文字,程序可以統(tǒng)計出文字、數(shù)字、空格的個數(shù)。靜態(tài)存儲一頁文章,每行最多不超過80個字符,共N行。存儲結(jié)構(gòu)使用線性表,文字中可以是大寫、小寫的英文字母、任何數(shù)字及標點符號。 基本要求 (1)分別統(tǒng)計出其中英文字母數(shù)和空格數(shù)及整篇文章總字數(shù);(2)統(tǒng)計某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);(3)刪除某一子串,并將后面的字符前移。(4)輸出形式:1)分行輸出用戶輸入的各行字符;2)分4行輸出全部字母數(shù)、數(shù)字個數(shù)、空格個數(shù)、文章總字數(shù)3)輸出刪除某
5、一字符串后的文章;二 概要設(shè)計1.結(jié)構(gòu)體定義:typedef struct linechar *data;struct line *next;LINE;2各函數(shù)功能(1)void Create(LINE * &head)功能:創(chuàng)建一個鏈表,同時向里面輸入文本數(shù)據(jù)(2)int Countwords(LINE * &head)功能:統(tǒng)計字母數(shù)(3)int CountNumber(LINE * &head)功能:統(tǒng)計數(shù)字數(shù)(4)int CountSpace(LINE * &head)功能:統(tǒng)計空格數(shù)(5)int CountAll(LINE * &head)功能:統(tǒng)計文章的總字數(shù)(6)int Find
6、String(LINE * &head,char*str)功能:統(tǒng)計str在文章中出現(xiàn)的次數(shù)(7)void delstringword(char *s,char *str)void DelString(LINE * &head,char *str)功能:刪除指定的字符串(8)void OutPut(LINE * &head)功能:向屏幕輸出文章系統(tǒng)流程圖主函數(shù) 統(tǒng)計文章總字數(shù)統(tǒng)計某個字符串出現(xiàn)次數(shù) 統(tǒng) 計字母數(shù) 退出該系統(tǒng) 刪除指定字符串 統(tǒng)計空格數(shù) 統(tǒng)計數(shù)字數(shù)三 詳細設(shè)計#include #include #include 定義結(jié)構(gòu)體定義一個鏈表,文本每行以字符串形式存儲,行與行之間以鏈表存
7、儲typedef struct linechar *data;struct line *next;LINE;主要難點函數(shù)的功能及其實現(xiàn)(1)統(tǒng)計str在文章中出現(xiàn)的次數(shù)。int FindString(LINE * &head,char*str)LINE *p=head;int count=0;int h=0;int len1=0;/保存當前行的總字符數(shù)int len2=strlen(str);/待統(tǒng)計字符串的長度int i,j,k;dolen1=strlen(p-data);/當前行的字符數(shù)for(i=0;idatai=str0)k=0;for(j=0;jdatai+j=strj)k+;if(
8、k=len2)count+;i=i+k-1;while(p=p-next)!=NULL);/遍歷鏈表return count;(2)刪除指定字符串void delstringword(char *s,char *str)char *p=strstr(s,str);/從字符串s中尋找str第一次出現(xiàn)的位置char tmp80;int len=strlen(s);int i=len-strlen(p);int j=i+strlen(str);int count=0;for(int m=0;mi;m+)tmpcount+=sm;for(int n=j;ndata,str)!=NULL)delstri
9、ngword(p-data,str);while(p=p-next)!=NULL);/遍歷鏈表/向屏幕輸出文章void OutPut(LINE * &head)LINE *p=head;doprintf(%sn,p-data);while(p=p-next)!=NULL);/遍歷鏈表四 設(shè)計與調(diào)試分析系統(tǒng)起始界面,要求輸入字符串文章系統(tǒng)主界面統(tǒng)計字母數(shù)統(tǒng)計數(shù)字數(shù)統(tǒng)計空格數(shù)統(tǒng)計文章總字數(shù)統(tǒng)計某個字符串出現(xiàn)的次數(shù)刪除指定字符串退出該系統(tǒng)未按指定要求輸入編號五 用戶手冊進入用戶界面,輸入一篇文章,可以包括字母數(shù)字以及空格符,完成后按Ctrl+E鍵。輸入完成后,進入用戶主界面,在選項17內(nèi)進行選擇。
10、(1)若按1鍵,統(tǒng)計該篇文章的全部字母數(shù)。 (2)若按2鍵,統(tǒng)計該篇文章的全部數(shù)字數(shù)。 (3)若按3鍵,統(tǒng)計該篇文章的全部空格數(shù)。 (4)若按4鍵,統(tǒng)計該篇文章的總字數(shù)。 (5)若按5鍵,統(tǒng)計某個字符串在文章中出現(xiàn)的次數(shù)。 (6)若按6鍵,刪除該文章中的指定字符串。 (7)若按7鍵,退出該系統(tǒng)。 (8)若按8鍵,則返回異常,提示輸入鍵為17鍵。六 測試成果七 附錄(源程序清單)#include #include #include /文本每行以字符串形式存儲,行與行之間以鏈表存儲typedef struct linechar *data;struct line *next;LINE;void C
11、reate(LINE * &head)printf(請輸入字符串,以Ctrl+E(E)為結(jié)尾(每行最多輸入80字符!):n);LINE *p=new LINE; head=p; char tmp100; while(1)gets(tmp); if(strlen(tmp)80)printf(每行最多輸入80字符);break;if(tmp0=5)break;p=p-next=new LINE;p-data=new charstrlen(tmp)+1; strcpy(p-data,tmp);if(tmpstrlen(tmp)-1=5) p-datastrlen(tmp)-1=0;break;p-n
12、ext=NULL; head=head-next;/統(tǒng)計字母數(shù)int Countwords(LINE * &head)LINE *p=head;int count=0;doint Len=strlen(p-data);for(int i=0;idatai=a&p-dataidatai=A&p-datainext)!=NULL); return count; /統(tǒng)計數(shù)字數(shù)int CountNumber(LINE * &head)LINE *p=head;int count=0;doint Len=strlen(p-data);for(int i=0;idatai=48&p-datainext)!
13、=NULL); return count; /統(tǒng)計空格數(shù)int CountSpace(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)計文章的總字數(shù)int CountAll(LINE * &head)LINE *p=head; int count=0;do count+=strlen(p-data);while(p=p-next)!=NULL); return count; /統(tǒng)計
14、str在文章中出現(xiàn)的次數(shù)int FindString(LINE * &head,char*str)LINE *p=head;int count=0;int h=0;int len1=0; int len2=strlen(str); int i,j,k;dolen1=strlen(p-data); for(i=0;idatai=str0)k=0;for(j=0;jdatai+j=strj)k+;if(k=len2)count+;i=i+k-1;while(p=p-next)!=NULL); return count;/刪除指定的字符串void delstringword(char *s,char
15、 *str)char *p=strstr(s,str); char tmp80;int len=strlen(s);int i=len-strlen(p);int j=i+strlen(str);int count=0;for(int m=0;mi;m+)tmpcount+=sm;for(int n=j;ndata,str)!=NULL)delstringword(p-data,str);while(p=p-next)!=NULL); /向屏幕輸出文章void OutPut(LINE * &head)LINE *p=head;doprintf(%sn,p-data);while(p=p-nex
16、t)!=NULL); /遍歷鏈表/主函數(shù)void main()int choice;LINE *head;char str120,str220;printf(n);printf(*n); printf(*簡單行編輯系統(tǒng)*n); printf(* 2012122694 *n); printf(*n);printf(n); Create(head); printf(輸入的文章為:n);OutPut(head);printf(*n);printf(* 1.統(tǒng)計全部字母數(shù) *n);printf(* 2.統(tǒng)計數(shù)字個數(shù) *n);printf(* 3.統(tǒng)計空格個數(shù) *n);printf(* 4.統(tǒng)計文章總字
17、數(shù) *n);printf(* 5.統(tǒng)計某個字符串出現(xiàn)的次數(shù) *n);printf(* 6.刪除指定字符串 *n);printf(* 7.退出該系統(tǒng) *n);printf(*n);printf(* 請輸入17,選擇你要的步驟 *n);printf(*n);while(1)cinchoice;switch(choice)case 1:printf(* 1.統(tǒng)計字母數(shù) *n);printf(*n);printf(* 該文章的全部字母數(shù)為:%d *n,Countwords(head);printf(* 請您繼續(xù)進行選擇 *n);printf(*n);printf(n);break;case 2:pri
18、ntf(* 2.統(tǒng)計數(shù)字數(shù) *n);printf(*n);printf(* 該文章的數(shù)字個數(shù):%d *n,CountNumber(head);printf(* 請您繼續(xù)進行選擇 *n); printf(+*n);printf(n);break;case 3:printf(* 3.統(tǒng)計空格數(shù) *n);printf(*n); printf(* 該文章的空格個數(shù): %d *n,CountSpace(head);printf(* 請您繼續(xù)進行選擇 *n);printf(*n);printf(n);break;case 4:printf(* 4.統(tǒng)計文章總字數(shù) *n);printf(*n);printf
19、(* 該文章的總字數(shù): %d n,CountAll(head);printf(* 請您繼續(xù)進行選擇 *n);printf(*n);printf(n);break; case 5:printf(* 5.統(tǒng)計某個字符串出現(xiàn)的次數(shù) *n);printf(*n);printf(* 請輸入要統(tǒng)計的字符串: );scanf(%s,str1); printf(*%s出現(xiàn)的次數(shù)為:%d *n,str1,FindString(head,str1);printf(* 請您繼續(xù)進行選擇 *n);printf(*n);printf(n);break;case 6:printf(* 6.刪除指定字符串 *n);prin
20、tf(*n);printf(* 請輸入要刪除的某一字符串: *n);scanf(%s,str2); DelString(head,str2); printf( 刪除%s后的文章為:,str2); OutPut(head);printf(* 請您繼續(xù)進行選擇 *n);printf(*n);printf(n); break; case 7:printf(* 7.退出該系統(tǒng) *n);printf(*n); printf(* 已退出該系統(tǒng) *n); printf(* 謝 謝 使 用 *n); printf(*n);printf(n); break; default:printf(*n); printf(* 對不起,您所輸入的編號不在17之間 *n); printf(* 請重新輸入 *n); printf(*n);printf(n); break;if(choice=7)break;課程設(shè)計心得 通過這次課程設(shè)計,使我對鏈表有了更深的了解,同時也使我對串的概念有了更深的理解 。在次實驗的行編輯程序中,我認真分析了行編輯的各種功能模塊,從而確定單鏈表的數(shù)據(jù)結(jié)構(gòu)。單鏈表的每個結(jié)點開辟一個數(shù)組存儲行的內(nèi)容。該結(jié)構(gòu)能夠輕易地插入行和刪除行。 通過本次實驗,我對編程
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年重慶渝水水務(wù)機械有限公司招聘筆試參考題庫含答案解析
- 2025年粵教新版七年級生物上冊月考試卷含答案
- 2025年江蘇農(nóng)墾集團南通有限公司招聘筆試參考題庫含答案解析
- 2025年度自動化生產(chǎn)線承包裝卸改造合同3篇
- 2025年浙教新版選擇性必修3化學(xué)下冊月考試卷
- 2025年湘教新版高一語文上冊階段測試試卷含答案
- 2025年人教版九年級生物上冊階段測試試卷
- 2025年浙教版七年級地理上冊月考試卷含答案
- 遼寧省沈陽市皇姑區(qū)2024-2025學(xué)年八年級上學(xué)期期末考試語文試題
- 2025年人教五四新版高三歷史下冊月考試卷含答案
- (正式版)SJT 11449-2024 集中空調(diào)電子計費信息系統(tǒng)工程技術(shù)規(guī)范
- 廣州綠色金融發(fā)展現(xiàn)狀及對策的研究
- 《近現(xiàn)代史》義和團運動
- 人教版四年級上冊加減乘除四則混合運算300題及答案
- 合成生物學(xué)技術(shù)在生物制藥中的應(yīng)用
- 消化系統(tǒng)疾病的負性情緒與心理護理
- 高考語文文學(xué)類閱讀分類訓(xùn)練:戲劇類(含答案)
- 協(xié)會監(jiān)事會工作報告大全(12篇)
- 灰壩施工組織設(shè)計
- WS-T 813-2023 手術(shù)部位標識標準
- 同意更改小孩名字協(xié)議書
評論
0/150
提交評論