版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程设计数据结构课程设计赫夫曼树及赫夫曼编码 院 系: 计算机科学技术学院 班 级: 师计10-2班 姓 名: 濮成林(17) 合 作 者: 高清彬 葛阳 指导教师: 葛建梅 2011 年 12 月 20 日I数据结构课程设计任务书一、题目: 赫夫曼树及赫夫曼编码二、设计要求(1)濮成林(组长)、高清彬和葛阳组成设计小组。(2)小组成员分工协作完成。要求每个成员有自己相对独立的模块,同时要了解其他组员完成的内容。(3)查阅相关资料,自学具体课题中涉及到的新知识。(4)采用结构化、模块化程序设计方法设计,功能要完善,界面美观。(5)所设计的系统要至少应用一个课程中或者与其密切相关的算法。
2、(6)按要求写出课程设计报告。其主要内容包括:封皮、课程设计任务书,指导教师评语与成绩、目录、概述、软件总体设计、详细设计、软件的调试、总结、附录:带中文注释的程序清单、参考文献。报告一律用A4纸打印,中文字体为宋体,西文字体用Time New Roma,一律用小四号字,行距采用“固定值”18磅,首行缩进2字符。总体设计应配合软件总体模块结构图来说明软件应具有的功能。详细设计阐述本人设计模块部分的设计思想、应用到的理论和算法、程序流程等等,调试的叙述应配合出错场景的抓图来说明出现了哪些错误,如何解决的。(7)课程设计报告中的软件总体设计、详细设计、软件的调试等主体内容要以文字描述、图表等形式为
3、主,可配以主要核心代码,在附录中附程序清单。三、课程设计工作量由于是设计小组团结协作完成设计任务,一般每人的程序量在200行有效程序行左右,不得抄袭。四、课程设计工作计划2011年12月14日,指导教师讲课,学生根据题目准备资料;2011年12月16日,设计小组进行总体方案设计和任务分工;2011年12月17日2011年12月22日,每人完成自己承担的程序模块并通过独立编译;2011年12月23日2011年12月24日,将各模块集成为一个完整的系统,并录入足够的数据进行调试运行;2011年12月25日,验收、开始撰写报告;2011年12月26日前,提交课程设计报告。 指导教师签章: 教研室主任
4、签章 数据结构课程设计指导教师评语与成绩指导教师评语:课程设计表现成绩: 课程设计验收成绩: 课程设计报告成绩: 课程设计 总成绩: 指导教师签章 2011年 12 月 26 日31目 录第1章概 述11.1 性能需求11.2 功能需求2第2章概要设计32.1 功能模块设计32.2 算法分析与设计4第3章详细设计63.1 主函数模块设计63.2登录模块设计73.3Huffman树建立模块设计10第4章调试分析与测试结果114.1 调试分析114.2测试结果12第5章总 结14参考文献15附 录16第1章 概 述1.1 性能需求赫夫曼树及赫夫曼编码系统:从用户角度分析,响应时间(最关心的指标)2
5、/5/10原则,过长的时间等待让用户烦燥不安;从系统的稳定性分析 不会发生应用服务器崩溃的现象。本系统执行效率高、资源占用少、系统稳定性好、兼容性好、可靠性强、可扩展性好。服务端:Windows 2003 Server操作系统客户端:Windows 95/98/me/Xp/2000/2003, Unix, Linux,Vista,Mac OS各版硬件系统:奔腾100以上CPU、64M以上内存、1G以上硬盘、光驱。软件系统:WIN-TCWIN-TC是一个TC2 WINDOWS平台开发工具。该软件使用TC2为内核,提供WINDOWS平台的开发界面,因此也就支持WINDOWS平台下的功能,例如剪切、
6、复制、粘贴和查找替换等。而且在功能上也有它的独特特色例如语法加亮、C内嵌汇编、自定义扩展库的支持等。并提供一组相关辅助工具令你在编程过程中更加游刃有余,如虎添翼。 本软件用于编写C语言程序WIN-TC简繁双语版可以正常运行于98及其以上的简体及繁体WINDOWS操作系统上WIN-TC是Turbo C 2.0(简称TC2.0)的一种扩展形式,是在TC2.0的基础上,增强了系统的兼容性和共享性,允许进行复制粘贴的多项可以用鼠标来操作的功能,比TC2.0使用起来方便。1.2 功能需求当今信息时代,信息技术已成为当代知识经济的核心技术。我们时刻都在和数据打交道,比如人们出外工作时找最短路径,在银行查询
7、存款、通过互联网查询新闻、以及远程教育报名等,所有这些都在与数据发生关系。Huffman树,又称“最优树”,是一种带权路径最短的树。Huffman树的提出,不仅具有极大的理论价值,而且它的实际应用也十分广泛。利用Huffman编码进行通讯可以大大提高信道的利用率,缩短信息传输时间,降低传输成本。在解决某些判定问题时,利用Huffman树可以得到最佳判定算法。例如:要编制一个将百分制转换成五级分制的程序。输入的数据量较大的情况下,则应考虑程序的质量问题,Huffman树就可以大大提高其效率。打开程序,进入程序界面:1、 登陆:该模块使用口令登录,口令正确即可登录,系统给出3次机会输入口令,口令错
8、误则退出系统。2、 动画界面:该模块使界面更加美观。3、 Huffman树及Huffman编码:该模块是本系统的主要部分,根据提示,键入数据,动态演示创建赫夫曼树的过程,实现赫夫曼编码。4、 动画界面:感谢语。第2章 概要设计2.1 功能模块设计1、概要设计阶段的主要任务审查软件计划、软件需求分析提供的文档,提出最佳推荐方案,用系统流程图,组成系统物理元素清单,成本效益分析,系统的进度计划,供指导教师审定,审定后进入设计。确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块间的联系,确定数据结构、文件结构,确定测试方法与策略。 编写概要设计说明书,测试计划,选用相关的
9、软件工具来描述软件结构,结构图是经常使用的软件描述工具。选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等。2、概要设计的过程概要设计要先进行系统设计,复审系统计划与需求分析,确定系统具体的实施方案;然后进行结构设计,确定软件结构。根据以上分析,该系统模块结构图如图2-1:开始初始化图形系统播放动画系统进入界面关闭图形系统登录界面结束图2-1 系统模块结构图2.2 算法分析与设计1、如何构造Huffman树已知n个权值 w1, w2, , wn,构造一 棵具有n 个叶子且叶子权分别对应这n个值的Huffman树。具体步骤如下: (1)初始化 构造一个森林F = T1, T
10、2, , Tn,其中每棵二叉树中均只含一个带权值为 wi 的根结点,其左、右子树为空树。W1W2W3Ws1Ws2WnF:(2) 找最小树 从F 中选取其根结点的权值为最小的两棵二叉树,分别作为左、右子树构造一棵新的二叉树,并置新树的根结点的权值为其左、右子树根结点的权值之和。 Ws1+Ws2Ws1Ws2(3) 删除与加入 从F 中将找到的两棵最小树删除,同时加入刚生成的新树。(4) 重复(2)和(3)步,直至F 中只含一棵树为止。2. 赫夫曼树的存储结构Weight lchild rchild parent 3. 赫夫曼树存储表示 typedef struct char data;unsign
11、ed int weight; unsigned int parent, lchild, rchild; HTNode, *HuffmanTree;4. 构造赫夫曼树的算法思想(1)已知n个叶子结点,可得出此Huffman树共有 m(2n-1)个结点。即: m=2n-1(2)分配m+1个存储单元(基址为HT)存储此Huffman树。约定:不用下标为0的存储单元。(3)初始化1至n存储单元,存放叶子结点。 约定:无双亲或无孩子的结点相应的域值为0(4)初始化n+1至m存储单元,各个域值为0。(5)构造Huffman树。即:生成n+1至m结点。5、算法的核心是构造Huffman树(约定:权值小者为左
12、子树)生成 i = n+1 m 的结点。 for(i=n+1;i<=m;i+) 在HT的1到i-1中选择parent为0,且weight最小的两个结点,其序号分别为s1和s2。 按权值小者为左子树原则生成一棵新的二叉树,修改相应结点的lchild 、rchild、 parent域值。 第3章 详细设计3.1 主函数模块设计 denglu();主函数是程序的主控模块。首先进入登陆界面,输入密码,正确则程序开始运行动画;根据提示选择按键,调用赫夫曼函数模块,即可实现操作;操作结束后调用退出函数,进行结束处理,安全退出程序,程序流程图如图3-1所示:口令正确DrawSnow();Creat()
13、; Donghua();图3-1主要代码如下:void main() initgr(); if(denglu()=0) DrawSnow(); page(); cleardevice(); setbkcolor(BLUE); setfillstyle(1,BLUE); floodfill(300,20,WHITE); setfillstyle(1,BLUE); floodfill(20,450,WHITE); creat(); donghua(); 3.2 登录模块设计该模块使用口令登录,口令正确即可登录,系统给出3次机会输入口令,口令错误则退出系统。如图3-2所示:passi=ch;star
14、i='*'YESmoveto(250,192);outtext(star);ch='b'IF YESbar(250,192,399,203);strcmp(pass,buf)=0i+(ch=getch()!='r'i=0nintn;drawmat(ni12S,12,238,264,BLACK);图3-2 登录函数程序流程图主要代码如下:int denglu( ) int n ; char ch; FILE *fp; char pass20="",buf20="",star20="" in
15、t i,j,gdriver=DETECT,gmode; /* 第一次运行时,如下三行用于设置口令字,之后可将其删除fp=fopen("pass1","wb");fwrite("abcd1234",8,1,fp);fclose(fp); */fp=fopen("pass1","rb"); /* 将口令字读入buf字符数组中 */ fread(buf,8,1,fp); fclose(fp); textbackground(7); textcolor(0); initgraph(&gdrive
16、r,&gmode,""); cleardevice(); setcolor(1); /* 画出标题栏 */ setfillstyle(SOLID_FILL,1); bar3d(219,139,419,159,0,0); floodfill(319,140,1); drawmat(deng12S , 12 , 284 , 145 , WHITE ); drawmat(lu12S , 12 , 298 , 145 , WHITE ); drawmat(he12S , 12 , 312 , 145 , WHITE ); drawmat(fu12S , 12 , 326 ,
17、 145 , WHITE ); drawmat(man12S , 12 , 340 , 145 , WHITE ); drawmat(shu12S , 12 , 354 , 145 , WHITE ); setcolor(7); /* 画对话框的框体 */ setfillstyle(SOLID_FILL,7); bar3d(219,160,419,279,0,0); floodfill(319,239,7); setlinestyle(0,0,3); /* 以下在对话框中画线以便增强立体感 */ setcolor(EGA_WHITE); line(219,139,219,279); line(
18、219,139,419,139); line(221,160,418,160); setlinestyle(0,0,1); line(419,138,419,279); line(219,279,419,279); setcolor(EGA_DARKGRAY); line(221,160,418,160); line(219,139,219,278); line(219,139,418,139); drawmat(kou12S , 12 , 230 , 170 , BLACK ); /* 输出“口令:” */ drawmat(ling12S , 12 , 250 , 170 , BLACK )
19、; drawmat(mao12S , 12 , 270 , 170 , BLACK ); setlinestyle(0,0,1); /* 画出口令输入框 */ setcolor(EGA_WHITE); bar3d(229,185,400,205,0,0); setcolor(EGA_DARKGRAY); line(230,186,399,186); line(230,186,230,204); line(230,206,401,206); line(401,186,401,206); line(220,258,418,258); /* 画出深灰色提示框分隔线 */ setcolor(15);
20、/* 画出白色提示框分隔线 */ line(220,259,418,259); setcolor(0); n = 3 ; while(n) for(i=0;(ch=getch()!='r'i+) if(ch='b') if(i=0) i-; else i-;passi='0' stari='0' i-; bar(250,192,399,203); /*?*/ else passi=ch;stari='*' moveto(250,192); outtext(star); if(strcmp(pass,buf)=0)
21、closegraph( ) ; return 0 ; /* 返回值为0,即密码正确*/ else if(n>1) drawmat(cuo12S , 12 , 238 , 264 , BLACK ); drawmat(wu12S , 12 , 252 , 264 , BLACK ); drawmat(plaint , 12 , 266 , 264 , BLACK ); drawmat(qing12S , 12 , 280 , 264 , BLACK ); drawmat(zhong12S , 12 , 294 , 264 , BLACK ); drawmat(shu12S1 , 12 ,
22、308 , 264 , BLACK ); drawmat(ru12S , 12 , 322 , 264 , BLACK ); drawmat(plaint , 12 , 336 , 264 , BLACK ); getch(); bar(222,264,417,275); /* 清除提示行 */ for( j = 0 ; j < 20 ; j+ ) passj='0' starj='0' /*将输入的错误密码清空*/ bar(250,192,399,203); n=n-1; drawmat(ni12S , 12 , 238 , 264 , BLACK );
23、 drawmat(wu12S2 , 12 , 252 , 264 , BLACK ); drawmat(quan12S, 12 , 266 , 264 , BLACK ); drawmat(jin12S , 12 , 280 , 264 , BLACK ); drawmat(ru12S , 12 , 294 , 264 , BLACK ); drawmat(xi12S , 12 , 308 , 264 , BLACK ); drawmat(tong12S , 12 , 322 , 264 , BLACK ); drawmat(plaint , 12 , 336 , 264 , BLACK );
24、 getch(); closegraph(); exit(1);3.3 Huffman树建立模块设计动画结束后,输入按键,进入下一界面;根据提示,输入数据,即可实现动态演示创建赫夫曼树的过程,实现赫夫曼编码。如图3-3所示:i+inti,n,m;i=1i<=ni+i=1i<=ngetchar();fclose(fp);i<=mi+FOR Multihti.weight=hti.parent=hti.lchild=hti.rchild=0; 图3-3 Huffman树建立函数程序流程图第4章 调试分析与测试结果4.1 调试分析调试与测试软件的目标就是发现并改正潜伏的错误。一个程
25、序,必须经过认真的调试和测试,才能尽量减少错误、保证程序满足功能、性能需求,达到最初的设计、使用要求,从而保证程序的开发质量。1、显示界面不美观,用户不能清楚的知道显示的各项内容(如图4-1-1)。经过修改,添加了显示结束的提示信息,使用户可以简单的使用此系统。图 4-1-12、动态分步运行赫夫曼书功能没能实现(如图4-1-2),经过查找资料,修改代码,实现了此功能。图 4-1-24.2 测试结果1、实现了显示界面的美观性,增强程序的可读性(如图4-2-1、4-2-2、4-2-3)。图4-2-1图4-2-2图4-2-32、实现动态分步运行赫夫曼树功能(如图4-2-4)。图4-2-4第5章 总
26、结由于刚开始学习数据结构时对一些算法理解的还不透彻,还不能应用自如,很难编出我们需要的正确程序,而且不能将各种不同的程序相互联系在一起。编译连接时,时常出现重定义、图形初始化失败等问题。但通过查阅指导书关于C库函数的使用,同学间的交流,网上查询,以及所学的关于函数知识和编程,参照以上的资料,依依解决问题,最终,在多次程序调试中,完成了此次课程设计。本程序基本达到了任务书上的要求,动态实现了分步运行赫夫曼树及赫夫曼编码: 本程序特点:人性化设计,用中文DOS运行所有功能非常明确;界面美观,;按键方便,要选择的菜单只要按一个键就可以实现;存储方便,可以在任一时刻存储数据;安全性高,密码加密,并有错
27、误提示;操作简单,输入时可以按Enter键跳入下个数据输入口。本程序不足:当然本程序也有很多不足之处,如:密码错不可以用退格键删除等。进一步设想:实现鼠标控制菜单,使操作更加简单;在观看动画时可以按任意键退出;加入性别识别功能;加入管理员和普通员工管理不同界面。经过半年学习在编程方面了很的大进步,尤其在课程设计的时候更能锻炼我们的综合能力,在这次课程设计的时候也遇到了不少麻烦,同时也认识到自己的能力还有待提高,但是这次在老师和同学们的热情帮助下,比较圆满的完成了任务,以后要更加努力,不断的吸取知识,让自己的编程能力不断提高!两周的课程设计很快过去了,通过教师的指导及查阅相关的资料,基本完成了课
28、程设计的题目,也达到了老师的要求。想要编写出好的程序,需要我们有扎实的基础,这样遇到一些基本算法的时候可能就会游刃有余了。在编程时我们要有丰富的想象力,不要拘泥于固定的思维方式,遇到问题要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识基础上,所以我们要通过多个途径来帮助自己建立较丰富丰富的知识结构。 最后,要非常感谢指导课程设计的葛建梅老师,给予了我们很大的帮助,也让我们学到了更多技巧和知识。老师多次询问编写进程,并为我们指点迷津,帮助我们拓展思路。老师一丝不苟的工作作风,严谨求实的态度,踏踏实实的精神,不仅授我以文,而且教我做人,给予终生受益无穷之道。我还要感
29、谢我们开发小组的其他同学,在设计中他们给予我很大帮助。在这次的课程设计中,我们充分发挥了我们的团队精神。编程是一个集体的工作,所以我们需要有充分地交流,并且要虚心的听取意见,只有这样才能把我们的各自的思想最完整的表达出来并融合在一起。参考文献1 严蔚敏,吴伟民 著 . 数据结构(C语言版). 北京: 清华大学出版社 20102 郑莉 , 董渊 , 张瑞丰 著 . C+语言程序设计(第三版). 北京: 清华大学出版社 20043 谭浩强 著. C程序设计 (第三版) . 北京:清华大学出版社. 20054 曹哲, 赵津燕, 张玲玲 著.C语言实验与课程设计指导 20095 Google &
30、;& 百度 , 即来自互联网6 谭浩强数据结构程序设计题解与上机指导. 北京:清华大学出版社2006.5附 录#include<stdio.h>#include<alloc.h>#include<stdlib.h>#include<conio.h>#include<dos.h>#include<string.h>#include<math.h>#include <graphics.h>#define NULL 0#define SIZE 10char deng12S= /* µ
31、199; */0x7A,0x80,0x4A,0xA0,0x31,0x40,0x1F,0x80,0x20,0x40, 0xDF,0xA0,0x10,0x80,0x1F,0x80,0x10,0x80,0x09,0x00,0xFF,0xE0,0x00,0x00 ;char lu12S= /* ¼ */0x7F,0x80,0x00,0x80,0x3F,0x80,0x00,0x80,0xFF,0xE0, 0x24,0x40,0x16,0x80,0x0D,0x00,0x34,0x80,0xC4,0x60,0x1C,0x00,0x00,0x00 ;char he12S=/*º
32、Õ*/0x20,0x80,0xFB,0xE0,0x20,0x80,0x20,0x80,0xFB,0xE0,0x51, 0x40,0xDB,0x40,0xD5,0x60,0x55,0x40,0x51,0x40,0xB2,0xC0,0x00,0x00,;char fu12S=/*·ò*/0x04,0x00,0x04,0x80,0x7F,0xC0,0x04,0x00,0x04,0x00,0xFF, 0xE0,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xC0,0x60,0x00,0x00,;char man12S=/*Â&
33、#252;*/0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x7F,0xC0,0x52, 0x40,0x7F,0xC0,0x00,0x00,0x3F,0x80,0x0E,0x00,0xF1,0xE0,0x00,0x00,;char shu12S=/* Ê÷ */0x20,0x40,0x2E,0x40,0xF3,0xE0,0x22,0x40,0x2A,0x40, 0x75,0x40,0xA4,0xC0,0xAA,0x40,0x30,0x40,0x20,0x40,0x21,0xC0,0x00,0x00,;char mao12S= /*
34、63;º */0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ;char cuo12S= /* ´í */0x42,0x80,0x42,0x80,0x6F,0xE0,0x82,0x80,0xEF,0xE0, 0x40,0x00,0xF7,0xC0,0x44,0x40,0x57,0xC0,0x64,0x40,0x47,0xC0,0x00,0x00 ;char wu12S= /
35、* Îó */0x47,0xC0,0x24,0x40,0x24,0x40,0x07,0xC0,0xC0,0x00, 0x4F,0xE0,0x41,0x00,0x5F,0xE0,0x52,0x80,0x64,0x40,0x58,0x20,0x00,0x00 ;char plaint= /* £¡ */0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x78,0x00, 0x30,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00 ;char qin
36、g12S= /* Çë */0x41,0x00,0x2F,0xE0,0x01,0x00,0x0F,0xE0,0xC1,0x00, 0x4F,0xE0,0x44,0x40,0x47,0xC0,0x54,0x40,0x67,0xC0,0x44,0x40,0x00,0x00 ;char zhong12S= /* ÖØ */0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80, 0x24,0x80,0x3F,0x80,0x24,0x80,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00
37、;char shu12S1= /* Êä */0x41,0x00,0x42,0x80,0xF4,0x40,0x4B,0xA0,0xA0,0x00, 0xFE,0xA0,0x2A,0xA0,0x3E,0xA0,0xEA,0xA0,0x2E,0x20,0x2A,0x60,0x00,0x00 ;char ni12S= /* Äã */0x12,0x00,0x14,0x00,0x27,0xE0,0x68,0x20,0xB1,0x00, 0x25,0x40,0x25,0x40,0x29,0x20,0x31,0x20,0x21,0x00,0x27,0x00,0x00
38、,0x00 ;char wu12S2= /* ÎÞ */0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0, 0x0A,0x00,0x0A,0x00,0x12,0x00,0x12,0x20,0x22,0x20,0xC3,0xE0,0x00,0x00 ;char quan12S= /* Ȩ */0x20,0x00,0x27,0xC0,0xFC,0x40,0x24,0x40,0x24,0x40, 0x72,0x80,0x6A,0x80,0xA1,0x00,0xA2,0x80,0x24,0x40,0x38,0x
39、20,0x00,0x00 ;char jin12S= /* ½ø */0x44,0x80,0x24,0x80,0x1F,0xE0,0x04,0x80,0xC4,0x80, 0x5F,0xE0,0x44,0x80,0x44,0x80,0x48,0x80,0xB0,0x80,0x9F,0xE0,0x00,0x00 ;char xi12S= /* ϵ */0x03,0xC0,0x7C,0x00,0x08,0x80,0x3F,0x00,0x04,0x00, 0x08,0x80,0x3F,0xC0,0x15,0x00,0x24,0x80,0x44,0x40,0x
40、9C,0x20,0x00,0x00 ;char tong12S= /* ͳ */0x21,0x00,0x27,0xE0,0x51,0x00,0xF2,0x00,0x24,0x40, 0x47,0xE0,0xF2,0x80,0x02,0x80,0x32,0xA0,0xC4,0xA0,0x18,0xE0,0x00,0x00 ;char ru12S= /* Èë */0x18,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0A,0x00, 0x0A,0x00,0x11,0x00,0x11,0x00,0x20,0x80,0x40,0
41、x40,0x80,0x20,0x00,0x00 ;char kou12S= /* ¿Ú */0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,0x00,0x00 ;char ling12S= /* Áî */0x04,0x00,0x0A,0x00,0x11,0x00,0x28,0x80,0xC4,0x60, 0x02,0x00,0x3F,0x80,0x01,0x00,0x1A,0x00
42、,0x04,0x00,0x02,0x00,0x00,0x00 ;void draw_image(int x,int y);void putpixel_demo(void); /*µãÕó×ÖÏÔʾº¯Êý*/void drawmat(char *mat,int matsize,int x,int y,int color) /*×ÖÄ£Ö¸Õë µã
43、3;ó´óС Æðʼ×ø±ê£¨x£¬y) ÑÕÉ«*/ int i,j,k,n; n=(matsize-1)/8+1;/*Óм¸¸ö×Ö·ûλ*/ for(j=0;j<matsize;j+)/*ÐÐ*/ for(i=0;i<n;
44、i+) for(k=0;k<8;k+) if(matj*n+i&0x80>>k) putpixel(x+i*8+k,y+j,color);/* µÇ¼º¯Êý */int denglu() int n ; char ch; FILE *fp; char pass20="",buf20="",star20="" int i,j,gdriver=DETECT,gmode; /* µÚÒ»
45、80;ÎÔËÐÐʱ£¬ÈçÏÂÈýÐÐÓÃÓÚÉèÖÿÚÁî×Ö,Ö®ºó¿É½«Æäɾ³ý */ fp=fopen("pass1&q
46、uot;,"wb"); fwrite("1234",8,1,fp); fclose(fp); fp=fopen("pass1","rb"); /* ½«¿ÚÁî×Ö¶ÁÈëbuf×Ö·ûÊý×éÖÐ */ fread(buf,8,1,fp); fclose(fp); textbackground(7
47、); textcolor(0); initgraph(&gdriver,&gmode,""); cleardevice(); setcolor(1); /* »³ö±êÌâÀ¸ */ setfillstyle(SOLID_FILL,4); bar3d(219,139,419,159,1,0); floodfill(319,140,1); drawmat(deng12S , 12 , 284 , 145 , WHITE ); drawmat(lu12S , 1
48、2 , 298 , 145 , WHITE ); drawmat(he12S , 12 , 312 , 145 , WHITE ); drawmat(fu12S , 12 , 326 , 145 , WHITE ); drawmat(man12S , 12 , 340 , 145 , WHITE ); drawmat(shu12S , 12 , 354 , 145 , WHITE ); setcolor(7); /* »¶Ô»°¿òµÄ¿òÌå */ s
49、etfillstyle(SOLID_FILL,7); bar3d(219,160,419,279,0,0); floodfill(319,239,7); setlinestyle(0,0,3); /* ÒÔÏÂÔÚ¶Ô»°¿òÖлÏßÒÔ±ãÔöÇ¿Á¢Ìå¸Ð */ set
50、color(EGA_WHITE); line(219,139,219,279); line(219,139,419,139); line(221,160,418,160); setlinestyle(0,0,1); line(419,138,419,279); line(219,279,419,279); setcolor(EGA_DARKGRAY); line(221,160,418,160); line(219,139,219,278); line(219,139,418,139); drawmat(kou12S , 12 , 230 , 170 , BLACK ); /* Ê&
51、#228;³ö¡°¿ÚÁ¡± */ drawmat(ling12S , 12 , 250 , 170 , BLACK ); drawmat(mao12S , 12 , 270 , 170 , BLACK ); setlinestyle(0,0,1); /* »³ö¿ÚÁîÊäÈë¿ò */ setcolor(EGA_WHITE);
52、 bar3d(229,185,400,205,0,0); setcolor(EGA_DARKGRAY); line(230,186,399,186); line(230,186,230,204); line(230,206,401,206); line(401,186,401,206); line(220,258,418,258); /* »³öÉî»ÒÉ«Ìáʾ¿ò·Ö¸ôÏ
53、23; */ setcolor(15); /* »³ö°×É«Ìáʾ¿ò·Ö¸ôÏß */ line(220,259,418,259); setcolor(0); n = 3 ; while(n) for(i=0;(ch=getch()!='r'i+) if(ch='b') if(i=0) i-; else i-;passi='0' stari=
54、'0' i-; bar(250,192,399,203); /*£¿£¿£¿*/ else passi=ch;stari='*' moveto(250,192); outtext(star); if(strcmp(pass,buf)=0) closegraph( ) ; return 0 ; /* ·µ»ØֵΪ0£¬¼´ÃÜÂëÕ&
55、#253;È·*/ else if(n>1) drawmat(cuo12S , 12 , 238 , 264 , BLACK ); drawmat(wu12S , 12 , 252 , 264 , BLACK ); drawmat(plaint , 12 , 266 , 264 , BLACK ); drawmat(qing12S , 12 , 280 , 264 , BLACK ); drawmat(zhong12S , 12 , 294 , 264 , BLACK ); drawmat(shu12S1 , 12 , 308 , 264 , BLACK ); dra
56、wmat(ru12S , 12 , 322 , 264 , BLACK ); drawmat(plaint , 12 , 336 , 264 , BLACK ); getch(); bar(222,264,417,275); /* Çå³ýÌáʾÐÐ */ for( j = 0 ; j < 20 ; j+ ) passj='0' starj='0' /*½«ÊäÈëµÄ
57、0;íÎóÃÜÂëÇå¿Õ*/ bar(250,192,399,203); n=n-1; drawmat(ni12S , 12 , 238 , 264 , BLACK ); drawmat(wu12S2 , 12 , 252 , 264 , BLACK ); drawmat(quan12S, 12 , 266 , 264 , BLACK ); drawmat(jin12S , 12 , 280 , 264 , BLACK ); drawmat(ru12S , 12 , 294 , 264 , BLACK ); drawmat(xi12S , 12 , 308 , 264 , BLACK ); drawmat(tong12S , 12 , 322 , 264 , BLACK ); drawmat(plaint , 12 , 336 , 264 , BLACK ); getch(); closegraph(); retur
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社群管理技巧
- 大班安全火娃娃
- 患者安全护理医疗事故
- 诚信作文课件
- 藤野先生课件2017
- 苹果客户管理
- 食品安全与卫生幼儿园
- 小学教师个人工作总结6篇
- 升学宴嘉宾致辞合集8篇
- 小学语文草原的课件
- (完整版)【钢琴谱】大鱼钢琴谱
- (完整word版)英语四级单词大全
- 线束生产控制计划CP实例
- 基于风险的软件测试策略
- 大锁孙天宇小品《时间都去哪了》台词剧本完整版-一年一度喜剧大赛
- 双重血浆置换
- 2023北京海淀区高二上学期期末英语试题及答案
- 从分数到分式教学设计-
- 酒店长期租房合同模板(16篇)
- 场域与对话-公共空间里的雕塑 课件-2023-2024学年高中美术人美版(2019)美术鉴赏
- 关于违规收受礼品礼金警示教育心得体会范文
评论
0/150
提交评论