C语言课程设计-文件加密解密
C文件加密课程设计
C 文件加密课程设计一、课程目标知识目标:1. 让学生掌握C语言中文件操作的基本知识,包括文件的打开、读取、写入和关闭。
2. 让学生理解加密算法的基本原理,学会在C语言中实现简单的文件加密和解密功能。
3. 让学生了解不同的加密方法和其在现实生活中的应用场景。
技能目标:1. 培养学生运用C语言进行文件操作的能力,并能将其应用于加密和解密过程中。
2. 培养学生通过编程解决实际问题的能力,例如设计一个简单的文件加密工具。
3. 提高学生的逻辑思维能力,使他们能够分析并优化加密算法。
情感态度价值观目标:1. 培养学生对计算机安全和个人隐私保护的兴趣,增强信息安全意识。
2. 激发学生的创新意识,鼓励他们探索计算机科学领域的未知问题。
3. 培养学生的团队协作精神,使他们学会在项目合作中发挥各自的优势。
本课程针对高年级学生,在掌握了C语言基本知识的基础上,通过本课程的学习,使学生能够将所学知识应用于实际加密场景,提高学生的编程实践能力和信息安全意识。
在教学过程中,注重理论与实践相结合,鼓励学生动手实践和自主探索,以培养学生的创新精神和解决问题的能力。
通过分解课程目标为具体的学习成果,教师可针对性地进行教学设计和评估,确保课程的实用性和有效性。
二、教学内容1. 文件操作基础知识:文件的打开、读取、写入和关闭操作,文件指针的概念和使用。
2. 加密算法原理:对称加密和非对称加密的原理介绍,重点讲解对称加密算法如DES、AES的加密流程和密钥管理。
- 教材章节:第五章“数据加密与安全”第1-2节。
3. C语言实现文件加密:运用C语言编写文件加密和解密程序,包括算法的选择、密钥生成和文件处理。
- 教材章节:第五章“数据加密与安全”第3-4节。
4. 加密算法应用案例分析:分析实际应用中的加密场景,如网络通信、文件存储等,了解加密技术在生活中的应用。
- 教材章节:第五章“数据加密与安全”第5节。
5. 实践项目:设计一个简单的文件加密工具,实现文件的加密、解密和密钥管理功能。
c文件加密课程设计
c 文件加密课程设计一、教学目标本课程的学习目标包括以下三个方面:1.知识目标:学生需要掌握文件加密的基本概念、原理和方法,了解不同加密算法的特点和应用场景,能够选择合适的加密算法进行文件加密。
2.技能目标:学生能够熟练使用至少一种文件加密工具,进行文件的加密和解密操作,具备保护文件隐私和数据安全的能力。
3.情感态度价值观目标:培养学生对数据安全的重视,增强信息安全意识,培养学生对科学探究和问题解决的兴趣和能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.文件加密的基本概念:介绍文件加密的定义、作用和重要性,理解加密和解密的基本原理。
2.加密算法介绍:介绍常见的加密算法(如DES、AES等),了解它们的特点和应用场景。
3.文件加密工具的使用:学习并掌握至少一种文件加密工具的使用,进行文件的加密和解密操作。
4.加密文件的实践应用:通过实际案例,了解加密文件在现实生活中的应用,如加密电子邮件、加密移动存储设备等。
三、教学方法本课程的教学方法采用多种教学手段,以激发学生的学习兴趣和主动性:1.讲授法:通过讲解加密算法的基本原理和文件加密工具的使用方法,为学生提供系统的知识结构。
2.案例分析法:通过分析实际案例,引导学生理解加密文件在现实生活中的应用,提高学生解决实际问题的能力。
3.实验法:学生进行实际操作,使用文件加密工具进行加密和解密操作,培养学生的实际操作能力。
四、教学资源本课程的教学资源包括以下几个方面:1.教材:选用合适的教材,为学生提供系统的基础知识。
2.多媒体资料:制作课件、演示文稿等,为学生提供直观的学习材料。
3.实验设备:准备计算机等实验设备,为学生提供实际操作的环境。
4.网络资源:利用网络资源,为学生提供更多的学习资料和实践案例。
五、教学评估为了全面、客观地评估学生的学习成果,本课程将采用以下几种评估方式:1.平时表现:通过观察学生在课堂上的参与度、提问回答等情况,评估学生的学习态度和理解程度。
c语言文件加密课程设计
c语言文件加密课程设计一、课程目标知识目标:1. 让学生掌握C语言文件操作的基本知识,包括文件的打开、读写和关闭。
2. 让学生理解加密算法的基本原理,如移位密码、替代密码等。
3. 使学生能够运用C语言实现简单的文件加密和解密功能。
技能目标:1. 培养学生运用C语言解决问题的能力,特别是文件处理和加密解密操作。
2. 提高学生的逻辑思维能力,使其能够分析并设计简单的加密算法。
3. 培养学生团队合作和沟通能力,通过小组合作完成课程设计。
情感态度价值观目标:1. 培养学生对待信息安全的态度,提高对数据保护的意识。
2. 激发学生对编程的兴趣,培养其探究精神,勇于尝试和克服困难。
3. 培养学生遵守法律法规,养成良好的道德品质,不滥用加密技术。
课程性质:本课程为实践性较强的课程设计,要求学生将所学的C语言知识运用到实际项目中,实现文件加密和解密功能。
学生特点:学生已经掌握了C语言基础知识和基本的文件操作,但可能对加密算法了解不多。
教学要求:教师应引导学生通过小组合作、自主探究等方式,将理论知识与实践相结合,培养学生的动手能力和创新能力。
同时,注重培养学生的安全意识和道德品质。
在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. 文件操作基础知识:- 文件的打开、关闭、读写等基本操作。
- 文件指针的概念和使用。
- 课本相关章节:第三章文件操作。
2. 加密算法原理:- 常见加密算法的原理,如移位密码、替代密码等。
- 加密算法的C语言实现方法。
- 课本相关章节:第七章算法设计与分析。
3. 文件加密与解密实现:- 设计并实现一个简单的文件加密程序。
- 设计并实现一个对应的文件解密程序。
- 课本相关章节:第八章C语言应用实例。
4. 课程设计实践:- 分组讨论,确定加密算法和实现方案。
- 编写代码,实现文件加密和解密功能。
- 测试并优化程序,确保其稳定性和安全性。
5. 教学进度安排:- 第一周:复习文件操作基础知识,介绍加密算法原理。
c语言文件加密解密课程设计
c语言文件加密解密课程设计一、课程目标知识目标:1. 学生能理解C语言文件操作的基本原理,掌握文件读写的基本函数。
2. 学生能掌握基础的加密解密算法,并运用C语言实现文件的加密解密功能。
3. 学生了解加密解密技术在生活中的应用及其重要性。
技能目标:1. 学生能够独立编写C语言程序,实现对文本文件的加密和解密。
2. 学生能够运用调试工具对程序进行调试,解决常见的错误和异常。
3. 学生能够通过小组合作,共同完成一个文件加密解密项目,提高团队协作能力。
情感态度价值观目标:1. 学生培养对编程和信息安全领域的兴趣,激发学习主动性和探究精神。
2. 学生在课程学习过程中,增强解决问题的信心,培养面对困难的勇气和毅力。
3. 学生认识到信息安全的重要性,树立正确的网络安全观念,遵循道德规范,不参与非法破解活动。
课程性质:本课程为C语言高级应用课程,通过项目实践,帮助学生将所学知识应用于实际场景,提高编程能力和信息安全意识。
学生特点:学生已经掌握了C语言基础知识,具有一定的编程能力和逻辑思维能力,但对信息安全领域了解较少。
教学要求:注重理论与实践相结合,引导学生通过动手实践,掌握文件加密解密技术,提高学生的编程技能和信息安全素养。
同时,关注学生的个体差异,鼓励学生积极参与,发挥团队协作精神。
通过课程学习,实现以上具体的学习成果。
二、教学内容1. 文件操作基础:回顾C语言中文件操作的相关知识,重点掌握fopen、fprintf、fscanf、fclose等函数的使用方法,理解文件读写的过程。
教材章节:第三章 文件操作2. 加密解密原理:介绍基础的加密解密算法,如异或加密、移位加密等,分析算法原理,并通过示例代码展示算法实现。
教材章节:第十章 安全编程3. C语言实现加密解密:运用所学的加密解密原理,使用C语言编写程序,实现对文本文件的加密和解密功能。
教材章节:第十章 安全编程4. 调试与优化:教授学生如何使用调试工具,如GDB,对程序进行调试,找出并解决常见错误和异常,提高程序稳定性。
课程设计文件加密c语言代码
课程设计文件加密c语言代码一、教学目标本课程的教学目标是让学生掌握加密技术的基本原理和实现方法,能够运用C 语言编写简单的加密和解密程序。
具体目标如下:1.知识目标:•了解加密技术的基本概念、分类和应用场景。
•掌握C语言的基本语法和编程技巧。
•理解对称加密、非对称加密和哈希函数的原理和实现。
2.技能目标:•能够使用C语言编写简单的加密和解密程序。
•能够分析和解决加密技术相关的问题。
•能够运用所学知识进行实际的加密技术应用。
3.情感态度价值观目标:•培养学生的创新意识和团队合作精神。
•培养学生对加密技术的兴趣和好奇心。
•培养学生的信息安全意识和保护个人隐私的意识。
二、教学内容本课程的教学内容主要包括以下几个部分:1.C语言基础:•C语言的基本语法和数据类型。
•控制结构和函数的定义和使用。
2.加密技术基础:•加密技术的基本概念和分类。
•对称加密和非对称加密的原理和实现。
•哈希函数的原理和应用。
3.加密算法实现:•实现对称加密算法(如DES、AES等)。
•实现非对称加密算法(如RSA、ECC等)。
•实现哈希函数(如MD5、SHA-256等)。
4.加密技术应用:•数字签名和认证。
•数据安全和隐私保护。
•网络通信中的加密应用。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:教师讲解加密技术的基本概念、原理和实现方法,引导学生理解并掌握相关知识。
2.案例分析法:通过分析具体的加密技术应用案例,让学生了解加密技术在实际中的应用和重要性。
3.实验法:学生通过编写C语言程序,实现加密和解密算法,培养学生的实际编程能力和问题解决能力。
4.讨论法:学生分组讨论和合作完成项目,培养学生的团队合作精神和创新意识。
四、教学资源本课程的教学资源包括以下几个方面:1.教材:选用权威、实用的C语言和加密技术教材,为学生提供系统的学习材料。
2.参考书:提供相关的参考书籍,拓展学生的知识面和深入学习的能力。
c语言课程设计加密与解密
c语言课程设计加密与解密一、教学目标通过本章的学习,学生将掌握C语言加密与解密的基本概念和方法,理解加密与解密的技术原理,能够运用C语言实现简单的加密和解密功能。
1.理解加密与解密的概念及其在计算机安全中的应用。
2.掌握C语言的基本数据类型和运算符。
3.掌握C语言的函数和数组。
4.能够使用C语言编写简单的加密和解密程序。
5.能够分析C语言程序的运行结果,并对其进行调试和优化。
情感态度价值观目标:1.培养学生对计算机安全的认识,提高其对加密与解密技术的重视。
2.培养学生解决问题的能力和创新思维,激发其对C语言编程的兴趣。
二、教学内容本章的教学内容主要包括C语言的基本概念、数据类型、运算符、函数和数组,以及加密与解密的技术原理和实现方法。
1.C语言的基本概念:介绍C语言的历史和发展,理解C语言的特点和优势。
2.数据类型和运算符:掌握基本的数据类型(整型、浮点型、字符型等)和运算符(算术运算符、关系运算符、逻辑运算符等),能够正确使用它们进行编程。
3.函数和数组:理解函数的定义和调用,掌握数组的声明和使用,能够利用函数和数组实现简单的加密和解密功能。
4.加密与解密的技术原理:学习加密与解密的基本概念,了解常见的加密算法(如DES、AES等)和解密算法,理解加密与解密的技术原理和流程。
5.加密与解密的实现方法:学习使用C语言实现简单的加密和解密功能,掌握加密和解密的编程技巧,能够分析和调试程序,优化程序的性能和安全性。
三、教学方法本章的教学方法主要包括讲授法、案例分析法和实验法。
1.讲授法:通过讲解C语言的基本概念、数据类型、运算符、函数和数组,以及加密与解密的技术原理和实现方法,使学生掌握相关的知识和技能。
2.案例分析法:通过分析典型的加密和解密案例,使学生理解加密与解密的应用和实际意义,培养学生的分析和解决问题的能力。
3.实验法:通过编写和调试C语言程序,使学生掌握加密和解密的编程技巧,提高学生的实际操作能力和创新思维。
c语言文本加密解密课程设计
c语言文本加密解密课程设计一、课程目标知识目标:1. 让学生掌握C语言中字符类型及其运算,特别是字符与ASCII码之间的关系。
2. 使学生理解文本加密解密的基本原理,包括对称加密算法中异或运算的应用。
3. 引导学生掌握使用C语言进行简单文本加密解密程序的编写。
技能目标:1. 培养学生运用C语言进行字符处理的能力,包括字符串的读取、修改和输出。
2. 培养学生将理论知识应用到实际编程中,解决文本加密解密问题的能力。
3. 提高学生的逻辑思维能力和问题解决能力,通过编程实践,学会调试和优化程序。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,增强学习C语言的自信心。
2. 引导学生认识到信息安全的重要性,提高网络安全意识。
3. 培养学生的团队合作精神,学会在编程过程中互相帮助、共同进步。
分析课程性质、学生特点和教学要求,本课程目标旨在使学生在掌握C语言基础知识和技能的基础上,通过学习文本加密解密,将理论知识与实践相结合,提高编程能力和信息安全意识。
课程目标具体、可衡量,便于后续教学设计和评估。
二、教学内容1. C语言基础知识回顾:字符类型及其ASCII码表示,字符串处理基础。
2. 文本加密解密原理:介绍对称加密基本概念,重点讲解异或运算在文本加密解密中的应用。
3. 编程实践:- 简单文本加密程序设计:使用C语言实现字符异或加密。
- 简单文本解密程序设计:使用C语言实现字符异或解密。
4. 教学案例分析与讨论:分析教材中相关的案例,讲解加密解密程序的设计思路和实现步骤。
5. 课堂练习:设计具有实际意义的加密解密任务,让学生动手实践,巩固所学知识。
教学内容安排和进度:第一课时:C语言基础知识回顾,文本加密解密原理介绍。
第二课时:编程实践——简单文本加密程序设计。
第三课时:编程实践——简单文本解密程序设计。
第四课时:教学案例分析与讨论,课堂练习。
教学内容与教材关联性:1. C语言基础知识:参考教材第1章至第3章内容。
C语言加密解密课程设计报告
大学课程设计文件的加密解密—单位数理系分院(系)专业应用物理)学号学生姓名指导教师完成日期 2010 年 9 月 17日摘要}进行程序的加密解密是现在对文件保护的一种重要措施。
传统的文件保护方法只是对文件进行封存。
随着计算机和网络技术的迅速发展,越来越多的人意识到文件加密的重要性,而采用一定的程序对文件进行加密正是现在人们对文件保护的一种必要手段。
文件加密技术是通过相应程序对文件进行加密,它有许多优点,例如:可以对任意文本文档进行不同种类的加密,对原文件不造成破坏,同时可以将加密后的文件保存起来用于传输。
程序灵活性强,可以随时进行加密解密。
用户可以根据需要使程序完成相应功能。
本文采用C程序,实现了所述功能中的全部内容。
论文首先介绍了程序的设计思路,其中包括相应的流程图。
其次,介绍了函数的主要功能。
最后,利用C语言环境编辑程序实现了全部功能,并作了详细描述。
关键词:文件加密,功能,文件,C程序。
目录…第1章选题的意义……………………………………………………………………………错误!未定义书签。
文件加密的意义……………………………………………………………………错误!未定义书签。
设计程序的意义…………………………………………………………………错误!未定义书签。
第2章系统功能需求分析……………………………………………………………………错误!未定义书签。
系统的基本要求…………………………………………………………………错误!未定义书签。
功能设计…………………………………………………………………………错误!未定义书签。
第3章系统设计………………………………………………………………………………错误!未定义书签。
设计思路 (6)【程序模块 (7)功能图 (7)函数分析 (11)第4章系统实现………………………………………………………………………………错误!未定义书签。
第5章总结……………………………………………………………………………………错误!未定义书签。
c语言课程设计-文件加密解密(含源代码)
c语言课程设计-文件加密解密(含源代码)C语言课程设计实验报告实验名称:文件加密解密院系:软件学院学号:日期:2012年9月3日—9月17日一:设计题目1:设计图形用户界面。
2:对文件进行加密并对加密文件进行保存。
3:对加密了的文件进行解密。
二:设计过程设计过程中遇到的困难和解决方法:1:不能很好地理解题意(通过老师的讲解)。
2:不知道如何设计加密解密程序(通过翻阅书籍和上网查找资料) 过程:首先通过学习老师提供的资料了解大致的设计过程并懂得运用一些以前没有学习过的c语言。
先利用文本文件设计出加密解密的主要过程并能运行。
知道如何运用fopen将原文件打开并用fread将原文件内容读出来,然后进行加密设计并将加密的数据用fwrite写进指定的文件中并保存。
然后读出加密的文件并解密并保存。
最后在写出的程序中加入图形用户界面,运用window,box,gotoxy等进行设计。
三:源代码#include <stdio.h>/* 标准输入、输出函数*/ #include /* 标准库函数*/#include <string.h> //*字符串处理函数*/#include /* 字符操作函数*/#include#include <dos.h>#define key_down80#definekey_up 72#definekey_esc 1#define key_enter 28#defineSIZE 1void box(int startx,int starty,int high,intwidth);int get_key();char buf[20*20*4];/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////加密解密*/voidfun(char*list,char *sd)/*加密过程*/{FILE*fp1,*fp2;char buf[1000]; /*文件临时存放处*/register intch;fp1=fopen("e:\list.txt","r"); /*用可读方式打开文件*/fp2=fopen("e:\sd.txt","w"); /*用可写方式创建一个文件*/if(fp1==NULL){printf("cannot openfile\n");exit(1);}if(fp2==NULL){printf("cannot build file\n");exit(1);}ch=fgetc(fp1);/*读出打开文件的光标处的一个字符*/while(!feof(fp1))/*读出的字符不是最后的字符*/ {ch=ch<<1; /*加密方法*/fputc(ch,fp2);/*加密的字符存放在指定的地方*/ch=f getc(fp1);}rewind(fp2); /*将光标移动到第一个字符前面*/fread(buf,sizeof(buf),1,fp2); /*从文件的当前位置开始中读取buf中存放的数据*/printf("%s",buf);/*fclose(fp1);fclose(fp2);*/}void man(char *sd,char *ds)/*解密过程*/{/*int n=0;*/FILE *fp2,*fp3;register int fh;char buf1[1000];fp2=fopen("e:\sd.txt","rb"); /*用可读方式打开文件*/fp3=fopen("e:\ds.txt","wb"); /*用可写方式创建一文件*/ if(fp2==NULL){printf("cannot open file\n");exit(1);}if(fp3==NULL){printf("cannot build file\n");exit(1);}fh=fgetc(fp2); /*从光标处读出一个字符*/while(!feof(fp2)) /*当读出的字符到达最后一个则停止*/{fh=fh>>1; /*解密方式*/fputc(fh,fp3);/*解密的字符存放在指定的地方*/fh=fgetc(fp2);}fread(buf1,sizeof(buf1),1,fp3); /*读出buf1中所存放的数据*/printf("%s",buf1);}void main(){int k;char*f[]={"jiami","jiemi"};/**界面的形式/ intke y,y;int j,q;char list[300];char sd[300];char ds[300];char ch,fh;char buf[1000];char buf1[1000];FILE *fp1;FILE*fp2;intl1,l2;window(1,1,80,25); /*left,top,right,bottom,相对于屏幕的字符坐标,屏幕原点在左上角*/gettext( 20,10,40,14,buf); /*保存矩形屏幕上的字符*/textbackground(7); /*背景颜色*/textcolor(0);/*字体颜色*/clrscr(); /*清除矩形屏幕上的所有字符*/gotoxy(24,10); /*将当前字符屏幕的光标位置移动到x,y的坐标位子*/printf("%s",f[0]);gotoxy(24,14);printf("%s",f[1]);gettext(10,8,60,16,buf);box(22,9,3,30);/*建立一个小窗口*/key=0;while(1){ while(bioskey(1)==0); /*读取键盘值查询键盘是否按下*/key=get_key(); /*按下了什么键盘*/if(key==key_up||key==key_down){y=wherey(); /*得到字符模式下窗口光标的x坐标数值*/if(key==key_up)y=y==10? y+4:10;/*当y=10光标向下移动四个位置否则将光标移动到y=10处*/if(key==key_down)y=y==14? y-4:14; /*当y=14光标向下移动四个位置否则将光标移动到y=14处*/puttext(10,8,60,16,buf); /*将gettext函数保存的字符恢复到屏幕上*/gotoxy(24,y);if(y==10){ textbackground(7);textcolor(0);box(22,9,3,30);textbackground(3);textcolor(15);gotoxy(24,y);cprintf("%s",f[0]);}else{ textbackground(7);textcolor(0);box(22,13,3,30);textbackground(3);textcolor(15);gotoxy(24,y);cprintf("%s",f[1]);}}if(key==key_enter&&y==10)且光标在y=10处 /*当按下enter键且光标在y=10处进行下步*/{clrscr();textbackground(3);textcolor(15);/*clrscr(); */gotoxy(24,5);printf("input the file name for jiami\n");/*用户给需要加密的文件加密*/l1=strlen("input the file name for jiami:"); /*待求长度的字符串指针*/gotoxy(24+l1,5);scanf("%s",list);gotoxy(24,10);printf("input file name forsave\n");/*给加密后的文件命名,并保存*/l2=strlen("input file name forsave:");gotoxy(24+l2,10);scanf("%s",sd);fun(list,sd);fp1=fopen("e:\sd.txt","rb");fread(buf1,sizeof(buf1),1,fp1);gotoxy(10,15);printf("%s\n",buf1);getch();printf("file haven jiami ,save now");getche(); break;}if(key==key_enter&&y==14){clrscr();textbackground(3);textcolor(15);gotoxy(24,5);printf("input the file namefor jiemi \n");/*用户给需要解密的文件解密 */l1=strlen("input the file namefor jiemi: ");gotoxy(24+l1,5);scanf("%s",sd);gotoxy(24,10);printf("input file name for save:\n");/*对解密的文件系统又可以提供保存路径 */l2=strlen("input file name for s ave: ");gotoxy(24+l2,10);scanf("%s",ds);man(sd,ds);fp2=fopen("e:\ds.txt","rb");fread(buf1,sizeof(buf1),1,fp2);gotoxy(10,15);printf("%s\n",buf1);getch();printf("file haven jiemi,save now");getche();break;}}window(1,1,80,25);gettext( 20,10,40,14,buf);textbackground(7);textcolor(0);clrscr();gotoxy(24,10);printf("%s",f[0]);gotoxy(24,14);printf("%s",f[1]);gettext(10,8,60,16,buf);box(22,9,3,30);key=0;while(1){ while(bioskey(1)==0);key=get_key();if(key==key_up||key==key_down) {y=wherey();if(key==key_up)y=y==10? y+4:10;if(key==key_down)y=y==14?y-4:14;puttext(10,8,60,16,buf);gotoxy(24,y);if(y==10) /*光标在10处的窗口*/{ textbackground(7);textcolor(0);box(22,9,3,30);textbackground(3);textcolor(15);gotoxy(24,y);cprintf("%s",f[0]);}else{ textbackground(7);textcolor(0);box(22,13,3,30);textbackground(3);textcolor(15);gotoxy(24,y);cprintf("%s",f[1]);}}if(key==key_enter&&y==10){clrscr();textbackground(3);textcolor(15);/*clrscr(); */gotoxy(24,5);printf("input thefile name for jiami\n");/*用户给需要加密的文件加密 */l1=strlen("input the file name for jiami:");gotoxy(24+l1,5);scanf("%s",list);gotoxy(24,10);printf("input file name for save\n");/*给加密后的文件命名,并保存*/l2=strlen("input file name for save:");gotoxy(24+l2,10);scanf("%s",sd);fun(list,sd);fp1=fopen("e:\sd.txt","rb");fread(buf1,sizeof(buf1),1,fp1);gotoxy(10,15);printf("%s\n",buf1);getch();printf("file haven jiami ,save now");getche();}if(key==key_enter&&y==14){clrscr();textbackground(3);textcolor(15);gotoxy(24,5);printf("input the file name for jiemi \n");/*用户给需要解密的文件解密*/l1=strlen("input the file name forjiemi:");gotoxy(24+l1,5);scanf("%s",sd);gotoxy(24,10);printf("input filenamefor save:\n");/*对解密的文件系统又可以提供保存路径*/l2=strlen("input file name for save: ");gotoxy(24+l2,10);scanf("%s",ds);man(sd,ds);fp2=fopen("e:\ds.txt","rb");fread(buf1,sizeof(buf1),1,fp2);gotoxy(10,15);printf("%s\n",buf1);getch();printf("file haven jiemi,save now");getche();break;}}}int get_key(){union REGS rg;rg.h.ah=0;int86(0x16,&rg,&rg);return rg.h.ah;getchar();}void box(intstartx,int starty,int high,intwidth) /*屏幕的建立*/{int i;gotoxy(startx,starty);putch(0xda);for (i=startx+1;i <width;i++)< p="">putch(0xc4);putch(0xbf);for(i=starty+1;i <high+starty;i++){gotoxy(startx,i);putch(0xb3);gotoxy(width,i);putch(0xb3);}gotoxy(startx,starty+high-1);putch(0xc0);gotoxy(startx+1,starty+high-1);for(i=startx+1;i <width;i++)< p="">putch(0xc4);putch(0xd9);return;}四:心得体会通过这次的作业我觉得最大的收获是不仅把平时学习到的知识理解的更加透彻,而且使知识更加系统化,同时还把有些平时不太注意的小问题发现了出来,这不但有利于我学习C语言,而且对于我学习任何一门课程都是很有益处的。
文件加密c语言课程设计
文件加密c语言课程设计一、课程目标知识目标:1. 理解文件加密的基本概念,掌握C语言实现文件加密的原理;2. 学会使用C语言标准库进行文件操作,掌握字符编码转换方法;3. 掌握常见的加密算法及其在C语言中的实现方法。
技能目标:1. 能够独立编写C语言程序,实现文件的加密与解密功能;2. 能够运用所学知识解决实际文件安全保护问题,提高编程实践能力;3. 能够通过课程学习,培养良好的编程习惯和解决问题的方法。
情感态度价值观目标:1. 培养学生对信息安全保护的认识,增强网络安全意识;2. 激发学生对编程的兴趣,提高学习积极性和主动性;3. 培养学生的团队协作精神,学会与他人分享编程经验和成果。
课程性质:本课程为计算机科学与技术专业的选修课程,侧重于实践操作和实际应用。
学生特点:学生已经掌握了C语言的基本语法和编程技巧,具有一定的编程基础。
教学要求:结合课程性质和学生特点,注重理论与实践相结合,强调实际操作,培养学生的实际编程能力和解决问题的能力。
通过课程学习,使学生能够将所学知识应用于实际项目中,提高学生的综合素养。
二、教学内容1. 文件加密基础理论:介绍文件加密的概念、作用和分类,结合课本相关章节,理解加密技术在信息安全中的应用。
- 加密算法原理:学习对称加密和非对称加密的原理,了解其优缺点。
- 文件加密技术:分析常见文件加密技术,如AES、DES、RSA等。
2. C语言文件操作:复习C语言文件操作相关知识,包括文件的打开、读取、写入和关闭。
- 文件处理函数:学习使用fopen、fread、fwrite、fclose等标准库函数。
- 字符编码转换:介绍字符编码转换方法,实现不同编码文件的处理。
3. 加密算法的C语言实现:根据课本内容,学习并实践以下加密算法的C语言实现。
- 对称加密算法:以AES为例,实现文件加密与解密功能。
- 非对称加密算法:以RSA为例,实现文件加密与解密功能。
4. 实践项目与案例分析:布置实践项目,让学生动手实践文件加密与解密功能,并结合实际案例进行分析。
c加密解密课程设计
c 加密解密课程设计一、课程目标知识目标:1. 让学生理解加密解密的基本概念,掌握常用的加密算法原理,如Caesar密码、DES、AES等。
2. 使学生掌握C语言实现加密解密算法的方法,了解加密解密技术在信息安全中的应用。
3. 帮助学生了解我国信息安全政策及法律法规,增强信息安全意识。
技能目标:1. 培养学生运用C语言编写加密解密程序的能力,提高编程实践操作技能。
2. 培养学生分析、解决实际信息安全问题的能力,能够针对特定场景选择合适的加密算法。
情感态度价值观目标:1. 培养学生对信息安全领域的好奇心和求知欲,激发学生学习兴趣。
2. 增强学生的团队协作意识,培养良好的沟通与表达能力。
3. 培养学生遵守网络道德规范,自觉维护网络信息安全,具备良好的社会责任感。
课程性质:本课程为信息技术学科,旨在让学生掌握C语言编程在加密解密领域的应用,提高学生的信息安全意识。
学生特点:学生具备一定的C语言基础,对编程有一定的兴趣,但对加密解密技术了解较少。
教学要求:结合学生的特点和实际情况,采用案例教学、任务驱动等方法,引导学生主动参与课堂,注重理论与实践相结合,提高学生的实际操作能力。
通过本课程的学习,使学生能够独立编写简单的加密解密程序,并具备一定的信息安全素养。
二、教学内容1. 加密解密基本概念:介绍加密解密的定义、作用和分类,结合课本相关章节,让学生了解加密解密技术的基本原理。
- 加密算法:Caesar密码、DES、AES等。
- 解密算法:针对上述加密算法的逆运算。
2. 常用加密算法原理及实现:- 详细讲解Caesar密码、DES、AES等算法原理,结合教材案例分析。
- 引导学生运用C语言实现上述加密算法,加强编程实践。
3. 信息安全法律法规与道德规范:- 介绍我国信息安全政策及法律法规,提高学生的信息安全意识。
- 引导学生遵循网络道德规范,维护网络信息安全。
4. 加密解密技术应用:- 分析加密解密技术在现实生活中的应用场景,如通信、支付等。
c语言课程设计-文件加密解密(含源代码)
c语言课程设计-文件加密解密(含源代码)
概述
本文主要介绍如何使用c语言进行文件的加密和解密操作,同时提供相应的源
代码。
文件加密是一种保护文件数据的方法,使得未经许可的用户无法读取或修改加密过的文件。
而文件解密则是将加密文档还原为可读的文件。
实现
本程序使用C语言实现文件的加密和解密操作,主要包括如下步骤:
1.读取待加密/解密的文件
2.处理文件数据,进行加密/解密操作
3.将处理后的数据写入到新的文件中
为了保证数据的加密强度,本程序使用了简单的异或运算进行加密/解密操作。
加密和解密时使用的密钥是相同的,用户可以自行指定。
程序会根据密钥对每个文件字节进行异或操作,加密后的文件字节和原文件字节不同,保证数据的安全性。
源代码
以下是文件加密和解密的C语言代码。
其中encrypt函数用于加密,decrypt
函数用于解密,用户需要根据不同的需求进行调用。
```c #include <stdio.h> #include <stdlib.h> #include <string.h>
//加密函数 void encrypt(const char* input_filename, const char*
output_filename, const char* key){ FILE input_file, output_file; char ch; int i = 0;
input_file = fopen(input_filename, \。
c课程设计加密解密
c 课程设计加密解密一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握加密解密的基本概念、原理和方法;技能目标要求学生能够运用加密解密技术解决实际问题;情感态度价值观目标要求学生增强信息安全意识,提高信息保护能力。
通过分析课程性质、学生特点和教学要求,我们将目标分解为具体的学习成果。
课程目标旨在培养学生的信息素养,使他们在理解加密解密的基础上,能够运用所学知识解决实际问题,提高信息保护意识,增强信息安全防护能力。
二、教学内容本课程的教学内容主要包括加密解密的基本概念、原理和方法,以及实际应用案例。
具体包括以下几个方面:1.加密解密基本概念:对称加密、非对称加密、哈希函数等。
2.加密解密原理:加密解密算法、密钥管理、数字签名等。
3.加密解密方法:加密软件使用、网络通信安全、数据保护等。
4.实际应用案例:加密解密技术在现实生活中的应用,如电子邮件、移动支付等。
教学大纲将按照教材的章节安排,循序渐进地教学内容,确保学生能够系统地掌握加密解密知识。
三、教学方法为激发学生的学习兴趣和主动性,我们将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。
1.讲授法:讲解加密解密的基本概念、原理和方法。
2.讨论法:学生讨论实际应用案例,提高学生解决问题的能力。
3.案例分析法:分析加密解密技术在现实生活中的应用,增强学生的实践能力。
4.实验法:引导学生动手实践,提高学生的实际操作能力。
四、教学资源本课程将选用合适的教学资源,包括教材、参考书、多媒体资料、实验设备等。
教学资源将支持教学内容和教学方法的实施,丰富学生的学习体验。
1.教材:选用权威、实用的教材,为学生提供系统、全面的知识体系。
2.参考书:推荐相关参考书籍,拓展学生的知识视野。
3.多媒体资料:制作精美的PPT、视频等多媒体资料,提高学生的学习兴趣。
4.实验设备:配置相应的实验设备,确保学生能够顺利进行实验操作。
c文件加密课程设计
c 文件加密 课程设计一、课程目标知识目标:1. 理解c语言中文件操作的基础知识,掌握文件读写的基本函数。
2. 学习文件加密的基本原理,理解加密算法在文件安全中的作用。
3. 掌握至少一种简单的加密算法,并能将其应用于文件加密。
技能目标:1. 能够独立编写c语言程序进行文件的读写操作。
2. 能够运用所学加密算法,实现文件内容的加密与解密。
3. 能够分析并解决文件加密过程中可能遇到的问题。
情感态度价值观目标:1. 培养学生的信息安全意识,使其明白保护个人隐私和数据安全的重要性。
2. 激发学生对计算机编程的兴趣,提高其学习主动性和探究精神。
3. 培养学生的团队协作意识,使其学会在小组合作中共同解决问题。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为信息技术课程,旨在教授学生文件加密的相关知识,提高学生的编程能力和信息安全意识。
2. 学生特点:学生处于高年级阶段,已具备一定的c语言基础,具有较强的学习能力和逻辑思维。
3. 教学要求:教师应注重理论与实践相结合,引导学生通过实际操作掌握文件加密技术,培养其解决问题的能力。
二、教学内容1. 文件操作基础:- 文件的概念与类型- 文件读写的基本函数(fopen、fprintf、fscanf、fclose等)- 文件指针的使用2. 加密算法原理:- 加密的基本概念- 常见加密算法(如凯撒密码、异或运算等)- 加密算法在文件安全中的应用3. 文件加密实现:- 选择一种简单加密算法- 编写c语言程序实现文件加密- 编写c语言程序实现文件解密4. 实践与拓展:- 分析加密文件的安全性- 探讨加密算法的破解方法- 优化加密算法,提高文件安全性教学内容安排和进度:第一课时:文件操作基础,学习文件的基本概念和读写函数。
第二课时:加密算法原理,了解加密概念和常见加密算法。
第三课时:文件加密实现,动手编写程序实现文件的加密与解密。
第四课时:实践与拓展,分析加密文件安全性,探讨优化加密算法。
实验报告 加密与解密(文件) C语言
实验报告---文件的加密与解密一、问题重述基于对各种加密算法的理解,结合各种加密、解密算法,选择合适的加密方法分别对文件进行加密和解密。
二、实验目的及要求2.1 实验目的1)在Linux环境下编写C语言程序,实现文件加密与解密;2)通过此次实验了解通信过程中不同的加密方式;3)了解不同的加密算法及加密过程;4)从多种加密和解密方式出发,对加密和解密的知识进行扩展。
2.2 实验要求根据不同的加密算法,设计加密程序,完成对文件的加密和解密。
2.3实验环境操作系统:Linux操作系统、window10操作系统;C语言环境: vim编辑器、DEV C++编辑器。
硬件环境:机房内电脑及个人笔记本电脑。
三、总体设计及思路3.1 实验思路对于文件的加密和解密主要采用ASCII与十进制数字之间相互转换的方法。
1)准备部分新建三个文件,分别命名为file1、file2、file3,其中file1装有源数据;将对file1加密后的信息放入file2中;对file2进行解密,解密生成的信息放入file3中。
2)计算部分当进入加密模式,首先对文件file1、file2进行读取操作,在保证成功读取文件的前提下,采用十进制转ASCII码的方法对文件file1进行加密,且加密后的数据保存在file2中,即文件file2是文件file1的加密文件。
采用ASCII码转十进制的方法对文件file2进行解密,解密后的数据放入file3中,即file3是file2的源文件。
四、实验过程4.1.1文件的读取顾名思义文件的加密和解密是以文件作为依托的,所以我们首先需要新建两个文件,文件1存放原始数据,其名字定义为file1.text;对文件1进行加密后需要将加密后的数据存放至文件2中,此处将文件2命名为file2.txt,最后将利用fopen函数以读取的方式打开文件,文件读取代码如下:4.1.2 文件的加密文件的加密过程采用十进制转三位ASCII码的加密方式,对从文件1中读取的字符依次进行ASCII码的转换,此段代码如下:4.1.3 文件的解密文件的解密过程采用与加密过程相反的操作,在linux下新建一个文件“file3.txt”,对加密后保存到文件2内的数据字符进形读取,将其转化为十进制,再将解密后的结果保存到file3中。
c语言程序课程设计文件加密
c语言程序课程设计文件加密一、教学目标本章节的教学目标是使学生掌握C语言程序设计的基本方法,能够运用C语言实现文件加密功能。
具体目标如下:1.知识目标:–掌握C语言的基本语法和数据结构。
–了解文件操作的基本方法。
–理解加密算法的基本原理。
2.技能目标:–能够使用C语言编写简单的程序。
–能够实现文件的读写操作。
–能够运用加密算法对文件进行加密。
3.情感态度价值观目标:–培养学生的编程兴趣,提高学生对计算机科学的热爱。
–培养学生的问题解决能力和创新精神。
–培养学生的团队合作意识和沟通能力。
二、教学内容本章节的教学内容主要包括以下几个部分:1.C语言基础知识:介绍C语言的基本语法和数据结构,包括变量、运算符、控制语句等。
2.文件操作:讲解文件的基本操作方法,包括文件的打开、读写、关闭等。
3.加密算法:介绍常见的加密算法,如DES、AES等,并讲解其原理和实现方法。
4.文件加密程序设计:结合C语言和加密算法,设计并实现一个简单的文件加密程序。
三、教学方法为了达到本章节的教学目标,将采用以下教学方法:1.讲授法:讲解C语言的基本语法和数据结构,文件操作方法和加密算法原理。
2.案例分析法:通过分析典型的文件加密案例,使学生理解和掌握加密算法的实现方法。
3.实验法:安排实验课程,让学生动手实践编写C语言程序,实现文件加密功能。
4.小组讨论法:学生进行小组讨论,分享学习心得和编程经验,促进学生之间的交流和合作。
四、教学资源为了支持本章节的教学内容和教学方法的实施,将准备以下教学资源:1.教材:选用《C语言程序设计》作为主要教材,提供C语言的基本语法和数据结构知识。
2.多媒体资料:提供相关的教学视频和演示文稿,帮助学生更好地理解和掌握知识。
3.实验设备:提供计算机和编程环境,让学生能够进行实际的编程实践。
4.在线资源:提供在线编程平台和论坛,方便学生进行自主学习和交流。
五、教学评估为了全面、客观、公正地评估学生在课程中的学习成果,将采用以下评估方式:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。
c语言文件加密程序课程设计
c语言文件加密程序课程设计一、课程目标知识目标:1. 学生能理解文件加密的基本原理,掌握C语言中文件操作的相关函数。
2. 学生能运用C语言编程实现文件的加密与解密功能。
3. 学生了解并掌握字符编码和加密算法在C语言中的实现方式。
技能目标:1. 学生能独立完成C语言文件加密程序的编写和调试。
2. 学生具备分析和解决编程过程中遇到问题的能力。
3. 学生通过本课程的学习,提高逻辑思维和编程实践能力。
情感态度价值观目标:1. 学生培养对计算机编程的兴趣和热情,提高学习积极性。
2. 学生在团队协作中,学会沟通与分享,培养合作精神。
3. 学生通过本课程的学习,认识到编程对现实生活的意义和价值,增强社会责任感。
课程性质:本课程为实践性较强的课程,注重培养学生的编程实践能力和创新思维。
学生特点:学生具备一定的C语言基础,对编程有一定了解,但编程实践经验不足。
教学要求:结合学生特点,采用任务驱动法,引导学生自主探究,注重培养学生的实践能力和团队协作能力。
在教学过程中,将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. 文件操作基础:回顾C语言中文件操作的基本概念,包括文件的打开、关闭、读写等函数的使用方法,对应教材中文件操作相关章节。
2. 加密算法原理:介绍常见的字符编码和加密算法,如凯撒密码、异或运算等,讲解加密算法在C语言中的实现方式,结合教材中算法部分内容。
3. C语言加密程序设计:根据课程目标,设计实际案例,指导学生编写文件加密与解密程序。
教学内容包括:a. 程序需求分析b. 加密算法的选择与应用c. C语言编程实现加密与解密功能d. 程序调试与优化,对应教材中项目设计与实践章节。
4. 教学进度安排:a. 文件操作基础(1课时)b. 加密算法原理(1课时)c. C语言加密程序设计(2课时,含实践操作)d. 程序调试与优化(1课时)5. 教学内容强调:在教学过程中,注重理论与实践相结合,鼓励学生动手实践,培养学生的编程能力和问题解决能力。
c语言文本加密解密课程设计
c语言文本加密解密课程设计一、教学目标本课程的目标是让学生掌握C语言文本加密解密的基本原理和方法。
通过本课程的学习,学生将能够:1.理解文本加密解密的基本概念和原理。
2.掌握C语言的基本语法和编程技巧。
3.学会使用C语言编写简单的文本加密解密程序。
4.能够分析和解密常见的文本加密算法。
二、教学内容本课程的教学内容主要包括以下几个部分:1.C语言基础知识:包括C语言的基本语法、数据类型、运算符、控制结构等。
2.文本加密解密原理:包括加密解密的基本概念、加密算法的工作原理等。
3.C语言文本加密解密实现:包括使用C语言实现简单的文本加密解密算法、分析和解密常见的文本加密算法等。
三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法相结合的方式进行教学。
1.讲授法:通过讲解和演示,让学生掌握文本加密解密的基本概念和原理。
2.案例分析法:通过分析和解密实际的文本加密算法,让学生加深对加密解密原理的理解。
3.实验法:通过编写和运行C语言程序,让学生亲手实践文本加密解密的过程,提高编程能力和问题解决能力。
四、教学资源本课程的教学资源主要包括教材、参考书、多媒体资料和实验设备等。
1.教材:选用《C程序设计语言》作为主要教材,辅助以《C语言加密解密实例解析》等参考书。
2.多媒体资料:提供相关的教学PPT、视频教程等多媒体资料,帮助学生更好地理解和掌握课程内容。
3.实验设备:提供计算机实验室,让学生能够进行实际的编程实践和实验操作。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面客观地评价学生的学习成果。
1.平时表现:通过课堂参与、提问、小组讨论等形式的评估,占总成绩的30%。
2.作业:布置相应的编程练习和理论题目,要求学生在规定时间内完成,占总成绩的40%。
3.考试:期末进行理论知识考试和编程实践考试,占总成绩的30%。
六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节顺序进行教学,确保每个章节都有充分的时间进行讲解和练习。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计课程设计学院计算机工程班级计算1313姓名李连活学号 ************ 成绩指导老师杨建富2014年6月26日计算1313班C语言程序设计课程设计大纲一、设计目的:通过课程设计,学会把相关的理论知识和实际应用相结合,锻炼了独立实践的能力;学会了查阅与设计相关资料的能力。
二、设计内容:设计题目:学生使用C语言设计程序,产生如下界面,0-6对应不同功能,若不用汉字,可用拼音或英文表示。
*************************************************************************************** * * 1--输入2--加密3--解密4--显示5—统计6—统计全部0--退出* * * ***************************************************************************************请选择(0--6):0.退出系统。
1.输入信息,并写入文本文件。
2.对给定的文件进行加密。
3.对给定的文件进行解密。
4.显示文本文件的内容。
5.统计某单词在文件中出现的次数。
*6. 统计在文件中各单词出现的次数(可选)。
三、设计思想:主要思想为由总到分,由上到下的逐级分配任务的思想。
通过主函数调用各个被调用的函数,再由被调用函数通过多个循环嵌套的使用实现各自的功能,最终达到程序的要求。
1.主函数中:先使用了switch选择结构来调用不同命令下所对应的被调用函数,其中包括:输入函数shuru(),加密函数jiami(),解密函数jiemi(),显示函数show(),统计函数count1()、count2。
在每个被调用函数中还多次调用了用来判断是否要继续的函数judge(),以达到循环的目的。
在主函数中还多次使用清屏命令system(“cls”),以及刷新全部流的命令flushall()、fllush(stdin)使调用函数后,界面保持清洁,提高了程序的易读性。
2.输入函数中:while((c=getchar())!=EOF)的使用能提示使用者结束的命令,并且通过fputc(c,fp)把一个字符c写到由文件指针fp指定的磁盘文件上。
3.加密函数中:先定义两个指针,将输入的文件内容通过fputc(c+1,fp1);进行加密并保存到fp1所指定的文件上。
保存成功后,使用remove(fname);语句删除掉原文件,并使用rename("jiami.txt",fname);语句将加密后的文件名改为已被删除的原文件名。
4.解密函数中:考虑到解密时的安全性问题,在进入解密系统时,需先输入进入解密系统的密码,因此在程序的主函数外先对解密系统密码进行初始值化,然后在进入解密系统时输入该密码就可进入。
由于加密时是对每个文件内容都加上了20,所以解密时只需再减20即可。
5.显示函数中:while(!feof(fp))语句用来判断是否到了文件的末尾,可以用来保证文件的内容都被显示出来。
6.统计函数中:先定义一个字符串数组,将文件中的内容存到数组中,再使用tolower函数统一将数组所有字符转化为小写字母,将用户输入的字符也转化为小写字母,用strcmp来比较输入的字符是否与文件中的字符相等,若相等,则变量jishu加1,最后可以统计出所查单词在文件中的数目。
l=strlen(word);语句表示用户输入字符的长度。
7.高级统计函数中:通过调用tol()自定义函数来判断文件中的字符是否是小写字母,若是的话,则将文件中的字符赋值给二维字符串数组cpy[][],而二维字符串数组则通过两个for循环嵌套来与自身进行比较,并且通过变量a的自增与自减来实现将重复被统计过的单词减去被多统计的次数,算出正确的单词个数。
四、实验小结:1. 过多的嵌套级别可能会使程序难以理解,应避免使用超过3个级别的缩进。
2.把程序写成小函数的集合,有助于程序编写、调试、维护和修改的方便。
3.在相关性不是很大的语句之间可以使用空行隔开,有利于区分各个语句的具体作用,在修改程序时起到一定的作用,提高了程序的可读性。
4.在switch语句中未加getch();使得界面不会停留,直接跳回主菜单界面。
5.在输入文件时,语句scanf("%s",fname);中的%s误写成%c,导致输入错误。
6.在对文件操作时需要注意关闭文件的操作,假如没有关闭,将会使在运行程序之时,不能对文件进行删除或者重命名的操作。
导致一些未知错误。
7.要及时使用清屏函数清除键盘缓冲区的文件及数据流,否则会导致不必要的错误。
8.在编写解密程序时,要注意使用两个while进行嵌套,使得在判断是否输入密码正确后,再判断解密的文件及是否继续解密其他文件。
9.通过这次的课程设计,我明白了,不管多么复杂的程序,其实都是有许许多多的小集合体组成的,只要肯花时间,肯认真,在编写程序的实践中,终将会将一系列的问题解决,从而达到目的,提高自己的能力,实践是检验真理的唯一标准!附录:程序清单#include<stdio.h>#include<stdlib.h>#include<string.h>#include<ctype.h>#include<conio.h>#define M 20 //宏定义文件名字符串数组大小#define N 20 //宏定义解密码字符串数组大小#define W 20 //宏定义单词字符串数组大小#define F 1000 //宏定义文件读取数组字符串数组大小#define E 3 // 宏定义解密系统密码输入次数char mima[]="love"; //初始化解密系统进入密码void menu(void); /*主菜单*/void shuru(void);//输入void jiami(void);//加密void jiemi(void);//解密void show(void);//显示void count1(void);//统计void count2(void);int judge(void);//判断是否继续int tol(char c);main(){char num;while(1){menu();//显示菜单scanf("%c",&num);fflush(stdin);//清除数据流防止恶意输入字符switch(num){case '0':printf("\n");exit(0);//退出程序case '1':system("cls");shuru();//输入printf("\n按任意键返回主菜单\n");break;case '2':system("cls");jiami();//加密printf("\n加密完成,请安任意键返回主菜单\n");break;case '3':system("cls");jiemi();//解密printf("\n解密完成,请安任意键返回主菜单\n");break;case '4':system("cls");show();//显示printf("\n该文件内容以已打开按任意键返回主菜单");break;case '5':system("cls");count1();//统计单词个数printf("\n请安任意键返回主菜单\n");break;case '6':system("cls");count2();printf("\n请安任意键返回主菜单\n");break;default:printf("输入错误请重新输入(按任意键返回重新输入)");break;}getch();//等待输入,界面停留fflush(stdin);//清除数据流system("cls");}}void menu(void)//主菜单函数{system("color 4e");printf("\t欢迎使用本软件该软件是对文本的加密与解密\n\t软件开发者:李连活\n\n");printf("\n\n\n\n\t******************************************************************\n");printf("\t**\n");printf("\t* 1--输入2--加密3--解密4--显示5-统计6-统计全部0--退出*\n");printf("\t**\n");printf("\t******************************************************************\n");printf("\n\n\t 0. 退出系统。
\n");printf("\t 1. 输入信息,并写入文本文件。
\n");printf("\t 2. 对给定的文件进行加密。
\n");printf("\t 3. 对给定的文件进行解密。
\n");printf("\t 4. 显示文本文件的内容。
\n");printf("\t 5.统计某单词在文件中出现的次数。
\n");printf("\t 6. 统计在文件中各单词出现的次数。
\n");printf("\t**********************************************************\n\t请选择需要使用的功能的序号(1-6):");}void shuru(void)//输入函数{FILE *fp;int x=1;char ch,fname[M];system("color 5e");while(x){printf("\n请输入要创建文件的文件名:");scanf("%s",&fname);if((fp=fopen(fname,"w"))==NULL){printf("储存空间不足,输入字符超出上限");exit(0);}else{printf("请输入文档内容(以ctrl+z结束):\n");fflush(stdin);while((ch=getchar())!=EOF)fputc(ch,fp);fclose(fp);}printf("文档输入并保存成功!");printf("是否需要继续创建文档并输入文档信息?(按Y键继续)");x=judge();}}void jiami(void){int n=1;FILE *fp,*fp1;char c,fname[M];system("color 2b");while(n){printf("\n请输入要加密的文件名称:\n");scanf("%s",fname);if ((fp=fopen(fname,"r")) == NULL){printf("\n无法打开文件!\n若重新输入,请输Y或y");flushall();n=judge();}/* else{if(fseek(fp,-(long)sizeof(char),SEEK_END))pd=fgetc(fp);//判断文件是否已经加密if(pd='$'){printf("\n该文件已使用本文件加密!!!");printf("请重新输入要加密的文件名(按Y键重新输入):");n=judge();fclose(fp);}*/if ((fp1=fopen("jiami.txt","w"))==NULL){printf("无法打开文件!\n");exit(0);}while((c=fgetc(fp))!=EOF) // 按ctrl+z结束{fputc(c+20,fp1); // 加密putchar(c+20);}fclose(fp1);fclose(fp);remove(fname); // 删除被加密的原文件rename("jiami.txt",fname); // 加密后的文件名更改为原文件名printf("\n文档加密并保存成功!\n");printf("\n\n是否继续加密?若继续请按Y或y\n");n=judge();}flushall();}void jiemi(void){int n=1;FILE *fp,*fp1;char c, fname[M],code1[N];while(n){printf("\n请输入进入解密系统所需密码:");scanf("%s",code1);system("color 5a");if(strcmp(code1,mima)==0) //比较字符串大小是否相等{while(n){printf("\n请输入要解密的文件名:");scanf("%s",fname);if ((fp=fopen(fname,"r")) == NULL){printf("\n文件打不开\n");exit(0);}if ((fp1=fopen("jiemi.txt","w"))==NULL){printf("无法打开文件!\n");exit(0);}while((c=fgetc(fp))!=EOF){fputc(c-20,fp1); // 解密putchar(c-20);}fclose(fp1);fclose(fp);remove(fname); // 删除被解密的原文件rename("jiemi.txt",fname); // 解密后的文件名更改为原文件名printf("\n是否继续解密?若继续请按Y或y");n=judge();}}else{printf("\n输入密码有误!请重新输入\n");}flushall();}}void show(void)//显示函数{FILE *fp;char fname[M];int x=1;system("color 5b");while(x){printf("\n\n请输入要显示的文件名:");scanf("%s",fname);if((fp=fopen(fname,"r"))==NULL){printf("\n该文件未能打开,请重新输入文件名(按Y键重新输入):");x=judge();}else{printf("\n%s的内容是:\n\n",fname);while(!feof(fp))//判断是否是文件末尾putchar(fgetc(fp));printf("\n");fclose(fp);printf("\n继续显示文件?(按Y键继续)");x=judge();}}}void count1(void){char fname[M],word[N];char cpy[N],nword[N];int n=1,i=0,j;int a=0,jishu=0,l;FILE *fp;while(n){printf("\n请输入要查找单词的文件名称:");scanf("%s",fname);if ((fp=fopen(fname,"r"))==NULL){printf("\n文件打不开,若要继续输入请按Y键");n=judge();}else{while(!feof(fp))cpy[i++]=fgetc(fp); //将文件的内容存入字符串数组printf("\n键入要统计个数的单词:");scanf("%s",word);l=strlen(word);for(j=0;j<l;j++)word[j]=tolower(word[j]); //使要统计的单词均由小写字母拼成的for(j=0;j<i;j++){if(isalpha(cpy[j])) //当字符不是字母时结束{cpy[j]=tolower(cpy[j]); //将字符串数组中的单词换成小写字母nword[a++]=cpy[j];}else if(a!=0){nword[a]='\0'; //保证字符串结束后能形成单词if(strcmp(word,nword)==0)++jishu; //计算所要统计的单词的数目a=0;}}fclose(fp);printf("\n文档中有%s的单词数为:%d\n",word,jishu);jishu=0;i=0;printf("\n若继续统计单词个数请按Y键");n=judge();}}}void count2(void){char fname1[M],cpy[F][M],c;int i=0,j,k,count=0,a=0;int m[100]={0},n=1;FILE *fp;while(n){printf("\n\t请输入要查找单词的文件名称:");flushall();scanf("%s",fname1);if ((fp=fopen(fname1,"r"))==NULL){printf("\n\t文件打不开,若要继续输入请按Y或y...");n=judge();continue;}else{while((c=fgetc(fp))!=EOF)if(!tol(c))cpy[count][i++]=c;else{cpy[count][i++]='\0';count++;i=0;}}for(j=0;j<count;j++){for(k=0;k<count;k++)if(strcmp(cpy[j],cpy[k])==0&&j>k){a--;break;}else if(strcmp(cpy[j],cpy[k])==0)m[a]++;a++;}a=0;printf("\n");for(j=0;j<count;j++){for(k=0;k<count;k++)if(strcmp(cpy[j],cpy[k])==0&&j>k){a--;break;}else if(strcmp(cpy[j],cpy[k])==0&&j==k){printf("\t文件中的字符%-7s的个数是%d\n",cpy[j],m[a]);}a++;}flushall();printf("\n\t若继续打开其他文件请按Y或y");n=judge();}}int tol(char c){if(c>='A'&&c<='Z')c=c+32;if(c>='a'&&c<='z')return 0;elsereturn 1;}int judge(void)//判断是否继续函数{char ch;fflush(stdin);scanf("%c",&ch);if(ch=='y'||ch=='Y')return 1;elsereturn 0; }程序运行结果:1. 主菜单界面(1)退出系统时的界面(2)错误输入时的界面2. 输入文件内容的界面3.文件加密时的界面4.文件解密时的界面5. 文件显示时的界面(1).显示加密文件(2).显示解密文件6. 统计时的界面。