淮海工學(xué)院計(jì)算機(jī)工程學(xué)院課程設(shè)計(jì)報(bào)告數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第1頁(yè)
淮海工學(xué)院計(jì)算機(jī)工程學(xué)院課程設(shè)計(jì)報(bào)告數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第2頁(yè)
淮海工學(xué)院計(jì)算機(jī)工程學(xué)院課程設(shè)計(jì)報(bào)告數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第3頁(yè)
淮海工學(xué)院計(jì)算機(jī)工程學(xué)院課程設(shè)計(jì)報(bào)告數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第4頁(yè)
淮海工學(xué)院計(jì)算機(jī)工程學(xué)院課程設(shè)計(jì)報(bào)告數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余18頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、淮海 工學(xué)院 計(jì)算機(jī)工程學(xué)院課程設(shè)計(jì)報(bào)告設(shè)計(jì)名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)選題名稱:簡(jiǎn)單行編輯姓 名: 侯耀生 學(xué) 號(hào):2012122694專業(yè)班級(jí):軟件工程軟件121系(院): 計(jì)算機(jī)工程學(xué)院設(shè)計(jì)時(shí)間: 2013.12.232013.1.5設(shè)計(jì)地點(diǎn):軟件工程實(shí)驗(yàn)室、教室成績(jī):指導(dǎo)教師評(píng)語(yǔ):簽名:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第 18 頁(yè),共 頁(yè)1.課程設(shè)計(jì)目的1、訓(xùn)練學(xué)生靈活應(yīng)用所學(xué)數(shù)據(jù)結(jié)構(gòu)知識(shí),獨(dú)立完成問(wèn)題分析,結(jié)合數(shù)據(jù)結(jié)構(gòu)理論知識(shí),編寫(xiě)程序求解指定問(wèn)題。2 .初步掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能;3 .提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問(wèn)題的能力;4 .訓(xùn)練

2、用系統(tǒng)的觀點(diǎn)和軟件開(kāi)發(fā)一般規(guī)范進(jìn)行軟件開(kāi)發(fā),鞏固、深化學(xué)生的理論知識(shí),提高編程水平,并在此過(guò)程中培養(yǎng)他們嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和良好的工作作風(fēng)。2 .課程設(shè)計(jì)任務(wù)與要求:任務(wù)根據(jù)教材數(shù)據(jù)結(jié)構(gòu)-C語(yǔ)言描述(耿國(guó)華主編)和參考書(shū)數(shù)據(jù)結(jié)構(gòu)題集(C語(yǔ)言版)(嚴(yán)蔚敏、吳偉民主編)選擇課程設(shè)計(jì)題目,要求通過(guò)設(shè)計(jì),在數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示、數(shù)據(jù)結(jié)構(gòu) 的選擇應(yīng)用、算法的設(shè)計(jì)及其實(shí)現(xiàn)等方面加深對(duì)課程基本內(nèi)容的理解和綜合運(yùn)用。設(shè)計(jì)題目從任務(wù)書(shū)所列選題表中選取,每班每題不得超過(guò)2人。學(xué)生自選課題學(xué)生原則上可以結(jié)合個(gè)人愛(ài)好自選課題,要求課題有一定的深度與難度,有一定的算法復(fù)雜性,能夠鞏固數(shù)據(jù)結(jié)構(gòu)課程所學(xué)的知識(shí)。學(xué)生自選

3、課題需在18周前報(bào)課程設(shè)計(jì)指導(dǎo)教師批準(zhǔn)方可生效。要求:1、在處理每個(gè)題目時(shí),要求從分析題目的需求入手,按設(shè)計(jì)抽象數(shù)據(jù)類型、構(gòu)思算法、通過(guò)設(shè)計(jì)實(shí)現(xiàn)抽象數(shù)據(jù)類型、編制上機(jī)程序和上機(jī)調(diào)試等若干步驟完成題目,最終寫(xiě)出完整的分析報(bào)告。前期準(zhǔn)備工作完備與否直接影響到后序上機(jī)調(diào)試工作的效率。在程序設(shè)計(jì)階段應(yīng)盡量利用已有的標(biāo)準(zhǔn)函數(shù),加大代碼的重用率。2、.設(shè)計(jì)的題目要求達(dá)到一定工作量(300行以上代碼),并具有一定的深度和難度。3、程序設(shè)計(jì)語(yǔ)言推薦使用 C/C+,程序書(shū)寫(xiě)規(guī)范,源程序需加必要的注釋;4、每位同學(xué)需提交可獨(dú)立運(yùn)行的程序;5、每位同學(xué)需獨(dú)立提交設(shè)計(jì)報(bào)告書(shū)(每人一份),要求編排格式統(tǒng)一、規(guī)范、內(nèi)容充

