班级通信录管理系统汇编课程设计文档格式.docx
- 文档编号:21332550
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:51
- 大小:215.85KB
班级通信录管理系统汇编课程设计文档格式.docx
《班级通信录管理系统汇编课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《班级通信录管理系统汇编课程设计文档格式.docx(51页珍藏版)》请在冰豆网上搜索。
查询界面
添加界面
修改界面
Back
结束
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文档的处理
在用户进入班级通信录管理系统时,若要将输入的信息用文件保存,用户可选择Writetofile选项,将缓冲区和文档中的所有记录显示出来。
用户退出后,关闭文件。
3详细的算法设计
3.1主程序的设计
start:
movax,data
movds,ax
moves,ax
callcshdata
menu1:
callclear
calldisplaytitle
movah,01h
int21h
cmpal,'
1'
jzsel
2'
jzadde
3'
jzmodi
4'
jzdel
5'
jzdis
7'
jzwrt
8'
jzout1
jmpmenu1
sel:
callselect
jmpback
adde:
callclear
calladder
jmpback
modi:
callmodify
del:
calldelete
dis:
calldisdata
wrt:
callwrite
back:
leadx,backstr;
返回主菜单提示语“Pleaseenter6tobacemainmenu!
”
movah,09h
movah,01h
easi,choice
mov[si],al
6'
jzmenu1;
输入6,返回主菜单
out1:
movah,4ch
mainendp;
主函数结束
codeends
endstart
3.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,0
disdatal:
leadx,disname
leadx,namelist
adddx,bx
leadx,blank
leadx,disstud
leadx,studlist
leadx,disdorm
leadx,dormlist
leadx,distele
leadx,telelist
leadx,enter
addbx,20
loopdisdatal
ret
disdataendp
3.4学生信息的搜索
根据用户选择的关键字的类型,按照3.3所述的方法找到第i条记录的相应关键字的起始地址。
遍历所有的学生通讯录记录,调用repecmpsb语句对记录中的关键字和用户输入的信息相比较。
3.5修改一个同学的通信记录
通过关键字搜索与之匹配的同学记录,若查找不到,则修改失败。
否则提示用户输入新的通讯信息,覆盖原来的信息。
3.6按照姓名进行排序
Sort函数采用冒泡排序作为算法进行排序,内外循环次数均为同学通讯录记录的条数,由于字符串的交换比较复杂,则将此子过程抽象出来,记为movR函数。
使用loop循环依次交换两个记录的字符。
3.7删除操作的实现
删除数据信息,查询条件为姓名。
删除查询结果的具体做法是:
先搜索到与关键字匹配的记录,然后用最后一个记录将其覆盖,达到删除的效果。
.
3.8与文件相关的操作
3.8.1创建文件
filenamedb'
F:
\StudentList.txt'
00h
handledw?
bufferdb20dup(0)
error1db'
creatingfilewrong!
'
0dh,0ah.'
error2db'
writingfilewrong!
wrtstrdb'
writetheclassaddressbook!
movah,3ch
movcx,0
leadx,filename
jcerr1
movhandle,ax
3.8.2写文件
leasi,cnt
movcl,[si]
moval,cl
movdi,0
lop1:
movah,40h
movbx,handle
movcx,20
leadx,namelist
adddx,di
jcerr2
leadx,dormlist
movcx,1
leadx,distele
leadx,telelist
adddi,20
incal
subcl,al
jmplop1
exit2:
movah,3eh
exit1:
err1:
movah,9
leadx,error1
jmpexit1
err2:
leadx,error2
jmpexit2
ret
writeendp
3.8.3关闭文件
4源程序与执行结果
4.1执行结果
4.1.1disdata函数的执行结果
4.1.2adder函数的执行结果
4.1.3modify函数的执行结果
4.1.4delete函数的执行结果
4.1.5select函数的执行结果
4.1.6Sort函数的执行结果
4.2.7Save函数的执行结果
4.2源程序
stacksegmentstack
dw512dup(?
)
stackends
datasegment
titlestrdb'
Welcometothedirectory!
0dh,0ah,'
Enteryourchoiceplease!
menustrdb'
1:
Select'
2:
Insert'
3:
Modify'
4:
Delete'
5:
Showallrecord'
7:
Writetofile'
8:
Esc'
filenamedb'
cntdb1dup(0)
enterdb0dh,0ah,'
backstrdb'
Key6tomainmenu!
selstr1db'
Selectbyname'
SelectbyStudentNumber'
selstr2db'
Theinformation!
selstr3db'
Nameisnotexist!
selstr4db'
StudentNumberisnotexist!
selstr5db'
StudentNumberdirectoryisempty!
addstr1db'
Inputthenewinformation!
addstr2db'
StudentNumberdirectoryisfull!
addstr3db'
Addsuccessfully!
modstr1db'
Newname:
modstr2db'
Newstud:
modstr3db'
Newdorm:
modstr4db'
Newtele:
modstr5db'
Inputnewrecord!
modstr6db'
Modifiedsuccessfully!
delstr1db'
0d,0ah,'
delstr2db'
Deletedsuccessfully!
name1db'
zhansan$'
name2db'
lisi$'
name3db'
wangwu$'
StudentNumber1db'
1111111$'
StudentNumber2db'
2222222$'
StudentNumber3db'
3333333$'
dorm1db'
123$'
dorm2db'
456$'
dorm3db'
789$'
tele1db'
123456$'
tele2db'
654321$'
tele3db'
457895$'
dataends
codesegment
mainprocfar
assumecs:
code,ds:
data
displaytitleprocnear
leadx,titlestr
leadx,menustr
ret
displaytitleendp
cshdataprocnear
movbx,0
leasi,name1
leadi,namelist
adddi,bx
movcx,20
cshname11:
moval,[si]
mov[di],al
incsi
incdi
jzcshname12
loopcshname11
cshname12:
leasi,name2
cshname21:
jzcshname22
loopcshname21
cshname22:
leasi,name3
cshname31:
jzcshname32
loopcshname31
cshname32:
movax,bx;
初始化计数器cnt
movbl,20
divbl
leasi,cnt
mov[si],al
leasi,StudentNumber1
leadi,studlist
cshstud11:
jzcshstud12
loopcshstud11
cshstud12:
leasi,StudentNumber2
cshstud21:
jzcshstud22
loopcshstud21
cshstud22:
leasi,StudentNumber3
cshstud31:
jzcshstud32
loopcshstud31
cshstud32:
addbx,20
movbx,0
leasi,dorm1
leadi,dormlist
cshdorm11:
jzcshdorm12
loopcshdorm11
cshdorm12:
leasi,dorm2
cshdorm21:
jzcshdorm22
loopcshdorm21
cshdorm22:
leasi,dorm3
cshdorm31:
jzcshdorm32
loopcshdorm31
cshdorm32:
leasi,tele1
leadi,telelist
cshtele11:
jzcshtele12
loopcshtele11
cshtele12:
leasi,tele2
cshtele21:
jzcshtele22
loopcshtele21
cshtele22:
leasi,tele3
cshtele31:
jzcshtele32
loopcshtele31
cshtele32:
cshdataendp
disdataprocnear
leadx,blank
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 班级 通信 管理 系统 汇编 课程设计