文件加密系統(tǒng)課程設(shè)計(jì)_第1頁(yè)
文件加密系統(tǒng)課程設(shè)計(jì)_第2頁(yè)
文件加密系統(tǒng)課程設(shè)計(jì)_第3頁(yè)
文件加密系統(tǒng)課程設(shè)計(jì)_第4頁(yè)
文件加密系統(tǒng)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

文件加密系統(tǒng)第一章課程設(shè)計(jì)目的和要求1.1設(shè)計(jì)目的通過課程設(shè)計(jì),使學(xué)生了解高級(jí)程序設(shè)計(jì)語(yǔ)言的結(jié)構(gòu),逐漸培養(yǎng)學(xué)生的編程能力、用計(jì)算機(jī)解決實(shí)際問題的能力,掌握根本的程序設(shè)計(jì)過程和技巧,掌握根本的分析問題和利用計(jì)算機(jī)求解問題的能力,具備初步的高級(jí)語(yǔ)言程序設(shè)計(jì)能力。為后續(xù)各門計(jì)算機(jī)課程的學(xué)習(xí)和畢業(yè)設(shè)計(jì)打下堅(jiān)實(shí)根底。程序設(shè)計(jì)的主要任務(wù)是要求學(xué)生遵循軟件開發(fā)過程的根本標(biāo)準(zhǔn),運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的方法,按照課程設(shè)計(jì)的題目要求,分析、設(shè)計(jì)、編寫、調(diào)試和測(cè)試程序及編寫設(shè)計(jì)報(bào)告。本課程設(shè)計(jì)的目標(biāo):

1.穩(wěn)固《高級(jí)語(yǔ)言程序設(shè)計(jì)》課程學(xué)習(xí)的內(nèi)容和加深學(xué)生對(duì)根本知識(shí)的理解和掌握。

2.掌握編程和程序調(diào)試的根本技能。

3.掌握軟件設(shè)計(jì)的方法。

