内容
1: 组件通信
设计一个主Activity和一个子Activity(Sub-Activity),使用主Activity上的按钮启动子Activity,并将子Activity的一些信息返回给主Activity,并显示在主Activity上,亦可以自己设计界面和场景,也可以使用下面提供的内容。主Activity界面上有一个“登录”按钮和一个用了显示信息的TextView,点击“登录”按钮后打开一个新的Activity,新Activity上面有输入用户名和密码的控件,在用户关闭这个Activity后,将用户输入的用户名和密码传递到主Activity,并显示在主Activity的TextView中。

2: Fragment+FragmentTabHost实现仿微信底部导航
(1)了解Fragment的用法
(2)了解FragmentTabHost的用法
(3)可参考代码目录中的Fragment_tabhost.rar来实现
3: android网络编程
将参考代码目录中的开源代码whiteboard-master.zip编译运行起来,体会android中的app作为网络客户端的开发技术。该项目是基于网络框架开发的电子白板,可实现同屏互动功能。同时该项目采用C/S模式,支持多人同时在线、并发实时同屏互动。
报告中体现程序运行效果;写出研究开源代码的android客户端的体会;选作内容:自由添加修改功能。4: 大作业
任选一个android应用(互联网开发领域),可以按照自己的兴趣,选择完成。
可设计只有客户端(app)的移动互联网开发(例如天气类app);如能同时设计服务端程序,则工作量更多,可适当提高成绩(例如使用你自己开发的javaEE等服务器做后端,你的app作为客户端去连接显示)。
………………大作业其它说明………………
要求:功能完备,交互方便。优先选择android应用,如不能掌握,选择IOS开发或java web等方式开发互联网应用程序亦可。不许相互抄袭。要求和说明
12周最后一次实验课时,提交报告和光盘
(各班统一制作一张光盘,每人的目录名: xx是学号末2位,xx姓名)。
光盘内含:4项内容的源程序工程文件和apk文件;电子版报告。
报告:A4双面打印文档一份,统一封面。
要获得较高的分数,可在12周最后一次实验课时对大作业程序进行演示。
互联网应用开发报告
课程名称______互联网应用开发___
学生学院__ 计算机学院_____
专业班级_ 计算机科学与技术2班_
学 号____ 311500 ______
学生姓名____ _ ___
指导教师______ 黄剑锋 ____
2018 年 5 月 18 日
实验一
一、实验目的:
了解使用 Intent 进行组件通信的原理。掌握使用 Intent 启动 Activity 的方法。掌握获取 Activity 返回值的方法。二、实验内容:
设计一个主Activity和一个子Activity(Sub-Activity),使用主Activity上的按钮启动子Activity,并将子Activity的一些信息返回给主Activity,并显示在主Activity上,亦可以自己设计界面和场景,也可以使用下面提供的内容。主Activity界面上有一个“登录”按钮和一个用了显示信息的TextView,点击“登录”按钮后打开一个新的Activity,新Activity上面有输入用户名和密码的控件,在用户关闭这个Activity后,将用户输入的用户名和密码传递到主Activity,并显示在主Activity的TextView中。
三、测试截图:
1.登录界面,可以输入账户和密码。
2. 用户名和密码传递到主Activity,并显示在主Activity的TextView中
四、总结
这次实验是为了了解组件之间的信息传递可以用Intent来做到,可以更好的控制流程的跳转。
实验二
一、实验目的
(1)了解Fragment的用法
(2)了解FragmentTabHost的用法
二实验内容:
Fragment+FragmentTabHost实现仿微信底部导航
三测试截图:
四、总结
1、一个Fragment必须总是被嵌入到一个Activity中,它的生命周期直接被其所属的宿主Activity生 命周期影响,它的状态会随宿主的状态变化而变化。 要创建一个Fragment 必须创建一个Fragment的子类,或者继承自另一个已经存在的 Fragment的子类.并重写 onCreateView()方法加载UI。
2.FragmentTabHost实现一般有如下步骤:
①、Activity要继承FragmentActivity
②、调用FragmentTabHost的setup()方法
③、添加TabSpec
实验三
一、实验内容:
将参考代码目录中的开源代码whiteboard-master.zip编译运行起来,体会android中的app作为网络客户端的开发技术。该项目是基于网络框架开发的电子白板,可实现同屏互动功能。同时该项目采用C/S模式,支持多人同时在线、并发实时同屏互动。
二、测试截图:
三、android客户端的体会
1. Android客户端为了与服务器通讯有两种协议,HTTP和TCP
2. HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。
3.socket是可以监听,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。保持客户端与服务器数据的实时与同步。
大作业题目:PHP开发的图书管理第1章 需求分析随着计算机的不断普及和发展,很多大型的学校图书馆虽然已经有一整套比较完善的图书馆管理系统,然而在一些中小型的学校图书馆中,绝大部分的工作仍需图书管理员由手工来完成,工作效率低下。本文设计的图书馆管理系统基于B/S架构,使用最流行的服务器端脚本语言PHP,并以与PHP良好匹配的MYSQL数据库为本系统的数据库,Apache作为本系统的服务器,实现了图书信息的添加、查询、删除和借阅归还,搜索、统计等功能。可以轻松地在电脑浏览器网页上,甚至移动设备上进行图书管理。
1.1项目设计目标
图书管理者可以通过电脑浏览器甚至是移动设备网页,进行图书管理,可以进行图书信息的添加、查询、删除和借阅归还,搜索、统计等。该图书管理系统力求界面简洁,操作简单,功能完善。同时,系统要求有优良的可视化图形操作界面,大力提高系统的可操作性和交互性,尽量减少操作员的负担,让他们更方便、更快捷、更简单的进行操作。还有要求系统有很强的稳定性、可维护性、扩充性、可移植性
1.2项目涉及的技术、方法或原理
1、PHP概述:
PHP是一种广泛使用的开源的脚本语言,可嵌入到HTML中,尤其是对于Web开发,它是一种服务器端HTML的脚本语言,是一种简单的、高效的、面向对象的、解释
的、健壮的、安全性非常高的动态的脚本语言。
2、MySQL概述:
MySQL数据库是一个小型关系型数据库管理系统。由于MySQL体积小、速度快和低成本,尤其是在开放源代码的特点,目前MySQL被广泛用于中小型网站
3、Apache服务器:
目前世界使用排名第一的Web服务器软件就是Apaache。
Apache起初由NCSA(伊利诺伊大学香槟分校的国家超级电脑应用中心)开发。此后,随着Apache httpd的开源社区的成员不断发展和加强,Apache的HTTP Web服务器有可靠的声誉,有超过一半网站正在使用它,特别是几乎所有最流行的大网站。例如,维基百科使用的就是Apache 服务器。
4、phpstorm概述:
phpstorm是一个大型PHP项目开发编译器。此编译器为PHP编译器,辅助PHP代码的开发和调试,集成了代码高亮、函数跟踪、实时纠错等功能。内嵌浏览器可以在调试简单代码实时浏览。不仅支持php ,也支持其他网络语言像html、xhtml、xml、css和javascript、java、perl、python等
5、BS模式概述:
B/S(Browser/Server结构)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。
1.3功能需求
1、管理员注册和登录功能。
2、管理员修改密码功能。
3、图书借出、还入操作。
4、新书入库,图书删除功能。
5、图书搜索、统计。
第2章 数据库设计1、admin表(记录管理员的相关信息):
2、yx_book表(记录图书的相关信息):
第3章 系统实现3.1 图书分页显示功能模块:
图书分页显示模块无疑是该图书管理系统最重要的一部分之一。分页显示可以让管理者轻松地查看所有的图书信息。连接mysql数据库。将所有的图书信息以表格形式分页显示,可以切换上一页或者下一页,也可以实现跳转到具体页数。下面是主要的实现代码:
<?php
$pagenum = 10; //一页显示多少条数据
$pagenow = 1; //默认显示第一页的数据
$sql2 = "select count() from yx_book";
$rows = $mysql->conn->query($sql2)->fetch();
$total = $rows[0]; //一共有多少条数据
$pagecount = ceil($rows[0]/$pagenum);
//获取当前页数
if(!empty($_GET["page"])) {
if($_GET['page'] < 1) {
$pagenow = 1;
}else if($_GET['page'] > $pagecount) {
$pagenow = $pagecount;
}else {
$pagenow = $_GET["page"];
}
}
$sql = "select from yx_book limit"." ".(($pagenow-1)$pagenum).",$pagenum";
$pdostm = $mysql->conn->query($sql);
$i = 1;
while($res = $pdostm->fetch(PDO::FETCH_ASSOC)) {
?>
<tr align="center">
<td class="td_bg" width="8%"><?php echo $i++ ?></td>
<td class="td_bg" width="25%" height="26"><?php echo $res['name'] ?></td>
<td class="td_bg" width="17%" height="26"><?php echo $res['position'] ?></td>
<td class="td_bg" width="12%" height="26"><?php echo $res['type'] ?></td>
<td class="td_bg" width="14%" height="26"><?php echo $res['total'] ?></td>
<td class="td_bg" width="14%" height="26"><?php echo $res['leave_number'] ?></td>
</tr>
<?php
}
?>
<tr>
<td height="25" colspan="6" align="center" class="bg_tr tda">
<a class="page" href="list.php?page=1">首页</a>
<a class="page" href="list.php?page=<?php echo $pagenow-1 ?>">上一页</a>
当前<span><?php echo $pagenow?></span>页
<a class="page" href="list.php?page=<?php echo $pagenow+1 ?>">下一页</a>
<a class="page" href="list.php?page=<?php echo $pagecount ?>">尾页</a>
共<span><?php echo $total?></span>条数据,共<span><?php echo $pagecount ?></span>页
<form action="" method="get" class="form">
<input type="text" name="page" style="width: 50px;height: 23px">
<input type="submit" value="跳转该页">
</form>
</td>
</tr>
3.2 图书模糊搜索模块:模糊搜索可以按某些关键字查出相关的图书,主要的实现原理是mysql的like操作符。Mysql语句如下:
$sql = "select from yx_book WHERE ".$_SESSION["seltype"]." like"." '%".$_SESSION["coun"]."%'"." limit"." ".(($pagenow-1)$pagenum).",".$pagenum;
3.3 新书入库模块管理员可以通过界面化操作,实现添加新的图书,运用mysql的insert语句。主要代码如下:
<?php
include_once "coon/pdo.php";
$mysql = new mysqls();
$sql = "insert into yx_book (name,position,type,total,leave_number) VALUES ('" .$_POST['name'].
"','".$_POST['position']."','".$_POST['type']."','".$_POST['total']."','".$_POST['leave']."')";
$row = $mysql->myExec($sql);
if($row == 1) {
echo "<script>alert('入库成功');window.location.href='add.php';</script>";
}else {
echo "<script>alert('入库失败,请重试');</script>";
}
?>
3.4修改图书信息模块
修改图书信息可以更改图书的摆放位置,总库存,剩余库存等信息。主要用到mysql的update语句。主要代码如下:
<?php
include_once "coon/pdo.php";
$mysql = new mysqls();
$sql = "update yx_book set POSITION ='".$_POST["position"]."',type='".$_POST['type']."',total=".$_POST['total'].
",leave_number=".$_POST['leave']." where name='".$_POST['name']."'";
$row = $mysql->myExec($sql);
if($row == 1) {
echo "<script>alert('修改成功');window.location.href='operate.php'</script>";
}
?>
3.5借出,还入,删除图书模块
连接数据库,借出时图书的剩余库存减一。有人还入时,剩余库存加一。运用mysql的update语句。删除图书时,使用mysql的delete语句删除该条图书记录。
3.6图书统计模块:
1.统计每种类型的图书各有多少种,以表格形式输出。主要的mysql语句如下:$sql="select type, count() from yx_book group by type"
2.使用sanvas画布画出饼状图。主要代码如下:
function drawCircle(canvasId, data_arr, color_arr, text_arr)
{
var c = document.getElementById(canvasId);
var ctx = c.getContext("2d");
var radius = c.height / 2 - 20; //半径
var ox = radius + 20, oy = radius + 20; //圆心
var width = 30, height = 10; //图例宽和高
var posX = ox 2 + 20, posY = 30; //
var textX = posX + width + 5, textY = posY + 10;
var startAngle = 0; //起始弧度
var endAngle = 0; //结束弧度
for (var i = 0; i < data_arr.length; i++)
{
//绘制饼图
endAngle = endAngle + data_arr[i] Math.PI 2; //结束弧度
ctx.fillStyle = color_arr[i];
ctx.beginPath();
ctx.moveTo(ox, oy); //移动到到圆心
ctx.arc(ox, oy, radius, startAngle, endAngle, false);
ctx.closePath();
ctx.fill();
startAngle = endAngle; //设置起始弧度
//绘制比例图及文字
ctx.fillStyle = color_arr[i];
ctx.fillRect(posX, posY + 20 i, width, height);
ctx.moveTo(posX, posY + 20 i);
ctx.font = 'bold 12px 微软雅黑'; //斜体 30像素 微软雅黑字体
ctx.fillStyle = color_arr[i]; //"#000000";
var percent = text_arr[i] + ":" + 100 data_arr[i] + "%";
ctx.fillText(percent, textX, textY + 20 i);
}
}
第4章 测试截图4.1管理员注册登录页面
4.2图书详情页面
4.3图书模糊搜索以及操作页面:
4.4新书入库页面
4.5图书统计页面
4.6系统总览:
第5章 问题和总结
通过本次项目设计,不仅更加扎实的掌握了PHP,mysql以及H5前端等基础知识,对互联网开发方面的知识也有了进一步的了解。对软件工程的意义有了更深刻的体会。从一个项目定题到项目完成,只有认真全面的做好可行性研究和需求分析,做好总体设计和详细设计,才能完成功能完善,质量良好的项目。
在项目过程中虽然遇到了一些问题,但经过思考和网上查询资料,也解决大部分问题,在此同时也暴露出了前期PHP基础方面的知识欠缺和经验不足。实践出真知,通过亲自动手实践,使我们掌握的知识不再是纸上谈兵。回顾起此次项目设计,至今仍感慨颇多,从理论到实践,在这段日子里,虽然很累,但是却可以学到很多很多的东西,既巩固了以前所学过的知识,也学到了很多在书本和课堂上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有理论与实际相结合,才能提高自己的实际动手能力和独立思考的能力。所以在以后的学习中,我要多实践,多敲代码。