班级通信录管理系统(汇编课程设计).doc
《班级通信录管理系统(汇编课程设计).doc》由会员分享,可在线阅读,更多相关《班级通信录管理系统(汇编课程设计).doc(36页珍藏版)》请在沃文网上搜索。
1、 班级通信录管理系统1 需求说明1.1实验要求1.1.1建立通讯录,添加一个同学的通信记录,删除一个同学的通信记录,修改一个同学的通信记录,查询一个同学的通信记录,显示所有同学的通信记录,能根据姓名或宿舍号进行排序。1.1.2通信记录包括学号、姓名、电话号码、宿舍号等信息,所有信息最终用文件保存。1.2功能简述1.2.1 建立通信录运行程序后,程序自动建立固有的通讯录。1.2.2添加通信记录 进入“添加界面,根据提示,依次添加同学的通信记录条目。添加成功,后显示操作成功信息。1.2.3删除通信记录进入“删除界面,依据姓名删除信息。输入姓名后,显示该同学的所有信息,并显示操作成功。删除后,返回主
2、菜单。1.2.4查询通信记录 进入“查询界面,询问用户按姓名或学号查找学生记录。待用户正确输入已存有的用户姓名或学号后,按回车键后显示所有匹配该信息的学生记录。若输入信息错误或是无该用户没记录,则显示操作错误。1.2.5显示所有通信记录 进入“显示界面,将通讯录中所有同学的通讯记录分行显示出来,每行中同学的不同信息间隔表示。1.2.6根据姓名进行排序排序时,显示排序子菜单,按照姓名中字母的升序对记录进行排序。1.2.7保存通讯记录 将填写好的同学通讯记录写入到固定文件中。1.2.8退出班级通信录管理系统 选择该功能选项后,退出班级通信录管理系统,关闭文件,返回DOS。2设计说明2.1 程序流程
3、图设计 入口 主界面 选择功能 Select Insert Modify Delete Write Show Esc 退出系统 显示所有记录 写入文件 删除界面 查询界面 添加界面 修改界面 Back 结束2.2各功能之间的关系2.2.1用户输入信息在选择Insert选项后,进入adder子程序,需要用户依次输入姓名、学号、宿舍号、电话号码,输入信息分别存入manelist、studlist、dormlist、telelist数组中。2.2.2搜索同学记录建立selectbyname和selectbystud子程序,在select子程序中灵活调用,利用相关信息搜索与关键字匹配的同学记录。同时,
4、可以把搜索这个功能提取出来,实现代码的共享。其中,搜索按关键字的类型不同可分为按姓名搜索和按学号搜索。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
5、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 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 backmodi: call clear call modify jmp backdel: call
6、clear call delete jmp backdis: call clear call disdata jmp backwrt: call clear call writeback: 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 backout1: mov ah,4ch int 21hmain endp ;主
7、函数结束code ends end start3.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 d
8、b 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,0disdatal: lea dx,di
9、sname 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 add dx,bx mov ah,09h int 21h lea dx,blank mov ah,09h int 21h lea dx,disdorm mov ah,09h int 21h lea dx,dormlist add dx,bx mov ah,09h int 21h lea dx,b
10、lank mov ah,09h int 21h lea dx,distele mov ah,09h int 21h lea dx,telelist add dx,bx mov ah,09h int 21h lea dx,enter mov ah,09h int 21h add bx,20 loop disdatalretdisdata endp3.4学生信息的搜索根据用户选择的关键字的类型,按照3.3所述的方法找到第i条记录的相应关键字的起始地址。遍历所有的学生通讯录记录,调用repe cmpsb语句对记录中的关键字和用户输入的信息相比较。3.5修改一个同学的通信记录通过关键字搜索与之匹配的同
11、学记录,若查找不到,则修改失败。否则提示用户输入新的通讯信息,覆盖原来的信息。3.6按照姓名进行排序Sort函数采用冒泡排序作为算法进行排序,内外循环次数均为同学通讯录记录的条数,由于字符串的交换比较复杂,则将此子过程抽象出来,记为movR函数。使用loop循环依次交换两个记录的字符。3.7删除操作的实现删除数据信息,查询条件为姓名。删除查询结果的具体做法是:先搜索到与关键字匹配的记录,然后用最后一个记录将其覆盖,达到删除的效果。.3.8与文件相关的操作3.8.1创建文件 filename db F:StudentList.txt,00h handle dw ? buffer db 20 du
12、p(0) error1 db creating file wrong!,0dh,0ah.$ error2 db writing file wrong!,0dh,0ah.$ wrtstr db write the class address book!$ mov ah,3ch mov cx,0 lea dx,filename int 21h jc err1 mov handle,ax3.8.2写文件 lea si,cnt mov cl,si mov al,cl mov di,0lop1: mov ah,40h mov bx,handle mov cx,20 lea dx,namelist add
13、 dx,di int 21h jc err2 mov ah,40h mov bx,handle mov cx,20 lea dx,dormlist add dx,di int 21h jc err2 mov ah,40h mov bx,handle mov cx,1 lea dx,distele int 21h jc err2 mov ah,40h mov bx,handle mov cx,20 lea dx,telelist add dx,di int 21h jc err2 add di,20 inc al mov cl,si sub cl,al jmp lop1exit2: mov ah
14、,3eh mov bx,handle int 21hexit1: mov ah,4ch int 21herr1: mov ah,9 lea dx,error1 int 21h jmp exit1err2: mov ah,9 lea dx,error2 int 21h jmp exit2ret write endp 3.8.3关闭文件exit2: mov ah,3eh mov bx,handle int 21hexit1: mov ah,4ch int 21herr1: mov ah,9 lea dx,error1 int 21h jmp exit1err2: mov ah,9 lea dx,e
15、rror2 int 21h jmp exit24源程序与执行结果4.1执行结果4.1.1 disdata函数的执行结果4.1.2 adder函数的执行结果4.1.3 modify函数的执行结果4.1.4 delete函数的执行结果4.1.5 select函数的执行结果4.1.6 Sort函数的执行结果4.2.7 Save函数的执行结果4.2源程序stack segment stack dw 512 dup(?)stack endsdata segment titlestr db Welcome to the directory!,0dh,0ah,Enter your choice please
16、!,0dh,0ah,$ menustr db 1:Select,0dh,0ah,2:Insert,0dh,0ah,3:Modify,0dh,0ah,4:Delete,0dh,0ah,5:Show all record,0dh,0ah,7:Write to file,0dh,0ah,8:Esc,0dh,0ah,$ 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) newstu
17、d db 20 dup(0) newdorm db 20 dup(0) newtele db 20 dup(0)filename db F:StudentList.txt,00h handle dw ? buffer db 20 dup(0) error1 db creating file wrong!,0dh,0ah.$ error2 db writing file wrong!,0dh,0ah.$ wrtstr db write the class address book!$cnt db 1 dup(0) cntselect db 1 dup(0) choice db 1 dup(0)e
18、nter db 0dh,0ah,$ blank db $ disname db Name:$ disstud db Stud:$ disdorm db Dorm:$ distele db Tele:$ backstr db Key 6 to main menu!,0dh,0ah,$ selstr1 db 1:Select by name,0dh,0ah,2:Select by Student Number,0dh,0ah,$ selstr2 db The information!,0dh,0ah,$ selstr3 db Name is not exist!,0dh,0ah,$ selstr4
19、 db Student Number is not exist!,0dh,0ah,$ selstr5 db Student Number directory is empty!,0dh,0ah,$ addstr1 db Input the new information!,0dh,0ah,$ addstr2 db Student Number directory is full!,0dh,0ah,$ addstr3 db Add successfully!,0dh,0ah,$ modstr1 db Newname:$ modstr2 db Newstud:$ modstr3 db Newdor
20、m:$ modstr4 db Newtele:$ modstr5 db Input new record!,0dh,0ah,$ modstr6 db Modified successfully!,0dh,0ah,$ delstr1 db Student Number directory is empty!,0d,0ah,$ delstr2 db Deleted successfully!,0dh,0ah,$ name1 db zhansan$ name2 db lisi$ name3 db wangwu$ StudentNumber1 db 1111111$ StudentNumber2 db
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 班级 通信 管理 系统 汇编 课程设计