版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、課程設計報告(本科)課程:高級語言程序設計學號:姓名:班級:2011級計算機軟件1班教師:時間:2011.12計算機科學與技術(shù)系設計名稱:簡單的文件管理系統(tǒng)設計內(nèi)容、目的與要求:設計內(nèi)容與目的:編寫一個簡單的文件管理系統(tǒng),能夠?qū)Υ疟P文件進行簡單的文件管理和操作,方便計算機用戶能夠?qū)Υ疟P 文件的訪問和管理,熟悉并掌握c語言對文件的基本操作,以及了解c文件的基本知識設計要求 :能夠?qū)崿F(xiàn)命令dir、rename、del、copy、move,完成對文件的查看、重命名、刪除、復制及移動。計劃與進度安排:2011-12.26:完成設計思路,并作出草稿。2011-12.27-12.31按要求編寫能夠?qū)崿F(xiàn)各個
2、功能的源代碼。2012-1.1-1.5完成對源代碼的編寫、運行及調(diào)試。2012-1.6 驗收,答辯。設計過程、步驟(可加頁):設計思路; 總體,主函數(shù)使用死循環(huán),然后后使用switch 函數(shù),對用戶不同的操作請求輸入的數(shù)字,從而調(diào)用不同的函數(shù)。分別自己定義,dir()、rename()、del()、copy()、move()五個函數(shù),分別完成對文件的查看、重命名、刪除、復制,及移動的功能,然后主函數(shù)使用switch語句控制不同的選擇,調(diào)用不同的函數(shù),完成對文件的操作。簡單的文件管理系統(tǒng)主界面 謝謝使用.查看文件.重命名文件.刪除文件復制文件移動文件退出程序接收用戶指令調(diào)用函數(shù) 循環(huán)主界面步驟:
3、1. 主函數(shù)使用死循環(huán),完成多次的使用,直到用戶輸入的為0結(jié)束,輸入有誤自動結(jié)束,否則會導致一直循環(huán)的!2. switch ()函數(shù)控制輸入不同的指令,調(diào)用不同的函數(shù)。定義整型變量a,接收用戶輸入要執(zhí)行的操作指令。如果用戶輸入的是1,則調(diào)用dir()查看文件;如果用戶輸入的是2,則調(diào)用rename()重命名文件;如果用戶輸入的是3,則調(diào)用del()刪除文件;如果用戶輸入的是4,則調(diào)用move()移動文件;如果用戶輸入的是5,用調(diào)用copy()復制文件;如果用戶輸入的是0,提示用戶“謝謝使用”結(jié)束for()循環(huán),結(jié)束程序;如果用戶輸入有誤則,將0賦給a,結(jié)束程序。3. dir()自定義函數(shù):實現(xiàn)
4、查看文件的功能,打開需要查看的文件,定義字符型變量ch暫存文件里的字符,和字符型數(shù)組filename用來存放用戶輸入要查看的文件名,然后定義文件類型指針,利用fopen()、for()循環(huán)、putchar()、fgetc()系統(tǒng)函數(shù)將文本文件的字符逐個輸出到屏幕上。4. rename()自定義函數(shù) :實現(xiàn)重命名的功能,rename()用法: int rename(char *oldname, char *newname);如果成功返回值為0,失敗返回值為非0;定義字符型數(shù)組oldname和newname,分別接受用戶輸入原文件名和新文件名,然后使用rename()函數(shù)即可。 5. del()自
5、定義函數(shù) :實現(xiàn)刪除文件的功能, remove用法: int remove(char *filename); 如果成功返回值為0,失敗返回值為非0;定義字符型數(shù)組delname接收用戶輸入要刪除的文件名,然后是用remove()函數(shù)即可。6. copy()自定義函數(shù):實現(xiàn)文件的復制功能,定義字符型數(shù)組infile和outfile,接收用戶輸入的要復制的文件名和復制后的文件名,定義文件指針fp用fopen()打開要復制的文件,for()循環(huán)當fgetc(infile)是文件結(jié)束符時停止循環(huán),使用fputc()和fgetc()將infile文件的字符復制到了outfile里。7. move()自定
6、義函數(shù):實現(xiàn)移動文件的功能,定義字符型數(shù)組infile和outfile,分別接收要移動的文件名好移動后的文件名,定義文件指針fp,然后將infile復制到outfile方法同6,然在使用remove()函數(shù)刪除infile就完成了移動的功能。結(jié)果與分析(可以加頁): 結(jié)果:以下是調(diào)試后,正常運行的截圖,分別是,查看、重命名、刪除、移動、復制和退出時的截圖!調(diào)試前:1. 總程序可以正常的運行。2. 可以實現(xiàn)對文本文件的查看,并顯示在屏幕上!3. 我在運行重命名的函數(shù)時,出現(xiàn)了rename permission denied!在運行remove函數(shù)時出現(xiàn)了remove : no such file
7、 directoty.4. 能夠正常復制,但是復制的文本文件,文件里面結(jié)尾時亂碼但是但是查看復制后文件,顯示正常!分析:1. 我在運行重命名的函數(shù)時,出現(xiàn)了rename permission denied!不知道為什么提示重命名未授權(quán)。在最后的調(diào)試中,我發(fā)現(xiàn)了問題,是由于我在重命名的文件時打開沒有關閉文件,修改了代碼之后,完成了重命名函數(shù)的調(diào)試。2. 刪除文件時出錯,原因時remove()函數(shù)使用有誤,調(diào)試前我的代碼是remove(“delfile”)改為remove(delfile),就可以了。設計體會與建議: 體會:1.首先通過這次的課程設計,讓我知道了-萬事開頭難,好的開始成功的一半,首
8、先一定要有一個明確的設計思路,一開始看到了課程設計的題目,雖然心中有了個大概的思路,并沒有做好詳細的計劃,到了真正的編寫程序時,才發(fā)現(xiàn),要考慮到一些細節(jié),比如程序要實現(xiàn)循環(huán)使用,不能執(zhí)行一次任務就退出了,以及調(diào)用函數(shù)要考慮到用戶,是要繼續(xù)操作還是返回上一級菜單,等等問題。2.做好計劃時,有幾天為一個問題,耽擱了很長時間,在調(diào)用函數(shù)是我使用了gets()函數(shù)接收用戶輸入的字符串,程序就出現(xiàn)了問題,后來我使用scanf()函數(shù)接收用戶輸入,就可以了,我現(xiàn)在還不知道為什么?3.寫程序的時候?qū)ξ募牟僮骱懿皇炀?,編寫的程序時用到的rename remove,等函數(shù),通過查閱資料的,課本上的東西,并不是
9、能講到所有知識,有些東西,只有自己查閱!但是,如果書上的都不能掌握,也是不行的!同這次的課程設計,讓我對文件的操作有了較多的理解和運用了。c語言程序代碼附錄:#include stdio.h #include stdlib.h #define n 40 /* 宏定義*/int main() /* 主函數(shù)*/void dir();void rename();void del();void move();void copy(); /* 函數(shù)聲明*/int a;for(;a!=0;) /*死循環(huán),如果用戶輸入的不是0執(zhí)行循環(huán)*/ printf(nnn); printf(tt*n); /*屏幕上顯示主
10、界面*/ printf(tt* 歡迎使用文件管理系統(tǒng) *n); printf(tt*n); printf(tt*t1.查看文件(只適用文本文件) *n); printf(tt*t2.重命名文件 *n); printf(tt*t3.刪除文件 *n); printf(tt*t4.移動文件 *n); printf(tt*t5.復制文件 *n); printf(tt*t0.退出系統(tǒng) *n); printf(tt*n); printf(tt請選擇要進行的操作(按enter鍵執(zhí)行?。?; /*提示用戶輸入*/ scanf(%d,&a); /*接受用戶輸入*/ switch(a) case 1: dir(
11、); break; /*如果用戶輸入1調(diào)用dir()函數(shù)查看文件*/ case 2: rename(); break; /*如果用戶輸入2調(diào)用rename()函數(shù)-文件*/ case 3: del(); break; /*如果用戶輸入3調(diào)用del()函數(shù)-刪除文件*/ case 4: move(); break; /*如果用戶輸入4調(diào)用move()函數(shù)-移動文件*/ case 5: copy(); break; /*如果用戶輸入5調(diào)用copy()函數(shù)-復制文件*/ case 0: printf(tt謝謝使用!n);break; /*如果用戶輸入0 ,結(jié)束循環(huán)!退出程序*/ default: p
12、rintf(輸入有誤,自動結(jié)束!n);a=0; /*如果用戶輸入有誤,將0賦給a結(jié)束循環(huán)*/ return 0;void dir() /*dir()函數(shù)*/int a; /*定義變量a,接收用戶的操作選擇*/for(;a!=0;) /*死循環(huán)*/file *fp; /*定義文件指針*/char ch,filenamen;printf(請輸入要查看的文本文件(如d:1.txt):);/*提示用戶輸入*/scanf(%s,filename);if(fp=fopen(filename,r)=null) printf(無法找到該文件!n);/*打開文件操作*/else ch=fgetc(fp); /*
13、將fp文件的字符賦給ch*/ while(ch!=eof) /*循環(huán)直到遇到文件結(jié)束標識符結(jié)束*/ putchar(ch); /*將字符ch輸出到屏幕上*/ch=fgetc(fp); /*將fp文件的下一個字符賦給ch*/ fclose(fp); /*關閉文件*/printf(nnt1.繼續(xù)。nt0.返回上一級!n請選擇要進行的操作(按enter執(zhí)行!):);scanf(%d,&a); /*接收用戶輸入的指令*/ switch(a) case 1: ;break; /*如果輸入的是1,繼續(xù)執(zhí)行循環(huán)-查看文件*/ case 0: ;break; default :printf(輸入有誤!自動返回
14、上一級nn);a=0;void rename() /*rename()函數(shù)-重命名文件*/ int a; for(;a!=0;) char oldnamen,newnamen; /*定義字符型數(shù)組用來存放好、用戶輸入的文件名*/ char *p1,*p2; file *fp; /*文件指針*/ printf(要重命名的文件(如c:1.txt): ); scanf(%s,oldname); if(fp=fopen(oldname,r)=null) /*打開文件*/ printf(無法找該文件!n); exit(0); fclose(fp); p1=oldname ; printf(輸入新的文件名
15、(如c:2.txt): ); scanf(%s,newname); p2=newname; if (rename(oldname, newname) = 0) /*rename函數(shù)()成功返回值為0,則輸出重命名成功*/ printf(將 %s 重命名為 %s.n重命名成功n, p1, p2); else perror(rename); getchar(); printf(nnt1.繼續(xù)。nt0.返回上一級!n請選擇要進行的操作(按enter執(zhí)行!):);/*提示用戶輸入要執(zhí)行的指令*/ scanf(%d,&a); switch(a) case 1: ;break; case 0: ;brea
16、k; default :printf(輸入有誤!自動返回上一級nn);a=0;/*如果用戶輸入有誤,將0賦給a結(jié)束循環(huán)*/void del() /*del()函數(shù)-刪除文件*/ int a; for(;a!=0;) char delfilen;printf(輸入要刪除的文件(如c:1.txt):);scanf(%s,delfile); if(remove(delfile)=0) /*remove函數(shù)()成功返回值為0,則輸出刪除文件成功*/ printf(刪除文件%s 成功!n,delfile); elseperror(remove); printf(nnt1.繼續(xù)。nt0.返回上一級!n請選
17、擇要進行的操作(按enter執(zhí)行!):); scanf(%d,&a); switch(a) case 1: ;break; case 0: ;break; default :printf(輸入有誤!自動返回上一級nn);a=0;void move() /*move()函數(shù)-移動文件*/ int a; for(;a!=0;) file *in ,*out; /*定義文件指針*/char infilen,outfilen;printf(請輸入要移動的文件(如c:a.txt):n);scanf(%s,infile);if(in=fopen(infile,r)=null)printf(無法打開文件!n
18、); exit(0);printf(請輸入移動后的文件(如c:a.txt):n); /*提示用戶輸入*/scanf(%s,outfile); /*接收用戶輸入*/if(out=fopen(outfile,wb)=null) /*使用二進制方式打開文件*/printf(無法打開文件!n); exit(0);for(;!feof(in);) /*直到遇到文件結(jié)束標志結(jié)束循環(huán)*/ fputc(fgetc(in),out); /*將in文件里的字符寫入out文件里*/fclose(out); /*關閉文件*/fclose(in);if(remove(infile)=0) printf(移動成功n); else perror(remove); /*關閉文件*/printf(nnt1.繼續(xù)。nt0.返回上一級!n請選擇要進行的操作(按enter執(zhí)行!):); scanf(%d,&a); switch(a) case 1: ;break; case 0: ;break; default :printf(輸入有誤!自動返回上一級nn);a=0; void copy() /*cop
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工廠大門制售合同模板
- 安全評價服務合同范例
- 思想工作總結(jié)
- 委托貨物承運合同模板
- 《古漢語常用工具書》課件
- 平潭魯能公館合同范例
- 小工程分包合同模板
- 業(yè)主托管合同范例
- 建材店面銷售合同范例
- 反向保理轉(zhuǎn)讓合同模板
- 部編版六年級語文上冊詞語表(帶拼音)-六上冊詞語表連拼音
- 淺談校園影視在學校教育中的作用
- 無公害農(nóng)產(chǎn)品查詢
- 試劑、試藥、試液的管理規(guī)程
- 研究生課程應用電化學(課堂PPT)
- 通信綜合網(wǎng)管技術(shù)規(guī)格書doc
- 六宮數(shù)獨可直接打印共192題
- 班會:如何克服浮躁心理PPT優(yōu)秀課件
- 四宗宗義比較略記
- Monsters歌詞下載,Monsters原唱歌詞中文翻譯,Monsters簡譜KatieSky
- 全國各地區(qū)代碼
評論
0/150
提交評論