jdbc模拟电话本。

时间:2022-09-07 12:10:32

项目描述

该项目是用于日常生活中记录联系人信息的一款小工具。

实现了对联系人的姓名、年龄、性别、电话号码、住址的添加及修改、查找、删除、排序等功能。该项目是以windows控制台为运行平台,所有的操作都应在控制台上进行。

1.1 编写目的

  1. 该项目编写的主要目的使学员对以往所学过的知识点做一个统一的复习,将平时所学的内容综合到一起并运用到实际代码编写中。
  2. 该项目能够充分的体现出一些简单的业务流程处理,能够使学员掌握基本的业务流程控制。

1.2 实训范围

Java基础部分

2项目流程图

2.1业务流程结构图

jdbc模拟电话本。

2.2基本操作流程图

2.2.1当运行主程序后可在控制台显示主菜单,用户可选择菜单中的选项进行相应的操作如用户输入的菜单选项超出当前菜单所规定的范围外,程序不予以执行,并返回当前菜单,用户需要重新输入。见(图表1)

jdbc模拟电话本。

2.2.2用户选折1 可进入添加记录的下级子菜单见(图表2)

jdbc模拟电话本。

2.2.3当进入下级子菜单后,用户可根据提示进行用户的添加见(图表3)

jdbc模拟电话本。

2.2.4在添加新联系人时应对所添加的选项进行验证,如果有输入错误应提示见(图表4)

jdbc模拟电话本。

2.2.5添加完毕后可查看电话薄内的全部记录见(图表5)

 

 jdbc模拟电话本。

2.2.6选择返回选项时,可返回上级主菜单见(图表6)

 jdbc模拟电话本。

2.2.7选择2进入查找记录子菜单见(图表7)

 

 jdbc模拟电话本。

 

2.2.8用户可根据具体内容进行相关查询见(图表8)

 jdbc模拟电话本。

 

2.2.9选择3进入修改记录子菜单见(图表9)

jdbc模拟电话本。

2.2.10通过查看全记录,找到要修改联系的ID号对联系人的内容进行相应的修改见(图表10,11)

jdbc模拟电话本。

jdbc模拟电话本。

2.2.11选择4进入删除记录子菜单见(图表12)。

jdbc模拟电话本。

2.2.12删除共分为删除指定记录和删除全部两种操作。删除指定记录时需要输入被删除

人的ID号。删除成功后可继续操作见(图表13,14)

jdbc模拟电话本。

2.2.13删除全部用户。选择该选项可将电话薄清空见(图表15)

jdbc模拟电话本。

2.2.14用户可选择不同的选项对电话薄内的信息进行任意排序见(图表16,17,18,19)

jdbc模拟电话本。

按姓名排序结果

jdbc模拟电话本。

按年龄排序结果

jdbc模拟电话本。

按性别排序结果

jdbc模拟电话本。

2.3基本设计流程图

jdbc模拟电话本。

2.4类设计流程图

jdbc模拟电话本。

3类名,方法名及变量名的定义

要遵循下列设计要求进行代码编写,仅允许细微调整。

3.1类名:

App  对应  Application(程序入口函数)

Menu 对应  Menu      (菜单类)

Operate 对应  Operate    (业务处理类)

Person 对应  Person (实体类)

3.2方法名:

App类中方法(无成员变量):

main() 程序入口函数

start() 主菜单控制

Operate类中方法及成员变量

private List<Person> list 集合

 

addLogic() 用户添加信息业务逻辑控制

searchLogic() 用户查询信息业务逻辑控制

modifyLogicLogic() 修改信息业务逻辑控制

deleteLogic() 删除信息业务逻辑控制

orderLogic() 排序信息业务逻辑控制

addOperation () 添加新用户信息

showAll() 查询全部用户信息

searchByName() 按姓名查询用户信息

searchByAge() 按年龄查询用户信息

searchBySex() 按性别查询用户信息

searchByTelNum() 按电话号码查询用户信息

searchByAdd() 按地址查询用户信息

modify() 修改指定记录信息

delete() 删除指定用户信息

deleteAll() 删除全部用户信息

orderName() 按用户姓名排序信息

orderAge() 按用户年龄排序信息

orderSex() 按用户性别排序信息

TelNoteRegex类中方法(无成员变量)

menuRegex (int min, int max ) 对菜单输入选项的验证

nameRegex ( ) 对用户输入姓名的验证

ageRegex ( ) 对用户输入年龄的验证

