计算机程序设计综合实验

合集下载

程序设计实训实验报告(热门20篇)

程序设计实训实验报告(热门20篇)

程序设计实训实验报告(热门20篇)c语言是在国内外广泛使用的一种计算机语言。

其语言功能丰富、表达能力强、使用灵活方便、既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件。

其功能强大,不仅用在计算机上广泛用在电子,机械等方面上,而且,所有的windows,unix,linux,mac,os/2,无一例外,哪一个不是c 语言写的?很多新型的语言如,c++,java,c,j,perl...都是衍生自c语言。

掌握了c语言,可以说你就掌握了很多门语言。

学习c程序这门课一年了,这是我们学的第一门专业课,在大学里c语言不但是计算机专业的必修课程而且也是非计算机专业学习计算机基础的一门必修课程。

所以作为我这个计算机专业的学生来说当然十分重要,老师在第一节课说过,c语言是计算机的基础,大多数软件都需要用c语言来编写,通过一个年的学习,使我由初步掌握简单的应试知识到完成高难度的深入编程,如我们在编写一个较大的程序时应该把它分开成几个小程序来看,这样会容易得多。

同时,我觉得c语言应该是操作和理论相结合的课程,在不断地编写中去思考,两者是不可分割的。

在学习一年c语言的过程中我也在慢慢探索怎样才能学好c语言,并总结了一点经验:要了解c语言就要从语法规为基础来学习起,首先要是要了解它的结构,比如变量,首先要了解变量的定义方式(格式),其意义是什么(定义变量有什么用);其次就是要我要怎么去运用它(我要用什么型式去应用它)。

在c语言的命令行中所有的语句都是有它自己的一定格式和形式出现在我们面前,所以我们在学习某种语句或命令时你首先要了解的就是它的规则是什么、有什么用、怎么实现等。

这些都是语法基础也是c语言的基础如果把它们都了解很好了,那么你编起程序来就很得心应手了。

比如说ifelse和switchcase这两种条件语句都是用来判断执行功能的,那我要什么时侯用if什么时侯用switch呢?如果你很好地了解它们的结构和作用的话那么就知道:若它的条件分支是多个而且条件的值是整数或是一个字符值时就会选switch而不会选if。

计算机程序设计C程序设计教案3篇

计算机程序设计C程序设计教案3篇

计算机程序设计C程序设计教案第一篇:计算机程序设计基础一、课程概述计算机程序设计是计算机科学与技术专业的重要课程之一,它主要是通过讲解计算机程序设计的基础知识、方法和技巧,培养学生的程序设计能力和计算机应用能力,从而使学生能够熟练掌握C语言,为其今后的专业学习以及职业发展打下坚实的基础。

二、主要内容本课程主要涉及以下内容:1. C语言基础知识:常量、变量、数据类型、运算符等;2. 控制结构:条件语句、循环语句等;3. 函数:函数的定义、调用、返回值等;4. 数组:一维数组、多维数组等;5. 指针:指针的定义、使用、指针与数组等;6. 文件操作:文件的读写操作等。

三、教学目标1. 熟练掌握C语言的基础知识,能够独立编写简单的C程序;2. 理解掌握C语言的控制结构,能够使用条件语句、循环语句等进行程序设计;3. 熟练掌握函数的定义、调用、返回值等知识,能够编写简单的函数;4. 具备一定的数组使用能力,能够编写简单的数组应用程序;5. 熟练掌握指针的定义、使用、指针与数组等知识,能够编写简单的指针应用程序;6. 了解文件操作的基本知识,能够进行文件读写操作。

四、教学方法1. 授课法:授课老师通过讲解授课,向学生讲解C语言的基础知识、方法和技巧;2. 编程实践法:在课堂上,通过编写小程序来帮助学生理解和掌握知识;3. 课堂讨论法:通过讨论经典例题,帮助学生理解和掌握知识;4. 课程设计法:在课程设计中,通过设计、开发并实现一些小应用系统,来帮助学生更好地将所学知识应用到实际中。

五、教学评估方式1. 平时表现评估:包括作业完成情况、课堂参与情况、考勤情况等;2. 考试评估:学习期末将组织一次考试,将学生平时的学习情况作为重要考评基础;3. 课程设计评估:学习期末,将限定时间内完成的小应用系统作为课程设计的评估方式。

