个人档案管理汇编._第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 RECNAMLEA BP,RECNAM ;SI ,进行查找LEA BX,DAT ;DIMOV CX,RECSD1: PUSH CXMOV SI,BP ; 保持不变MOV DI,BXLEA DI,DI. NAM ; 调整为姓名XOR CX,CXMOV CL,RECNAM+1 ;RECNAM DB 16,?,16 DUP(?,以实际输入个数为标准 ADD CX,2CLDREPZ CMPSBJNZ D2INC MEM2 ; 存储查找到的条数MOV AX,MEM2 ; 乘上 2MOV SI,MEM2ADD SI,AXMOV MEM3+SI-2,BX; 调整存储的位置 , 待删除记录首地址MOV DI,BXMOV CX,1CALL LT1D2: ADD BX,LEN ; 总是指向实际待处理的记录!POP CXLOOP D1CMP MEM2,0 ; 未找到记录JZ D3CMP MEM2,1 ; 找到一条记录JZ D4OUTPUT STRJ ; 提示输入学号,要删除记录多于两条时!GET RECNAMLEA BP,RECNAM+1 ;SILEA BX,MEM3 ;DI ,找到的记录的地址 ,MOV CX,MEM2 ; 找到的记录条数H1: PUSH CXMOV SI,BP ; 保持不变MOV DI,BX ; 寻址,内存里面存的还是地址,别人的LEA DI,DI. NUM+1 ; 调整为学号XOR CX,CXMOV CL,RECNAM+1 ;RECNAM DB 16,?,16 DUP(?,以实际输入个数为标准 ADD CX,1 ;1个 ? 号 +10个学号CLDREPZ CMPSBJNZ H2MOV DI,BXMOV MEM3,DI ; 还是存储到 MEM3里,不管之前 MEM3里面是什么 !MOV CX,1CALL LT1 ; 显示最终确定的记录 !POP CXJMP D5H2: ADD BX,2 ; 指向 BX 寻址的下一个字POP CXLOOP H1JMP D4D3: OUTPUT STRIJMP D9D4: MOV DI,MEM3 ; 转存地址 , 根据 DI 进行删除D5: MOV SI,DI ;DI,SI 指向同一个地址ADD SI,LEN ; 指向要往前移的记录DEC RECS ; 有效记录减 1XOR DX,DX ; 计算剩余组数,MOV BX,DID6: CMP BX,0 ; 看 BX 是否已经指向首地址 0JZ D7SUB BX,LENINC DXJMP D6D7: MOV CX,RECSSUB CX,DX ; 应往前移动的组数CMP CX,0 ; 如果已经是最后一组就不用动了,有效记录已经减了 1! JZ D9D8: MOV BP,CX ; 保存 整体前移MOV CX,LENCLDREP MOVSB ; 不用管 DI,SI ,会自动调整MOV CX,BPLOOP D8MOV MEM1,DI ; 保存末尾地址,此时 DI 即为下一结构体首址D9: RETDEL ENDP输入子程序:INPUT PROC NEARI1: OUTPUT STR5 ; 学号GET DI. NUMPUSH DI ; 保存 DICMP RECS,0JZ S4 ; 第一次不用比较MOV BP,DI ;SILEA BX,DAT ;DIMOV CX,RECSS1: PUSH CXMOV SI,BP ; 保持不变MOV DI,BXLEA DI,DI. NUM ; 调整为学号MOV CX,13 ;11,?,11 DUP(?CLDREPZ CMPSBJNZ S2OUTPUT STRE ; 提示学号重复POP CX ; 这个 CX 并无太大意义,只是为了保持堆栈平衡 JMP S3S2: ADD BX,LENPOP CXLOOP S1JMP S4 ; 无学号相同记录则跳至顺序执行S3: POP DIJMP I1S4: POP DIOUTPUT STR6 ; 姓名GET DI. NAMOUTPUT STR7 ; 年龄GET DI. AGE ; 入口参数 DI 控制好就行OUTPUT STR8 ; 性别GET DI. SEXOUTPUT STR9 ; 电话号GET DI. TELOUTPUT STRA ; 通信地址GET DI. MALINC RECSADD DI,LEN ; 指向下一个结构OUTPUT STRB ; 提示是否继续输入MOV AH,01HINT 21HCMP AL,YJZ I2CMP AL,yJNZ I3CMP RECS,NJZ I3I2: OUTPUT CRLFJMP I1I3: MOV MEM1,DI ; 保存末尾地址, INST 可以用!OUTPUT CRLFRETINPUT ENDP关闭文件子程序:QUT PROC NEAR ; 退出 对文件的操作只在开始和结束时进行, 中间不进行任何操作! ! LEA DX,FNAMEBUF+2 ; 新建同名文件,覆盖,不需要先关闭之前的!MOV AH,3CHXOR CX,CXINT 21HJC Q2 ; 提示失败信息MOV FCODE,AXMOV CX,RECS ; 写文件开始CMP CX,0JZ Q3 ; 如果有效记录是 0就不写文件MOV BX,FCODELEA DX,DATQ1: MOV BP,CXMOV AH,40H ; 写文件实际代码MOV CX,LEN ; 写入的字节数INT 21HJC Q2 ; 提示写入出错ADD DX,LENMOV CX,BPLOOP Q1JMP Q3 ; 跳过错误信息Q2: OUTPUT ER

温馨提示

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

评论

0/150

提交评论