基于汇编语言的电话本程序设计

邱丑丑

发布日期: 2019-06-21 12:14:51 浏览量: 83
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

一、软件背景介绍

1.1背景知识

电话本的历史背景是基于手机的发展上的。1973年4月的一天,一名男子站在纽约街头,掏出一个约有两块砖头大的无线电话,并打了一通,引得过路人纷纷驻足侧目。这个人就是手机的发明者马丁·库帕。当时,库帕是美国著名的摩托罗拉公司的工程技术人员。

这是世界上第一通移动电话是打给他在贝尔实验室工作的一位对手,对方当时也在研制移动电话,但尚未成功。库帕后来回忆道:“我打电话给他说:‘乔,我现在正在用一部便携式蜂窝电话跟你通话。’我听到听筒那头的‘咬牙切齿’——虽然他已经保持了相当的礼貌。”到今年4月,手机已经诞生整整46周年了。这个当年科技人员之间的竞争产物现在已经遍地开花,给我们的现代生活带来了极大的便利。

手机给我们带来的作用(为什么现在人人离不开手机):

  • 不用远行,可以及时问候对方

  • 危难之时显身手,堪称贴身保镖

  • 在生命的最后时刻,实现表达情感的愿望

  • 可以用来缓解冲突和矛盾

  • 拉近家庭成员距离,他们时刻都在自己身边

  • 探视上司位置,可以随时表达自己的意向

  • 能委婉地拒绝他人,不失友情和面子

  • 向自己所爱的人表达思想,言语和文字尽在其中

  • 看天气识云,规范自己的行踪

  • 现场取证资料,成为日后不可缺少的用途

随着电子产品快速发展,在手机用户大量激增的今天,人们需要记录管理的电话号码也越来越多,面对如此压力,简单的电话本将很艰难在满足人们的需求,拥有一个良好的电话簿管理系统则是必须的。

1.2 基本功能

本款软件包含了一半电话簿的基本功能,即添加、删除、插入、查找用户等,同时还扩大了电话簿容量以及生存范围,即在内存允许的情况下添加用户数量不做限制,且可在多系统下运行。

1.3 运行截图

二、核心算法思想

2.1 整体算法思想概括

程序运行开始时,界面首先有一个显示日期与时间的小画面,并有一行“欢迎进入电话本”的字幕。这一界面是在程序末尾添加了一个提取系统时间和日期的子程序,在前端声明定义此时的时间和日期,能够让人在运行最初有一种耳目一新的好感。

随后,便会自动跳转到主界面,也就是电话本管理界面。主界面通过程序的运行分为了三个小的版块。最上面是一个小版块是标题电话本系统,给予一定的提示作用。中间的小版块,分别为姓名与编号。最下面的一个大版块,用来记录并保存所存储进入电话本系统的信息,并与第二版块的姓名和编号相对应。通过提示存入功能并将输入的姓名和编号信息记录,能够在电话本管理系统中保存并展示出来。

主界面中用菜单栏来显示存储信息的新建,编辑,删除,帮助,关于和退出六大功能,并分别以编号1到6的数字来加以区分和声明。在主程序中,同样有六个对应的子程序和这六大核心功能声明对应。首先,我们想要存储一个新的电话信息时,在跳转后的主界面中按下回车键,菜单栏便会跳出来,此时指定到菜单栏的新建一行,按下回车键后,会跳转到新建栏界面,并按照提示依次输入姓名和编号信息,姓名和编号信息最长字节数都设置为50个,为用户的新建留有了足够的存储空间。
编辑和删除功能的运行时,都需要已经有了所存储的电话本管理信息,将光标指示到想要编辑或者删除的那一行,同样回车键并跳转界面,输入想要编辑的信息或者将之删除,可完成此功能。

在声明子程序的关于和帮助功能时,调用判断键盘中断子程序,并判断是否有键盘输入,无输入则继续执行原先功能,有输入则判断是否为回车键等,是则可以判断跳转相应位置执行对应的操作,指示到该行并完成界面跳转后,看到的是有关于电话本的简要介绍,并以双语的形式呈现出来,随后随机输入键盘中的任意键并能完成对界面的跳转。退出功能尤为重要,他能够将界面的管理串联起来,使得使用者能够在界面的跳转中更加便利快捷,在每完成一个小的功能后,退出键Q能够使我们返回到主界面,方便我们进行下一操作,同样,在主界面指示到退出键Q时,电话本管理系统会关闭。这就涉及到了六个主要操作。

当存储的信息达到已经设置的字节数后,需要判断存储空间是否为满;若存储空间达到了满的情况,只能执行编辑和删除功能,这样使得程序有了很强的可靠性和实时性,因为在实际生活中,电话本信息的存储本身有可容纳限度的。这样程序内部便引入了众多相关函数,对这些函数进行实现和细化之前,需要对整个电话本管理系统运行期间的概要流程有所了解。

