ImageVerifierCode 换一换
格式:DOCX , 页数:57 ,大小:1.71MB ,
资源ID:11884349      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11884349.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(设计性实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

设计性实验报告.docx

1、设计性实验报告综合性设计性实验报告实验工程名称: 图书管理App软件 所属课程名称: 无线与移动网络终端开发 学生XX/学号:魏连莹041440512薛欢欢041440513杨紫舒041440514X 蒙041440515 董迎顺041440516黄骏滨041440519李 俊041440521 学生所在班级:网络14405班 依托实验室: 综C701 实验学期: 2017年大三下学期计算机科学技术学院实验名称综合实验 无线与移动端开发的综合设计实验地点 综C701实验日期2017-6-21一、实验目的:本设计是在学习Android平台软件开发的课程根底上进展的一次综合实践。通过本综合设计,让

2、学生们稳固有关Android平台软件开发的知识,也考察学生的学习情况。二、实验内容使用eclipse编写android的代码。本软件为图书管理员通过移动平台来对图书进展一系列的操作,方便用户随时查看图书情况。图书管理系统总的来说分为图书类别管理和图书信息管理。图书类别管理主要编辑图书的类别,查询图书类别,删除图书类别;图书信息管理,主要包括添加图书,查询图书,返回主界面,并且每个图书都有详细描述,包括条形码、图书类别、图书名称、图书图片。三、实验截图、操作步骤1、图书管理的数据库设计图1 数据库设计图数据库说明:此图书管理一共分了三个数据表,第一个为图书表,里面包含了条形码主键、图书名称、图书

3、类别,价格,库存数量、出版日期、图书封面等属性;第二个为用户表,里面包含了,用户ID主键,用户名称、用户密码、和地址;第三个是图书类别表,包含了图书类别ID主键,图书类别名称,它的主键图书类别ID是图书表的外键。2、程序框架图2 程序框架图程序框架说明:左侧为效劳器的数据操作框架,对前台页面传入的数据在后台进展增删改查操作,并且对前台传过来的用户信息在数据库中进展比照,比照成功之后才可以进展登录;右侧为用户端的设计,就是用户能看见的安卓页面设计都在这里进展编写,界面设计都在layout里面,然后对界面的相应控件进展绑定,把适配器代码写在activity包里。在效劳端和客户端相结合这才能很好地完

4、成整个工程。3、用户登录,用户可以输入用户名和密码通过登录进入主页面,然后在进展图书的操作,登录的效果图如下:图3 用户登录图图4 登录成功图实现功能:用户登录实现方法:此模块为登录模块,使用了TextView 、EditText、Button等控件来实现整体布局。在此布局中,采用了线性布局的构造来对页面的根本控件进展排布。在LoginActivity.java中声明登录,重置按钮:private Button cancelBtn,loginBtn,然后再去声明用户名和密码框登录:private EditText userEditText,pwdEditText;接着在设置顶部标题:setTi

5、tle(手机客户端-登录);之后设置当前Activity页面布局:setContentView(R.layout.login_system);通过这个FindViewById方法实例化四个组件:loginBtn、cancelBtn、userEditText、pwdEditText。然后给loginBtn 、cancelBtn绑定OnClickListener()事件,通过url = HttpUtil.BASE_URL+ Login-Servlet?userName=+ URLEncoder.encode.将数据传到后台,后台判断此用户是否存在并判断密码是否正确,在后台的LoginServlet

6、.java中运用spl语句查询用户表,如果存在返回0,如不存在返回空。如果用户登录成功,那么调用Toast.makeText(getApplicationContext(), 登入成功, 1).show()打印数据,然后进入根据intent.setClass(LoginActivity.this,MainMenuActivity.class);这个语句进入MainMenuActivity的页面。4、查询功能,此块为模糊查询,用户可以根据小的信息量进展图书的查询,效果图如下:图5 模糊查询图图6 查询结果图实现功能:查询功能实现方法:模糊查询,即输入一个字符,输出所有存在该字符的路径。在Book

7、ListActivity.java中,创立了三个按钮,“添加图书、“查询图书、“返回主界面,点击“查询图书按钮,通过intent.setClass(BookListActivity.this, BookQueryActivity.class);启动BookQueryActivity,并将BookListActivity先finish,等待之后在使用。加载BookQueryActivity,设置当前Activity界面布局setContentView(R.layout.book_query)。设置页面布局,为实现多种查询,我们设置了条形码、图书名称、图书类别和出版日期四个TextView,条形码

8、和图书名称,使用EditText输入查询字符;图书类别那么使用Spinner控件,Spinner提供了从一个数据集合中快速选择一项值的方法;出版日期,使用日期控件DatePicker;创立复选框CheckBox,可选择出版日期是否参与查询。最后创立“查询Button完成布局。在BookQueryActivity中初始化book_query.xml布局中的几个控件。判断获取到的几个重要字段对应的组件EditView填入的值不是为空,并通过queryConditionBook.setBarcode(ET_barcode.getText().toString();queryConditionBook

9、.setBookName(ET_bookName.getText().toString();获取查询参数,通过 Date publishDate = new Date(dp_publishDate.getYear()-1900,dp_publishDate.getMonth(),dp_publishDate.getDayOfMonth();获取出版日期。将可选内容与ArrayAdapter连接起来,bookClassId_adapter=newArrayAdapter(this,android.R.layout.simple_spinner_item, m);设置图书类别下拉列表的风格,spi

10、nner_bookClassId.setAdapter(bookClassId_adapter);添加事件Spinner事件监听,pinner_bookClassId.setOnItemSelectedListener(new BookClassIdSpinnerSelectedListener();设置默认值,pinner_bookClassId.setVisibility(View.VISIBLE);添加图书按钮,btnQuery.setOnClickListener(new OnClickListener()。5、添加图书信息功能,把图书添加进来,效果如下:图7 添加图书信息图实现功能:

11、图书添加功能实现方法:在BookListActivity.java中,创立了三个按钮,添加图书、查询图书、返回主界面点击添加图书按钮,通过Intent.setClass(BookListActivity.this, BookAddActivity.class)启动BookAddActivity,并将BookListActivity先finish,等待之后在使用。加载BookAddActivity,设置当前Activity界面布局setContentView(R.Layout.book_add)。在BookAddActivity中初始化xml布局中的几个控件。判断获取到的几个重要字段对应的组件E

12、ditView填入的值不是为空,并通过bookService.AddBook(book),将页面上获取到的Book对象作为参数传递,并调用Service层中的方法。AddBook()中,使用HttpUtil.SendPostRequest(url,params,UTF-8”);向效劳器发送一条Http报文,类型为Post请求,并创立一个字节数组对象byte resultByte,获取从效劳端响应回的数据。一般做更新操作时,效劳端传回的result数据是一个字符串,例如“图书添加成功!或“图书添加失败!。然后将result传回Activity,并通过Toast.makeTest()在布局中打印出

13、来。6、添加图书类别功能,增添图书的多样性,实现效果如下:图8 图书类别页面图9 进入添加页面图10 添加成功图实现功能:添加图书类别实现方法:在BookClassListActivity.java中创立选项菜单,分别是“添加图书类别、“返回主界面两个选项,点击“添加图书类别选项,通过 intent.setClass(BookClassListActivity.this,BookClassAddActivity.class);启动BookClassAddActivity,并将BookClassListActivity先关闭,等待之后再使用。加载BookClassAddActivity.java

14、,设置当前activity界面布局setContentView(R.layout.bookclass_add)。在BookClassAddActivity中初始化xml布局中的控件。有两个Button控件“确定、“重新填写和一个EditText控件。在EditText控件中填写添加的书籍类别,点击“确定按钮。判断获取类别名称的控件EditText填入的值是否为空,使用HttpUtil.SendPostRequest(url, params, UTF-8);向效劳器发送一条Http报文,类型为post请求,将params里的类别名称作为参数传递,并调用Service层中的方法。在Service层

15、中,BookClassDAO中的AddBookClass()方法,将BookClassAddActivity中通过post请求获取到的值,通过SQL语句添加到数据库中,并通过在BookClassAddActivity中创立的字节数组对象byte resultByte,获取从效劳端响应回的数据。从效劳端传回的的result数据为一个字符串,“图书类别添加成功或“图书类别添加失败。然后将result传回Activity,并通过Toast.makeTest()在布局中打印出来。7、删除图书类别功能,把不喜欢的图书分类删除掉,实现效果如下:图11 长按显示上下问菜单图图12 成功删除图实现功能:删除图

16、书类别实现方法:在BookClassListActivity.java中创立上下文菜单,分别是“添加图书类别、“返回主界面两个选项“删除图书类别、“编辑图书类别,这里我负责的是删除图书类别这一局部。添加长按点击功能lv.setOnCreateContextMenuListener(bookClassListItemListener);长按想要删除的图书类别,会弹出上下文菜单,点击“删除图书类别选项,先通过contextMenuInfo.position获取选中行位置,再通过选中行的位置用hashMap.get(bookClassId).toString()获取它的图书类别编号。最后调用dial

17、og()方法,会有提示弹出框弹出“确认删除吗?字样。点击“确认,用HttpUtil.SendPostRequest(url, params, UTF-8);向效劳器发送一条Http报文,类型为post请求,将params里的类别名称作为参数传递,并调用Service层中的方法。在Service层中,BookClassDAO中的DeleteBookClass()方法,将BookClassAddActivity中通过post请求获取到的值,通过SQL语句从数据库中删除,并通过在BookClassAddActivity中创立的字节数组对象byte resultByte,获取从效劳端响应回的数据。从效

18、劳端传回的的result数据为一个字符串,“图书类别删除成功!或“图书类别删除失败。然后将result传回Activity,并通过Toast.makeTest()在布局中打印出来。8、编辑图书信息功能,用户可以对图书的信息进展修改,实现效果如下:图13 选编辑图书信息图图14 进展编写图图15 图书更新图实现功能:修改图书信息实现方法:长按菜单,触发响应函数onContextItemSelected(MenuItem item),点击编辑图书信息按钮,调用BookEditActivity.Java文件,初始化当前Activity界面布局,通过findViewById方法实例化组件,将图书信息回

19、显到EditText中,图书的类别通过调用bookClassService.GetAllBookClass();获取所有图书类别。点击确定按钮时触发监听事件,事件中对图书的名称、价格、库存、图片进展验证,使用HttpUtil.SendPostRequest(url,params,UTF-8”);向效劳器发送一条Http报文,类型为Post请求,并创立一个字节数组对象byte resultByte,获取从效劳端响应回的数据。上传图书信息时调用业务层UpdateBook(book); 操作完成后返回到图书管理界面。9、编辑图书类别功能,用户可以对图书的类别进展修改,实现效果如下:图16 选择编辑图

20、书类别图图17 编辑图书类别图图18 更新成功图实现功能:修改图书类别实现方法:界面上有四个数据,“计算机类“历史类“法律类“文学类,长按其中任何一个数据都会触发btnUpdate.setOnClickListener(new OnClickListener()方法,跳到bookclass_edit.xml,弹出子菜单,子菜单里有两个按钮选择更新选项,弹出手机客户端-修改图书信息页面,程序跳到BookEditActivity.java调用的onCreate方法,通过setContentView(R.layout.book_edit); 设置当前Activity界面布局,通过findViewBy

21、Id方法实例化组件,使用btnUpdate = (Button) findViewById(R.id.BtnUpdate);修改图书类别,在类别名称选择框里面把第八个“法律类进展修改为“法律类啊。点击更新按钮,程序会使用HttpUtil.SendPostRequest(url,params,UTF-8”);向效劳器发送一条Http报文,类型为Post请求,并创立一个字节数组对象byte resultByte,获取从效劳端响应回的数据。做更新操作成功后时,效劳端传回的result数据是一个字符串,“图书类别更新成功!。然后将result传回Activity,并通过printStackTrace(

22、)在布局中打印出来。四、实验代码1、后台BookDAO.java的代码:public class BookDAO public List QueryBook(String barcode, String bookName, int bookClassId, Timestamp publishDate) List bookList = new ArrayList(); DB db = new DB(); String sql = select * from Book where 1=1; if (!barcode.equals() sql += and barcode like % + barc

23、ode + %; if (!bookName.equals() sql += and bookName like % + bookName + %; if (bookClassId != 0) sql += and bookClassId= + bookClassId; if(publishDate!=null) sql += and publishDate= + publishDate + ; try ResultSet rs = db.executeQuery(sql); while (rs.next() Book book = new Book(); book.setBarcode(rs

24、.getString(barcode); book.setBookClassId(rs.getInt(bookClassId); book.setBookImage(rs.getString(bookImage); book.setBookName(rs.getString(bookName); book.setCount(rs.getInt(count); book.setPrice(rs.getFloat(price); book.setPublishDate(rs.getTimestamp(publishDate); bookList.add(book); catch (Exceptio

25、n e) / TODO Auto-generated catch block e.printStackTrace(); finally db.all_close(); return bookList; /* 传入图书对象,进展图书的添加业务 */ public String AddBook(Book book) DB db = new DB(); String result = ; try /* 如果所有验证通过就执行sql插入新商品信息 */ String sqlString = insert into Book(barcode,bookName,bookClassId,price,coun

26、t,publishDate,bookImage) values (; sqlString += book.getBarcode() + ,; sqlString += book.getBookName() + ,; sqlString += book.getBookClassId() + ,; sqlString += book.getPrice() + ,; sqlString += book.getCount() + ,; sqlString += book.getPublishDate() + ,; sqlString += book.getBookImage() + ); db.exe

27、cuteUpdate(sqlString);result = 图书添加成功!; catch (Exception e) e.printStackTrace(); result = 图书添加失败; finally db.all_close(); return result; /* 删除图书 */ public String DeleteBook(String barcode) DB db = new DB(); String result = ; try String sqlString = delete from Book where barcode= + barcode + ; db.exe

28、cuteUpdate(sqlString); result = 图书删除成功!; catch (Exception e) e.printStackTrace(); result = 图书删除失败; finally db.all_close(); return result; /* 根据条形码获取到图书信息 */ public Book GetBook(String barcode) Book book = null; DB db = new DB(); String sql = select * from Book where barcode= + barcode + ; try Result

29、Set rs = db.executeQuery(sql); if (rs.next() book = new Book(); book.setBarcode(rs.getString(barcode); book.setBookClassId(rs.getInt(bookClassId); book.setBookImage(rs.getString(bookImage); book.setBookName(rs.getString(bookName); book.setCount(rs.getInt(count); book.setPrice(rs.getFloat(price); book.setPublishDate(rs.getTimestamp(publishDate); catch (Exception e) / TODO Auto-generated catch block e.printStackTrace(); finally db.all_close(); return book; /* 更新图书信息 */ public String UpdateBook(Book book) DB db = new DB(); String result = ; try String sql = update Book set bookN

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1