版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
序 学号11417214使程『计设计课程名称: C语言课程设计题目: 编码解码 学生姓名: 刘垲 学院(系):信息学院专业班级:自动化112指导教师:周天彤专业技术职务:设计时间:2012年6月11日2012年6月19日目录1、 编码解码任务书2、 课程设计正文(1) 任务主要功能概述(2) 任务书基本要求分析和内容描述(3) 系统的功能结构框图(4) C语言程序代码(5) 系统使用说明书3、 课程设计日志及心得体会编码解码任务书一、 目的要求本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成一个简单的数据压缩解压系统,并能最终实现本系统的功能要求。二、 功能要求【题目描述】在压缩算法中,有一种算法叫做游程压缩算法,其算法是如果遇到多个连续相同的字节,就先记录该字节的连续的个数,然后再记录该字节。例如字符串AAABBCCCCCCAAA压缩结果是3A2B6C3A,结果只需要8字节就存贮了原先14字节的内容。不过这种方法有个缺点,如果单个元素较多的时候,反而会大于原先压缩前的内容。例如AAABBCDEF结果是3A2B1C1D1E1F,大于原串长。因此设置一个特殊字节@,如果有连续出现的字符,就用一个@表示下面是压缩数据,然后接着一个连续个数,再是被压缩的字节。例如第一个例子中,被压缩成@3A@2B@6C@3A第二个例子,被压缩成@3A@2BCDEF。实现这种算法。并且考虑如何改良该算法。Windows提供一个压缩工具compress.exe,可用来压缩大文件,可以通过VC自带的解压缩库lzexpand.dll来解压缩。你的程序需要实现以下功能:字符串简单编码字符串简单解码字符串改进编码字符串改进解码
5.解压缩由命令行5.解压缩由命令行compress生成的压缩文件。【题目要求】为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目;在第一,三个功能中,用户输入源文件名称和目标文件名称,你的程序打开源文件,进行编码,结果放在目标文件中,同时把结果显示再屏幕上在第二,四个功能中,用户输入源文件名称和目标文件名称,你的程序打开源文件,进行解码,结果放在目标文件中,同时把结果显示再屏幕上在功能5中,输入压缩文件名和解压以后的文件名,直接解压出结果文件。【输入/输出要求】应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作项目。进入每个操作后,根据程序的提示输入相应的信息;要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。课程设计正文一、 编码解码任务书主要功能概述编码解码任务书系统主要实现以下功能:1、 字符串简单编码。2、 字符串简单解码。3、 字符串改进编码。4、 字符串改进解码。5、 解压缩由命令行compress生成的压缩文件。6、 退出。【补充】执行一个功能后,按enter键可以继续选择功能键,执行下一个任务。在未退出的条件下,系统可以连续多次执行上述的5个功能。二、 任务书基本要求分析和内容描述【要求分析】(1) 为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目;(2) 在第一,三个功能中,用户输入源文件名称和目标文件名称,你的程序打开源文件,进行编码,结果放在目标文件中,同时把结果显示再屏幕上(3) 在第二,四个功能中,用户输入源文件名称和目标文件名称,你的程序打开源文件,进行解码,结果放在目标文件中,同时把结果显示再屏幕上(4) 在功能5中,输入压缩文件名和解压以后的文件名,直接解压出结果文件。【程序要求】(1) 程序正确。能够严格实现任务书中描述的功能;(2) 界面友好。尽可能使界面友好、直观、易操作;(3) 风格友好。源程序应有良好的编码风格,使程序容易阅读。【输入/输出要求】(1) 应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作项目。进入每个操作后,根据程序的提示输入相应的信息;(2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。三、系统的功能结构框图四、C语言程序代码//头文件//#include<windows.h>#include<lzexpand.h>#pragmacomment(lib,"lz32.lib")#include<stdio.h>#include<conio.h>#include<stdlib.h>//定义全局变量//FILE*fp1,*fp2;charfilename1[50],filename2[50],a[100],b[100];inti,j,k,t;//打开源文件并读出字符串//voidfun1()(i=0;printf("输入源文件名:");scanf("%s",filename1);if((fp1=fopen(filename1,"r"))==NULL)(printf("cannotopenthefile");exit(1);}while(!feof(fp1))(a[i]=fgetc(fp1);t=i;i++;}fclose(fp1);}//打开目标文件//voidfun2()(printf("输入目标文件名:");scanf("%s",filename2);if((fp2=fopen(filename2,"w"))==NULL)(printf("cannotopenthefile");exit(1);}}//字符串简单编码//voidjdbm()(j=0;k=1;fun1();fun2();printf("简单编码结果为:");for(i=0;i<t;i++)(if(a[i+1]!=a[i]||k==9)(b[j]=k+'0';b[j+1]=a[i];j=j+2;printf("%d%c",k,a[i]);fprintf(fp2,"%d%c",k,a[i]);k=1;}elsek++;}fclose(fp2);printf("\n");printf("按enter键继续。");}//字符串简单解码//voidjdjm()(fun1();fun2();printf("简单解码结果为:");for(i=0;i<t;i+=2)(for(j=0;j<a[i]-48;j++)(printf("%c",a[i+1]);fputc(a[i+1],fp2);}}fclose(fp2);printf("\n");printf("按enter键继续。");}//字符串改进编码//voidgjbm()(j=0;fun1();fun2();printf("改进编码结果为:");for(i=0;i<t;i++)if(a[i+1]!=a[i]||k==9)b[j]=k+'0';b[j+1]=a[i];j=j+2;if(k==1)printf("%c",a[i]);fprintf(fp2,"%c",a[i]);elseprintf("@%d%c",k,a[i]);fprintf(fp2,"@%d%c",k,a[i]);k=1;elsek++;}fclose(fp2);printf("\n");printf("按enter键继续。");//字符串改进解码//voidgjjm()(fun1();fun2();printf("改进解码结果为:");for(i=0;i<t;)(if(a[i]=='@')(for(j=0;j<a[i+1]-48;j++)(printf("%c",a[i+2]);fprintf(fp2,"%c",a[i+2]);}i+=3;}else(printf("%c",a[i]);fprintf(fp2,"%c",a[i]);i++;}}fclose(fp2);printf("\n");printf("按enter键继续。");}//解压缩由命令行compress生成的压缩文件//voidjy()(OFSTRUCTofs,oft;inti,j;printf("输入源文件名:");scanf("%s",filename1);printf("输入目标文件名:");scanf("%s",filename2);i=LZOpenFile(filename1,&ofs,OF_READ);j=LZOpenFile(filename2,&oft,OF_CREATE|OF_WRITE);LZCopy(i,j);LZClose(i);LZClose(j);printf("\n");printf("按enter键继续。");}//main函数//voidmain()(charp;loop:system("cls");printf("1、字符串简单编码\n");printf("2、字符串简单解码\n");printf("3、字符串改进编码\n");printf("4、字符串改进解码\n");printf("5、解压缩由命令行compress生成的压缩文件\n");printf("6、退出\n");printf("请选择输入选项[1、2、3、4、5、6]:>");while(p=getchar())(switch(p)(case'1':printf("**********************字符串简单编码**********************\n");jdbm();getchar();getchar();gotoloop;case'2':printf("**********************字符串简单解码**********************\n");jdjm();getchar();getchar();gotoloop;case'3':printf("**********************字符串改进编码**********************\n");gjbm();getchar();getchar();gotoloop;case'4':printf("**********************字符串改进解码**********************\n");gjjm();getchar();getchar();gotoloop;case'5':printf("**********************解压缩由命令彳亍compress生成的压缩文件**********************\n");jy();getchar();getchar();gotoloop;case'6':printf("**********************退出****mmm\n");exit(1);}}gotoloop;五、系统使用说明书(1) “编码解码”任务书明书有一个菜单。应用程序运行后,会显示这个菜单,然后用户通过菜单项的相应键选择希望进行的操作项日。(2)在第一,三个功能中,用户选择功能键1或功能键3后,按提示输入源文件名称和目标文件名称,程序将打开源文件,进行编码,结果放在目标文件中,同时把结果显示再屏幕上。(3) 在第二,四个功能中,用户选择功能键2或功能键4后,按提示输入源文件名称和目标文件名称,程序将打开源文件,进行解码,结果放在目标文件中,同时把结果显示再屏幕上。(4) 在功能5中,用户选择功能键5后,输入压缩文件名和解压以后的文件名,直接解压出结果文件。(5) 一个功能任务执行后,按enter键可以继续选择,多次执行各项功能。通过菜单项选择功能键6则直接退出。六、设计日志及心得体会第一天阅读题目,和同学交流了,自己理解,确定思路,编写了菜单。第二天分块编写了字符串简单编码和简单解码。第三天分块编写了字符串改进编码和改进解码。第四天查询compress原理编码的资料,结合网络课堂的帮助,完成了jy函数编写。第五天将输入源文件和目标文件的函数独立出来。第六天对程序进行了部分修改。完成了《课程设计说明书》。经过艰苦奋斗,课程设计终于完成了。回想其中的过程,既有快乐又有烦恼。刚开始上课时,还在迷茫这门课程,想着《C语言程序设计》到底事学什么的,有什么用。不过,这些感受都是在对这门课程不了解的情况下产生的。后来慢慢的接触多了,听老师讲的多了,了解多了,渐渐的产生了兴趣。尤其是学到上机操作程序时,经过编译,调试和运行后,出现界面,当时觉得很好奇,想真正的学好这门课程。通过一个学期的学习,我掌握了基本知识。下学期的时候,才知道C语言还有课程设计。当时有点心怯,感觉课程设计是很高深的东西,而我们学的东西很少,很零散,不知该怎么综合到一起。刚看到课程设计题目时,“编码解码”任务书,感觉应该是很难完成的题目。经过认真的阅读和理解题目,逐渐有了大概的思路。和同一组的同学相互交流各自对题目的理解后,对任务书的编写思路更清晰了。把大题目分为一个个小的功能,小函数编写后,感觉就简单多了。我把整个程序的思路理清后,就开始着手认真的分块的写程序,一个函数一个函数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 猪肉销售合同
- 摆摊凉粉课程设计
- 学校网页 课程设计
- 怎么说美术课程设计
- 屠宰动物营养与饲养管理考核试卷
- 医用塑料材料的材料选择与应用考核试卷
- 2024年版设备个性化订制协议实例版
- 文案类网络课程设计
- 2024年校园文化墙制作协议2篇
- 2024年度汽车零部件研发与维修定制合同3篇
- 【公开课】Unit+7+Section+B+project课件-人教版英语七年级上册
- 配位化学-本科生版知到智慧树章节测试课后答案2024年秋兰州大学
- 《学科建设》课件
- 精神科患者首次风险评估单
- 2024年度房产交易合同解除及退款条款的详细规定3篇
- 2024年中国高职院校升本分析报告-软科职教
- 临床输血技术规范培训课件
- 2024年度供应商管理培训课件
- 国开2024年秋《生产与运作管理》形成性考核1-4答案
- GB/Z 44306-2024颗粒质量一致性评价指南
- 新媒体与社会性别智慧树知到期末考试答案章节答案2024年复旦大学
评论
0/150
提交评论