源码放到GitHub上了,大家可以看一下 https://github.com/become-better1/hh

1.系统需求分析
1.1 系统功能及框图
该项目实现了备忘录的创建,修改,删除,查询,对备忘录数目的统计和软件的说明。
1.2 系统需求
功能 说明
备忘录的创建 主键自动生成,将控件中的数据对Word字段进行赋值
备忘录的修改 将控件中的数据对Word字段进行赋值,查询条件是与原先的Word字段相等
备忘录的查询 对Word字段进行查询,查询条件是与控件中的数据相等
备忘录的删除 按照Word字段进行删除,查询条件是与控件中的数据相等
备忘录数目的统计 通过SharedPrefenrences来存储和读取数据
软件的说明 进一步的描述

1.3 该项目涉及到的技术点
界面控件:TextView,EditText,Button,ImageButton,ListView,View
布局:线性布局
事件:监听事件
数据存储:SharedPrefenrences,SQLite存储
Activity和Intent
2.数据存储设计
2.1 SharedPrefenrences/文件存储/SQLite存储介绍
SharedPrefenrences :
SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedPereferences中;当Activity重载,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出。
SharedPreferences提供了java常规的Long、Int、String等类型数据的保存接口。 [SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问。
提示最终是以xml方式来保存,整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少,如果真的存储量不大可以考虑自己定义文件格式。xml处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用比较好。
文件存储
文件存储是Android中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件当中,因而它比较适合用于存储一些简单的文本数据或者二进制数据。如果你想使用文件存储的方式来保存一些较为复杂的文本数据,就需要定义一套自己的格式规范以方便将数据从文件中重新解析出来。
Context类中提供了一个openFileOutput()方法,可以用于将数据存储到指定的文件中。这个方法有两个参数,第一个参数是文件名,在文件创建的时候使用的就是这个名称,(文件的位置是默认 存储到/data/data/packagename/files/目录下的)第二个参数就是文件的操作模式,主要有两种模式可选:MODE_PRIVATE和 MODE_APPEND,其中MODE_PRIVATE是默认的操作模式,表示当指定文件已存在,所写入的内容将会覆盖源文件中的内容,而MODE_APPEND则表示如果该文件已存在,就往文件里追加内容,不存在就创建新文件

SQLite存储
①SQLite是一个轻量级的关系型数据库,运算速度快,占用资源少,很适合在移动设备上使用, 不仅支持标准SQL语法,还遵循ACID(数据库事务)原则,无需账号,使用起来非常方便!
②但是在很多情况下, 文件并不一定是有效的,如多线程并发访问是相关的;app要处理可能变化的复杂数据结构等等! 比如银行的存钱与取钱!使用前两者就会显得很无力或者繁琐,数据库的出现可以解决这种问题, 而Android又给我们提供了这样一个轻量级的SQLite,为何不用?
③SQLite支持五种数据类型:NULL,INTEGER,REAL(浮点数),TEXT(字符串文本)和BLOB(二进制对象) 虽然只有五种,但是对于varchar,char等其他数据类型都是可以保存的;因为SQLite有个最大的特点:你可以各种数据类型的数据保存到任何字段中而不用关心字段声明的数据类型是什么,比如你 可以在Integer类型的字段中存放字符串,当然除了声明为主键INTEGER PRIMARY KEY的字段只能够存储64位整数! 另外, SQLite 在解析CREATE TABLE 语句时, 会忽略 CREATE TABLE 语句中跟在字段名后面的数据类型信息如下面语句会忽略 name字段的类型信息:CREATE TABLE person (personid integer primary key autoincrement, name varchar(20))

2.2数据表结构
给出使用的数据库的逻辑结构,需要说明各字段属性及含义

Id:作为主键,自带生成
Word:进行存储备忘录的信息
SharedPrefenrences代码


```java
SharedPreferences sharedP=getSharedPreferences("SaveTable",MODE_PRIVATE);
SharedPreferences.Editor editor=sharedP.edit();
int num=sharedP.getInt("number", 0);
num++;
editor.putInt("number", num);
editor.commit();

数据库封装代码:```java
package com.example.coursedesign;import java.util.ArrayList;
import java.util.List;import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;public class DBOpenHelper extends SQLiteOpenHelper {final String CREATE_TABLE_SQL="create table myTable(_id integer primary key autoincrement,word text)";public static final String name = "myDb";public static final String table_name = "myTable";public DBOpenHelper( Context context, String name,  SQLiteDatabase.CursorFactory factory, int version) {super(context, name, null, version);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL(CREATE_TABLE_SQL);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {Log.i("生活小助手","--版本更新"+oldVersion+"-->"+newVersion);}public List<String> readAll () {List<String> allCommodities = new ArrayList<String>();SQLiteDatabase db = this.getWritableDatabase();Cursor cursor = db.rawQuery("select * from myTable order by _id",null);if(cursor.moveToFirst()) {do {String title = cursor.getString(cursor.getColumnIndex("word"));allCommodities.add(title);}while (cursor.moveToNext());}cursor.close();return allCommodities;}public boolean addMyCollection(String s) {SQLiteDatabase db = this.getWritableDatabase();ContentValues values = new ContentValues();values.put("word",s);db.insert(table_name,null,values);values.clear();return true;}public void delete(String word) {SQLiteDatabase db = this.getWritableDatabase();if(db.isOpen()) {db.delete(table_name,"word=?",new String[]{word+""});db.close();}}public boolean update (String word,String wordP) {SQLiteDatabase db = this.getWritableDatabase();String sql = "update  myTable set word=? where word=?";String[] obj = new String[]{word,wordP};db.execSQL(sql,obj);return true;}
}

3.具体编码及截图
3.1 主界面
通过listView来显示所有的备忘录,界面含有主页,刷新,添加,个人中心的功能。

界面代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="@drawable/blue"tools:context="com.example.coursedesign.MainActivity" ><ListViewandroid:id="@+id/main_list"android:layout_width="match_parent"android:layout_height="370dp"android:layout_marginTop="4dp"android:layout_weight="1.19" /><Viewandroid:id="@+id/view1"android:layout_width="match_parent"android:layout_height="2dp"android:layout_marginTop="50dp"android:background="@drawable/green" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><ImageButtonandroid:id="@+id/ib_home_page"android:layout_width="58dp"android:layout_height="55dp"android:src="@drawable/home" /><Viewandroid:id="@+id/view2"android:layout_width="2dp"android:layout_height="55dp"android:background="@drawable/green" /><ImageButtonandroid:id="@+id/ib_add_product"android:layout_width="58dp"android:layout_height="55dp"android:src="@drawable/add" /><Viewandroid:id="@+id/view3"android:layout_width="2dp"android:layout_height="55dp"android:background="@drawable/green" /><ImageButtonandroid:id="@+id/refresh"android:layout_width="58dp"android:layout_height="55dp"android:src="@drawable/refresh" /><Viewandroid:id="@+id/view4"android:layout_width="2dp"android:layout_height="55dp"android:background="@drawable/green" /><ImageButtonandroid:id="@+id/ib_personal_center"android:layout_width="50dp"android:layout_height="55dp"android:layout_weight="0.84"android:src="@drawable/person" /></LinearLayout></LinearLayout>

后台代码:

package com.example.coursedesign;import java.util.ArrayList;
import java.util.List;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.Toast;public class MainActivity extends Activity {ImageButton buttonRefresh;ImageButton  buttonAdd;ImageButton buttonHome;ImageButton buttonPerson;DBOpenHelper dbHelper;List<String> listString=new ArrayList<String>();ListView listview;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);dbHelper = new  DBOpenHelper(getApplicationContext(),DBOpenHelper.name , null, 1);buttonRefresh=(ImageButton) findViewById(R.id.refresh);//刷新listview=(ListView) findViewById( R.id.main_list);buttonRefresh.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {listString = dbHelper.readAllCommodities();ArrayAdapter<String> adapter=new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,listString);listview.setAdapter(adapter);}});listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {///List@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {String s = (String) listview.getAdapter().getItem(position);Bundle bundle1 = new Bundle();bundle1.putInt("position",position);bundle1.putString("title",s);Intent intent = new Intent(MainActivity.this, ListViewActivity.class);intent.putExtras(bundle1);startActivity(intent);}});buttonAdd=(ImageButton) findViewById(R.id.ib_add_product);//AddbuttonAdd.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, AddActivity.class);startActivity(intent);}});buttonHome=(ImageButton) findViewById(R.id.ib_home_page);//homebuttonHome.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(getApplicationContext(), "已在主页", Toast.LENGTH_SHORT).show();}});buttonPerson=(ImageButton) findViewById(R.id.ib_personal_center);///personbuttonPerson.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, PersonActivity.class);startActivity(intent);Toast.makeText(getApplicationContext(), "进入个人中心", Toast.LENGTH_SHORT).show();}});}}

3.2 各功能模块
添加备忘录:
界面
通过SQLite数据实现对备忘录的添加。

界面代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="@drawable/blue"tools:context="com.example.coursedesign.AddActivity" ><Viewandroid:layout_width="match_parent"android:layout_height="50dp" /><EditTextandroid:id="@+id/add_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入添加的信息" /><Viewandroid:layout_width="match_parent"android:layout_height="120dp" /><Button android:id="@+id/add_button"android:layout_gravity="center_horizontal"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="提交"/></LinearLayout>

后台代码:

package com.example.coursedesign;import android.app.Activity;
import android.app.backup.SharedPreferencesBackupHelper;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;public class AddActivity extends Activity {Button button;EditText editText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_add);button=(Button) findViewById(R.id.add_button);editText=(EditText) findViewById(R.id.add_text);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String s=editText.getText().toString();DBOpenHelper dbHelper = new DBOpenHelper(getApplicationContext(), DBOpenHelper.name, null, 1);if(s!=null){if(dbHelper.addMyCollection(s)){Toast.makeText(getApplicationContext(), "添加成功", Toast.LENGTH_SHORT).show();SharedPreferences sharedP=getSharedPreferences("SaveTable",MODE_PRIVATE);SharedPreferences.Editor editor=sharedP.edit();int num=sharedP.getInt("number", 0);num++;editor.putInt("number", num);editor.commit();finish();}else{Toast.makeText(getApplicationContext(), "添加失败", Toast.LENGTH_SHORT).show();}}}});}}