2.2 具体算法运算解读

分层的模块化设计思想在主界面和跳转界面中均有涉及,整个电话本系统采用了模块化结构设计作为应用程序,有较强的拓展性和实用性。在子程序中,多次用到了栈这一数据结构的方法,在每一次调用子程序的过程时,都会申请CPU现场和恢复CPU现场,并将要使用的操作数或者操作码通过寄存器寻址的方式压入栈中,直到子程序顺利运行结束时,寄存器中的操作数或者操作码都按顺序被弹出栈中。在子程序中,较多的使用了判断语句,判断是否可以编辑电话信息记录的姓名和编号,如果是,便可以使用键盘中断功能使程序跳转至下一个可以编辑信息的界面;如果不是,则子程序执行LOOP循环,继续判断下一存储信息,直到所有的文件信息均被访问完结束。程序中用到字符串和字符指针的部分有很多,该功能的实现需要将用户输入的字符逐个送入缓冲区中,与电话信息已存储的数组数据进行比较,得出结果并可以声明执行下一操作。

系统操作功能相应齐全,操作比较简单,能够满足用户实际的需求。菜单栏的功能并不复杂,六大基本功能都是我们所常见的。进入界面后窗口背景是黑色调,信息存储背景是灰色调,这些都可以通过选项进行调整。在规范录入的过程中,电话信息和数组数据都得到了较规范的保存,并能够处理一些特殊情况的要求,类似对电话信息的编辑处理等等。为了便于更好的理解和其他人员理解代码,我们添入了子程序的注释工作,使得电话本管理系统操作起来对程序的了解更加深刻。

三、核心算法流程图

流程图简要介绍了电话本菜单栏信息中的编辑功能,由开始界面指针的指向直到判断是否存有电话信息,然后能够向用户声明完成编辑内容。同样,其他的新建,删除等功能也是如此,通过界面指针的不同指向而完成不同的声明内容。

四、开发中遇到的问题

  • 当输入的联系人过多时查找的时间和方式过于慢和复杂,和软件中的进制转化问题
    解决方法:利用相同首字母的查找方式,大大减少了查询时间,为软件的流程更快做好了铺垫,方便又好用。软件中的数据进行进制转化,为了要求更方便于使用,加入了一个进制转化的代码控制过程,当输入时会自动进行转化,方便使用。

  • 软件内的时间如何随着时间的变化而变化
    解决方法:写了一段提取系统时间的程序,设置不同的指针去指向不同的位置,从而把系统的时间提取到程序之中,当使用软件时,首界面会显示你所用的系统的时间,但是如果你给的系统时间与对的时间不对,就只能靠自己手动去修改系统内的时间,软件的时间显示才能是正确的。

  • 怎么准确的存储到已输入联系人的信息
    解决方法:设置了一个坐标表明的系统,每个信息都有自己所在的坐标,分为左上、左下、右上、右下,准确的锁定了每个信息的位置。还加入了上翻和下翻的程序,使得在使用时能快速的查找到使用者所需要的信息。

  • 显示过程中有不明显的状态
    解决方法:输出的信息加黑设置,并且用坐标的形式保存输出所有存入的信息,设置一个光标,对所输入的信息进行加黑和位置的存储,然后转化为坐标的光标,确定每个信息的位置,从而在使用软件时能使显示更加明确和准确。

  • 编辑过多导致存储的信息不清晰
    解决方法:设置SI、DI两个指针,对编辑进去的信息两两比较,用二十六个字母的排列顺序,从第一位一直向后进行比较,然后加入了一个将两个数组调换的程序,使得所存入的数据按照顺序排好。这一方法我也同样加入到了查询功能中,将坐标查询法和这个排列顺序的方法,使得在使用时用户更加方便,软件的启用界面也更加清晰。

  • 开机界面过程怎么设计更能吸引使用者
    解决方法:设计使画面更加好看对称,加入了一个画图过程,加入了一些小方块和空格笑脸等特殊的符号,使开机界面更加吸引使用者。当首界面转到使用界面时,插入了一个时间延搁过程,使可以在首届面能多停留一会,但又不能太久耽误了使用者的时间,因此这个时间的把握至关重要。

  • 删除过程中误删或是完全删除后怎么处理
    解决方法:多设置一个界面,当删除时会自动跳出,当使用者确定删除可以选择OK,当反应过来觉得不删时,还可以有反悔的机会,但是如果这一步也没有注意到删错,还设置了一个储存库,可以去恢复删除的数据。如果刚用时没有联系人可以删除的数据时,设置了置零为空时不允许再次删除,缓冲区的信息也不允许再更改。

  • 写一个主程序太复杂,思路容易混乱。
    我们在完成-一个程序时,可以简单的把一个程序划分为几个完整的几部分,使每一部分 独立的完成特定的一部分和计算任务。子程序的使用还可以大大的减小程序的体积,在一程序中,如果需要多次反复的是用某一段代码的话,就可以将这段代码设定为子程序,以后想使用时,只要一CALL再一RET就OK了。我认为使用子程序的关键在于明白子程序的机理,明白子程序是如何保存和恢复断点的信息的,只有真正的理解了这一点才能更好地利用好子程序。

  • 不小心会漏掉ret,导致程序自动终止。
    在编写子函数时,一定要在其结尾加上ret,然后再加上结束标志ENDP。由于在结尾没有加RET,结果程序不能正确运行,而且总是自动终止了程序,加上ret后,即可正确运行了。