4、實(shí),不少于10頁(yè)(代碼不算);6、課程設(shè)計(jì)實(shí)踐作為培養(yǎng)學(xué)生動(dòng)手能力的一種手段,單獨(dú)考核。3 .課程設(shè)計(jì)說(shuō)明書(shū)一需求分析設(shè)計(jì)一個(gè)簡(jiǎn)單的行編輯程序,輸入一頁(yè)文字,程序可以統(tǒng)計(jì)出文字、數(shù)字、空格的個(gè)數(shù)。靜態(tài)存 儲(chǔ)一頁(yè)文章,每彳T最多不超過(guò)80個(gè)字符,共N行。存儲(chǔ)結(jié)構(gòu)使用線性表,文字中可以是大寫(xiě)、小寫(xiě)的英文字母、任何數(shù)字及標(biāo)點(diǎn)符號(hào)?;疽?1)分別統(tǒng)計(jì)出其中英文字母數(shù)和空格數(shù)及整篇文章總字?jǐn)?shù);(2)統(tǒng)計(jì)某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);(3)刪除某一子串,并將后面的字符前移。(4)輸出形式:1)分行輸出用戶輸入的各行字符;2)分4行輸出"全部字母數(shù)"、"數(shù)字個(gè)

5、數(shù)"、"空格個(gè)數(shù)"、"文章總字?jǐn)?shù)"3)輸出刪除某一字符串后的文章;二概要設(shè)計(jì)1 .結(jié)構(gòu)體定義:typedef struct linechar *data;struct line *next;LINE;2 .各函數(shù)功能(1) void Create(LINE * &head)功能:創(chuàng)建一個(gè)鏈表,同時(shí)向里面輸入文本數(shù)據(jù)(2) int Countwords(LINE * &head)功能:統(tǒng)計(jì)字母數(shù)(3) int CountNumber(LINE * &head)功能:統(tǒng)計(jì)數(shù)字?jǐn)?shù)(4) int CountSpace(LINE

6、* &head)功能:統(tǒng)計(jì)空格數(shù)(5) int CountAll(LINE * &head)功能:統(tǒng)計(jì)文章的總字?jǐn)?shù)(6) int FindString(LINE * &head,char*str)功能:統(tǒng)計(jì)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)計(jì)刪計(jì)計(jì)計(jì)某除數(shù)空文個(gè)指字格早字士 7E

7、數(shù)J數(shù)1z總 字 數(shù)符 串 出現(xiàn) 次、數(shù),字 符 串1)退 出 該 系 統(tǒng)三詳細(xì)設(shè)計(jì)1 .定義頭文件#include <iostream.h>#include <string.h>#include <stdio.h>2 .定義結(jié)構(gòu)體定義一個(gè)鏈表,文本每行以字符串形式存儲(chǔ),行與行之間以鏈表存儲(chǔ)typedef struct linechar *data;struct line *next;LINE;3 .主要難點(diǎn)函數(shù)的功能及其實(shí)現(xiàn)(1)統(tǒng)計(jì)str在文章中出現(xiàn)的次數(shù)。int FindString(LINE * &head,char*str) LINE *p

8、=head;int count=0;int h=0;int len1=0;/保存當(dāng)前行的總字符數(shù)int len2=strlen(str);/待統(tǒng)計(jì)字符串的長(zhǎng)度int i,j,k;do len1=strlen(p->data);/當(dāng)前行的字符數(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);/ 遍歷鏈表四設(shè)計(jì)與調(diào)試分析(1)系統(tǒng)起始界面,要求輸入字符串文章I Q I S3 II尸* M

11、KMK MTM M K X M M MMM MM M M |"單 j丁當(dāng)先 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:請(qǐng)輸入字符串,以Ctrl.ELQ為結(jié)尾(每行最多輸入3嚀符紇:(2)系統(tǒng)王界面E舊”侯印生果程的,口或ugL。/1 = 1 回1n部一子恬草J式樂(lè) ±整文 i十汜盥 統(tǒng)統(tǒng)統(tǒng)第晦 12 3 4 5 6 7數(shù) 次 的 現(xiàn) 出請(qǐng)輸入ir,選擇你要的步騷(3)統(tǒng)計(jì)字母數(shù)(4)統(tǒng)計(jì)數(shù)子數(shù)(6).-統(tǒng)訐文

12、章總字?jǐn)?shù)-統(tǒng)計(jì)某個(gè)字符串出現(xiàn)的次數(shù)刪除指定字符申(8)退出該系統(tǒng)(9)未按指定要求輸入編號(hào)(10)史巳信S年Debugl.exe'a五用戶手冊(cè)Ctrl+E 鍵。1 .進(jìn)入用戶界面,輸入一篇文章,可以包括字母數(shù)字以及空格符,完成后按2 .輸入完成后,進(jìn)入用戶主界面,在選項(xiàng) 17內(nèi)進(jìn)行選擇。(1)若按1鍵,統(tǒng)計(jì)該篇文章的全部字母數(shù)。(2)若按2鍵,統(tǒng)計(jì)該篇文章的全部數(shù)字?jǐn)?shù)。(3)若按3鍵,統(tǒng)計(jì)該篇文章的全部空格數(shù)。(4)若按4鍵,統(tǒng)計(jì)該篇文章的總字?jǐn)?shù)。(5)若按5鍵,統(tǒng)計(jì)某個(gè)字符串在文章中出現(xiàn)的次數(shù),(6)若按6鍵,刪除該文章中的指定字符用。(7)若按7鍵,退出該系統(tǒng)。(8)若按8鍵,則返