删除和修改备忘录:
通过SQLite数据实现对备忘录的修改和删除。

界面:

界面代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="@drawable/blue"tools:context="com.example.coursedesign.ListViewActivity" ><EditTextandroid:id="@+id/listView_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="你好"/><Viewandroid:layout_width="match_parent"android:layout_height="120dp" /><LinearLayout android:layout_width="match_parent"android:layout_height="match_parent"android:layout_gravity="center_horizontal"><Viewandroid:layout_width="20dp"android:layout_height="wrap_content" /><Button android:id="@+id/listView_updata"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="修改"/><Viewandroid:layout_width="90dp"android:layout_height="wrap_content" /><Button android:id="@+id/listView_delete"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="删除"/></LinearLayout></LinearLayout>

后台代码:

package com.example.coursedesign;import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;public class ListViewActivity extends Activity {EditText text;Button button_up;Button button_delete;int position;String str;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_list_view);text=(EditText) findViewById(R.id.listView_text);button_delete=(Button) findViewById(R.id.listView_delete);button_up=(Button) findViewById(R.id.listView_updata);Bundle b = getIntent().getExtras();if( b != null) {str=b.getString("title");//Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();text.setText(str.toCharArray(), 0, str.length());position = b.getInt("position");}button_delete.setOnClickListener(new View.OnClickListener() {//delete@Overridepublic void onClick(View v) {DBOpenHelper dbHelper = new DBOpenHelper(getApplicationContext(), DBOpenHelper.name, null, 1);dbHelper.deleteMyCollection(str);Toast.makeText(getApplicationContext(), "删除成功", Toast.LENGTH_SHORT).show();finish();}});button_up.setOnClickListener(new View.OnClickListener() {//delete@Overridepublic void onClick(View v) {String wordNew="";wordNew=text.getText().toString();DBOpenHelper dbHelper = new DBOpenHelper(getApplicationContext(), DBOpenHelper.name, null, 1);if(dbHelper.updateUser(wordNew, str)){Toast.makeText(getApplicationContext(), "更新成功", Toast.LENGTH_SHORT).show();finish();}}});}}

进入页面:
通过使用Intent进行Activity的启动。
界面:

界面代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="@drawable/note2"tools:context="com.example.coursedesign.FirstActivity" ><View   android:layout_width="150dp"android:layout_height="79dp"/><TextView android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="欢迎来到生活小助手"android:layout_gravity="center_horizontal"android:textColor="#68EE68"android:textSize="24dp"android:textStyle="bold"/><View   android:layout_width="150dp"android:layout_height="79dp"/><Buttonandroid:id="@+id/Loading"android:layout_width="70dp"android:layout_height="40dp"android:background="@drawable/green1"android:text="进入"android:layout_gravity="center_horizontal"android:textColor="#F24FFF"android:textSize="30dp"android:textStyle="bold"tools:ignore="MissingConstraints" /></LinearLayout>

后台代码:

package com.example.coursedesign;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;public class FirstActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_first);Button button=(Button) findViewById(R.id.Loading);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(FirstActivity.this, MainActivity.class);startActivity(intent);}});}}

