电话号码本编辑和查找程序的设计与实现Word格式.docx

上传人:b****5 文档编号:18615524 上传时间:2022-12-29 格式:DOCX 页数:30 大小:213.87KB
下载 相关 举报
电话号码本编辑和查找程序的设计与实现Word格式.docx_第1页
第1页 / 共30页
电话号码本编辑和查找程序的设计与实现Word格式.docx_第2页
第2页 / 共30页
电话号码本编辑和查找程序的设计与实现Word格式.docx_第3页
第3页 / 共30页
电话号码本编辑和查找程序的设计与实现Word格式.docx_第4页
第4页 / 共30页
电话号码本编辑和查找程序的设计与实现Word格式.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

电话号码本编辑和查找程序的设计与实现Word格式.docx

《电话号码本编辑和查找程序的设计与实现Word格式.docx》由会员分享,可在线阅读,更多相关《电话号码本编辑和查找程序的设计与实现Word格式.docx(30页珍藏版)》请在冰豆网上搜索。

电话号码本编辑和查找程序的设计与实现Word格式.docx

在完成设计任务后,按要求撰写课程设计说明书;

对课程设计说明书的具体要求请见课程设计指导书。

阅读资料:

1)《IBM—PC汇编语言程序设计实验教程》实验2.4

2)《IBM—PC汇编语言程序设计(第2版)》例6.11

时间安排:

设计安排一周:

周1、周2:

完成系统分析及设计。

周3、周4:

完成程序调试,和验收。

周5:

撰写课程设计报告。

指导教师签名:

年月日

系主任(或责任教师)签名:

目录

目录..............................................................................................................................2

1、设计内容及要求..............................................................................................3

2、关键技术和方法3

2.1缓冲区的应用...............................................................................................3

2.2起泡排序.......................................................................................................3

2.3查找算法......................................................................................................3

3、设计方案说明..................................................................................................4

3.1模块层次图.................................................................................................4

3.2各模块功能定义.........................................................................................4

3.3主要过程流程图.........................................................................................5

3.3.1MAIN过程的流程图.............................................................................5

3.3.2排序子过程的流程图...........................................................................6

3.3.3SEARCH子过程的流程图...................................................................7

3.4数据机构定义...........................................................................................8

3.5程序界面描述...............................................................................................9

3.5.1结果显示界面........................................................................................9

3.5.2错误处理界面........................................................................................10

4、测试评估............................................................................................................11

4.1正确的输入测试..........................................................................................11

4.2错误的处理测试..........................................................................................11

4.3测试截图......................................................................................................11

5、设计心得...........................................................................................................11

5.1设计中遇到的问题......................................................................................11

5.2对程序扩展的设想......................................................................................11

6、参考文献...........................................................................................................12

7、源程序清单.......................................................................................................12

1.设计内容及要求

1.建立一个可存放50项的电话号码表,每项包括人名及电话号码两部分。

2.程序可接受输入人名及相应的电话号码,并将他们加入电话号码表中。

3.凡有新的输入后,程序应按人名对电话号码表重新排序。

4.程序可接受需要查找电话号码的人名,并从电话号码表中查出其电话号码,并显示出来。

5.程序采用子程序结构,结构清晰。

6.友好清晰的用户界面,能识别输入错误并控制错误的修改。

2.关键技术和方法

2.1缓冲区的应用

用缓冲区来暂时存储要输入的名字和电话号码,这样方便于用INT21H的0C功能来对输错的字符进行删除,提高了程序的灵活性。

另一方面,用做缓冲区的字符串的第二个字节存放的是输入的有效字符的实际长度,这对于我们以后排序以及查找都有很大的帮助,因为我们可以通过这个数字来确定比较的有效字符个数。

缓冲区也可以确定输入的最大字符的个数,例如,题目中的20位的姓名和8位的电话号码。

当达到最大长度时,光标将停止不动,这说明已经达到最大长度,应该输入回车键进行下一步,这也是提高程序健壮性的一个方法。

2.2起泡排序

起泡排序的过程很简单。

首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序(即L.r[1]>

L.r[2]),则将两个记录交换之,然后比较第二个记录和第三个记录的关键字。

依次类推,直至第n-1个记录和第n个记录的关键字进行过比较为止。

上述过程是第一趟起泡排序,其结果使得关键字最大的记录被安置到最后一个记录的位置上。

然后进行第二趟起泡排序,对前n-1个记录进行同样操作,其结果是使得关键字最大的记录被安置到第n-1个记录的位置上。

一般地,第i趟起泡排序是从L.r[1]到L.r[n-i+1]依次比较相邻的两个记录的关键字,并在“逆序”时交换相邻记录,其结果是这n-i+1个记录中关键字最大的记录被交换到第n-i+1的位置上。

