ImageVerifierCode 换一换
格式:DOCX , 页数:51 ,大小:215.85KB ,
资源ID:8196241      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8196241.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(班级通信录管理系统汇编课程设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

班级通信录管理系统汇编课程设计.docx

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

3、。2设计说明2.1 程序流程图设计 入口 主界面 选择功能 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

5、 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 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

6、backdel: call 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 2

7、1hmain endp ;主函数结束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

8、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,0disda

9、tal: 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 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 in

10、t 21h lea dx,blank 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 ? b

12、uffer 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!$ 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 d

13、x,namelist add 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 lop

14、1exit2: 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,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

15、 ah,9 lea dx,error2 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

16、 choice please!,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

17、 dup(0) newstud 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) choic

18、e db 1 dup(0)enter 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

19、,0ah,$ selstr4 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:$ mod

20、str3 db Newdorm:$ 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$ Stu

21、dentNumber2 db 2222222$ StudentNumber3 db 3333333$ dorm1 db 123$ dorm2 db 456$ dorm3 db 789$ tele1 db 123456$ tele2 db 654321$ tele3 db 457895$data endscode segment main proc far assume cs:code,ds:datadisplaytitle proc near lea dx,titlestr mov ah,9 int 21h lea dx,menustr int 21h retdisplaytitle endp

22、cshdata proc near mov bx,0 lea si,name1 lea di,namelist add di,bx mov cx,20 cshname11: mov al,si mov di,al inc si inc di cmp al,$ jz cshname12 loop cshname11cshname12: add bx,20lea si,name2 lea di,namelist add di,bx mov cx,20 cshname21: mov al,si mov di,al inc si inc di cmp al,$ jz cshname22 loop cs

23、hname21cshname22: add bx,20lea si,name3 lea di,namelist add di,bx mov cx,20 cshname31: mov al,si mov di,al inc si inc di cmp al,$ jz cshname32 loop cshname31cshname32: add bx,20mov ax,bx ;初始化计数器cnt mov bl,20 div bl lea si,cnt mov si,al mov bx,0 lea si,StudentNumber1 lea di,studlist add di,bx mov cx,

24、20 cshstud11: mov al,si mov di,al inc si inc di cmp al,$ jz cshstud12 loop cshstud11cshstud12: add bx,20lea si,StudentNumber2 lea di,studlist add di,bx mov cx,20 cshstud21: mov al,si mov di,al inc si inc di cmp al,$ jz cshstud22 loop cshstud21cshstud22: add bx,20lea si,StudentNumber3 lea di,studlist

25、 add di,bx mov cx,20 cshstud31: mov al,si mov di,al inc si inc di cmp al,$ jz cshstud32 loop cshstud31cshstud32: add bx,20 mov bx,0 lea si,dorm1 lea di,dormlist add di,bx mov cx,20 cshdorm11: mov al,si mov di,al inc si inc di cmp al,$ jz cshdorm12 loop cshdorm11cshdorm12: add bx,20 lea si,dorm2 lea

26、di,dormlist add di,bx mov cx,20 cshdorm21: mov al,si mov di,al inc si inc di cmp al,$ jz cshdorm22 loop cshdorm21cshdorm22: add bx,20 lea si,dorm3 lea di,dormlist add di,bx mov cx,20 cshdorm31: mov al,si mov di,al inc si inc di cmp al,$ jz cshdorm32 loop cshdorm31cshdorm32: add bx,20 mov bx,0 lea si

27、,tele1 lea di,telelist add di,bx mov cx,20 cshtele11: mov al,si mov di,al inc si inc di cmp al,$ jz cshtele12 loop cshtele11cshtele12: add bx,20 lea si,tele2 lea di,telelist add di,bx mov cx,20 cshtele21: mov al,si mov di,al inc si inc di cmp al,$ jz cshtele22 loop cshtele21cshtele22: add bx,20 lea

28、si,tele3 lea di,telelist add di,bx mov cx,20 cshtele31: mov al,si mov di,al inc si inc di cmp al,$ jz cshtele32 loop cshtele31cshtele32: add bx,20 retcshdata endpdisdata proc near lea si,cnt ;循环次数 mov cl,si mov bx,0disdatal: lea dx,disname mov ah,09h int 21h lea dx,namelist add dx,bx mov ah,09h int 21hlea dx,blank mov ah,09h int 21h lea dx,disstud mov ah,09h int 21h

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

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