C語言課程設(shè)計報告文本信息處理_第1頁
C語言課程設(shè)計報告文本信息處理_第2頁
C語言課程設(shè)計報告文本信息處理_第3頁
C語言課程設(shè)計報告文本信息處理_第4頁
C語言課程設(shè)計報告文本信息處理_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 xx 航 空 工 業(yè) 學(xué) 院 課程設(shè)計學(xué) 號 班 級 姓 名 指導(dǎo)教師 2007年 7 月 19 日沈陽航空工業(yè)學(xué)院課程設(shè)計任務(wù)書機械與汽車學(xué)院 機械電子工程專業(yè) 5406108班 學(xué)號200504061269一、課程設(shè)計題目:文本信息處理二、課程設(shè)計工作自2007年7月9日起至2007年7月16日止三、課程設(shè)計內(nèi)容:用c語言編寫軟件完成以下任務(wù):(1) 復(fù)制文件(將一文本文件中的內(nèi)容拷貝到另一文本文件中)(2) 顯示文件信息內(nèi)容(并顯示行號)(3) 查找字符串(4) 插入字符串(5) 自己再加一項功能四、課程設(shè)計要求:程序質(zhì)量:l 采用模塊化程序設(shè)計方法,在程序里面,以菜單的形式調(diào)用各功能

2、函數(shù),程序可讀性強,界面友好,輸出形式盡量美觀。l 用戶界面友好,功能明確,操作方便;可以加以其它功能或修飾。l 用戶界面中的菜單至少應(yīng)包括“復(fù)制文件”“顯示”“查找”“插入”“退出”五項。l 代碼應(yīng)適當(dāng)縮進,并給出必要的注釋,以增強程序的可讀性。課程設(shè)計說明書:課程結(jié)束后,上交課程設(shè)計說明書(打印稿和電子稿),其內(nèi)容如下:l 封面l 課程設(shè)計任務(wù)書l 目錄l 需求分析(分析題目的要求)l 程序流程圖(總體流程圖和主要功能模塊流程圖)l 核心技術(shù)的實現(xiàn)說明及相應(yīng)程序段l 個人總結(jié)l 參考資料l 源程序及適當(dāng)?shù)淖⑨屩笇?dǎo)教師:_ 學(xué)生簽名:_目錄一、需求分析2二程序流程圖.3三、核心技術(shù)的實現(xiàn)方法

3、、程序段及注釋8四個人總結(jié).14五、參考文獻.14六、源程序14 一、需求分析 經(jīng)過對程序設(shè)計題目的分析可知,整個程序的設(shè)計實現(xiàn)大致分為四個模塊,其中每一個模塊對應(yīng)一個函數(shù),他們的功能分別是: 復(fù)制文件(將一文本文件中的內(nèi)容拷貝到另一文本文件中) 顯示文件信息內(nèi)容(并顯示行號) 查找字符串 插入字符串。在這些函數(shù)當(dāng)中,四個函數(shù)的實現(xiàn)嚴(yán)格按照題目的要求。1、復(fù)制文件函數(shù) 主要實現(xiàn)程序?qū)⒁粋€文件復(fù)制到另一個文件中 2、顯示文件信息內(nèi)容函數(shù) 實現(xiàn)的功能是將文件中的所有 內(nèi)容通過屏幕顯示出來;3、查找字符串函數(shù) 按照題目的具體要求找到所要查找的字符串;4、插入字符串函數(shù) 還可以插入所組要的字符串;除上

4、面介紹的功能之外,程序還具有退出功能,可以在程序的一次運行當(dāng)中循環(huán)執(zhí)行所有的功能,并根據(jù)需要終止程序的執(zhí)行。 二程序流程圖當(dāng)(1)真輸入值n=1?假復(fù)制文件copy()真n=2? 假顯示文件信息內(nèi)容display()真n=3?假查找字符串seek()n=4?真 假插入insert()退出1程序總體結(jié)構(gòu)圖:2.具體功能框圖: 1 輸入被復(fù)制的文件名 輸入復(fù)制的文件名復(fù)制的文件不存在真假新建立一個文件 刪除,重建 文件指針順序后移文件沒有結(jié)束真假 將讀取被復(fù)制文件中的 字符寫入到復(fù)制文件中關(guān)閉被復(fù)制文件 關(guān)閉復(fù)制文件 調(diào)用菜單函數(shù) 2 輸入顯示的文件名真文件不存在?假輸出文件不存在顯示第一行的行號

