基于80x86汇编的图书管理系统

   日期:2024-12-30    作者:caijiyuan 浏览:63    移动:http://w.yusign.com/mobile/quote/8546.html

基于80<i></i>x86汇编的图书管理系统

图书管理是高校都必须切实面对的工作,但目前仍有少部分院系仍在使用传统的人工方式管理,或极简单的管理方式管理图书资料。这种方式存在着许多缺点,如效率低、保密性差且较为繁琐。另外,随着图书资料数量的增加,其工作量也将大大增加,这必将增加图书资料管理者的工作量和劳动强度,这必将给图书资料信息的查找、更新和维护都带来了很多困难。

除了各大高校的图书馆,还有更多的类似于新型的借阅销售图书的机构或店面也需要进行大量书籍的管理,这里面除了工作极其的繁琐,高昂的费用也是不必要的消费,而这些都可以想办法避免。

图书管理系统对于现代图书馆而言,是能否发挥其教学科研的作用的至关重要技术平台。对于读者和图书管理员来说,是能否方便快速获取信息的关键。而图书管理系统最基本的功能就是在购进新书时,能方便管理者添加书籍信息,在处理旧书时,能方便的删除信息,读者想寻找图书时,能够通过多种信息快速查找到需要的信息图书。所以,图书管理系统能够为用户提供人工管理所提供不了的充足的信息和快捷方便的操作手段,将极大地提高工作效率,减少工作时间。

图书管理作为计算机应用的一个分支,有着手工管理无法比拟的优点,如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高图书管理的效率。且系统的功耗比人工的消耗要廉价得多。经过简单的调查,目前我国各类高等学校中仍有一小部分单位图书资料管理还停留在人工管理的程度上。这样的管理机制已经不能适应时代的发展,并将浪费许多人力和物力。随着科学技术的不断提高,这种传统的手工管理方法必然被以计算机为基础的信息管理方法所取代。

从技术角度来讲,随着时代的飞速发展,计算机技术也在不断的进步,开发工具更加完善,能实现的功能也更加多样化。因此,运用现代的发达技术和丰富的知识来成功的开发一套能够为用户提供充足的信息和快捷的查询手段,并符合经济条件的图书管理系统,将是非常有必要的。

我们的程序只实现了最基本的记录信息修改删除查阅等功能,而针对不同的需要还可以在此程序的基础上添加更加多样化的功能,例如借阅记录的管理、账号登录和修改、用户的管理以及更多的分支,而这只需要留出足够的空间就可以继续实现。用来满足来自各个方面的不同需求,包括图书借阅者、图书馆普通工作人员和图书馆管理人员。其中,对于图书借阅者来说,可以满足其查询和借阅图书,以及对个人账户信息进行修改等;对于图书馆普通工作人员来说,可以满足对图书借阅者的借阅图书和还书等要求进行操作,并形成借书合作还书记录,对于图书馆管理人员来说,需要对图书借阅者、图书馆工作人员和馆存图书等进行管理,还要对系统进行监测和维护等。总而言之,计算机实现的信息管理要比人工管理更加多样化,更低消耗,更方便快捷。

此程序的主要功能是高效、快捷地管理图书的数据信息。系统记录了图书的名字,编号,作者,操作者只需要通过其中任何一种信息,就可以轻松实现图书查询操作。使用本系统能方便快捷地完成图书馆的信息数据管理工作,让工作人员在图书管理方面将会有很大的提高,借阅人员也可以更快的找到想要的信息。

该图书管理系统实现的基本功能:实现对书籍信息实现插入、搜索、修改、删除、浏览的功能,其中内容包括书籍编号、书籍名称、作者姓名。调用功能键:i键为插入功能,s键为搜索功能,m键为修改功能,d键为删除功能,l键为浏览功能。

对上述各项功能进行集中、分块,按照结构化程序设计的要求,能够得到如图所示界面概况

主菜单界面

插入功能及搜索功能

该系统的设计分成几个相对独立的模块,这些模块都进行集中式管理,分别用i、s、m、d、l、q键调用。

程序开始时进入的是主界面,主界面是一个菜单栏,菜单由六部分组成,每部分都是一个小程序,根据用户输入不同的指令,它们执行不同的功能。

当用户输入"i"时,程序调用添加图书功能,此时出现的子程序上需要我们依次输入书本的名字、编号和作者,我们固定了输入的字符串长度为10,超过规定长度之后就自动跳转到下一个需要输入字符的字段中,如果用户输入完作者并回车后,新添加的书本信息将会被保存到存储器中,然后子程序结束,回到主界面菜单栏。

当用户输入"s"时,程序调用搜索图书信息功能,此时跳到搜索子程序的界面上,界面出现一句英文提示语,提示用户输入需要搜索的书名,若用户输入书名字符在储存器里面存在,则输出该图书信息,显示在屏幕上,然后退出子程序,返回菜单主界面;若遍历储存器并没找到与输入的书名字符相同的信息,屏幕上就出现提示语“No Match!”,并返回主界面。

当用户输入"m"时,程序调用修改图书信息功能,此时跳转的子界面上让我们输入需要修改的图书的名字,如果输入正确的书名,屏幕上会依次出现需要修改的书名、编号和作者,然后用户可以重新输入新的图书信息,输完后程序自动保存到存储器中并返回到主界面;否则系统会提示没有这本书并返回主界面。

当用户输入"d"时,程序调用删除图书信息功能,如果用户输入存储器里有的书名,则系统会先显示出删除的书本的全部信息,然后删除关于此书籍的一切信息并返回主界面;否则系统提示没有这本书并返回主界面。

