基于MVC的Android平台图书管理系统

2017-05-10 17:45王艺燕成丽君杨风仙
电子技术与软件工程 2017年8期

王艺燕+成丽君+杨风仙

摘 要

描述了一个采用MVC设计模式,运行在Android客户端的多界面单机版图书管理系统的设计实现过程。

【关键词】MVC框架 Android 图书管理系统

1 前言

基于Android平台的图书管理系统不仅可以减少人力资源消耗,同时还可以随时随地的查看与管理图书,方便用户进行操作。接下来本文将从设计与功能实现两个方面进行详细阐述。

2 设计

2.1 设计模式

该图书管理系统采用MVC(model view controller)设计模式,将视图与模型进行解耦,从而增强代码的可维护性与可扩展性。该图书管理系统的MVC框架具体设计如下:

2.1.1 Model:实现应用程序的核心功能

(1)创建图书管理数据库;

(2)对数据库实现增删改查的功能。

2.1.2 View:存放应用程序的用户界面

(1)用Activity加载XML实现的用户界面;

(2)在用户事件响应函数里创建controller实例,调用controller里面相应的处理用户输入的函数。

2.1.3 Controller:从界面读取数据,向后台转发数据

实现接受用户请求的函数,在函数里面调用model里面相应的函数去处理该请求。

2.2 功能

本系统的用户分为普通用户和管理员。普通用户权限有限,只可以实现登录功能、查看图书功能。管理员的权限较宽,不仅可以实现登录功能,还可以实现对图书的CRUD操作。如图1所示。

2.2.1 登陆功能

通过输入的用户名和密码判断用户的身份是普通用户、管理员还是不存在的用户。如果为普通用户则显示所有图书信息,如果为管理员则进入功能选择界面,若为不存在的用户则提示输入信息有误。

2.2.2 图书增删改查功能

通过输入图书的基本属性,编号、价格、名称来增加新的图书信息。通过输入图书表的主键即图书编号,对图书进行唯一的识别然后删除该图书。通过输入图书编号、图书名称、图书价格,实现对该图书信息的更新。最终所有的图书信息会以表格形式显示在手机界面中。

2.3 数据库

该图书管理系统的数据库采用Android自带的轻量级SQLite。因为SQLite在使用时无需安装部署方便,同时源代码开放是一个精简版的SQL库。表格设计共为两张:

2.3.1 用户表

用户属性为自增的id、姓名、密码和用户类型,用户类型分为普通用户和管理员,其中主键为id。

2.3.2 图书表

图书的基本属性为图书编号、图书名称、图书价格,其中图书编号为主键。

3 功能实现

在开发过程中为了使各个模块功能明确,所以采用MVC框架。在Android项目中,我们将程序分为三个包,从而使程序看起来清晰条理。目录结构如图2所示,具体功能如图3所示。

3.1 Model的具体实现

1.DBhelper类:创建数据库book.db与图书表book,同时添加setContext()静态函数,用于将环境变量context设置为整个应用程序。核心代码如下:

public DBHelper(Context context, String name, CursorFactory factory,int version) {//实现上下文、数据库名、CursorFactory类型、版本的传参}

public void onCreate(SQLiteDatabase db) {//使用execSQL()方法创建表 }

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//封装了升级数据库的逻辑}

2.BookManager:实现对book数据库的增删查改功能,分别使用db.instert(), db.delete(), db.update(), db.query()的方法。以添加图书为例,核心代码如下:

private DBHelper helper= new DBHelper();

public boolean add(String id, String name, String price){

//以只读写方式打开数据库,实现对数据的添加

SQLiteDatabase db= helper.getWritableDatabase();

Cursor cursor=db.query("book", null, "id=?", new String[]{id}, null, null, null);

if(cursor.moveToFirst()==true) return false;

ContentValues values=new ContentValues();

values.put("id", id);values.put("name", name);

values.put("price", price);db.insert("book", null, values);db.close();

return true;}

3.2 View的具体实现

对每一个布局文件创建一个Activity,在activity中實现控件的实例化以及监听事件,同时并向Controller对象发送用户请求。以添加图书为例,核心代码如下: