java基于控制台和oracle数据库的通讯录系统

目录

附件2:课程设计任务书

摘  要

一. 需求分析

二.设计流程图

三.代码分析

3.1 方法分析

3.2 菜单栏显示

3.3连接Oracle数据库

四. 功能测试

初始数据库:

4.1 运行Java程序查看初始界面的显示情况(如图1.0)

4.2 查看所有通讯录(如图1.1)

4.3 添加联系人信息

4.4 删一位联系人信息(如图1.5)

4.5 修改一位联系人信息(如图1.6)

4.6 查找一位联系人信息(如图1.7)

最终数据库

五.结果分析

  

随着Internet速度的提高和使用的普及,网络上各式各样的应用层出不穷通讯录系统就是其中的一种。在现实生活中,我们管理通讯录有多种方式,为了进一步提高管理通讯录的效率以及及时更新通讯录,特开发通讯录系统来方便用户使用和管理通讯录。本设计采用Ecilpse编写程序,具有增删改查等一系列功能。同时连接了Oracle数据库,使数据的存储也拥有了保障 。接下来将会从设计需求分析、流程图、代码分析、功能测试、结果分析等几个方面具体来展开说明

关键词:  关键词eclipse;关键词oracle数据库;关键词通讯录

一. 需求分析

1)通讯录信息包括id、姓名、手机号、qq 地址属性;

2)能够保存通讯录信息;

3)能够增加通讯录信息;

4)能够修改通讯录信息;

5)能够删除通讯录信息

6)能够查找通讯录信息

二.设计流程图

三.代码分析

3.1 方法分析

 3.1.1 add方法

public static void add() throws SQLException{

Connection conn=null;

int result = 0;

PreparedStatement ps=null;

System.out.println("请输入你要插入的:id name phone qq address");

Scanner sc=new Scanner(System.in);

int id=sc.nextInt();

String name=sc.next();

int phone=sc.nextInt();

int qq=sc.nextInt();

String address=sc.next();

int alen;

try {

String sa=""+phone; //把数字转成字符串

 alen=sa.length(); //得到长度

DBUtil.aa(alen);

} catch (Exception e) {

System.out.println(e);

}

String sa=""+phone;

alen=sa.length();

if(alen==9) {

try {

//加载驱动

Class.forName("oracle.jdbc.driver.OracleDriver");

//创建连接

conn=DriverManager.getConnection("jdbc:oracle:thin:@DESKTOP-T43AN99:1521:orcl","system","orcl");

//sql语句

String sql="insert into txl(id,name,phone,qq,address) values(?,?,?,?,?)";

//创建statement对象

Statement st=conn.createStatement();

ps= conn.prepareStatement(sql);//开始执行SQL语句,并把结果赋值给ps

//利用set..方法给?赋值

ps.setInt(1,id);

    ps.setString(2,name);

    ps.setInt(3,phone);

    ps.setInt(4,qq);

    ps.setString(5,address);

     result = ps.executeUpdate();//返回更新了几条记录

//执行sql语句

} catch (Exception e) {

e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。

} finally {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。

}

}}

3.1.2 delete方法

static void  delete() throws ClassNotFoundException {

int result = 0;

PreparedStatement ps=null;

Connection conn=null;

System.out.println("请输入你要删除人的姓名");

Scanner sc=new Scanner(System.in);

String name=sc.next();

//1.加载驱动

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

//2.建立连接

conn=DriverManager.getConnection("jdbc:oracle:thin:@DESKTOP-T43AN99:1521:orcl","system","orcl");

//3.写sql

String sql="delete from txl where name=?";

//4.创建Statement对象

Statement st=conn.createStatement();

ps= conn.prepareStatement(sql);//执行sql语句

ps.setString(1,name);

  result = ps.executeUpdate();

  }

 catch (SQLException e) {

e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。

}finally {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。

}

}

}

3.1.3 update方法

static void update() {

Connection conn=null;

int result = 0;

PreparedStatement ps=null;

System.out.println("请输入你要修改入的姓名:");

Scanner sc=new Scanner(System.in);

String name1=sc.next();

System.out.println("请输入你要修改后的id name phone qq address:");

//给需要更改人的信息重输入

int id=sc.nextInt();

String name=sc.next();

int phone=sc.nextInt();

int qq=sc.nextInt();

String address=sc.next();

int alen;

try {

String sa=""+phone; //把数字转成字符串

 alen=sa.length(); //得到长度

DBUtil.aa(alen);

} catch (Exception e) {

System.out.println(e);

}

String sa=""+phone;

alen=sa.length();

if(alen==8) {

try {

//加载驱动

Class.forName("oracle.jdbc.driver.OracleDriver");

//建立连接

conn=DriverManager.getConnection("jdbc:oracle:thin:@DESKTOP-T43AN99:1521:orcl","system","orcl");

//写sql

String sql="update txl set id=?,name=?,phone=?,qq=?,address=? where name=?";

//创建statement对象

Statement st=conn.createStatement();

ps= conn.prepareStatement(sql);//执行sql语句

ps.setInt(1,id);

    ps.setString(2,name);

    ps.setInt(3,phone);

    ps.setInt(4,qq);

    ps.setString(5,address);

    ps.setString(6,name1);

     result = ps.executeUpdate();//返回更新记录

    

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

conn.close();//在命令行打印异常信息在程序中出错的位置及原因。

} catch (SQLException e) {

e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。

}

}}

}

