资源描述
辽 宁 工 业 大 学C+语言程序设计课程设计(论文)题目: 保密文件加密处理 院(系): 软 件 学 院 专业班级: 113班 学 号: 111301073 学生姓名: 教师职称: 副教授 起止时间:2011.12.20-2011.12.31课程设计(论文)任务及评语院(系):软件学院 教研室:软件教研室学 号111301073软件工程113课程设计(论文)题目保密文件加密处理课程设计(论文)任务(1). 掌握面向对象程序设计语言C+的基本语法(2). 掌握C+面向对象设计的思想(3). 掌握VC+6.0与DEV C+ 开发工具的使用 (4). 运用标准C+规范设计应用程序设计过程中,要严格遵守设计的时间安排,听从指导教师的指导。正确地完成上述内容,规范完整地撰写出设计报告。指导教师评语及成绩成绩: 指导教师签字: 年 月 日目 录第1章课程设计目的与要求11.1 课程设计目的11.2 课程设计的实验环境11.3 课程设计的预备知识11.4 课程设计要求1第2章课程设计内容32.1 C+语言程序设计-多功能资料加密软件问题分析。32.1.1 功能分析32.1.1算法设计及程序设计中技术重点32.2 程序中涉及的类的UML类图和主要函数流程图或框图。42.2.1音乐类(class Music)62.2.2修改密码类( class XiuGaipassword)62.3 程序源代码72.3.1建立音乐类(class Music)代码72.3.2建立修改密码类( class XiuGaipassword)代码11第3章课程设计总结18参考文献19第一章 课程设计目的与要求1.1 课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程C+语言教程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。 (2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。 (3)利用所学知识,开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。 (5)掌握面向对象程序设计的方法。(6)熟练掌握C+语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。1.2 课程设计的实验环境硬件要求能运行Windows 操作系统的微机系统。C+语言应用程序开发软件使用:VC+ 系统,或其他C+语言应用程序开发软件。1.3 课程设计的预备知识熟悉C+语言程序设计的基本知识及VC+编辑器的使用方法。1.4 课程设计要求仔细分析设计题目,画出程序流程图,编写程序源代码。积极上机调试源程序,增强编程技巧与调程能力。认真书写课程设计预习报告,课程设计说明书。遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容。第二章 课程设计内容2.1 C+语言程序设计-保密文件加密处理问题分析。2.1.1 功能分析(1)使用本程序需要登录用户名和密码,而用户名和密码都存放在改程序当前目录的配置文件conf.txt中,配置文件中的密码是以密文的形式存放的。如果配置文件丢失,也可以使用本程序的默认用户名和密码admin登录。(2)登录本程序后,在主菜单中可以选择文件写入,书写自己的文章并以密文的形式存放在本程序当前目录story.txt中。也可以选择读取story.txt中的内容显示在屏幕上。(3)在你工作烦躁的时候,你可通过试听本程序的一些音乐,一次放松工作情绪。选择音乐试听,可以使用选择是否安装本程序提供的播放器。由于是单线程,在程序同步执行时可能有些瑕疵,请谅解。(4)选择修改用户名和密码选项,可以对本程序的配置文件进行修改,修改后的用户名以明文的形式存放到配置文件中,密码以密文的形式存放在配置文件中。2.1.2 算法设计及程序设计中技术重点2.1.1算法设计及程序设计中技术重点本程序具有面向对象的四要素:类,对象,继承,多态。所以,本程序是一个完备的面向对象的程序设计。本程序的设计亮点是,如果在输出的屏幕上进行退格删除,以及如何在输出屏幕上进行输出掩盖,如何读取配置文件中的用户名和加密后的密码,如何将修改后的用户名和密码(加密后)写入到配置文件中,以及在配置文件丢失的情况下是如何转入默认配置的状态,修改用户名和密码时,需要重新确认(二次输入)。将输入的内容加密后写入文件进行保存,将输入的内容进行字数统计。在本程序中使用了return,continue,break以及输出字符掩盖等语句的组合,文件的加密与解密的计算。所用最多的是WHILE循环结构和IF语句以及系统函数system,然而这也正为了它的特色。循环体的嵌套思路清晰,目的明确,格式规范,易于阅读和理解。If语句的逐层运用,正形象化的描述了计算机工作流程,而且与人的一般习惯相吻合,简单明了,易于观察理解它的来龙去脉,思路清晰直观。2.2 程序中涉及的类的UML类图和主要函数流程图或框图。END 开始 Y 判断配置文件是否存在 N 输入 输入 判断用户名和密码 N N 判断默认用户名和密码 处理菜单选择 处理菜单选择处 处 处 处 处 处 理 理 理 理 理 理 1 2 3 4 5 6 Music- static ch,bh:char- static k,i:int+ static ShiTing():voidXiuGaipassword-static UserName50,UserName150:char-static MiMa50,MiMa150:char+ static XiuGai():voidFile-static i,k:int-static chN,bhN,g:char+static Writ():void+static Read():voidMm+static Zmenu():void+static Mmusic():voidChoice-static ch:char+static XuanZe():void+static Xmusic():voidUser-static TuserName50,TpassWord50:char-static GuserName50,GuserWord50:char-static MoRenUserName6,MoRenPassWord6:char-static i,j,k:int-static ch:char+static DengLu():void+User(int)+User()+User()2.2.1音乐类(class Music)此模块中定义了ShiTing函数,其主要功能是,根据用户的选择做出相应的操作,是否需要安装播放器,以及试听音乐。简介:class Musicpublic:static void ShiTing(); /定义音乐试听函数private:static char ch; /定义静态私有字符变量 chstatic int k,i; /定义静态私有整型变量I,kstatic char bh; /定义静态私有字符变量bh;本类定义了静态成员函数Shiting,和成员变量ch,bh,i,kShiting()成员函数提供对歌曲的各种操作,以及提供安装播放器的功能。2.2.2修改密码类( class XiuGaipassword)此模块中定义了XiuGai函数,此函数的功能是修改用户名和用户密码,当用户修改密码时,将用户名和密码的格式进行验证,并将用户密码进行二次验证。并将修改后的用户名以明文的形式存放到conf.txt中,将修改后的密码以密文的形式存放到conf.txt中。简介:class XiuGaipasswordpublic:static void XiuGai(); /定义修改功能函数private:static char UserName50; /存放用户名的字符数组static char UserName150; /存放输入用户名的字符数组static char MiMa50,MiMa150; /存放密码的字符数组static int i,k; /静态成员;本类定义有UserName,UserName1,MiMa,MiMa1,i,k等静态成员变量2.3 程序源代码2.3.1建立音乐类(class Music)代码/Music.h#include#include#include#include#includeChoice.husing namespace std;class Musicpublic:static void ShiTing(); /定义音乐试听函数private:static char ch;static int k,i;static char bh;/Music.cpp#includeMusic.hvoid Music:ShiTing()static char ch;static char bh;static int k=0,i=0;while(1)if(k=0) system(cls); printf(是否需要本程序为您安装音乐播放器?n是 Y 否 Nn); bh=getch(); while(1) if(bh=Y | bh=N | bh=n | bh=y)k=1;break;elseprintf(n请输入 Y 或 Nn);bh=getch(); if(bh=Y | bh=y) /打开程序包,并延时 system(micsetup.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=400000000;i+); printf(.); for(i=0;i=400000000;i+); printf(.nnOK! 四秒后选择歌曲!); for(i=0;i=600000000;i+); Mm:Mmusic();ch=ChoiceMusic:Xmusic(); /音乐菜单switch(ch)case1:system(mickisstherain.mp3);break; /根据输入大开相应的文件 case 2:system(mic天空之城.mp3);break; case 3:system(mic我相信.mp3);break;case 4:system(micfarawayformhome.mp3);break;case 5:system(micmyheartwillgoon.mp3);break;case 6:system(mic宣言.mp3);break;case 7:return;case 0:exit(0);2.3.2建立修改密码类( class XiuGaipassword)代码/XiuGaipassword.h#include#include#include#includeusing namespace std;class XiuGaipasswordpublic:static void XiuGai(); /定义修改功能函数private:static char UserName50; /定义存放用户名的字符数组static char UserName150; static char MiMa50,MiMa150; /定义存放密码的字符数组static int i,k;#includeXiuGaipassword.hvoid XiuGaipassword:XiuGai()FILE *f;static char UserName150=0;static char MiMa50=password:; /将给数组进行初始化static char MiMa150=password:;static char UserName50=username:;static int i=9,k=0; /将初始变量初始化system(cls);cout输入自己的新用户名(5位)#号结束:;while(1)for(i=9;i17;)UserNamei=getch(); /将输入的字符用*掩盖if(UserNamei=8 ) if(i!=9) UserNamei=0;i-;putchar(8);cout ;putchar(8);elseif(UserNamei=#) /以#号结束输入UserNamei=n;UserNamei+1=0;break;coutUserNamei;i+;if(i!=14) /通过i的值来判断上述的UserName是否符合标准system(cls);cout用户名位数不正确!endl请重新输入#号结束:;elseUserNamei=n;UserNamei+1=0;break;i=9,k=0;system(cls);cout请输入5位新密码#号结束:;while(1) /次循环为密码输入程序段while(1) for(i=9;i17;)MiMai=getch(); if(MiMai=8 )if(i!=9) MiMai=0;i-;putchar(8);cout ;putchar(8);elseif(MiMai=#)MiMai=0;break;cout*;i+;if(i!=14)system(cls);cout密码位数不正确!endl请重新输入以#号结束;elseMiMai=0;break;coutendl再次确认密码以#号结束:;while(1) /次循环为确认输入的密码段for(i=9;i17;)MiMa1i=getch(); if(MiMa1i=8 )if(i!=9) MiMa1i=0;i-;putchar(8);cout ;putchar(8);elseif(MiMa1i=#)MiMa1i=0;break;cout*;i+;for(k=0;MiMak!=0;k+)if(MiMa1k!=MiMak)k=0;break;if(k=0)system(cls);cout两次密码不一致!endl重新输入5位密码以#号结束:;break;elsek=1; break; if(k=1) break;for(i=9;i14;i+) /次循环为给要输入正确的密码加密MiMa1i=(MiMai);strcat(UserName,MiMa1);if(f=fopen(conf.txt,w)=NULL)cout修改出错!;exit(0);fputs(UserName,f); /将加密后的密码以及明文的用户名写入conf.txtfclose(f);coutendlendlendl修改成功!endl;cout按任意键退出!endl;getch();exit(0);第三章 课程设计总结经过半年的学习和实践,使我对C+语言有了更认识和和了解,要想学好它要重在实践,要通过不断的上机操作才能更好的学习它,通过实践,我也发现我的好多不足之处,对各种控制结构及语句、数组的基本与高级应用、指针数组、字符数组、动态数组、函数的定义、调用方式;函数在编程中的具体应用;以及变量存储特征与标识符的作用域,通过实践,使我在这些方面有了认识和提高。课程设计它是一项任务,更是一种挑战和历练。在课程设计中,为了使用时方便,着重对不足方面的知识进行了分析与理解,在这一过程中对文件的操作有了很大的提高。通过实际的演练,可以增强对知识的理解和运用能力。参考文献1. 徐孝凯 编着 C+语言程序设计 北京:清华大学出版社,2005:301页2. 黄迪明 主编 C+语言程序设计基础 北京:电子工业出版社, 2003:210页3. 钱能 主编 C+程序设计教程 北京:清华大学出版社 ,2004:430页4. 郑莉、董渊 编着 C+语言程序设计 北京:清华大学出版社,2004:240页5. 吴访升 编着 C+程序设计 北京: 机械工业出版社 ,2007:320页6. Decoder 主编 C/C+程序设计 北京:中国铁道出版社,2006:330页7. 郑莉 主编c+语言程序设计(第三版) 北京:清华大学出版社,2004:273页
展开阅读全文