电信增值业务及软件开发一实践报告 本文关键词:增值业务,实践,电信,报告,开发
电信增值业务及软件开发一实践报告 本文简介:电信增值业务及软件开发一实践报告学院:软件学院专业:软件工程班级:学号:姓名2:指导老师:2013年06月22日实验一:短消息MO指令匹配算法一、实验步骤及实验结果实验代码:#include#includevoidmain(){charS[100];charT[50];cin>>S;cin>>T;i
电信增值业务及软件开发一实践报告 本文内容:
电信增值业务及软件开发一
实践报告
学
院:
软件学院
专
业:
软件工程
班
级:
学
号:
姓
名2:
指导老师:
2013年
06月
22日
实验一:短消息MO指令匹配算法
一、
实验步骤及实验结果
实验代码:
#include
#include
void
main()
{
char
S[100];
char
T[50];
cin>>S;
cin>>T;
int
len1,len2;
int
len;
int
next[100];
int
i,j;
int
k;
int
count=0;
len1=strlen(S);
len2=strlen(T);
len=len1-len2;
j=1,k=0;
next[1]=0;
while(j
-1)
{
sb.append((char)
ch);
}
System.out.println(sb.toString());
rec_string
=
sb.toString().trim();
rd.close();
}
catch
(Exception
e)
{
e.printStackTrace();
}
finally
{
if
(urlConn
!=
null)
{
urlConn.disconnect();
}
}
return
rec_string;
}
}
1.根据短信增值业务软件开发平台的接口手册熟悉短信增值业务软件开发平台的HTTP接口等。
2.调用短信增值业务软件开发平台的HTTP接口,编写一个Web程序实现“趣味答题”短信增值业务。
实验步骤
创建业务
因为本次实验要调用HTTP接口,所以我们在选在处理方式的时候要选择HTTP转发
提交审核
审核通过
业务实现
数据库设计
根据整个项目情况可以看出这个业务平台需要的数据表:用户答题信息表User_message、题目信息表title_message。
title_message表结构
字段
类型
默认值
描述
Id
Number(10)
主键
titleType
Varchar2(30)
题目类型
consequence
Varchar2(10)
题目答案
titleNumber
Number(10)
题目题号
content
Varchar2(100)
题目内容
user_message表结构
字段
类型
默认值
描述
Id
Varchar2(100)
主键
phone
Number(10)
手机号码
titleType
Number(10)
回答题目类型
countNumber
Number(10)
回答题目数
successNumber
Number(10)
答对题目数
errorNumber
Number(10)
答错题目数
三、
心得
通过本次实验熟悉了大汉三通公司的短信增值业务软件开发平台,掌握了短息增值业务软件的入门知识。但目前还只是初步会使用大汉三通公司封装打包提供的功能,自己对于底层的实现还不能够明确掌握。
实验三:基于HTTP接口的短消息编程
一、
实验步骤及实验结果
1、将文件mpay_sms_http导入Myeclipse中
2、
配置web.xml如图
3、发布工程及修改路径
4、访问工程
在地址栏中输URL:
http://127.0.0.1:8080/mpay_sms_http/http/httpTest
回车得到
发布工程中在中加入代码
-->
-->
创建数据库
输入密码进入配置界面
输入show
databases;命令查看已经存在的数据库
输入create
database
test
得到
5、使用navicat新建数据库将答题的数据输入,如图
上传提交
二、心得
熟悉短信增值业务软件开发平台HTTP接口等,掌握短信增值业务软件开发的HTTP接口编程。
实验四:基于API接口的短消息编程
一、
实验步骤及实验结果
本次试验是建立在“短信增值业务软件开发平台HTTP接口程序设计”的基础上,本次试验中的信息处理类和DAO是在第七次实验的基础上稍加修改,这里我们就不做过多的解释。
1.创建一个业务
2.提交审核
3.审核通过
4.业务实现
数据库设计
根据整个项目情况可以看出这个业务平台需要的数据表:用户答题信息表User_message、题目信息表title_message。
title_message表结构
字段
类型
默认值
描述
Id
Number(10)
主键
titleType
Varchar2(30)
题目类型
consequence
Varchar2(10)
题目答案
titleNumber
Number(10)
题目题号
content
Varchar2(100)
题目内容
user_message表结构
字段
类型
默认值
描述
Id
Varchar2(100)
主键
phone
Number(10)
手机号码
titleType
Number(10)
回答题目类型
countNumber
Number(10)
回答题目数
successNumber
Number(10)
答对题目数
errorNumber
Number(10)
答错题目数
创建API接口测试类http_api.java
package
com.dahantc.api;
import
com.dahantc.utils.channelUtils;
public
class
api_Demo
{
public
static
void
main(String[]
args)
{
String
host
=
“172.18.2.185“;//
短信实验平台地址
int
port
=
28020;//
短信实验平台的服务端口(ctc端口)--默认为28020
String
user
=
“student“;//
用户账号
String
passwd
=
“123“;//
用户密码
int
serviceId
=
1;//
业务ID---自己申请的业务ID号
int
channelId
=
1;//
通道ID---根据实际情况填写
channelUtils.getInstance().initChannel(host,port,user,passwd,channelId,serviceId);
}
}
创建一个MD5.java
来提供上行业务MD5的加密方式
package
com.dahantc.utils
import
java.security.MessageDigest;
public
class
MD5
{
public
static
final
String
encode(String
sourceString)
{
String
resultString
=
null;
try
{
resultString
=
new
String(sourceString);
MessageDigest
md
=
MessageDigest.getInstance(“MD5“);
resultString
=
byte2hexString(md.digest(resultString.getBytes()));
}
catch
(Exception
ex)
{
}
return
resultString;
}
private
static
final
String
byte2hexString(byte[]
bytes)
{
StringBuffer
bf
=
new
StringBuffer(bytes.length
2);
for
(int
i
=
0;
i,当前选手排名为5“;
}
}
else
{//投票结束或者还没开始投票
if
(smsContent.equals(“1“)
||
smsContent.equals(“2“))
{
result
=
this.titleTypeJudgment(tm,phone,smsContent,um);
}
else
if
(smsContent.equals(PropReadUtil.getInstance().getResources(“queryScore“)))
{
//
查看选手信息
result
=
this.answerResultsJudgment(tm,phone,um);
}
else
{
if
(um.getCountNumber()
<
15)
{
result
=
“你还没投票,请回复短信给喜欢的选手投票支持“;
}
else
{
result
=
“投票成功“;
}
}
}
}
else
{
result
=
“投票失败“;
}
}
}
else
{
result
=
“你投票短信的格式错误,回复短信“TP+选手姓名”参与投票“;
}
return
result;
}
创建数据库
开始菜单àcmdàmysql
–uroot
–pà回车à输入密码:
如果密码正确则进入如下界面:
三、
实验结果
程序正常运行,返回值为”0”
四、结果分析
在平台上创建的业务通道,格式正确。并且已通过程序与数据库建立链接。且成功调用接口连接到短信平台。过程中配置的数据库等配置文件和创建的工具类都没有发生逻辑和语法错误。投票功能已经实现
四、
心得
熟悉短信增值业务软件开发平台HTTP接口等,掌握短信增值业务软件开发的HTTP接口编程。在实验过程中,学习到得独立自主的学习能力能帮助在接下来的学习更好的解决这些问题。
篇2:创新实践安卓软件开发报告
创新实践安卓软件开发报告 本文关键词:实践,创新,报告,开发,软件
创新实践安卓软件开发报告 本文简介:沈阳理工大学课程设计专用纸No18摘要从没有比现在更好的时机,能通过为Android编写程序,将我们的创意带人生活中。安卓AppStore给了我们巨大的机会,程序的开发也从未像如今这样简单和广泛。你不仅能够拥有数百万的潜在客户还能拥有尖端的开发工具和硬件。2008年Google推出了一款名为Andr
创新实践安卓软件开发报告 本文内容:
沈阳理工大学课程设计专用纸No18
摘要
从没有比现在更好的时机,能通过为Android编写程序,将我们的创意带人生活中。安卓App
Store给了我们巨大的机会,程序的开发也从未像如今这样简单和广泛。你不仅能够拥有数百万的潜在客户还能拥有尖端的开发工具和硬件。2008年Google推出了一款名为Android的开源智能手机操作系统,它采用Linux内核,开放手机联盟(OHA)成员可以任意使用和修改SDK包,系统的开源性使其具有良好的拓展性。而很少受到早期手持设备的硬件和软件限制。
本设计在对Android开发有初步了解的情况下,设计一个有代表性的Android商业App,通过对商业实例的学习,了解真实项目的系统构架、引擎设计,了解声音、视频、图片处理等相关的编程技术要点、以便在实际的游戏项目开发中借鉴和综合应用这些知识。
关键字:Android;APP;
目录
1
开发工具与环境1
1.1
下载并安装eclipse1
1.2
下载并安装jdk1
1.3开发环境简介1
1.4开发环境搭建2
1.4.2安装Eclipse4
1.4.3
安装Android
SDK4
1.4.4
ADT安装创建AVD4
2
系统的设计与分析5
2.1
Android系统的概述5
2.1.1应用层5
2.1.2应用程序框架5
2.1.3系统运行库6
2.1.4
Linux内核7
2.3
日历流程图7
3
系统详细设计8
3.1
日历其实是由3个预制的数据集组成8
3.2
视图的生成8
3.3当所示日期发生选择变更是的视图更新10
3.4
启动和运行13
4
运行结果14
4.1
系统启动14
4.2
进入日历14
4.4
退出应用15
5
结论16
参考文献17
1
开发工具与环境
1.1
下载并安装eclipse
Eclipse
版本有要求:The
“Eclipse
Classic“version
is
recommended.
Otherwise,a
Java
or
RCP
version
of
Eclipse
is
recommended.
1.下载eclipse只需登录到http://www.jsfw8.com/javase/downloads下载最新的JDK安装程序。
然后双击刚下载的JDK安装程序jdk-7u21-windows-i586,根据提示将JDK安装到默认目录。
右键单击我的电脑,依次选择属性/高级/环境变量,在系统变量中新建一个名为JAVA_HOME,值为“C:/Program
Files/Java/jdk1.7.0_21”的环境变量。
再打开Path环境变量,在最后加上“C:/Program
Files/Java/jdk1.7.0_21/bin;”,单击“确定”按钮即可。
1.3开发环境简介
JDK(Java
Development
Kit)是Sun
Microsystems针对Java开发员的产品。自从Java诞生以来,JDK已经成为最广泛的Java
SDK。JDK是整个Java的核心内容,包括了Java运行环境、Java工具和Java基础类库三部分。从Sun的JDK1.5开始,提供了一些非常使用的功能,其版本也不断更新,运行效率得到了非常大的提高。
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组建构建开发环境。Eclipse附带了一个标准的插件集,包括Java开发工具(Java
Development
Kit,JDK)。
Android
SDK即软件开发工具包(software
development
kit)。被软件开发工程师用于为特定的软件包、软件架构、硬件平台、操作系统等建立应用软件工具的集合。因此Android
SDK是Android专属的开发工具包。其授权协议为Apache,开发语言为Java、需要Android操作系统的支持。
1.4开发环境搭建
下载安装Java开发包(JDK)。选择“windows
offline
installation,multi-language”,根据屏幕提示完成安装。
打开计算机>点右键>属性>高级系统设置>环境变量,在系统变量中添加。
图1.1环境变量
新建JavaHome:C:/Program
Files/Java/jdk1.6.0_10,如图1.2。
图1.2JavaHome
新建CLASSPATH:.;%JavaHome%/lib/dt.jar;%JavaHome%/lib/tools.jar;,如图1.3。
图1.3
CLASSPATH
编辑Path,在变量值前添加:%JavaHome%/bin;,如图1.4。
图1.4
Path
在CMD窗体中输入java
–version,如果屏幕出现如图1.5一样的代码信息,说明JDK安装成功了。
图1.5
CMD窗体
1.4.2安装Eclipse
选择标有“eclipse
IDE
for
java
developers“的文件进行安装。进入解压后的目录,就可以看到一个名为“eclipse.exe”的可执行文件,双击此文件直接运行,eclipse
能自动找到用户先期安装的JDK路径
1.4.3
安装Android
SDK
将下载的android-sdk压缩包解压为文件放于自选位置。在Eclipse中选择Windows>Preferences>Android>Browse找到解压文件>Apply>OK。打开环境变量,编辑Path,在变量值前添加:C:
/java/adt-bundle-windows-x86-20130522/sdk/tools;,如图1.6。
图1.6
Path
1.4.4
ADT安装创建AVD
打开SDK
Manager.exe,选择tools>Manage
AVDs,在Android
Virtual
Device
Manager中点击New,输入AVD的信息,点OK完成AVD的创建。如图1.7。
图1.7
AVD
2
系统的设计与分析
2.1
Android系统的概述
Android是一个包括操作系统,中间件以及一些重要应用程序的专门针对移动设备的层次结构的软件集。作为一个层次结构的软件集,一定有一个层次的系统构架,下图为Android的构架图:
图2.1
Android
系统构架
2.1.1应用层
Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。
2.1.2应用程序框架
开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。隐藏在每个应用后面的是一系列的服务和系统,其中包括:丰富而又可扩展的视图(Views),可以用来构建应用程序,
它包括列表(lists),网格(grids),文本框(text
boxes),按钮(buttons),
甚至可嵌入的web浏览器;
内容提供器(Content
Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),
或者共享它们自己的数据:资源管理器(Resource
Manager)提供
非代码资源的访问,如本地字符串,图形,和布局文件(
layout
files
);通知管理器
(Notification
Manager)
使得应用程序可以在状态栏中显示自定义的提示信息;
活动管理器(
Activity
Manager)
用来管理应用程序生命周期并提供常用的导航回退功能。
2.1.3系统运行库
系统运行库包括程序库和Android运行库。首先是程序库,
Android
包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过
Android
应用程序框架为开发者提供服务。以下是一些核心库:系统
C
库
-
一个从
BSD
继承来的标准
C
系统函数库(
libc
),
它是专门为基于
embedded
linux
的设备定制的;媒体库
-
基于
PacketVideo
OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG
;
Surface
Manager
-
对显示子系统的管理,并且为多个应用程序提
供了2D和3D图层的无缝融合;
LibWebCore
-
一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图;SGL
-
底层的2D图形引擎;3D
libraries
-
基于OpenGL
ES
1.0
APIs实现;该库可以使用硬件
3D加速(如果可用)或者使用高度优化的3D软加速;FreeType
-位图(bitmap)和矢量(vector)字体显示;SQLite
-
一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。其次是Android
运行库,Android
包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。
Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中
的
“dx“工具转化成.dex格式由虚拟机执行。Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。
2.1.4
Linux内核
Android
的核心系统服务依赖于
Linux
2.6
内核,如安全性,内存管理,进程管理,
网络协议栈和驱动模型。
Linux
内核也同时作为硬件和软件栈之间的抽象层。
2.3
日历流程图
iPlanet日历S2erver2.x
Run
db_recover
下载和安装Calender
Server5.1.1
运行db_upgrade
运行les2milgrate
Sun
ONE
下载和安装Calender
Server6.x
运行cs5migrate
Sun
Java
System
Calender
Server
6
Netscape
Calender
Server4.x
下载和安装Calender
Server5.1.1
运行ncs4migrate
图2.2
流程图
3
系统详细设计
3.1
日历其实是由3个预制的数据集组成
日历整个系统是由3个GridView组成,3个GridView分别预制当前月、上个月和下个月当发生滑动事件的时候产生替换,同时在加载时重新生成。
private
Context
mContext
=
BaseCalendar.this;
private
GridView
title_gView;
private
GridView
gView1;//
上一个月
private
GridView
gView2;//
当前月
private
GridView
gView3;//
下一个月
//
private
GridView
gView1;
boolean
bIsSelection
=
false;//
是否是选择事件发生
private
Calendar
calStartDate
=
Calendar.getInstance();//
当前显示的日历
private
Calendar
calSelected
=
Calendar.getInstance();
//
选择的日历
private
Calendar
calToday
=
Calendar.getInstance();
//
今日
private
CalendarGridViewAdapter
gAdapter;
private
CalendarGridViewAdapter
gAdapter1;
private
CalendarGridViewAdapter
gAdapter3;
//
顶部按钮
private
Button
btnToday
=
null;
private
RelativeLayout
mainLayout;
//
private
int
iMonthViewCurrentMonth
=
0;
//
当前视图月
private
int
iMonthViewCurrentYear
=
0;
//
当前视图年
private
int
iFirstDayOfWeek
=
Calendar.MONDAY;
private
static
final
int
mainLayoutID
=
88;
//
设置主布局ID
private
static
final
int
titleLayoutID
=
77;
//
title布局ID
private
static
final
int
caltitleLayoutID
=
66;
//
title布局ID
private
static
final
int
calLayoutID
=
55;
//
日历布局ID
3.2
视图的生成
生成一个主视图
//
生成内容视图
private
View
generateContentView()
{
//
创建一个垂直的线性布局(整体内容)
viewFlipper
=
new
ViewFlipper(this);
viewFlipper.setId(calLayoutID);
mainLayout
=
new
RelativeLayout(this);
//
创建一个垂直的线性布局(整体内容)
RelativeLayout.LayoutParams
params_main
=
new
RelativeLayout.LayoutParams(
LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
mainLayout.setLayoutParams(params_main);
mainLayout.setId(mainLayoutID);
mainLayout.setGravity(Gravity.CENTER_HORIZONTAL);
LinearLayout
layTopControls
=
createLayout(LinearLayout.HORIZONTAL);
//
生成顶部按钮布局
generateTopButtons(layTopControls);
//
生成顶部按钮
(上一月,下一月,当前月)
RelativeLayout.LayoutParams
params_title
=
new
RelativeLayout.LayoutParams(
LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
params_title.topMargin
=
5;
//
params_title.addRule(RelativeLayout.ALIGN_PARENT_TOP,20);
layTopControls.setId(titleLayoutID);
mainLayout.addView(layTopControls,params_title);
calStartDate
=
getCalendarStartDate();
setTitleGirdView();
RelativeLayout.LayoutParams
params_cal_title
=
new
RelativeLayout.LayoutParams(
LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
params_cal_title.addRule(RelativeLayout.BELOW,titleLayoutID);
//
params_cal_title.topMargin
=
5;
mainLayout.addView(title_gView,params_cal_title);
CreateGirdView();
RelativeLayout.LayoutParams
params_cal
=
new
RelativeLayout.LayoutParams(
LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
params_cal.addRule(RelativeLayout.BELOW,caltitleLayoutID);
mainLayout.addView(viewFlipper,params_cal);
LinearLayout
br
=
new
LinearLayout(this);
RelativeLayout.LayoutParams
params_br
=
new
RelativeLayout.LayoutParams(
LayoutParams.FILL_PARENT,1);
params_br.addRule(RelativeLayout.BELOW,calLayoutID);
br.setBackgroundColor(getResources().getColor(R.color.calendar_background));
mainLayout.addView(br,params_br);
return
mainLayout;
}
3.3当所示日期发生选择变更是的视图更新
在主视图所示日期改变时更新,主要代码如下:
//
根据改变的日期更新日历
//
填充日历控件用
private
void
UpdateStartDateForMonth()
{
calStartDate.set(Calendar.DATE,1);
//
设置成当月第一天
iMonthViewCurrentMonth
=
calStartDate.get(Calendar.MONTH);//
得到当前日历显示的月
iMonthViewCurrentYear
=
calStartDate.get(Calendar.YEAR);//
得到当前日历显示的年
String
s
=
calStartDate.get(Calendar.YEAR)
+
“-“+
NumberHelper.LeftPad_Tow_Zero(calStartDate
.get(Calendar.MONTH)
+
1);
btnToday.setText(s);
//
星期一是2
星期天是1
填充剩余天数
int
iDay
=
0;
int
iFirstDayOfWeek
=
Calendar.MONDAY;
int
iStartDay
=
iFirstDayOfWeek;
if
(iStartDay
==
Calendar.MONDAY)
{
iDay
=
calStartDate.get(Calendar.DAY_OF_WEEK)
-
Calendar.MONDAY;
if
(iDay
<
0)
iDay
=
6;
}
if
(iStartDay
==
Calendar.SUNDAY)
{
iDay
=
calStartDate.get(Calendar.DAY_OF_WEEK)
-
Calendar.SUNDAY;
if
(iDay
<
0)
iDay
=
6;
}
calStartDate.add(Calendar.DAY_OF_WEEK,-iDay);
}
private
Calendar
getCalendarStartDate()
{
calToday.setTimeInMillis(System.currentTimeMillis());
calToday.setFirstDayOfWeek(iFirstDayOfWeek);
if
(calSelected.getTimeInMillis()
==
0)
{
calStartDate.setTimeInMillis(System.currentTimeMillis());
calStartDate.setFirstDayOfWeek(iFirstDayOfWeek);
}
else
{
calStartDate.setTimeInMillis(calSelected.getTimeInMillis());
calStartDate.setFirstDayOfWeek(iFirstDayOfWeek);
}
return
calStartDate;
}
public
class
TitleGridAdapter
extends
BaseAdapter
{
int[]
titles
=
new
int[]
{
R.string.Sun,R.string.Mon,R.string.Tue,R.string.Wed,R.string.Thu,R.string.Fri,R.string.Sat
};
private
Activity
activity;
//
construct
public
TitleGridAdapter(Activity
a)
{
activity
=
a;
}
@Override
public
int
getCount()
{
return
titles.length;
}
@Override
public
Object
getItem(int
position)
{
return
titles[position];
}
@Override
public
long
getItemId(int
position)
{
return
position;
}
@Override
public
View
getView(int
position,View
convertView,ViewGroup
parent)
{
LinearLayout
iv
=
new
LinearLayout(activity);
TextView
txtDay
=
new
TextView(activity);
txtDay.setFocusable(false);
txtDay.setBackgroundColor(Color.TRANSPARENT);
iv.setOrientation(1);
txtDay.setGravity(Gravity.CENTER);
LinearLayout.LayoutParams
lp
=
new
LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
int
i
=
(Integer)
getItem(position);
txtDay.setTextColor(Color.WHITE);
Resources
res
=
getResources();
if
(i
==
R.string.Sat)
{
//
周六
txtDay.setBackgroundColor(res.getColor(R.color.title_text_6));
}
else
if
(i
==
R.string.Sun)
{
//
周日
txtDay.setBackgroundColor(res.getColor(R.color.title_text_7));
}
else
{
}
txtDay.setText((Integer)
getItem(position));
iv.addView(txtDay,lp);
return
iv;
}
}
}
3.4
启动和运行
当你点击运行程序是的加载代码
TextView
txtDay
=
new
TextView(activity);//
日期
txtDay.setGravity(Gravity.CENTER_HORIZONTAL);
//
判断是否是当前月
if
(iMonth
==
iMonthViewCurrentMonth)
{
txtToDay.setTextColor(resources.getColor(R.color.ToDayText));
txtDay.setTextColor(resources.getColor(R.color.Text));
}
else
{
txtDay.setTextColor(resources.getColor(R.color.noMonth));
txtToDay.setTextColor(resources.getColor(R.color.noMonth));
}
int
day
=
myDate.getDate();
//
日期
txtDay.setText(String.valueOf(day));
txtDay.setId(position
+
500);
iv.setTag(myDate);
LinearLayout.LayoutParams
lp
=
new
LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
iv.addView(txtDay,lp);
LinearLayout.LayoutParams
lp1
=
new
LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
iv.addView(txtToDay,lp1);
//
日期结束
4
运行结果
4.1
系统启动
进入系统后,系统加载如图4.1。
图4.1
系统初始化
4.2
进入日历
进入日历主界面(可滑动进行翻页查看其他日期点击添加备注等功能),如图4.2
图4.2
主界面
4.4
退出应用
单击MENU键,退出应用。如图4.3。
图4.3
退出App
5
结论
日历是一款经典的小应用它既有简单易学的特性,而且界面美观;2007年11月5日,互联网巨头Google宣布依靠android系统进军手机操作系统领域后,几年来android一路高歌,拥有越来越多的用户群体,为顺应时代潮流,本次创新实践周的题目是一款能够在android手机上运行的小应用。
通过这次课程设计,我学到了很多新的知识,同时也锻炼了我的综合运用所学的知识,解决问题的能力,也提高我查阅文献资料、对程序整体的把握等其他能力与水平。在课程设计过程中,在小组成员的讨论中,不断地对源程序进行改进与完善,修改了以往扫雷程序的界面,界面更加漂亮。并且在编写的过程中,各种组件的运用,各种算法的应用,各种控件的利用我都是随着课程设计的不断深入而不断熟悉并逐步掌握的。
总而言之,在创新实践周中,我对android平台和游戏开发等领域都有了一定的了解。其中所学到的知识,将成为我今后学习工作当中的监视基础。希望以后还会有这种锻炼自己的实践机会。
参考文献
[1]
景保玉.2010中国移动应用开发现状与趋势大调查.2011年01月12日:10~23
[2]
Michael
J.Young.
轻松搞定XML.林嘉胜译.
清华大学出版社,2001年01月08日:12~58
[3](英)Herbert
Schildt
Java参考大全(J2SE
5
Edition).清华大学出版社.2010年:1~58
[4]
Mark
L.Murphy.Android开发入门教程.人民邮电出版社,2010年12月:1~20
[5]
郭宏志.Android
应用开发详解[M].北京:电子工业出版社.2010-10-2
[6]
余志龙.Google
Android
SDK
开发范例大全[M].北京:人民邮电出版社.2009-7-1
[7]
靳岩,姚尚朗.Google
Android
开发入门与实战[M].北京:人民邮电出版社.2009-7-1
篇3:软件开发项目计划
软件开发项目计划 本文关键词:开发项目,计划,软件
软件开发项目计划 本文简介:XXXXXXX系统软件开发项目计划SoftwareDevelopmentProjectPlanVersion:1.0编制人:审核人:批准人:密级(Security):机密作者:xxxxXxxxxxx公司日期:xxxx-xx-xx文档信息标题作者版本创建日期最后一次修订日期组织文档修订历史纪录日期版本
软件开发项目计划 本文内容:
XXXXXXX系统
软件开发项目计划
Software
Development
Project
Plan
Version:
1.0
编制人:
审核人:
批准人:
密级(Security):机密
作者:xxxx
Xxxxxxx公司
日期:xxxx-xx-xx
文档信息
标题
作者
版本
创建日期
最后一次修订日期
组织
文档修订历史纪录
日期
版本
摘要
作者
1.0
目录
1.文档简介5
1.1.目的5
1.2.项目简介5
1.2.1.项目名称5
1.2.2.产品标识5
1.3.范围5
1.4.缩略语与首字母缩写5
1.5.参考6
2.项目概述6
2.1.项目的目的和目标6
2.2.假设与依赖6
2.3.项目的可交付工件6
2.4.项目生命周期6
3.项目组织6
3.1.组织结构6
3.2.角色与职责6
3.3.对外联系计划7
3.3.1.组织接口管理7
4.管理流程7
4.1.项目估算7
项目计划7
4.1.1.阶段计划7
4.1.2.项目时间表7
4.1.3.项目资源分配8
4.1.4.阶段详细计划8
4.2.项目监控9
4.2.1.需求管理计划9
4.2.2.进度控制计划9
4.2.3.报告计划9
4.2.4.测试计划9
4.2.5.风险管理计划10
4.2.6.项目结束管理计划10
4.2.7.项目范围10
软件开发项目计划
1.
文档简介
本项目计划制定软件工程和管理软件项目的合理计划,建立对本项目实际进展的可视性,以在项目执行显著偏离软件计划时采取有效的措施。
1.1.
目的
编写项目开发计划,主要是为了项目能按照计划执行,并做为项目执行的监控标准,降低项目风险,提高项目管理质量,顺利的完成此项目。
1.2.
项目简介
1.2.1.
项目名称
项目编号:
项目名称:
研发代号:
1.2.2.
产品标识
项目名称:
项目缩写:
版本号:
1.3.
范围
1.4.
缩略语与首字母缩写
缩写、术语
解
释
RSS
也叫聚合RSS是在线共享内容的一种简易方式(也叫聚合内容,Really
Simple
Syndication)。通常在时效性比较强的内容上使用RSS订阅能更快速获取信息,网站提供RSS输
出,有利于让用户获取网站内容的最新更新
1.5.
参考
文档
作者
2.
项目概述
2.1.
项目的目的和目标
?
2.2.
假设与依赖
技术限制:
时间限制:
2.3.
项目的可交付工件
工件名称
说明
格式或者载体
预定交付日期
安装光盘
word
word
Word
2.4.
项目生命周期
3.
项目组织
3.1.
组织结构
3.2.
角色与职责
角色
参与者
职责
项目经理
xxx
负责定义项目,开发项目计划,收集项目数据,跟踪监控项目,管理项目风险。
需求
xxx
负责系统需求调研,分析编写规格说明书
系统设计
xxx
系统建模、数据库设计
编码
xxx
程序代码编写以即负责对应模块的集成
美工
xxx
测试人员
xxx
系统功能测试。
技术研发
xxx
项目所需使用的新技术调研
3.3.
对外联系计划
3.3.1.
组织接口管理
接口类型
内部人员
外部人员
联系方式
需求接口
xx
xxx
技术接口
xxx
验收接口
xxx
计划确认
4.
管理流程
4.1.
项目估算
项目计划
4.1.1.
阶段计划
阶段
周期
里程碑
需求阶段
xxxxx-xxxx
在到达本阶段结束时会产生本项目的第一个里程碑――需求阶段里程碑,里程碑到达有如下标志:
1.《用户需求规格说明书》已被开发并得到客户确认;
设计阶段
xxx
在到达本阶段结束时会产生本项目的第二个里程碑――构架阶段里程碑,里程碑到达有如下标志:
1.数据库设计已被开发并通过评审;
2.系统技术解决方案已得到确定;
3.产品和产品组件的设计已得到验证;
完成系统中ABC三个级功能,并部署
在到达本阶段结束时会产生本项目的第三个里程碑――编码阶段里程碑,里程碑到达有如下标志:
1.系统ABC三级功能已经实现并且通过测试;
2.用户支持文档已被开发并通过测试;
功能全部实现并部署
在到达本阶段结束时会产生本项目的第四个里程碑――部署阶段里程碑,里程碑到达有如下标志:
1.产品已被部署到目标组织并且得到客户验收;
4.1.2.
项目时间表
XXXXX项目计划.mpp
4.1.3.
项目资源分配
4.1.3.1.
人员配备计划
阶段
人员
要求技能
类型
数量
需求阶段
需求分析员
2
三年以上项目需求分析的经验
设计阶段
系统分析员
3
两年以上系统分析设计的经验
实现阶段
程序员
3
两年使用J2EE的经验
测试员
3
两年以上测试的经验
部署、验收阶段
实施员、程序员
2
熟悉linux和windows下apache的配置
4.1.3.2.
资源获取计划
阶段
人员
资源获取
类型
数量
需求阶段
需求分析员
2
组织内抽调
设计阶段
系统分析员
3
组织内抽调
实现阶段
程序员
3
组织内抽调
测试员
3
从质量管理部抽调
部署、验收阶段
实施人员、程序员
2
组织内抽调、编码人员兼任
4.1.4.
阶段详细计划
4.1.4.1.
需求开发阶段
阶段目标:
获取更详细的用户需求,完成《需求规格说明书》的编制和评审。
资源配给:
调配需求分析员2名
进度计划:
参见《xxxxxx需求调研计划》
4.1.4.2.
设计阶段
阶段目标:
完成概要设计和详细设计,完成设计评审。
资源配给:
设计人员两名
进度计划:
参见《xxxx项目计划.MPP》
4.1.4.3.
实现阶段
阶段目标:
产品已经实现并且通过测试;用户支持文档已被开发并通过测试
资源配给:
程序员,高级程序员共3名、测试员2名
进度计划:
参见《xxxx项目计划.MPP》
4.1.4.4.
部署、验收阶段
阶段目标:
完成项目验收
资源配给:
实施人员1名、程序员1名
进度计划:
参见《xxxx项目计划.MPP》
4.2.
项目监控
4.2.1.
需求管理计划
4.2.2.
进度控制计划
每天检查工作任务的百分比,记录在项目跟踪表中,每周五下午举行项目周例会,检查项目成员的项目周报。
工作量偏差
处理办法
-0.3~-0.1
不做处理
-0.5~-0.3
需要增加工时
-0.7~-0.5
需要增加资源
-1~-0.7
需要调整周计划
平均工作量偏差
处理办法
-1~-0.7
需求上报高层修改里程碑
4.2.3.
报告计划
内部报告
报告频率
项目周报
每周
项目月报
周月
项目阶段报告
里程碑处
外部报告
报告频率
项目进度报告
每周
4.2.4.
测试计划
参见:《XXXXX项目计划.MPP》
4.2.5.
风险管理计划
4.2.6.
项目结束管理计划
项目状态
资源处理
结项
人员释放回组织;
项目文档归档存入组织财富数据库;
中止
人员释放回组织;
项目文档归档存入组织财富数据库;
取消
人员释放回组织;
项目文档归档存入组织财富数据库;
暂停
如果在需求阶段暂停,人员释放回组织;
如果在设计阶段暂停,人员释放回组织;
如果在编码阶段暂停,保留一名开发人员在项目中,其它项目成员释放回组织;
4.2.7.
项目范围
项目范围根据需求规格说明书,该项目的范围是完成需求规格说明书的中所有模块的功能并通过用户测试评审通过。详细情况见需求规格说明书。
10