13、回異常,提示輸入鍵為17鍵六測(cè)試成果±缶侯耀生:果程只計(jì)DobuglExek*mM*MWM*N MM* 簡(jiǎn)單彳 J 編輯系金克 MX XMKKJtlEJCKXMM2B12122694情輸入于符串,協(xié)口七出反嗚為結(jié)尾匕每行蜃多輸入幽字中” 扁入面文章為:. _ _&Fh尊g號(hào)ing 12312ingr bcxg*/s6324c66g2xi*F6ingr 乂wgy后Adic數(shù)革出現(xiàn)的次數(shù)部字量®KH/E系 全獨(dú)支KW 充塞南充充胴艮IL g £k幺 ;2* 一 一 - 10 12 3 4 5 6 7選擇你要的步驟請(qǐng)輸入2.統(tǒng)計(jì)湫字?jǐn)?shù)七附錄(源程序清單)#inc

14、lude <iostream.h>#include <string.h>#include <stdio.h>文本每行以字符串形式存儲(chǔ),行與行之間以鏈表存儲(chǔ)typedef struct linechar *data;struct line *next;LINE;void Create(LINE * &head)printf("請(qǐng)輸入字符串,以Ctrl+E1E)為結(jié)尾(每行最多輸入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)計(jì)字母數(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)計(jì)數(shù)字?jǐn)?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)計(jì)空格數(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)計(jì)文章的總字?jǐn)?shù)int CountAll(LINE * &head)LINE *p=head;docount+=strlen(p->data);while(p=p->next)!=NULL);統(tǒng)計(jì)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("*簡(jiǎn)單行編輯系統(tǒng)*n");printf("*2012122694*n");printf("*n");printf("n

22、");Create(head);printf("輸入的文章為:n");OutPut(head);printf("*請(qǐng)輸入17,選擇你要的步驟*n");printf("*1.統(tǒng)計(jì)全部字母數(shù)*n"printf("*2.統(tǒng)計(jì)數(shù)字個(gè)數(shù)*n"printf("*3.統(tǒng)計(jì)空格個(gè)數(shù)*n"printf("*4.統(tǒng)計(jì)文章總字?jǐn)?shù)*n"printf("*5.統(tǒng)計(jì)某個(gè)字符串出現(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)計(jì)字母數(shù)*n");printf("*n");printf("*該文章的全部字母數(shù)為:%d *n",Countwords(head);printf("*請(qǐng)您繼續(xù)進(jìn)行選擇*n");printf(

24、"*n"); printf("n");break;case 2:printf("*2.統(tǒng)計(jì)數(shù)字?jǐn)?shù)*n");printf(”*n");數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第19頁(yè),共頁(yè)printf("*該文章的數(shù)字個(gè)數(shù):%d *n",CountNumber(head);printf("*請(qǐng)您繼續(xù)進(jìn)行選擇*n");printf("+*n");printf("n");break;case 3:printf("*3.統(tǒng)計(jì)空格數(shù)*n");printf(

25、"*n");printf("*該文章的空格個(gè)數(shù):%d *n",CountSpace(head);printf("*請(qǐng)您繼續(xù)進(jìn)行選擇*n");printf("*n");printf("n");break;case 4:printf("*4.統(tǒng)計(jì)文章總字?jǐn)?shù)*n");printf("*n");printf("*該文章的總字?jǐn)?shù):d n",CountAll(head);printf("*請(qǐng)您繼續(xù)進(jìn)行選擇*n");printf(

26、"*n");printf("n");break;case 5:printf("*5.統(tǒng)計(jì)某個(gè)字符串出現(xiàn)的次數(shù)*n");printf("*n");printf("*請(qǐng)輸入要統(tǒng)計(jì)的字符串:");scanf("%s",str1);printf("*%s 出現(xiàn)的次數(shù)為:d *n",str1,FindString(head,str1);printf("*請(qǐng)您繼續(xù)進(jìn)行選擇*n");printf("*n");printf(&quo

27、t;n");break;數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第16頁(yè),共 頁(yè)printf("*6.刪除指定字符串printf("*n");printf("*請(qǐng)輸入要?jiǎng)h除的某一字符串:*n");*n");scanf("%s",str2);DelString(head,str2);printf("刪除s后的文章為:”,str2);OutPut(head);printf("*請(qǐng)您繼續(xù)進(jìn)行選擇*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("*對(duì)不起,您所輸入的編號(hào)不在17之間printf("*請(qǐng)重新輸入*n");*n");p

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論