个人中心
备忘录数量的统计以及软件的说明
界面:

界面代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="@drawable/blue"tools:context="com.example.coursedesign.PersonActivity" ><TextViewandroid:layout_width="match_parent"android:layout_height="30dp"android:background="@drawable/green1"android:gravity="center_horizontal"android:text="个人中心"android:textSize="20sp"android:textStyle="italic" /><Viewandroid:layout_width="2dp"android:layout_height="0dp"  /><TextViewandroid:layout_width="match_parent"android:layout_marginTop="12dp"android:layout_height="25dp"android:background="@drawable/yellow"android:gravity="center_horizontal"android:text="您的记录总共为"android:textSize="20sp"android:textStyle="italic" /><TextViewandroid:id="@+id/person_text"android:layout_width="match_parent"android:layout_height="89dp"android:background="@drawable/yellow"android:gravity="center_horizontal"android:text="50"android:textSize="85sp"android:textStyle="italic" /><Buttonandroid:id="@+id/person_button"android:layout_width="140dp"android:layout_height="38dp"android:layout_marginTop="16dp"android:layout_gravity="center_horizontal"android:background="@drawable/white"android:text="软件介绍" /><Viewandroid:layout_width="match_parent"android:layout_height="2dp"android:layout_marginTop="10dp"android:background="@drawable/green" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><ImageButtonandroid:id="@+id/person_home_page"android:layout_width="58dp"android:layout_height="55dp"android:src="@drawable/home" /><Viewandroid:layout_width="2dp"android:layout_height="55dp"android:background="@drawable/green" /><ImageButtonandroid:id="@+id/person_add_product"android:layout_width="58dp"android:layout_height="55dp"android:src="@drawable/add" /><Viewandroid:layout_width="2dp"android:layout_height="55dp"android:background="@drawable/green" /><ImageButtonandroid:id="@+id/person_refresh"android:layout_width="58dp"android:layout_height="55dp"android:src="@drawable/refresh" /><Viewandroid:layout_width="2dp"android:layout_height="55dp"android:background="@drawable/green" /><ImageButtonandroid:id="@+id/person_personal_center"android:layout_width="50dp"android:layout_height="55dp"android:layout_weight="0.84"android:src="@drawable/person" /></LinearLayout></LinearLayout>

