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章总结……………………………………………………………………………………错误!未定义书签。
- 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. 统计时的界面。