c++課程設(shè)計(jì) (16)
《c++課程設(shè)計(jì) (16)》由會(huì)員分享,可在線閱讀,更多相關(guān)《c++課程設(shè)計(jì) (16)(22頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、 遼 寧 工 業(yè) 大 學(xué) 《C++語言程序設(shè)計(jì)》課程設(shè)計(jì)(論文) 題目: 保密文件加密處理 院(系): 軟 件 學(xué) 院 專業(yè)班級: 113班 學(xué) 號: 111301073 學(xué)生姓名: 教師職稱: 副教授 起止時(shí)間:2011.12.20-2011.12.31 課程設(shè)計(jì)(論文)任務(wù)及評語 院(系):軟件學(xué)院 教研室:軟件教研室
2、 學(xué) 號 111301073 軟件工程113 課程設(shè)計(jì)(論文)題目 保密文件加密處理 課程設(shè)計(jì)(論文)任務(wù) (1). 掌握面向?qū)ο蟪绦蛟O(shè)計(jì)語言C++的基本語法 (2). 掌握C++面向?qū)ο笤O(shè)計(jì)的思想 (3). 掌握VC++6.0與DEV C++ 開發(fā)工具的使用 (4). 運(yùn)用標(biāo)準(zhǔn)C++規(guī)范設(shè)計(jì)應(yīng)用程序 設(shè)計(jì)過程中,要嚴(yán)格遵守設(shè)計(jì)的時(shí)間安排,聽從指導(dǎo)教師的指導(dǎo)。正確地完成上述內(nèi)容,規(guī)范完整地撰寫出設(shè)計(jì)報(bào)告。 指導(dǎo)教師評語及成績 成績: 指導(dǎo)教師簽
3、字: 年 月 日 目 錄 第1章 課程設(shè)計(jì)目的與要求 1 1.1 課程設(shè)計(jì)目的 1 1.2 課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境 1 1.3 課程設(shè)計(jì)的預(yù)備知識(shí) 1 1.4 課程設(shè)計(jì)要求 1 第2章 課程設(shè)計(jì)內(nèi)容 3 2.1 C++語言程序設(shè)計(jì)------《多功能資料加密軟件》問題分析。 3 2.1.1 功能分析 3 2.1.1算法設(shè)計(jì)及程序設(shè)計(jì)中技術(shù)重點(diǎn) 3 2.2 程序中涉及的類的UML類圖和主要函數(shù)流程圖或框圖。 4 2.2.1音樂類(class
4、Music) 6 2.2.2修改密碼類( class XiuGaipassword) 6 2.3 程序源代碼 7 2.3.1建立音樂類(class Music)代碼 7 2.3.2建立修改密碼類( class XiuGaipassword)代碼 11 第3章 課程設(shè)計(jì)總結(jié) 18 參考文獻(xiàn) 19 第一章 課程設(shè)計(jì)目的與要求 1.1 課程設(shè)計(jì)目的 將理論教學(xué)中涉及到的知識(shí)點(diǎn)貫穿起來,對不同的數(shù)據(jù)類型、程序控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)作一比較和總結(jié),結(jié)合設(shè)計(jì)題目進(jìn)行綜合性應(yīng)用,對所學(xué)知識(shí)達(dá)到融會(huì)貫通的程度。 通過課程設(shè)計(jì),學(xué)生在下述各方面的能力應(yīng)該得到鍛煉:
5、 (1)進(jìn)一步鞏固、加深學(xué)生所學(xué)專業(yè)課程《C++語言教程》的基本理論知識(shí),理論聯(lián)系實(shí)際,進(jìn)一步培養(yǎng)學(xué)生綜合分析問題,解決問題的能力。 (2)全面考核學(xué)生所掌握的基本理論知識(shí)及其實(shí)際業(yè)務(wù)能力,從而達(dá)到提高學(xué)生素質(zhì)的最終目的。 (3)利用所學(xué)知識(shí),開發(fā)小型應(yīng)用系統(tǒng),掌握運(yùn)用C++語言編寫調(diào)試應(yīng)用系統(tǒng)程序,訓(xùn)練獨(dú)立開發(fā)應(yīng)用系統(tǒng),進(jìn)行數(shù)據(jù)處理的綜合能力。 (4)對于給定的設(shè)計(jì)題目,如何進(jìn)行分析,理清思路,并給出相應(yīng)的數(shù)學(xué)模型。 (5)掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的方法。 (6)熟練掌握C++語言的基本語法,靈活運(yùn)用各種數(shù)據(jù)類型。 (7)進(jìn)一步掌握在集成環(huán)境下如何調(diào)試程序(單步調(diào)試,設(shè)置斷
6、點(diǎn)、觀察表達(dá)式,分塊調(diào)試)和修改程序。 1.2 課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境 硬件要求能運(yùn)行Windows 操作系統(tǒng)的微機(jī)系統(tǒng)。C++語言應(yīng)用程序開發(fā)軟件使用:VC++ 系統(tǒng),或其他C++語言應(yīng)用程序開發(fā)軟件。 1.3 課程設(shè)計(jì)的預(yù)備知識(shí) 熟悉C++語言程序設(shè)計(jì)的基本知識(shí)及VC++編輯器的使用方法。 1.4 課程設(shè)計(jì)要求 仔細(xì)分析設(shè)計(jì)題目,畫出程序流程圖,編寫程序源代碼。 積極上機(jī)調(diào)試源程序,增強(qiáng)編程技巧與調(diào)程能力。 認(rèn)真書寫課程設(shè)計(jì)預(yù)習(xí)報(bào)告,課程設(shè)計(jì)說明書。 遵守課程設(shè)計(jì)要求和機(jī)房管理制度,服從指導(dǎo)教師的安排,確保課程設(shè)計(jì)的順利完成課程設(shè)計(jì)內(nèi)容。
7、 第二章 課程設(shè)計(jì)內(nèi)容 2.1 C++語言程序設(shè)計(jì)------《保密文件加密處理》問題分析。 2.1.1 功能分析 (1)使用本程序需要登錄用戶名和密碼,而用戶名和密碼都存放在改程序當(dāng)前目錄的配置文件conf.txt中,配置文件中的密碼是以密文的形式存放的。如果配置文件丟失,也可以使用本程序的默認(rèn)用戶名和密碼admin登錄。 (2)登錄本程序后,在主菜單中可以選擇文件寫入,書寫自己的文章并以密文的形式存放在本程序當(dāng)前目錄story.txt中。也可以選擇讀取story.txt中的內(nèi)容顯示在屏幕上。 (3)在你
8、工作煩躁的時(shí)候,你可通過試聽本程序的一些音樂,一次放松工作情緒。選擇音樂試聽,可以使用選擇是否安裝本程序提供的播放器。由于是單線程,在程序同步執(zhí)行時(shí)可能有些瑕疵,請諒解。 (4)選擇修改用戶名和密碼選項(xiàng),可以對本程序的配置文件進(jìn)行修改,修改后的用戶名以明文的形式存放到配置文件中,密碼以密文的形式存放在配置文件中。2.1.2 算法設(shè)計(jì)及程序設(shè)計(jì)中技術(shù)重點(diǎn) 2.1.1算法設(shè)計(jì)及程序設(shè)計(jì)中技術(shù)重點(diǎn) 本程序具有面向?qū)ο蟮乃囊兀侯悾瑢ο?,繼承,多態(tài)。所以,本程序是一個(gè)完備的面向?qū)ο蟮某绦蛟O(shè)計(jì)。 本程序的設(shè)計(jì)亮點(diǎn)是,如果在輸出的屏幕上進(jìn)行退格刪除,以及如何在輸出屏幕上進(jìn)行輸出掩蓋,如何讀取配置文
9、件中的用戶名和加密后的密碼,如何將修改后的用戶名和密碼(加密后)寫入到配置文件中,以及在配置文件丟失的情況下是如何轉(zhuǎn)入默認(rèn)配置的狀態(tài),修改用戶名和密碼時(shí),需要重新確認(rèn)(二次輸入)。將輸入的內(nèi)容加密后寫入文件進(jìn)行保存,將輸入的內(nèi)容進(jìn)行字?jǐn)?shù)統(tǒng)計(jì)。 在本程序中使用了return,continue,break以及輸出字符掩蓋等語句的組合,文件的加密與解密的計(jì)算。所用最多的是WHILE循環(huán)結(jié)構(gòu)和IF語句以及系統(tǒng)函數(shù)system,然而這也正為了它的特色。循環(huán)體的嵌套思路清晰,目的明確,格式規(guī)范,易于閱讀和理解。 If語句的逐層運(yùn)用,正形象化的描述了計(jì)算機(jī)工作流程,而且與人的一般習(xí)慣相吻合,簡單明了,易
10、于觀察理解它的來龍去脈,思路清晰直觀。 2.2 程序中涉及的類的UML類圖和主要函數(shù)流程圖或框圖。 END 開始 Y 判斷配置文件是否存在 N 輸入 輸入
11、 判斷用戶名和密碼 N N 判斷默認(rèn)用戶名和密碼 處理菜單選擇 處理菜單選擇 處 處 處
12、 處 處 處 理 理 理 理 理 理 1 2 3 4 5 6 Music - static ch,bh:char - static k,i:int + static ShiTing():void
13、 XiuGaipassword -static UserName[50],UserName1[50]:char -static MiMa[50],MiMa1[50]:char + static XiuGai():void File -static i,k:int -static ch[N],bh[N],g:char +static Writ():void +static Read():void Mm +static Zmenu():void +static Mmusic():void
14、 Choice -static ch:char +static XuanZe():void +static Xmusic():void User -static TuserName[50],TpassWord[50]:char -static GuserName[50],GuserWord[50]:char -static MoRenUserName[6],MoRenPassWord[6]:char -static i,j,k:int -static ch:char +static DengLu():void
15、 +User(int) +User() +~User() 2.2.1音樂類(class Music) 此模塊中定義了ShiTing函數(shù),其主要功能是,根據(jù)用戶的選擇做出相應(yīng)的操作,是否需要安裝播放器,以及試聽音樂。 簡介: class Music { public: static void ShiTing(); //定義音樂試聽函數(shù) private: static char ch; //定義靜態(tài)私有字符變量 ch static i
16、nt k,i; //定義靜態(tài)私有整型變量I,k static char bh; //定義靜態(tài)私有字符變量bh }; 本類定義了靜態(tài)成員函數(shù)Shiting,和成員變量ch,bh,i,k Shiting()成員函數(shù)提供對歌曲的各種操作,以及提供安裝播放器的功能。 2.2.2修改密碼類( class XiuGaipassword) 此模塊中定義了XiuGai函數(shù),此函數(shù)的功能是修改用戶名和用戶密碼,當(dāng)用戶修改密碼時(shí),將用戶名和密碼的格式進(jìn)行驗(yàn)證,并將用戶密碼進(jìn)行二次驗(yàn)證。并將修改后的用戶名以
17、明文的形式存放到conf.txt中,將修改后的密碼以密文的形式存放到conf.txt中。 簡介: class XiuGaipassword { public: static void XiuGai(); //定義修改功能函數(shù) private: static char UserName[50]; //存放用戶名的字符數(shù)組 static char UserName1[50]; //存放輸入用戶名的字符數(shù)組 static char
18、 MiMa[50],MiMa1[50]; //存放密碼的字符數(shù)組
static int i,k; //靜態(tài)成員
};
本類定義有UserName,UserName1,MiMa,MiMa1,i,k等靜態(tài)成員變量
2.3 程序源代碼
2.3.1建立音樂類(class Music)代碼
//Music.h
#include
19、oice.h" using namespace std; class Music { public: static void ShiTing(); //定義音樂試聽函數(shù) private: static char ch; static int k,i; static char bh; }; //Music.cpp #include"Music.h" void Music::ShiTing() { static char ch; static char bh; static int k=0,i=0; whi
20、le(1) { if(k==0) { system("cls"); printf("是否需要本程序?yàn)槟惭b音樂播放器?\n是 Y 否 N\n"); bh=getch(); while(1) { if(bh==Y || bh==N || bh==n || bh==y) { k=1; break; } else printf("\n請輸入 Y 或 N\n"); bh=getch(); } if(bh==Y || bh==y) //打開程序包,并延時(shí)
21、 { system("mic\\setup.exe"); printf("\n稍后."); for(i=0;i<=400000000;i++); printf("."); for(i=0;i<=400000000;i++); printf("."); for(i=0;i<=400000000;i++); printf("."); for(i=0;i<=400000000;i++); printf("."); for(i=0;i<=400000000;i++); printf("."); for(i=0;i<=40
22、0000000;i++); printf("."); for(i=0;i<=400000000;i++); printf(".\n\nOK! 四秒后選擇歌曲!"); for(i=0;i<=600000000;i++); } } Mm::Mmusic(); ch=ChoiceMusic::Xmusic(); //音樂菜單 switch(ch) {case1:system("mic\\kisstherain.mp3");break; //根據(jù)輸入大開相應(yīng)的文件
23、 case 2:system("mic\\天空之城.mp3");break; case 3:system("mic\\我相信.mp3");break; case 4:system("mic\\farawayformhome.mp3");break; case 5:system("mic\\myheartwillgoon.mp3");break; case 6:system("mic\\宣言.mp3");break; case 7:return; case 0:exit(0); } } } 2.3.2建立修改密碼類( c
24、lass XiuGaipassword)代碼
//XiuGaipassword.h
#include
25、 //定義存放用戶名的字符數(shù)組 static char UserName1[50]; static char MiMa[50],MiMa1[50]; //定義存放密碼的字符數(shù)組 static int i,k; }; #include"XiuGaipassword.h" void XiuGaipassword::XiuGai() { FILE *f; static char UserName1[50]={0}; static char MiMa[50]="password:";
26、 //將給數(shù)組進(jìn)行初始化 static char MiMa1[50]="password:"; static char UserName[50]="username:"; static int i=9,k=0; //將初始變量初始化 system("cls"); cout<<"輸入自己的新用戶名(5位)#號結(jié)束:"; while(1) { for(i=9;i<17;) { UserName[i]=getch();
27、 //將輸入的字符用*掩蓋
if(UserName[i]==8 )
{
if(i!=9)
{
UserName[i]=\0;
i--;
putchar(8);
cout<<" ";
putchar(8);
}
}
else
{
if(UserName[i]==#) //以#號結(jié)束輸入
{
UserName[i]=\n;
UserName[i+1]=\0;
break;
}
cout< 28、 //通過i的值來判斷上述的UserName是否符合標(biāo)準(zhǔn)
{
system("cls");
cout<<"用戶名位數(shù)不正確!"< 29、 for(i=9;i<17;)
{
MiMa[i]=getch();
if(MiMa[i]==8 )
{
if(i!=9)
{
MiMa[i]=\0;
i--;
putchar(8);
cout<<" ";
putchar(8);
}
}
else
{
if(MiMa[i]==#)
{
MiMa[i]=\0;
break;
}
cout<<*;
i++;
}
}
if(i!=14)
{
system("cls");
cout<<"密碼位數(shù)不正確!"< 30、{
MiMa[i]=\0;
break;
}
}
cout< 31、
MiMa1[i]=\0;
break;
}
cout<<*;
i++;
}
}
for(k=0;MiMa[k]!=\0;k++)
{
if(MiMa1[k]!=MiMa[k])
{
k=0;
break;
}
}
if(k==0)
{
system("cls");
cout<<"兩次密碼不一致!"< 32、 //次循環(huán)為給要輸入正確的密碼加密
{
MiMa1[i]=(~MiMa[i]);
}
strcat(UserName,MiMa1);
if(f=fopen("conf.txt","w"))==NULL)
{
cout<<"修改出錯(cuò)!!";
exit(0);
}
fputs(UserName,f); //將加密后的密碼以及明文的用戶名寫入conf.txt
fclose(f);
cout< 33、}
第三章 課程設(shè)計(jì)總結(jié)
經(jīng)過半年的學(xué)習(xí)和實(shí)踐,使我對C++語言有了更認(rèn)識(shí)和和了解,要想學(xué)好它要重在實(shí)踐,要通過不斷的上機(jī)操作才能更好的學(xué)習(xí)它,通過實(shí)踐,我也發(fā)現(xiàn)我的好多不足之處,對各種控制結(jié)構(gòu)及語句、數(shù)組的基本與高級應(yīng)用、指針數(shù)組、字符數(shù)組、動(dòng)態(tài)數(shù)組、函數(shù)的定義、調(diào)用方式;函數(shù)在編程中的具體應(yīng)用;以及變量存儲(chǔ)特征與標(biāo)識(shí)符的作用域,通過實(shí)踐,使我在這些方面有了認(rèn)識(shí)和提高。課程設(shè)計(jì)它是一項(xiàng)任務(wù),更是一種挑戰(zhàn)和歷練。在課程設(shè)計(jì)中,為了使用時(shí)方便,著重對不足方面的知識(shí)進(jìn)行了分析與理解,在這一過程中對文件的操作有了很大的提高。通過實(shí)際的演練,可以增強(qiáng)對知識(shí)的理解和運(yùn)用能力。
34、
參考文獻(xiàn)
1. 徐孝凱 編著 《C++語言程序設(shè)計(jì)》 北京:清華大學(xué)出版社,2005:301頁
2. 黃迪明 主編 《C++語言程序設(shè)計(jì)基礎(chǔ)》 北京:電子工業(yè)出版社, 2003:210頁
3. 錢能 主編 《C++程序設(shè)計(jì)教程》 北京:清華大學(xué)出版社 ,2004:430頁
4. 鄭莉、董淵 編著 《C++語言程序設(shè)計(jì)》 北京:清華大學(xué)出版社,2004:240頁
5. 吳訪升 編著 《C++程序設(shè)計(jì)》 北京: 機(jī)械工業(yè)出版社 ,2007:320頁
6. Decoder 主編 《C/C++程序設(shè)計(jì)》 北京:中國鐵道出版社,2006:330頁
7. 鄭莉 主編《c++語言程序設(shè)計(jì)(第三版) 》 北京:清華大學(xué)出版社,2004:273頁
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識(shí)競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案