简易电话号码簿程序设计
- 格式:doc
- 大小:61.00 KB
- 文档页数:9
简易电话号码簿程序设计
一、设计目标
编写一个管理电话号码的程序。
二、设计要求
1. 实现人名、电话号码的录入(假定一个人只有一个电话号码)。
2. 人名、电话号码的删除、修改。
3. 根据人名查询该人的电话号码。
4. 用文件保存电话簿。
5. 根据电话号码查询该人的名字。
6. 根据人名进行电话号码的模糊查询(如输入某人的姓,则同姓的其他人的电话号码也可以显示出来)。
三、设计提示
文件操作、键盘操作和屏幕操作可利用DOS和BIOS系统中断完成。相关核心提示见“单词记忆测试器程序设计”一题。
DATAS SEGMENT
count db 4
buf db'li ','54698765 ', ;存储人名和电话号码的数据单元区
'liu ','69856456 ',
'hu ','565664789 ',
'zhang ','569874123 ',
20 dup(10 dup (0),10 dup (0)) ;为再存入数据开辟空间
_name db 10, ?,10 dup(?) ;缓冲区——键盘输入name字符串
num db 10, ?,10 dup(?) ;缓冲区——键盘输入num字符串
temp db 20 dup(?),0dh,0ah,'$'; 缓冲区——存入人名和电话簿信息
menuitem db' (people phonenumber management system)',0ah,0dh db' @************************&&&**************************@',0ah,0dh
db' # { this is main menu } #',0ah,0dh
db' # 1. query (q) #',0ah,0dh
db' # 2. insert (i) #',0ah,0dh
db' # 3. modify (m) #',0ah,0dh
db' # 4. delete (d) #',0ah,0dh
db' # 5. exit (e) #',0ah,0dh
db' @************************&&&**************************@',0ah,0dh
db'please select(q,i,m,d or e):',0ah,0dh,'$';显示主菜单相关信息
mess1 db'name',10 dup(' '),'tel',0ah,0dh,'$'
mess2 db'please Input the name:$'
mess3 db'please Input the telephone number:$'
mess4 db 0ah,0dh,'$';专门定义一个MESS4,以便在代码中用9号功能调用实现换行
mess5 db'Insert succed!$'
mess6 db'delete succed!$'
mess7 db'the information!$'
mess8 db'modify succed!$'
mess9 db'please Input the new name:$'
mess10 db'please Input the new number:$'
err1 db'there is not exsit the people!',0ah,0dh,'$';错误提示信息DATAS ENDS
STACKS SEGMENT
db 2000 dup(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
main proc far
mov ax,datas
mov ds,ax
mov es,ax
n1: lea dx,menuitem
mov ah,9
int 21h ;显示主菜单选择界面
mov ah,1
int 21h ;从键盘输入字符
cmp al,'q'
jnz n2
call query ;若所输字符是‘q‘,则调用子程序query
jmp n1
n2: cmp al,'i'
jnz n3
call insert ; 若所输字符是‘i‘,则调用子程序insert jmp n1
n3: cmp al,'m'
jnz n4
call modify
n4: cmp al,'d'
jnz n5
call delete
n5: cmp al,'e'
jz exit
jmp n1
exit:
mov ah,7
int 21h
mov ah,4ch
int 21h
ret ;退出
query proc near ;查找的主程序
push ds
xor ax,ax
push ax
mov ax,datas
mov ds,ax
mov es,ax
cld ;清除方向标志
lea dx,mess4
mov ah,9
int 21h ;换行
lea dx,mess2
mov ah,9
int 21h
call ipname ;调用子程序ipname,从键盘上输入人名lea dx,mess4
mov ah,9
int 21h
call search ;具体查找的子程序
mov ah,7
int 21h
ret
query endp
ipname proc near ;从键盘输入名字
lea dx,_name ;存放待查找的人名地址
mov ah,10
int 21h
mov bh,0
mov bl,_name+1 ;bl 存放从键盘输入的字符串长度
mov cx,10
sub cx,bx ;计算剩下的长度
r:
mov _name[bx+2],20h ;剩下的地方补空格
inc bx
loop r
ret
ipname endp
search proc near
lea di,buf ;di 中存放表首地址
push di
mov bl,count