六、教学建议1. 建议学生在学习过程中注重实践,通过编写越来越复杂的程序来逐步掌握所学知识;2. 建议学生在平时多进行思考和探索,掌握自主学习的方法;3. 建议学生积极参与课堂,多与老师和同学互动,及时解决疑惑和问题。

综合实验(2)任务书

综合实验(2)任务书

计算机基础综合实验(2)任务书一、综合实验目的C语言程序设计是本科工科类各专业的重要基础课,主要学习程序设计的基本概念和方法,通过本门课程学习,使学生掌握C语言的基本原理,熟练掌握程序设计的基础知识、基本概念;掌握程序设计的思想和编程技巧。

综合实验是在学生已经具备了使用C语言编写简单的应用程序的能力,为使学生对C语言有更全面的理解,进一步提高运用C语言编程解决实际问题的能力,通过提出算法、指定输入输出来设计一个解决方案。

并为参加计算机等级考试做准备。

二、综合实验的基本内容和要求参加综合实验的学生,应当认真完成综合实验的全部内容。

最终提交综合实验成果来证明其独立完成各种实际任务的能力。

从而反映出理解和运用本课程知识的水平和能力。

具体如下:1、代码编写规范,形成良好的编程习惯;2、程序须有一定的健壮性和必要的提示信息,考虑问题的多种可能和边界数据。

3、提交综合实验报告电子稿、装订的打印稿。

综合实验报告内容包括以下几个方面:●程序的总体设计和算法分析。

●程序流程图、函数说明●源程序代码清单●测试数据和测试过程记录●遇到的问题及解决方法分析●综合实验小结4. 程序运行方式构建一个简易菜单,形如:用户通过输入数值选择所需运行的子程序,当一个子程序运行结束后回到菜单界面,直至用户输入0后退出程序。

三、综合实验的进度安排熟悉指针、结构体、文件内容1天整体设计和详细设计、编代码1天编代码、调试和测试1天综合实验报告书写1天演示软件1天四、综合实验的考核评价是检测学生理解问题和解决问题能力的一个重要手段,教师将根据学生提交的综合实验报告,严格检查以下各项任务完成情况:1、设计文档中要求项目是否齐全。

2、程序中运行时的屏幕提示信息是否准确:如果在程序执行期间有足够的指导信息显示在屏幕上显示,这些用户文档可以是很简要的,也许只限于解释如何装入并运行程序。

3、问题和任务的陈述(描述问题,而且问题是合理原始的、应当包括输入、输出及其预期范围)是否正确。

计算机C++程序设计实验报告

计算机C++程序设计实验报告

一、实验项目名称Visual C++实验环境熟悉及C++语言初步二、实验目的1.了解Visual C++的安装与使用2.熟悉Visual C++程序的编辑、编译、运行及调试3.熟悉简单 C/C++ 程序的基本组成。

4.掌握 C/C++ 程序中输入输出数据的基本方法。

5.掌握编译预处理命令的使用。

6.写出实验步骤,分析调试中出现的问题及解决方法,给出改进方案,写出程序文档和调试数据。

三、实验基本原理四、主要仪器设备及耗材PC微机Windows 操作系统Microsoft Visual C++6.0 程序集成环境五、实验步骤、源程序及实验结果1.下列程序是从键盘输入一个整数,然后计算它的平方并以十六进制的形式输出。

请在Visual C++ 输出、调试该程序。

#include "iostream.h"void main( ){ int x;cin>>x;int y=x*x;cout<<"x*x=="<<hex<<y<<endl;}程序运行结果:2.编写一个计算梯形面积的程序。

要求梯形的上底、下底和高在变量初始化时直接赋值。

源程序:#include <iostream.h>void main( ){float a,b,c,s;a=3.0;b=4.0;c=5.0;s=0.5*(a+b)*c;cout<<"s="<<s<<endl;}程序运行结果:3.编写一个计算一个学生三门课平均成绩的程序。

要求学生成绩从键盘输入。

源程序:#include <iostream.h>void main( ){int a,b,c,d;cin>>a>>b>>c;d=(a+b+c)/3;cout<<"d=="<<d<<endl;}程序运行结果:4.编写一个计算和估计地球重量的程序,并测试它。

沈阳工业大学实验报告(计算机类)

沈阳工业大学实验报告(计算机类)

