package com.liu.dianhua;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import com.mchange.v2.c3p0.ComboPooledDataSource;
/**
* 业务处理类
* 对添加、查询、修改、修改、删除、排序等信息子菜单的业务逻辑
* 以及访问数据库的具体实现
* @author Administrator
*
*/
//业务处理类
public class Operate
{
private List list; //集合
// 用户添加信息业务逻辑控制
public void addLogic()
{
while(true)
{
switch(new TelNoteRegex().menuRegex(1, 3))
{case 1:
TelNoteRegex te =new TelNoteRegex();
addOperation(te.nameRegex(),te.ageRegex(),
te.sexRegex(),te.telNumRegex(), te.addressRegex()) ;
break;
case 2:
List lp =new Operate().showAll();//查找所有
for(Person pe:lp)
{
System.out.println(pe);
}
break;
case 3:
new Menu().mainMenu();//返回上一级主菜单
break;
default :
System.out.println("您输入的内容超出范围");
new Menu().addMenu();//返回添加用户的菜单
break;
}
//break;
}
}
//用户查询信息业务逻辑控制
public void searchLogic()
{
while(true)
{
switch(new TelNoteRegex().menuRegex(1, 7))
{case 1: //按姓名查找
System.out.println("请输入姓名,1-10位字母");
Scanner sc=new Scanner(System.in);
String xm =sc.nextLine();
Operate op=new Operate();
List pe=op.searchByName(xm);
for(Person p:pe)//遍历符合姓名的结果
{
System.out.println(p);
}
break;
case 2://按年龄个查找
System.out.println("请输入年龄,1-100");
Scanner sc1=new Scanner(System.in);
String nl= sc1.nextLine();
Operate op1=new Operate();
List pe2=op1.searchByAge(nl);//调用按年龄查找的方法
for(Person p:pe2)//遍历符合年龄的结果
{
System.out.println(p);
}
break;
case 3://按性别查找
System.out.println("请输入性别,男、 m或M,女、 f或F");
Scanner sc2=new Scanner(System.in);
String sex =sc2.nextLine();
Operate op2=new Operate();
List pe3=op2.searchBySex(sex);//调用按性别查找的方法
for(Person p:pe3)//遍历符合性别的结果
{
System.out.println(p);
}
break;
case 4://按电话查找
System.out.println("输入电话号码");
Scanner sc3=new Scanner(System.in);
String telnum =sc3.nextLine();
Operate op3=new Operate();
Listpe4=op3.searchByTelNum(telnum);//调用按电话查找的方法
for(Person p:pe4)//遍历符合电话的结果
{
System.out.println(p);
}
break;
case 5://按地址查找
System.out.println("请输入地址");
Scanner sc4=new Scanner(System.in);
String address =sc4.nextLine();
Operate op4=new Operate();
Listpe5=op4.searchByAdd(address);//调用按电话查找的方法
for(Person p:pe5)//遍历符合地址的结果
{
System.out.println(p);
}
break;
case 6:
List lp =new Operate().showAll();//查找所有
for(Person pk:lp)
{
System.out.println(pk);
}
break;
case 7:
new Menu().mainMenu();//返回上一级主菜单
break;
default :
System.out.println("您输入的内容超出范围");
new Menu().searchMenu();//返回查找用户的菜单
break;
}
//break;
}
}
// 修改信息业务逻辑控制
public void modifyLogicLogic()
{
while(true)
{
switch(new TelNoteRegex().menuRegex(1, 3))
{
case 1:
List lp =new Operate().showAll();//查找所有
for(Person pk:lp)
{
System.out.println(pk);
}
break;
case 2:
Menu mn=new Menu();
mn.subModifyMenu();
break;
case 3:
new Menu().mainMenu();//返回上一级主菜单
break;
default :
System.out.println("您输入的内容超出范围");
new Menu().modifyMenu();//返回修改用户的菜单
break;
}
//break;
}
}
//删除信息业务逻辑控制
public void deleteLogic()
{
while(true)
{
switch(new TelNoteRegex().menuRegex(1, 4))
{
case 1:
List lp =new Operate().showAll();//查找所有
for(Person pk:lp)
{
System.out.println(pk);
}
break;
case 2:
System.out.println("请输入要删除的序号");
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
Operate op=new Operate();
op.delete(a);
break;
case 3:
new Operate().deleteAll();
break;
case 4:
new Menu().mainMenu();
break;
default :
System.out.println("您输入的内容超出范围");
new Menu().deleteMenu();//返回删改用户的菜单
break;
}
}
}
//排序信息业务逻辑控制
public void orderLogic()
{
while(true)
{
switch(new TelNoteRegex().menuRegex(1, 5))
{
case 1://按姓名排序
List pe2=new Operate().orderName();//调用按姓名排序的方法
for(Person p:pe2)//遍历符合年龄的结果
{
System.out.println(p);
}
break;
case 2://按年龄排序
List pe3=new Operate().orderAge();//调用按姓名排序的方法
for(Person p:pe3)//遍历符合年龄的结果
{
System.out.println(p);
}
break;
case 3://按性别排序
List pe4=new Operate().orderSex();//调用按姓名排序的方法
for(Person p:pe4)//遍历符合年龄的结果
{
System.out.println(p);
}
break;
case 4:
List lp =new Operate().showAll();//查找所有
for(Person pk:lp)
{
System.out.println(pk);
}
break;
case 5:
new Menu().mainMenu();
break;
default :
System.out.println("您输入的内容超出范围");
new Menu().orderMenu();//返回排序用户的菜单
break;
}
break;
}
}
///添加新用户信息
public boolean addOperation (String name,String age,String sex,String telnum,String address)
{
boolean rtn=false;
//构建连接池
ComboPooledDataSource cp=new ComboPooledDataSource("helloc3p0");
try {
//获取数据库连接
Connection conn=cp.getConnection();
String sql= "insert into person "
+ "values(test_seq.nextval,?,?,?,?,?)";
//获得访问数据库的声明
PreparedStatement ps =conn.prepareStatement(sql);
ps.setString(1, name);
ps.setString(2, age);
ps.setString(3, sex);
ps.setString(4, telnum);
ps.setString(5, address);
ps.executeUpdate();
System.out.println("添加联系人成功");
ps.close();
conn.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return rtn;
}
//查询全部用户信息
public List showAll()
{
list = new ArrayList<>();
//获得数据库连接
Connection conn;
ComboPooledDataSource cp=new ComboPooledDataSource("helloc3p0");
try
{
//配置连接池cp
conn=cp.getConnection();
//获取操作数据库声明
Statement st = conn.createStatement();
//查询结果集
ResultSet rs = st.executeQuery("select * from person");
//便利结果集
while(rs.next())
{
Person pe =new Person();
pe.setId(rs.getInt("id"));
pe.setName(rs.getString("name"));
pe.setAge(rs.getString("age"));
pe.setSex(rs.getString("sex"));
pe.setTelNum(rs.getString("telnum"));
pe.setAddress(rs.getString("address"));
list.add(pe);
}
rs.close();
st.close();
conn.close();
cp.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return list;
}
//按姓名查询用户信息
public List searchByName(String name)
{
list = new ArrayList<>();
//获得数据库连接
Connection conn;
try
{
ComboPooledDataSource cp=new ComboPooledDataSource("helloc3p0");
//配置连接池cp
conn=cp.getConnection();
String sql="select *from person where name=?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, name);
ResultSet rs = ps.executeQuery();
//便利结果集
if(rs.next())
{
rs = ps.executeQuery();
while(rs.next())
{
Person pe =new Person();
pe.setId(rs.getInt("id"));
pe.setName(rs.getString("name"));
pe.setAge(rs.getString("age"));
pe.setSex(rs.getString("sex"));
pe.setTelNum(rs.getString("telnum"));
pe.setAddress(rs.getString("address"));
list.add(pe);
}
}
else
{
System.out.println("该姓名的信息不存在,请重新输入");
}
rs.close();
ps.close();
conn.close();
cp.close();
} catch (SQLException e)
{
e.printStackTrace();
}
return list;
}
//按年龄查询用户信息
public List searchByAge(String age)
{
list = new ArrayList<>();
//获得数据库连接
Connection conn;
try
{
ComboPooledDataSource cp=new ComboPooledDataSource("helloc3p0");
//配置连接池cp
conn=cp.getConnection();
String sql="select *from person where age=?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, age);
ResultSet rs = ps.executeQuery();
//便利结果集
if(rs.next())
{
rs = ps.executeQuery();
while(rs.next())
{
Person pe =new Person();
pe.setId(rs.getInt("id"));
pe.setName(rs.getString("name"));
pe.setAge(rs.getString("age"));
pe.setSex(rs.getString("sex"));
pe.setTelNum(rs.getString("telnum"));
pe.setAddress(rs.getString("address"));
list.add(pe);
}
}
else
{
System.out.println("该年龄的用户信息不存在,请重新输入");
}
rs.close();
ps.close();
conn.close();
cp.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return list;
}
//按性别查询用户信息
public List searchBySex(String sex)
{
list = new ArrayList<>();
//获得数据库连接
Connection conn;
try
{
ComboPooledDataSource cp=new ComboPooledDataSource("helloc3p0");
//配置连接池cp
conn=cp.getConnection();
String sql="select *from person where sex=?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, sex);
ResultSet rs = ps.executeQuery();
//便利结果集
if(rs.next())
{
rs = ps.executeQuery();
while(rs.next())
{
Person pe =new Person();
pe.setId(rs.getInt("id"));
pe.setName(rs.getString("name"));
pe.setAge(rs.getString("age"));
pe.setSex(rs.getString("sex"));
pe.setTelNum(rs.getString("telnum"));
pe.setAddress(rs.getString("address"));
list.add(pe);
}
}
else
{
System.out.println("该性别的用户信息不存在,请重新输入");
}
rs.close();
ps.close();
conn.close();
cp.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return list;
}
//按电话号码查询用户信息
public List searchByTelNum(String telnum)
{
list = new ArrayList<>();
//获得数据库连接
Connection conn;
try
{
ComboPooledDataSource cp=new ComboPooledDataSource("helloc3p0");
//配置连接池cp
conn=cp.getConnection();
String sql="select *from person where telnum=?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, telnum);
ResultSet rs = ps.executeQuery();
//便利结果集
if(rs.next())
{
rs = ps.executeQuery();
while(rs.next())
{
Person pe =new Person();
pe.setId(rs.getInt("id"));
pe.setName(rs.getString("name"));
pe.setAge(rs.getString("age"));
pe.setSex(rs.getString("sex"));
pe.setTelNum(rs.getString("telnum"));
pe.setAddress(rs.getString("address"));
list.add(pe);
}
}
else
{
System.out.println("该电话的信息不存在,请重新输入");
}
rs.close();
ps.close();
conn.close();
cp.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return list;
}
//按地址查询用户信息
public List searchByAdd(String address)
{
list = new ArrayList<>();
//获得数据库连接
Connection conn;
try
{
ComboPooledDataSource cp=new ComboPooledDataSource("helloc3p0");
//配置连接池cp
conn=cp.getConnection();
String sql="select *from person where sex=?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, address);
ResultSet rs = ps.executeQuery();
if(rs.next())//便利结果集
{
rs = ps.executeQuery();
while(rs.next())
{
Person pe =new Person();
pe.setId(rs.getInt("id"));
pe.setName(rs.getString("name"));
pe.setAge(rs.getString("age"));
pe.setSex(rs.getString("sex"));
pe.setTelNum(rs.getString("telnum"));
pe.setAddress(rs.getString("address"));
list.add(pe);
}
}
else
{
System.out.println("该地址的用户信息不存在,请重新输入");
}
rs.close();
ps.close();
conn.close();
cp.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return list;
}
//修改指定记录信息
public void modify()
{
//Menu m=new Menu();
//m.subModifyMenu();//调用修改用户记录的子菜单
while(true)
{
switch(new TelNoteRegex().menuRegex(1, 6))
{case 1: //按姓名修改
System.out.println("请输入要修改姓名的id");
Scanner sc0=new Scanner(System.in);
int id=sc0.nextInt();
System.out.println("请输入姓名,1-10位字母");
Scanner sc=new Scanner(System.in);
String xm =sc.nextLine();
Operate op=new Operate();
op.modifyName(xm, id);
new Menu().subModifyMenu();
break;
case 2://按年龄个修改
System.out.println("请输入要修改年龄 的id");
Scanner s=new Scanner(System.in);
int id1=s.nextInt();
System.out.println("请输入年龄,1-100");
Scanner sc1=new Scanner(System.in);
String nl= sc1.nextLine();
new Operate().modifyAge(nl, id1);
new Menu().subModifyMenu();
break;
case 3://按性别修改
System.out.println("请输入要修改性别的id");
Scanner s1=new Scanner(System.in);
int id2=s1.nextInt();
System.out.println("请输入性别,男、 m或M,女、 f或F");
Scanner sc2=new Scanner(System.in);
String sex =sc2.nextLine();
new Operate().modifysex(sex, id2);
new Menu().subModifyMenu();
break;
case 4://按电话修改
System.out.println("请输入要修改电话的id");
Scanner s2=new Scanner(System.in);
int id3=s2.nextInt();
System.out.println("输入电话号码");
Scanner sc3=new Scanner(System.in);
String telnum =sc3.nextLine();
new Operate().modifyTelnum(telnum, id3);
new Menu().subModifyMenu();
break;
case 5://按地址修改
System.out.println("请输入要修改地址的id");
Scanner s3=new Scanner(System.in);
int id4=s3.nextInt();
System.out.println("请输入地址");
Scanner sc4=new Scanner(System.in);
String address =sc4.nextLine();
new Operate().modifyAddress(address, id4);
new Menu().subModifyMenu();
break;
case 6://返回上一级
new Menu().modifyMenu();//修改用户信息子菜单
}
}
}
//根据id修改姓名
public void modifyName(String name,int id)
{
//获得数据库连接
Connection conn;
try
{
ComboPooledDataSource cp=new ComboPooledDataSource("helloc3p0");
//配置连接池cp
conn=cp.getConnection();
String sql="update Person set name=?where id=?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, name);
ps.setInt(2, id);
int k=ps.executeUpdate();//查询结果集
if(k==1)
{
System.out.println("修改姓名成功");
}
else
{
System.out.println("修改姓名失败,该用户id不存在");
}
conn.close();
}
catch (SQLException e)
{
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
//根据id修改年龄
public void modifyAge(String age,int id)
{
//获得数据库连接
Connection conn;
try
{
ComboPooledDataSource cp=new ComboPooledDataSource("helloc3p0");
//配置连接池cp
conn=cp.getConnection();
String sql="update Person set age=?where id=?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, age);
ps.setInt(2, id);
int k=ps.executeUpdate();//查询结果集
if(k==1)
{
System.out.println("修改年龄成功");
}
else
{
System.out.println("修改年龄失败,该用户id不存在");
}
conn.close();
}
catch (SQLException e)
{
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
//根据id修改性别
public void modifysex(String sex,int id)
{
//获得数据库连接
Connection conn;
try
{
ComboPooledDataSource cp=new ComboPooledDataSource("helloc3p0");
//配置连接池cp
conn=cp.getConnection();
String sql="update Person set sex=?where id=?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, sex);
ps.setInt(2, id);
int k=ps.executeUpdate();//查询结果集
if(k==1)
{
System.out.println("修改性别成功");
}
else
{
System.out.println("修改性别失败,该用户id不存在");
}
conn.close();
}
catch (SQLException e)
{
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
//根据id修改号码
public void modifyTelnum(String telnum,int id)
{
//获得数据库连接
Connection conn;
try
{
ComboPooledDataSource cp=new ComboPooledDataSource("helloc3p0");
//配置连接池cp
conn=cp.getConnection();
String sql="update Person set telnum=?where id=?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, telnum);
ps.setInt(2, id);
int k=ps.executeUpdate();//查询结果集
if(k==1)
{
System.out.println("修改号码成功");
}
else
{
System.out.println("修改号码失败,该用户id不存在");
}
conn.close();
}
catch (SQLException e)
{
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
//根据id修改地址
public void modifyAddress(String address,int id)
{
//获得数据库连接
Connection conn;
try
{
ComboPooledDataSource cp=new ComboPooledDataSource("helloc3p0");
//配置连接池cp
conn=cp.getConnection();
String sql="update Person set address=?where id=?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, address);
ps.setInt(2, id);
int k=ps.executeUpdate();//查询结果集
if(k==1)
{
System.out.println("修改地址成功");
}
else
{
System.out.println("修改地址失败,该用户id不存在");
}
conn.close();
}
catch (SQLException e)
{
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
//删除指定用户信息
public void delete(int id)
{
//获得数据库连接
Connection conn;
try
{
ComboPooledDataSource cp=new ComboPooledDataSource("helloc3p0");
//配置连接池cp
conn=cp.getConnection();
String sql="delete Person where id=?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setInt(1, id);
int k=ps.executeUpdate();//查询结果集
if(k==1)
{
System.out.println("删除成功");
}
else
{
System.out.println("删除失败,该用户id不存在");
}
conn.close();
}
catch (SQLException e)
{
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
//删除全部用户信息
public void deleteAll()
{
//获得数据库连接
Connection conn;
try
{
ComboPooledDataSource cp=new ComboPooledDataSource("helloc3p0");
//配置连接池cp
conn=cp.getConnection();
String sql="truncate table Person ";
PreparedStatement ps=conn.prepareStatement(sql);
ps.executeUpdate();//查询结果集
System.out.println("电话博内容已清空,请继续操作");
conn.close();
}
catch (SQLException e)
{
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
//按用户姓名排序信息
public List orderName( )
{
list = new ArrayList<>();
//获得数据库连接
Connection conn;
ComboPooledDataSource cp=new ComboPooledDataSource("helloc3p0");
try
{
//配置连接池cp
conn=cp.getConnection();
//获取操作数据库声明
Statement st = conn.createStatement();
//查询结果集
ResultSet rs = st.executeQuery("select * from Person order by name");
//便利结果集
while(rs.next())
{
Person pe =new Person();
pe.setId(rs.getInt("id"));
pe.setName(rs.getString("name"));
pe.setAge(rs.getString("age"));
pe.setSex(rs.getString("sex"));
pe.setTelNum(rs.getString("telnum"));
pe.setAddress(rs.getString("address"));
list.add(pe);
}
rs.close();
st.close();
conn.close();
cp.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return list;
}
//按用户年龄排序信息
public List orderAge()
{
list = new ArrayList<>();
//获得数据库连接
Connection conn;
ComboPooledDataSource cp=new ComboPooledDataSource("helloc3p0");
try
{
//配置连接池cp
conn=cp.getConnection();
//获取操作数据库声明
Statement st = conn.createStatement();
//查询结果集
ResultSet rs = st.executeQuery("select * from Person order by age");
//便利结果集
while(rs.next())
{
Person pe =new Person();
pe.setId(rs.getInt("id"));
pe.setName(rs.getString("name"));
pe.setAge(rs.getString("age"));
pe.setSex(rs.getString("sex"));
pe.setTelNum(rs.getString("telnum"));
pe.setAddress(rs.getString("address"));
list.add(pe);
}
rs.close();
st.close();
conn.close();
cp.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return list;
}
//按用户性别排序信息
public List orderSex()
{
list = new ArrayList<>();
//获得数据库连接
Connection conn;
ComboPooledDataSource cp=new ComboPooledDataSource("helloc3p0");
try
{
//配置连接池cp
conn=cp.getConnection();
//获取操作数据库声明
Statement st = conn.createStatement();
//查询结果集
ResultSet rs = st.executeQuery("select * from Person order by sex");
//便利结果集
while(rs.next())
{
Person pe =new Person();
pe.setId(rs.getInt("id"));
pe.setName(rs.getString("name"));
pe.setAge(rs.getString("age"));
pe.setSex(rs.getString("sex"));
pe.setTelNum(rs.getString("telnum"));
pe.setAddress(rs.getString("address"));
list.add(pe);
}
rs.close();
st.close();
conn.close();
cp.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return list;
}
}