版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、淮海 工學院 計算機工程學院課程設計報告設計名稱:數(shù)據(jù)結構課程設計選題名稱:簡單行編輯姓 名: 侯耀生 學 號:2012122694專業(yè)班級:軟件工程軟件121系(院): 計算機工程學院設計時間: 2013.12.232013.1.5設計地點:軟件工程實驗室、教室成績:指導教師評語:簽名:數(shù)據(jù)結構課程設計報告第 18 頁,共 頁1.課程設計目的1、訓練學生靈活應用所學數(shù)據(jù)結構知識,獨立完成問題分析,結合數(shù)據(jù)結構理論知識,編寫程序求解指定問題。2 .初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設計、程序編碼、測試等基本方法和技能;3 .提高綜合運用所學的理論知識和方法獨立分析和解決問題的能力;4 .訓練
2、用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進行軟件開發(fā),鞏固、深化學生的理論知識,提高編程水平,并在此過程中培養(yǎng)他們嚴謹?shù)目茖W態(tài)度和良好的工作作風。2 .課程設計任務與要求:任務根據(jù)教材數(shù)據(jù)結構-C語言描述(耿國華主編)和參考書數(shù)據(jù)結構題集(C語言版)(嚴蔚敏、吳偉民主編)選擇課程設計題目,要求通過設計,在數(shù)據(jù)結構的邏輯特性和物理表示、數(shù)據(jù)結構 的選擇應用、算法的設計及其實現(xiàn)等方面加深對課程基本內容的理解和綜合運用。設計題目從任務書所列選題表中選取,每班每題不得超過2人。學生自選課題學生原則上可以結合個人愛好自選課題,要求課題有一定的深度與難度,有一定的算法復雜性,能夠鞏固數(shù)據(jù)結構課程所學的知識。學生自選
3、課題需在18周前報課程設計指導教師批準方可生效。要求:1、在處理每個題目時,要求從分析題目的需求入手,按設計抽象數(shù)據(jù)類型、構思算法、通過設計實現(xiàn)抽象數(shù)據(jù)類型、編制上機程序和上機調試等若干步驟完成題目,最終寫出完整的分析報告。前期準備工作完備與否直接影響到后序上機調試工作的效率。在程序設計階段應盡量利用已有的標準函數(shù),加大代碼的重用率。2、.設計的題目要求達到一定工作量(300行以上代碼),并具有一定的深度和難度。3、程序設計語言推薦使用 C/C+,程序書寫規(guī)范,源程序需加必要的注釋;4、每位同學需提交可獨立運行的程序;5、每位同學需獨立提交設計報告書(每人一份),要求編排格式統(tǒng)一、規(guī)范、內容充
4、實,不少于10頁(代碼不算);6、課程設計實踐作為培養(yǎng)學生動手能力的一種手段,單獨考核。3 .課程設計說明書一需求分析設計一個簡單的行編輯程序,輸入一頁文字,程序可以統(tǒng)計出文字、數(shù)字、空格的個數(shù)。靜態(tài)存 儲一頁文章,每彳T最多不超過80個字符,共N行。存儲結構使用線性表,文字中可以是大寫、小寫的英文字母、任何數(shù)字及標點符號?;疽?1)分別統(tǒng)計出其中英文字母數(shù)和空格數(shù)及整篇文章總字數(shù);(2)統(tǒng)計某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);(3)刪除某一子串,并將后面的字符前移。(4)輸出形式:1)分行輸出用戶輸入的各行字符;2)分4行輸出"全部字母數(shù)"、"數(shù)字個
5、數(shù)"、"空格個數(shù)"、"文章總字數(shù)"3)輸出刪除某一字符串后的文章;二概要設計1 .結構體定義: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
6、* &head)功能:統(tǒng)計空格數(shù)(5) int CountAll(LINE * &head)功能:統(tǒng)計文章的總字數(shù)(6) int FindString(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ù)f1廣、統(tǒng)統(tǒng)統(tǒng)統(tǒng)計刪計計計某除數(shù)空文個指字格早字士 7E
7、數(shù)J數(shù)1z總 字 數(shù)符 串 出現(xiàn) 次、數(shù),字 符 串1)退 出 該 系 統(tǒng)三詳細設計1 .定義頭文件#include <iostream.h>#include <string.h>#include <stdio.h>2 .定義結構體定義一個鏈表,文本每行以字符串形式存儲,行與行之間以鏈表存儲typedef struct linechar *data;struct line *next;LINE;3 .主要難點函數(shù)的功能及其實現(xiàn)(1)統(tǒng)計str在文章中出現(xiàn)的次數(shù)。int FindString(LINE * &head,char*str) LINE *p
8、=head;int count=0;int h=0;int len1=0;/保存當前行的總字符數(shù)int len2=strlen(str);/待統(tǒng)計字符串的長度int i,j,k;do len1=strlen(p->data);/當前行的字符數(shù)for(i=0;i<len1;i+)/字符匹配if(p->datai=str0) k=0;for(j=0;j<len2;j+)if(p->datai+j=strj) k+;if(k=len2) count+; i=i+k-1;while(p=p->next)!=NULL);/遍歷鏈表return count;(2)刪除指
9、定字符申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;m<i;m+)tmpcount+=sm;for(int n=j;n<len;n+)tmpcount+=sn;tmpcount='0'strcpy(s,tmp);/ 返回新的字符串void DelString(LINE *
10、&head,char *str)LINE*p=head;do/刪除指定字符申if(strstr(p->data,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->next)!=NULL);/ 遍歷鏈表四設計與調試分析(1)系統(tǒng)起始界面,要求輸入字符串文章I Q I S3 II尸* M
11、KMK MTM M K X M M MMM MM M M |"單 j丁當先 MM M KM'K MM M MM M KM X M K M KMK 整4堇 JCAM*裝 MM 2012122694 JKM MM! M: MM ML MM K JCM JH M M: X MM M:請輸入字符串,以Ctrl.ELQ為結尾(每行最多輸入3嚀符紇:(2)系統(tǒng)王界面E舊”侯印生果程的,口或ugL。/1 = 1 回1n部一子恬草J式樂 ±整文 i十汜盥 統(tǒng)統(tǒng)統(tǒng)第晦 12 3 4 5 6 7數(shù) 次 的 現(xiàn) 出請輸入ir,選擇你要的步騷(3)統(tǒng)計字母數(shù)(4)統(tǒng)計數(shù)子數(shù)(6).-統(tǒng)訐文
12、章總字數(shù)-統(tǒng)計某個字符串出現(xiàn)的次數(shù)刪除指定字符申(8)退出該系統(tǒng)(9)未按指定要求輸入編號(10)史巳信S年Debugl.exe'a五用戶手冊Ctrl+E 鍵。1 .進入用戶界面,輸入一篇文章,可以包括字母數(shù)字以及空格符,完成后按2 .輸入完成后,進入用戶主界面,在選項 17內進行選擇。(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鍵,則返
13、回異常,提示輸入鍵為17鍵六測試成果±缶侯耀生:果程只計DobuglExek*mM*MWM*N MM* 簡單彳 J 編輯系金克 MX XMKKJtlEJCKXMM2B12122694情輸入于符串,協(xié)口七出反嗚為結尾匕每行蜃多輸入幽字中” 扁入面文章為:. _ _&Fh尊g號ing 12312ingr bcxg*/s6324c66g2xi*F6ingr 乂wgy后Adic數(shù)革出現(xiàn)的次數(shù)部字量®KH/E系 全獨支KW 充塞南充充胴艮IL g £k幺 ;2* 一 一 - 10 12 3 4 5 6 7選擇你要的步驟請輸入2.統(tǒng)計湫字數(shù)七附錄(源程序清單)#inc
14、lude <iostream.h>#include <string.h>#include <stdio.h>文本每行以字符串形式存儲,行與行之間以鏈表存儲typedef struct linechar *data;struct line *next;LINE;void Create(LINE * &head)printf("請輸入字符串,以Ctrl+E1E)為結尾(每行最多輸入80字符!):n");LINE *p=new LINE;head=p;char tmp100;while(1)gets(tmp);if(strlen(tmp
15、)>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->next=NULL;head=head->next;統(tǒng)計字母數(shù)int Countwords(LINE * &head)LINE *p=head;int count=0;d
16、oint Len=strlen(p->data);for(int i=0;i<Len;i+)if(p->datai>='a'&&p->datai<='z')|(p->datai>='A'&&p->datai<='Z')count+;while(p=p->next)!=NULL);return count;統(tǒng)計數(shù)字數(shù)int CountNumber(LINE * &head)LINE *p=head;int count=0;do
17、int Len=strlen(p->data);for(int i=0;i<Len;i+)if(p->datai>=48&&p->datai<=57)count+;while(p=p->next)!=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;i<Len;i+)if(p->datai=32)count+;while(p=p-&g
18、t;next)!=NULL);統(tǒng)計文章的總字數(shù)int CountAll(LINE * &head)LINE *p=head;docount+=strlen(p->data);while(p=p->next)!=NULL);統(tǒng)計str在文章中出現(xiàn)的次數(shù)int FindString(LINE * &head,char*str)return count;int count=0;return count;LINE *p=head;int count=0;int h=0;int len1=0;int len2=strlen(str);int i,j,k;dolen1=strl
19、en(p->data);for(i=0;i<len1;i+)if(p->datai=str0)k=0;for(j=0;j<len2;j+)if(p->datai+j=strj)k+;if(k=len2)count+;i=i+k-1;while(p=p->next)!=NULL);return count;刪除指定的字符串void delstringword(char *s,char *str)char *p=strstr(s,str);char tmp80;int len=strlen(s);int i=len-strlen(p);int j=i+strle
20、n(str);int count=0;for(int m=0;m<i;m+)tmpcount+=sm;for(int n=j;n<len;n+)tmpcount+=sn;tmpcount='0'strcpy(s,tmp);void DelString(LINE * &head,char *str)LINE*p=head;do刪除指定字符串if(strstr(p->data,str)!=NULL)delstringword(p->data,str);while(p=p->next)!=NULL); 向屏幕輸出文章void OutPut(LIN
21、E * &head)LINE *p=head;doprintf("%sn",p->data);while(p=p->next)!=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
22、");Create(head);printf("輸入的文章為:n");OutPut(head);printf("*請輸入17,選擇你要的步驟*n");printf("*1.統(tǒng)計全部字母數(shù)*n"printf("*2.統(tǒng)計數(shù)字個數(shù)*n"printf("*3.統(tǒng)計空格個數(shù)*n"printf("*4.統(tǒng)計文章總字數(shù)*n"printf("*5.統(tǒng)計某個字符串出現(xiàn)的次數(shù)*n"printf("*6.刪除指定字符串*n"printf(&quo
23、t;*7.退出該系統(tǒng)*n");););););););printf(" *n");printf(" *n");printf(" *n"); while(1)cin>>choice;switch(choice)case 1:printf("*1.統(tǒng)計字母數(shù)*n");printf("*n");printf("*該文章的全部字母數(shù)為:%d *n",Countwords(head);printf("*請您繼續(xù)進行選擇*n");printf(
24、"*n"); printf("n");break;case 2:printf("*2.統(tǒng)計數(shù)字數(shù)*n");printf(”*n");數(shù)據(jù)結構課程設計報告第19頁,共頁printf("*該文章的數(shù)字個數(shù):%d *n",CountNumber(head);printf("*請您繼續(xù)進行選擇*n");printf("+*n");printf("n");break;case 3:printf("*3.統(tǒng)計空格數(shù)*n");printf(
25、"*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("*該文章的總字數(shù):d n",CountAll(head);printf("*請您繼續(xù)進行選擇*n");printf(
26、"*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(&quo
27、t;n");break;數(shù)據(jù)結構課程設計報告第16頁,共 頁printf("*6.刪除指定字符串printf("*n");printf("*請輸入要刪除的某一字符串:*n");*n");scanf("%s",str2);DelString(head,str2);printf("刪除s后的文章為:”,str2);OutPut(head);printf("*請您繼續(xù)進行選擇*n");printf("*n");printf("n");break;case 6:printf("*7.退出該系統(tǒng)printf("*n");printf("*已退出該系統(tǒng)printf("*n");*n");*n");printf( "*n");printf("n");break;default:printf("*n");printf("*對不起,您所輸入的編號不在17之間printf("*請重新輸入*n");*n");p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版智能穿戴設備開模及批量生產合同范本3篇
- 2024年文化園區(qū)開發(fā)與運營管理服務合同3篇
- 2024年跨境電商貨物收款代理服務合同3篇
- 2025版租賃房產風險評估與預警服務合同范本3篇
- 汽車制造廠油工施工合同
- 軍事設施土方施工合同
- 文化創(chuàng)意產業(yè)房產買賣合同模板
- 進口商品存儲協(xié)議
- 銀行員工提升服務質量承諾書
- 建筑橋梁施工人工費合同
- Unit 2 How often do you exercise Section A 1a-2d 教學實錄 2024-2025學年人教版八年級英語上冊
- 2024年公路工程資料歸檔與承包合同3篇
- 2024-2025學年上學期杭州初中英語八年級期末試卷
- 法律邏輯學知到智慧樹章節(jié)測試課后答案2024年秋西南政法大學
- 山東省臨沂市2023-2024學年高二上學期期末學業(yè)水平檢測歷史試題 含答案
- 中考數(shù)學復習第二章方程(組)與不等式(組)第三節(jié)分式方程及其應用課件
- 水肥一體化智能種植管理技術實施方案
- 廣告牌匾安裝施工方案
- 馬克思主義基本原理期末試題及答案
- 成人流行性感冒抗病毒治療專家共識(2022年)解讀
- GB/T 13738.2-2017紅茶第2部分:工夫紅茶
評論
0/150
提交評論