实验报告课程名称:CAD/CAM技术与工程软件实验项目:综合实验专业班级:机自1102班姓名:学号:110101226实验室号:机械楼201 实验组号:实验时间:批阅时间:指导教师:成绩:沈阳工业大学实验报告专业班级:机自1102班学号:110101226 姓名:汪泽洲实验名称:NX CAD/CAM技术与工程软件综合实验绘制减速器上盖附件A 沈阳工业大学实验报告专业班级:机自1102 学号:110101226 姓名:汪泽洲实验具体步骤:(可加附页)(适用计算机程序设计类)专业班级:国际贸易0501 学号:05010022 姓名:李晓光实验室:综合楼310机房实验组号(或微机编号):B4 实验名称:(适用计算机程序设计类)专业班级:国际贸易0501 学号:05010022 姓名:李晓光实验步骤或程序:1.创建数据库及表,并向表中添加数据。

学生表数据如下:课程表数据如下:选课表数据如下:2.创建查询(1)查询全部学生信息。

在SQL窗口输入语句:SELECT * FROM 学生,如图所示。

运行结果如下:(2)查询王明所选修的课程编号和成绩。

在SQL窗口输入语句:SELECT 课程号,成绩FROM 选课WHERE 学号IN (SELECT 序号FROM 学生WHERE 学生.姓名=“王明”) 如图所示。

运行结果如下:分析:从学生表课查到“王明”的学号为“0501002”,从选课表可查到“0501002”只选了一门课,课程号为“002”,成绩60。

该SQL语句是正确的。

(3)查询刘晓轩选修的课程名称及任课教师。

