设计性实验报告Word格式文档下载.docx

上传人:b****3 文档编号:17559840 上传时间:2022-12-07 格式:DOCX 页数:56 大小:1.58MB
下载 相关 举报
设计性实验报告Word格式文档下载.docx_第1页
第1页 / 共56页
设计性实验报告Word格式文档下载.docx_第2页
第2页 / 共56页
设计性实验报告Word格式文档下载.docx_第3页
第3页 / 共56页
设计性实验报告Word格式文档下载.docx_第4页
第4页 / 共56页
设计性实验报告Word格式文档下载.docx_第5页
第5页 / 共56页
点击查看更多>>
下载资源
资源描述

设计性实验报告Word格式文档下载.docx

《设计性实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《设计性实验报告Word格式文档下载.docx(56页珍藏版)》请在冰豆网上搜索。

设计性实验报告Word格式文档下载.docx

通过本综合设计,让学生们巩固有关Android平台软件开发的知识,也考查学生的学习情况。

二、实验内容

使用eclipse编写android的代码。

本软件为图书管理员通过移动平台来对图书进行一系列的操作,方便用户随时查看图书情况。

图书管理系统总的来说分为图书类别管理和图书信息管理。

图书类别管理主要编辑图书的类别,查询图书类别,删除图书类别;

图书信息管理,主要包括添加图书,查询图书,返回主界面,并且每个图书都有详细描述,包括条形码、图书类别、图书名称、图书图片。

3、实验截图、操作步骤

1、图书管理的数据库设计

图1数据库设计图

数据库说明:

此图书管理一共分了三个数据表,第一个为图书表,里面包含了条形码(主键)、图书名称、图书类别,价格,库存数量、出版日期、图书封面等属性;

第二个为用户表,里面包含了,用户ID(主键),用户名称、用户密码、电话和地址;

第三个是图书类别表,包含了图书类别ID(主键),图书类别名称,它的主键图书类别ID是图书表的外键。

2、程序框架

图2程序框架图

程序框架说明:

左侧为服务器的数据操作框架,对前台页面传入的数据在后台进行增删改查操作,并且对前台传过来的用户信息在数据库中进行对比,对比成功之后才可以进行登录;

右侧为用户端的设计,就是用户能看见的安卓页面设计都在这里进行编写,界面设计都在layout里面,然后对界面的相应控件进行绑定,把适配器代码写在activity包里。

在服务端和客户端相结合这才能很好地完成整个项目。

3、用户登录,用户可以输入用户名和密码通过登录进入主页面,然后在进行图书的操作,登录的效果图如下:

图3用户登录图

图4登录成功图

实现功能:

用户登录

实现方法:

此模块为登录模块,使用了TextView、EditText、Button等控件来实现整体布局。

在此布局中,采用了线性布局的结构来对页面的基本控件进行排布。

在LoginActivity.java中声明登录,重置按钮:

privateButtoncancelBtn,loginBtn,然后再去声明用户名和密码框登录:

privateEditTextuserEditText,pwdEditText;

接着在设置顶部标题:

setTitle(手机客户端-登录);

之后设置当前Activity页面布局:

setContentView(R.layout.login_system);

通过这个FindViewById方法实例化四个组件:

loginBtn、cancelBtn、userEditText、pwdEditText。

然后给loginBtn、cancelBtn绑定OnClickListener()事件,通过url=HttpUtil.BASE_URL+"

Login-

Servlet?

userName="

+URLEncoder.encode(....)将数据传到后台,后台判断此用户是否存在并判断密码是否正确,在后台的LoginServlet.java中运用spl语句查询用户表,如果存在返回0,如不存在返回空。

如果用户登录成功,则调用Toast.make

Text(getApplicationContext(),"

登入成功"

1).show()打印数据,然后进入根据intent.setClass(LoginActivity.this,MainMenuActivity.class);

这个语句进入MainMenuActivity的页面。

4、查询功能,此块为模糊查询,用户可以根据小的信息量进行图书的查询,效果图如下:

图5模糊查询图

图6查询结果图

查询功能

模糊查询,即输入一个字符,输出所有存在该字符的路径。

在BookListActivity.java中,创建了三个按钮,“添加图书”、“查询图书”、“返回主界面”,点击“查询图书”按钮,通过intent.setClass(BookListActivity.this,BookQueryActivity.class);

启动BookQueryActivity,并将BookListActivity先finish,等待之后在使用。

加载BookQueryActivity,设置当前Activity界面布局setContentView(R.layout.book_query)。

