班级通信录管理系统(汇编课程设计)

更新时间:2023-09-11 01:42:02 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

班级通信录管理系统

1 需求说明

1.1实验要求

1.1.1建立通讯录,添加一个同学的通信记录,删除一个同学的通信记录,修改一个同学

的通信记录,查询一个同学的通信记录,显示所有同学的通信记录,能根据姓名或宿舍号进行排序。

1.1.2通信记录包括学号、姓名、电话号码、宿舍号等信息,所有信息最终用文件保存。

1.2功能简述

1.2.1 建立通信录

运行程序后,程序自动建立固有的通讯录。

1.2.2添加通信记录

进入“添加\界面,根据提示,依次添加同学的通信记录条目。添加成功,后显示操作成功信息。

1.2.3删除通信记录

进入“删除\界面,依据姓名删除信息。输入姓名后,显示该同学的所有信息,并显示操作成功。删除后,返回主菜单。

1.2.4查询通信记录

进入“查询\界面,询问用户按姓名或学号查找学生记录。待用户正确输入已存有的用户姓名或学号后,按回车键后显示所有匹配该信息的学生记录。若输入信息错误或是无该用户没记录,则显示操作错误。

1.2.5显示所有通信记录

进入“显示\界面,将通讯录中所有同学的通讯记录分行显示出来,每行中同学的不同信息间隔表示。

1.2.6根据姓名进行排序

排序时,显示排序子菜单,按照姓名中字母的升序对记录进行排序。

1

1.2.7保存通讯记录

将填写好的同学通讯记录写入到固定文件中。

1.2.8退出班级通信录管理系统

选择该功能选项后,退出班级通信录管理系统,关闭文件,返回DOS。

2设计说明

2.1 程序流程图设计

Select Insert Modify Delete Write Show Esc Back 结束 选择功能 主界面 入口 查询界面添加界面修改界面删除界面写入文件显示所有记录退出系统 2

2.2各功能之间的关系

2.2.1用户输入信息

在选择Insert选项后,进入adder子程序,需要用户依次输入姓名、学号、宿舍号、电话号码,输入信息分别存入manelist、studlist、dormlist、telelist数组中。

2.2.2搜索同学记录

建立selectbyname和selectbystud子程序,在select子程序中灵活调用,利用相关信息搜索与关键字匹配的同学记录。同时,可以把搜索这个功能提取出来,实现代码的共享。其中,搜索按关键字的类型不同可分为按姓名搜索和按学号搜索。

2.2.3关键字的匹配

selectbyname和selectbystud子程序中都需要进行关键字匹配和比较,故把比较关键字的大小提取出来在strCmp子程序中实现,方便进行搜索和排序。

2.3文档的处理

在用户进入班级通信录管理系统时,若要将输入的信息用文件保存,用户可选择Write to file选项,将缓冲区和文档中的所有记录显示出来。用户退出后,关闭文件。

3详细的算法设计

3.1主程序的设计

start: mov ax,data mov ds,ax mov es,ax call cshdata menu1: call clear

call displaytitle mov ah,01h int 21h cmp al,'1' jz sel

cmp al,'2' jz adde cmp al,'3' jz modi cmp al,'4' jz del

cmp al,'5' jz dis

3

cmp al,'7' jz wrt cmp al,'8' jz out1

jmp menu1 sel:

call clear call select jmp back adde:

call clear call adder jmp back modi: call clear call modify jmp back del:

call clear call delete jmp back dis:

call clear call disdata jmp back wrt:

call clear call write back:

lea dx,backstr ;返回主菜单提示语“Please enter 6 to bace main menu!” mov ah,09h int 21h mov ah,01h int 21h ea si,choice mov [si],al cmp al,'6'

jz menu1 ;输入6,返回主菜单 call clear jmp back out1:

mov ah,4ch int 21h

main endp ;主函数结束 code ends

4

end start

3.2学生记录的数据结构

namelist db 20 dup(20 dup(0)) studlist db 20 dup(20 dup(0)) dormlist db 20 dup(20 dup(0)) telelist db 20 dup(20 dup(0)) newname db 20 dup(0) newstud db 20 dup(0) newdorm db 20 dup(0) newtele db 20 dup(0) cnt db 1 dup(0) cntselect db 1 dup(0) choice db 1 dup(0) enter db 0dh,0ah,'$' blank db ' $' disname db 'Name:$' disstud db 'Stud:$' disdorm db 'Dorm:$' distele db 'Tele:$'

3.3学生通讯录信息的显示和输入

学生通讯录信息的显示和输入的逻辑实现思想是一样的。都是先找到第i条记录的起始地址,即学号的开始地址。然后根据j的值确定记录内部的偏移地址。然后调用相应的

功能实现学生通讯信息的显示和输入。下面以信息的显示为例作详细说明。 disdata proc near ;显示所有信息 lea si,cnt ;循环次数 mov cl,[si] mov bx,0 disdatal:

lea dx,disname mov ah,09h int 21h

lea dx,namelist add dx,bx mov ah,09h int 21h

lea dx,blank mov ah,09h int 21h

lea dx,disstud mov ah,09h int 21h

lea dx,studlist

5

本文来源:https://www.bwwdw.com/article/freh.html

Top