正文

汇编通讯录系统[代码]2007-01-04 11:14:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/bakers/22214.html

分享到:

                汇编课程设计报告         题目: 通讯录系统             姓名: 何xx    学号: 2004xx       班级:计科04-x        指导老师: 郑xx         1.1   设计要求. 题目要求设计一个通讯录管理系统.需要具有以下功能和模块. (1) 输入模块: 输入新的通讯条目,包括:姓名,性别,电话,E-mail,通讯地址,邮编,QQ号 (2) 删除模块: 删除功能. (3) 查询模块: 查询,输入姓名可以查询该人其他信息. (4) 修改模块: 修改某一条记录. (5) 存储模块(附加功能,可以不完成): 能够将输入的信息存储到硬盘文件;并能读入存储在该文件中的信息. 1.2   环境. 软件: windows xp, masm 6.x, notepad 硬件: PC 1.3   分析,设计思想. 看到题目,感觉就像是个简单的数据库系统.支持数据的增/删/查/改操作.具有应用价值.在数据库系统中,数据是以数据库文件的形式存在.通过访问/操作数据库中的表或表中的字段,获取我们想要的信息. 本系统可以归结为4个功能: select, insert, update,delete. 在这里不可能建立一张数据表来维护这种关系型数据.必须要借助汇编中的结构类型.定义一个结构数组,用来维护数据条目及信息的处理. 如图: 修改和删除操作都要依赖查询功能. 故把整个程序分为4个模块是比较明智的. 1.4   模块说明 由于变量较多,故没有采用多模块设计方案. 几个功能分别在6个子过程中完成. (1)    Insert : 添加新的数据项. 自动将条目总数加一. (2)    Select : 查询信息,查询条件为姓名. 对结构数组无影响. (3)    Update: 修改数据信息, 查询条件为姓名,修改查询结果的值,修改文件. (4)    Delete : 删除数据信息, 查询条件为姓名,删除查询结果值,具体做法是: 不停的将后面的一条信息,前移,就达到删除的效果. (5)    Load : 加载文件到内存,涉及文件读/写/打开操作. (6)    Save : 保存缓冲区数据至文件. 1.5   流程详细 1.6   主要代码 ;================================= ;                     何xx           ;              完成日期:  1月1日-1月3日  /2007 ;              汇编课程设计 ;              第二题:  通讯录设计 ;================================= (1)    宏定义 ;清空当前item(输入缓冲区) setitem macro a,b ;清空关键字 clearkey macro a (2) 数据段 dseg segment     ;文件路径    filename db 'G:\programs\asm\design\items.txt',0    ;错误提示: 没有找到文件或无法打开    errshow db 0ah,0dh,'can not open or find this file! ','$'     ;选择菜单    menu db 0ah,0dh,'pleate enter your choice!',0ah,0dh                db '1: Insert',0ah,0dh         db '2: Select/Search',0ah,0dh         db '3: Update',0ah,0dh         db '4: Delete',0ah,0dh         db '5: Save',0ah,0dh         db '6: Exit',0ah,0dh         db '$'     ;命令选择    command db 0    ;提示输入姓名    namelabel db 0ah,0dh,'name:$'    ;提示输入性别(F/M)    genderlabel db 0ah,0dh,'gender:$'    ;提示输入电话    phonelabel db 0ah,0dh,'phone:$'    ;提示输入E-MAIL    maillabel db 0ah,0dh,'email:$'    ;提示输入通讯地址    addresslabel db 0ah,0dh,'address:$'    ;提示输入邮编    postalcodelabel db 0ah,0dh,'postalcode:$'    ;提示输入QQ号    qqlabel db 0ah,0dh,'qq:$'    clr db 0ah,0dh,'$'    ;添加成功提示    inserted db 0ah,0dh,'new item has been added successfully!',0ah,0dh,'$'    ;编辑成功提示    changed db 0ah,0dh,'you have changed this item successfully!',0ah,0dh,'$'    ;删除成功提示    deleted db 0ah,0dh,'delete successfully!',0ah,0dh,'$'    ;保存成功提示    saved db 0ah,0dh,'save successfully!',0ah,0dh,'$'    ;查询失败    selected db 0ah,0dh,'nothing to match!',0ah,0dh,'$'    ;显示数据条数    numshow db 0ah,0dh,'the count of items:$'    ;=============================================================    ;定义结构体    item struct       pid db 0       pname db 10,?,10 dup('$')       pgender db 10,?,10 dup('$')       ptel db 10,?,10 dup('$')       pemail db 10,?,10 dup('$')       paddress db 10,?,10 dup('$')       ppostalcode db 10,?,10 dup('$')       pqq db 10,?,10 dup('$')       pnum db 0    item ends     ;定义结构体结束    ;==============================================================    olditem item {}    ;输入缓冲区    newitem item {}    ;结构数组长度    len equ type item    ;结构总数,文件中此变量位于最后一位    num db 0    ;定义结构数组    items item 100 dup({})    ;inititems item 100 dup({})    ;查,删,改条件/通过姓名    key db 10,?,10 dup('$')    oldkey db 10,?,10 dup('$')    ;flag,作为查找结果标志,0表示查找失败.    flag db 0    ;自定义指针    pointer db 0    ;标号地址表    addrtbl dw insertbegin,selectbegin,updatebegin,deletebegin,savebegin,done dseg ends (3) 标号定义: Insertbegin                                Selectbegin                                         Updatebegin Deletebegin Savebegin Done                                                               (4) 子过程 (由于篇幅限制,不给出代码) ;添加记录子过程 insert proc ;查找子过程 select proc ;编辑子过程 update proc ;删除子过程 delete proc ;保存至文件 save proc ;加载文件内容到缓冲区: 结构数组,其中最后一位为数据条数 load proc ;打印子过程 print proc      1.7  小结.             关于程序: 实现题目要求的功能(包括文件的存储),初步具备简单数据库系统的功能,虽然没有实用性, 但对整体机制的理解很有帮助.是一次不错的练手机会.     体会: 通过本次课程设计.进一步掌握了ASM程序设计方法,由于考试在即,时间较紧张,未做界面的优化,在16位下实现,总体来说题目较简单,功能区分明显,结果较清晰,写程序的时候未遇到太多困难, 小BUG倒很多,一口气写完,第一次调试居然198个ERROR, 不段的调试程序和优化流程,花费了不少心思,频繁的参考课本和相关资料是不可避免的,也深刻的感受到了,汇编程序设计的繁琐和开发效率的低下,汇编好几行语句在高级语言里面只需要一条就可以完成,事物总有两面性,存在即具其合理性,ASM的优越的性能(时间和空间),高级是望尘莫及的,ASM让我们更加注重底层的东西,这也是一个优秀软件工程师必备的素质,处理繁琐的细节问题往往暂用了相当一部分的开发时间,相信课程设计的目的已经达到. 1.8 参考书籍或资料.                                                  (1) 教材           (2) http://community.csdn.net/           (3) BIOS_DOS.DOC(来自FTP)

阅读(8800) | 评论(3)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册