电话本管理系统java实现
程序员文章站
2022-04-03 18:01:42
...
项目图片:telephone项目
所用到的包:
’
Person类:
public class Person {
private int Id; //ID
private String Name; //姓名
private String Phonenumber; //电话号码
private int Age; //年龄
private String Gender; //性别
private String Address; //地址
public void setName(String name) {
Name = name;
}
public void setId(int id) {
Id = id;
}
public void setPhonenumber(String phonenumber) {
Phonenumber = phonenumber;
}
public void setAge(int age) {
Age = age;
}
public void setGender(String gender) {
Gender = gender;
}
public void setAddress(String address) {
Address = address;
}
public String getName() {
return Name;
}
public int getId() {
return Id;
}
public String getPhonenumber() {
return Phonenumber;
}
public int getAge() {
return Age;
}
public String getGender() {
return Gender;
}
public String getAddress() {
return Address;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return Age == person.Age &&
Objects.equals(Name, person.Name) &&
Objects.equals(Phonenumber, person.Phonenumber) &&
Objects.equals(Gender, person.Gender) &&
Objects.equals(Address, person.Address);
}
@Override
public int hashCode() {
return Objects.hash(Name, Phonenumber, Age, Gender, Address);
}
@Override
public String toString() {
return
"姓名:" + Name + "\t"+
"电话:" + Phonenumber + "\t" +
"年龄:" + Age +"\t" +
"性别:" + Gender +"\t" +
"地址:" + Address;
}
//满参构造函数
public Person(int id,String name,int age,String phonenumber, String gender, String address) {
Id = id;
Name = name;
Phonenumber = phonenumber;
Age = age;
Gender = gender;
Address = address;
}
//空参构造函数
public Person(){}
}
JDBCTools类:
public class JDBCTools {
//1.定义成员变量 DataSource
private static DataSource ds;
static{
try{
//1.加载配置文件
Properties pro = new Properties();
pro.load(JDBCTools.class.getClassLoader().getResourceAsStream("druid.properties"));
//2.获取DataSource
ds = DruidDataSourceFactory.createDataSource(pro);
}catch (IOException e){
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* 获取连接
* */
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
/*
* 获取连接池方法
* */
public static DataSource getDataSource(){
return ds;
}
/*
* 释放资源
* */
public static void close(Statement stmt, Connection conn){
JDBCTools.close(null,stmt,conn);
}
/**
* 释放资源
*/
public static void close(ResultSet rs, Statement stmt, Connection conn){
if (rs!=null) {
try {
rs.close(); //归还连接
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt!=null){
try{
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
LinkMySQL类:
private static LinkMySQL INSTANCE = new LinkMySQL();
private LinkMySQL(){}; //私有化构造方法
public static LinkMySQL getINSTANCE() {
return INSTANCE;
}
//从数据库中获取数据
public List<Person> GetContainter() {
/**
* 完成添加操作: 给account表添加一条
* */
//1.获取连接
Connection conn = null;
Statement pstmt = null;
ResultSet rs = null;
List<Person> link = null;
try {
conn = JDBCTools.getConnection();
pstmt = conn.createStatement();
//定义sql
String sql = "SELECT * FROM Person";
//执行sql
rs = pstmt.executeQuery(sql);
//遍历结果集,封装对象,装载集合
Person person = null;
link = new ArrayList<Person>();
while(rs.next()){
//获取数据
int id = rs.getInt("id"); //获取id
String name = rs.getString("NAME"); //获取姓名
String gender = rs.getString("gender"); //获取性别
int age = rs.getInt("age"); //获取年龄
String phonenumber = rs.getString("telephone");//获取电话号码
String address = rs.getString("address"); //获取地址
person = new Person(id,name,age,phonenumber,gender,address);
//装载集合
link.add(person);
}
// System.out.print(link);
} catch (SQLException e) {
e.printStackTrace();
} finally {
//6.释放资源
JDBCTools.close(pstmt, conn);
}
return link;
}
Operation包下
1.MainMenu类:
public class MainMenu {
AddMenu addMenu = new AddMenu(); //创建增加对象
DeletMenu deletMenu = new DeletMenu(); //创建删除对象
ModifyMenu modifyMenu = new ModifyMenu(); //创建修改对象
FindMenu findMenu = new FindMenu(); //创建查找对象
Viewall viewall = new Viewall(); //创建查看对象
Refreshdata refreshdata = new Refreshdata(); //创建刷新对象
public void Main(){
String choise; //选择语句
Scanner sc = new Scanner(System.in); //键盘录入
boolean flag = true; //循环的开关
while(flag){
InterFace.MainInterFace(); //调用主界面
System.out.print("请输入您的选择:");
choise = sc.next(); //从键盘中录入选项
switch (choise){
case "1":
addMenu.Add(); //调用添加方法
break;
case "2":
deletMenu.Delet(); //调用删除方法
break;
case "3":
modifyMenu.Modify(); //调用修改方法
break;
case "4":
findMenu.Find(); //调用修改操作
break;
case "5":
viewall.ViewAll(); //调用查看方法
break;
case "6":
refreshdata.Refresh(); //调用数据库刷新方法
break;
case "0":
flag = false;
break;
default:
System.out.print("输入错误!!!");
System.out.print("\n");
break;
}
}
}
}
2.InterFace类:
package Operation;
//界面类这是一个静态的类,为所有程序提供界面
public class InterFace {
public static void MainInterFace(){
System.out.print("****************主菜单****************\n");
System.out.print("**************************************\n");
System.out.print("--"+"\t"+"\t"+"\t"+"1: 添加通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"2: 删除通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"3: 修改通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"4: 查找通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"5: 查看通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"6: 刷新数据 "+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"0: 退出 "+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("**************************************\n");
System.out.print("****************主菜单****************\n");
}
//添加界面
public static void AddInterFace(){
System.out.print("****************添加界面**************\n");
System.out.print("**************************************\n");
System.out.print("--"+"\t"+"\t"+"\t"+"1: 添加通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"2: 查看通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"0: 返回上一级"+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("**************************************");
System.out.print("\n");
System.out.print("**************************************\n");
}
//删除界面
public static void DelectInterFace(){
System.out.print("****************删除界面**************\n");
System.out.print("**************************************"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"1: 查看通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"2: 删除指定通讯录"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"3: 清空数据库"+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"0: 返回上一级"+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("**************************************"+"\n");
System.out.print("**************************************"+"\n");
}
//修改界面
public static void ModifyInterFace(){
System.out.print("****************修改界面**************\n");
System.out.print("**************************************"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"1: 查看通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"2: 修改姓名 "+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"3: 修改年龄 "+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"4: 修改号码 "+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"5: 修改地址 "+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"0: 返回上一级"+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("**************************************"+"\n");
System.out.print("**************************************"+"\n");
}
//查找界面
public static void FindInterFace(){
System.out.print("****************查找界面**************\n");
System.out.print("**************************************"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"1: 查看通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"2: 按照姓名查找"+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"3: 按照电话查找"+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"4: 按照地址查找"+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("--"+"\t"+"\t"+"\t"+"0: 返回上一级"+"\t"+"\t"+"\t"+"--"+"\n");
System.out.print("**************************************"+"\n");
System.out.print("**************************************"+"\n");
}
}
添加类add:
public class AddMenu {
//增加方法体
public void Add(){
String choise; //选择语句
Scanner sc = new Scanner(System.in); //键盘录入
Viewall vw = new Viewall(); //创建查看类对象
boolean flag = true; //循环的开关
while(flag){
InterFace.AddInterFace(); //调用添加界面
System.out.print("请输入您的选择:");
choise = sc.next(); //从键盘中录入选项
switch (choise){
case "1": //调用添加方法
this.AddBook();
break;
case "2": //调用查看方法
vw.ViewAll();
break;
case "0":
flag = false;
break;
default:
System.out.print("输入错误!!!");
System.out.print("\n");
break;
}
}
}
//添加信息
public void AddBook(){
//1.获取连接
Connection conn = null;
PreparedStatement pstmt = null;
JdbcTemplate template = new JdbcTemplate(JDBCTools.getDataSource());
Scanner sc = new Scanner(System.in); //键盘录入
try{
conn = JDBCTools.getConnection();
String name = null;
String gender = null;
int sex = 0;
int age = 0;
String tell = null;
String address = null;
boolean flag = true; //开关
while(flag){
List<Person> link = LinkMySQL.getINSTANCE().GetContainter(); //获取一个容器用于判断是否有重复元素
switch (1){
case 1:
System.out.print("请输入您要添加的姓名:");
name = sc.next(); //从键盘中获取名字
if (CheckOut.CheckoutName(name)){ //校检名字
System.out.print("格式正确!!");
System.out.print("\n");
}else{
System.out.print("格式错误请重新输入!!");
System.out.print("\n");
flag = false;
break;
}
case 2:
System.out.print("请输入性别:");
gender = sc.next(); //从键盘中录入性别
sex = CheckOut.CheckoutGender(gender);
if(sex==-1){
System.out.print("性别输入格式错误,请重新输入!!");
System.out.print("\n");
flag = false;
break;
}else {
System.out.print("格式正确");
}
case 3:
System.out.print("请输入年龄:");
String uu = sc.next();
if (CheckOut.CheckoutaAge(uu)){
age = Integer.parseInt(uu); //从键盘中录入年龄
System.out.print("输入正确");
System.out.print("\n");
}else {
System.out.print("年龄输入错误");
System.out.print("\n");
flag = false;
break;
}
case 4:
System.out.print("请输入电话:");
tell = sc.next(); //从键盘录入电话
if (CheckOut.CheckoutTell(tell)){
System.out.print("格式正确");
System.out.print("\n");
}else{
System.out.print("输入电话格式错误");
System.out.print("\n");
flag = false;
break;
}
case 5: //怎么校检地址???
System.out.print("请输入地址:");
address = sc.next(); //从键盘中录入地址
case 6: //检查环节
String ab = "y"; //判断是否录入
for(int i = 0;i < link.size();i++){
Person p = link.get(i); //获取对象
if (p.getPhonenumber()!=null){
if(p.getPhonenumber().equals(tell)){
System.out.print("有重复的号码存在!!!\n");
System.out.print("是否覆盖信息? y:覆盖继续录入 n:结束录入 输入其他默认为n\n");
System.out.print("请输入:");
ab = sc.next(); //从键盘录入选项
if (ab.equals("y")){
String sq = "DELETE FROM Person WHERE telephone = ?";
template.update(sq,tell); //将数据插入到数据库中
}else{
break; //结束录入
}
}
}
}
if (!ab.equals("y")){
break;
}
case 7:
//定义sql
String sql="INSERT INTO Person(NAME,gender,telephone,age,address) VALUES(?,?,?,?,?)";
template.update(sql,name,sex,tell,age,address);//将数据插入到数据库中
System.out.print("添加成功");
System.out.print("\n");
case 8:
System.out.print("是否继续添加信息?? "+"\t"+"是:y"+"\t"+"否:n"+"其他操作均为n");
System.out.print("\n");
System.out.print("请输入:");
String c = sc.next(); //录入选项
if(c.equals("y")){
System.out.print("请继续输入");
System.out.print("\n");
}else{
System.out.print("添加结束\n");
flag = false;
break;
}
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
校检类CheckOut:
//校检类 -- 用于检查用户输入的信息是否符合规范
public class CheckOut {
//校检名字
public static Boolean CheckoutName(String name) {
//姓名中可包含汉字和字母
String RULE = "([\u4e00-\u9fa5]+|[a-zA-Z]+)";
Pattern pattern = Pattern.compile(RULE);
Matcher matcher = pattern.matcher(name);
if (matcher.matches()) {
//不包含特殊字符
return true;
} else {
//包含了特殊字符
return false;
}
}
//校检年龄
public static boolean CheckoutaAge(String age){
if(age == null){ //验证是否为空
return false;
}
return age.matches("\\d+"); //使用正则表达式判断该字符串是否为数字,第一个\是转义符,\d+表示匹配1个或 //多个连续数字,"+"和"*"类似,"*"表示0个或多个
}
//校检电话
public static Boolean CheckoutTell(String tell){
Scanner sc = new Scanner(System.in); //键盘录入
String regex = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8}$"; //正则表达式电话规则
return tell.matches(regex);
}
//校检性别
public static int CheckoutGender(String gender){
if (gender.equals("男")){
return 1;
}else if(gender.equals("女")){
return 2;
}else {
return -1;
}
}
}
删除类Delect:
//删除--菜单
public class DeletMenu {
//删除方法体
public void Delet(){
String choise; //选择语句
Scanner sc = new Scanner(System.in); //键盘录入
int a = 0;
Viewall vw = new Viewall(); //创建查看类对象
boolean flag = true; //循环的开关
while (flag){
InterFace.DelectInterFace(); //调用删除界面
System.out.print("\n");
System.out.print("请输入您的选择:");
choise = sc.next(); //从键盘中录入选项
switch (choise){
case "1":
vw.ViewAll(); //调用查看方法并刷新数据库
break;
case "2":
this.delect();
break;
case "3":
this.delectall();
break;
case "0":
flag = false;
break;
}
}
}
//删除指定数据库
public void delect(){
LinkMySQL linkMySQL = LinkMySQL.getINSTANCE(); //获取对象
List<Person> list;
Scanner input = new Scanner(System.in);
Connection conn = null; //1.获取连接
PreparedStatement pstmt = null;
JdbcTemplate template = new JdbcTemplate(JDBCTools.getDataSource());
try{
conn = JDBCTools.getConnection();
System.out.print("请输入您要删除的电话号:");
String tell = input.next(); //从键盘录入电话号码
list = linkMySQL.GetContainter(); //获取当前的存储信息
for (int i = 0;i < list.size();i++){
if (list.get(i).getPhonenumber().equals(tell)){
//定义sql
String sql = "DELETE FROM person WHERE telephone = ?";
template.update(sql,tell);//将数据插入到数据库中
System.out.print("数据删除成功!!");
System.out.print("\n");
return;
}
}
System.out.print("没有该数据");
System.out.print("\n");
} catch (SQLException e) {
e.printStackTrace();
}
}
//清空数据库
public void delectall(){
Connection conn = null; //1.获取连接
PreparedStatement pstmt = null;
JdbcTemplate template = new JdbcTemplate(JDBCTools.getDataSource());
try{
conn = JDBCTools.getConnection();
//定义sql
String sql = "TRUNCATE person"; //数据库清空并创建一个一模一样的新表
template.update(sql);//将数据插入到数据库中
System.out.print("数据库已经清空!!");
System.out.print("\n");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
查找类FInd:
//查找菜单 --- 没啥技术含量的一个类
public class FindMenu {
public void Find(){
LinkMySQL linkMySQL = LinkMySQL.getINSTANCE(); //获取linkMySQL
List<Person> list = linkMySQL.GetContainter(); //获取一个容器
Viewall vw = new Viewall(); //创建一个查看对象
String choise; //选择语句
Scanner sc = new Scanner(System.in); //键盘录入
boolean flag = true; //循环的开关
while (flag){
InterFace.FindInterFace(); //调用查找界面
System.out.print("请输入您的选择:");
choise = sc.next(); //从键盘中录入选项
switch (choise){
case "1":
vw.ViewAll(); //调用查找函数
break;
case "2":
this.FindName(list); //调用姓名查找方法
break;
case "3":
this.FindTell(list); //调用电话查找方法
break;
case "4":
this.FindAdress(list); //调用地址查找方法
break;
case "0": //刷新数据库
flag = false;
break;
default:
System.out.print("输入错误!!请重新输入");
System.out.print("\n");
break;
}
}
}
//按照姓名查找
public void FindName(List<Person> list){
boolean flag = false;
Scanner sc = new Scanner(System.in); //键盘录入
System.out.print("请输入姓名:"); //判断
String name = sc.next(); //从键盘中获取姓名
for(int i = 0;i < list.size();i++){
Person person = list.get(i);
if(person.getName().equals(name)){
System.out.print(person);
System.out.print("\n");
flag = true;
}
}
if (flag){
return;
}
System.out.print("抱歉没有信息!!");
System.out.print("\n");
}
//查找电话
public void FindTell(List<Person> list){
Scanner sc = new Scanner(System.in); //键盘录入
System.out.print("请输入电话:"); //判断
String tell = sc.next(); //从键盘中获取姓名
for(int i = 0;i < list.size();i++){
Person person = list.get(i);
if(person.getPhonenumber().equals(tell)){
System.out.print(person);
System.out.print("\n");
return;
}
}
System.out.print("抱歉没有信息!!");
System.out.print("\n");
}
//查找地址
public void FindAdress(List<Person> list){
boolean flag = false;
Scanner sc = new Scanner(System.in); //键盘录入
System.out.print("请输入地址:"); //判断
String address = sc.next(); //从键盘中获取姓名
for(int i = 0;i< list.size();i++){
Person person = list.get(i);
if (address!=null&&person.getAddress()!=null) {
if (person.getAddress().equals(address)) {
System.out.print(person);
System.out.print("\n");
flag = true;
}
}else {
break;
}
}
if (flag){
return;
}
System.out.print("抱歉没有信息!!");
System.out.print("\n");
}
}
修改类Modify:
//修改菜单
public class ModifyMenu {
LinkMySQL linkMySQL;
List<Person> list;
Viewall vw = new Viewall(); //创建一个查看对象
//修改方法体
public void Modify(){
String choise; //选择语句
Scanner sc = new Scanner(System.in); //键盘录入
linkMySQL = LinkMySQL.getINSTANCE(); //获取唯一数据库连接
list = linkMySQL.GetContainter(); //获取容器
boolean flag = true; //循环的开关
while (flag){
InterFace.ModifyInterFace(); //调用修改界面
System.out.print("请输入您的选择:");
choise = sc.next(); //从键盘中录入选项
switch (choise){
case "1":
list = vw.ViewAll(); //调用查看方法
break;
case "2":
list = this.ModifyName(list); //调用修改姓名方法
break;
case "3":
list = this.ModifyAge(list); //调用年龄
break;
case "4":
this.ModifyTell(list); //调用修改电话操作
break;
case "5":
this.ModifyAddress(list); //调用修改地址操作
break;
case "0":
flag = false;
break;
default: //如果输入错误执行此类
System.out.print("输入错误!!请重新输入");
System.out.print("\n");
break;
}
}
}
//修改姓名
public List<Person> ModifyName(List<Person> list){
Connection conn = null;
Scanner in = new Scanner(System.in); //键盘录入出现重置
PreparedStatement pstmt = null;
JdbcTemplate template = new JdbcTemplate(JDBCTools.getDataSource()); //获取连接
try{
conn = JDBCTools.getConnection(); //获取连接
String name = null; //名字的缓存地址
System.out.print("请输入要修改的姓名:");
name = in.next(); //录入姓名
for (int i = 0; i < list.size(); i++) {
Person p = list.get(i);
if(p.getName().equals(name)&&p.getName()!=null){ //判断数据库中是否包含对应的数据
System.out.print("请输入修改后的姓名:");
String nm = in.next(); //键盘录入修改后的姓名
if (!CheckOut.CheckoutName(nm)){ //判断是否符合规范 不符合怎方法结束
System.out.print("姓名不符合规范!!!\n");
return list;
}
String sql="UPDATE Person SET NAME = ? WHERE NAME = ?";
template.update(sql,nm,name); //将数据插入到数据库中
System.out.print("姓名修改成功");
System.out.print("\n");
return LinkMySQL.getINSTANCE().GetContainter(); //为保证容器的随时刷新返回一个容器
}else if(p.getName() == null){ //如果数据库中的信息为空则直接结束循环
break;
}
}
System.out.print("抱歉没有这个数据");
System.out.print("\n");
}catch (SQLException e) {
e.printStackTrace();
}
return list; //没有修改数据则返回之前的容器
}
//修改年龄
public List<Person> ModifyAge(List<Person> list){
Connection conn = null;
PreparedStatement pstmt = null;
JdbcTemplate template = new JdbcTemplate(JDBCTools.getDataSource());
try{
Scanner in = new Scanner(System.in); //键盘录入出现重置
conn = JDBCTools.getConnection(); //获取连接
System.out.print("请输入姓名:");
String name = in.next(); //录入姓名
for (int i = 0; i < list.size(); i++) {
Person p = list.get(i);
if(p.getName().equals(name)&&p.getName()!=null){ //判断数据库中是否有对应的值
System.out.print("请输入修改后的年龄:");
String uu = in.next();
if (!CheckOut.CheckoutaAge(uu)){ //判断age是否符合规范
System.out.print("年龄不符合规范!!!\n");
return list;
}
int age = Integer.parseInt(uu); //如果姓名信息存在则修改age
String sql="UPDATE Person SET age = ? WHERE NAME = ? ";
template.update(sql,age,name); //将数据插入到数据库中
System.out.print("年龄修改成功");
System.out.print("\n");
return LinkMySQL.getINSTANCE().GetContainter(); //为保证容器的随时刷新返回一个容器
}else if (p.getName()==null){ //数据库为空结束循环
break;
}
}
System.out.print("没有这个数据");
System.out.print("\n");
}catch (SQLException e) {
e.printStackTrace();
}
return list;
}
//修改电话
public List<Person> ModifyTell(List<Person> list){
JdbcTemplate template = new JdbcTemplate(JDBCTools.getDataSource());
Connection conn = null;
PreparedStatement pstmt = null;
try{
Scanner in = new Scanner(System.in); //键盘录入出现重置
conn = JDBCTools.getConnection(); //获取连接
System.out.print("请输入要要修改谁的电话:");
String name = in.next(); //录入姓名
for (int i = 0; i < list.size(); i++) {
Person p = list.get(i);
if(p.getName().equals(name)){ //判断数据库中是否包含数据
System.out.print("请输入修改后的电话:"); //对修改的信息进行判断
String tell = new Scanner(System.in).next(); //如果姓名信息存在则录入电话
if (CheckOut.CheckoutTell(tell)){ //判断录入的是否符合格式
String sql="UPDATE Person SET telephone = ? WHERE NAME = ? ";
template.update(sql,tell,name); //将数据插入到数据库中
System.out.print("电话修改成功");
System.out.print("\n");
list = LinkMySQL.getINSTANCE().GetContainter();//为保证容器的随时刷新返回一个容器
return list;
}else {
System.out.print("电话格式不符合规范!!!\n");
return list;
}
}
}
System.out.print("没有这个数据");
System.out.print("\n");
}catch (SQLException e) {
e.printStackTrace();
}
return list;
}
//修改地址
public List<Person> ModifyAddress(List<Person> link){
JdbcTemplate template = new JdbcTemplate(JDBCTools.getDataSource());
Connection conn = null;
PreparedStatement pstmt = null;
try{
Scanner in = new Scanner(System.in); //键盘录入出现重置
conn = JDBCTools.getConnection(); //获取连接
System.out.print("请输入要要修改谁的地址:");
String name = in.next(); //录入姓名
for (int i = 0; i < link.size(); i++) {
Person p = link.get(i);
if(p.getName().equals(name)){
System.out.print("请输入修改后的地址:"); //对修改的信息进行判断
String address = in.next(); //如果姓名信息存在则修改age
String sql="UPDATE Person SET address = ? WHERE NAME = ? ";
template.update(sql,address,name); //将数据插入到数据库中
System.out.print("地址修改成功");
System.out.print("\n");
return LinkMySQL.getINSTANCE().GetContainter();//为保证容器的随时刷新返回一个容器
}
}
System.out.print("没有这个数据");
System.out.print("\n");
}catch (SQLException e) {
e.printStackTrace();
}
return link;
}
}
对数据库进行刷新类:
public class Refreshdata {
//让MySQL数据库自动刷新id的序号
public void Refresh(){
Connection conn = null;
PreparedStatement pstmt = null;
JdbcTemplate template = new JdbcTemplate(JDBCTools.getDataSource()); //获取连接
try{
conn = JDBCTools.getConnection(); //获取连接
String sql1="ALTER TABLE Person DROP id"; //删除键值id
String sql2="ALTER TABLE Person ADD id INT(3) NOT NULL FIRST"; //重新给id赋值为null
String sql3="ALTER TABLE Person MODIFY COLUMN id INT( 3 ) NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY(id)"; //将id从1开始依次赋值
template.update(sql1); //将数据插入到数据库中
template.update(sql2); //将数据插入到数据库中
template.update(sql3); //将数据插入到数据库中
System.out.print("数据库刷新成功");
System.out.print("\n");
}catch (SQLException e) {
e.printStackTrace();
}
}
}
查看类:
//用于查看数据操作
public class Viewall {
LinkMySQL linkMySQL;
List<Person> list ;
public List<Person> ViewAll(){
linkMySQL = LinkMySQL.getINSTANCE(); //获取连接对象
list = linkMySQL.GetContainter(); //从数据库中获取一个随时刷新的容器
for (int i = 0;i < list.size();i++){
list.get(i).setId(i+1); //通过ID进行排序
Person person = list.get(i);
if (i == 0){
System.out.print("\n");
}
System.out.print("--"+(i+1)+"#:\t"+person+"--");
System.out.print("\n\n");
if (i == (list.size()-1)){
System.out.print("\n");
}
}
return list;
}
}
duird配置文件:
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/number?serverTimezone=Asia/Shanghai
username=root
password=12345qazwsx
#初始化连接数量
initialSize=5
#最大连接数
maxActive=10
#最大等待时间
maxWait=3000
数据库的创建
# 创建性别表
CREATE TABLE sex(
id INT PRIMARY KEY AUTO_INCREMENT,
gender VARCHAR(20)
);
INSERT INTO sex (gender) VALUES ('男'),('女');
# 创建联系人表
CREATE TABLE Person(
id INT(3)UNSIGNED AUTO_INCREMENT PRIMARY KEY,-- Id号
NAME VARCHAR(12), -- 姓名
gender INT, -- 性别
telephone VARCHAR(11) NOT NULL UNIQUE, -- 电话
age INT, -- 年龄
address VARCHAR(20), -- 地址
FOREIGN KEY (gender) REFERENCES sex(id) -- 外键,关联部门表(部门表的主键)
);
INSERT INTO Person(NAME,gender,telephone,age,address) VALUES('帅',1,'15139389215',19,'深圳');
INSERT INTO Person(NAME,gender,telephone,age,address) VALUES('蛋',1,'15139989215',80,'郑州');
INSERT INTO Person(NAME,gender,telephone,age,address) VALUES('冉',2,'13939379621',19,'深圳');
INSERT INTO Person(NAME,gender,telephone,age,address) VALUES('玉',1,'18480415522',19,'南阳');
INSERT INTO Person(NAME,gender,telephone,age,address) VALUES('果',2,'45444334445',19,'黑土地');
SELECT * FROM Person;
SELECT * FROM sex;
SELECT * FROM sex,Person;
DELETE FROM Person WHERE telephone = '15139389215';
DELETE FROM person WHERE telephone = '15139389215';
TRUNCATE person;
UPDATE Person SET age = 15 WHERE NAME = '曹帅龙';
ALTER TABLE Person DROP id;
ALTER TABLE Person ADD id INT(3) NOT NULL FIRST;
ALTER TABLE Person MODIFY COLUMN id INT( 3 ) NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY(id);
SELECT * FROM category ORDER BY id ;
作者寄语:
jar包暂时无法上传。
如果有需要可以直接进行复制粘贴。
程序存在问题,时间效率不高,请大神给一些建议。如果有好的修改方案或者修改后的
成品,希望能发个作者一份 QQ:2902469114
上一篇: 2.5三层架构和DBUtils
推荐阅读
-
abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理五 (二十三)
-
abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理八(二十六)
-
abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理六(二十四)
-
hadoop入门之通过java代码实现将本地文件上传到hadoop的文件系统
-
Java实现企业微信通讯录管理
-
C#实现图书管理系统
-
abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之列表视图(七)
-
python实现名片管理系统
-
abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之增删改视图(八)
-
Python使用文件操作实现一个XX信息管理系统