5、文件沒有結(jié)束順序讀取文件中的字符賦給變量t.在屏幕上輸出t.t=n?真假輸出i,i+ 關(guān)閉文件調(diào)用菜單函數(shù)3輸入要查找的文件名文件不存在?真假輸出文件不存在輸入要查找的字符串統(tǒng)計輸入字符串的字符個數(shù),并賦給n將文件指針定位文件開頭將n個字符賦給字符串變量到行末?真假i=i+1,將從文件中讀取的字符串中的字符順序與輸入的字符串對比真相同?假輸出i文件結(jié)束?真假指針定位到下一字節(jié)繼續(xù)讀取和判斷關(guān)閉文件調(diào)用菜單函數(shù) 4 輸入要插入的字符的文件名 打開文件 文件不存在? 真假輸出文件不存在輸入要插入的字符串統(tǒng)計輸入的字符串的長度并值賦給m顯示插入點選擇菜單輸入h值h2|hd寫入要插入的字符串讀取一個字

6、符賦給c,指針后移一位關(guān)閉文件將文件指針后移()位,調(diào)用菜單函數(shù)在當(dāng)前寫入c,再將指針后移一位將文件指針前移(m+2)位直到dq,將文件指針定位到文件開頭寫入要插入的字符串關(guān)閉文件調(diào)用菜單函數(shù)三、核心技術(shù)的實現(xiàn)方法、程序段及注釋本程序主要由四個自定義函數(shù)和一個主函數(shù)組成,其中主函數(shù)以菜單的形式調(diào)用其他函數(shù)來實現(xiàn)要求的所有功能。下面分別進行說明1、所需要的頭文件:#include stdio.h /*輸入輸出函數(shù)*/#include stdlib.h /*常用函數(shù)和符號常量*/#include string.h /*字符串函數(shù)*/2、聲明函數(shù)void copy_(); /*聲明復(fù)制函數(shù)*/voi

7、d display_(); /*聲明顯示函數(shù)*/void seek_(); /*聲明查找函數(shù)*/void insert_(); /*聲明插入 */void menu(); /*聲明菜單函數(shù)*/3、主函數(shù)void main() /*主函數(shù)*/ menu(); /*調(diào)用菜單函數(shù)*/4、菜單函數(shù)void menu() /*菜單函數(shù)*/ int a; printf(n=text information handling=n); /*顯示菜單*/ printf(+*+n); printf(+*- 1= -*+n); printf(+*- 2= -*+n); printf(+*- 3= -*+n); pr