sexRegex ( ) 对用户输入性别的验证

telNumRegex ( ) 对用户输入电话号码的验证

addressRegex ( ) 对用户输入地址的验证

Menu类中的方法(无成员变量)

mainMenu() 主菜单

addMenu () 添加用户菜单

searchMenu () 查找用户菜单

modifyMenu () 修改用户信息主菜单

subModifyMenu () 修改用户信息子菜单

deleteMenu () 删除用户信息菜单

orderMenu () 排序用户信息菜单

Person类中的方法及成员变量

private int id; 用户ID 属性

private String name; 用户姓名属性

private String age; 用户年龄属性

private String sex; 用户性别属性

private String telNum; 用户电话号码属性

private String address; 用户地址属性

Person() 无参数构造方法

Person(String name, String age, String sex, String telNum, String address) 有参数构造方法

getName() 读取用户名

setName(String name) 设置用户名

getAge() 读取用户年龄

setAge(String age) 设置用户年龄

getSex() 读取用户性别

setSex(String sex) 设置用户性别

getTelNum() 读取用户电话号码

setTelNum (String telNum) 设置用户电话号码

getAddress() 读取用户地址

setAddress(String address) 设置用户地址

getID () 读取用户ID号

setID (int ID) 设置用户ID号

toString() 连接字符串方法

4.数据结构

id

ID号

name

姓名

age

年龄

sex

性别

telNum

电话号码

address

住址

Person类数据结构

英文名称                                中文名称

6 运行环境

JDK版本为1.5以上,数据库为Oracle11g以上

操作系统控制台或Eclipse开发工具

7 要求

该项目应个人独立完成,代码编写期间不得抄袭代码。

时间需求:3天

进度要求:

第一天要求能够通过主菜单对各级子菜单进行控制,并实现添加记录。

第二天要求能够实现查找记录,删除记录二个模块。

第三天要求能够实现修改记录,排序记录,以及退出系统功能。

package com.liu.dianhua;
/**
* 程序启动类
* 该类主要是通过主菜单控制方法调用主菜单显示界面
* @author Administrator
*
*/
//程序入口
public class APP {
//程序入口函数
public static void main(String[] args)
{ APP p = new APP() ; p.start();
} //主菜单控制 public void start()
{
Menu a = new Menu() ; a.mainMenu(); } }

  

package com.liu.dianhua;
/**
* 这是一个用户信息的实体类
* 该类有用户ID、姓名、年龄、性别、电话、地址成员属性
* 包含无参和有参构造方法
* 包含 toString() 方法
* 包含 setting 、getting
* @author Administrator
*
*/
public class Person
{ private int id; // 用户ID 属性;
private String name; //用户姓名属性
private String age; //用户年龄属性
private String sex; //用户性别属性
private String telNum; //用户电话号码属性
private String address; //用户地址属性 //有参的构造方法
public Person(String name, String age, String sex, String telNum, String address)
{
super();
this.name = name;
this.age = age;
this.sex = sex;
this.telNum = telNum;
this.address = address;
}
//无参的构造方法 public Person() {
super();
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} public String getTelNum() {
return telNum;
} public void setTelNum(String telNum) {
this.telNum = telNum;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} @Override
public String toString() {
return "Person [序号:" + id + ",    姓名" + name + ",     年龄" + age + ",     性别" + sex + ",    号码" + telNum
+ ",    地址" + address + "]";//teb按钮对齐
} }

  

package com.liu.dianhua;

