数制转换课程设计说明书_第1页
数制转换课程设计说明书_第2页
数制转换课程设计说明书_第3页
数制转换课程设计说明书_第4页
数制转换课程设计说明书_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、专业基础综合课程设计设计说明书进制转换的实现学生姓名学号班级成绩指导教师数学与计算机科学学院2012 年6 月29日数据结构课程设计评阅书题 目进制转换的实现学生姓名学号指导教师评语及成绩成绩: 教师签名: 年 月 日答辩教师评语及成绩成绩: 教师签名: 年 月 日教研室意见总成绩: 室主任签名: 年 月 日注:指导教师成绩60%,答辩成绩40%,总成绩合成后按五级制记入。课程设计任务书2011 2012 学年第 二 学期专业:计算机应用技术 学号: 姓名: 课程设计名称: 数据结构课程设计 设计题目: 进制转换的实现 完成期限:自 2012 年 6 月 18 日至 2012 年 6 月 29

2、 日共 2 周设计依据、要求及主要内容(可另加附页):计算机中数据的存储形式是0,1代码,也就是以二进制的形式进行存储,运用c或vc+结合数据结构等基础知识,按以下要求实现各种进制的转换。任务要求:1)阐述设计思想,画出流程图;2)能完成用户输入的十进制数转换为二进制、八进制、十六进制及其他进制数,以及将其他任意进制数转换成十进制的功能;3)除十进制以为的其他进制之间的相互转换功能的实现;4)将用户的输入及要求的结果能对应打印输出;5)应用较好的界面设计,说明程序测试方法;6)按照格式要求完成课设说明书。设计要求:1)问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做

3、什么?(而不是怎么做?)限制条件是什么?确定问题的输入数据集合。2)逻辑设计:对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图;3)详细设计:定义相应的存储结构并写出各函数的伪码算法。在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。详细设计的结果是对数据结构和基本操作做出进一步的求精,写出数据存储

4、结构的类型定义,写出函数形式的算法框架;4)程序编码:把详细设计的结果进一步求精为程序设计语言程序。同时加入一些注解和断言,使程序中逻辑概念清楚;5)程序调试与测试:采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果;6)结果分析:程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。算法的时间、空间复杂性分析;7)编写课程设计报告;以上要求中前三个阶段的任务完成后,先将设计说明数的草稿交指导老师面审,审查合格后方可进入后续阶段的工

5、作。设计工作结束后,经指导老师验收合格后将设计说明书打印装订,并进行答辩。指导教师(签字): 教研室主任(签字): 批准日期: 年 月 日摘要: 本次课程设计设计了一个任意进制之间转换的软件程序系统,开发本系统,解决任意进制之间的相互转换,系统主要有以下几个模块:任意进制转换为十进制、十进制转换为任意进制以及两者组合实现任意进制间的相互转换。本软件程序系统在windows 2000/XP系统下,以Microsoft Visual C+ 6.0为运行软件环境,采用C/C+语言进行编写,操作简单明了,实际解决各进制数之间的转换。目录1 课题描述12 问题分析和任务定义23 逻辑设计34 详细设计7

6、5 程序调试与测试 10 5.1十进制转换为任意进制 105.2任意进制转化为十进制 115.3任意进制间的转换 12总结 18参考文献 191 课题描述在计算机内部,数据是以二进制表示的,而人们习惯上使用的是十进制数,所以计算机从我们这里接收到十进制数后,要经过翻译,把十进制数转换为二进制数才能进行处理,该系统能够根据用户的要求,用C语言来编写这个程序,实现二进制、八进制、十进制、十六进制之间的相互转化,以及任意进制间的相互转换。系统开发基于Windows2000/Xp平台,以Visual C+6.0等作为开发工具。2 问题分析和任务定义数制转换程序是要求任意两种数间的相互转化,本次课程设计

7、以任意进制间转换为中心实现二进制、八进制、十进制、十六进制、十八进制之间的相互转化。其转换方式大致相同,从低进制数向高进制数转换进行乘数累加,反之则逐步求余,最终进行分布计算得到想要的结果。本次系统程序,主要有两大模块组成,即任意进制转换为十进制、十进制转换为任意进制,这两部分共同组成了对任意进制数的转换的实现,通过菜单选择,让用户实现自己想要的结果。最后打印输出结果。3 逻辑设计数值转换转换系统,包括八个子函数模块,其中菜单函数模块定义为整型,其余字符转换函数处理模块都根据函数所需定义数据类型。数制转换处理系统中用栈来储存处十进制以外的数,将一个指定进制的数,从低到高一位一位取出,并计算出每

8、位的十进制值,然后乘以其数基的特定幂指数,得出这一位数的十进制值,将所有各位的十进制值相加得出这个数的十进制值,然后再将该十进制数转换为指定数制的数,此过程采用求余法进行,用这个十进制数作为被除数,用指定的数基作除数,连续求余,得出的余数依由个位到十位等的顺序组成新数,即得指定数制的数。逻辑设计如图3.1所示。 结束主菜单始开数函择选退出程序进制转换返回主菜单任意进制之间任意进制到十十到任意进制图3.1设计思想流程图31程序流程图(1)主函数main()流程图,如图3.2所示主菜单始开作操择选0操作1操作十到任意进制任意进制到十任意进制之间结束图3.2 main函数流程图(2)十进制转换为任意

