packagecom.company.gjp.view;/** 视图层,用户看到和操作的界面
* 数据传递给controller层实现
* 成员位置,创建controller对象*/
importjava.util.List;importjava.util.Scanner;importcom.company.gjp.controller.ZhangWuController;importcom.company.gjp.domain.ZhangWu;public classMainView {private ZhangWuController controller=newZhangWuController();/** 实现界面效果
* 接受用户的输入
* 根据数据,调用不同的功能方法*/
public voidrun(){//创建Scanner类对象,反复键盘输入
Scanner sc=newScanner(System.in);while(true){
System.out.println("---------------管家婆家庭记账软件---------------");
System.out.println("1.添加账务 2.编辑账务 3.删除账务 4.查询账务 5.退出系统");
System.out.println("请输入要操作的功能序号[1-5]:");//接受用户的选择
int choose=sc.nextInt();//对选择的菜单判断,调用不同的功能
switch(choose){case 1://选择添加账务,调用添加账务的方法
addZhangWu();break;case 2:
editZhangWu();//编辑账务,调用编辑账务的方法
break;case 3:
deleteZhangWu();//选择的删除账务,调用删除账务方法
break;case 4:
selectZhangWu();//选择查询账务,调用查询账务的方法
break;case 5:
System.exit(0);
}
}
}/*** 接受键盘输入的账务id
**/
public voiddeleteZhangWu(){
selectAll();
System.out.println("选择的是删除功能,请输入你要删除的账务ID");
Scanner sc=newScanner(System.in);int zwid=sc.nextInt();
controller.deleteZhangWu(zwid);
System.out.println("删除账务成功!");
}/*** 接受键盘输入
* 数据的信息,封装成ZhangWu对象
* 调用控制层的方法,传递ZhangWu对象,实现编辑*/
public voideditZhangWu(){//用查询所有账务数据的功能,显示出来//看到所有数据,从中选择一项,进行修改
selectAll();
System.out.println("选择的是编辑功能,请输入数据");
Scanner sc=newScanner(System.in);//接受用户的数据
System.out.println("输入ID:");int zwid=sc.nextInt();
System.out.print("请输入类别:");
String flname=sc.next();
System.out.print("请输入账户:");
String zhanghu=sc.next();
System.out.print("请输入金额:");
Double money=sc.nextDouble();
System.out.print("请输入时间:");
String createtime=sc.next();
System.out.print("请输入说明:");
String description=sc.next();//将所有用户输入的数据,封装到ZhangWu对象中//输入的ID,必须封装对象
ZhangWu zw=newZhangWu(zwid,flname,money,zhanghu,createtime,description);//调用controller层中的方法,编辑账务
controller.editZhangWu(zw);
System.out.println("账务编辑成功!");
}/*** 接受键盘输入,5项输入,调用controller层方法*/
public voidaddZhangWu(){
Scanner sc= newScanner(System.in);
System.out.print("请输入类别:");
String flname=sc.next();
System.out.print("请输入账户:");
String zhanghu=sc.next();
System.out.print("请输入金额:");
Double money=sc.nextDouble();
System.out.print("请输入时间:");
String createtime=sc.next();
System.out.print("请输入说明:");
String description=sc.next();//将接收到的数据,调用controller层的方法,传递参数//将用户输入的所有参数,封装成ZhangWu对象
ZhangWu zw=new ZhangWu(0,flname,money,zhanghu,createtime,description);
controller.addZhangWu(zw);
System.out.println("恭喜你添加账务成功");
}/** 定义方法selectZhangWu()
* 显示查询的方式1.所有查询 2.条件查询
* 接受用户的选择*/
public voidselectZhangWu(){
System.out.println("1.查询所有 2.条件查询");
Scanner sc=newScanner(System.in);int selectChoose=sc.nextInt();//判断根据用户的选择,调用不同的功能
switch(selectChoose){case 1:
selectAll();break;case 2:
select();break;
}
}/*** 定义方法,实现查询所有的账务数据*/
public voidselectAll(){//调用控制中的方法,查询账务的数据
List list=controller.selectAll();//输出表头
print(list);
}/*** 定义方法,实现条件查询账务数据
* 提供用户的输入日期,开始日期结束日期
* 就2个日期,传递到controller层
* 调用controller的方法,传递2个日期参数
* 获取controller查询的结果集,打印出来*/
public voidselect(){
System.out.println("选择条件查询,格式xxxx-xx-xx");
Scanner sc=newScanner(System.in);
System.out.println("请输入开始日期:");
String startDate=sc.nextLine();
System.out.println("输入结束的日期:");
String endDate=sc.nextLine();//调用controller层的方法,传递日期,获取查询结果集
List list=controller.select(startDate, endDate);if(list.size()!=0){
print(list);
}else{
System.out.println("没有查询到数据");
}
}//输出账务数据方法,接受List集合,遍历集合,输出表格
private void print(Listlist) {
System.out.println("ID\t\t类别\t\t账户\t\t金额\t\t时间\t\t说明");//遍历集合,结果输出控制台
for(ZhangWu zw:list){
System.out.println(zw.getZwid()+"\t\t"+zw.getFlname()+"\t\t"+zw.getZhanghu()+"\t\t"+zw.getMoney()+"\t\t"+zw.getCreatetime()+"\t\t"+zw.getDescription());
}
}
}