您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 班级通信录管理系统(汇编课程设计)
1班级通信录管理系统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根据姓名进行排序排序时,显示排序子菜单,按照姓名中字母的升序对记录进行排序。21.2.7保存通讯记录将填写好的同学通讯记录写入到固定文件中。1.2.8退出班级通信录管理系统选择该功能选项后,退出班级通信录管理系统,关闭文件,返回DOS。2设计说明2.1程序流程图设计SelectInsertModifyDeleteWriteShowEscBack入口主界面选择功能查询界面添加界面修改界面删除界面写入文件显示所有记录退出系统结束32.2各功能之间的关系2.2.1用户输入信息在选择Insert选项后,进入adder子程序,需要用户依次输入姓名、学号、宿舍号、电话号码,输入信息分别存入manelist、studlist、dormlist、telelist数组中。2.2.2搜索同学记录建立selectbyname和selectbystud子程序,在select子程序中灵活调用,利用相关信息搜索与关键字匹配的同学记录。同时,可以把搜索这个功能提取出来,实现代码的共享。其中,搜索按关键字的类型不同可分为按姓名搜索和按学号搜索。2.2.3关键字的匹配selectbyname和selectbystud子程序中都需要进行关键字匹配和比较,故把比较关键字的大小提取出来在strCmp子程序中实现,方便进行搜索和排序。2.3文档的处理在用户进入班级通信录管理系统时,若要将输入的信息用文件保存,用户可选择Writetofile选项,将缓冲区和文档中的所有记录显示出来。用户退出后,关闭文件。3详细的算法设计3.1主程序的设计start:movax,datamovds,axmoves,axcallcshdatamenu1:callclearcalldisplaytitlemovah,01hint21hcmpal,'1'jzselcmpal,'2'jzaddecmpal,'3'jzmodicmpal,'4'jzdelcmpal,'5'jzdis4cmpal,'7'jzwrtcmpal,'8'jzout1jmpmenu1sel:callclearcallselectjmpbackadde:callclearcalladderjmpbackmodi:callclearcallmodifyjmpbackdel:callclearcalldeletejmpbackdis:callclearcalldisdatajmpbackwrt:callclearcallwriteback:leadx,backstr;返回主菜单提示语“Pleaseenter6tobacemainmenu!”movah,09hint21hmovah,01hint21heasi,choicemov[si],alcmpal,'6'jzmenu1;输入6,返回主菜单callclearjmpbackout1:movah,4chint21hmainendp;主函数结束codeends5endstart3.2学生记录的数据结构namelistdb20dup(20dup(0))studlistdb20dup(20dup(0))dormlistdb20dup(20dup(0))telelistdb20dup(20dup(0))newnamedb20dup(0)newstuddb20dup(0)newdormdb20dup(0)newteledb20dup(0)cntdb1dup(0)cntselectdb1dup(0)choicedb1dup(0)enterdb0dh,0ah,'$'blankdb'$'disnamedb'Name:$'disstuddb'Stud:$'disdormdb'Dorm:$'disteledb'Tele:$'3.3学生通讯录信息的显示和输入学生通讯录信息的显示和输入的逻辑实现思想是一样的。都是先找到第i条记录的起始地址,即学号的开始地址。然后根据j的值确定记录内部的偏移地址。然后调用相应的功能实现学生通讯信息的显示和输入。下面以信息的显示为例作详细说明。disdataprocnear;显示所有信息leasi,cnt;循环次数movcl,[si]movbx,0disdatal:leadx,disnamemovah,09hint21hleadx,namelistadddx,bxmovah,09hint21hleadx,blankmovah,09hint21hleadx,disstudmovah,09hint21hleadx,studlist6adddx,bxmovah,09hint21hleadx,blankmovah,09hint21hleadx,disdormmovah,09hint21hleadx,dormlistadddx,bxmovah,09hint21hleadx,blankmovah,09hint21hleadx,distelemovah,09hint21hleadx,telelistadddx,bxmovah,09hint21hleadx,entermovah,09hint21haddbx,20loopdisdatalretdisdataendp3.4学生信息的搜索根据用户选择的关键字的类型,按照3.3所述的方法找到第i条记录的相应关键字的起始地址。遍历所有的学生通讯录记录,调用repecmpsb语句对记录中的关键字和用户输入的信息相比较。3.5修改一个同学的通信记录通过关键字搜索与之匹配的同学记录,若查找不到,则修改失败。否则提示用户输入新的通讯信息,覆盖原来的信息。3.6按照姓名进行排序Sort函数采用冒泡排序作为算法进行排序,内外循环次数均为同学通讯录记录的条数,7由于字符串的交换比较复杂,则将此子过程抽象出来,记为movR函数。使用loop循环依次交换两个记录的字符。3.7删除操作的实现删除数据信息,查询条件为姓名。删除查询结果的具体做法是:先搜索到与关键字匹配的记录,然后用最后一个记录将其覆盖,达到删除的效果。.3.8与文件相关的操作3.8.1创建文件filenamedb'F:\StudentList.txt',00hhandledw?bufferdb20dup(0)error1db'creatingfilewrong!',0dh,0ah.'$'error2db'writingfilewrong!',0dh,0ah.'$'wrtstrdb'writetheclassaddressbook!$'movah,3chmovcx,0leadx,filenameint21hjcerr1movhandle,ax3.8.2写文件leasi,cntmovcl,[si]moval,clmovdi,0lop1:movah,40hmovbx,handlemovcx,20leadx,namelistadddx,diint21hjcerr2movah,40hmovbx,handlemovcx,20leadx,dormlistadddx,diint21hjcerr2movah,40h8movbx,handlemovcx,1leadx,disteleint21hjcerr2movah,40hmovbx,handlemovcx,20leadx,telelistadddx,diint21hjcerr2adddi,20incalmovcl,[si]subcl,aljmplop1exit2:movah,3ehmovbx,handleint21hexit1:movah,4chint21herr1:movah,9leadx,error1int21hjmpexit1err2:movah,9leadx,error2int21hjmpexit2retwriteendp3.8.3关闭文件exit2:movah,3ehmovbx,handleint21hexit1:movah,4chint21herr1:9movah,9leadx,error1int21hjmpexit1err2:movah,9leadx,error2int21hjmpexit24源程序与执行结果4.1执行结果4.1.1disdata函数的执行结果4.1.2adder函数的执行结果104.1.3modify函数的执行结果4.1.4delete函数的执行结果114.1.5select函数的执行结果4.1.6Sort函数的执行结果4.2.7Save函数的执行结果4.2源程序stacksegmentstackdw512dup(?)stackendsdatasegmenttitlestrdb'Welcometothedirectory!',0dh,0ah,'Enteryourchoiceplease!',0dh,0ah,'$'menustrdb'1:Select',0dh,0ah,'2:Insert',0dh,0ah,'3:Modify',0dh,0ah,'4:Delete',0dh,0ah,'5:Showallrecord',0dh,0ah,'7:Writetofile',0dh,0ah,'8:Esc',0dh,0ah,'$'namelistdb20dup(20dup(0))studlistdb20dup(20dup(0))dormlistdb20dup(20dup(0))telelistdb20dup(20dup(0))12newnamedb20dup(0)newstuddb20dup(0)newdormdb20dup(0)newteledb20dup(0)filenamedb'F:\StudentList.txt',00hhandledw?bufferdb20dup(0)error1db'creatingfilewrong!',0dh,0ah.'$'error2db'writingfilewrong!',0dh,0ah.'$'wrtstrdb'writetheclassaddressbook!$'cntdb1dup(0)cntselectdb1dup(0)choicedb1dup(0)enterdb0dh,0ah,'$'blankdb'$'disnamedb'Name:$'disstuddb'Stud:$'disdormdb'Dorm:$'disteledb'Tele:$'backstrdb'Key6tomainmenu!',0dh,0ah,'$'selstr1db'1:Selectbyname',0dh,0ah,'2:SelectbyStudentNumber',0dh,0ah,'$'selstr2db'Theinformation!',0dh,0ah,'$'selstr3db'Nameisnotexist!',0dh,0ah,'$'selstr4db'StudentNumberisnotexist!',0dh,0ah,'$'selstr5db'StudentNumberdirectoryisempty!',0dh,0ah,
本文标题:班级通信录管理系统(汇编课程设计)
链接地址:https://www.777doc.com/doc-3741192 .html