import java.util.ArrayList;
import java.util.List;
/**
* 菜单类
* 添加用户菜单
* 查找用户菜单
* 修改用户信息主菜单
* 修改用户信息子菜单
* 删除用户信息菜单
* 排序用户信息菜单 * @author Administrator
*
*/
public class Menu
{ //主菜单
public void mainMenu()
{
System.out.println("付五同志的电话簿");
System.out.println();
System.out.println("************************");
List<String> li=new ArrayList<>();
li.add("添加记录 **");
li.add("查找记录 **");
li.add("修改记录 **");
li.add("删除记录 **");
li.add("排序记录 **");
li.add("退出系统 **"); for(int i=0;i<6;i++)
{ System.out.println("** "+(i+1)+" "+li.get(i));
}
System.out.println();
System.out.println("请输入正确的数字,最小是1,最大是6");
while(true)
{
switch (new TelNoteRegex ().menuRegex(1, 6))
{
case 1 :
new Menu().addMenu();
break ;
case 2 :
new Menu().searchMenu();
break;
case 3 : //修改,还有一个子页面未调用
new Menu().modifyMenu();
break;
case 4 :
new Menu().deleteMenu();
break;
case 5:
new Menu().orderMenu();
break;
case 6:
System.out.println("系统将退出。。。。。");
break;

              default :
                   new Menu().mainMenu();
                   break;

			}
break;
}
}
//1.添加用户菜单
public void addMenu()
{
System.out.println();
System.out.println("添加记录");
System.out.println("*******************"); List<String> li=new ArrayList<>();
li.add("添加新记录 **");
li.add("查看全记录 **");
li.add("返回上一级 **"); for(int i=0;i<3;i++)
{
System.out.println("** "+(i+1)+" "+li.get(i));
}
System.out.println();
System.out.println("请输入正确的数字,最小是1,最大是3");
new Operate().addLogic();//调用添加的逻辑判断
}
//2.查找用户菜单
public void searchMenu ()
{
System.out.println();
System.out.println("查找记录");
System.out.println("*******************");
List<String> li=new ArrayList<>();
li.add("按姓名查找 **");
li.add("按年龄查找 **");
li.add("按性别查找 **");
li.add("按号码查找 **");
li.add("按住址查找 **");
li.add("查看全纪录 **");
li.add("返回上一级 **"); for(int i=0;i<7;i++)
{
System.out.println("** "+(i+1)+" "+li.get(i));
}
System.out.println();
System.out.println("请输入正确的数字,最小是1,最大是7");
new Operate().searchLogic();//调用查找的逻辑判断
}
//3.修改用户信息主菜单
public void modifyMenu ()
{
System.out.println();
System.out.println("修改记录");
System.out.println("*******************"); List<String> li=new ArrayList<>();
li.add("查看全记录 **");
li.add("修改指定记录 **");
li.add("返回上一级 **"); for(int i=0;i<3;i++)
{
System.out.println("** "+(i+1)+" "+li.get(i));
}
System.out.println();
System.out.println("请输入正确的数字,最小是1,最大是3");
new Operate().modifyLogicLogic();//调用修改指定记录的逻辑判断
}
//修改用户信息子菜单
public void subModifyMenu ()
{ System.out.println();
System.out.println("修改指定记录菜单");
System.out.println("*******************");
List<String> li=new ArrayList<>();
li.add("修改姓名 **");
li.add("修改年龄 **");
li.add("修改性别 **");
li.add("修改号码 **");
li.add("修改地址 **");
li.add("返回上一级 **"); for(int i=0;i<6;i++)
{
System.out.println("** "+(i+1)+" "+li.get(i));
}
System.out.println();
System.out.println("请输入正确的数字,最小是1,最大是6");
new Operate().modify();//调用修改指定记录信息
}
//4.删除用户信息菜单
public void deleteMenu ()
{
System.out.println();
System.out.println("删除记录");
System.out.println("*******************"); List<String> li=new ArrayList<>();
li.add("查看全记录 **");
li.add("删除指定记录 **");
li.add("删除全部记录 **");
li.add("返回上一级 **"); for(int i=0;i<4;i++)
{
System.out.println("** "+(i+1)+" "+li.get(i));
}
System.out.println();
System.out.println("请输入正确的数字,最小是1,最大是4");
new Operate().deleteLogic();//调用删除的逻辑判断
}
//5.排序用户信息菜单
public void orderMenu ()
{
System.out.println();
System.out.println("排序记录");
System.out.println("*******************");
List<String> li=new ArrayList<>();
li.add("按姓名排序 **");
li.add("按年龄排序 **");
li.add("按性别排序 **");
li.add("查看全部记录 **");
li.add("返回上一级 **"); for(int i=0;i<5;i++)
{
System.out.println("** "+(i+1)+" "+li.get(i));
}
System.out.println();
System.out.println("请输入正确的数字,最小是1,最大是5");
new Operate().orderLogic();
} }

  

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 <Person> 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<Person> 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<Person> 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<Person> 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 <Person>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();
List<Person>pe4=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();
List<Person>pe5=op4.searchByAdd(address);//调用按电话查找的方法
for(Person p:pe5)//遍历符合地址的结果
{
System.out.println(p);
} break;
case 6: List<Person> 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<Person> 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<Person> 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<Person> pe2=new Operate().orderName();//调用按姓名排序的方法
for(Person p:pe2)//遍历符合年龄的结果
{
System.out.println(p);
}
break;
case 2://按年龄排序
List<Person> pe3=new Operate().orderAge();//调用按姓名排序的方法
for(Person p:pe3)//遍历符合年龄的结果
{
System.out.println(p);
}
break;
case 3://按性别排序
List<Person> pe4=new Operate().orderSex();//调用按姓名排序的方法
for(Person p:pe4)//遍历符合年龄的结果
{
System.out.println(p);
}
break; case 4: List<Person> 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<Person> 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<Person> 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<Person> 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<Person> 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<Person> 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<Person> 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<Person> 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<Person> 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<Person> 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;
} }

  