在SQL窗口输入语句:SELECT 课程号,教师FROM 课程WHERE 课程IN (SELECT 课程号FROM 选课WHERE 学生号IN(SELECT 学号FROM 学号WHERE 姓名=“刘晓轩”)如图所示。

运行结果如下:分析:从学生表课查到“刘晓轩”的学号为“0501003”,从选课表可查到“0501003”只选了三门课,课程号为001、002、003,从课程表可以查到这三门课的任课教师是张扬、王一、黄晶。

计算机程序编程课程设计实验报告

计算机程序编程课程设计实验报告

计算机程序编程课程设计实验报告1车辆违章实验名称管理系统学院通信工程学院专业班级通信工程系11级25班姓名梁仙友学号52112507任课教师孙大洋实验时间2013/8/12验目的:使用C语言实现交通车辆违章管理系统的违章信息录入、违章情况查询、针对每台车辆统计罚款总金额等基本操作。

进一步巩固C语言的学习,培养一定的综合编程能力。

系统功能模块结构图:1.车辆及违章信息的录入2.基于车牌号查询每台车辆的违章情况3.基于车牌号统计每台车辆的罚款总金额数据结构设计及用法说明:数据结构定义如下:typedef struct Pe{char vno[8]; /*车牌号*/char name[15]; /*车主姓名*/int times1; /*违章停车次数*/int times2; /*闯红灯次数*/int times3; /*超速次数*/}PECCANCY;需要处理的基础数据:设违章种类分为违章停车、闯红灯、超速等三种。

设违章停车每次罚款100元、闯红灯每次罚款200元、超速每次罚款500元。

需处理的车辆及违章基本信息包括:车牌号、车主姓名、违章停车次数、闯红灯次数、超速次数.程序结构(画流程图):开始声明变量i=0,j,b,k;数组m[10];结构体变量PECCANCY PE[500];输入车牌号PE[i].vno,车主姓名PE[i].name,违章停车次数PE[i].times1,闯红灯次数PE[i].times2,超速次数PE[i].times3,输入kk为1返回输入,为2输出输入查找的车牌号,车主姓名,违章停车次数,闯红灯次数,超速次数a<=im=PE[a].vno输出该车主的违章情况没有此人信息结束源程序如下:#include<stdio.h>#include<string.h>typedef struct车牌号*/name[15]; /*车主姓名*/违章停车次数*/闯红灯次数*/超速次数*/罚款总金额*/void main()int i=0,j,b,k;char m[10];PECCANCY PE[500]; /*结构体数组*/printf("如要输入请按1,并按回车\n");/*确认输入*/"%d",&j);printf("请输入车牌号,并按回车\n");scanf("%s",PE[i].vno);printf("请输入车主姓名,并按回车\n");scanf("%s",PE[i].name);printf("请输入违章停车次数,闯红灯次数,超速次数,并按回车\n");scanf("%d,%d,%d",&PE[i].times1,&PE[i].times2,&PE[i].times3);fine=100*PE[i].times1+200*PE[i].times2+500*PE[i].times3;/*计算罚款金额*/ i=i+1;printf("继续输入请按1,否则请按2\n");scanf("%d",&k);if (k==2) break;}}如要查询请按2,并按回车\n");请输入您要查询的车牌号,并按回车");scanf("%s",m);=0;a<=i;a++)p(m,PE[a].vno)==0) /*查询违章情况及罚款情况*/f("车牌号:%s\n",PE[a].vno);("车主姓名:%s\n",PE[a].name);printf("违章停车次数:%d\n",PE[a].times1); ("闯红灯次数:%d\n",PE[a].times2);超速次数:%d\n",PE[a].times3);("罚款总金额:%d\n",PE[a].fine);break;}没有您要查找的信息");测试数据及运行结果如下:实验心得通过该实验,我对结构体数组有了更深层次的了解,输入输出函数分支(if,if``else,if```else if```)和循环结构(for,while,do```while)的几种用法更加熟练。

高校计算机程序设计类课程实验教学模式研究

高校计算机程序设计类课程实验教学模式研究

较 差 。在 理 论知 识 讲 授 的过 程 中,还 存 在 一 些 如 讲 授 方 法 僵化 、讲 授 用 实 例 选 择 不 恰 当 、条 理 性 和 逻 辑 性 不 强
等 问题 。
4 )案例 教 学 中存 在 的 问题 。程 序 设 计课 程 中主 要 的
2 具体教 学 过程 分析
内蒙古师范大学传媒学院 呼和浩特
0 0 2 10 2
1研究 背 景
獭 一~ 一一一 趱~洲 ~ 一~ 一一 _咖 一 博 里一 ~ 一一 一. 一 c
序设 计教 学效 果 的第 一步 。
和 调试 比较耗 时 ,在 2 课 时 内不 大可 能 完成 一 个完 整 案 个
解 时 ,学 生 只 能被 动 地 听讲 和 记 忆 , 其记 忆 和 理 解 效 果
落 后 、学 生普 遍 不 重 视 实 验 课 等 问 题 。而 目前从 事 实
验 教 学 的 教 师 队伍 中 ,年 轻 教 师 又 占有较 大 的 比重 ,教 学经 验 上存 在 一些 不 足 。 因此 ,有 必 要对 计 算机 程 序 设 计 类 课 程 的 实验 教 学 过 程 进 行 深 入探 讨 ,分 析 其 基 本 的 过 程 和特 征 ,进 而 提 出一 种 一 般化 的 教学 模 式 和 程 序 , 对 同类实 验教 学 的开展 提供 一 定 的参照 作用 。 本 研 究 只针 对 在 多媒 体 机 房 环 境 进 行 授 课 、 以 讲练 结合 形 式 进 行 理 论 教 学 、 以计 算 机 操 作 练 习 为 主要 学 习 内容 的实 验 教 学 过程 ,在 传 统 教 室 进 行 程序 设计 理 论 讲 授 的教学 过程 不在本 研 究之 列 。
性 和 趣 味 性 不够 、案 例 的深 度 不 够 、 缺 少 扩展 性 , 以及 案 例陈 旧 ,缺 乏更新 等 。

计算机编程实训报告总结

计算机编程实训报告总结

计算机编程实训报告总结实训是指包含实训目的、实训环境、实训原理、实训过程、实训结果、实训等方面内容的书面汇报材料,类似于理科课程的实验报告。

下面就是小编整理的计算机编程总结,一起来看一下吧。

计算机编程实训报告总结篇一此次暑期实习的主要目的是做一个与数据库有关的小系统。

比如:学生信息管理系统、工资管理系统等。

熟悉数据库的基本操作,掌握SQL语言。

我们小组所做的是关于学生宿舍的信息管理系统。

