From 5fb43891d8566ec1dfb7578742fcb8b5415d620b Mon Sep 17 00:00:00 2001 From: pyowf4gx3 <527452609@qq.com> Date: Sun, 10 Oct 2021 12:39:12 +0800 Subject: [PATCH] ADD file via upload --- CS体系结构-记账系统/MainActivity.java | 193 ++++++++++++++++++ 1 file changed, 193 insertions(+) create mode 100644 CS体系结构-记账系统/MainActivity.java diff --git a/CS体系结构-记账系统/MainActivity.java b/CS体系结构-记账系统/MainActivity.java new file mode 100644 index 0000000..2b09265 --- /dev/null +++ b/CS体系结构-记账系统/MainActivity.java @@ -0,0 +1,193 @@ +package com.example.account_book; + +import android.content.DialogInterface; +import android.content.Intent; +import android.database.Cursor; +import android.os.Bundle; + +import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.google.android.material.snackbar.Snackbar; + +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.Menu; +import android.view.MenuItem; +import android.widget.AdapterView; +import android.widget.DatePicker; +import android.widget.EditText; +import android.widget.ListView; +import android.widget.Toast; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +public class MainActivity extends AppCompatActivity { + + private List mCostBeanList; + private DatabaseHelper mDatabaseHelper; + private CostListAdapter mAdapter; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + Toolbar toolbar = findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + + mDatabaseHelper = new DatabaseHelper(this); + mCostBeanList = new ArrayList<>(); + ListView costList = (ListView) findViewById(R.id.lv_main); + + initCostDate(); + mAdapter = new CostListAdapter(this, mCostBeanList); + costList.setAdapter(mAdapter); + + //单击每一个item实现删除功能 + costList.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, final int position, long id) { + AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); + builder.setTitle("删除"); + builder.setMessage("是否删除此账单?"); + builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + mDatabaseHelper.toDelete(mCostBeanList.get(position)); + mCostBeanList.remove(position); + mAdapter.notifyDataSetChanged();//通知list_view刷新 + } + }); + builder.setNegativeButton("取消",null); + builder.create().show(); + } + }); + + + FloatingActionButton fab = findViewById(R.id.fab); + fab.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); + LayoutInflater inflater = LayoutInflater.from(MainActivity.this); + View viewDialog = inflater.inflate(R.layout.new_cost, null);//联系new_cost布局,才能使用布局中的数据元素 + final EditText title = (EditText) viewDialog.findViewById(R.id.ct_cost_title); + final EditText money = (EditText) viewDialog.findViewById(R.id.ct_cost_money); + final DatePicker date = (DatePicker) viewDialog.findViewById(R.id.ct_cost_date); + builder.setView(viewDialog);//将布局设置给dialog + builder.setTitle("新建支出");//dialog的标题 + builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) {//当点击确定时, + CostBean costBean = new CostBean(); + costBean.costTitle = title.getText().toString();//将对应的属性输入 + costBean.costMoney = money.getText().toString(); + costBean.costDate = date.getYear() + "-" + (date.getMonth() + 1) + "-" + + date.getDayOfMonth(); + + //储存date时特别要注意,我们后面要根据costDate排序,所以要将其标准化 + costBean.costDate = date.getYear()+"-"; + if(date.getMonth()+1<10) costBean.costDate+="0"; + costBean.costDate+=(date.getMonth()+1)+"-"; + if(date.getDayOfMonth()<10) costBean.costDate+="0"; + costBean.costDate+=date.getDayOfMonth(); + + //当输入为空时提醒 + if("".equals(costBean.costTitle) || "".equals(costBean.costMoney) || "".equals(costBean.costDate)) + { + Toast.makeText(MainActivity.this,"信息不完整",Toast.LENGTH_SHORT).show(); + return; + } + if(costBean.costMoney.length()>4) + { + Toast.makeText(MainActivity.this,"金额过大",Toast.LENGTH_SHORT).show(); + return; + } + mDatabaseHelper.insertCost(costBean);//将数据插入数据库 + + mCostBeanList.add(costBean);//将list改变,才能刷新 + mAdapter.notifyDataSetChanged();//通知list_view刷新,这样才能显示新的账单 + } + }); + builder.setNegativeButton("取消", null);//取消时退出 + builder.create().show();//显示dialog,即自定义的布局 + } + }); + } + + + private void initCostDate() { + /* + mDatabaseHelper.deleteAllData();//清理所有数据 + for (int i=0; i<6; i++) { + CostBean costBean = new CostBean(); + costBean.costTitle = i + "mock"; + costBean.costDate = "11-11"; + costBean.costMoney = "20"; + mDatabaseHelper.insertCost(costBean); + }*/ + Cursor cursor = mDatabaseHelper.getAllCostData();//数据库中插入所有数据并显示到list_view中 + if(cursor != null){ + while (cursor.moveToNext()){ + CostBean costBean = new CostBean(); + costBean.costTitle = cursor.getString(cursor.getColumnIndex("cost_title")); + costBean.costDate = cursor.getString(cursor.getColumnIndex("cost_date")); + costBean.costMoney = cursor.getString(cursor.getColumnIndex("cost_money")); + mCostBeanList.add(costBean); + } + cursor.close(); + } + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.menu_main, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + { + + //noinspection SimplifiableIfStatement + if (id == R.id.action_chart) { + Intent intent = new Intent(MainActivity.this, ChartsActivity.class); + intent.putExtra("cost_list", (Serializable) mCostBeanList);//将消费金额序列化传给chart + startActivity(intent); + return true; + } + +// else if (id == R.id.action_about){ +// Intent intent_a = new Intent(getApplicationContext(),AboutActivity.class); +// startActivity(intent_a); +// return true; +// +// } + else if (id == R.id.action_about){ + Intent intent_a = new Intent(getApplicationContext(),web.class); + startActivity(intent_a); + return true; + + } + + else if (id == R.id.anction_delete_all){ + mDatabaseHelper.deleteAllData(); + mCostBeanList.clear(); + mAdapter.notifyDataSetChanged(); + return true; + } + } + + return super.onOptionsItemSelected(item); + } +}