设置页面布局,为实现多种查询,我们设置了条形码、图书名称、图书类别和出版日期四个TextView,条形码和图书名称,使用EditText输入查询字符;

图书类别则使用Spinner控件,Spinner提供了从一个数据集合中快速选择一项值的办法;

出版日期,使用日期控件DatePicker;

创建复选框CheckBox,可选择出版日期是否参与查询。

最后创建“查询”Button完成布局。

在BookQueryActivity中初始化book_query.xml布局中的几个控件。

判断获取到的几个重要字段对应的组件EditView填入的值不是为空,并通过queryConditionBook.set

Barcode(ET_barcode.getText().toString());

queryConditionBook.setBookName

(ET_bookName.getText().toString());

获取查询参数,通过DatepublishDate=newDate(dp_publishDate.getYear()-1900,dp_publishDate.getMonth(),dp_publishDate.getDayOfMonth());

获取出版日期。

将可选内容与ArrayAdapter连接起来,bookClassId_adapter=newArrayAdapter<

String>

(this,android.R.layout.simple_spinner_item,m);

设置图书类别下拉列表的风格,spinner_bookClassId.setAdapter

(bookClassId_adapter);

添加事件Spinner事件监听,pinner_bookClassId.setOn

ItemSelectedListener(newBookClassIdSpinnerSelectedListener());

设置默认值,pinner_bookClassId.setVisibility(View.VISIBLE);

添加图书按钮,btnQuery.set