9、进制流程图,如图3.3所示开始int q,i=0,b,c=0,n=0;传的参数赋b,b0?i+对b求余,赋给qq=q+48将q值转换为十六进制补码压栈操作,调用入栈函数求商操作,将商赋给bi=ni0输出转换结果i-结束nnnyyy判断b是否为要转换的数字类型y重新输入n图 3.3为十进制到任意进制转换流程图(3)任意进制到十进制的转换,如图3.4所示开始int i=0,j=0,y,d,c=-1; int v=0,r=0,sum=0;i+,n+,q=b%m传的参数赋b,b0?输出转换结果i=nnyi-结束i0yy对b求余,赋给qq=q+48nn将q值转换为十六进制补码入栈操作,对栈顶元素操作图

10、3.4为任意进制到十进制转换流程图4 详细设计#include#include#include#include#include#include#include#define OK 1#define ERROR 0#define STACK_INIT_SIZE 100 #define STACKINCREMENT 10typedef char Status; typedef structint *base; int *top;int stacksize; /当前已分配的存储空间,以元素为单元 SqStack;char s120;char s210;int InitStack(SqStack &S

11、) /构造一个空栈 S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int);if(!S.base) /空栈的标志 return(ERROR); S.top=S.base;S.stacksize=STACK_INIT_SIZE;return OK;Status clearstack(SqStack &S) /清空栈S.top=S.base;return OK; Status Push(SqStack &S,int e) /压栈(插入元素e为新的栈顶元素) if(S.top-S.base=S.stacksize)S.base=(int*)realloc(S.

12、base,(S.stacksize+STACKINCREMENT)*sizeof(int);if(!S.base)return(OVERFLOW); /存储分配失败S.top =S.base +S.stacksize ;S.stacksize+=STACKINCREMENT;S.top=S.base;S.top+;/先插入数据元素,再移动栈顶指针*S.top=e;return OK;char StackEmpty(SqStack *S) /判断栈是否为空if(S-top=S-base)return OK;elsereturn ERROR;int ANY_TEN(int n) /任意进制转化为十

13、进制int i=0,j=0,y,d,c=-1; int v=0,r=0,sum=0;char t20; printf(请输入您要转化的数:); scanf(%s,&t); printf(n); fflush(stdin);while(tj!=0)j+; for(i=0;ti!=0;i+) if(int)(ti)=48&(int)(ti)=A&(int)(ti)=J); else printf(输入有误! 请输入数字: n); printf(请输入您要转化的数:); scanf(%s,&t); c+; y=j-i-1; if(ti0) i+; n+; q=b%m; if(q9) q= toupp

14、er(q+55); else q=q+48; Push(S,q); b=b/m;s1i=*S.top;printf(最终转换结果为:);for(i=n;i0;i-)printf(%c,s1i);int ANY_ANY(SqStack &S) /任意进制间的转换 int m,z,n,sum; printf(请输入源进制和目标进制(2,8,10,16):); scanf(%d,&n); scanf(%d,&m); printf(n); printf(将%d进制转换为%d进制,n,m);printf(n); printf(n);sum=ANY_TEN(n);InitStack(S);TEN_ANY(

15、 S, sum,m);return(OK); int menu_select()int c; do printf(n); printf(tt 2、8、10、16进制间的互相转换tnnn); printf(tt 1.进制转换 tnn); printf(tt 0.谢谢使用tnn); printf(tt 请输入你需要进行的操作1/0:nnn ); fflush(stdin); scanf(%d,&c); while(c1); return(c);void main() SqStack S; int n,m; float a; for(;) switch (menu_select() case 1:

16、printf(ttt 进制转换nn); ANY_ANY(S); break; case 0: printf(ttt 谢谢使用!再见!:n); printf(ttt); exit(0); 5 程序调试与测试在vc+6.0运行界面如图5.1所示:数制转换函数调试结果截图 图5.1为数制转换程序运行界面5.1十进制转换为任意进制,结果如图5.25.5所示:(1)输入合法数据:图5.2为十进制到二进制的转换图5.3为十进制到八进制的转换图5.4为十进制到十六进制的转换(2)输入非法数据:图5.5 输入非法数据5.2任意进制转化为十进制,结果如图5.65.9所示:(1)输入合法数据:图5.6为二进制到十

17、进制的转换图5.7为八进制到十进制的转换图5.8为十六进制到十进制的转换(2)输入非法数据:图5.9对小数不能正确转换5.3任意进制间的转换,结果如图5.105.13所示:(1)输入合法数据:图5.10为二进制到八进制的转换图5.11为八进制到十六进制的转换图5.12为十六进制到二进制的转换(2)输入非法数据:图 5.13 对非法数据不能正确判断5.4 程序运行结束,如图5.14所示:退出界面结果截图:图5.14为程序退出界面总结通过本次课程设计,提高了自己对于程序总体思路的把握,以及对程序的分析和理解。更能熟练的运用整型数组进行取整求余从而进行进制间的转换。能通过switch语句进行判断选择处理,使自己通过程序设计,真正的在实践中把课本所学的知识熟练的运用。所完成的数制转换器系统实现的二进制、八进制十六进制和十进制之间转换等功能,除此之外不能实现小数的转化问题、判断对输入数字的判断是符合要求和对输入不合法字符检验并提示的功能。希望以后可以实现上述两个问题,首先是改进程序,使其能实现小数的转化,和和判断对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论