前言
随着信息技术的高速发展,科技逐渐走进各行各业,帮助人们快速、便利地完成一些工作。BMS系统是基于Android移动设备的应用软件,该系统能够帮助用户在家里通过手机查看相应图书馆的馆藏情况,而不用到图书馆中查找。同时该系统还能够帮助管理员更加方便的查阅相关图书的借阅情况。
本系统使用Android Studio作为开发工具进行开发,以SQLite建立系统的后台数据库储存相关数据,使用MVC模式进行系统的设计与开发。
关键词:图书管理,借阅,Android,移动开发
目 录
前 言 3
第一章 绪论 6
1.1 开发项目背景 6
1.2 开发项目意义 6
1.3 客户资料 6
1.4 项目成果..............................................................7
1.5 资源需求..............................................................7
1.6 项目风险..............................................................8
1.7 分配任务..............................................................9
第二章 系统功能需求分析 10
2.1 登陆注册功能 10
2.2 用户相关功能 10
2.3 管理员相关功能 11
第三章 系统分析与设计 12
3.1 系统实现目标 12
3.2 系统总体结构 12
3.3 数据库设计 13
3.4 逻辑结构设计 14
第四章 系统实现 17
4.1 实现系统的关键技术 17
4.2 登录界面 19
4.3 管理员用户界面 20
4.4 图书展示界面 20
4.5 图书详细信息展示界面 20
4.6 用户收藏图书界面 21
4.7 用户借阅信息界面 22
第五章 系统测试与运行 24
5.1 测试的主要内容 24
5.2 登录界面测试 25
5.3 主要功能模块测试 26
5.3.1 图书管理功能测试 26
5.3.2 用户管理功能测试 28
5.3.3 图书借阅管理功能测试 29
第六章 总结 30
第一章 绪论
1.1 开发项目背景
在生活中,我们借阅图书需要先前往图书馆,然后在硕大的图书馆中根据分类等信息或者询问图书管理员去查找我们所需要的书籍。有些热门书籍还可能会因为借阅的人多暂时不在馆中,使得我们白跑一趟,并且我们也不能方便的知道借出去的书什么时候会被归还。对于图书的管理员来说,大量的借阅人群使得登记等相关工作变得繁琐复杂。
随着计算机科学技术的高速发展,越来越多的电子产品进入了我们的生活,它们不仅能够给丰富我们的空闲生活,在忙碌之后放松我们的精神,最主要的,高科技产品给我们的生活带来了许多的便利。
1.2 开发项目意义
传统的图书管理系统给用户和管理员带来的问题,可以在如今这样一个科技高速发展的环境下通过高科技产品得以解决。本文在这样一个背景下,进行了研究,并设计出一款基于Android移动设备的应用程序。
通过本系统可以使得用户不出户,便能查询到想要借阅的图书此时此刻是否在馆中,同时还能够查看自己借阅过的书籍的借阅时间,依次来计划归还时间。在满足用户需求的同时,管理员能够通过本程序增加、修改以及删除图书来完善馆藏信息,同时,管理员能够通过程序查看被书籍的借阅情况,便于图书的管理。提升了管理人员的工作效率以及用户的生活品质。
1.3 项目的内容
本文所进行研究的内容,是建立在上文的研究背景以及研究意义的基础之上的,对现实的图书馆图书信息的录入、查询、借出、管理以及订阅等流程进行仔细的研究,从而可以设计出一种不仅方便图书管理者完成图书馆中的各种图书信息管理的工作,而且可以满足借阅者方便快捷的查询、借阅以及归还图书功能的一款基于Android的移动设备的应用软件,使得图书管理员的日常工作得到很大的便利以及使得图书借阅者的生活需要得到大大的满足,进一步提高他们的工作效率以及节约他们日常生活的时间。
本文具体的研究内容有如下两点:
1、整理上文所述图书管理者和借阅者的系统需求,分析图书的录入、查询、借阅归还等管理流程,并根据需求和工作流程设计Android应用软件系统功能,从而进行软件设计开发的可行性研究。
2、根据1中设计的应用软件系统功能以及软件开发的可行性分析,进行软件用户友好界面的设计和功能框架的设计。
1.3客户资料
客 户 名 :湖南科技职业学院唐俊
客 户 要 求:根据要求设计开发一款基于Android系统的图书管理软件,功能完整、稳定,使用方便。
最终使用人 :个人
用 途 :图书管理。
1.4项目成果
表1.1 项目成果清单
1.5资源需求
表1.2 项目资源需求表
1.6项目风险分析
表1.3 项目风险一览表
1.7分配任务
表1.6.1 任务分配表
第二章 系统功能需求分析
本系统是运行在Android移动设备上的应用程序,针对使用者的相关需求,我们需要进行分析并进行系统的开发,使得系统更加的完善以及便利。
2.1 登陆注册功能
本功能提供用户的注册以及登录,使得用户能够合理的进行后续操作及查询自己的相关信息。其中,登录功能通过识别用户的角色,决定用户能够使用后续的哪些功能。其中超级管理员账号为admin,密码为123456方便测试。
2.2 用户相关功能
1、修改密码功能
本功能实现用户进行修改本账号的密码,提高账号的安全性。
2、忘记密码功能
在用户由于某些原因忘记自己账号的密码后,可通过注册账号时填写的相关密保问题验证达到修改密码的目的。
3、查看图书功能
图书展示页面会以表的形式展示出库中所有图书的书名等相关简略信息提供给用户进行图书的浏览,并且在用户点击后会跳转到相关图书的详细介绍页面,展示本书的所有信息。
4、搜索功能
用户可在相应页面根据所需要的书名或者作者名的关键字来搜索库中的相关书籍。
5、收藏功能
用户可通过本功能将相关的图书收藏到自己的信息中,并且能够在相关页面进行用户所收藏书籍的浏览。
6、借阅功能
用户可通过本功能借阅相关的书籍,相关页面会展示该用户的借阅书籍的相关状态以及相关属性。
7、退出登录功能
用户可通过本功能将自己的账号信息退出程序,提升账号的安全性,或者达到切换登录用户的目的。
2.3 管理员相关功能
1、图书管理功能
通过本功能,管理员可进行图书的添加、修改以及删除。
2、用户管理功能
通过本功能,管理员可设置普通的用户账号为管理员账号,使其获得相关 的权限,或者将管理员账号设置为普通用户账号。管理员可使用本功能修改用户的密码来帮助忘记密码的用户成功登录,同时管理员可删除某位用户的信息,维护系统的稳定。
3、借阅管理功能
管理员可通过本功能进行借阅记录的浏览,以及图书的归还。
第三章 系统分析与设计
3.1 系统实现目标
面对图书馆复杂的图书管理工作,开发系统首先是要满足目前的要求,又能适应后期扩展,所以系统性能应符合以下几个原则:
1、安全性:系统安全性是指既能保全存储的数据信息的安全,又能保证系统本身的安全。
2、实用性:要求可容纳的最大同时请求数和访问速度,符合实际管理。
3、数据库设计合理:这就要求在设计数据库的时候要保证数据的合理冗余、一致性、规范化存储数据、合理选择数据类型。
本系统为图书借阅者以及图书管理员提供了基本的图书信息自动化管理功能,适应于普通图书管理人员及图书借阅者的使用需求。
本系统使用身份验证及审核机制,能更有效的避免非法的访问。图书借阅者注册个人信息或登陆的时候,用户必须提供有效的信息并进行验证,通过对象保存帐号、密码以及相关信息,防止非法用户非法登录及恶意破坏。根据用户的不同类型,访问权限级别也不同,按权限可分为:图书借阅者和图书管理员两个权限。
3.2 系统总体结构
通过对系统的总体要求进行分析得出系统可以分为图书借阅者的前台操作和图书管理员的后台的图书信息管理。
系统设计不仅要求功能完善,而且还要界面友好,因此,对于一个成功的系统设计,功能模块的设计是关键。由于本系统可执行的是一般性质的图书管理工作,本系统具有一般适用性,其所实现的功能满足图书馆对日常工作的图书管理,方便管理员和图书借阅者的日常生活。系统应在前面说到的功能需求分析的基础上进行设计和实现。首先,整个系统分成几个小的模块,小的问题,然后,进一步细分模块,添加细节。
1、登录功能
系统账户分2个模块:图书管理员和图书借阅者两个权限。各个模块登录之后能够使用的功能是不同的,登录时需要验证用户名和密码以及用户的权限是否与数据库中的匹配,验证通过后才允许账户登录图书管理系统。
2、图书管理员功能
图书管理员通过用户名和密码进入图书管理系统,可以实现三大功能:图书管理、用户管理和借阅管理。图书管理功能包括增加图书信息、删除图书信息、查询和修改图书信息;用户管理功能主要是管理用户注册的信息,包括注册用户或管理员信息、删除用户注册的信息、以及修改用户信息,保证图书管理系统的登陆信息的安全性;借阅管理功能主要是查看借阅记录以及归还图书功能。
3、图书借阅者功能
图书借阅者通过用户名和密码进入图书管理系统的用户界面,用户权限主要实现三个方面的功能:查询图书信息功能、借阅图书功能以及借阅管理功能。查询图书信息功能主要是根据图书的几个基本信息,如:图书名、作者、出版社、分类等信息查询所需要查看或借阅的图书信息;借阅图书功能主要完成用户对需要的图书进行借阅的功能;借阅管理功能主要是对图书借阅者的借阅信息进行管理,可以查看已借阅的图书信息以及对已借阅的图书进行取消借阅的功能。
由系统的登录功能设计画出图书管理系统的登录图如下:
图3-1 系统登录图
由系统的总体设计说明画出图书管理系统的总体结构图如下:
图3-2 系统总结构图
3.3 数据库设计
对于实现系统的需求带说,数据库的设计是非常重要的部分,也是系统设计中最基本的一个部分,因此选择合适的数据库并创建合理的结构式开发程序是首要的问题。数据库系统是现代信息系统基础设施。本系统的数据库将采用Android自带的Sqlite数据库进行设计与管理。根据以上章节对系统所做的需求分析和系统设计,规划出本系统中使用的数据库实体分别为用户实体、图书实体、借阅信息实体,各个实体具体的描述如下图所示:
描述概念模型的常用工具就是实体——联系方法,即E-R模型。
图3-3 用户信息实体图
图3-4 图书信息实体图
图3-5 借阅信息实体图
3.4 逻辑结构设计
本系统的数据结构比较清晰,依据课程管理系统的功能要求,主要设计出数据库的表有:用户信息表(user)、图书信息表(books)和借阅信息表(borrow)。
逻辑结构设计就是把概念结构设计阶段设计好的基本E-R图转换为数据模型相符合的逻辑结构。本系统选用的是Sqlite数据库,关于数据库表结构设计如下所示:
表3-1 用户信息表(user)
表3-2 图书信息表(book)
表3-3 借阅信息表(borrow)
表3-3 借阅信息表(borrow)
第四章 系统实现
4.1 实现系统的关键技术
根据第一章所设计的Android应用软件系统功能框架和界面的设计,分析出实现这些功能和界面所需的各个关键的技术点,并深入研究这些关键技术点,这些技术点包括:
(1)Android的xml文件的编码规则;
(2)系统各种界面布局的实现方式;
(3)系统中Activity的创建以及Activity间的自由切换;
(4)Sqlite数据库的使用;
(5)使用信息提示框的弹出;
(6)以及图片资源的加入。
下面举例介绍数据库的关键技术:
SQLiteOpenHelper类是Android下操作Sqlite的内部实现类,它封装了大部分函数和操作数据库的具体功能,帮助创建数据库和数据库版本管理。
使用必须创建一个子类来实现其onCreate(SQLiteDatabase), onUpgrade(SQLiteDatabase, int, int)方法,同时任意实现onOpen(SQLiteDatabase)方法,同时打开数据库操作必须保证数据库存在,如果不存在则创建它,并且对其必要的升级,维护其保持一个最佳的状态。
使用本类提供内容开始创建数据库是非常容易的,首先必须对数据库进行升级,以避免在数据库启动后长期使用而阻塞数据。
因此,我们只需要基于此类继承出一个子类,实现子类特有的属性,即可完成此类的开发:
public class DBHelper extends SQLiteOpenHelper {
private Context mcontext;
public DBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version){
super(context, name, factory, version);
this.mcontext = context;
}
}
下列代码实现了重要的数据库表创建的功能:
private final static String CREATE_USER = "CREATE TABLE user(id INTEGER PRIMARY KEY " +
"AUTOINCREMENT,username VARCHAR(20),password VARCHAR(20),passlock VARCHAR(20)" +
",passkey VARCHAR(20),role VARCHAR(20),borrowlist VARCHAR(20),collection VARCHAR(20))";
private final static String CREATE_BOOK = "CREATE TABLE book(id INTEGER PRIMARY KEY " +
"AUTOINCREMENT,ISBN VARCHAR(20),bookname VARCHAR(20),author VARCHAR(20),press VARCHAR(20)" +
",publicationtime VARCHAR(20),category VARCHAR(20),synopsis VARCHAR(50),page INTEGER" +
",inventory INTEGER)";
private final static String CREATE_BORROW = "CREATE TABLE borrow(boid INTEGER PRIMARY KEY " +
"AUTOINCREMENT,botime VARCHAR(20),bookid VARCHAR(20),userid VARCHAR(20),bostate INTEGER" +
",backtime VARCHAR(20),reviewer VARCHAR(20))";
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_USER);
db.execSQL(CREATE_BOOK);
db.execSQL(CREATE_BORROW);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists user");
db.execSQL("drop table if exists book");
db.execSQL("drop table if exists borrow");
}
4.2 登录界面
对于一个完整的图书管理系统,不仅要求功能完整、操作简单,还要有良好的设计风格和另人耳目一新的界面。对于一个系统来说,登录界面是很重要的,登录界面设置了进入本系统的用用户名和密码,防止非法用户进入本系统进而破坏系统安全和所保存的数据,故只有合法的用户在输入正确的密码和选择正确的权限后方可进入相应的系统界面,否则将会提示“帐号或密码输入错误”,此时需要重新输入帐号和密码,直到通过系统验证,才可进入系统[13]。未注册过的用户第一次进入需要注册新用户信息。这些功能使得图书管理系统对其使用者有了一定的限制,不仅增加了系统的安全性及保密性,而且便于系统的控制和管理,更加有利于系统的维护。
图4-1 系统登陆界面
界面切换功能的实现,填写完账号和密码后,点击登陆按钮,登陆按钮被设置为了监听,点击后会把用户填写的信息和数据库里的信息匹配,相符的话,则跳转到登陆后的主界面,若不相符,则会提示错误信息,限制用户进入主界面。
4.3 管理员用户界面
功能描述:图书管理员是整个系统保持正常运行的关键因素。在图书管理员界面主要有四个大功能:在图书管理功能中图书管理员可以对系统的图书信息进行管理,有增加图书信息、删除图书信息、修改图书信息和查看图书信息四个子功能,可以保证图书管理系统中图书信息的准确性;在用户管理功能中,管理员可以对用户及管理员信息进行注册和管理,包括修改用户权限、删除用户信息和修改用户信息等功能,这确保了系统和资料的安全性和保密性;在借阅管理功能中,管理员可以对用户的借阅信息进行查看和管理,从而使得图书的借阅信息能够被管理员所了解,使得图书管理系统正常的运行。
图4-2 图书管理员界面
4.4 图书展示界面
功能描述:用户登陆成功后,此界面会展示所有的图书信息,用户可以浏览该界面或者在界面上方的搜索框中输入图书名或者作者的关键字查找想要的图书。
图4-3 图书展示界面
4.5 图书详细信息展示界面
功能描述:当用户在图书展示界面点击一本图书时,系统将会跳转到该图书的详细信息展示界面, 在该界面中,将会展示该图书的书名、作者、所属分类、馆存数量、出版社、出版时间、页数以及简介等基本信息。同时该界面提供了收藏图书和借阅图书两个核心功能的按钮。
图4-4 图书详细信息展示界面
4.6 用户收藏图书界面
功能描述:此界面将展示用户收藏的图书信息,当用户取消收藏该图书后,该界面将不会显示该图书。
图4-5 图书收藏图书界面
4.7 用户借阅信息界面
功能描述:此界面将展示用户的所有借阅信息,方便用户查看,以及合理规划还书时间防止时间过期。
图4-6 用户借阅信息界面
第五章 系统测试与运行
在软件的生命周期中,软件测试是一个软件的重要组成部分,是为了发现错误而执行的一个程序或者系统的过程[14]。软件的测试结果对软件的可靠性有很重要的作用,软件测试是软件产品交付给大众用户使用之前用以保证软件质量的一个很重要的方法。在软件每一阶段中的生命周期都包含软件测试活动,因此在软件设计的整个过程中都应该有软件测试进行。使得随时能够检查本阶段的成果能不能接近预期的结果目标,进而尽可能早一点发现到错误并加以改正。
5.1 测试的主要内容
我们在进行测试工作的时候为了保证系统的质量,可以将测试工作的内容分成以下所说的几个部分,即: 审查代码、集成测试、单元测试、系统测试和确认测试。
(1)单元测试
检查系统设计最小的单位(—个模块)就是单元测试,通过测试检查出用来定义该模块的功能说明不符合与实现该模块的实际功能的情况,以及编码时的错误。
(2)集成测试
我们可以将每个小的模块按照设计的需求组装起来后同时进行集成测试,集成测试的主要目的是检查与接口有关联的某些问题。假设一个模块和另一个模块可能会出现由于疏忽的问题而引起有危害的影响;把子功能模块组合起来后可能不能产生预期的主功能;有个别的看起来视乎能接受的误差却很有可能积累到不能接受的程度;全程数据结构可能有错误等。
(3)确认测试
确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,基本排除了接口的错误,接下来我们就应该进一步的检验系统软件的有效性,就是确认测试工作的任务,是将系统软件的性能和功能发挥到如用户们合理期待的一样。
(4)系统测试
完成软件设计开发以后,最后还要将它与系统中其他的部分整合运行,从性能测试、安全测试、强度测试和恢复测试等四个方面来进行系统测试。
系统采用的测试用例如下表所示:
表5-1 系统测试用例表
5.2 登录界面测试
当输入的用户名、密码信息经身份验证查询不对应、不正确时,系统将会显示出“登录失败!用户名不存在或密码错误!”,停留在登录界面,无法进入系统。密码正确时,则跳转到系统主界面,并通过验证用户的权限组确定某些功能按钮是否可见。
图5-1 登录错误提示
5.3 主要功能模块测试
5.3.1 图书管理功能测试
图书管理员可对图书信息进行管理,管理员可以根据图书馆中图书的信息进行添加图书信息,查看图书信息详情,修改图书信息,删除已有图书信息。为防止添加空白或错误图书信息,在添加时会有系统的错误提示无法进行提交,在填写了完整且正确的图书信息后才能保证提交信息成功。下面进行测试:
图5-2 图书管理功能主界面
图5-3 添加图书信息界面
图5-4 修改图书信息界面
5.3.2 用户管理功能测试
图书管理员可以对所有用户的所有信息进行添加、删除、修改管理。下面进行测试:
图5-5 用户管理功能主界面
图5-6 用户信息修改及删除界面
5.3.3 图书借阅管理功能测试
图书管理员可以对用户的图书借阅信息进行查看和管理。下面进行测试:
图5-7 用户借阅管理功能主界面
第六章 总结
本文详细的论述了基于Android的图书管理系统的设计与实现的过程。通过这一个月的设计,我终于完成了图书管理系统,在这个过程中,我将这个学期在Android移动开发课程上所学到的知识应用到了实践中。在实践的过程中,我遇到了许多的难题,但在经过上网查找相关的资料之后总能得以解决,汲取了很多他人的智慧,慢慢的提升自己的专业知识能力。从开始对开发工具都不是很熟悉到后来的得心应手,我发现本次实践使我开发软件的能力得到了很大的提升。
在本次的实践中,也让我发现了许多现在的不足,系统的架构能力还需要很大的提升,才能够不至于在开发的过程中总发现许多地方在前期的设计不足。在今后的学习生活里,还需要多阅读软件开发的相关书籍,提升自己的软件开发能力。