后台代码:

package com.example.coursedesign;import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;public class PersonActivity extends Activity {TextView text;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_person);SharedPreferences sharedP=getSharedPreferences("SaveTable",MODE_PRIVATE);   int num=sharedP.getInt("number", 0);Integer num2=(Integer)num;text=(TextView) findViewById(R.id.person_text);text.setText(num2.toString());Button button=(Button) findViewById(R.id.person_button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(PersonActivity.this, AppActivity.class);startActivity(intent);}});}}

软件说明:
对软件的进一步说明。
界面:

界面代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="@drawable/blue"tools:context="com.example.coursedesign.AppActivity" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="开发目的:"android:textSize="20sp"android:layout_marginTop="5dp"android:layout_marginStart="5dp"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="它是帮助你忘记的事情,在每个人忙碌的生活当中,人的记忆是有限的,备忘录就是让你把多个事情都能记起的东西。"android:textSize="15sp"android:layout_marginStart="5dp"android:layout_marginEnd="5dp"android:layout_marginTop="5dp"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="开发人员:"android:textSize="20sp"android:layout_marginTop="5dp"android:layout_marginStart="5dp"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="何昊"android:textSize="15sp"android:layout_marginTop="5dp"android:layout_marginStart="5dp"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="系统版本:"android:textSize="20sp"android:layout_marginTop="5dp"android:layout_marginStart="5dp"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="android app v1.0.0"android:textSize="15sp"android:layout_marginTop="5dp"android:layout_marginStart="5dp"/><Buttonandroid:id="@+id/person_button"android:layout_width="150dp"android:layout_height="50dp"android:text="返回"android:textSize="20sp"android:layout_marginTop="5dp"android:layout_gravity="center_horizontal"/></LinearLayout>

后台代码:

package com.example.coursedesign;import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;public class AppActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_app);Button button = (Button) findViewById(R.id.person_button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {finish();}});}
}

4 总结
谈一下发现的问题与收获:

  1. 开始时使用相对布局进行设计,以为可以通过简单的拖拽就可以实现布局的设计,后面发现在控件变多的时候,变得很麻烦,并且由于界面的选择,eclipse这边的界面与模拟器的界面并不相同。后来使用线性布局进行设计。
  2. 之前上课学过openOrCreateDatabase方法与SQLitreOpenHelper类,存在有一些不明白的问题,通过这次课设,掌握了这些知识。
    3. 对时间规划不足,使得项目结束时间有点晚。

