个人档案管理汇编._第1页
个人档案管理汇编._第2页
个人档案管理汇编._第3页
个人档案管理汇编._第4页
个人档案管理汇编._第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计说明书 汇编语言课程设计 班级 姓名 学号 设计题目 个人档案文件管理 设计时间 至 指导教师 评 语 评阅成绩 评阅教师 1 课程设计的目的 任务 进行程序设计方法和技能的基本训练 巩固在课堂上学到的有关程序设 计的基本知识和方法 通过实际动手能力的培养 进一步熟悉汇编语言程序的结构和使用方 法 达到能独立阅读 编制和调试一定规模的汇编语言程序的水平 2 软件需求分析和设计 题目 个人档案管理 功能描述 创建一个人档案文件 若已存在则直接使用该文件 它包含学号 姓名 年龄 性别 电话 通信地址六项内容 试编写管理程序 要求系统显示如 下菜单 按键后执行相应的操作 1 L 命令 列出文件中的所有人的记录 每人一行 2 I 命令 在文件末尾插入一个人的记录 3 D 命令 根据姓名删除指定的纪录 若出现多条记录 应再提供删除哪 条记录的选择 4 F 命令 按学号字段的值进行查询 并将查询结果显示在屏幕上 5 0命令 根据姓名对记录进行排序 6 Q 命令 退出管理系统 7 P 命令 建立或打开文件 总流程图 在主程序中 不能实现在程序进行中选择打开文件 新建文件的操作 对 于文件的操作 只可以在最初的时候进行 同时 要在程序最后关闭程序 否则之前建立的文件内容是空的 查询子程序中 由于学号是唯一的 所以不会出现有多个结果的输出 控制 学号的语句是在输入中实现的 同时 如果没有找到相应的学号 程序会输出相 关的提示信息 文件读取流程图 读取文件中 可能会出现 文件已经建立好了 但是内容是空的 或者 我们之前对文件进行的相关操作 如插入一条记录 删除插入的记录 导致 文件最终的内容是空的 删除流程图 3 程序实现说明 程序主要实现了对学生的学号 姓名 年龄 性别 电话号码 家庭 住址的录入 增加数据 查找 删除 生成文件等功能 程序主要运用了 结构体定义 以及 DOS 中断 子程序等来实现 主程序 程序从输入文件路径开始 文件可以是存在的 也可以是新建的 完 成之后用 CALL 语句进行子程序的调用 在这个调用的处理上 比较巧妙 的是 在数据定义的时候 定义了一个字符串 前面是实现功能所对应的 标号 后面是子程序名 当我们输入信息之后 程序将输入的内容与标号 进行比较 找到之后 指针后移调用子程序 如果没有找到 则提示输入 的标号错误 删除数据子程序 清空记录数 保存按名字查找到的待删除的记录条数 取地址 之后 有串的比较 存储记录条数 调整存储的位置 待删除记录首地址 总是 指向实际待处理的记录 提示输入学号 要删除记录多于两条时 找到的 记录的地址 用相同的处理去实现删除数据的功能 最后要调整指针 以 及记录的内容 在删除的子程序中 最大的亮点是查询出的结果是多条记 录的时候 会有进一步的判断来实现较为精确的删除 在代码中 有记录 条数乘 2的语句 这是为了找到待删除语句做准备的 而删除则是用 XOR 功能 将内容清空来实现其操作 输入子程序 输入中 是在学号的输入上做了判断 即不允许有重复的学号出现 当输入的是相同的时候 会出现提示信息 并且要求重新输入 在输入一 个学生的信息之后 会有信息提示 询问是否要继续输入 如不继续 则 显示菜单 进行其他操作 由于用了结构体 就可以将输入的信息直接存 储到相应的位置 关闭文件 在关闭文件操作中 对文件的操作只在开始和结束时进行 中间不进 行任何操作 如果有效记录是 0就不写文件 程序主要是对文件中内容的 写操作 同时要判断文件中的记录条数是不是 0 如果是就不写如文件 即空文件 关闭文件是操作中最后一步 如果在操作的过程中 没有选择 关闭文件 那么 运行程序后 之后生成空的文件 用户的操作将没有任 何意义 所以 在做完其他的操作之后 一定要选择关闭文件 起到保存 数据的作用 读文件 读文件操作中 首先是将指针移到文件首 将记录清零 开始读数据 读取的数据长度就是结构体变量总字节数 之后记录数加 1 指向下一个 记录 保存末尾地址 INST 有用到 指针应该弄成指向下一条待存入内 存的地址 为其他子程序使用提供方便 在读文件的过程中会出现 文件 内容是空的 即文件读取成功 但是读取的字符是 0 对此作了相应的处 理 提示文件为空 程序中定义了 3个宏 GET 用于输入信息 同时对 DX AX 做相应的处理 在之后的程序中 直接 调用就可以了 避免在寄存器的使用上出错 OUTPUT 用于输出提示信息 Clear 是实现清屏的功能 只在程序最后关闭的时候实现 List 子程序 显示提示信息的程序 内容很简单 有记录时显示 没有的时候提示 文件为空 Fnd 子程序 按照学号进行查找 因为学号唯一 所以查询的时候 不需要做其他的判断 只要确认学号是否存在就可以 Ord 子程序 采用冒泡排序法 按姓名进行排序 由小到大排序 Inst 子程序 输出提示信息 然后调用输入子程序来实现 4 调试与测试 建立文件 文件可以是已经存在的 也可以是新建的 输入信息 输入 的时候 可以输入空的信息 即直接回车 选择菜单中的选项 实现相应的功能 图中是实现了显示信息的功能 并且体现出可以输入空信息 上图实现的是 数据的按姓名排序以及按学号查找相关信息 图中实现的是删除功能 信息提示输入姓名 如果出现多条记录 会提 示输入学号 进一步确认删除的信息 5 程序总结 这次的课程设计 我选的是个人档案管理 主要实现对部分信息的处理 插入 删除 查找 排序的功能 程序基本完成了这些功能 可以实现 10个 学生的信息记录 同时在删除的功能中 先进行姓名查找 遇到多条记录时 要求用户输入学号 达到删除自己想要删除的信息 在本次课程设计中 程 序最大的难度就在于结构体的使用 以及文件的相关处理 结构体定义好之 后 在使用的时候就可以直接取我们想要的地址 而不是之前想要取出数据 就要计算数据的具体位置 由于数据的长短的不一样 给我们计算带来的很 大的难度 使用结构体 很好的解决了这些问题 文件的处理中 不太理解 系统是怎样将文件生成的 同时 生成文件的内容的为什么会有一些特殊的 符号 对于文件的相关信息查阅的一些资料 明白代码中哪些是新建文件 建文件时 又分为可读 可写 与可读写 但是不清楚什么是文件标号 是 指文件是哪一种类型 文件句柄是指文件的内容 对这些还是没能很透彻的 理解 这点感到很遗憾 程序不足的是 文件的打开只可以在最开始进行 中间如果选择菜单项的文件命令时 程序会做输入命令错误来处理 没能够 将这部分很好的修改 还是因为对文件的理解不够深入 而且程序操作完成 后必须选择关闭程序 否则生成的文件里没有用户输入的信息 关闭程序就 是起到保存的作用 关于这一点不是很满意 我想要的结果是系统可以提示 用户要不要保存 或者自动保存 同时 在输入中 没有做判断 也就是说 可以输入空的内容 但是文件关闭之后 下次打开时 不会提示文件是空的 因为内容虽然没有输入 但是回车也在文件中生成了 同时 在外部直接写 文件的时候 要严格按照文件中每个数据定义的长度来写数据 否则 程序 调用文件时 一些数据会被覆盖 没法显示 希望在之后的学习中 可以继续深入了解汇编语言 把自己遇到的问题 都能够独立解决 并且可以自己独立的完成想要实现的软件 提高动手能力 以及思维深度 6 参考文献 汇编语言 郑晓薇 著 机械工业出版社 汇编语言 王爽 著 清华大学出版社 7 附录 用户手册 程序首先要输入路径 然后依次填写信息 输入一个人的信息之后 会 提示是否继续 输入完毕后 可以进行其他操作 删除时 先提供姓名 出 现多条记录时 再输入学号来确定删除内容 文件的打开只可以在开始使用 完成操作后 必须关闭文件 否则之前的内容不保存 源程序清单 删除子程序 DEL PROC NEAR 删除记录 MOV MEM2 0 清空 保存按名字查找到的待删除的记录条数 OUTPUT STRH 提示输入待删除记录的名字 GET RECNAM LEA BP RECNAM SI 进行查找 LEA BX DAT DI MOV CX RECS D1 PUSH CX MOV SI BP 保持不变 MOV DI BX LEA DI DI NAM 调整为姓名 XOR CX CX MOV CL RECNAM 1 RECNAM DB 16 16 DUP 以实际输入个数为标准 ADD CX 2 CLD REPZ CMPSB JNZ D2 INC MEM2 存储查找到的条数 MOV AX MEM2 乘上 2 MOV SI MEM2 ADD SI AX MOV MEM3 SI 2 BX 调整存储的位置 待删除记录首地址 MOV DI BX MOV CX 1 CALL LT1 D2 ADD BX LEN 总是指向实际待处理的记录 POP CX LOOP D1 CMP MEM2 0 未找到记录 JZ D3 CMP MEM2 1 找到一条记录 JZ D4 OUTPUT STRJ 提示输入学号 要删除记录多于两条时 GET RECNAM LEA BP RECNAM 1 SI LEA BX MEM3 DI 找到的记录的地址 MOV CX MEM2 找到的记录条数 H1 PUSH CX MOV SI BP 保持不变 MOV DI BX 寻址 内存里面存的还是地址 别人的 LEA DI DI NUM 1 调整为学号 XOR CX CX MOV CL RECNAM 1 RECNAM DB 16 16 DUP 以实际输入个数为标准 ADD CX 1 1个 号 10个学号 CLD REPZ CMPSB JNZ H2 MOV DI BX MOV MEM3 DI 还是存储到 MEM3里 不管之前 MEM3里面是什么 MOV CX 1 CALL LT1 显示最终确定的记录 POP CX JMP D5 H2 ADD BX 2 指向 BX 寻址的下一个字 POP CX LOOP H1 JMP D4 D3 OUTPUT STRI JMP D9 D4 MOV DI MEM3 转存地址 根据 DI 进行删除 D5 MOV SI DI DI SI 指向同一个地址 ADD SI LEN 指向要往前移的记录 DEC RECS 有效记录减 1 XOR DX DX 计算剩余组数 MOV BX DI D6 CMP BX 0 看 BX 是否已经指向首地址 0 JZ D7 SUB BX LEN INC DX JMP D6 D7 MOV CX RECS SUB CX DX 应往前移动的组数 CMP CX 0 如果已经是最后一组就不用动了 有效记录已经减了 1 JZ D9 D8 MOV BP CX 保存 整体前移 MOV CX LEN CLD REP MOVSB 不用管 DI SI 会自动调整 MOV CX BP LOOP D8 MOV MEM1 DI 保存末尾地址 此时 DI 即为下一结构体首址 D9 RET DEL ENDP 输入子程序 INPUT PROC NEAR I1 OUTPUT STR5 学号 GET DI NUM PUSH DI 保存 DI CMP RECS 0 JZ S4 第一次不用比较 MOV BP DI SI LEA BX DAT DI MOV CX RECS S1 PUSH CX MOV SI BP 保持不变 MOV DI BX LEA DI DI NUM 调整为学号 MOV CX 13 11 11 DUP CLD REPZ CMPSB JNZ S2 OUTPUT STRE 提示学号重复 POP CX 这个 CX 并无太大意义 只是为了保持堆栈平衡 JMP S3 S2 ADD BX LEN POP CX LOOP S1 JMP S4 无学号相同记录则跳至顺序执行 S3 POP DI JMP I1 S4 POP DI OUTPUT STR6 姓名 GET DI NAM OUTPUT STR7 年龄 GET DI AGE 入口参数 DI 控制好就行 OUTPUT STR8 性别 GET DI SEX OUTPUT STR9 电话号 GET DI TEL OUTPUT STRA 通信地址 GET DI MAL INC RECS ADD DI LEN 指向下一个结构 OUTPUT STRB 提示是否继续输入 MOV AH 01H INT 21H CMP AL Y JZ I2 CMP AL y JNZ I3 CMP RECS N JZ I3 I2 OUTPUT CRLF JMP I1 I3 MOV MEM1 DI 保存末尾地址 INST 可以用 OUTPUT CRLF RET INPUT ENDP 关闭文件子程序 QUT PROC NEAR 退出 对文件的操作只在开始和结束时进行 中间不进行任何操作 LEA DX FNAMEBUF 2 新建同名文件 覆盖 不需要先关闭之前的 MOV AH 3CH XOR CX CX INT 21H JC Q2 提示失败信息 MOV FCODE AX MOV CX RECS 写文件开始 CMP CX 0 JZ Q3 如果有效记录是 0就不写文件 MOV BX FCODE LEA DX DAT Q1 MOV BP CX MOV AH 40H 写文件实际代码 MOV CX LEN 写入的字节数 INT 21H JC Q2 提示写入出错 ADD DX LEN MOV CX BP LOOP Q1 JMP Q3 跳过错误信息 Q2 OUT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论