3.1.4 find方法

static void find() {

Connection conn=null;

int result = 0;

PreparedStatement ps=null;

System.out.println("请输入你查找的人的姓名:");

Scanner sc=new Scanner(System.in);

//输入要查找的信息

String name1=sc.next();

String name2=name1+"%";

try {

//加载驱动

Class.forName("oracle.jdbc.driver.OracleDriver");

//建立连接

conn=DriverManager.getConnection("jdbc:oracle:thin:@DESKTOP-T43AN99:1521:orcl","system","orcl");

//写sql

String sql="select * from txl where name like ? ";

//创建statement对象

PreparedStatement ps1 = conn.prepareStatement(sql);

 ps1.setString(1,name2);

     ResultSet rs=ps1.executeQuery();

     System.out.println("id"+"\t"+"name"+"\t"+"phone"+"\t"+"\t"+"qq"+"\t"+"address");

     while(rs.next()) {//判断集合有没有下一条记录

int id=rs.getInt("ID");//参数是字段民字,建议用大写

String name=rs.getString("name");

int phone=rs.getInt("PHONE");

int qq=rs.getInt("QQ");

String address=rs.getString("ADDRESS");

System.out.println(id+"\t"+name+"\t"+phone+"\t"+"\t"+qq+"\t"+address);

}

} catch (Exception e) {

e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。

} finally {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。

}

}

}

}

3.1.5 put方法

public static void  put() throws SQLException, ClassNotFoundException {

Connection conn=null;

Class.forName("oracle.jdbc.driver.OracleDriver");

conn=DriverManager.getConnection("jdbc:oracle:thin:@DESKTOP-T43AN99:1521:orcl","system","orcl");

try {

//3.sql语句

String sql="select *from txl";

//4.创建statement对象

Statement st=conn.createStatement();

//5.执行sql语句,把数据库响应的查询结果存放在ResultSet类对象中

ResultSet rs=st.executeQuery(sql);

//6.遍历输出

System.out.println("id"+"\t"+"name"+"\t"+"phone"+"\t"+"\t"+"qq"+"\t"+"\t"+"address");

while(rs.next()) {//判断集合有没有下一条记录

int id=rs.getInt("ID");//给参数逐个赋值

String name=rs.getString("name");

int phone=rs.getInt("PHONE");

int qq=rs.getInt("QQ");

String address=rs.getString("ADDRESS");

System.out.println(id+"\t"+name+"\t"+phone+"\t"+qq+"\t"+address);

}

} catch (Exception e) {

e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。

} finally {

try {

conn.close();//关闭连接

} catch (SQLException e) {

e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。

}

} }

3.2 菜单栏显示

System.out.println("               功能表                               ");

System.out.println("|1:添加通讯录成员   ||||  2:删除信息          |");

System.out.println("|3:    修改信息     ||||  4:查找信息          |");

System.out.println("|5:通讯录所有信息    ||||  6.退出              |");

System.out.println("|请输入你要使用的功能: ");

3.3连接Oracle数据库

Class.forName("oracle.jdbc.driver.OracleDriver");

conn=DriverManager.getConnection("jdbc:oracle:thin:@DESKTOP-T43AN99:1521:orcl","system","orcl");

  • 功能测试

初始数据库:

4.1 运行Java程序查看初始界面的显示情况(如图1.0)

图1.0 初始界面

4.2 查看所有通讯录(如图1.1)

图 1.1 查看所有通讯录

4.3 添加联系人信息

信息1为:7 老六 123456789 85236 长沙 (如图1.2)

信息2为:9老五 12345678  85236 长沙 (如图1.3)

信息3为:7 老四 123456789  85236 长沙 (如图1.4)

图1.2

图1.3

图1.4

4.4 删一位联系人信息(如图1.5)

图1.5 删除

4.5 修改一位联系人信息(如图1.6)

图1.6 修改

4.6 查找一位联系人信息(如图1.7)

图1.7 查找

最终数据库

