基于Android开发的图书管理系统报告.doc
《基于Android开发的图书管理系统报告.doc》由会员分享,可在线阅读,更多相关《基于Android开发的图书管理系统报告.doc(19页珍藏版)》请在冰豆网上搜索。
宁宁波大红鹰学院
《Android开发基础》
项目名称
基于Android的图书管理应用的设计与实现
所在学院
信息工程学院
班级
13软工1班
姓名
许格
学号
1322120141
2016年6月20日
目录
一、开发背景 1
二、需求分析 1
2.1功能分析 1
2.2开发技术分析 1
三、系统设计 1
3.1系统目标 1
3.2系统功能 2
3.3数据库设计 2
四、系统功能实现 4
4.1主界面 4
4.2.客户端登录 6
4.2.1学生登录 6
4.2.2学号快捷注册 7
4.3图书管理 9
4.3.1图书添加 9
4.3.2图书信息显示 10
4.3.3图书数据库操作 11
4.4投稿阅读 12
4.4.1投稿 12
4.4.2阅读广场 13
4.4.3投稿数据库操作 14
4.5预约图书 15
4.5.1预约卡 15
4.5.2预约数据库 15
4.6翻译 16
4.7娱乐 17
五、总结与收获 18
一、开发背景
移动互联网时代的来临,说明一个崭新的时代开始了。
所谓移动互联网是将移动通信和互联网整合在一起,移动设备(包括手机和上网本)可以随时随地地访问互联网资源和应用。
智能手机是移动互联网时代一个标志性的客户端工具,它和传统的手机是有区别的,它就像一台“小电脑”,具有独立的操作系统,可以自由安装、卸载软件,具有强大的计算和存储能力,可以通过移动通信网络来实现无线网络接入。
对于移动终端设备飞速发展的今天,传统WEB上的应用出现在手机终端是一个大的趋势。
而基于Android开发的图书馆管理系统手机客户端,正是对这一趋势的良好体现,Android平台下的图书馆管理系统的开发,能很好的为用户提供方便,用户能通过它能随时随地的了解系统的实时信息,做到信息的实时化。
通过Android平台下的图书馆管理系统客户端的开发,与传统WEB应用进行良好的互补。
同时,对于校内的图书馆管理系统来说,手机对于学生是必不可少的一个物品,手机客户端这种形式的图书馆管理系统,能更加贴近学生的生活习惯,并且适合学生年龄段的习性,这对学生更多的接触到图书馆的信息有一定得促进作用。
二、需求分析
2.1功能分析
基于Android平台开发的图书馆管理系统客户端从设计者的角度来看,用户角色主要为学生用户;功能包括注册、登录、投稿、翻译、娱乐、书籍查询、图书实时更新,借阅图书共八大部分。
学生用户可以根据学号进行快捷注册,学生在投稿区写文章发表,在广场互动,翻译功能可以帮助解决学习上遇到不理解的英文进行翻译,娱乐功能中有两个小游戏,用户可以适时放松一下。
当然主要功能当然是查询借阅书籍。
2.2开发技术分析
该系统是基于Eclipse软件并连接AndroidSDK进行开发的基于Android平台开发的图书管理系统,数据库采用较小速度快的SQLite,是嵌入式移动设备中常用的轻量级数据库。
软件UI通常使用xml技术设计,由于布局的使用,并且布局之间可以互相嵌套,使得android软件UI的设计变得非常灵活,力求图书馆与学生之间更加亲近方便。
三、系统设计
3.1系统目标
l系统采用人机交互的方式,界面美观友好,信息查询灵活、方便,数据存储安全可靠;
l能够让学生更好更方便的了解图书馆和借阅图书;
l丰富学生知识,增加学生阅读积极性;
l能够对学生信息进行有效的管理;
l能够准确、详细地了解学生的每月阅读量;
l系统应最大限度地实现易维护性和易操作性。
3.2系统功能
本系统的具体功能如下:
1、图书管理:
新增、浏览馆藏图书。
2、借阅图书:
学生查找图书进行预约,预约成功可前往图书馆借阅。
3、投稿:
学生可以在平台发布文章,发布的文章可在阅读界面查看,可对文章点赞,评论和分享。
4、翻译:
学生可以使用翻译功能在线翻译,如学习时遇到看不懂的英文句子以及单词。
5、娱乐:
娱乐功能开发了两个休闲小游戏,打地鼠游戏和扫雷游戏。
学生可在学习之余放松一下。
6、个人:
学生可使用学号进行注册和登录。
本系统的系统结构功能图如图3-1所示。
图3-1系统结构功能图
3.3系统用例图
3.4数据库设计
由于本系统是在校学生使用的软件,需要充分考虑图书管理和学生借阅需求等问题,而SQLite是一款轻型的数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
处理速度快,效率高,正好满足了手机app的需求,所以本系统采用SQLite数据库。
根据数据库的概念设计,可以进一步进行数据库的逻辑设计。
本人所设计的数据库命名为Tushu,数据库中包括以下的数据表:
1、学生信息表(student)2、借阅表(cord)3、图书表(books)4、留言表(reads)
(一)学生信息表(student)
表1student表结构
字段名
数据类型
说明
Id
Int
主键
S_Num
Varchar(10)
学号
S_Name
Varchar(20)
姓名
S_Class
Varchar(20)
班级
S_Phone
Varchar(11)
联系方式
S_pwd
Varchar(20)
密码
(二)借阅表(cord)
表2cord表结构
字段名
数据类型
说明
ISBN
Int
图书编号,主键
B_Name
Varchar(20)
书名
S_Num
Varchar(20)
学号
ReturnTime
Datetime
归还时间
(三)图书表(books)
表3books表结构
字段名
数据类型
说明
ISBN
Int
图书编号,主键
B_Name
Varchar(20)
书名
B_Author
Varchar(20)
作者
B_Pm
Varchar(255)
书本介绍
(四)留言表(reads)
表4reads表结构
字段名
数据类型
说明
Number
Int
留言编号,主键
Title
Varchar(50)
标题
Article
Varchar(255)
内容
四、系统功能实现
4.1主界面
该系统分为三大功能模块:
图书管理、预约图书、翻译、投稿、娱乐、登录注册六个功能,下面分别介绍这七大块,界面如图4-1所示。
图4-1会员管理界面图
Activity关键代码实现如下:
//主界面GridView六个菜单适配,新建适配器MuneAdapter.Java:
publicclassMuneAdapterextendsBaseAdapter{
int[]imageId={R.drawable.j,R.drawable.h,R.drawable.o,
R.drawable.p,R.drawable.k,R.drawable.i};
String[]text={"书架","阅读","签到","投稿","翻译","娱乐"};
privateContextcontext;
publicMuneAdapter(Contextcontext){this.context=context;}
publicintgetCount(){ return6;}
publicObjectgetItem(intposition){returnnull;}
publiclonggetItemId(intposition){return0;}
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
Viewview=View.inflate(context,R.layout.item_mune,null);
ImageViewicon=(ImageView)view.findViewById(R.id.iv);
TextViewtv=(TextView)view.findViewById(R.id.tv);
icon.setImageResource(imageId[position]);
tv.setText(text[position]); returnview;}}
//在主界面进行适配,然后进行跳转。
gView.setAdapter(newMuneAdapter(MainActivity.this));
gView.setOnItemClickListener(newOnItemClickListener(){
publicvoidonItemClick(AdapterView
>parent,Viewview,intposition,longid){
switch(position){
case0:
startActivity(BookActivity.class);
break;
4.2.客户端登录
4.2.1学生登录
学生登录客户端主要用于查询想借阅的图书和借书。
登录界面如图4-2-1所示,学生可以登录注册进入客户端。
在登录界面中,首先提醒您输入登录信息,并且把登录的用户名和密码输入其文本框内。
图4-2-1登录界面图
技术分析:
创建了一个名为LoginActivity.java实现登录,查询数据库中的学号和密码是否匹配,如果没有账号点击注册跳转到注册页面。
代码实现如下:
Stringname=user.getText().toString();
Stringpass=pwd.getText().toString();
Log.i("TAG",name+"_"+pass);StudentDaodao=newStudentDao(this);
booleanflag=dao.login(name,pass);
if(TextUtils.isEmpty(name)||TextUtils.isEmpty(pass)){
Toast.makeText(this,"学号和密码不能为空!
",0).show();}
elseif(flag){Log.i("TAG","登录成功!
");
Toast.makeText(LoginActivity.this,"登录成功",Toast.LENGTH_LONG).show();
Intentintent=newIntent();
intent.setClass(LoginActivity.this,MeActivity.class);
intent.putExtra("name",user.getText().toString());
startActivity(intent);
}else{Log.i("TAG","登录失败!
");
Toast.makeText(LoginActivity.this,"登录失败!
学号或密码不正确!
",Toast.LENGTH_LONG).show();}}
4.2.2学号快捷注册
学生登录客户端没有账号可点击登录按钮右下方的“学号快捷注册”进行注册。
注册界面如图4-2-2所示,学生可以注册个人信息然后进行登录。
在注册界面中,首先提醒您输入个人信息,注册成功后跳转到登录界面。
图4-2-2注册界面
代码实现如下:
StringS_Num=S_num.getText().toString().trim();
StringS_Name=S_name.getText().toString().trim();
StringS_Class=S_class.getText().toString().trim();
StringS_Phone=S_phone.getText().toString().trim();
StringS_pwd=S_Pwd.getText().toString().trim();
if(TextUtils.isEmpty(S_Num)||TextUtils.isEmpty(S_pwd)){
Toast.makeText(this,"学号和密码不能为空!
",0).show();
return;
}else{Studentstudent=newStudent();
student.S_Num=S_Num;student.S_Name=S_Name;
student.S_Class=S_Class;student.S_Phone=S_Phone;
student.S_pwd=S_pwd;dao.add(student);}
Toast.makeText(ZhuceActivity.this,"注册成功!
",0).show();
finish();break;}
}
4.2.3个人信息数据库
//Studentdao.java
publicclassStudentDao{
privateDBOpenHelperhelper;
privateSQLiteDatabasedb;
publicStudentDao(Contextcontext){
super();helper=newDBOpenHelper(context);}
publicbooleanadd(Studentstudent){
db=helper.getWritableDatabase();
ContentValuesvalues=newContentValues();
values.put("S_Num",student.S_Num);
values.put("S_Name",student.S_Name);
values.put("S_Class",student.S_Class);
values.put("S_Phone",student.S_Phone);
values.put("S_pwd",student.S_pwd);
longrowid=db.insert("student",null,values);
if(rowid==-1){returnfalse;
}else{returntrue;}}
publicbooleanlogin(StringS_Num,StringS_pwd){
db=helper.getReadableDatabase();
Stringsql="select*fromstudentwhereS_Num=?
andS_pwd=?
";
Cursorcursor=db.rawQuery(sql,newString[]{S_Num,S_pwd});
if(cursor.moveToFirst()==true){cursor.close();returntrue;}
returnfalse;
}
4.3图书管理
4.3.1图书添加
图书管理员可以进行图书的添加删除和修改。
及时的更新书库图书信息和增加新书,点击下方茶杯按钮即可添加图书,图书添加界面如图4-3-1所示。
图4-3-1添加图书界面图
技术分析:
在SQLite中添加books表,进行增删查改。
创建了一个名为AddbookActivity.java实现添加图书信息。
代码实现如下:
//AddbookActivity.java添加图书:
StringB_Name=bookname.getText().toString().trim();
StringB_Author=author.getText().toString().trim();
StringB_pm=pm.getText().toString().trim();
if(TextUtils.isEmpty(B_Name)||TextUtils.isEmpty(B_Author)){
Toast.makeText(this,"书名不能为空!
",0).show();
return;
}else{
Bookbook=newBook();book.B_Name=B_Name;
book.B_Author=B_Author;book.B_Pm=B_pm;
dao.add(book);}
Toast.makeText(AddbookActivity.this,"添加成功!
",0).show();
finish();break;}}
4.3.2图书信息显示
BookActivity.java显示数据库中所有图书信息,用listview显示,创建一个BookActivity.Java实现listview的适配。
如图4-3-2图书信息界面图。
图4-3-2图书信息界面图
技术分析:
通过BookActivity.Java实现listview的适配。
代码实现如下:
//BookAdapter.java适配器把数据库的图书信息显示在listview上,关键代码如下:
publicViewgetView(finalintposition,ViewconvertView,ViewGroupparent){
ViewHolderholder=null;
if(convertView==null){
convertView=View.inflate(context,R.layout.item_book,null);
holder=newViewHolder();
holder.bookname=(TextView)convertView.findViewById(R.id.bookname);
holder.author=(TextView)convertView.findViewById(R.id.author);
holder.bookpm=(TextView)convertView.findViewById(R.id.pm);
convertView.setTag(holder);
}else{holder=(ViewHolder)convertView.getTag();
}holder.bookname.setText(books.get(position).B_Name);
holder.author.setText(books.get(position).B_Author);
holder.bookpm.setText(books.get(position).B_Pm);
returnconvertView;}
staticclassViewHolder{
TextViewbookname;TextViewauthor;TextViewbookpm;TextViewrecord;
Viewshu;}
//BookActivity.java使用listview显示所有图书信息。
mListView.setOnScrollListener(newOnScrollListener(){
publicvoidonScrollStateChanged(AbsListViewview,intscrollState){ switch(scrollState){
caseOnScrollListener.SCROLL_STATE_IDLE:
intlastVisiblePosition=mListView.getLastVisiblePosition();
if(lastVisiblePosition==pagebook.size()-1){pagenumber++;
if(pagenumber*pagesize>=totalNumber){
Toast.makeText(BookActivity.this,"没有更多的数据了",0).show();
}else{pagebook.addAll(dao.getPageBook(pagenumber,pagesize));
adapter.notifyDataSetChanged();}}
break;}}
publicvoidonScroll(AbsListViewview,intfirstVisibleItem,intVisibleItemCount,
inttotalItemCount){
}});
4.3.3图书数据库操作
publicclassBookDao{
privateDBOpenHelperhelper;
privateSQLiteDatabasedb;
publicBookDao(Contextcontext){super();helper=newDBOpenHelper(context); }
publicbooleanadd(Bookbook){db=helper.getWritableDatabase();
ContentValuesvalues=newContentValues();
values.put("B_Name",book.B_Name);values.put("B_Author",book.B_Author);
values.put("B_Pm",book.B_Pm);longrowid=db.insert("books",null,values);
if(rowid==-1){ returnfalse; }else{ returntrue; } }
publicbooleandelete(Bookbook){db=helper.getWritableDatabase();
introwname=db.delete("books","B_Name=?
",