《c++语言程序设计》课程设计--保密文件加密处理.docx
辽宁工业大学?C+语言程序设计?课程设计(论文)题目:保密文件加密处理院(系):软件学院专业班级:113班学号:1113O1O73学生姓名:教师职称:副教授起止时间:2011.12.20-2011.12.31课程设计(论文)任务及评语院(系):软件学院教研室:软件教研室学号111301073软件工程113课程设计(论文)题目保密文件加密处理课程设计论文任务(1) .掌握面向对象程序设计语言C+的基本语法(2) .掌握C+面向对象设计的思想(3) .掌握VC+6.O与DEVC÷+开发工具的使用(4) .运用标准C+标准设计应用程序设计过程中,要严格遵守设计的时间安排,听从指导教师的指导。正确地完成上述内容,标准完整地撰写出设计报告。指导教师评语及成绩成绩:指导教师签字:年月日Wd第1章课程设计目的与要求O1. 1课程设计目的O1.2 课程设计的实验环境11.3 课程设计的预备知识11.4 课程设计要求1第2章课程设计内容21.5 C+语言程序设计?多功能资料加密软件?问题分析。22. 1.1功能分析22.1.1算法设计及程序设计中技术重点22.2程序中涉及的类的UML类图和主要函数流程图或框图。32.2.1音乐类(classMusic)32.2.2修改密码类(classXiuGaipassword)42.3程序源代码42.3.1建设音乐类(classMusic)代码42.3.2建设修改密码类(classXiUGaiPaSSWord)代码7第3章课程设计总结13参考文献13第一章课程设计目的与要求1.l课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制构造、数据构造作一比较和总结,结合设计题目进展综合性应用,对所学知识到达融会贯穿的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步稳固、加深学生所学专业课程?C+语言教程?的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而到达提高学生素质的最终目的。(3)利用所学知识,开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进展数据处理的综合能力。(4)对于给定的设计题目,如何进展分析,理清思路,并给出相应的数学模型。(5)掌握面向对象程序设计的方法。(6)熟练掌握C+语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。1.2 课程设计的实验环境硬件要求能运行WindoWS操作系统的微机系统。C+语言应用程序开发软件使用:vc÷÷系统,或其他C+语言应用程序开发软件。1.3 课程设计的预备知识熟悉C+语言程序设计的基本知识及VC+编辑器的使用方法。1.4 课程设计要求仔细分析设计题目,画出程序流程图,编写程序源代码。积极上机调试源程序,增强编程技巧与调程能力。认真书写课程设计预习报告,课程设计说明书。遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容。第二章课程设计内容1.1 C+语言程序设计?保密文件加密处理?问题分析。1.1.1 功能分析(1)使用本程序需要登录用户名和密码,而用户名和密码都存放在改程序当前目录的配置文件conf,txt中,配置文件中的密码是以密文的形式存放的。如果配置文件丧失,也可以使用本程序的默认用户名和密码admin登录。(2)登录本程序后,在主菜单中可以选择文件写入,书写自己的文章并以密文的形式存放在本程序当前目录story.txt中。也可以选择读取story.txt中的内容显示在屏幕上。(3)在你工作烦躁的时候,你可通过试听本程序的一些音乐,一次放松工作情绪。选择音乐试听,可以使用选择是否安装本程序提供的播放器。由于是单线程,在程序同步执行时可能有些瑕疵,请谅解。(4)选择修改用户名和密码选项,可以对本程序的配置文件进展修改,修改后的用户名以明文的形式存放到配置文件中,密码以密文的形式存放在配置文件中。2.1.2算法设计及程序设计中技术重点1.1.2 算法设计及程序设计中技术重点本程序具有面向对象的四要素:类,对象,继承,多态。所以,本程序是一个完备的面向对象的程序设计。本程序的设计亮点是,如果在输出的屏幕上进展退格删除,以及如何在输出屏幕上进展输出掩盖,如何读取配置文件中的用户名和加密后的密码,如何将修改后的用户名和密码(加密后)写入到配置文件中,以及在配置文件丧失的情况下是如何转入默认配置的状态,修改用户名和密码时,需要重新确认(二次输入)。将输入的内容加密后写入文件进展保存,将输入的内容进展字数统计。在本程序中使用了return,continue,break以及输出字符掩盖等语句的组合,文件的加密与解密的计算。所用最多的是WHlLE循环构造和IF语句以及系统函数system,然而这也正为了它的特色。循环体的嵌套思路清晰,目的明确,格式标准,易于阅读和理解。If语句的逐层运用,正形象化的描述了计算机工作流程,而且与人的一般习惯相吻合,简单明了,易于观察理解它的来龙去脉,思路清晰直观。1.2 程序中涉及的类的UML类图和主要函数流程图或框图。Y判断配置文件是否存在开场输入输入判断用户名和密码NN判断默认用户名和密处理菜单项选择择处理菜单项选择于处处处处处处理理理理理理V1 23456static void ShiTingO ;定义音乐试听函数static char ch;Stati c i ntk, , static char bh;private:定义静态私有字符变量chI力定义静态称有整型变量I,k定义静态私有字符变量bhEND;本类定义了静态成员函数Shiting,和成员变量ch,bh,i,kShiting()成员函数提供对歌曲的各种操作,以及提供安装播放器的功能。2. 2.2修改密码类(classXiuGaipassword)此模块中定义了XiuGai函数,此函数的功能是修改用户名和用户密码,当用户修改密码时,将用户名和密码的格式进展验证,并将用户密码进展二次验证。并将修改后的用户名以明文的形式存放到Conf.txt中,将修改后的密码以密文的形式存放到COnf.txt中。简介:classXiuGaipassword(public:staticvoidXiuGaiO;定义修改功能函数private:staticcharUserName50;存放用户名的字符数组staticcharUSerNamel50;存放输入用户名的字符数组staticcharMiMa50,MiMal50;存放密码的字符数组staticinti,k;静态成员);本类定义有USerName,UserNamel,MiMa,MiMal,i,k等静态成员变量3. 3程序源代码4. 3.1建设音乐类(classMusic)代码/Music.hSinclude<iostream>include<stdlib.h>include<conio.h>include<string>SincludezzChoice.husingnamespacestd;classMusic(public:staticvoidShiTingO;定义音乐试听函数private:staticcharch;staticintk,i;staticcharbh;;/Music,cppincludez,Music.h"voidMusic:ShiTing()(staticcharch;staticcharbh;staticintk=0,i=0;while(1)(if(k=0)(SySten("cis");Printf(是否需要本程序为您安装音乐播放器n是Y否Nn);bh=getch();while(1)if(bh=三,Y,IIbh=三,N,bh=三,n,bh=三,y,)k=l;break;)elsePrintf("n请输入Y或Nn");bh=getch();)if(bh=三,Y,IIbh=三,y,)(system(zzmicsetup.exe,z);printf(zzn稍后.”);for(i=O;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<=400000000;i÷+);printf(.);for(i=0;i<=400000000;i+);printf.nnOK!四秒后选择歌曲!);for(i=0;i<=600000000;i+);)Mm:Mmusic();ch=ChoiceMusic:Xmusic();翻开程序包,并延时音乐菜单switch(ch)case,:system(,mickisstherain.mp3zz);break;根据输入大开相应的文件case,2,:SyStem("mic天空之城.mp3");break;case'3':SyStem("mic我相信.mp3");break;case'4':system(,icfarawayformhome.mp3z/);break;case,5,:system(z,micmyheartwiIlgoon.mp3");break;case,6,:system(zzmic.mp3zz);break;case,7,:return;case'0,:exit(O);)2.3.2建设修改密码类(classXiUGaiPaSSWOrd)代码/XiuGaipassword.httinclude<stdlib.h>ttinclude<conio.h>ttinclude<iostream>ttinclude<string>usingnamespacestd;classXiuGaipassword(public:定义修改功能函数定义存放用户名的字符数定义存放密码的字符数staticvoidXiuGai();private:staticcharUserName50;组staticcharUserNamel50;staticcharMiMa50,MiMal50;staticinti,k;);#incIudezzXiuGaipassworcl.hvoidXiuGaipassworcl:XiuGai()(FILE*f;staticcharUserNamel50=0;staticcharMiMa50="PaSSWord:"将给数组进展初始化staticcharMiMaI50=PaSSWord:"staticcharUserName50=z,username:;staticinti=9,k=0;将初始变量初始化SySten("cis");COUt。输入自己的新用户名(5位)首号完毕:"while(1)(for(i=9;i<17;)(UserNamei=getch();将输入的字符用*掩盖if(UserNamei=8)(if(i!=9)(UserNamei三,0,;i;putchar(8);cout<<zr"putchar(8);)elseif(UserNamei=三,tt,)以#号完毕输入UserNamei=,11,;UserNamei+l三,0,;break;)cout<<UserNamei;i+÷)if(i!=14)通过i的值来判断上述的USerName是否符合标准(SyStem("cls);CoUt«用户名位数不正确!”<<endk<请重新输入首号完毕:;)else(UserNamei=,n;UserNamei+l三,0,;break;)i=9,k=0;system(zzclszz);COUt«请输入5位新密码#号完毕:;While(I)次循环为密码输入程序段while(1)for(i=9;i<17;)MiMai=getch();if(MiMai=8)(if(i!=9)(MiMai三,0,;i;putchar(8);COUt<<";putchar(8);)else(if(MiMai=,#')(MiMai=0,;break;)cout<<,*'i+;)if(i!=14)(system(,c1szz);CoUt<<密码位数不正确!“<<endk<请重新输入以#号完毕;)elseMiMai=,0,;break;)COUt<<endl<<"再次确认密码以#号完毕:“;while(l)次循环为确认输入的密码段(for(i=9;i<17;)(MiMali=getch();if(MiMali=8)(if(i!=9)(MiMali=0,;i;putchar(8);COUt<<”"putchar(8);)else(if(MiMali=,#')MiMali,0,;break;cout<<,;i÷÷)for(k=0;MiMak!=>0,;k+÷)(if(MiMalk!=MiMak)(k=0;break;)if(k=0)(SyStem("cis");COUt«两次密码不一致!”Gendk重新输入5位密码以#号完毕:;break;)elsek=l;break;)if(k=l)break;)for(i=9ji<14ji÷÷)次循环为给要输入正确的密码加密MiMali=CMiMai);)strcat(UserName,MiMal);if(f=fopen("conf,txt","w")=NULL)COUt<<"修改出错!”;exit(O);)fputs(UserName,f);将加密后的密码以及明文的用户名写入conf,txtfclose(f);CoUt<<endl<<endk<endlX<”修改成功!"z<<endl;COUt按任意键退出!z"<<endl;getch();exit(O);)第三章课程设计总结经过半年的学习和实践,使我对C+语言有了更认识和和了解,要想学好它要重在实践,要通过不断的上机操作才能更好的学习它,通过实践,我也发现我的好多缺乏之处,对各种控制构造及语句、数组的基本与高级应用、指针数组、字符数组、动态数组、函数的定义、调用方式;函数在编程中的具体应用;以及变量存储特征与标识符的作用域,通过实践,使我在这些方面有了认识和提高。课程设计它是一项任务,更是一种挑战和历练。在课程设计中,为了使用时方便,着重对缺乏方面的知识进展了分析与理解,在这一过程中对文件的操作有了很大的提高。通过实际的演练,可以增强对知识的理解和运用能力。参考文献1.徐孝凯编着?C+语言程序设计?北京:清华大学出版社,2005:301页2 .黄迪明主编?C+语言程序设计根基?北京:电子工业出版社,2003:210页3 .钱能主编?C+程序设计教程?北京:清华大学出版社,2004:430页4 .郑莉、董渊编着?C+语言程序设计?北京:清华大学出版社,2004:240页5 .吴访升编着?C+程序设计?北京:机械工业出版社,2007:320页6 .DCCoder主编?C/C+程序设计?北京:中国铁道出版社,2006:330页7 .郑莉主编?c+语言程序设计(第三版)?北京:清华大学出版社,2004:273页