银行账户管理系统(oracle数据库连接池,数据库的链接,)
/*
* 银行账户管理系统:
* 属性:账户id,姓名,金额salary,利息类型;
*管理员模块实现的功能:
* 1.给用户开户
* 2.查询所有账户信息
* 用户模块实现的功能:
* 1.显示用户信息
* 2.存款
* 3.取款
* 4.查询本账户利息
*
* */
其中要导开源包三个:
oracle.jdbc.jar
commons-dbcp-1.4jar
commons-pool-1.5.5.jar
/*
* oracle数据库连接池:可实现数据库与eclipse跨平台连接
* 数据库连接池:里面放了好多连接数据库的链接,负责分配,释放,管理数据库连接,可以重复使用,而不新建
* ,使用完时候释放到数据库缓冲池中其他系统使用时,还可以在连接使用,而不需要再次新建一个连接池
* */
连接数据库连接池的文件:
driverClassName=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orcl1
username=oraclejava
password=lxn123
initialSize=10
maxActive=50
minIdle=5
maxWait=5000
-------------------------------------------------------------------------------------------------------------------------
实现对数据库数据进行增删改查操作的类;
public class JDBCOracle {
//连接到数据库连接池,实现数据的查询功能
public void select(String sql) throws Exception{
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
// String sql="select * from bank";
try {
connection=getConnection();
preparedStatement=connection.prepareStatement(sql);
resultSet=preparedStatement.executeQuery();
System.out.println("用户的id\t\t"+"姓名\t\t"+"金额");
System.out.println("----------------------------------------------");
while(resultSet.next()){
int id=resultSet.getInt(1);
String name=resultSet.getString(2);
double salary=resultSet.getDouble(3);
System.out.println(id+"\t\t"+name+"\t\t"+salary);
}
} catch (Exception e) {
e.printStackTrace();
}
finally {
close(connection, preparedStatement, resultSet);
}
}
//查询判断输入的id号是否相同
public boolean selectT(String sql) throws Exception{
boolean b=false;
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
// String sql="select * from bank";
try {
connection=getConnection();
preparedStatement=connection.prepareStatement(sql);
resultSet=preparedStatement.executeQuery();
while(resultSet.next()){
int id=resultSet.getInt(1);
b=true;
}
} catch (Exception e) {
System.out.println("出错了!!!");
}
finally {
close(connection, preparedStatement, resultSet);
}
return b;
}
//查看用户的金额,时候超额
public double selectT1(String sql) throws Exception{
double salary=0;
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
// String sql="select * from bank";
try {
connection=getConnection();
preparedStatement=connection.prepareStatement(sql);
resultSet=preparedStatement.executeQuery();
while(resultSet.next()){
salary=resultSet.getDouble(1);
}
} catch (Exception e) {
System.out.println("出错了!!!");
}
finally {
close(connection, preparedStatement, resultSet);
}
return salary;
}
//查询一个用户的信息
public void selectT2(String sql) throws Exception{
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
// String sql="select * from bank";
try {
connection=getConnection();
preparedStatement=connection.prepareStatement(sql);
resultSet=preparedStatement.executeQuery();
System.out.println("用户的id\t\t"+"姓名\t\t"+"金额"+"\t\t"+"利率");
System.out.println("----------------------------------------------");
while(resultSet.next()){
int id=resultSet.getInt(1);
String name=resultSet.getString(2);
double salary=resultSet.getDouble(3);
double commission_pct=resultSet.getDouble(4);
System.out.println(id+"\t\t"+name+"\t\t"+salary+"\t\t"+commission_pct);
}
} catch (Exception e) {
e.printStackTrace();
}
finally {
close(connection, preparedStatement, resultSet);
}
}
//连接到数据库连接池,实现增删改功能
public void update(String sql) throws Exception{
Connection connection=null;
PreparedStatement preparedStatement=null;
//String sql="insert into bank values(001,'jiajia',1000,0.12)";
try {
connection=getConnection();
preparedStatement=connection.prepareStatement(sql);
preparedStatement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
close(connection, preparedStatement, null);
}
}
//关闭数据库资源的方法
public void close(Connection connection,
PreparedStatement preparedStatement,ResultSet resultSet) throws Exception{
if (resultSet!=null) {
resultSet.close();
}
if (preparedStatement!=null) {
preparedStatement.close();
}
if (connection!=null) {
connection.close();
}
}
/*
* oracle数据库连接池:可实现数据库与eclipse跨平台连接
* 数据库连接池:里面放了好多连接数据库的链接,负责分配,释放,管理数据库连接,可以重复使用,而不新建
* ,使用完时候释放到数据库缓冲池中其他系统使用时,还可以在连接使用,而不需要再次新建一个连接池
* */
public Connection getConnection() throws Exception{
Properties properties=new Properties();
InputStream in=
JDBCOracle.class.getClassLoader().getResourceAsStream("jdbc.properties");
properties.load(in);
DataSource dataSource=
(DataSource) BasicDataSourceFactory.createDataSource(properties);
Connection connection=dataSource.getConnection();
// BasicDataSource basicDataSource=(BasicDataSource) dataSource;
// System.out.println(basicDataSource.getMaxWait());
return connection;
}
@Test
public void testGetConnection() throws Exception{
System.out.println(getConnection());
}
}
------------------------------------------------------------------------------------------------------
实现功能的主类:
/*
* 银行账户管理系统:
* 管理员模块:
* 属性:账户id,姓名,金额salary,利息类型;
* 1.给用户开户
* 2.查询所有账户信息
* 用户模块:
* 1.显示用户信息
* 2.存款
* 3.取款
* 4.查询本账户利息
*
* */
public class Bank {
static Scanner input=new Scanner(System.in);
static JDBCOracle jo=new JDBCOracle();
//1.管理员模块
public static void manager() throws Exception{
boolean b=false;
while(true){
System.out.println("管理员模块菜单!!!");
System.out.println("1.开户"+"\n"+"2.查询所有账户"+"\n"+"0.退出");
System.out.println("请输入菜单号:");
int n=input.nextInt();
switch(n){
case 1:setUser();break;
case 2:lookAllInfo();break;
case 0:System.out.println("已经退出了");b=true;break;
default :System.out.println("输入错误,请重新输入!!!");
}
if (b!=false) {
break;
}
}
}
//开户
public static void setUser() throws Exception{
System.out.println("请输入用户id:");
int id=input.nextInt();
System.out.println("请输入开户户名:");
String name=input.next();
System.out.println("请输入金额:");
double salary=input.nextDouble();
System.out.println("请选择利息类型(1.固定利率---2.浮动利率):");
int t=input.nextInt();
double commission_pct = 0;
switch(t){
case 1:commission_pct=0.03;break;
case 2:commission_pct=com(salary);break;
}
String sql="insert into bank values"
+ "("+id+",'"+name+"',"+salary+","+commission_pct+")";
jo.update(sql);
System.out.println("开户成功!!!");
}
//查询所有的用户信息
public static void lookAllInfo() throws Exception{
System.out.println("----------------------------------------------");
String sql="select id,name,salary from bank order by id asc";
jo.select(sql);
System.out.println("----------------------------------------------");
}
//判断得到浮动利率的方法
public static double com(double salary){
double commission_pct;
if(salary<=5000){
commission_pct=0.01;
}
else if(salary<=100000){
commission_pct=0.02;
}
else{
commission_pct=0.05;
}
return commission_pct;
}
//用户模块
public static void user() throws Exception{
boolean b=false;
System.out.println("用户模块菜单");
while(true){
System.out.println("--------------------------------------------");
System.out.println("1.存款---2.取款---3.查看本人账户信息---0.退出系统");
System.out.println("请首先输入一个账户的id:");
int id=input.nextInt();
String sql="select id from bank where id='"+id+"'";
String sql1="select id,name,salary from bank where id="+id+"";
if(jo.selectT(sql)){
jo.select(sql1);
System.out.println("----------------------------------------");
System.out.println("请输入菜单号:");
int n=input.nextInt();
switch(n){
case 1:inT(id);b=true;break;
case 2:outT(id);b=true;break;
case 3:lookInfo(id);b=true;break;
case 0:System.out.println("系统已经退出了!!!");System.exit(0);
default :System.out.println("输入信息错误,请重新输入!!!");
}
}
if(b!=false){
break;
}
else{
System.out.println("该账户不存在!!!");
}
}
}
//存款:
public static void inT(int id) throws Exception{
System.out.println("请输入要存款的数目:");
double salary=input.nextDouble();
String sql="update bank set salary=salary+"+salary+" where id="+id+"";
jo.update(sql);
System.out.println("存款成功!!!");
}
//取款
public static void outT(int id) throws Exception{
System.out.println("请输入要取款的数目:");
double salary=input.nextDouble();
String sql1="select salary from bank where id="+id+"";
String sql2="update bank set salary=salary-"+salary+" where id="+id+"";
if(salary>jo.selectT1(sql1)){
System.out.println("余额不足!!!");
}
else{
jo.update(sql2);
System.out.println("取款成功!!!");
}
}
//查看本人账户
public static void lookInfo(int id) throws Exception{
String sql="select * from bank where id="+id+"";
jo.selectT2(sql);
System.out.println("-----------------------------------------------------");
}
public static void main(String[] args) throws Exception {
while(true){
System.out.println("请选择 1.管理员---2.用户---0.退出");
int n=input.nextInt();
switch(n){
case 1:manager();break;
case 2:user();break;
case 0:System.out.println("系统已经退出!!!");System.exit(0);
default :System.out.println("输入错误,请重新输入!!!");
}
}
}
}
银行账户管理系统(oracle数据库连接池,数据库的链接,)的更多相关文章
- springmvc springJDBC 简单实训银行账户管理系统
springmvc springJDBC 简单实训银行账户管理系统 1.简单介绍一下,在校时每周结束都会有一次学习总结,简称“实训”,这次实训内容是spring,因为是最近热门框架,我就先从基础方面开 ...
- c#与oracle数据库连接池
c#与oracle数据库连接池 在做一个项目,中间要使用webservice和oracle数据库.我在服务端做了用户身份认证,也就是使用session传递用户的登陆信息.在测试时,当用户少的时候,没有 ...
- Java实验-课程设计报告一:个人银行账户管理系统SavingAccountManageSystem-具体文档+源码
课程设计报告一:个人银行账户管理系统 此文档及源码仅供参考 不得直接复制使用 author: [xxxxxxxxx xx xxxx] date: "2019-04-12" 作 者: ...
- C3P0数据库连接池数据库插入中文乱码问题解决
问题描述 近期修改一个学生信息管理的JavaWeb项目,其数据库连接池使用了C3P0.在实际测试时,发现在学生信息模块添加中文学生信息会在数据库(MySQL)出现中文乱码问题. 如图所示: 问题分析 ...
- Tomcat7环境下面MySQL 56/Oracle数据库连接池的配置
环境: Tomcat7 MySQL56 mysql-connector-java-3.1.10-bin.jar 步骤: 1. 配置context.xml 此文件位于~\tomcat7\conf目录下面 ...
- oracle数据库连接池查看
select username , count(*), machine from v$session where username is not null group by username, mac ...
- Oracle 数据库连接池
jdbc:oracle:thin:@(DESCRIPTION=(failover=on)(enable=broken)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOS ...
- Tomcat6.0数据库连接池配置
http://blog.163.com/magicc_love/blog/static/185853662201111101130969/ oracle驱动包Tomcat 6.0配置oracle数据库 ...
- JDBC第四篇--【数据库连接池、DbUtils框架、分页】
1.数据库连接池 什么是数据库连接池 简单来说:数据库连接池就是提供连接的. 为什么我们要使用数据库连接池 数据库的连接的建立和关闭是非常消耗资源的 频繁地打开.关闭连接造成系统性能低下 编写连接池 ...
随机推荐
- mysql explain 命令讲解
explian命令可以显示select语句的执行计划 explain的结果中每行对应select语句中的一个表,输出结果中的顺序是按照语句处理表的顺序. mysql使用嵌套循环来处理所有的join连接 ...
- redhat centos yum源的安装
redhat centos yum源的安装 1.除旧 #cd /etc/yum.repos.d #mv rhel-debuginfo.repo rhel-debuginfo.repo.bak 此处将其 ...
- PostgreSQL Replication之第十一章 使用Skytools(4)
11.4 使用 londiste 复制数据 pgq是一个叫做londiste的复制工具的核心.londiste 的核心是有一个比如比Slony 更加简单,容易使用的机制.如果您在一个大的安装中使用Sl ...
- VS2012窗口及编辑文本框背景颜色变黑
1.工具->选项 2.环境->常规->深色
- extjs grid 单元格 多选
new Ext.grid.CellSelectionModel({ last : false, // 上一次选中的单元格 selections : [], // 选择区缓存 handleMouseDo ...
- fackbook的Fresco的Image Pipeline以及自身的缓存机制
fackbook的Fresco的Image Pipeline以及自身的缓存机制 配置之前.首先需要知道两点:一点是Bitmap缓存.一点是如果你仅仅需要一个缓存,那么不调用setSmallImageD ...
- paper 47 :Latex中文显示(转)
中文支持需要cjk-latex,总得来说中文可以使用GB和GBK两种字体,GBK需要从windows下copy *.ttc或*.ttf, GB字体则在linux下就用. 先说支持GB的中文显示,安装以 ...
- angular Creating a Directive that Adds Event Listeners
<span my-draggable>Drag ME</span> angular.module('dragModule', []) .directive('myDraggab ...
- -XX:+printGC
-XX:+printGC 可以打印GC的简要信息[GC 4790K->374K(15872K), 0.0001606 secs][GC 4790K->374K(15872K), 0.000 ...
- LDA-math-文本建模
http://cos.name/2013/03/lda-math-text-modeling/ 4. 文本建模 我们日常生活中总是产生大量的文本,如果每一个文本存储为一篇文档,那每篇文档从人的观察来说 ...