用android stdio写一个带数据库的记账程序
时间: 2023-09-09 22:10:54 浏览: 107
好的,以下是一个简单的 Android Studio 程序示例,可以实现记账并将数据存储在 SQLite 数据库中:
1. 创建一个新的 Android 项目,命名为 "记账程序"
2. 在项目中创建一个名为 "Record" 的 Java 类,表示一个记账记录
3. 在 Record 类中定义以下属性:日期、金额、分类、备注
4. 在 Record 类中创建一个构造函数,用于初始化所有属性
5. 在项目中创建一个名为 "DatabaseHelper" 的 Java 类,用于管理数据库连接和操作
6. 在 DatabaseHelper 类中继承 SQLiteOpenHelper 类
7. 在 DatabaseHelper 类中创建一个名为 "RECORDS_TABLE" 的常量,用于存储表名
8. 在 DatabaseHelper 类中创建一个名为 "RECORDS_COLUMNS" 的常量数组,用于存储表字段名
9. 在 DatabaseHelper 类中创建一个名为 "CREATE_RECORDS_TABLE" 的常量,用于创建表的 SQL 语句
10. 在 DatabaseHelper 类中创建一个名为 "insertRecord" 的方法,用于向数据库中插入一条记录
11. 在项目中创建一个名为 "MainActivity" 的 Java 类,表示应用程序的主界面
12. 在 MainActivity 类中创建一个名为 "DatabaseHelper" 的成员变量,用于操作数据库
13. 在 MainActivity 类中创建一个名为 "addRecord" 的方法,用于添加一条记账记录
14. 在 MainActivity 类中创建一个名为 "showRecords" 的方法,用于显示所有的记账记录
以下是完整的代码示例:
Record.java
```java
public class Record {
private String date;
private double amount;
private String category;
private String note;
public Record(String date, double amount, String category, String note) {
this.date = date;
this.amount = amount;
this.category = category;
this.note = note;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
}
```
DatabaseHelper.java
```java
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "records.db";
private static final int DATABASE_VERSION = 1;
public static final String RECORDS_TABLE = "records";
public static final String[] RECORDS_COLUMNS = {"date", "amount", "category", "note"};
private static final String CREATE_RECORDS_TABLE = "CREATE TABLE " + RECORDS_TABLE +
" (date TEXT, amount REAL, category TEXT, note TEXT)";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_RECORDS_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + RECORDS_TABLE);
onCreate(db);
}
public void insertRecord(Record record) {
SQLiteDatabase db = getWritableDatabase();
ContentValues values = new ContentValues();
values.put("date", record.getDate());
values.put("amount", record.getAmount());
values.put("category", record.getCategory());
values.put("note", record.getNote());
db.insert(RECORDS_TABLE, null, values);
db.close();
}
}
```
MainActivity.java
```java
public class MainActivity extends AppCompatActivity {
private DatabaseHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new DatabaseHelper(this);
}
public void addRecord(View view) {
EditText dateEditText = findViewById(R.id.dateEditText);
EditText amountEditText = findViewById(R.id.amountEditText);
EditText categoryEditText = findViewById(R.id.categoryEditText);
EditText noteEditText = findViewById(R.id.noteEditText);
String date = dateEditText.getText().toString();
double amount = Double.parseDouble(amountEditText.getText().toString());
String category = categoryEditText.getText().toString();
String note = noteEditText.getText().toString();
Record record = new Record(date, amount, category, note);
dbHelper.insertRecord(record);
Toast.makeText(this, "Record added", Toast.LENGTH_SHORT).show();
}
public void showRecords(View view) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query(DatabaseHelper.RECORDS_TABLE, DatabaseHelper.RECORDS_COLUMNS,
null, null, null, null, null);
List<Record> records = new ArrayList<>();
while (cursor.moveToNext()) {
String date = cursor.getString(cursor.getColumnIndex("date"));
double amount = cursor.getDouble(cursor.getColumnIndex("amount"));
String category = cursor.getString(cursor.getColumnIndex("category"));
String note = cursor.getString(cursor.getColumnIndex("note"));
Record record = new Record(date, amount, category, note);
records.add(record);
}
cursor.close();
db.close();
for (Record record : records) {
Log.d("Record", record.getDate() + " " + record.getAmount() + " " +
record.getCategory() + " " + record.getNote());
}
}
}
```
以上是一个简单的带数据库的记账程序示例,可以让你快速入门 Android Studio 和 SQLite 数据库操作。你可以根据自己的需求对程序进行扩展和优化。
阅读全文