项目描述

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

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

1.1 编写目的

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

1.2 实训范围

Java基础部分

2项目流程图

2.1业务流程结构图

2.2基本操作流程图

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

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

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

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

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

 

 

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

 

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

 

 

 

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

 

 

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

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

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

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

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

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

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

按姓名排序结果

按年龄排序结果

按性别排序结果

2.3基本设计流程图

2.4类设计流程图

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测试版导致“激活出错”后,如何还原电话本和照片方法

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

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

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

  7. Android-->发送短信页面实现(短信发送以及群发和从电话本中选择联系人)-----------》2

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

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

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

  9. BZOJ 4175: 小G的电话本 SAM+FFT

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

随机推荐

  1. ICP 算法步骤

    The Iterative Closest Point (ICP) is an algorithm employed to match two surface representations, suc ...

  2. 关于MFC OpenGL环境配置的一点总结

    复制include时要小心..看vs给你load哪一个..名字一样..东西可不一定一样哦 http://www.cppblog.com/wicbnu/archive/2010/09/30/128123 ...

  3. Git的安装与使用

    1,下载git https://code.google.com/p/msysgit/downloads/list 2,安装git ,我们选择命令行形式,这样无论在window下还是在linux下 都可 ...

  4. 【转】Spark性能优化指南——基础篇

    http://mp.weixin.qq.com/s?__biz=MjM5NDMwNjMzNA==&mid=2651805828&idx=1&sn=2f413828d1fdc6a ...

  5. hdu 1370 Biorthythms 中国剩余定理

    Biorhythms Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  6. HTML5 重要标签及其属性学习

    1.google字体:<link href="https://fonts.googleapis.com/css?family=Lobster" rel="style ...

  7. wpf,ListBox,ScrollViewer内容向左向右偏移指定位置

    public partial class Example : UserControl { private ScrollViewer myScrollViewer; public Example() { ...

  8. Android 自动化测试—robotium(八) 拖拽

    本文来源于:http://xiaomaozi.blog.51cto.com/925779/933056 SeekBar控件 代码实现:http://luwenjie.blog.51cto.com/92 ...

  9. Ue4全景图制作设想

    官方有个Scene Capture Cube与Cube Rander Target. 之后再想办法生成文件就好了吧

  10. 仅在TabControl中的Tab中添加右键菜单

    若想实现仅在TabControl中的Tab中添加右键菜单,可在XAML中通过使用样式得到: <TabControl> <TabControl.ItemContainerStyle&g ...