整个过程进行n-1趟起泡排序。

在起泡排序过程中,关键字较小的记录好比水中气泡逐趟向上漂浮,而关键字较大的记录好比石块往下沉,每一趟有一块“最大”的石头沉到水底。

2.3查找算法

查找算法原理比较简单,输入要查找的名字,依次和字符数组重的姓名进行比较。

第一次循环的次数有输入的名字的有效长度决定,不相等则和下一个名字进行比较。

然后让剩余的字符和空格进行比较,不相等则和下一个名字进行比较。

找到相等的就输出到屏幕上。

考虑到可能有重名的情况,所以始终让输入的名字和字符数组重的每一个名字进行比较。

3.设计方案说明

3.1模块层次图

输入

输出

主过程

主过程

排序

查找

3.2各模块功能定义

1.主过程:

控制要进行的操作,即输入、输出、查找。

2.输入:

接受用输入名字及电话号码。

3.输出:

把输入的名字及电话号码输出到屏幕上。

4.排序:

把输入的名字及电话号码按照英文字母表的顺序排列。

5.查找:

输入要查找电话号码的姓名,在屏幕上显示所有符合要求

的电话号码。

3.3主要过程流程图

1.MAIN过程的流程图

2.PAIXU子过程的流程图

3.SERCH子过程的流程图

3.4数据结构定义

1.数据元素定义

字符串

用途

MESSAGE

提示输入名字

MESSAGE1

提示输入电话号码

MESSAGE2

显示“NAMETELEPHONE”

MESSAGE3

当输入为空时,提示应该输入一些字符

MESSAGE4

输出一行虚线

MESSAGE5

提示用户选择一个选项

MESSAGE6

输出选项菜单

MESSAGE7

提示输入要查询的名字

MESSAGE8

显示查询不存在的消息

MESSAGE9

当输入的不是1、2、3、4时提示输入错误

MESSAGE10

MESSAGE11

提示输入的名字为A-Z或a-z

MESSAGE12

提示输入的电话号码为1--9

变量

BIAOJI

记录每个名字的起始位置

MAXLEN

定义名字的最大长度

INBUFLEN

实际输入的名字的长度

INBUF

存放名字的数组

MAXLEN1

定义电话号码的最大长度

NBUFLEN1

实际输入的电话号码的长度

INBUF1

存放电话号码的数组

OUTLINE

存放所有名字和电话号码的数组

过程名字

MAIN

控制程序总的运行顺序

INPUTNAME

接受输入的名字并且存入OUTLINE中

GETNAME

接受输入的名字并且存入INBUF中

INPHONENUMBER

接受输入的电话号码并且存入OUTLINE中

GETNUMBER

接受输入的电话号码并且存入INBUF1中

PRINTLINE

输出姓名及电话号码

HUANHANG

换行

PAIXU

对名字按照英文字母表进行排序

JIAOHUAN

当顺序不对时交换两个名字及电话号码的顺序

XUANXIANG

对输入的选项响应

SERCH

输出要查找的电话号码

XUXIAN

XINGHAO

输出一行星号

3.5程序界面描述

1.结果显示界面

2.错误处理界面

4.测试评估

4.1正确的输入测试

1.输入测试:

fanxu123456jiangyong654321

2.查找测试:

fanxu

3.插入测试:

guyuze133244

4.输出测试:

选择选项2输出已经输入的所有信息

4.2错误处理测试

1.查找出错测试:

j

2.输入名字出错测试:

直接回车、4566hhjj

3.输入电话号码出错测试:

回车、2

4.3测试截图

见程序界面描述

5.设计心得

5.1设计中遇到的问题

在对此次汇编课程设计中,使我对汇编程序处理一些实际问题的映像有了更深一层的理解,让我在增长见识的同时也学到了不少实际动手能力,但是也使我认识到了自己的许多不足和局限性。

由于刚开始对程序没有一个全面的设计和理解,致使我在设计中遇到很多困难,对程序的各个模块也是比较模糊,因此一度陷入了僵局,但后来在充分对参考文献的理解之后,并且在查询资料获取帮助后,使我开始正式对各程序模块的具体实现就有了比较全面的认识,所以,在对程序设计前,有一个必要而清晰的全盘思维过程就显得尤为重要。

正式初始时候缺乏这种意识,而是过分的急于求成,以使我在程序编写和理解过程中出现了很多的错误。

不过,在这次课程设计里,也使我受益匪浅,首先就让我认识到了平时实验中所缺少的实践性,对电话号码的存储显示和查询更贴切于我们日常的生活;

其次就是也使我深刻地认识到自己平时动手能力的不足和缺陷,和熟练掌握计算机技术编程还有较大的距离。