当用户输入"l"时,程序调用的是浏览图书信息功能,该功能的作用是显示出存储器中存的所有书籍的全部信息,并返回主界面。

当用户输入"q"时,程序退出,返回DOS。

程序开发用到了栈,每次调用小程序时,先将要使用的寄存器压入栈中,子程序运行结束时再将用到的寄存器按顺序出栈。本系统在存储图书信息时用的是结构数组,运用顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一);内存中可用存储单元的地址是连续的。优点是存储密度大,存储空间利用率高。缺点是插入或删除元素时不方便。程序中用到比较字符串的部分有很多,该功能的实现需要将用户输入的字符逐个送入缓冲区中,与存储数组里面的数据相比较,然后得出结果。

对于查询、删除、修改、以及插入,均需录入新内容以便进行字符匹配与增加,所以我们调用DOS功能中的0A号功能与01号功能,进行字符串与字符的输入。执行AH=01H号功能调用,从键盘读取一个字符,将该字符回显到屏幕上。主要用与菜单功能选择和对不定长字符串的录入。当输入回车时,加入“$”为字符串传送做准备。执行AH=0AH号功能调用,等待用户输入一个或多个字符,最后用回车确认。

当查到用户所需内容时,需要显示信息或提示。我们采用DOS功能调用中的09号与ROM-BIOS功能调用中的13号功能。执行AH=09H号功能调用,从当前光标开始显示DS:DX指向的以“$”为结尾的字符串。该调用也可以输出回车和换行字符产生回车和换行的作用。

当输入新内容后,若要完成查询、插入、删除、修改功能,还要调用字符串处理命令。传送利用MOVSB命令,比较应用CMPSB命令。MOVSB命令将数据段中的一个字节传送至附加段的主存单元。

进入程序后,显示功能菜单:i—插入;s—搜索;m—修改;d—删除;l—浏览;q—退出,返回DOS。

当用户输入“s”时,程序调用搜索图书功能,此时跳到搜索子程序的界面上,提示用户输入书籍名称,若有则输出图书信息,若没有则显示“No Match!”,退出子程序返回主菜单。

在删除过程中如果不小心误删了一些信息的话,要再想找回几乎是不可能的,这样就会很麻烦,所以我们专门写了一段代码用来打印出所删除的图书详情,可以在错误的时候补救一下。

通过查阅书籍和资料自主学习,我们知道了可以通过用例如把字节数不满的用20H加满的方法来解决这个问题,代码例如mov namesav[di],20h,而且还有很多类似的情况都可以用这种思想解决。

经过反复思考,发现在第二次输入查询信息时,由于所有的查询都共用一个变量,这就导致第二次输入时,由于信息比第一次短,没有完全覆盖,造成上次的信息和这次输入的信息相互叠加了,结果变量中所有的信息比较时,就不能查询到第二次实际输入的信息。同样的问题也出现在删除中,字符的位置中没有使用的统一置0。只要设置好对应的变量分开就行了。

在编写子函数时,一定要在其结尾加上ret,然后再加上结束标志ENDP。由于在结尾没有加RET,结果程序不能正确运行,而且总是自动终止了程序,加上ret后,即可正确运行了。

我们在完成一个程序时,可以简单的把一个程序划分为几个完整的几部分,使每一部分 独立的完成特定的一部分和计算任务。子程序的使用还可以大大的减小程序的体积,在一程序中,如果需要多次反复的是用某一段代码的话,就可以将这段代码设定为子程序,以后想使用时,只要一CALL再一RET就可以了。我认为使用子程序的关键在于明白子程序的机理,明白子程序是如何保存和恢复断点的信息的,只有真正的理解了这一点才能更好地利用好子程序。

我们开发本程序时,将计数控制循环和条件控制循环结合起来使用。计数控制循环一般使用LOOP指令,先将循环的次数放入CX中,在多重循环的计数控制中要注意保存和复原上一次循环的断点信息,在保留和复原时可以使用堆栈进行处理。条件控制循环一般使用JMP指令使程序跳到这一段的开头,用CMP在循环中进行比较判断,再根据程序要求,选择适当的转移条件,跳出循环。但是,当已知循环的次数限制范围,但又要求在符合条件时结束循环,就要同时使用两者。

我们通过绘制程序流程图解决了这个问题。流程图能够把比较抽象的问题变得而形象化,并且有助于理清楚思路,便于程序的编制,在程序的易读性和易维护性上有非常大的帮助。

这次课程设计对于我来说,确实是一项不简单的任务。通过不断地翻书查资料,向老师同学请教,我对汇编语言也有了进一步的认识和掌握,进一步理解了各个指令的功能,以及解决一些问题的基本思想。通过这次亲自动手认真做课程设计,进一步熟悉了汇编语音的结构和使用方法,以前学习时不太懂的地方,有了更深刻的认识,基本达到了能读懂汇编语言并理解其功能的水平。这次课程设计也让我获得了宝贵的经验,为以后的毕业设计打下了良好的基础,培养了自己选用参考书,查阅文献资料的能力,提高独立思考,深入研究,分析问题解决问题的能力,知道了理论和实践相结合的重要性。虽然过程中我们碰到了很多问题,但我们更享受克服问题的过程。学习就是一个不断地发现问题解决问题的过程,在这期间我学会了很多东西,例如要注意多动脑子勤思考,不懂得地方要向老师请教,才能有更大的提升。

本文地址:http://w.yusign.com/quote/8546.html    述古往 http://w.yusign.com/static/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关行情
推荐行情
点击排行
{
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号