精华内容
下载资源
问答
  • Android Studio 课程设计

    2018-07-14 17:54:13
    深职院大二课程-移动应用开发。个人课程设计(阅读APP)。
  • 设计是一款轻量级的便签工具,使用Android Studio开发,风格简练,可实现便签的添加、删除、修改、查看功能。为保证一定的安全性,设置了进入口令,类似于应用锁,用户可以修改口令。主要使用的技术有共享参数、...

    前言

    该设计是一款轻量级的便签工具,使用Android Studio开发,风格简练,可实现便签的添加、删除、修改、查看功能。为保证一定的安全性,设置了进入口令,类似于应用锁,用户可以修改口令。主要使用的技术有共享参数、数据库、SwipeRefreshLayout控件。

    功能概述

    用户打开应用后,启动页会判断用户是否第一次打开,如果是第一次打开,跳转至引导页,引导用户设置进入口令;如果不是第一次打开,则跳转至口令确认界面,为保证应用干练简洁,启动页不设布局,不设延时,用户是感觉不到启动页的存在的。在口令确认界面,设置了“确认”和“更改”两个按钮,点击确认,如果口令正确会进入主界面;点击修改,则会跳转到修改口令界面。主界面实现了便签的预览和添加功能,底部有一个“添加”按钮,点击会进入便签编辑界面,编辑完成后点击右上角保存,会退出编辑界面,回到主界面,然后下拉刷新,就会出现刚刚编辑过的便签。再次点击便签,会进入编辑界面,可修改便签或删除便签。

    系统设计

    启动界面

    启动页面的功能是用于判断用户是否第一次打开应用,如果是第一次打开应用,则跳转至引导页,引导用户设置进入口令;如果不是第一次打开应用,则跳转至口令确认界面。该设计是一款轻量级的便签工具,旨在方便、快捷,因此启动页不设延时和布局,仅用于实现判断用户是否第一次进入这一个功能。
    这一功能实现的思路是,用共享参数存储一个布尔型变量,用true表示用户第一次进入,false表示用户不是第一次进入。每一次打开应用,都需要判断一次布尔型变量的真假。
    在第一次进入启动页面时,为该布尔型变量赋初值true,if语句判断为真,执行如下操作:修改布尔型变量的值为false;跳转至引导页面。在第二次进入时,该布尔型变量的值为false,执行操作:跳转至口令确认界面。这样就实现了只在第一次打开应用时进入引导界面,不是第一次打开则进入口令确认界面。
    代码如下:

    public class LaunchActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_launch);
            firstRun();  //用于判断用户是否第一次进入
        }
        private void firstRun(){
            SharedPreferences sharedPreferences=getSharedPreferences("FirstRun",0);
            Boolean first_run=sharedPreferences.getBoolean("First",true);
    //第一次进入,修改布尔变量值,跳转至引导页
            if(first_run){
                sharedPreferences.edit().putBoolean("First",false).commit();
                Intent intent=new Intent(LaunchActivity.this,GuideActivity.class);
                startActivity(intent);
                finish();
            }
    //不是第一次进入,跳转至口令确认界面
            else {
                Intent intent=new Intent(LaunchActivity.this, LoginActivity.class);
                startActivity(intent);
                finish();
            }
        }
    }
    

    引导界面

    引导界面的功能是,在用户第一次使用应用时,引导用户设置一个进入口令,也就是应用锁,旨在提供一定的安全性、私密性。
    这一功能实现的思路是,在布局页面使用线性布局设置三个控件,第一个是TextView控件,设置文字“欢迎使用便签 请为自己设置一个进入口令吧!”,用于提示用户。第二个是EditText控件,设置提示文字“请输入由4位数字组成的口令”,让用户输入口令。第三个是Button控件,设置文字“确认”。在代码文件中,新建共享参数变量,添加键值对,key命名为”password”,用以存储用户口令。设置Button控件的点击事件,当用户点击确认按钮时,获取EditText控件的字符串并赋给共享参数,然后跳转至主界面。这样就实现了引导用户设置口令,并保存口令。
    布局如下:
    在这里插入图片描述
    代码如下:

    public class LoginActivity extends AppCompatActivity {
    
        //声明控件
        private Button mBtnConfirm;
        private Button mBtnAlter;
        private EditText mEt;
        private SharedPreferences mSharePreferences;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);
    
            //找到控件
            mBtnConfirm = findViewById(R.id.btn_Confirm);
            mBtnAlter = findViewById(R.id.btn_Alter);
            mEt = findViewById(R.id.et_main);
    
            //获取共享参数
            mSharePreferences = getSharedPreferences("data",MODE_PRIVATE);
            mBtnConfirm.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //获取输入口令
                    String input = mEt.getText().toString();
                    //判断口令正误
                    if(input.equals(mSharePreferences.getString("password",""))) {
                        Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                        startActivity(intent);
                        Toast.makeText(LoginActivity.this, "欢迎进入!", Toast.LENGTH_SHORT).show();
                        LoginActivity.this.finish();  //跳转到主界面后销毁该界面
                    }
                    else{
                        Toast.makeText(LoginActivity.this, "口令错误!", Toast.LENGTH_SHORT).show();
                    }
                }
            });
            //跳转到修改口令界面
            mBtnAlter.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(LoginActivity.this,AlterActivity.class);
                    startActivity(intent);
                    LoginActivity.this.finish();
                }
            });
        }
    }
    

    更改口令界面

    该页面实现的功能是更改口令。实现该功能的思路是,在布局中设置两个EditText控件,第一个id为et_alter_1,并添加提示文字“请输入原口令”,第二个id为et_alter_2,添加提示文字“请输入修改后口令”,然后设置Button控件,添加文字“确认”。在代码文件中,设置Button控件的点击事件,当用户点击确认按钮时,获取et_alter_1的字符串并与共享参数password比较,相同说明原口令正确,然后获取et_alter_2的字符串并赋给password,并跳转至主界面;如果不同,说明原口令错误,弹出提示。
    布局如下:
    在这里插入图片描述
    代码如下:

    public class AlterActivity extends AppCompatActivity {
    
        //声明控件
        private Button mBtn;
        private EditText mEt_1;
        private EditText mEt_2;
        private EditText mEt_main;
    
        private SharedPreferences mSharePreferences;//读出
        private SharedPreferences.Editor mEditor;//存入
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_alter);
            //找到控件
            mBtn = findViewById(R.id.btn_alter_confirm);
            mEt_1 = findViewById(R.id.et_alter_1);
            mEt_2 = findViewById(R.id.et_alter_2);
            mEt_main = findViewById(R.id.et_main);
            //获取共享参数
            mSharePreferences = getSharedPreferences("data",MODE_PRIVATE);
            mEditor = mSharePreferences.edit();
            //修改口令
            mBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //匹配原口令是否正确,如果正确,点击修改后跳转到主界面
                    String input = mEt_1.getText().toString(); //获取输入口令
                    if(mSharePreferences.getString("password","").equals(input)) {
                        mEditor.putString("password",mEt_2.getText().toString());//保存修改后口令
                        mEditor.commit();
                        Toast.makeText(AlterActivity.this, "修改成功! 欢迎进入!", Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent(AlterActivity.this, MainActivity.class);
                        startActivity(intent);
                        AlterActivity.this.finish();
                    }
                    else{
                        Toast.makeText(AlterActivity.this, "原口令错误!", Toast.LENGTH_SHORT).show();
                    }
    
                }
            });
        }
    }
    

    主界面和编辑界面

    主界面的功能是添加便签、查看便签。点击添加按钮,会跳转至编辑界面,编辑完成点击保存会自动回到主界面,下拉刷新会出现刚刚编辑过的便签。点击该便签会再次进入编辑界面,可以进行修改和删除操作。
    这两个界面的功能实现起来比较复杂,需要多个控件组合以及数据库的使用,并且功能之间相互联系,不能分开叙述。下面以“添加便签→在主界面显示便签→再次编辑该便签”为主线介绍这两个界面的功能实现。

    1 建表

    首先新建一个DatabaseHelper类,在这里定义建表语句:

    public static final String CREATE_DIARY="create table Diary(" +
            "id integer primary key autoincrement," +
            "title text," +
            "content text)";
    

    表名为Diary,有两列值,一列为title,表示便签的标题,一列为content,表示便签的内容。同时重写onCreate方法:

    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_DIARY);
    }
    

    2 添加便签

    首先设置添加按钮的点击事件:

    add.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(MainActivity.this,Detail.class);
            intent.putExtra("TAG",TAG_INSERT);
            startActivity(intent);
        }
    });
    

    在编辑界面,设置保存按钮的点击事件,当用户点击保存时,要将两个EditText控件的内容保存到数据库中,然后返回到主界面。注:编辑界面的布局用的menu布局。

    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()){
            case R.id.save:
                if(tag==TAG_INSERT) {
                    ContentValues values = new ContentValues();
                    values.put("title", title.getText().toString());
                    values.put("content", content.getText().toString());
                    db.insert(TABLE_NAME, null, values);
                    values.clear();
                    Toast.makeText(this, "Save", Toast.LENGTH_SHORT).show();
                    finish();
                    break;
    	  }
    

    3 在主界面显示便签

    回到主界面后,需要把刚刚添加的便签显示出来。这里需要用到SwipeRefreshLayout控件、ListView控件和数组适配器ArrayAdapter。
    首先需要查询数据库,将便签的标题添加到列表项目中:

    private void init(){
        db=dbHelper.getWritableDatabase();
        diary.clear();
        //查询数据库,将title一列添加到列表项目中
        Cursor cursor=db.query(TABLE_NAME,null,null,null,null,null,null);
        if(cursor.moveToFirst()){
            String diary_item;
            do{
                diary_item=cursor.getString(cursor.getColumnIndex("title"));
                diary.add(diary_item);
            }while(cursor.moveToNext());
        }
        cursor.close();
        adapter=new ArrayAdapter<String>(
                MainActivity.this,android.R.layout.simple_list_item_1,diary);
        listView=(ListView)findViewById(R.id.list_item);
        listView.setAdapter(adapter);
    }
    然后通过SwipeRefreshLayout控件下拉刷新,让便签标题在主界面显示出来:
    swipeRefresh=(SwipeRefreshLayout)findViewById(R.id.swipe_refresh);
    swipeRefresh.setOnRefreshListener(new SwipeRefreshLayout
            .OnRefreshListener() {
        @Override
        public void onRefresh() {
            refresh();
        }
    });
    private void refresh(){
        new Thread(new Runnable(){
            @Override
            public void run() {
                try{
                    Thread.sleep(1000);
                }catch(InterruptedException e){
                    e.printStackTrace();
                }
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        init();
                        swipeRefresh.setRefreshing(false);
                    }
                });
            }
        }).start();
    }
    

    4 再次编辑该便签

    标题在主界面显示之后,需要通过点击标题,再次进入编辑界面,进行修改或删除操作。
    首先要设置列表项目点击事件:

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                Intent intent=new Intent(MainActivity.this,Detail.class);
                Id=getDiaryId(position);
                //  Log.d("MainActivity",""+id);
                intent.putExtra("ID",Id);
                intent.putExtra("TAG",TAG_UPDATE);
                startActivity(intent);
            }
        });
    }
     private int getDiaryId(int position){
            //获取所点击的日记的title
            int Id;
            select_item=diary.get(position);
            //获取id
            db=dbHelper.getWritableDatabase();
            Cursor cursor=db.query(TABLE_NAME,new String[]{"id"},"title=?",
                    new String[]{select_item},null,null,null);
            cursor.moveToFirst();
            Id=cursor.getInt(cursor.getColumnIndex("id"));
            return Id;
        }
    }
    

    然后在编辑界面,要呈现出用户点击的便签对应的内容,这一功能通过数据库查询id实现。在编辑界面代码中,获得主界面传过来的id,查询该id对应的表,并将该表的title列和content列赋值给对应的两个EditText控件:

    id=intent.getIntExtra("ID",-1);
    Cursor cursor=db.query(TABLE_NAME,null,"id=?",
            new String[]{String.valueOf(id)},null,null,null);
    if(cursor.moveToFirst()){
        String select_title=cursor.getString(cursor.getColumnIndex("title"));
        String select_content=cursor.getString(cursor.getColumnIndex("content"));
        title.setText(select_title);
        content.setText(select_content);
    }
    

    在编辑完成后,用户点击保存,即可保存修改后的内容。因为保存按钮实际上执行了两个功能,一个是新建便签时,实际上执行的是数据库的insert功能,一个是修改便签时,实际上执行的是数据库的update功能,所以保存按钮的点击事件需要用if语句来区分这两种情况:

    if(tag==TAG_INSERT) {
        ContentValues values = new ContentValues();
        values.put("title", title.getText().toString());
        values.put("content", content.getText().toString());
        db.insert(TABLE_NAME, null, values);
        values.clear();
        Toast.makeText(this, "Save", Toast.LENGTH_SHORT).show();
        finish();
        break;
    }else if(tag==TAG_UPDATE){
        //修改title和content
        String update_title=title.getText().toString();
        String update_content=content.getText().toString();
        ContentValues values=new ContentValues();
        values.put("title",update_title);
        values.put("content",update_content);
        db.update(TABLE_NAME,values,"id=?",new String[]{String.valueOf(id)});
        finish();
        break;
    }
    

    用户点击删除,即可删除便签。实际上就是设置删除按钮的点击事件,让其执行数据库delete操作:

    if(tag==TAG_UPDATE) {
        db.delete(TABLE_NAME,"id=?",new String[]{String.valueOf(id)});
    }
    Toast.makeText(this,"Delete",Toast.LENGTH_SHORT).show();
    finish();
    

    这样,就完成主界面和编辑界面的所有功能。

    5 主界面和编辑界面布局

    主界面
    编辑界面

    展开全文
  • 本项目是一个体重管理系统,比较给力的是本项目自带一个20多页的设计文档,比较适合新手学习和参考。项目编译版本4.2.2默认编码UTF-8源码
  • 本项目是一个体重管理系统,比较给力的是本项目自带一个20多页的设计文档,比较适合新手学习和参考。项目编译版本4.2.2默认编码UTF-8源码
  • 注意:课程设计只为完成任务,不做细节描述~ 学校有一个Android的课设,所以顺便把Android Studio安装了上去。 实际上安装过程并不复杂,只有几个地方需要注意~ 安装包可以去http://www.android-studio.org/...

    注意:课程设计只为完成任务,不做细节描述~

     学校有一个Android的课设,所以顺便把Android Studio安装了上去。

    实际上安装过程并不复杂,只有几个地方需要注意~

    安装包可以去http://www.android-studio.org/进行下载

    前面大部分都是I Agree和next,这个地方,第一次安装选第二个

    创建项目会卡在:building “XXX”gradle project info的状态,只能关进程,这个时候你需要手动下载,下载哪个文件,查看自己项目中gradle-wrapper.properties显示信息

    1 #Sun Jun 11 14:59:17 CST 2017
    2 distributionBase=GRADLE_USER_HOME
    3 distributionPath=wrapper/dists
    4 zipStoreBase=GRADLE_USER_HOME
    5 zipStorePath=wrapper/dists
    6 distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip

    知道了有一个叫 gradle-3.3-all.zip没办法下载,需要手动去下载,然后请前往:C:\Users\Administrator\.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9ohc3hw9(最后面应该是随机取名的)放进去,它会自动解压,或者你自己解压也行,或者直接单击android studio工具栏的 Sync Project Gradle Files

    然后项目顺利打开,开始配置自己的风格

     

    转载于:https://www.cnblogs.com/yinghualuowu/p/7070421.html

    展开全文
  • Android Studio项目开发实战,入门级的音乐播放器APP,作者本人用作本科大三“APP应用开发”课程设计项目提交。APK在根目录下。注释详尽,可以直接运行。
  • Android Studio Essential Training 中文字幕 Android Studio Essential Training 中文字幕... 您需要Android Studio - 由Google专门为Android应用程序开发而设计的IDE 本课程在2018年进行了全面修订,涵盖了A...

    Android Studio Essential Training 中文字幕

    Android Studio Essential Training 中文字幕Android Studio Essential Training

    Alt
    想开发Android应用程序? 您需要Android Studio - 由Google专门为Android应用程序开发而设计的IDE
    本课程在2018年进行了全面修订,涵盖了Android Studio(v3.1)的最新稳定版本以及Intel HAXM等关键资源中的所有基本功能
    教师David Gassner介绍了Android Studio界面,帮助您设置您的环境和第一个项目,并为编写和调试代码提供了方便的快捷方式
    了解如何通过将Android Studio与GitHub集成来添加版本控制,并监视CPU和内存的使用情况
    David还介绍了如何管理项目依赖关系,使用模板,生成图形和其他资源,以及在Java和Kotlin两种支持的编程语言之间来回切换

    主题包括:
    在macOS和Windows上安装Android Studio
    创建你的第一个项目
    创建用于测试的虚拟设备
    使用版本控制
    构建,运行和调试项目
    管理依赖关系
    编辑Kotlin代码
    检查和反编译Kotlin字节码
    使用模板
    重构代码
    使用布局编辑器
    Alt
    Alt
    Alt
    Alt
    Alt

    • [大卫]我叫David Gassner。
      欢迎阅读本课程,内容涉及Android Studio,Google面向Android开发人员的集成开发环境。
      Android Studio自2013年以来一直存在,但它不断发展。
      我将向您展示如何安装Android Studio以及如何创建您的第一个项目。
      但是,我会专注于所有可用的不同工具。
      我将介绍如何使用各种快捷方式来加速您的开发和测试工作,如何创建图像和其他资源以整合到您的Android应用程序中,以及如何在Android的两种支持的编程语言Java和Kotlin之间来回切换。
      我希望本课程可以帮助您开始使用Android Studio,以便创建自己的Android应用程序。
      本课程视频下载地址:Android Studio Essential Training
    展开全文
  • 掌握Android Studio环境搭建,虚拟设备配置,程序设计和程序调试方法。
  • 课程设计做的一个火车购票管理系统,给大家分享一下代码。用Android studio可以直接打开
  • 设计内容 成绩查询 课表查询 成绩查询 学生采用学号可以查询自己的成绩,还可以通过课程号查询课程全部学生成绩,查询班级所有学生成绩 课表查询 根据学号可以查询自己第几周的课表,还可以查询哪一天有...

    设计内容

    1. 成绩查询
    2. 课表查询

    成绩查询
    学生采用学号可以查询自己的成绩,还可以通过课程号查询课程全部学生成绩,查询班级所有学生成绩
    课表查询
    根据学号可以查询自己第几周的课表,还可以查询哪一天有哪些课,还可以查询某课程的所有课表安排

    实现的功能

    1.图片按钮功能
    采用ImageButton标签,背景属性加上图片实现图片点击跳转功能
    在这里插入图片描述

        <ImageButton
            android:id="@+id/btn_1"
            android:layout_width="100dp"
            android:layout_height="130dp"
            android:background="@mipmap/a3"
            android:layout_marginTop="80dp"
            android:layout_marginLeft="90dp"
            >
        </ImageButton>
        <TextView
            android:id="@+id/tv_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="成绩查询"
            android:textColor="#AA99DA"
            android:textSize="25sp"
            android:layout_below="@+id/btn_1"
            android:layout_alignLeft="@+id/btn_1"
            />
    

    2.日历形式查询课表日期
    在这里插入图片描述
    在这里插入图片描述

    //xml文件内容
    <Button
                android:id="@+id/btn_2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="请选择查询日期"
                android:textSize="20sp"
                android:onClick="choosedate"
                />
    //java文件内容
     public void choosedate(View v){
    
            DatePickerDialog datepick=new DatePickerDialog(this,new DatePickerDialog.OnDateSetListener(){
                @Override
                public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                    month=month+1;
                   String date =year+"/"+month+"/"+dayOfMonth;
                   //button2为获得的Btn_2控件
                    button2.setText(date);
                }
            },2019,11,22);
            datepick.show();
            //dateclick为boolean型  初始值赋false就行
            dateclick=true;
        }
    

    3.下拉框进行选课
    在这里插入图片描述

    package com.example.myapplication2;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.app.Activity;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Spinner;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import java.util.ArrayList;
    
    public class Activity9 extends AppCompatActivity {
    
        private EditText editText1;
        private Button button;
        private TextView textView;
    
    
        private ArrayList<String> list;
        private ArrayAdapter<String>  arrayadapter;
        private Spinner spinner;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_9);
            editText1=(EditText)findViewById(R.id.et_1);
            button=(Button)findViewById(R.id.btn_11);
            textView=(TextView)findViewById(R.id.tv_1);
    
    
            spinner=(Spinner)findViewById(R.id.spinner11);
            list=new ArrayList<String>();
            list.add("chinese");
            list.add("english");
            list.add("math");
            list.add("physics");
            list.add("chemistry");
            list.add("WW");
            list.add("TQH");
            arrayadapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list);
            arrayadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(arrayadapter);
            Toast.makeText(this, "初始化", Toast.LENGTH_SHORT).show();
    
        }
        public void click9(View v){
            SQLiteDatabase db;
            String et_1;
            String et_2;
            switch (v.getId()){
                case R.id.btn_11:
                    et_1=editText1.getText().toString();
                    et_2=spinner.getSelectedItem().toString();
                    Toast.makeText(this, "建立数据库可读写对象", Toast.LENGTH_SHORT).show();
                    Activity3.MyHelper1 myHelper1=new Activity3.MyHelper1(this);
                    db=myHelper1.getReadableDatabase();
    
    
                    // Cursor cursor=db.query("Subject",null,"stid=?,week=?",new String[]{et_1,et_2},null,null,null,null);
                    Cursor cursor= db.rawQuery("select * from subject where stid=? and subject1=?",new String[]{et_1,et_2});
                    if(cursor.getCount()==0){
                        textView.setText("");
                        Toast.makeText(this,"数据为空",Toast.LENGTH_SHORT);
                    }else{
                        cursor.moveToFirst();
                        textView.setText("学号:"+cursor.getString(1)+"第几周:"+cursor.getString(2)+"星期几:"+cursor.getString(3)+"日期:"+cursor.getString(4)+"时间段:"+cursor.getString(5)+"地点:"+cursor.getString(6)+"课程:"+cursor.getString(7));
    
                        while(cursor.moveToNext()){
                            textView.append("学号:"+cursor.getString(1)+"第几周:"+cursor.getString(2)+"星期几:"+cursor.getString(3)+"日期:"+cursor.getString(4)+"时间段:"+cursor.getString(5)+"地点:"+cursor.getString(6)+"课程:"+cursor.getString(7));
                        }
                    }
                    cursor.close();
                    db.close();
                    break;
            }
        }
    }
    
    
    

    4.建立数据库以及数据库插入数据

    package com.example.myapplication2;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.content.ContentValues;
    import android.content.Context;
    import android.content.Intent;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    
    
    public class Activity2 extends AppCompatActivity {
    
        private Button btn_one;
        private Button btn_two;
        private Button btn_three;
        private Button btn_four;
    
        public static MyHelper myHelper;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_2);
    
    
            myHelper = new MyHelper(this);
    
    
            btn_one = (Button) findViewById(R.id.btn_one);
            btn_two = (Button) findViewById(R.id.btn_two);
            btn_three = (Button) findViewById(R.id.btn_three);
            btn_four = (Button) findViewById(R.id.btn_four);
            btn_one.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(Activity2.this, Activity4.class);
                    startActivity(intent);
                }
            });
            btn_two.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(Activity2.this, Activity5.class);
                    startActivity(intent);
                }
            });
            btn_three.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(Activity2.this, Activity6.class);
                    startActivity(intent);
                }
            });
            btn_four.setOnClickListener(new View.OnClickListener() {
                private String stid;
                private String name;
                private String classes;
                private int english;
                private int chinese;
                SQLiteDatabase db;
                ContentValues values;
    
                @Override
                public void onClick(View view) {
                    db = myHelper.getReadableDatabase();
                    db.execSQL("DELETE FROM Student");
                    values = new ContentValues();
    
                    stid = "1";
                    name = "子瑜";
                    classes = "美术三班";
                    english = 86;
                    chinese = 90;
                    values.put("stid", stid);
                    values.put("name", name);
                    values.put("classes", classes);
                    values.put("english", english);
                    values.put("chinese", chinese);
                    db.insert("Student", null, values);
                    stid = "2";
                    name = "张伟";
                    classes = "语言二班";
                    english = 76;
                    chinese = 92;
                    values.put("stid", stid);
                    values.put("name", name);
                    values.put("classes", classes);
                    values.put("english", english);
                    values.put("chinese", chinese);
                    db.insert("Student", null, values);
    
                    Toast.makeText(Activity2.this, "信息已添加", Toast.LENGTH_SHORT).show();
                    db.close();
    
                }
    
    
            });
    
        }
    
        public static class MyHelper extends SQLiteOpenHelper {
            public MyHelper(Context context) {
                super(context, "itcast.db", null, 1);
            }
    
            @Override
            public void onCreate(SQLiteDatabase db) {
                db.execSQL("create table  Student(_id integer primary key autoincrement,stid verchar(10),name verchar(10),classes verchar(10),english verchar(10),chinese verchar(10))");
            }
    
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    
            }
        }
    }
    
    

    数据库建立一次之后就会一直存在,其他Activity可直接调用,将MyHelper设为公用静态型
    其他Activity调用:

     public void onClick(View v) {
            SQLiteDatabase db ;
            String tv_1;
    
            switch (v.getId()) {
                case R.id.btn_1:
                    tv_1=Tv_1.getText().toString();
                    Activity2.MyHelper myHelper=new Activity2.MyHelper(this);
                    db=myHelper.getReadableDatabase();
                    Toast.makeText(this, "建立数据库", Toast.LENGTH_SHORT).show();
                    //String[] column={"stid"};
                    Cursor cursor = db.query("Student",null , "stid=?", new String[]{tv_1+""}, null, null, null);
                    if (cursor.getCount() == 0) {
                        mTvShow.setText("");
                        Toast.makeText(this, "没有数据", Toast.LENGTH_SHORT).show();
                    } else {
                        cursor.moveToFirst();
                        mTvShow.setText("stid:" + cursor.getString(1) + "name:" + cursor.getString(2)+"classes:"+cursor.getString(3)+"english:"+cursor.getString(4)+"chinese:"+cursor.getString(5));
                    }
    
                    cursor.close();
                    db.close();
                    break;
            }
    

    实现的方法

    • 页面跳转采用Intent,点击之后跳转到下一Activity
    • 后台数据库采用Sqlite保存数据,进行查询,简便,快捷,也可以采用可视化软件进行管理(但这次由于不熟练,未曾使用)

    心得体会

    这次制作学习助手功能太过稀少,只简单实现了几个页面的显示和跳转,数据库的建立,连接和使用,使用了图片按钮,日历日期查询,下拉框等方式进行查询
    ,通过Edittext和Button获取数据,未有其余功能,制作时间为两个星期,与其余同学相比差别甚远,希望未来其余项目能够更加用心,得到更大的长进,不管现在如何,一直坚持下去,就会取得胜利。

    展开全文
  • Android Studio安装

    2017-10-09 10:13:49
    Android Studio是谷歌官方支持的继承开发环境使用java编程java...java进阶课程学习开发Android Apps为Android开发者新手而设计 Eclipse+ADT插件使用Android Studio需要安装的软件 Windows Oracle JDK7或者JDK8 Mac OS
  • AndroidStudio入门基础(一)——基础布局

    万次阅读 多人点赞 2018-09-08 15:48:40
    遗忘是可怕的,为了防止以后把好不容易学到的东西忘得一干二净,我打算写一系列的AndroidStudio教程记录一些有用的知识点,当然,我会从最基础的地方写起,希望可以帮助到一些初学者~ 最后,如果时间和精力允许的...
  • 课程设计中完成的代码,爬取学校的课程表并显示出来,成绩,一卡通等信息。
  • 这是一个android的课设,一个记账本,界面美观,我的运行环境是Android studio,虽然是记账本,但是代码量和项目,适合大学4-6人课设完全够用
  • 基于Android studio开发的智慧社区app,Android课程结课设计。包含天气接口测试,获取当前地理位置,应用权限获取
  • Android studio学习笔记

    2021-01-25 21:46:39
    Android studio学习笔记一、布局1.线性布局2.相对布局二、四大组件1.活动(Activity)2. 广播接收者(broadcastreceiver)3.服务(Service)4.内容提供者(ContentProvider)三、其它1.标题栏设计2.多线程3.handle 参考...
  • android编写的便捷备忘录,能实现增,删,改,查的功能。有时间提示,里面有apk文件可以down到手机上面直接运行,还有就是android studio项目,直接导入可以使用
  • android编写的便捷备忘录,能实现增,删,改,查的功能。有时间提示,里面有apk文件可以down到手机上面直接运行,还有就是android studio项目,直接导入可以使用
  • android编写的便捷备忘录,能实现增,删,改,查的功能。有时间提示,里面有apk文件可以down到手机上面直接运行,还有就是android studio项目,直接导入可以使用
  • 本人计科专业,大四,正在准备毕业设计,基于Android studio课程设计。AS小白,有诸多问题,恳请各位前辈指点一二,不胜感激。 问题一:所有的按钮可以同时调用右边这个页面吗?用同一个页面让所有按钮点击进去...
  • 基于Android studio的图灵智能聊天机器人,课程设计,或学习都可以,导入有jar包,只需要改gradle版本即可
  • 在本课程中,您将学习如何构建和设计可避免Android漏洞的安全android应用程序,以及如何使用android布局工具设计适用于不同设备尺寸的非常吸引人的响应式布局,然后您将学习如何将Sqlite用作本地设备数据库存储和...
  • android studio 如何画线

    千次阅读 2019-07-23 16:23:16
    经过鄙人两年的大学生活,要画线的课程设计或实验遇到过两次,前些天课程设计选择的安卓搞界面,遇到过很多困难,还要几天之内搞定,界面好坑,就想写一下。 Canvas画布 必须的,之前我有想过用一个ImageView代替...
  • 软件:Android Studio 2.3 实验:综合实验尽量达到本科毕业设计水平 教材: Android Studio 2.3 安装 1. 安装JDK 如果已经有了JAVA开发相关的环境,估计可以略过这一步。PS:Android 2.3.2 自带JDK,可以...
  • 以项目开发的整个实现过程为引导核心,从立项到结项的整个生命周期,一步一步地阶梯式学习,你将学会项目文档的编写描述与版面设计、项目原型设计的风格理念、编码的业内规范、功能实现的逻辑思维、第三方包的使用...
  • 安卓应用与开发课程设计,包含工程与文档报告,只支持AndroidStudio软件, 直接打开,包括背景音乐开关、游戏音效开关,无Tab导航,背景图建议更改。
  • 这里写自定义目录标题Android Studio安装Android SDK安装Android 工程创建Android 虚拟机配置Android 界面设计LayoutConstraitLayout Android Studio安装 Android SDK安装 Android 工程创建 App的安装文件是...
  • 因为课程需要,昨天好多同学在安装Android studio3.6.1后,无法构建,不知道什么原因,我的电脑上使用的是之前3.4版本的,可以正常使用,所以没太关心。但晚上我想到3.6版本应该有一些新功能,所以我就想升级一下,...
  • 使用Android Studio+Spring Boot+MySQL数据库实现博客APP为什么要写这个技术说明开发环境主要功能部分UI设计(少量来源于网络)数据库说明运行说明遇到的问题及解决思路GitHub源码分享 为什么要写这个 因为课程需要,...
  • Android Studio App边做边学——微课视频版》教学大纲学 分:2总学时:32 授课学时:14实验(上机)学时:18 一、课程简介本课程是学习智能手机应用程序开发的必要课程,以开发和设计完整的App为导向,采用微课项目...

空空如也

空空如也

1 2 3 4 5 6
收藏数 120
精华内容 48
关键字:

androidstudio课程设计