8、intf(+*- 4= -*+n); printf(+*- 5= -*+n); printf(+*+n); printf(=n); printf(please input(15),then press :); scanf(%d,&a); switch(a) case 1:copy_();break; case 2:display_();break; case 3:seek_();break; case 4:insert_();break; case 5:exit(0);break; default:printf( - erro -!n- back to =nn);menu(); /*輸入其他數(shù)

9、,回到菜單函數(shù)*/ 5、復(fù)制函數(shù),前提是必須文件要存在,如果不,通過移動指針達到復(fù)制的目的,具體的程序段如下:void copy_() /*復(fù)制函數(shù)*/ file *in,*out; char infile20,outfile20; printf(enter the infile name=); scanf(%s,infile); /*輸入被復(fù)制的文件名*/ printf(enter the outfile name=); scanf(%s,outfile); /*輸入復(fù)制的文件名*/ if(in=fopen(infile,r)=null) /*打開被復(fù)制的文件,須已存在*/ printf(c

10、annot open infilen); exit(0); if(out=fopen(outfile,w)=null) /*打開復(fù)制的文件,若存在則刪除重建,若不存在則新建*/ printf(cannot open outfilen); exit(0); while(!feof(in) fputc(fgetc(in),out); /*文件指針順序后移,若文件未結(jié)束,則讀取被復(fù)制文件中的字符寫入復(fù)制文件中*/ fclose(in); /*關(guān)閉被復(fù)制文件*/ fclose(out); /*關(guān)閉復(fù)制函數(shù)*/ menu(); /*調(diào)用菜單函數(shù)*/6、顯示函數(shù),打開存在的文件,在屏幕上輸出文件里的所有內(nèi)

11、容,并顯示出行號,具體的程序段如下:void display_() /*顯示函數(shù)*/ int i=2; /*表示行號的整型變量i,并賦初值2*/ char t; file *in; char infile20; printf(enter the infile name=); scanf(%s,infile); /*輸入要顯示的文件名*/ if(in=fopen(infile,r)=null) /*打開要顯示的文件,須已存在*/ printf(cannot open infilen); exit(0); printf(1 ); /*顯示第一行的行號*/ while(!feof(in) /*判斷文

12、件是否結(jié)束*/ t=fgetc(in); /*順序讀取文件中的字符賦給變量t*/ printf(%c,t); /*在顯示屏上輸出t*/ if(t=n) /*判斷t是否等于換行符n*/printf(%d ,i+); /*若相等則輸出整型變量i,并使i的值加1*/ printf(n); fclose(in); /*關(guān)閉文件*/ menu(); /*調(diào)用菜單函數(shù)*/ 7、查找函數(shù),在要查找的文件中,查找所要查找的字符串,可以同時顯示出字符個數(shù),若文件不完全一樣,還可以顯示出行號,具體的程序段如下:void seek_() /*查找函數(shù)*/ file *in; int n; int i=1,j; ch

13、ar infile20; char string20; char m20; printf(enter the infile name=); scanf(%s,infile); /*輸入要查找的文件名*/ if(in=fopen(infile,r)=null) /*打開要查找的文件*/ printf(cannot open infilen); exit(0); printf(input the string to seek for=); scanf(%s,string); /*輸入要查找的字符串*/ n=(strlen(string); /*統(tǒng)計輸入字符串的字符個數(shù),并賦給n*/ rewind(

14、in); /*將文件指針定位到文件開頭*/ star1: fread(&m,n,1,in); /*讀入n個字符賦給字符串變量m*/ if(m0=n)i+; /*判斷是否讀到行末,若讀到則表示行號的變量i的值加1*/ for(j=0;j); scanf(%s,infile); /*輸入要插入字符串的文件名*/ if(in=fopen(infile,rb+)=null) /*打開文件*/ printf(cannot open infilen); exit(0); printf(input the string you want to insert=); scanf(%s,r); /*輸入要插入的字

15、符串*/m=strlen(r); /*統(tǒng)計輸入的字符串的長度并將值賦給m*/star2: printf(n+choose the insert point+n); /*顯示插入點選擇菜單*/ printf(-1=-2=-n); printf(+n); printf(input the operation number youchoose=); scanf(%d,&h); /*輸入h值*/ if(h2|h1) printf( - erro -!n); printf(- choose again -!nn); goto star2; /*若h值不為1或2則重新選擇*/ if(h=1) /*若h值為

16、1,則執(zhí)行下面的語句*/ fseek(in,-1l,2); /*定位文件指針到文件中最后一個字符前*/ q=ftell(in); /*獲取指針當(dāng)前位置并賦給q*/ for(d=0;d=q;d+) /*將以下語句執(zhí)行(q+1)次*/ c=fgetc(in); /*讀取一個字符賦給c,此時指針向后移一位*/ fseek(in,m-1,1); /*將文件指針后移(m-1)位*/ fputc(c,in); /*在當(dāng)前位置寫入c,此時指針向后移一位*/ fseek(in,-(m+2),1); /*將文件指針前移(m+2)位,若是第一次循環(huán),則位于原文件倒數(shù)第二個字符前*/ rewind(in); /*將

17、文件指針定位到文件開頭*/ fputs(r,in); /*寫入要插入的字符串*/ fclose(in); /*關(guān)閉文件*/ menu(); /*調(diào)用菜單函數(shù)*/ if(h=2) /*若h值為2,則執(zhí)行下面的語句*/ fseek(in,0l,2); /*定位文件指針到文件末*/ fputs(r,in); /*寫入要插入的字符串*/ fclose(in); /*關(guān)閉文件*/ menu(); /*調(diào)用菜單函數(shù)*/ 四個人總結(jié)通過這次課設(shè),讓我對以前所學(xué)的c語言知識有了更深刻的理解,還知道了程序的精密性,稍有一點錯誤,程序就不會運行,所以從中我明白了做事以及做人都要有這種一絲不茍的精神,還有計算機真的

18、是一門學(xué)問,很深的學(xué)問,想要弄懂它真的要下一份苦功才行啊,最后呢,課程設(shè)計還是我們以后走向崗位的基礎(chǔ)啊,所以我們一定要重視它??!五、參考文獻1 譚浩強c程序設(shè)計北京:清華大學(xué)出版社,20052 劉成等c語言程序設(shè)計實驗指導(dǎo)與習(xí)題集北京:中國鐵道出版社,2006 六、源程序#include stdio.h /*輸入輸出函數(shù)*/#include stdlib.h /*常用函數(shù)和符號常量*/#include string.h /*字符串函數(shù)*/void copy_(); /*聲明復(fù)制函數(shù)*/void display_(); /*聲明顯示函數(shù)*/void seek_(); /*聲明查找函數(shù)*/void

19、 insert_(); /*聲明插入 */void menu(); /*聲明菜單函數(shù)*/void main() /*主函數(shù)*/ menu(); /*調(diào)用菜單函數(shù)*/void menu() /*菜單函數(shù)*/ int a; printf(n=text information handling=n); /*顯示菜單*/ printf(+*+n); printf(+*- 1= -*+n); printf(+*- 2= -*+n); printf(+*- 3= -*+n); printf(+*- 4= -*+n); printf(+*- 5= -*+n); printf(+*+n); printf(=n

20、); printf(please input(15),then press :); scanf(%d,&a); switch(a) case 1:copy_();break; case 2:display_();break; case 3:seek_();break; case 4:insert_();break; case 5:exit(0);break; default:printf( - erro -!n- back to =nn);menu(); /*輸入其他數(shù),回到菜單函數(shù)*/ void copy_() /*復(fù)制函數(shù)*/ file *in,*out; char infile20,ou

21、tfile20; printf(enter the infile name=); scanf(%s,infile); /*輸入被復(fù)制的文件名*/ printf(enter the outfile name=); scanf(%s,outfile); /*輸入復(fù)制的文件名*/ if(in=fopen(infile,r)=null) /*打開被復(fù)制的文件,須已存在*/ printf(cannot open infilen); exit(0); if(out=fopen(outfile,w)=null) /*打開復(fù)制的文件,若存在則刪除重建,若不存在則新建*/ printf(cannot open

22、outfilen); exit(0); while(!feof(in) fputc(fgetc(in),out); /*文件指針順序后移,若文件未結(jié)束,則讀取被復(fù)制文件中的字符寫入復(fù)制文件中*/ fclose(in); /*關(guān)閉被復(fù)制文件*/ fclose(out); /*關(guān)閉復(fù)制函數(shù)*/ menu(); /*調(diào)用菜單函數(shù)*/void display_() /*顯示函數(shù)*/ int i=2; /*表示行號的整型變量i,并賦初值2*/ char t; file *in; char infile20; printf(enter the infile name=); scanf(%s,infile)

23、; /*輸入要顯示的文件名*/ if(in=fopen(infile,r)=null) /*打開要顯示的文件,須已存在*/ printf(cannot open infilen); exit(0); printf(1 ); /*顯示第一行的行號*/ while(!feof(in) /*判斷文件是否結(jié)束*/ t=fgetc(in); /*順序讀取文件中的字符賦給變量t*/ printf(%c,t); /*在顯示屏上輸出t*/ if(t=n) /*判斷t是否等于換行符n*/printf(%d ,i+); /*若相等則輸出整型變量i,并使i的值加1*/ printf(n); fclose(in);

24、/*關(guān)閉文件*/ menu(); /*調(diào)用菜單函數(shù)*/ void seek_() /*查找函數(shù)*/ file *in; int n; int i=1,j; char infile20; char string20; char m20; printf(enter the infile name=); scanf(%s,infile); /*輸入要查找的文件名*/ if(in=fopen(infile,r)=null) /*打開要查找的文件*/ printf(cannot open infilen); exit(0); printf(input the string to seek for=);

25、scanf(%s,string); /*輸入要查找的字符串*/ n=(strlen(string); /*統(tǒng)計輸入字符串的字符個數(shù),并賦給n*/ rewind(in); /*將文件指針定位到文件開頭*/ star1: fread(&m,n,1,in); /*讀入n個字符賦給字符串變量m*/ if(m0=n)i+; /*判斷是否讀到行末,若讀到則表示行號的變量i的值加1*/ for(j=0;j); scanf(%s,infile); /*輸入要插入字符串的文件名*/ if(in=fopen(infile,rb+)=null) /*打開文件*/ printf(cannot open infilen); exit(0); printf(input the string you want to

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論