用Java写一个账单管理系统
时间: 2023-07-16 13:14:42 浏览: 47
好的,账单管理系统大概需要实现以下功能:
1. 记录账单信息:包括账单编号、账单类型、账单金额、账单时间等信息;
2. 查询账单信息:可以按照账单编号、账单类型、账单时间等条件查询账单信息;
3. 统计账单信息:可以按照账单类型、账单时间等条件统计账单信息;
4. 修改账单信息:可以修改账单的各项信息;
5. 删除账单信息:可以删除指定的账单信息。
下面是一个简单的 Java 实现:
```java
import java.util.ArrayList;
import java.util.Scanner;
public class BillManagementSystem {
private static ArrayList<Bill> bills = new ArrayList<>();
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
boolean exit = false;
while (!exit) {
System.out.println("请选择操作:");
System.out.println("1. 添加账单");
System.out.println("2. 查询账单");
System.out.println("3. 统计账单");
System.out.println("4. 修改账单");
System.out.println("5. 删除账单");
System.out.println("0. 退出");
int choice = scanner.nextInt();
switch (choice) {
case 0:
exit = true;
break;
case 1:
addBill();
break;
case 2:
queryBill();
break;
case 3:
countBill();
break;
case 4:
modifyBill();
break;
case 5:
deleteBill();
break;
default:
System.out.println("无效操作!");
break;
}
}
}
private static void addBill() {
System.out.println("请输入账单编号:");
String id = scanner.next();
System.out.println("请输入账单类型:");
String type = scanner.next();
System.out.println("请输入账单金额:");
double amount = scanner.nextDouble();
System.out.println("请输入账单时间(格式为 yyyy-MM-dd):");
String time = scanner.next();
bills.add(new Bill(id, type, amount, time));
System.out.println("账单添加成功!");
}
private static void queryBill() {
System.out.println("请选择查询方式:");
System.out.println("1. 按照账单编号查询");
System.out.println("2. 按照账单类型查询");
System.out.println("3. 按照账单时间查询");
int choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("请输入账单编号:");
String id = scanner.next();
for (Bill bill : bills) {
if (bill.getId().equals(id)) {
System.out.println(bill);
}
}
break;
case 2:
System.out.println("请输入账单类型:");
String type = scanner.next();
for (Bill bill : bills) {
if (bill.getType().equals(type)) {
System.out.println(bill);
}
}
break;
case 3:
System.out.println("请输入账单时间(格式为 yyyy-MM-dd):");
String time = scanner.next();
for (Bill bill : bills) {
if (bill.getTime().equals(time)) {
System.out.println(bill);
}
}
break;
default:
System.out.println("无效操作!");
break;
}
}
private static void countBill() {
System.out.println("请选择统计方式:");
System.out.println("1. 按照账单类型统计");
System.out.println("2. 按照账单时间统计");
int choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("请输入要统计的账单类型:");
String type = scanner.next();
double total = 0;
for (Bill bill : bills) {
if (bill.getType().equals(type)) {
total += bill.getAmount();
}
}
System.out.println(type + " 类型账单总金额为:" + total);
break;
case 2:
System.out.println("请输入要统计的账单时间(格式为 yyyy-MM-dd):");
String time = scanner.next();
double total2 = 0;
for (Bill bill : bills) {
if (bill.getTime().equals(time)) {
total2 += bill.getAmount();
}
}
System.out.println(time + " 时间账单总金额为:" + total2);
break;
default:
System.out.println("无效操作!");
break;
}
}
private static void modifyBill() {
System.out.println("请输入要修改的账单编号:");
String id = scanner.next();
for (Bill bill : bills) {
if (bill.getId().equals(id)) {
System.out.println("请输入新的账单类型(原来的类型为 " + bill.getType() + "):");
String type = scanner.next();
System.out.println("请输入新的账单金额(原来的金额为 " + bill.getAmount() + "):");
double amount = scanner.nextDouble();
System.out.println("请输入新的账单时间(格式为 yyyy-MM-dd,原来的时间为 " + bill.getTime() + "):");
String time = scanner.next();
bill.setType(type);
bill.setAmount(amount);
bill.setTime(time);
System.out.println("账单修改成功!");
return;
}
}
System.out.println("未找到对应账单!");
}
private static void deleteBill() {
System.out.println("请输入要删除的账单编号:");
String id = scanner.next();
for (int i = 0; i < bills.size(); i++) {
if (bills.get(i).getId().equals(id)) {
bills.remove(i);
System.out.println("账单删除成功!");
return;
}
}
System.out.println("未找到对应账单!");
}
}
class Bill {
private String id;
private String type;
private double amount;
private String time;
public Bill(String id, String type, double amount, String time) {
this.id = id;
this.type = type;
this.amount = amount;
this.time = time;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
@Override
public String toString() {
return "账单编号:" + id + ",账单类型:" + type + ",账单金额:" + amount + ",账单时间:" + time;
}
}
```
这个实现比较简单,主要是使用了 ArrayList 来保存账单信息,并通过 switch-case 语句来实现不同的操作。你可以根据需要自行扩展功能或改进实现。