五.结果分析

  各个功能都可以正常被主菜单调用,显示功能可以正确显示出所有通讯录信息,增加功能通过输入三个不同情况进行测试测试结果为1:当输入正常数据时可以正确增加联系人信息。2:当输入的手机号码长度不是所规定的长度时,会显示出异常并要求你输入正确的电话号码。3:当输入已经存在的id的时候会发生报错,预示你该id已经存在从而添加失败。三种情况都达到了预期的结果。删除功能可以正确通过你所输入的姓名信息进行删除。修改功能也能完美的通过你所输入要修改人的姓名来执行sql语句对信息进行相应的修改。查询功能也能正确搜索到所要查找的信息。最后查看Oracle数据库发现所有的操作都实现成功并保存在了数据库之中。

六.小结

在此次 Java 开发过程中,有很多东西值得我们思考并总结。开发过程大体可分为以下几个步骤:思考总体议计方案:总体结构和模块外部设计,功能分配。设计出总体设计方杂流程图:用流程图的飞式服现你的基本编程思想。最后修饰:程序可以正确达行之后,再不影响程序功能的情沈下,运用各种轨助性符号,使界面更加美观漂亮。通过这次课程设计,使我们更加熟悉的等择了Java 语言的运用。帮助我们熟悉了更多Java 语言的功能,提高了我们的动于能力,学到了许多解决实际问题的美贵经验。同时发挥出了我们潜在的能力,使我们对门己更有自信,对编程也更有兴趣。我相信,只要努力、坚特不懈,就没有做不到的事。这次的课程设计实验是对我们进入大学以来学习设计语言结果的一次大检验。自己动手,自己发现和解决问题。发现了自己的许多个不足。没有掌握妤的知识在这次实发中彻底参露出来,通过不断思考,不断查阅资料,解决其中大部分问题,当然还存在有些问题没有解决。我相信在以后的学习能够解决好。

参 考 文 献 

[1] 洪维恩,何嘉.java 2面向对象程序设计. 中国铁道出版社,2004.2

[2] 耿祥义,张跃平.java大学实用教程(第2版).电子工业出版社,2008.5

[3] 周晓聪.面向对象程序设计与 java 语言.北京:机械工业出版社,2004.3

[4] 张利国. java 实用教程案例. 北京:清华大学出版社,2003.10

七.源程序(附录)

package a;

import java.sql.*;

import java.util.Scanner;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

class gongneng{

public static void  put() throws SQLException, ClassNotFoundException {

Connection conn=null;

Class.forName("oracle.jdbc.driver.OracleDriver");

conn=DriverManager.getConnection("jdbc:oracle:thin:@DESKTOP-T43AN99:1521:orcl","system","orcl");

try {

//3.sql语句

String sql="select *from txl";

//4.创建statement对象

Statement st=conn.createStatement();

//5.执行sql语句,把数据库响应的查询结果存放在ResultSet类对象中

ResultSet rs=st.executeQuery(sql);

//6.遍历输出

System.out.println("id"+"\t"+"name"+"\t"+"phone"+"\t"+"\t"+"qq"+"\t"+"address");

while(rs.next()) {//判断集合有没有下一条记录

int id=rs.getInt("ID");//给参数逐个赋值

String name=rs.getString("name");

int phone=rs.getInt("PHONE");

int qq=rs.getInt("QQ");

String address=rs.getString("ADDRESS");

System.out.println(id+"\t"+name+"\t"+phone+"\t"+qq+"\t"+address);

}

} catch (Exception e) {

e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。

} finally {

try {

conn.close();//关闭连接

} catch (SQLException e) {

e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。

}

}

}

public static void add() throws SQLException{

Connection conn=null;

int result = 0;

PreparedStatement ps=null;

System.out.println("请输入你要插入的:id name phone qq address");

Scanner sc=new Scanner(System.in);

int id=sc.nextInt();

String name=sc.next();

int phone=sc.nextInt();

int qq=sc.nextInt();

String address=sc.next();

int alen;

try {

String sa=""+phone; //把数字转成字符串

 alen=sa.length(); //得到长度

DBUtil.aa(alen);

} catch (Exception e) {

System.out.println(e);

}

String sa=""+phone;

alen=sa.length();

if(alen==9) {

try {

//加载驱动

Class.forName("oracle.jdbc.driver.OracleDriver");

//创建连接

conn=DriverManager.getConnection("jdbc:oracle:thin:@DESKTOP-T43AN99:1521:orcl","system","orcl");

//sql语句

String sql="insert into txl(id,name,phone,qq,address) values(?,?,?,?,?)";

//创建statement对象

Statement st=conn.createStatement();

ps= conn.prepareStatement(sql);//开始执行SQL语句,并把结果赋值给ps

//利用set..方法给?赋值

ps.setInt(1,id);

    ps.setString(2,name);

    ps.setInt(3,phone);

    ps.setInt(4,qq);

    ps.setString(5,address);

     result = ps.executeUpdate();//返回更新了几条记录

//执行sql语句

} catch (Exception e) {

e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。

} finally {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。

}

}}

}