package com.liu.dianhua;

import java.util.Scanner;
/**
* 该类是对输入的判断类
* 对菜单输入选项的验证
* 对用户输入姓名、性别、年龄、手机号、地址的验证
* @author Administrator
*
*/
public class TelNoteRegex
{ // 对菜单输入选项的验证
public int menuRegex (int min, int max )
{
while(true)
{
Scanner sc=new Scanner(System.in);
              int shuzi=0;
try{
               shuzi=sc.nextInt();
}

                catch(Exception e)
              {
              System.out.println("请输入整数");
              }

			if(shuzi>=min&&shuzi<=max)
{
return shuzi;
}
else
{
return -1;
}
}
}
//对用户输入姓名的验证
public String nameRegex ()
{
String xm ;
while(true)
{
System.out.println("请输入姓名,1-10位字母");
Scanner sc=new Scanner(System.in);
xm=sc.nextLine();
String regx ="^[a-zA-Z]{1,10}+$";
if(xm.matches(regx))
{
System.out.println(xm);
break;
}
else
{
System.out.println("您输入的格式不正确");
}
}
return xm; }
//对用户输入年龄的验证
public String ageRegex ()
{
String nl;
while(true)
{
System.out.println("请输入年龄,1-100");
Scanner sc1=new Scanner(System.in);
nl= sc1.nextLine();
String kk="^(?:0|[1-9][0-9]?|100)$";
if(nl.matches(kk))
{
System.out.println(nl);
break;
}
else
{
System.out.println("您输入的年龄不合法");
}
}
return nl;
}
//对用户输入性别的验证
public String sexRegex ( )
{
String sex ;
while(true)
{ System.out.println("请输入性别,男、 m或M,女、 f或F");
Scanner sc2=new Scanner(System.in);
sex =sc2.nextLine(); if(sex.equals("男")||sex.equals("m")||sex.equals("M")||sex.equals("女")||sex.equals("F")||sex.equals("f")) {
System.out.println(sex);
break;
}
else
{
System.out.println( "输入性别不合法");
} }
return sex;
}
//对用户输入电话号码的验证
public String telNumRegex ()
{
String telnum;
while(true)
{
System.out.println("输入电话号码");
Scanner sc3=new Scanner(System.in);
telnum =sc3.nextLine();
String regex="[0-9]{7,11}";
if(telnum.matches(regex))
{
System.out.println(telnum);
break;
}
else
{
System.out.println("号码格式不正确");
}
}
return telnum; }
//对用户输入地址的验证
public String addressRegex ()
{
String address;
while(true)
{
System.out.println("请输入地址");
Scanner sc4=new Scanner(System.in);
address =sc4.nextLine();
String redz="^[a-zA-Z0-9]{1,50}$" ;
if(address.matches(redz))
{
System.out.println(address);
break;
}
else
{
System.out.println("地址输入格式错误");
}
}
return address;
} }

  