在这次实习中,我们运用的平台是vs2010(c#),因为大三的软件工程课也是运用了vs2010,而且大二时学习windows程序设计时用的是Microsoft Visual Studio 2005,基本一样。

而数据库的选择,选用了Access2010,Access供了一个能在办公室环境下使用的、操作简便、易学好用的关系型数据库管理系统,,而我们在大一暑期实习时也学习了这一方面的内容。

通过对老师提供的几个例子的学习,我们开始了我们的数据库系统设计。

通过这个学生宿舍管理系统的设计和实现,我们虽然遇到了一些困难,但是最后我们都一一解决了这些问题,了解并掌握了自己对数据库和VS的不足,并且学到了很多东西。

数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。

数据库设计时需要综合企业各个部门的存档数据和数据需求,分析各个数据之间的关系,按照DBMS提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型。

设计完我们的数据库,我们就开始了VS2010和Access的连接。

但是在最开始的时候,我们只知道这两个独立的工具,对于它们的连接可以说是一无所知,通过学习,我们终于了解了,数据库与vs2010连接要先创建数据容器,创建数据集,填充数据集,从而把数据库中的数据显示在vs2010的控件中,学习过后才感觉到不是东西太难,而是我们对新事物的恐惧和不了解。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机程序设计综合实验姓名:张起学号:201332010615班级:自动化六班撰写时间:2015年7月8日A部分一. 需求分析(一)设计要求:1、编写压缩程序, 为一个文本文件进行Huffman编码, 对其进行压缩, 将压缩后的结果存储为文件。

2、编写解压程序, 将你压缩后的文件解压缩还原为原始文件。

3、程序要能够处理较大的文本文件, 例如提供的“kjv.txt”。

(二)问题分析:本课题是利用哈夫曼编码思想,设计对一个文本文件(kjv.txt)中的字符进行哈夫曼编码,生成编码压缩文件,并且还可将一个压缩后的文件进行解码还原为原始文本文件(kjv.txt)。

在了解哈夫曼压缩解压缩原理之前,首先让我们来认识哈夫曼树。

哈夫曼树又称最优二叉树,是带权路径长度最小的二叉树。

在文本文件中多采用二进制编码。

为了使文件尽可能的缩短,可以对文件中每个字符出现的次数进行统计。

设法让出现次数多的字符二进制码短些,而让那些很少出现的字符二进制码长一些。

若对字符集进行不等长编码,则要求字符集中任一字符的编码都不是其它字符编码的前缀。

为了确保哈夫曼编码的唯一性,我们可以对它的左右子树的大小给予比较限定,如:左子树的权值小于右子树的权值。

哈夫曼树中的左右分支各代表‘0’和‘1’,则从根节点到叶子节点所经历的路径分支的‘0’和‘1’组成的字符串,为该节点对应字符的哈夫曼编码。

统计字符中每个字符在文件中出现的平均概率(概率越大,要求编码越短)。

利用哈夫曼树的特点:权越大的叶子离根越近,将每个字符的概率值作为权值,构造哈夫曼树。

则概率越大的节点,路径越短。

哈夫曼译码是从二进制序列的头部开始,顺序匹配成共的部分替换成相应的字符,直至二进制转换为字符序列。

哈夫曼用于文件解压缩的基础是在压缩二进制代码的同时还必须存储相应的编码,这样就可以根据存储的哈夫曼编码对压缩代码进行压缩。

总之,该课题的任务应该是首先要打开要压缩的文本文件并读出其字符出现的频率,以其为权值构建哈夫曼树。

其次要找到构建压缩功能的方法,在构建哈夫曼树的基础上进行编码,改变字符原先的存储结构,以达到压缩文件的目的,以外还有存储相应的哈夫曼编码,为解压缩做准备。

二. 设计1. 技术路线1、输入要压缩的文件首先运行的时候,用户主界面上有菜单提示该如何使用软件,根据菜单提示选择所要执行的项,依次进行,因为各个环节之间有先后顺序。

第一步为输入压缩软件的名称,由键盘输入文件路径和文件名称,读入字符数组中,打开该文件,按照提示进行压缩。

若打不开,则继续输入。

2、读文件并计算字符频率文件将信息存放在字符数组中;计算每个字符出现的次数,申请一个结构体数组空间,用读取的字符减去字符结束符作为下标记录字符的频率。

3、根据字符的频率,利用Huffman编码思想创建Huffman树将所记录的字符的频率作为权值来创建Huffman树,依次选择权值最小的两个字符作为左右孩子,其和作为父结点的权值,依次进行下去,直到所有的字符结点都成为叶子结点。

4、由创建的Huffman树来决定字符对应的编码,进行文件的压缩根据创建的Huffman树来确定个字符的01编码,左孩子为0,右孩子为1。

读取文件,依次将每个字符用他们的编码表示,即完成一次编码。

5、解码压缩即根据Huffman树进行译码读取编码文件,依据创建的Huffman树,定义一个指针指向根结点。

从根结点开始,每读一个字符,指针变化一次(当读取的字符是‘1’时,指针指向当前所指结点的右孩子,当读取的字符是‘0’时,指针指向当前所指结点的左孩子),直至该指针所指结点为叶子结点时结束(即当结点的左右孩子均为空时)。

将当前叶子结点所代表的字符值输出到译码文件中,依次读取编码文件中的字符,按照上述方法依次进行下去直至文件图1-1 哈夫曼设计思想2. 流程图与结构图(1)函数流程图主要步骤:编码和解码核心算法----huffman算法:1、根据给定的n个权值{w1,w2,……,wn}构成n棵二叉树的集合F={T1,T2,……,Tn},其中每棵二叉树T1中只有一个带权的 w1的根据点,其左右子树均空。

2、在F中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树,且置新的二叉树的根结点的权值为其左右树上根结点的权值之和。

3、在F中删除这两棵树,同时将所得到的二叉树加入F中。

4、重复(2)(3),直到F中只含一棵树为止。

这棵树便是Huffman树。

Huffman树可用于构造代码总长度最短的编码方案。

为了详细说明这个问题,特以下面例子来说明:有四个叶子结点A,B,C,D,分别带权为9,4,5,2,可以构成许多种不同的带权二叉树,但各个带权二叉树的WPL(树的带权路径长度)不同,要想由n个带权叶子结点所构成的二叉树中,满二叉树或完全二叉树不一定是最优树。

权值越大的结点离根越近的二叉树才是最优二叉树(huffman树)。

按照上面的算法,则可按照下面图的构造过程生成huffman树。

图1-2 Huffman树产生流程图1-3 Hufffman编码流程图1-4 Hufffman编码流程三. 测试以下是我在上机过程中遇到的一些问题及解决方案开始考虑问题是,要对文件进行压缩,如何才能达到比较好的效果,那就huffman编码是采用等长编码还是采用不等长问题,采用不登长编码要避免译码的二义性或多义性。

假设用0表示字符D,用01表示字符C则当接受到编码串“…01…”,并译到字符0时,是立即译出对应的字符D,还是接着与下一个字符1一起译为对应的字符C,这就产生了二义性。

因此,若对某一个字符集进行不等长编码,则要求字符集合中任何一个字符的编码都不能是其他字符编码的前缀。

符合此要求的编码叫做前缀编码。

显然等长编码是前缀编码,这从等长编码所对应的编码二叉树也可以直接看出,任何一个叶子结点都不可能是其它叶子结点的双亲,也就是说,只有当一个结点是另一个结点的双亲时,该结点的字符编码才会是另一个结点的字符编码的前缀。

为了使不等长编码为前缀编码,可用该字符集中的每个字符作为叶子结点生成一棵编码二叉树,为了获得文件的最短长度,特将每个字符的出现频率作为字符结点的权值赋予该结点上,求出此树的最小带权路径长度就等于文件的最短长度。

因此,对文件进行压缩,就可以转化字符集中的所有字符作为叶子结点,字符出现的频率作为权值所产生的 huffman树的问题。

基本思路大致有了后,接下来是对程序的编写工作,程序初步形成后,对其测试,发现了一些语法错误,修正后编译通过。

在课程设计过程中,我选择了《Huffman的压缩和解压缩》这一课题,虽然这个课题所涉及的知识自己不太熟悉,属于数据结构与算法的内容,但通过借助书本,自己动手实践,还是掌握了一点关于数据结构的知识,通过两周的课程设计使我对哈夫曼树以及哈夫曼编码有了更深的认识和理解,利用哈夫曼编码的思想方法,熟练掌握哈夫曼编码的过程。

创建二叉树的方法和二叉树的存储结构,知道压缩文件是如何进行的,解压缩即为它的逆过程。

程序的模块化结构尤其重要,应掌握各个模块间的逻辑关系和整体程序的结构。

其实在这次课程设计中遇到很多问题,第一就是知识不熟悉,必须从最基本的书本知识看起,通过查阅资料,使我对程序的一些算法有了最基本的了解。

其次通过网络资源使我了解的知识更加丰富,增强了我对网络资源的检索能力,使我能够更好的应用网络资源来完成自己需要完成的任务。

所以课程设计不仅能培养我们的专业知识,而且还能培养我们的动手能力,使我们以后能够更加适应社会的发展。

通过这次课程设计,使我的自学能力有所提高,让我知道了怎么去熟练掌握知识并且能够很好的掌握它。

同时也增强我的独立思考能力和动手能力;通过编写程序代码和调试运行,我们可以逐步积累调试程序的经验,逐渐培养我们的编程能力和利用计算机解决实际问题的能力。

课程设计为我们提供了一个自己动手实践的平台。

另一方面,在课程设计的过程中,使我明白了面向对象与面向对象的差别。

在面向对象过程中,类的设计是至关重要的,类设计好了等于程序就成功了一半,所以这次的课程设计帮助我复习了这一学期面向对象课程的学习,刚好可以弥补这一学期面向对象学习的不足。

这次课程设计不但使我掌握了一些知识,更重要的是使我认识到了作为程序员的艰辛和辛苦。

一个星期面对着电脑,在你面前只有一行行的代码,在你的耳旁只有键盘的敲击声和点击鼠标的声音,说实话确实很无聊也很辛苦。

但当自己看到自己编写的程序顺利通过的时候,心里的成就感就油然而生,心中的疲倦也消失了,我想,当程序员看到自己的程序能够编译成功的话,也是这种感觉吧!虽然这次课程设计结束了,但我们学习C++等语言的步伐不能停止,在今后的学习过程中,我会更加努力,争取在今后的课程中学得更好,下次的课程设计能够更加成功。

(1)程序运行主界面如图4所示图1-5 程序主界面(2)编码界面图1-6 编码界面若用户想要对某一文件进行压缩,则按主界面的提示按“1”,然后界面提示输入进行压缩操作的文件名,输入完成后按回车键,此时界面会提示输入压缩后文件的文件名,输入完成后再按回车键,便可完成编码,同时会显示出各字符的哈夫曼编码,系统也会提示用户压缩文件过程结束(3)解码界面图1-7 解码界面若用户想对某一压缩文件进行解压操作,则按主界面的提示按“2”,然后界面提示输入进行解压操作的文件名,完成输入后按回车键,此时界面会提示输入解压后的文件的文件名,输入完成后再按回车键,便可完成译码,系统提示用户还原文件过程结束。

经过测试,程序运行稳定,符合实验要求。

B部分一. 需求分析编写程序, 实现扫雷游戏, 功能上模仿winows自带的扫雷游戏(1)鼠标左击排雷,右击插小旗,打问号;(2)方格里面的数字表示方格周围的雷数;(3)能够显示未标记雷数和游戏用时;(4)雷区上面的小脸可以变化,显示微笑,惊讶,痛苦,胜利。

在任何情况下单击小脸可以重新开始游戏;(6)排行榜功能,扫雷成功时候,根据游戏用时更新排行榜。

二. 设计1. 技术路线1、扫雷游戏是很经典也很有趣的一款游戏,这次的游戏程序设计要求设计出功能与原游戏相近的一款游戏,首先定义变量和类要画出游戏方格以及位图;然后设置随机布雷以保证每次重新开始游戏都有不同的雷区地图;另外定义鼠标左击扫雷,左击标记周围埋雷情况,右击奇数次排雷偶数次取消上次排雷,以及扫雷第一次左击不能扫到雷。

2、流程规划大致上可以分为三个部分,分别为:画面初始、游戏者按下第一个方块和为非地雷方块时展开。

3、画面初始时,以游戏者最后一次设定的地雷区大小为范围画出地雷区,当游戏者按下第一个方块时产开始计时,接着就是如何判断按下的方块是非地雷时的处理,这也是整个游戏的技术核心,我们可以通过递归的观念来检查周边的方块是否含有地雷及是否继续往外翻开,当鼠标指针对准未翻开的方块按下左键时即表示翻开方块,当鼠标指针对准未翻开的方块按下右键时即表示标示或疑示地雷,反复按下右键则方块会以未标示→标示→疑似三者关系不断循环。

相关文档
最新文档