android课程设计 备忘录相关推荐

  1. Android课程设计--网上购物商城

    Android的特征: 提供访问硬件的API函数,简化访问过程等 具有自己的运行时和虚拟机 提供了丰富的界面控件供使用者之间调用,加快用户界面的开发速度,保证Android平台上程序界面的一致性 提供 ...

  2. Android课程设计(健康管理软件开发)

    Android 课程设计 Android开发使用软件(RecyclerView+ListView+SQLite) 一个实用的健康管理软件,可以查询各种食物的热量,每天健身打卡,发表动态,可以点击图片链 ...

  3. 音频播放器android课程设计,Android课程设计:Android音乐播放器的设计与实现

    内容简介: Android课程设计:Android音乐播放器的设计与实现,共21页,7729字,附源程序等. 摘要:本文主要介绍了一个基于Andriod的音乐播放器的设计与实现.主要包括可行性分析,需 ...

  4. Android课程设计大作业-音乐播放器

    Android课程设计大作业-音乐播放器 一.**主要实现界面效果** 1)登录界面 2)音乐列表界面 3)音乐播放界面 二.**系统设计** 1)使用Service播放音乐 2) 前台界面(Acti ...

  5. Android课程设计本地游戏厅app开发(已开源)

    Android课程设计本地游戏厅app开发(已开源) 见链接

  6. 俄罗斯android课程设计,基于Android的俄罗斯方块的设计与实现毕业设计报告.docx...

    PAGE \* MERGEFORMAT 24湖南商学院 <移动互联网应用开发> 课程设计报告 题 目 基于Android的俄罗斯方块的设计与实现 姓 名:学 号:专 业:班 级:指导教师: ...

  7. Android课程设计:基于离线地图服务器的Android地图应用

    Android开发课程设计:基于离线地图服务器的Android地图应用 此项目的灵感来源于伯克利cs61b的Project3: cs61b的官网地址:Project 3: Bear Maps 我的实验 ...

  8. Android课程设计之视频播放器

    CSDN下载:https://download.csdn.net/download/eseszb/10463442 移动互联网开发   课程设计报告 学生姓名:学 号: 专业:计算机科学与技术 班级: ...

  9. android课程设计录音机,[转载]数字录音机(微机原理与接口技术-课程设计)

    设计题目:数字录音机 一.设计目的: 1.了解数字录音技术的基本原理. 2.进一步掌握A/D转换器与D/A转换器的使用方法. 3.巩固和加深用汇编语言程序设计的能力. 二.设计所用器件和仪器设备: 1 ...

最新文章

  1. python中requests库的用途-python中requests库session对象的妙用详解
  2. mysql max connects_mysql max_connections 总是 4190
  3. 让你提前知道软件开发(44):如何解决软件故障?
  4. VC char和TCHAR之间转换
  5. Dijkstra算法实现
  6. 正则-元字符 注意正则表达式中间不要随意加空格
  7. c++折线平移算法_RSA笔记-蒙哥马利算法(1)
  8. 利用VmWare_在本地内网IP地址段_搭建Centos7测试MyCat集群_亲测---Linux工作笔记044
  9. win 10安装MySQL
  10. 基于51单片机的数码管密码锁设计资料
  11. adobe animate2022动画制作软件
  12. 网易有道,能否看透“K12双减”风浪?
  13. 了解源代码管理工具——Github
  14. WinUSB - 微软为所有 USB 设备提供的常规驱动程序
  15. 浙江大学招生目录新增一整个联合学院,包含人工智能,计算机专硕!
  16. 剩余电流动作继电器的应用探讨
  17. 介绍计算机专业说明文,介绍电脑的说明文作文
  18. 区块链引领互联网大会,徐明星浅谈后互联网时代“水电煤”
  19. u盘装puppy linux,将PuppyLinux安装到U盘
  20. ASP.NET(C#)图片加文字、图片水印

热门文章

  1. JavaSE:第十二章:IO流
  2. java 扇形_扇形导航 css3
  3. android app Preference设置自定义背景和去掉分割线以及设置分割线高度
  4. 为什么我的QQ打不开呢?
  5. 301和302重定向的区别,301和302重定向怎么实现
  6. 2019年RTC大会记录
  7. 怎样提高Windows系统的启动速度
  8. linux怎样重启apache,linux 如何重启apache(示例代码)
  9. 全国计算机等级考试交流群,社考丨5月12日起考生可查询今年3月全国计算机等级考试成绩和证书信息...
  10. 很厉害很有用的Hosts,其实很简单!