4.提高運(yùn)用程序設(shè)計(jì)解決實(shí)際問題的能力。5.培養(yǎng)獨(dú)立思考、綜合運(yùn)用所學(xué)有關(guān)相應(yīng)知識(shí)的能力。6.強(qiáng)化上機(jī)動(dòng)手編程能力,闖過理論與實(shí)踐相結(jié)合的難關(guān)!1.2設(shè)計(jì)要求1.分析課程設(shè)計(jì)題目的要求,根據(jù)所要求的程序功能,畫出程序的流程圖。對(duì)系統(tǒng)功能模塊進(jìn)行分析,寫出詳細(xì)設(shè)計(jì)說(shuō)明文檔。對(duì)程序源代碼進(jìn)行調(diào)試與測(cè)試,使其能正確運(yùn)行。設(shè)計(jì)完成的軟件要便于操作和使用。設(shè)計(jì)完成后提交課程設(shè)計(jì)報(bào)告。第二章課程設(shè)計(jì)任務(wù)內(nèi)容2.1背景加密技術(shù)是電子商務(wù)采取的主要平安保密措施,是最常用的平安保密手段,利用技術(shù)手段把重要的數(shù)據(jù)變?yōu)閬y碼〔加密〕傳送,到達(dá)目的地后再用相同或不同的手段復(fù)原〔解密〕。加密技術(shù)包括兩個(gè)元素:算法和密鑰。算法是將普通的文本〔或者可以理解的信息〕與一竄數(shù)字〔密鑰〕的結(jié)合,產(chǎn)生不可理解的密文的步驟,密鑰是用來(lái)對(duì)數(shù)據(jù)進(jìn)行編碼和解碼的一種算法。在平安保密中,可通過適當(dāng)?shù)拿荑€加密技術(shù)和管理機(jī)制來(lái)保證網(wǎng)絡(luò)的信息通訊平安。2.2功能需求實(shí)現(xiàn)對(duì)文件的加密與解密,要求有圖形用戶界面。細(xì)那么如下:1.能夠?qū)σ粋€(gè)文件進(jìn)行加密。2.加密后生成一個(gè)新文件,并且原文件刪除。3.能將加密生成的文件復(fù)原成原文件。4.能夠統(tǒng)計(jì)文件中單詞個(gè)數(shù)。第三章模塊設(shè)計(jì)3.1系統(tǒng)模塊包括四個(gè)模塊:加密模塊,解密模塊,顯示模塊,統(tǒng)計(jì)單詞模塊圖3-1系統(tǒng)模塊圖3.2主函數(shù)流程圖在主函數(shù)中,利用switch語(yǔ)句實(shí)現(xiàn)對(duì)各個(gè)工程的函數(shù)調(diào)用。圖3-2主函數(shù)流程圖3.3函數(shù)流程圖3.3.1加密函數(shù)流程圖先讀取原文件數(shù)據(jù),將原文件稱需經(jīng)過特定條件轉(zhuǎn)換后存放到另一個(gè)文件夾。加密過程,即將讀取文件的字符根據(jù)加密公式轉(zhuǎn)化為別的字符實(shí)現(xiàn)加密。但由于后面的解密重要判斷是否已經(jīng)是加密文件,所以在文件末尾做記號(hào)標(biāo)記。存到另一文件夾后關(guān)閉文件,最后用remove,rename兩個(gè)函數(shù)實(shí)現(xiàn)刪除源文件,將加密后文件命名為原文件名,這樣只剩下一個(gè)加密文件了。圖3-3加密函數(shù)流程圖解密函數(shù)流程圖先判斷是否已經(jīng)加密,這時(shí)要利用加密函數(shù)中使用的標(biāo)識(shí)符,可以用fseek函數(shù)讀取文件末尾的標(biāo)識(shí)符判斷是否已加密。假設(shè)是那么解密,否那么不解密。圖3-4解密函數(shù)流程圖顯示函數(shù)流程圖 利用文件的操作,用fgetc函數(shù)從文件讀取數(shù)據(jù),再用putchar函數(shù)將數(shù)據(jù)顯示到屏幕。圖3-5顯示函數(shù)流程圖統(tǒng)計(jì)單詞流程圖從文件中讀取字符串,存到數(shù)組中。接著從字符串中讀取一個(gè)英文單詞,出來(lái)與要統(tǒng)計(jì)的單詞比擬〔strcmp函數(shù)〕,定義一個(gè)計(jì)數(shù)的變量實(shí)現(xiàn)記錄單詞出現(xiàn)的次數(shù)。 圖3-6統(tǒng)計(jì)單詞流程圖第四章軟件使用說(shuō)明4.1進(jìn)入界面輸入0—5,實(shí)現(xiàn)不同功能。圖4-1假設(shè)輸入錯(cuò)誤,重新輸入。圖4-24.2加密文件輸入要加密文件名,文檔內(nèi)容。圖4-3圖4-4圖4-54.3解密文件輸入進(jìn)入系統(tǒng)密碼圖4-6圖4-7圖4-8圖4-9圖4-104.4顯示文件圖4-114.5統(tǒng)計(jì)單詞個(gè)數(shù)圖4-12第五章課程設(shè)計(jì)心得與體會(huì)5.1關(guān)于對(duì)程序編寫的心得這個(gè)程序看起來(lái)挺簡(jiǎn)單的,但對(duì)于對(duì)C語(yǔ)言還是初學(xué)者的我,還是顯得有些難度的。在編寫的過程中,由于粗心經(jīng)常出現(xiàn)一些比擬簡(jiǎn)單的錯(cuò)誤,比方遺漏逗號(hào)、雙引號(hào)、小括號(hào),以及工程名稱,從而導(dǎo)致出現(xiàn)亂碼。C編譯的程序?qū)φZ(yǔ)法檢查并不象其它高級(jí)語(yǔ)言那么嚴(yán)格,這就給編程人員留下“靈活的余地”,但還是由于這個(gè)靈活給程序的調(diào)試帶來(lái)了許多不便,尤其對(duì)初學(xué)C語(yǔ)言的人來(lái)說(shuō),經(jīng)常會(huì)出一些連自己都不知道錯(cuò)在哪里的錯(cuò)誤??粗绣e(cuò)的程序,不知該如何改起!但是,通過上網(wǎng)查詢還有在老師、學(xué)長(zhǎng)和同學(xué)的幫助下,我最終還是完成了程序的編寫。5.2對(duì)于課程設(shè)計(jì)的心得體會(huì)經(jīng)過三周的編程設(shè)計(jì),我認(rèn)識(shí)到編程是一項(xiàng)很慎密的工作,來(lái)不得一點(diǎn)馬虎,否那么就會(huì)給編程工作帶來(lái)很多不必要的麻煩。這次的課程設(shè)計(jì)加深了我對(duì)C語(yǔ)言的理解,并且提高了我查閱相關(guān)參考資料和獨(dú)立分析解決問題以及自己上機(jī)動(dòng)手的能力。課程設(shè)計(jì)為學(xué)生提供了一個(gè)既動(dòng)手又動(dòng)腦,獨(dú)立實(shí)踐的時(shí)機(jī),將課本上的理論知識(shí)和實(shí)際有機(jī)的結(jié)合起來(lái),鍛煉學(xué)生的分析解決實(shí)際問題的能力。應(yīng)實(shí)際,實(shí)踐編程的能力。附錄1:參考文獻(xiàn)1.譚浩強(qiáng):C程序設(shè)計(jì),清華大學(xué)出版社,2005年7月第三版2.譚浩強(qiáng):C++程序設(shè)計(jì),清華大學(xué)出版社,2004年6月第一版3.譚浩強(qiáng),張基溫,唐永炎:編著,C語(yǔ)言程序設(shè)計(jì)教程.北京:高等教育出版社,19924.譚浩強(qiáng):C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)〔第二版〕.北京:清華大學(xué)出版社1999附錄2:程序代碼#include<stdio.h>#include<stdlib.h>#include<string.h>#include<ctype.h>#include<conio.h>#defineM20/*宏定義文件名字符串?dāng)?shù)組大小*/#defineN20/*宏定義解密碼字符串?dāng)?shù)組大小*/#defineW20/*宏定義單詞字符串?dāng)?shù)組大小*/#defineF1000/*宏定義文件讀取字符串?dāng)?shù)組大小*/#defineE3/*宏定義解密系統(tǒng)密碼輸入次數(shù)*/charmina[]="ulinchen";/*初始化解密系統(tǒng)進(jìn)入密碼*/voidmenu(void);/*主菜單*/voidshuru(void);/*輸入*/voidjiami(void);/*加密*//*函數(shù)原型*/voidjiemi(void);/*解密*/voidshow(void);/*顯示*/voidcount(void);/*統(tǒng)計(jì)單詞數(shù)*/intjudge(void);/*是否繼續(xù)判斷函數(shù)*/main(){charnum;while(1){menu();/*顯示主菜單*/scanf("%c",&num);/*輸入數(shù)字0--5*/fflush(stdin);/*去除數(shù)據(jù)流,防止惡意輸入字符串,直接操作以第一個(gè)字符后面字符串為名的文件*/switch(num)/*選擇語(yǔ)句*/{case'0':/*選擇0*/printf("\n");exit(0);case'1':/*選擇1*/system("cls");shuru();/*輸入*/printf("\n按任意鍵返回主菜單");break;case'2':/*選擇2*/system("cls");jiami();/*加密*/printf("\n按任意鍵返回主菜單");break;case'3':/*選擇3*/system("cls");jiemi();/*解密*/printf("\n按任意鍵返回主菜單");break;case'4':/*選擇4*/system("cls");show();/*顯示*/printf("\n按任意鍵返回主菜單");break;case'5':/*選擇5*/system("cls");count();/*統(tǒng)計(jì)單詞數(shù)*/printf("\n按任意鍵返回主菜單");break;default:/*輸入錯(cuò)誤*/printf("\n\t\t輸入錯(cuò)誤,請(qǐng)重新輸入。(按任意鍵返回主菜單)");break;}getch();/*等待輸入,是界面停留*/fflush(stdin);/*去除數(shù)據(jù)流*/system("cls");/*清屏*/}}voidmenu(void)/*主菜單函數(shù)*/{printf("\n\n");printf("\t********************************************************\n");printf("\t**\n");printf("\t*1--輸入2--加密3--解密4--顯示5--統(tǒng)計(jì)0--退出*\n");printf("\t**\n");printf("\t********************************************************\n");printf("\n\n");printf("\t0.退出系統(tǒng)。、\n");printf("\t1.輸入信息,并寫入數(shù)據(jù)文件。\n");printf("\t2.對(duì)給定的文件進(jìn)行加密。\n");printf("\t3.對(duì)給定的文件進(jìn)行解密。\n");printf("\t4.顯示文本文件的內(nèi)容。\n");printf("\t5.統(tǒng)計(jì)某單詞在文件中出現(xiàn)的次數(shù)。\n");printf("\n\n");printf("\t請(qǐng)選擇〔0--5〕:");}voidshuru(void)/*輸入函數(shù)*/{FILE*fp;intx=1;/*定義x=1,輸入*/charch,fname[M];while(x){printf("\n\n鍵入要輸入信息的文件名:");scanf("%s",fname);/*輸入文件名*/if((fp=fopen(fname,"w"))==NULL)/*假設(shè)不能翻開*/{printf("存儲(chǔ)空間缺乏!!!\n");exit(0);}else{printf("請(qǐng)輸入文檔的內(nèi)容:(以Ctrl+z結(jié)束)\n");fflush(stdin);while((ch=getchar())!=EOF)fputc(ch,fp);fclose(fp);}printf("\n文檔輸入并保存成功!");printf("繼續(xù)創(chuàng)立文件并輸入信息?〔按Y繼續(xù)〕");x=judge();}}voidjiami(void)/*加密函數(shù)*/{FILE*fp,*fp1;charc,pd,fname[M];intx=1;while(x){printf("\n\n鍵入要加密的文件名稱:");scanf("%s",fname);if((fp=fopen(fname,"r"))==NULL){printf("\n此文件未能翻開,重新輸入〔按Y〕?");fflush(stdin);x=judge();}else{if(!fseek(fp,-(long)sizeof(char),SEEK_END))pd=fgetc(fp);/*判斷文件是否已進(jìn)行加密步驟*/if(pd=='$'){printf("\n文件已使用本程序加密!!!");printf("重新輸入要加密的文件名〔按Y〕?");x=judge();fclose(fp);}else{rewind(fp);if((fp1=fopen("jiami.txt","w"))==NULL){printf("存儲(chǔ)空間缺乏!!!\n");exit(0);}printf("\n加密后的文檔:\n\n");while((c=fgetc(fp))!=EOF){fputc(c+520,fp1);/*加密公式“c+520”*/putchar(c+520);}fclose(fp);fclose(fp1);fp1=fopen("jiami.txt","a");fputc('$',fp1);fclose(fp1);remove(fname);/*刪除被加密的原文件*/rename("jiami.txt",fname);/*加密后的文件名更改為原文件名*/printf("\n\n文檔加密并保存成功!");printf("繼續(xù)加密文件?〔按Y繼續(xù)〕");x=judge();}}}}voidjiemi(void)/*解密函數(shù)*/{FILE*fp,*fp1;charc,pd,fname[M],mm[N],mima[N];intx=1,y=1,z=0;while(y){system("cls");printf("\n\n請(qǐng)輸入進(jìn)入解密系統(tǒng)的密碼:");scanf("%s",mm);if(strcmp(mm,mima)==0)/*驗(yàn)證密碼,判斷字符串是否相等*/{y=0;while(x){fflush(stdin);printf("\n\n鍵入要解密的文件名稱:");scanf("%s",fname);if((fp==fopen(fname,"r"))==NULL){printf("\n此文件未能翻開,重新輸入〔按Y〕?");fflush(stdin);x=judge();}else{if(!fseek(fp,-(long)sizeof(char),SEEK_END))pd=fgetc(fp);if(pd!='$'){printf("\n文件未曾使用本程序加密!!!");printf("重新輸入要加密的文件名〔按Y〕?");x=judge();fclose(fp);}else{rewind(fp);if((fp1=fopen("jiemi.txt","w"))==NULL){printf("存儲(chǔ)空間缺乏!!!\n");exit(0);}printf("\n解密后的文檔:\n\n");while((c=fgetc(fp))!='$'){fputc(c-520,fp1);putchar(c-520);}x=0;fclose(fp);fclose(fp1);remove(fname);/*刪除被解密的文件*/rename("jiemi.txt",fname);/*解密后的文件名更改為原文件名*/printf("\n\n文檔解密并保存成功!");printf("繼續(xù)解密文件?〔按Y繼續(xù)〕");x=judge();}}}}else{printf("\n\n密碼輸入有誤!\n");printf("\n重新輸入密碼?〔按Y重新輸入〕\n");y=judge();z++;if(z==E){printf("\n對(duì)不起,您輸入錯(cuò)誤次數(shù)太多,請(qǐng)仔細(xì)回想密碼!\n");y=0;}}}}voidshow(void)/*顯示函數(shù)*/{FILE*fp;charfname[M];intx=1;while(x){printf("\n\n鍵入要顯示的文件名稱:");scanf("%s",fname);if((fp=fopen(fname,"r"))==NULL){printf("\n此文件未能翻開,重新輸入〔按Y〕?");x=judge();}else{printf("\n%s的內(nèi)容是:\n\n",fname);while(!feof(fp))/*判斷是否為文件末尾*/putchar(fgetc(fp));printf("\n");fclose(fp);printf("\n繼續(xù)顯示文件〔按Y繼續(xù)〕?");x=judge();}}}voidcount(void)/*統(tǒng)計(jì)單詞數(shù)函數(shù)*/{charfname[M],word[W],/*要統(tǒng)計(jì)的單詞*/str[F],/*保存文檔內(nèi)容*/nword[M];/*從內(nèi)容讀取的單詞*/inti=0,j,z=0,count=0,x=1,t;FILE*fp;while(x){printf("\n\n鍵入要查找單詞的文件名稱:");scanf("%s",fname);if((fp=fopen(fname,"r"))==NULL){

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論