static void  delete() throws ClassNotFoundException {

int result = 0;

PreparedStatement ps=null;

Connection conn=null;

System.out.println("请输入你要删除人的姓名");

Scanner sc=new Scanner(System.in);

String name=sc.next();

//1.加载驱动

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

//2.建立连接

conn=DriverManager.getConnection("jdbc:oracle:thin:@DESKTOP-T43AN99:1521:orcl","system","orcl");

//3.写sql

String sql="delete from txl where name=?";

//4.创建Statement对象

Statement st=conn.createStatement();

ps= conn.prepareStatement(sql);//执行sql语句

ps.setString(1,name);

  result = ps.executeUpdate();

  }

 catch (SQLException e) {

e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。

}finally {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。

}

}

}

static void update() {

Connection conn=null;

int result = 0;

PreparedStatement ps=null;

System.out.println("请输入你要修改入的姓名:");

Scanner sc=new Scanner(System.in);

String name1=sc.next();

System.out.println("请输入你要修改后的id name phone qq address:");

//给需要更改人的信息重输入

int id=sc.nextInt();

String name=sc.next();

int phone=sc.nextInt();

int qq=sc.nextInt();

String address=sc.next();

int alen;

try {

String sa=""+phone; //把数字转成字符串

 alen=sa.length(); //得到长度

DBUtil.aa(alen);

} catch (Exception e) {

System.out.println(e);

}

String sa=""+phone;

alen=sa.length();

if(alen==9) {

try {

//加载驱动

Class.forName("oracle.jdbc.driver.OracleDriver");

//建立连接

conn=DriverManager.getConnection("jdbc:oracle:thin:@DESKTOP-T43AN99:1521:orcl","system","orcl");

//写sql

String sql="update txl set id=?,name=?,phone=?,qq=?,address=? where name=?";

//创建statement对象

Statement st=conn.createStatement();

ps= conn.prepareStatement(sql);//执行sql语句

ps.setInt(1,id);

    ps.setString(2,name);

    ps.setInt(3,phone);

    ps.setInt(4,qq);

    ps.setString(5,address);

    ps.setString(6,name1);

     result = ps.executeUpdate();//返回更新记录

    

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

conn.close();//在命令行打印异常信息在程序中出错的位置及原因。

} catch (SQLException e) {

e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。

}

}}

}

static void find() {

Connection conn=null;

int result = 0;

PreparedStatement ps=null;

System.out.println("请输入你查找的人的姓名:");

Scanner sc=new Scanner(System.in);

//输入要查找的信息

String name1=sc.next();

String name2=name1+"%";

try {

//加载驱动

Class.forName("oracle.jdbc.driver.OracleDriver");

//建立连接

conn=DriverManager.getConnection("jdbc:oracle:thin:@DESKTOP-T43AN99:1521:orcl","system","orcl");

//写sql

String sql="select * from txl where name like ? ";

//创建statement对象

PreparedStatement ps1 = conn.prepareStatement(sql);

 ps1.setString(1,name2);

     ResultSet rs=ps1.executeQuery();

     System.out.println("id"+"\t"+"name"+"\t"+"phone"+"\t"+"\t"+"qq"+"\t"+"address");

     while(rs.next()) {//判断集合有没有下一条记录

int id=rs.getInt("ID");//参数是字段民字,建议用大写

String name=rs.getString("name");

int phone=rs.getInt("PHONE");

int qq=rs.getInt("QQ");

String address=rs.getString("ADDRESS");

System.out.println(id+"\t"+name+"\t"+phone+"\t"+qq+"\t"+address);

}

} catch (Exception e) {

e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。

} finally {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。

}

}

}

}

public class DBUtil {

        public static void main(String[] args) throws ClassNotFoundException, SQLException{

         int i=0;

while(i<6) {

//定义菜单栏

System.out.println("               功能表                                       ");

System.out.println("|1:添加通讯录成员  ||||  2:删除信息          |");

System.out.println("|3:    修改信息         ||||  4:查找信息          |");

System.out.println("|5:通讯录所有信息  ||||  6.退出                   |");

System.out.println("|请输入你要使用的功能: ");

Scanner a=new Scanner(System.in);

i=a.nextInt();

//使用switch语句调用相关的功能

switch(i) {

case 1:gongneng.add();System.out.println("已完成");continue;

case 2: gongneng.delete();System.out.println("已完成");continue;

case 3: gongneng.update();System.out.println("已完成");continue;

case 4:gongneng.find();System.out.println("已完成");continue;

case 5:gongneng.put();System.out.println("已完成");continue;

case 6: break;

}

}System.out.print("已退出");

}

public  static  void aa(int d)throws Exception {

if(d==9);

else

throw new Exception("请输入正确的电话号码"); }}

全部文件自取git: https://gitee.com/ghhcfhgfh_0/yuchuan-xiaohan.git

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值