jdbc模拟电话本。的更多相关文章

  1. java模拟而一个电话本操作

    哈哈.大家平时都在使用电话本.以下使用java来模拟而一个简单的电话本吧... 首先给出联系人的抽象类 package net.itaem.po; /** * * 电话人的信息 * */ public ...

  2. jdbc电话本项目

    整体思路:在登陆之后才能查看自己的电话本,电话本中包含用户名,联系人名字,电话,性别,分类: 1.登陆注册页面--数据库User表,注册登陆使用 2.电话本的前段显示,用表格和表单, 3.创建存取的电 ...

  3. JavaWeb项目之电话本,两个版本,以及总结反思

    使用技术: Oracle 数据库 前端后台: Servlet + jsp + JDBC + html + css + js 前端界面自定, 但一定实现需要的功能 实现功能: 用户可以登录 登录之后可以 ...

  4. 微信电话本可免费拨打网络电话 通话一分钟约300K流量

    微信电话本新版本于昨日晚间发布,这是一款智能通讯增强软件,通话双方都下载此APP并开通免费通话功能就能使用微信电话本拨打免费网络电话,在对方无法接通情况下还能将音频转向语音信箱,微信电话本目前支持An ...

  5. 苹果IPhone手机由于更新了IOS7 Beta测试版导致&OpenCurlyDoubleQuote;激活出错”后,如何还原电话本和照片方法

    苹果这狗日的,手段果然狠,因为用户提前升级了测试版又没有更新正式版,就突然把手机变砖头,既不让升级正式版,也不让备份手机中的信息,确实有必要这样吗? 我的手机是IPone4s,在看了6月Apple W ...

  6. C语言实现电话本 动态开辟 信息存储于文件

    下面是我用C写的一个电话本小项目,实现的功能有:添加 删除 修改 查找 排序 清空 显示,功能还是比较全的,内存也是动态开辟的.能存储于本地,能从本地读出并显示 头文件部分代码,contact.h: ...

  7. Android--&gt&semi;发送短信页面实现&lpar;短信发送以及群发和从电话本中选择联系人&rpar;-----------》2

    分析下怎么写 首先,我们需要一个输入框,可以手动的输入手机号码, 其次,很少有人愿意手动输入,那么我们需要提供一个按钮来给我们的用户选择自己电话本中的联系人(一次可以选择多个即群发) 然后,我们需要一 ...

  8. 记一次开发:Qt简单电话本程序

    前言 断断续续学习C++一年了,现在要做课设,觉得控制台界面实在太难看,于是用Qt做一个图形化的程序出来. 学习Qt也没有多久,只是了解了个大概,这次开发基本上是啃了2天的官方帮助文档,然后利用各种Q ...

  9. BZOJ 4175&colon; 小G的电话本 SAM&plus;FFT

    4175: 小G的电话本 Time Limit: 45 Sec  Memory Limit: 256 MBSubmit: 195  Solved: 48[Submit][Status][Discuss ...

随机推荐

  1. &lt&semi;转&gt&semi;SQL语句大全

    本文为转载,原文地址:http://www.cnblogs.com/cangqiongbingchen/p/4530333.html 一.基  础 1.说明:创建数据库CREATE DATABASE ...

  2. Google 镜像站搜集&lbrack;转&rsqb;

    Google 镜像站搜集 原文链接:http://www.itechzero.com/google-mirror-sites-collect.html 如果您是以下镜像的作者,并且不希望您的镜像出现在 ...

  3. garbage collection - 垃圾收集

    Professional.JavaScript.for.Web.Developers.3rd.Edition.Jan.2012 JavaScript is a garbage-collected la ...

  4. cocos2d之Box2D详细说明 鼠标联合实现

    cocos2d之Box2D具体解释 鼠标关节实现 DionysosLai2014-5-7 我们常常要移动物理世界中的某个物体,例如说石头.木块等.假设我们直接改变这些物体的位置,让这些物体尾随我们手指 ...

  5. Android 下得到 未安装APK包含信息 等

    很多情况下,我们需要通过APK文件来得到它的一些信息. (此时此APK不一定被安装了) 0. 基础知识:可以通过android.content.Context的方法 getPackageManager ...

  6. Java学习点滴——泛型

    基于<Java编程思想>第四版 前言 虽然Java的泛型在语法上和C++相比是类似的,但在实现上两者是全然不同的. 语法 Java只需要一个<>就可定义泛型.在<> ...

  7. vue项目打包之后js文件过大怎么办?

  8. Java如何从文件中打印与给定模式匹配的所有字符串?

    在Java编程中,如何从文件中打印与给定模式匹配的所有字符串? 以下示例显示了如何使用Util.regex类的Patternname.matcher()方法从文件中打印与给定模式匹配的所有字符串. p ...

  9. 用Elasticsearch做大规模数据的多字段、多类型索引检索

    本文同时发布在我的个人博客 之前尝试了用mysql做大规模数据的检索优化,可以看到单字段检索的情况下,是可以通过各种手段做到各种类型索引快速检索的,那是一种相对简单的场景. 但是实际应用往往会复杂一些 ...

  10. ArcGIS紧凑型切片读取与应用2-webgis动态加载紧凑型切片&lpar;附源码&rpar;

    1.前言 上篇主要讲了一下紧凑型切片的的解析逻辑,这一篇主要讲一下使用openlayers动态加载紧凑型切片的web地图服务. 2.代码实现 上篇已经可以通过切片的x.y.z得对应的切片图片,现在使用 ...