常州大学 课程设计 编码解码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
序号:
学号:11417214
C
H
A
N
G Z H O
U U N I V E R
S
I
T
Y
课程设计设计课程名称: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来解压缩。
你的程序需要实现以下功能:
1.字符串简单编码
2.字符串简单解码
3.字符串改进编码
4.字符串改进解码
5.解压缩由命令行compress生成的压缩文件。
【题目要求】
(1)为各项操作功能设计一个菜单。应用程序运行后,先显示这
个菜单,然后用户通过菜单项选择希望进行的操作项目;
(2)在第一,三个功能中,用户输入源文件名称和目标文件名称,你的程序打开源文件,进行编码,结果放在目标文件中,同时把结果显示再屏幕上
(3)在第二,四个功能中,用户输入源文件名称和目标文件名称,你的程序打开源文件,进行解码,结果放在目标文件中,同时把结果显示再屏幕上
(4)在功能5中,输入压缩文件名和解压以后的文件名,直接解压出结果文件。
【输入/输出要求】
(1)应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作项目。进入每个操作后,根据程序的提示输入相应的信息;(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
课程设计正文
一、编码解码任务书主要功能概述
编码解码任务书系统主要实现以下功能:
1、字符串简单编码。
2、字符串简单解码。
3、字符串改进编码。
4、字符串改进解码。
5、解压缩由命令行compress生成的压缩文件。
6、退出。
【补充】执行一个功能后,按enter键可以继续选择功能键,执行下一个任务。在未退出的条件下,系统可以连续多次执行上述的5个功能。
二、任务书基本要求分析和内容描述
【要求分析】
(1)为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目;
(2)在第一,三个功能中,用户输入源文件名称和目标文件名称,你的程序打开源文件,进行编码,结果放在目标文件中,同时把结果显示再屏幕上
(3)在第二,四个功能中,用户输入源文件名称和目标文件名称,你的程序打开源文件,进行解码,结果放在目标文件中,同时把结果显示再屏幕上
(4)在功能5中,输入压缩文件名和解压以后的文件名,直接解压出结果文件。
【程序要求】
(1)程序正确。能够严格实现任务书中描述的功能;
(2)界面友好。尽可能使界面友好、直观、易操作;
(3)风格友好。源程序应有良好的编码风格,使程序容易阅读。【输入/输出要求】
(1)应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作项目。进入每个操作后,根据程序的提示输入相应的信息;(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
三、系统的功能结构框图
主函数mian
字符串简单编码字符串
简单解
码
解压缩由命令行
compress生成的压缩
文件
字符串
改进解
码
字符串
改进编
码
调用fun1(),fun2()函数
按enter键解束
jdbm()jdjm()gjbm()gjjm()jy()
目录退出
四、C语言程序代码
//头文件//
#include
#include
#pragma comment(lib,"lz32.lib")
#include
#include
#include
//定义全局变量//
FILE*fp1,*fp2;
char filename1[50],filename2[50],a[100],b[100]; int i,j,k,t;
//打开源文件并读出字符串//
void fun1()
{
i=0;
printf("输入源文件名:");
scanf("%s",filename1);
if((fp1=fopen(filename1,"r"))==NULL)
{
printf("cannot open the file");
exit(1);
}
while(!feof(fp1))
{
a[i]=fgetc(fp1);
t=i;
i++;
}
fclose(fp1);
}
//打开目标文件//
void fun2()
{
printf("输入目标文件名:");
scanf("%s",filename2);
if((fp2=fopen(filename2,"w"))==NULL)
{
printf("cannot open the file");
exit(1);
}
}