OnClickListener(newOnClickListener()。

5、添加图书信息功能,把图书添加进来,效果如下:

图7添加图书信息图

图书添加功能

在BookListActivity.java中,创建了三个按钮,添加图书、查询图书、返回主界面点击添加图书按钮,通过Intent.setClass(BookListActivity.this,BookAddActivity.class)启动BookAddActivity,并将BookListActivity先finish,等待之后在使用。

加载BookAddActivity,设置当前Activity界面布局setContentView(R.Layout.book_add)。

在BookAddActivity中初始化xml布局中的几个控件。

判断获取到的几个重要字段对应的组件EditView填入的值不是为空,并通过bookService.AddBook(book),将页面上获取到的Book对象作为参数传递,并调用Service层中的方法。

AddBook()中,使用HttpUtil.SendPostRequest(url,params,

”UTF-8”);

向服务器发送一条Http报文,类型为Post请求,并创建一个字节数组对象byte[]resultByte,获取从服务端响应回的数据。

一般做更新操作时,服务端传回的result数据是一个字符串,例如“图书添加成功!

”或“图书添加失败!

”。

然后将result传回Activity,并通过Toast.makeTest()在布局中打印出来。

6、添加图书类别功能,增添图书的多样性,实现效果如下:

图8图书类别页面

图9进入添加页面

图10添加成功图

添加图书类别

在BookClassListActivity.java中创建选项菜单,分别是“添加图书类别”、“返回主界面”两个选项,点击“添加图书类别”选项,通过intent.setClass(BookClassListActivity.this,BookClassAddActivity.class);

启动BookClassAddActivity,并将BookClassListActivity先关闭,等待之后再使用。

加载BookClassAddActivity.java,设置当前activity界面布局setContentView(R.layout.bookclass_add)。

在BookClassAddActivity中初始化xml布局中的控件。

有两个Button控件“确定”、“重新填写”和一个EditText控件。

在EditText控件中填写添加的书籍类别,点击“确定”按钮。

判断获取类别名称的控件EditText填入的值是否为空,使用HttpUtil.SendPostRequest(url,params,"

UTF-8"

);

向服务器发送一条Http报文,类型为post请求,将params里的类别名称作为参数传递,并调用Service层中的方法。

在Service层中,BookClassDAO中的AddBookClass()方法,将BookClassAddActivity中通过post请求获取到的值,通过SQL语句添加到数据库中,并通过在BookClassAddActivity中创建的字节数组对象byte[]resultByte,获取从服务端响应回的数据。

从服务端传回的的result数据为一个字符串,“图书类别添加成功”或“图书类别添加失败”。

7、删除图书类别功能,把不喜欢的图书分类删除掉,实现效果如下:

图11长按显示上下问菜单图

图12成功删除图

删除图书类别

在BookClassListActivity.java中创建上下文菜单,分别是“添加图书类别”、“返回主界面”两个选项“删除图书类别”、“编辑图书类别”,这里我负责的是删除图书类别这一部分。

添加长按点击功能lv.setOnCreateContextMenuListener(bookClassListItemListener);

长按想要删除的图书类别,会弹出上下文菜单,点击“删除图书类别”选项,先通过contextMenuInfo.position获取选中行位置,再通过选中行的位置用hashMap.get("

bookClassId"

).toString()获取它的图书类别编号。

最后调用dialog()方法,会有提示弹出框弹出“确认删除吗?

”字样。

点击“确认”,用HttpUtil.SendPostRequest(url,params,"

在Service层中,BookClassDAO中的DeleteBookClass()方法,将BookClassAddActivity中通过post请求获取到的值,通过SQL语句从数据库中删除,并通过在BookClassAddActivity中创建的字节数组对象byte[]resultByte,获取从服务端响应回的数据。

从服务端传回的的result数据为一个字符串,“图书类别删除成功!

”或“图书类别删除失败”。

8、编辑图书信息功能,用户可以对图书的信息进行修改,实现效果如下:

图13选编辑图书信息图

图14进行编写图

图15图书更新图

修改图书信息

长按菜单,触发响应函数onContextItemSelected(MenuItemitem),点击编辑图书信息按钮,调用BookEditActivity.Java文件,初始化当前Activity界面布局,通过findViewById方法实例化组件,将图书信息回显到EditText中,图书的类别通过调用bookClassService.GetAllBookClass();

获取所有图书类别。

点击确定按钮时触发监听事件,事件中对图书的名称、价格、库存、图片进行验证,

使用HttpUtil.SendPostRequest(url,params,”UTF-8”);

上传图书信息时调用业务层UpdateBook(book);

操作完成后返回到图书管理界面。

9、编辑图书类别功能,用户可以对图书的类别进行修改,实现效果如下:

图16选择编辑图书类别图

图17编辑图书类别图

图18更新成功图

修改图书类别

界面上有四个数据,“计算机类”“历史类”“法律类”“文学类”,长按其中任何一个数据都会触发btnUpdate.setOnClickListener(newOnClickListener()方法,跳到bookclass_edit.xml,弹出子菜单,子菜单里有两个按钮<

Buttonandroid:

text="

更新"

android:

id="

@+id/BtnUpdate"

....../>

<

取消"

@+id/BtnCancle"

......./>

选择更新选项,弹出"

手机客户端-修改图书信息”页面,程序跳到BookEditActivity.java调用的onCreate方法,通过setContentView(R.layout.book_edit);

设置当前Activity界面布局,通过findViewById方法实例化组件,使用btnUpdate=(Button)findViewById(R.id.BtnUpdate);

修改图书类别,在类别名称选择框里面把第八个“法律类”进行修改为“法律类啊”。

点击更新按钮,程序会使用HttpUtil.SendPostRequest(url,params,”UTF-8”);

做更新操作成功后时,服务端传回的result数据是一个字符串,“图书类别更新成功!

然后将result传回Activity,并通过printStackTrace()在布局中打印出来。

四、实验代码

1、后台BookDAO.java的代码:

publicclassBookDAO{

publicList<

Book>

QueryBook(Stringbarcode,StringbookName,

intbookClassId,TimestamppublishDate){

List<

bookList=newArrayList<

();

DBdb=newDB();

Stringsql="

select*fromBookwhere1=1"

;

if(!

barcode.equals("

"

))

sql+="

andbarcodelike'

%"

+barcode+"

%'

bookName.equals("

andbookNamelike'

+bookName+"

if(bookClassId!

=0)

andbookClassId="

+bookClassId;

if(publishDate!

=null)

andpublishDate='

+publishDate+"

'

try{

ResultSetrs=db.executeQuery(sql);

while(rs.next()){

Bookbook=newBook();

book.setBarcode(rs.getString("

barcode"

));

book.setBookClassId(rs.getInt("

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(Exceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}finally{

db.all_close();

}

returnbookList;

}

/*传入图书对象,进行图书的添加业务*/

publicStringAddBook(Bookbook){

Stringresult="

/*如果所有验证通过就执行sql插入新商品信息*/

StringsqlString="

insertintoBook(barcode,bookName,bookClassId,price,count,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.executeUpdate(sqlString);

result="

图书添加成功!

图书添加失败"

returnresult;

/*删除图书*/

publicStringDeleteBook(Stringbarcode){

deletefromBookwherebarcode='

+barcode

+"

图书删除成功!

图书删除失败"

/*根据条形码获取到图书信息*/

publicBookGetBook(Stringbarcode){

Bookbook=null;

select*fromBookwherebarcode='

if(rs.next()){

book=newBook();

returnbook;

/*更新图书信息*/

publicStringUpdateBook(Bookbook){

Stringsql="

updateB

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学反思汇报

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

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