五、心得体会

电话簿管理程序较长,算法比较复杂,调试的过程中遇到了各种各样的问题。各种各样的小错误寻找起来十分困难。在今后编写程序时应当随时找错。不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。后来慢慢的接触多了,听老师讲的多了,了解多了,渐渐的产生了兴趣。课设让我们把这一学期所学的汇编语言知识得到了很好的应用,开拓了我们的思路,所谓温故而知新,这次课设也让我们对以前的知识有了一个全面的回顾,加深了对己学知识的理解。课设过程中艰辛,花费时间很长,需要很强的耐力和信心。而这也是对我们的一次考验,养成了坚持不懈和吃苦耐劳的精神。通过这次课程设计的实训,增加了我学习软件技术的兴趣,虽然还不明确软件技术包含的其体内容,值从汇编语言这门课程开始。已发现程序设计的乐趣,在学习汇编语言的过程中也学会了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解。在实际模储过程中犯的一些错误还会有意外的收获,感觉实训很有意思。在具体操作中对这学期所学的汇编语言的理论知识得到巩固,达到实动的基本目的,也发现自芒的不足之处。在以后的上机中应更加注意,同时体会到汇编语言具有的语句古老,使用键转,执行教许高等特点。发现上机实训的重要作用,特别是对寄存和转化有了深刻的理解。

通过实际操件,学会了汇编语言程序编程的其本步骤、基本方法,开发了自己告的逻辑思维能力,培养了分析问题、解决问题的能力深刻体会到“没有做不到的,只有想不到的”,“团结就是力量”,“实践是检验真理的唯一标准”的寓意。

本人在此希望以后应多进行这样的训练,加长时间和次数,培养学生独立思考问题的能力,提高实际操作水平。总之,汇编的这次课设让我们学到很多,也收获了很多,这必将成为我人生中一个深刻的回忆。
我深深体会到了在许多方面的欠缺和不足,比如。在需求分析时,由于自己的实践经验不够,很难分析需求到位:在编写代码时,由于自己技术知识水平不广,常常遇到技术难题;还有自己没有良好的编程习惯,不注释,有时连自己也看懵了非编程的结构不好,维修和修改代码是很慢。这次实训计我意识到了再己做为计算机软件工程专业的学生,要想在以后的职业中崭露头角,除了要有过硬的理论知识,健康的体魄外,还必须具备良好的心理素质,使自己在以后的途中无论经历什么样的困难,都立于不败之地“纸上得来终觉钱,绝知此事要躬行!”在这短短的时间里,准我深深的感觉到自己在实际应用中所学专业知识的匮乏。让我真真领悟到“学无止境”这句话的含义。而所学的,都是课本上没有面对我们又非常实用的东西,这又给我们的实训增加了浓墨淡采的光辉。我懂得了实际生活中,专业知识是怎样应用与头践的。

在这次文训中,我不仅知道了职业生涯所需具备的专业知识,而且让我深深体会到个团队中各成员合作的重要性,要善于团队合作,善于利用别人的智慧,这才是大智慧。靠单一的力量是很难完成一个大项目的,在进行团队合作的时候,还耍耐心听取每个成员的意见,使我们的组合达到更加完美。员实训过程中,除了要专业知识,包括人际交往,沟通方式及相关礼节方面的内容,对于团队开发来说,团结一致我深有体会。团队的合作注重沟通和信任,不能不屑于做小事,永远都要保持亲和诚信,把专业理论运用到具体实践中,不仅加深我对理论的掌握和运用,还让我拥有了一次又一次难忘的开发经历,这也是实训最大的收获。

上传的附件 cloud_download 电话本程序设计.zip ( 146.86kb, 0次下载 )
error_outline 下载需要6点积分

发送私信

精品资源尽在此

45
文章数
0
评论数
最近文章
eject