安卓记事本开发报告
更新时间:2023-09-10 03:23:01 阅读量: 教育文库 文档下载
基于Android平台记事本的设计与实现
1.设计目的
记事本的基本功能就是记事,手机用户首先用到的就是文本记事,输入事务信息以文本的形式展现出来,存储起来。随着用户需求的增加,可能希望用图形来代替文本来记事,用户之间打开记事本,看到图片就能联系自己所记载的事务信息。这样免去了输入文字的麻烦,反而会更简单。又或者是文本与图片的交叉运用,可以让用户自己选择自己喜欢的记事方式,更加自由与便捷。所以此功能的意义是让简单的记事信息能以文本、图文和视频表达,更加丰富多彩。
2.设计内容
本设计的基本内容是在Android平台下,设计与实现记事本软件。具体要实现的功能是:
(1)设计实现添加“文字”,“图文”,“视频”这三个主要的功能模块。 (2)进入添加后,有“保存”,“取消”两种选择。
(3)主页面显示记事列表,点击可查看及时内容,并有“删除”,“返回”两种选择。
(4)进行测试并分析结果。
3.开发环境的安装与配置
3.1 Android开发平台搭建
本设计主要是以Eclipse为基础,安装SDK和ADT插件后,用来开发安卓项目。开发平台搭建步骤介绍如下。
(1)下载JDK并安装,安装后配置环境变量。
(2)下载Eclipse解压至指定文件夹。
(3)下载SDK后解压至指定文件夹,打开SDK目录,点击SDK Manager安装开发安卓项目需要的包。
(4)启动Eclipse,进入Help—>Install New Software—>Add,添加ADT插件。
(5)进入Window—>Android—>Browse,选择SDK安装目录。 3.2硬件环境
Android设备,如Android手机或平板电脑,主频在1Ghz及以上,内存为512MB以上,系统版本为Android2.1及以上。本设计使用Android4.4.4的手机。
3.3 软件环境
操作系统:windows10 IDE:Eclipse
Android SDK 集成环境
4.设计主体架构
4.1 src文件夹
src文件夹下com.liwenhuan.notepad包下为系统主要Activity类: NotesDB.java是进行数据储存的,通过SQLite保存数据。并且用onCreate函数创建数据库。通过设置两个按钮的监听来实现对输入文本的存储或退出。
MainActivity.java是主Activity,通过设置三个按钮的监听来实现添加文本、图文、视频的记事方式。
AddContent.java通过initView方法来判断记事的方式,实现对文本、图片、视频的添加,获取保存文件的时间。
MyAdapter.java是显示模块,通过系统提供的Bitmap在记事列表显示图片和视频的缩略图。
SelectAct.java是记事详情的显示模块,通过监听的方法来实现记事的删除功能。 4.2 gen文件夹
gen文件夹是项目自动生成的文件夹R.java是工程下各个资源的标识符负责所有资源的索引。
4.3 bin文件夹
bin文件夹是编译后的字节码存放的目录,编译的过程首先是编译成为android java虚拟机文件classes.dex,再打包成APK格式的包。 4.4 res文件夹
Res是资源目录,它包含项目中的资源文件并将其编译进应用程序中,向此目录添加资源时,会被R.java自动记录。res目录存放所有程序中用到的资源文件。“资源文件”指的资料文件、图片等。子目录有:drawable、layout、values。本设计主要用了layout目录下的布局文件。
layout是屏幕布局目录, activity_main.xml是主界面的布局文件、addcontent.xml是增加数据页面的布局文件、cell.xml是几个功能按钮的布局文件、select.xml是显示记事详情以及对记事进行操作的布局文件。
5.程序设计
5.1数据存储之SQLite
这个方法在数据保存中非常常用,只是它只会被一个程序读取数据,不能 在不同程序间共享数据。
//创建数据库
public void onCreate(SQLiteDatabase db) { db.execSQL(\ + TABLE_NAME + \ + ID + \ + CONTENT + \ + PATH + \
+ VIDEO+ \ + TIME + \NULL)\);
}
5.2 添加文字内容
当以文本方式记事时,需要对输入的文字内容进行保存。
public void initView() {
if (val.equals(\)) { // 文字
c_img.setVisibility(View.GONE);//隐藏
v_video.setVisibility(View.GONE);//隐藏 } }
public void onClick(View v) { switch (v.getId()) { case R.id.save:
addDB();//添加数据
finish();//关闭当前Activity break;
}
case R.id.delete: finish(); break; }
5.3适配器配置
public class MyAdapter extends BaseAdapter { private Context context; private Cursor cursor;
private LinearLayout layout;//视图对象
public MyAdapter(Context context, Cursor cursor) { this.context = context; this.cursor = cursor; }
@Override
public int getCount() {
return cursor.getCount();//返回长度 } @Override public Object getItem(int position) { return cursor.getPosition(); } @Override public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = LayoutInflater.from(context);//加载视图的权限 layout = (LinearLayout) inflater.inflate(R.layout.cell, null);//布局文件 TextView contenttv = (TextView)
layout.findViewById(R.id.list_content);//获取上面布局文件中的每一个内容 TextView timetv = (TextView) layout.findViewById(R.id.list_time);//查找时间 ImageView imgiv = (ImageView) layout.findViewById(R.id.list_img);//查找图片 ImageView videoiv = (ImageView) layout.findViewById(R.id.list_video);//查找视频
cursor.moveToPosition(position);//查询 String content =
cursor.getString(cursor.getColumnIndex(\));//获取具体内容 String time = cursor.getString(cursor.getColumnIndex(\));//获取时间 String url =
cursor.getString(cursor.getColumnIndex(\));//获取图片的缩略图 String urlvideo =
cursor.getString(cursor.getColumnIndex(\));//获取视频
contenttv.setText(content);//将内容传递进来
timetv.setText(time);//将时间传递进来
videoiv.setImageBitmap(getVideoThumbnail(urlvideo, 200, MediaStore.Images.Thumbnails.MICRO_KIND));//在列表显示视频imgiv.setImageBitmap(getImageThumbnail(url, 200, 200));//
200,
缩略图
在列表显示图片缩略图 return layout;
}
5.4添加图片和视频
在本设计中,不仅提供了以文本方式进行记事,还提供了以图片和视频
方式进行记事。
public void initView() {
if (val.equals(\)) {//图片
c_img.setVisibility(View.VISIBLE);//显示 v_video.setVisibility(View.GONE);//隐藏 Intent iimg = new
Intent(MediaStore.ACTION_IMAGE_CAPTURE);//跳转到系统相机 phoneFile = new
File(Environment.getExternalStorageDirectory() .getAbsoluteFile() + \ + getTime() + \);//获取SD卡绝对路径 iimg.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(phoneFile));//存储获取的图片信息
startActivityForResult(iimg, 1);//启动跳转 }
if (val.equals(\)) {
c_img.setVisibility(View.GONE);//隐藏 v_video.setVisibility(View.VISIBLE);//显示 Intent video = new
Intent(MediaStore.ACTION_VIDEO_CAPTURE);//跳转到手机系统信息 videoFile = new
File(Environment.getExternalStorageDirectory() .getAbsoluteFile() + \ + getTime() + \);//获取SD卡绝对路径 video.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(videoFile));//存储获取的video信息 }
//显示图片或视频
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
}
startActivityForResult(video, 2);//启动跳转
}
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1) {//图片 Bitmap bitmap = BitmapFactory.decodeFile(phoneFile } }
.getAbsolutePath());//获取路径
c_img.setImageBitmap(bitmap);//展示内容
if (requestCode == 2) {//视频
v_video.setVideoURI(Uri.fromFile(videoFile));//加载视频 v_video.start();//播放视频
5.5 获取图片和视频的缩略图
当我们用图片或制品进行记事时,在列表中需要显示其缩略图,可以用
系统提供的Bitmap进行处理。
//获取图片的缩略图
public Bitmap getImageThumbnail(String uri, int width, int height) { Bitmap bitmap = null; BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; bitmap = BitmapFactory.decodeFile(uri, options); options.inJustDecodeBounds = false; int beWidth = options.outWidth / width; int beHeight = options.outHeight / height; int be = 1; if (beWidth < beHeight) { be = beWidth; } else { be = beHeight; } if (be <= 0) { be = 1; } options.inSampleSize = be; bitmap = BitmapFactory.decodeFile(uri, options); bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT); return bitmap; } //获取视频的缩略图
private Bitmap getVideoThumbnail(String uri, int width, int height, int kind) { Bitmap bitmap = null; bitmap = ThumbnailUtils.createVideoThumbnail(uri, kind); bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT); return bitmap;
}
5.7详情页显示 protected void onCreate(Bundle savedInstanceState) {
0));
// TODO Auto-generated method stub super.onCreate(savedInstanceState);
setContentView(R.layout.select);//加载详情
// System.out.println(getIntent().getIntExtra(NotesDB.ID, s_delete = (Button) findViewById(R.id.s_delete); s_back = (Button) findViewById(R.id.s_back); s_img = (ImageView) findViewById(R.id.s_img);
s_video = (VideoView) findViewById(R.id.s_video); s_tv = (TextView) findViewById(R.id.s_tv); notesDB = new NotesDB(this);
dbWriter = notesDB.getWritableDatabase();//获取写权限 s_back.setOnClickListener(this); s_delete.setOnClickListener(this);
//如果图片为空,则隐藏,否则显示 if
(getIntent().getStringExtra(NotesDB.PATH).equals(\)) { s_img.setVisibility(View.GONE); } else { s_img.setVisibility(View.VISIBLE); } if
(getIntent().getStringExtra(NotesDB.VIDEO).equals(\)) { s_video.setVisibility(View.GONE); } else { s_video.setVisibility(View.VISIBLE); }
s_tv.setText(getIntent().getStringExtra(NotesDB.CONTENT));//加
载TextView的文字信息 Bitmap bitmap =
BitmapFactory.decodeFile(getIntent().getStringExtra(
NotesDB.PATH));//加载图片信息
s_img.setImageBitmap(bitmap);//显示图片信息 s_video.setVideoURI(Uri
.parse(getIntent().getStringExtra(NotesDB.VIDEO))); }
s_video.start();//播放视频
6.测试
6.1虚拟设备AVD测试
(1)主界面显示如图6.1所示。 (2)记事页面显示如图6.2所示。
图6.1 图6.2
(3)记事列表显示如图6.3所示。 (4)记事详情显示如图6.4所示。
图6.4
图6.3
6.2 真机测试
将记事本的apk文件导进手机,安装后进行测试,测试结果如下:
(1)添加好内容后,记事本的记事列表显示如图6.5所示。 (2)以文本方式添加记事,详情显示如图6.6所示。
图6.5
图6.6
(3)以图文方式添加记事,内容详情页显示如图6.7。 (4)以视频结合文字方式添加记事,内容详情页显示如图6.8。
图6.7
图6.8
7.总结
通过此次设计过程我会到了许多知识,在这个过程中遇到了许多困难,比如SDK和ADT的版本不能兼容,记事本项目可以在虚拟设备中运行,在真机上测试时却出现了问题,不能读取图片和视频,通过在网上查找资料,发现是虽然在代码中对SD卡添加了读取权限,但没有在AndroidMainfest.xml中添加对手机SD卡的读取权限,所以出现了如上的错误。通过不断的发现问题,总结问题和解决问题的过程,使我对Android的认识不断的提高,得到了宝贵的经验。
代码:
MainActivity.java
package com.liwenhuan.notepad;
//采用接口方式
public class MainActivity extends Activity implements OnClickListener {
private Button textbtn, imgbtn, videobtn;//声明三个button private ListView lv; //创建listview private Intent i;//通过intent来创建标识 private MyAdapter adapter;
private NotesDB notesDB;//数据库对象
private SQLiteDatabase dbReader;//获取读取权限 private Cursor cursor; @Override
protected void onCreate(Bundle savedInstanceState) { } //初始化
public void initView() {
lv = (ListView) findViewById(R.id.list);//找id操作 textbtn = (Button) findViewById(R.id.text);//找文字 imgbtn = (Button) findViewById(R.id.img);//找图片 videobtn = (Button) findViewById(R.id.video);//找视频 textbtn.setOnClickListener(this); //添加监听事件 imgbtn.setOnClickListener(this); videobtn.setOnClickListener(this);
notesDB = new NotesDB(this);//数据库实例化 super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView();//调用初始化方法
dbReader = notesDB.getReadableDatabase();//获取读取权限 //获取记事详情
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view,
int position, long id) {
cursor.moveToPosition(position);
Intent i = new Intent(MainActivity.this, SelectAct.class);
i.putExtra(NotesDB.ID, cursor.getInt(cursor.getColumnIndex(NotesDB.ID)));//获取ID
i.putExtra(NotesDB.CONTENT, cursor.getString(cursor .getColumnIndex(NotesDB.CONTENT)));//获取内容
i.putExtra(NotesDB.TIME,
cursor.getString(cursor.getColumnIndex(NotesDB.TIME)));//获取时间
i.putExtra(NotesDB.PATH, cursor.getString(cursor.getColumnIndex(NotesDB.PATH)));//获取图片
i.putExtra(NotesDB.VIDEO,
cursor.getString(cursor.getColumnIndex(NotesDB.VIDEO)));//获取视频 }
//添加一个复写方法 @Override
public void onClick(View v) {
i = new Intent(this, AddContent.class);//实例化操作 switch (v.getId()) { case R.id.text:
i.putExtra(\
startActivity(i);//跳转至AddContent.java
});
}
startActivity(i);//跳转到详情页
}
}
break;
case R.id.img:
i.putExtra(\startActivity(i); break;
case R.id.video: }
i.putExtra(\startActivity(i); break;
public void selectDB() { } @Override
protected void onResume() { }
super.onResume(); selectDB();
cursor = dbReader.query(NotesDB.TABLE_NAME, null, null, null, null,
null, null);
adapter = new MyAdapter(this, cursor); lv.setAdapter(adapter);
NotesDB.java
package com.liwenhuan.notepad;
public class NotesDB extends SQLiteOpenHelper {
public static final String TABLE_NAME = \指定名称 public static final String CONTENT = \内容 public static final String PATH = \图片
public static final String VIDEO = \视频 public static final String ID = \创建id
public static final String TIME = \当前保存文本的时间 //复写一个构造方法
public NotesDB(Context context) { } @Override //创建数据库
public void onCreate(SQLiteDatabase db) {
//创建
db.execSQL(\
+ \
super(context, \null, 1);//super返回值(context,库名,null,版本号)
CONTENT VIDEO }
}
+ \
+ \
@Override
//更新数据库,当前需求,不需要更新
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
AddContent.java
package com.liwenhuan.notepad;
public class AddContent extends Activity implements OnClickListener {
private String val;//用于接收MainActivity中的跳转的定义 private Button savebtn, deletebtn; private EditText ettext;
private ImageView c_img;
private VideoView v_video;//用来播放视频 private NotesDB notesDB;//创建数据库对象 private SQLiteDatabase dbWriter; private File phoneFile, videoFile; @Override
protected void onCreate(Bundle savedInstanceState) { }
//判断是否显示 public void initView() {
if (val.equals(\文字 }
if (val.equals(\图片
c_img.setVisibility(View.GONE);//隐藏 v_video.setVisibility(View.GONE);//隐藏
super.onCreate(savedInstanceState);
setContentView(R.layout.addcontent);//绑定视图 val = getIntent().getStringExtra(\接收完成 savebtn = (Button) findViewById(R.id.save);//寻找id deletebtn = (Button) findViewById(R.id.delete); ettext = (EditText) findViewById(R.id.ettext); c_img = (ImageView) findViewById(R.id.c_img); v_video = (VideoView) findViewById(R.id.c_video); savebtn.setOnClickListener(this);//监听事件 deletebtn.setOnClickListener(this); notesDB = new NotesDB(this);//实例化 dbWriter = notesDB.getWritableDatabase(); initView();
c_img.setVisibility(View.VISIBLE);//显示 v_video.setVisibility(View.GONE);//隐藏
Intent iimg = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//
跳转到系统相机
phoneFile = new File(Environment.getExternalStorageDirectory()
.getAbsoluteFile() + \获取SD卡绝对路径,照片储存在SD卡中,数据库中只存储路径
iimg.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(phoneFile));//存储获取的图片信息
}
if (val.equals(\
c_img.setVisibility(View.GONE);//隐藏 v_video.setVisibility(View.VISIBLE);//显示
Intent video = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);//startActivityForResult(iimg, 1);//启动跳转
跳转到手机系统信息
videoFile = new File(Environment.getExternalStorageDirectory()
.getAbsoluteFile() + \获取
SD卡绝对路径
video.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(videoFile));//存储获取的video信息
} @Override
public void onClick(View v) {
switch (v.getId()) { case R.id.save:
addDB();//添加数据 finish();//关闭当前Activity break;
}
startActivityForResult(video, 2);//启动跳转
}
case R.id.delete: }
finish(); break;
//添加数据
public void addDB() {
ContentValues cv = new ContentValues();//实例化
cv.put(NotesDB.CONTENT, ettext.getText().toString());//添加内容(在输入框中获取到的)
cv.put(NotesDB.TIME, getTime());//调用方法获取时间并添加
cv.put(NotesDB.PATH, phoneFile + \将获取的图片信息插入数据库中 cv.put(NotesDB.VIDEO, videoFile + \将获取的vedio信息插入数据库中 dbWriter.insert(NotesDB.TABLE_NAME, null, cv);//将上面添加的数据插入
数据库中
}
//获取保存文件时的时间 private String getTime() {
SimpleDateFormat format = new SimpleDateFormat(\年MM月dd日
HH:mm:ss\
}
Date curDate = new Date();
String str = format.format(curDate);//按指定的格式获取时间 return str;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1) {//图片
Bitmap bitmap = BitmapFactory.decodeFile(phoneFile
}
}
}
.getAbsolutePath());//获取路径
c_img.setImageBitmap(bitmap);//展示内容
if (requestCode == 2) {//视频 }
v_video.setVideoURI(Uri.fromFile(videoFile));//加载视频 v_video.start();//播放视频
MyAdapter.java
package com.liwenhuan.notepad;
public class MyAdapter extends BaseAdapter {
private Context context; private Cursor cursor;
private LinearLayout layout;//视图对象 //构造方法
public MyAdapter(Context context, Cursor cursor) { } @Override
public int getCount() { } @Override
public Object getItem(int position) { } @Override
return cursor.getPosition(); return cursor.getCount();//返回长度 this.context = context; this.cursor = cursor;
public long getItemId(int position) { }
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(context);//加载试图的权限 layout = (LinearLayout) inflater.inflate(R.layout.cell, null);//布局文件 // TODO Auto-generated method stub return position;
TextView contenttv = (TextView) layout.findViewById(R.id.list_content);//获取上条布局文件中的每一个内容 片 视频
TextView timetv = (TextView) layout.findViewById(R.id.list_time);//显示时间 ImageView imgiv = (ImageView) layout.findViewById(R.id.list_img);//显示图
ImageView videoiv = (ImageView) layout.findViewById(R.id.list_video);//显示
cursor.moveToPosition(position);//查询
String content = cursor.getString(cursor.getColumnIndex(\承载查询到的具体内容 图
String time = cursor.getString(cursor.getColumnIndex(\获取时间 String url = cursor.getString(cursor.getColumnIndex(\获取图片的缩略
String urlvideo = cursor.getString(cursor.getColumnIndex(\获取视频 contenttv.setText(content);//将内容传递进来 timetv.setText(time);//将时间传递进来
videoiv.setImageBitmap(getVideoThumbnail(urlvideo, 200, 200,
MediaStore.Images.Thumbnails.MICRO_KIND));//在列表显
示视频缩略图
imgiv.setImageBitmap(getImageThumbnail(url, 200, 200));//在列表显示图片缩
略图
}
return layout;
//获取图片的缩略图
public Bitmap getImageThumbnail(String uri, int width, int height) { }
//获取视频的缩略图
private Bitmap getVideoThumbnail(String uri, int width, int height, int kind) {
Bitmap bitmap = null;
bitmap = ThumbnailUtils.createVideoThumbnail(uri, kind); bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, Bitmap bitmap = null;
BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true;
bitmap = BitmapFactory.decodeFile(uri, options); options.inJustDecodeBounds = false; int beWidth = options.outWidth / width; int beHeight = options.outHeight / height; int be = 1;
if (beWidth < beHeight) { } else { }
if (be <= 0) { }
options.inSampleSize = be;
bitmap = BitmapFactory.decodeFile(uri, options);
bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,
ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
be = 1; be = beHeight; be = beWidth;
return bitmap;
}
}
ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
return bitmap;
SelectAct.java
package com.liwenhuan.notepad;
public class SelectAct extends Activity implements OnClickListener {
private Button s_delete, s_back; private ImageView s_img; private VideoView s_video; private TextView s_tv; private NotesDB notesDB;
private SQLiteDatabase dbWriter;//获取写权限 @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.select);//加载详情 s_delete = (Button) findViewById(R.id.s_delete); s_back = (Button) findViewById(R.id.s_back); s_img = (ImageView) findViewById(R.id.s_img); s_video = (VideoView) findViewById(R.id.s_video); s_tv = (TextView) findViewById(R.id.s_tv); notesDB = new NotesDB(this);
dbWriter = notesDB.getWritableDatabase();//获取写权限 s_back.setOnClickListener(this); s_delete.setOnClickListener(this); //如果图片为空,则隐藏,否则显示
if (getIntent().getStringExtra(NotesDB.PATH).equals(\
} else { }
s_img.setVisibility(View.GONE);
s_img.setVisibility(View.VISIBLE);
if (getIntent().getStringExtra(NotesDB.VIDEO).equals(\ } else { }
s_tv.setText(getIntent().getStringExtra(NotesDB.CONTENT));//加载TextView
s_video.setVisibility(View.VISIBLE); s_video.setVisibility(View.GONE);
的文字信息
}
Bitmap bitmap = BitmapFactory.decodeFile(getIntent().getStringExtra(
NotesDB.PATH));//加载图片信息
s_img.setImageBitmap(bitmap);//显示图片信息 s_video.setVideoURI(Uri
.parse(getIntent().getStringExtra(NotesDB.VIDEO)));
s_video.start();//播放视频
@Override
public void onClick(View v) {
switch (v.getId()) { case R.id.s_delete:
deleteDate();//删除
finish();//删除后页面不存在,直接关闭 break;
case R.id.s_back: }
finish(); break;
}
}
//删除记事
public void deleteDate() { }
dbWriter.delete(NotesDB.TABLE_NAME,
\
正在阅读:
安卓记事本开发报告09-10
我就是我小学作文06-15
推荐下载 整合高中政治必修一经济生活:第四单元 发展社会主义市03-29
英国政府机构改革研究10-08
街边“臭豆腐”用化学添加剂制成06-13
市医疗保障局最新半年工作总结及2022年工作规划范本04-04
生词和短语05-23
2022-2022年初中语文苏教版《九年级下》《第五单元(学会读书十一04-15
热释电报警器设计 - 图文06-17
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 安卓
- 记事本
- 报告
- 开发
- 课题 - 超市公共场所卫生设施清单
- 工作报告之妇联工作调研报告
- 水力计算课程设计说明书(长江大学水文专业,祁斌乾) - 图文
- 主题四:健康宝宝真能干
- 甲级单位编制水产优质预混料项目可行性报告(立项可研+贷款+用地+2013案例)设计方案 - 图文
- GRE VPN,IPSEC VPN,IPSEC GRE VPN 配置
- 副车架设计说明书
- 画民间玩具
- 审计失败的原因及分析论文
- 贵州省高中信息技术学业水平考试大纲
- 河南省气候的基本特征
- 剔除异常值的方法
- 大学语文B2
- 广东省系统集成商名录2018版3973家 - 图文
- K12推荐学习2019届高考地理一轮复习 课时提升作业四十 13.2 中国地理分区 新人教版
- 决策管理系统
- 半导体器件基础总复习
- 六年级11册语文A版教案
- 工程力学试题集
- 山东省淄博市张店区2018届九年级物理第一次模拟考试试题