相信通过此次的课程设计,对我以后的学习和工作有很大的指引和帮助。

5.2对程序扩展的设想

可以对已经存入的姓名及电话号码进行删除,也可以对查询所得到的电话号码进行修改,同时,对存入的信息保存在电脑上,在下次使用的时候不必重新输入。

此外,在遇到相同的名字程序会提示已经存在名字相同的电话号码,提示是否覆盖该电话号码还是重新输入新的名字。

在排序的算法设计上可以采用效率更高的算法等。

6.参考文献

1.《IBM—PC汇编语言程序设计实验教程》清华大学出版社沈美明、温东婵、张赤红等编著

2.《IBM—PC汇编语言程序设计(第2版)》清华大学出版社沈美明、温东婵等编著

7.源程序清单

1.电话号码本的编辑和查找程序源程序

;

***********************定义数据段****************************

DATASSEGMENT

MESSAGEDB'

PLEASEINPUTYOURNAME:

'

13,10,'

$'

MESSAGE1DB'

PLEASEINPUTYOURTELEPHONENUMBER:

MESSAGE2DB'

NAMETEL.'

MESSAGE4DB'

*************************************'

MESSAGE5DB'

PLEASESELECTTHEOPERATION:

MESSAGE6DB'

1:

INPUT2:

PRINT3:

SEARCH4:

EXIT'

MESSAGE7DB'

PLEASEINPUTTHENAME.'

MESSAGE8DB'

THEREISNOTTHENAME.'

MESSAGE9DB'

YOUINPUTTHEWRONGNUMBER.'

MESSAGE10DB'

------------------------------------'

MESSAGE3DB'

YOUSHOULDINPUTSOMELETTERS.'

MESSAGE11DB'

YOUSHOULDINPUTA---ZORa----z'

MESSAGE12DB'

YOUSHOULDINPUT0---9'

BIAOJIDW0

MAXLENDB21

INBUFLENDB?

INBUFDB21DUP(20H)

MAXLEN1DB9

INBUFLEN1DB?

INBUF1DB9DUP(20H)

OUTLINEDB50DUP(33DUP(20H))

DATASENDS

;

***************************定义代码段***********************

CODESSEGMENT

MAINPROCFAR

ASSUMECS:

CODES,DS:

DATAS

START:

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATAS

MOVDS,AX

MOVDI,0

MOVBL,0

**********************接受输入姓名和电话号码************

FIRST:

CALLHUANHANG

CALLXINGHAO

MOVAH,9H

MOVDX,OFFSETMESSAGE

INT21H

CALLXINGHAO

CALLINPUTNAME

CALLXUXIAN

MOVDX,OFFSETMESSAGE1

CALLINPHONENUMBER

CALLXUANXIANG

******************对电话号码按照姓名排序并且输出*************

SECOND:

MOVDX,OFFSETMESSAGE2

CMPBL,1

JEZHUANYI

CALLPAIXU

ZHUANYI:

CALLPRINTLINE

***********接受用户输入的姓名并且显示电话号码****************

THIRD:

CALLSEARCH

CALLXUANXIANG

****************************退出程序**************************

FOUR:

MOVAH,4CH

MAINENDP

********************接受用户输入的姓名************************

INPUTNAMEPROCNEAR

NEXTSTEP2:

CALLGETNAME

********************检测是否输入了字符*********************

CMPINBUFLEN,0

JEERROR1

JMPCHECKONE

ERROR1:

MOVDX,OFFSETMESSAGE3

JMPNEXTSTEP2

********************检测用输入的是否是字母*****************

CHECKONE:

MOVCH,0

MOVCL,INBUFLEN

MOVSI,0

LOOPP:

CMPINBUF[SI],41H

JBERRORA

CMPINBUF[SI],5BH

JBNEXTSTEPL

CMPINBUF[SI],61H

CMPINBUF[SI],7BH

JMPERRORA

NEXTSTEPL:

INCSI

LOOPLOOPP

JMPNEXTSTEP

ERRORA:

MOVDX,OFFSETMESSAGE11

*****************把有效的名字送入INBUF中********************

NEXTSTEP:

MOVCL,25

SUBCL,INBUFLEN

INCBL

ZHUANYINAME:

MOVBH,INBUF[SI]

MOVOUTLINE[DI],BH

INCDI

DECINBUFLEN

JNZZHUANYINAME

KONGGE:

MOVOUTLINE[DI],20H

INCDI

LOOPKONGGE

RET

INPUTNAMEENDP

**************接受用户输入电话号码并且存入INBUF1中*********

GETNUMBERPROCNEAR

LEADX,MAXLEN1

MOVAH,0CH

MOVAL,0AH

GE

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 小学教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1