毕业设计(论文)-基于android开发的图书管理系统.doc_第1页
毕业设计(论文)-基于android开发的图书管理系统.doc_第2页
毕业设计(论文)-基于android开发的图书管理系统.doc_第3页
毕业设计(论文)-基于android开发的图书管理系统.doc_第4页
毕业设计(论文)-基于android开发的图书管理系统.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖南软件职业学院毕业设计(作业)湖南软件职业学院毕业设计毕业选题:基于android开发的图书管理系统指导教师:学生姓名:院系名称:软件技术专业班级:Java1304班学生学号:提交日期:2015年12月19日III目 录第一章 前言- 1 -1.1课题背景- 1 -1.2课题的主要内容- 1 -第二章 开发工具和开发环境- 2 -2.1 SQL 语言- 2 -2.1.1 SQL 概述- 2 -2.2 MySQL 简介- 2 -2.3 eclipse简介- 2 -2.4 JDBC数据访问介绍- 4 -第三章 系统需求分析及总体设计- 5 -3.1 系统功能分析- 5 -3.2 系统数据流程图- 6 -3.2.1 数据库逻辑结构设计- 6 -第四章 系统详细设计与实现- 8 -4.1 代码栏- 8 -4.2 登录界面- 9 -4.3 主界面- 13 -4.4 注册界面- 17 -4.5 添加图书界面- 20 -4.6 添加图书类别界面- 24 -4.7修改图书类别界面- 26 -4.8设置查询界面- 27 -管理员对查询条件进行设置,如下图所示:- 28 -第五章 系统测试- 30 -5.1 系统测试的目的- 31 -5.2 系统测试方法- 31 -5.3 测试的执行和结果分析- 31 -第六章 ANDROID介绍- 32 -第七章 结 论- 33 -参考文献- 34 -致 谢- 35 -II全套设计加扣 3012250582第一章 前言1.1课题背景当今时代是飞速发展的信息时代,各行各业都离不开信息处理,这正是计算机被广泛应用于社会各行各业的原因。使用计算机进行信息管理是行业现代化的一个标志,此举不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性:快速操作、智能分析、海量存储和长期保存等等。使用计算机进行图书管理与图书管理系统的开发密切相关,因为图书管理系统的开发是利用图书管理系统进行管理的前提,本系统就是为了进行现代化图书馆信息管理而设计的。本系统是一个针对大中专院校图书馆的图书信息管理系统,着力于解决原来手工管理出现的问题,如效率低、易出错、手续繁琐,还耗费大量的人力和物力,旨在实现现代化的信息管理。 1.2课题的主要内容此系统的数据库选用的是MySql,开发环境为微软的eclipse,编程语言是java图书管理系统的开发设计,主要包括数据库结构设计、程序设计、具有登录、注册用户、查看借阅信息、添加图书等基本功能,能够完全基本满足大中专院校图书管理的需求。在制作此系统的过程中,需要熟悉图书馆管理的流程,并查阅相关资料,通过自学将专业的计算机知与图书管理的理论知识进行有机结合。第二章 开发工具和开发环境2.1 SQL 语言SQL(Structured Query Language)是一种通用性极强、介于关系代数与关系演算之间的结构化查询语言,也是一种关系数据库语言。 2.1.1 SQL 概述SQL是关系型数据库系统的标准语言。所有关系数据库管理系统,如MySQL,Oracle,SYBASE,中,Postgres和SQL服务器使用SQL标准的数据库语言。此外,他们使用的是不同的方言,如:My SQL使用SQLyog Enterprise,Oracle 使用PL/SQL等2.2 MySQL 简介MySQL是一个关系型数据库,是由瑞典MySQL AB公司开发,目前属于Oracle旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MyL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。 2.3 eclipse简介Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境(IDE) 来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于 java开发工具。尽管 Eclipse 是使用Java语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如C/c+、COBOL、PHP、Android等编程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于 Eclipse 的应用程序的一个突出例子是 IBM Rational Software Architect,它构成了 IBM Java 开发工具系列的基础。Eclipse 是一个开放源代码的、基于java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。 eclipse具有多样的数据类型、结构化程序结构,所以就一种程序设计语言来说,它还具备的特点如下: 1.NLS string hover有一个Open in Properties File动作 2.在Caller模式下,调用层级(Call Hierarchy)有一个在上下文菜单中有一个Expand With Constructors动作 3.当你在编辑器中输入的时候,Java比较编辑器会更新其结构 4.有一个新的toString()产生器 5.为可覆盖方法增加了一个Open Implementation链接,可以直接打开其实现 6.编辑器与执行环境一致 7.Debug视图现在提供了breadcrumb(面包屑),显示了活动的debug上下文 8.可运行的JAR文件输出向导还可以把所需的类库打包进一个要输出的可运行JAR文件,或打包进与紧挨着该JAR的一个目录中 9.当在写一个分配表达式(allocation expression)时发生补全操作,ch内容助手可以提示一个类的可用构造方法 10.如果检测到无用代码,编译器可以发出警告 11.类库、变量或容器入口的路径可以是与项目相关的任何位置 12.在Jovadoc hover的头部及Javadoc视图中,都提供了引用其他类型和成员的链接 13.随该Eclipse发行的JUnit4版本更新为4.5 14.Javadoc视图及hovers都支持inheritDoc标签并给覆盖方法增加链接 15.同一值的比较现在由编译器检测,默认情况下会发出警告 2.4 JDBC数据访问介绍在使用JDBC开发程序时,将会有关于数据访问的各类要求。某些情况下,只需要在窗体上显示数据。其他情况,或许只需设计一种方式来与另一公司进行信息共享。总之,无论如何访问数据,都要基于熟练掌握其数据结构、组件概念和组件组合方式。第三章 系统需求分析及总体设计3.1 系统功能分析 管理员模块:它的功能主要有:添加图书信息,图书分类,删除图书,修改图书,管理用户等管理员模块如图所示:管理员模块添加图书图书分类删除图书修改图书管理用户图3-1管理员模块用户模块主要功能有:营业员模块修改账户密码借阅图书开房信息管理房间信息管理房间类型管理客人信息管理修改账户密码,借阅图书等。3.2 系统数据流程图用户登记基本信息输入借阅登记图书信息借阅结算信息借阅信息基本信息输入图3-3酒店管理信息系统的数据流图3.2.1 数据库逻辑结构设计系统设计了三个数据表即“book”、“bookclass”、“users”。其具体信息如下: 表3-1 book表列名数据类型大小可否为空说明barcodeVarchar20NOT NULL自增ID主键BookrnameVarchar20NOT NULL书籍名bookClassIdInt11NOT NULL书籍类别IDpricefloatNOT NULL书籍价值Countint11Not NULL数量publishDatedatetimeNOT null出版时间bookImageVarchar50NOT NULL书籍图片表3-2bookclass表列名数据类型大小可否为空说明BookclassIDint11NOT null类别号Bookclassnamevarchar20NOT NULL类别名表3-3users表列名数据类型大小可否为空说明IDint10NOT NULL自增ID主键usernameVarchar30NOT NULL用户名passwordVarchar30NOT NULL密码phoneVarchar30NOT NULL电话号码addressvarchar100NOT NULL住址第四章 系统详细设计与实现本章着重讲解了图书管理系统系统的设计与实现。4.1 代码栏打开程序代码栏,页面如图:图4-1-1 代码栏图4-1-2 代码栏图4-1-3代码栏4.2 登录界面图4-2登录页面该界面是本系统运行的首个界面,其他所有操作必须建立在本界面之上运行。在所有模块中此界面也是安全性最高的模块。该酒店系统的权限分为管理员和营业员,虽然登陆后的界面整体相似,但其功能模块却各有不同。主要代码如下:loginBtn.setOnClickListener(new OnClickListener() public void onClick(View v) try String url = HttpUtil.BASE_URL+ LoginServlet?userName=+ URLEncoder.encode(URLEncoder.encode(userEditText.getText().toString(), UTF-8), UTF-8)+&password=+ URLEncoder.encode(URLEncoder.encode(pwdEditText.getText().toString(), UTF-8), UTF-8);/ 查询返回结果String result = HttpUtil.queryStringForPost(url);System.out.println(= +result);if(!result.equals(0)System.out.println();Declare declare = (Declare) getApplicationContext();declare.setId(Integer.parseInt(result); declare.setUserName(userEditText.getText().toString();Toast.makeText(getApplicationContext(), 登入成功, 1).show();Intent intent = new Intent();intent.setClass(LoginActivity.this,MainMenuActivity.class);startActivity(intent);LoginActivity.this.finish();elseToast.makeText(getApplicationContext(), 登入失败, 1).show(); catch (Exception e) / TODO: handle exceptionLog.i(LoginActivity,e.toString();登录面页面名字为login_system.xml。主要代码如下: 4.3 主界面登陆首后,进主页面如下图4-3所示: 图4-3主页面主界面比较简单,总共五个模块,分别是:图书类型管理、图书管理、读者类型管理、读者管理和借阅信息管理。 其主要功能代码为: private String menuString = 图书类别管理,图书信息管理; / 构造方法 public ImageAdapter(Context c) mContext = c; inflater = LayoutInflater.from(mContext); / 组件个数 public int getCount() return mThumbIds.length; / 当前组件 public Object getItem(int position) return null; / 当前组件id public long getItemId(int position) return 0; / 获得当前视图 public View getView(int position, View convertView, ViewGroup parent) View view = inflater.inflate(R.layout.gv_item, null);TextView tv = (TextView) view.findViewById(R.id.gv_item_appname);ImageView iv = (ImageView) view.findViewById(R.id.gv_item_icon); tv.setText(menuStringposition); iv.setImageResource(mThumbIdsposition); switch (position) case 0:/ 添加监听器view.setOnClickListener(bookClassLinstener);break;case 1:/ 并台监听器view.setOnClickListener(bookLinstener);break; default:break; return view; OnClickListener bookClassLinstener = new OnClickListener() public void onClick(View v) Intent intent = new Intent();/ 启动图书类别管理Activityintent.setClass(MainMenuActivity.this, BookClassListActivity.class);startActivity(intent); OnClickListener bookLinstener = new OnClickListener() public void onClick(View v) Intent intent = new Intent();/ 启动图书管理Activityintent.setClass(MainMenuActivity.this, BookListActivity.class);startActivity(intent); Overridepublic boolean onCreateOptionsMenu(Menu menu) / TODO Auto-generated method stubmenu.add(0, 1, 1, 重新登入); menu.add(0, 2, 2, 退出); return super.onCreateOptionsMenu(menu); Overridepublic boolean onOptionsItemSelected(MenuItem item) / TODO Auto-generated method stubif (item.getItemId() = 1) /重新登入 Intent intent = new Intent();intent.setClass(MainMenuActivity.this,LoginActivity.class);startActivity(intent); else if (item.getItemId() = 2) /退出System.exit(0); return true; 4.4 注册界面 点击注册,跳转到注册界面如下图4.4所示图4-3 注册界面 注册界面需要填写用户名、密码、电话以及地址进行注册,界面简单,故不过多阐述。主要代码如下:Btn1.setOnClickListener(new OnClickListener() public void onClick(View v) try if(userName.getText()!=null&pwd.getText()!=null&phone.getText()!=null&address.getText()!=null)String url = HttpUtil.BASE_URL+ RegisterServlet?userName=+ URLEncoder.encode(URLEncoder.encode(userName.getText().toString(), UTF-8), UTF-8)+&password=+ URLEncoder.encode(URLEncoder.encode(pwd.getText().toString(), UTF-8), UTF-8)+&phone=+ URLEncoder.encode(URLEncoder.encode(phone.getText().toString(), UTF-8), UTF-8)+&address=+ URLEncoder.encode(URLEncoder.encode(address.getText().toString(), UTF-8), UTF-8);/ 查询返回结果String result = HttpUtil.queryStringForPost(url);if(result.equals(1)Toast.makeText(getApplicationContext(), 注册成功, 1).show();Intent intent = new Intent();intent.setClass(RegisterActivity.this,LoginActivity.class);startActivity(intent);else if(result.equals(2)Toast.makeText(getApplicationContext(), 用户名重复, 1).show();elseToast.makeText(getApplicationContext(), 注册失败, 1).show();elseToast.makeText(getApplicationContext(), 不能为空, 1).show(); catch (Exception e) / TODO: handle exception);Btn2.setOnClickListener(new OnClickListener() public void onClick(View v) userName.setText();pwd.setText();phone.setText();address.setText(););Overridepublic boolean onCreateOptionsMenu(Menu menu) / TODO Auto-generated method stubmenu.add(0, 1, 1, 重新登入);menu.add(0, 2, 2, 退出);return super.onCreateOptionsMenu(menu);Overridepublic boolean onOptionsItemSelected(MenuItem item) / TODO Auto-generated method stubif (item.getItemId() = 1) /重新登入Intent intent = new Intent();intent.setClass(RegisterActivity.this,LoginActivity.class);startActivity(intent); else if (item.getItemId() = 2) /退出System.exit(0); return true;4.5 添加图书界面管理员可以添加新图书到系统中如图所示:图4-5添加图书页面此界面,是管理员对图书的信息进行添加,将所需要添加的图书逐一添加,可以将图书的价格,图书的库存以及出版日期等添加,供读者更好的查找。主要代码如下:btnAdd.setOnClickListener(new OnClickListener() public void onClick(View v) try /*验证获取条形码*/if(ET_barcode.getText().toString().equals() Toast.makeText(BookAddActivity.this, 条形码输入不能为空!, Toast.LENGTH_LONG).show();ET_barcode.setFocusable(true);ET_barcode.requestFocus();return;book.setBarcode(ET_barcode.getText().toString();/*验证获取图书名称*/if(ET_bookName.getText().toString().equals() Toast.makeText(BookAddActivity.this, 图书名称输入不能为空!, Toast.LENGTH_LONG).show();ET_bookName.setFocusable(true);ET_bookName.requestFocus();return;book.setBookName(ET_bookName.getText().toString();/*验证获取图书价格*/ if(ET_price.getText().toString().equals() Toast.makeText(BookAddActivity.this, 图书价格输入不能为空!, Toast.LENGTH_LONG).show();ET_price.setFocusable(true);ET_price.requestFocus();return;book.setPrice(Float.parseFloat(ET_price.getText().toString();/*验证获取图书库存*/if(ET_count.getText().toString().equals() Toast.makeText(BookAddActivity.this, 图书库存输入不能为空!, Toast.LENGTH_LONG).show();ET_count.setFocusable(true);ET_count.requestFocus();return;book.setCount(Integer.parseInt(ET_count.getText().toString();/*获取出版日期*/Date publishDate = new Date(dp_publishDate.getYear()-1900,dp_publishDate.getMonth(),dp_publishDate.getDayOfMonth();book.setPublishDate(new Timestamp(publishDate.getTime();if(book.getBookImage() != null) /如果图片地址不为空,说明用户选择了图片,这时需要连接服务器上传图片BookAddActivity.this.setTitle(正在上传图片,稍等.);String bookImage = HttpUtil.uploadFile(book.getBookImage();BookAddActivity.this.setTitle(图片上传完毕!);book.setBookImage(bookImage); else book.setBookImage(upload/noimage.jpg);/*调用业务逻辑层上传图书信息*/BookAddActivity.this.setTitle(正在上传图书信息,稍等.);String result = bookService.AddBook(book);Toast.makeText(getApplicationContext(), result, 1).show(); /*操作完成后返回到图书管理界面*/ Intent intent = new Intent();intent.setClass(BookAddActivity.this, BookListActivity.class);startActivity(intent); BookAddActivity.this.finish(); catch (Exception e) / TODO: handle exception);4.6 添加图书类别界面管理员可以对添加图书的类别如图所示:图4-6 图书类别添加界面代码如下:btnAdd.setOnClickListener(new OnClickListener() public void onClick(View v) try if(bookClassName.getText()!=null ) HashMap params = new HashMap();params.put(bookClassName, bookClassName.getText().toString();params.put(action, add);byte resultByte = HttpUtil.SendPostRequest(HttpUtil.BASE_URL+ BookClassServlet?, params, UTF-8); String result = new String(resultByte,UTF-8);Toast.makeText(getApplicationContext(), result, 1).show(); Intent intent = new Intent();intent.setClass(BookClassAddActivity.this, BookClassListActivity.class);startActivity(intent);elseToast.makeText(getApplicationContext(), 不能为空, 1).show(); catch (Exception e) / TODO: handle exception);4.7修改图书类别界面 管理员可以对图书分类进行修改,如下图图4-7 修改图书类别管理员对图书分类进行修改,主要代码如下:btnUpdate.setOnClickListener(new OnClickListener() public void onClick(View v) try if(et_bookClassName.getText()!=null ) HashMap params = new HashMap();params.put(bookClassId, bookClassId);params.put(bookClassName, et_bookClassName.getText().toString();params.put(action, update);byte resultByte = HttpUtil.SendPostRequest(HttpUtil.BASE_URL+ BookClassServlet?, params, UTF-8); String result = new String(resultByte,UTF-8);Toast.makeText(getApplicationContext(), result, 1).show(); Intent intent = new Intent();intent.setClass(BookClassEditActivity.this, BookClassListActivity.class);startActivity(intent);finish();elseToast.makeText(getApplicationContext(), 不能为空, 1).show(); catch (Exception e) / TODO: handle exception);btnCancle.setOnClickListener(new OnClickListener() public void onClick(View v) finish();); 4.8设置查询界面 管理员对查询条件进行设置,如下图所示:图4-8 设置查询界面设置查询条件,来进行对自己所需要的书籍进行查找,主要代码如下:bookClassList = bookClassService.GetAllBookClass();int bookClassCount = bookClassList.size();m = new StringbookClassCount+1;m0 = 不限制;for(int i=1;i=bookClassCount;i+) mi = bookClassList.get(i-1).getBookClassName(); / 将可选内容与ArrayAdapter连接起来bookClassId_adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, m);/ 设置图书类别下拉列表的风格bookClassId_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);/ 将adapter 添加到spinner中spinner_bookClassId.setAdapter(bookClassId_adapter);/ 添加事件Spinner事件监听spinner_bookClassId.setOnItemSelectedListener(new BookClassIdSpinnerSelectedListener();/ 设置默认值spinner_bookClassId.setVisibility(View.VISIBLE);/*单击添加图书按钮*/btnQuery.setOnClickListener(new OnClickListener() public void onClick(View v) try /*获取查询参数*/queryConditionBook.setBarcode(ET_barcode.getText().toString();queryConditionBook.setBookName(ET_bookName.getText().toString(); if(cb_publishDate.isChecked() /*获取出版日期*/Date publishDate = new Date(dp_publishDate.getYear()-1900,dp_publishDate.getMonth(),dp_publishDate.getDayOfMonth();queryConditionBook.setPublishDate(new Timestamp(publishDate.getTime(); else queryConditionBook.setPublishDa

温馨提示

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

评论

0/150

提交评论