个人帐目管理系统java_Java 项目 个人帐目管理系统

目录

第一部分项目描述 3

1.1项目目的 3

第二部分需求和开发环境 3

2.1使用技术和开发环境 3

2.2项目需求 3

2.3详细功能 3

2.4 E-R图 3

2.5数据库的设计 3

2.5.1数据表的设计 3

2.5.2数据库约束的设计 4

2.5.3数据库序列的设计 4

2.5.4数据库索引的设计 4

2.5.5数据库视图的设计 5

2.5.6数据库触发器的设计 5

2.5.7数据库函数的设计 5

2.5.8数据库存储过程的设计 6

2.6业务层设计 6

2.6.1 xx业务 6

2.6.2 xx业务 6

2.6.3 xx业务 6

2.7展示层(界面)设计

6

2.7.1 xx界面 7

2.7.2 xx界面 7

2.7.3 xx界面 7

第三部分项目总结 7

第一部分项目描述

1.1项目目的

开发一个账目明细管理软件,用于记录和查询个人的账目情况,记录的内容包括:账目类型(支出/收入)、账目金额、记录日期(日期格式为:yyyy-MM-dd)和备注信息。

第二部分需求和开发环境

2.1使用技术和开发环境

Oracle11g

2.2项目需求

教学质量是学校生存与发展的生命线,不断提高课堂教学水平是学校和每一位教师的共同心愿。及时了解课堂教学的主体—学生对教学情况的评价及建议,有利于教师发现自己教学中的优点以及不足,从而进一步改进教学方法,提高教学水平。为了更好的提高教学水平,建立学校与学员的更好勾通,院领导研究决定研发本系统,并提供考核内容管理、反馈项目管理、反馈表管理、数据统计分析等主要功能,本阶段案例主要以考核内容管理为主要分析目标。

2.3详细功能

1、添加账目

添加账目时,首先,系统自动生成一个账目流水编号,如果为第一条账目记录,则编号为预设值“1”;如果不是第一条记录,则获取最后一条账目记录,取出编号并加一,即为新账目记录编号。然后需要用户输入账目信息,包括账目类型、金额、日期和备注,其中日期为系统自动生成,完成后账目信息被保存到一个文件中,并反馈给用户一条账目信息。

2、修改账目

账目记录修改功能描述:首先,提示用户输入要修改的账目记录编号,并进行有效性验证。然后显示此笔账目记录详细信息,提示修改(日期不修改)。修改完成后,将此账目记录保存到账目记录文件中。

3、删除账目

账目记录删除功能描述:首先,提示用户输入要修改的账目记录编号,并进行有效性验证。然后显示此笔账目记录详细信息,提示删除。待用户确认后,将此记录从账目记录文件中删除。

4、查询账目

查询账目功能包括:查询单个和查询全部。

查询单个账目信息:首先,提示用户输入要修改的账目记录编号,并进行有效性验证。然后显示此笔账目记录详细信息。

查询全部账目信息:显示全部账目记录详细信息,如果没有账目信息,则提示没有账目记录。

2.5数据库的设计

2.5.1 数据表的设计

表1 个人账目表

表名

TALLY(个人账目表)

列名

描述

数据类型

空/非空

约束条件

TID

ID编号

number

非空

主键,标识列

TTYPE

类型名称

Varchar2(20)

非空

MONEY

金钱

Number(4)

非空

DATE

时间

date

默认

REMARK

备注

Varchar2(20)

2.5.3 数据库序列的设计

功能:TID进行插入自增

实现:CREATE SEQUENCE SEQ_TALLY;

2.5.6数据库触发器的设计

功能:当进行插入数据的时候,TID进行自增

实现:CREATE OR REPLACE TRIGGER TRI_TALLY

BEFORE INSERT OR UPDATE  ON TALLY FOR EACH ROW

BEGIN

select seq_tally.nextval into :New."tid" from dual;

END;

2.6

业务层设计

//数据库操作

package com.handson.entity;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Scanner;

import javax.swing.JOptionPane;

import com.tcl.util.DBcon;

public class DBinsert {

public static void Register(String Itype,String Imoney,String Iremark){

DBcon dBcon=new DBcon();

Connection conn=dBcon.getConn();

if(conn != null){

try {

Statement sm = conn.createStatement();//根据连接获取一个执行sql语句的对象

int n = sm.executeUpdate("insert into TALLY (TTYPE,MONEY,REMARK) VALUES('"+Itype+"','"+Imoney+"','"+Iremark+"')");

if(n>0){

JOptionPane.showMessageDialog(null, "数据添加成功!");

}

else{

JOptionPane.showMessageDialog(null, "数据添加失败!");

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

//Swing 界面package com.handson.services;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import javax.swing.Box;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JTextField;

import com.handson.entity.DBinsert;

import com.tcl.util.DBcon;

public class SWinsert extends JFrame{

JTextField type = new JTextField(10);//文本框

JTextField money = new JTextField(10);

JTextField remark = new JTextField(10);

String Itype,Imoney,Iremark;

Box baseBox,boxV1,boxV2;//面板

JButton btn1 = new JButton("OK");

public SWinsert(){

this.setBounds(100,100,310,260);//窗体大小

this.setTitle("ADD");

this.setLayout(new java.awt.FlowLayout());

init();

this.setVisible(true);

this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);//只关闭当前窗口

}

void init(){

boxV1 = Box.createVerticalBox();

boxV1.add(new JLabel("TYPE:"));

boxV1.add(Box.createVerticalStrut(8));

boxV1.add(new JLabel("MONEY:"));

boxV1.add(Box.createVerticalStrut(8));

boxV1.add(new JLabel("REMARK:"));

boxV1.add(Box.createVerticalStrut(8));

boxV2 = Box.createVerticalBox();

boxV2.add(type);

boxV2.add(Box.createVerticalStrut(8));

boxV2.add(money);

boxV2.add(Box.createVerticalStrut(8));

boxV2.add(remark);

boxV2.add(Box.createVerticalStrut(8));

baseBox = Box.createHorizontalBox();

baseBox.add(boxV1);

boxV2.add(Box.createVerticalStrut(10));

baseBox.add(boxV2);

add(baseBox);

add(btn1);

btn1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

Itype = type.getText();

Imoney = money.getText();

Iremark = remark.getText();

//判断是否为空,因为不能插入空数据

if(!Itype.equals("")&&!Imoney.equals("")&&!Iremark.equals(""))

{

try {

Integer.parseInt(Imoney); // 只能为正整数

DBcon dBcon=new DBcon();

Connection con=dBcon.getConn();

if(con==null){

System.out.println("数据库插入连接失败");

}

else{

System.out.println("数据库插入连接成功");

DBinsert.Register(Itype,Imoney,Iremark);

type.setText("");

money.setText("");

remark.setText("");

}

} catch (Exception e2) {

// TODO: handle exception

JOptionPane.showMessageDialog(null, "Money格式不正确,请重新输入!");

money.setText("");

}

}

else{

JOptionPane.showMessageDialog(null, "数据不能为空,请补充完整!");

}}

});

}

}

2.6.2修改账目业务

//Swing 界面package com.handson.services;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import javax.swing.Box;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JTextField;

import com.handson.entity.DBupdate;

import com.tcl.util.DBcon;

public class SWupdate extends JFrame{

JTextField id = new JTextField(10);

JTextField type = new JTextField(10);

JTextField money = new JTextField(10);

JTextField remark = new JTextField(10);

String Uid,Utype,Umoney,Uremark;

Box baseBox,boxV1,boxV2;

JButton btn1 = new JButton("OK");

public SWupdate(){

this.setBounds(100,100,310,260);

this.setTitle("UPDATE");

this.setLayout(new java.awt.FlowLayout());

init();

this.setVisible(true);

this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);//只关闭当前窗口

}

void init(){

boxV1 = Box.createVerticalBox();

boxV1.add(new JLabel("ID:"));

boxV1.add(Box.createVerticalStrut(8));

boxV1.add(new JLabel("TYPE:"));

boxV1.add(Box.createVerticalStrut(8));

boxV1.add(new JLabel("MONEY:"));

boxV1.add(Box.createVerticalStrut(8));

boxV1.add(new JLabel("REMARK:"));

boxV1.add(Box.createVerticalStrut(8));

boxV2 = Box.createVerticalBox();

boxV2.add(id);

boxV2.add(Box.createVerticalStrut(8));

boxV2.add(type);

boxV2.add(Box.createVerticalStrut(8));

boxV2.add(money);

boxV2.add(Box.createVerticalStrut(8));

boxV2.add(remark);

boxV2.add(Box.createVerticalStrut(8));

baseBox = Box.createHorizontalBox();

baseBox.add(boxV1);

boxV2.add(Box.createVerticalStrut(10));

baseBox.add(boxV2);

add(baseBox);

add(btn1);//按钮

btn1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

Uid = id.getText();

Utype = type.getText();

Umoney = money.getText();

Uremark = remark.getText();

if (!Uid.equals("")&&!Utype.equals("")&&!Umoney.equals("")&&!Uremark.equals("")) {

try {

Integer.parseInt(Umoney); // 只能为正整数

DBcon dBcon=new DBcon();

Connection con=dBcon.getConn();

if(con==null){

System.out.println("数据库更新连接失败");

}

else{

System.out.println("数据库更新连接成功");

DBupdate.update(Uid,Utype,Umoney,Uremark);

id.setText("");

type.setText("");

money.setText("");

remark.setText("");

}

} catch (Exception e2) {

// TODO: handle exception

JOptionPane.showMessageDialog(null, "Money格式不正确,请重新输入!");

money.setText("");

}

}

else {

JOptionPane.showMessageDialog(null, "数据不能为空,请补充完整!");

}

}

});

}

}

数据库更新操作

package com.handson.entity;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Scanner;

import javax.swing.JOptionPane;

import com.tcl.util.DBcon;

public class DBupdate {

public static void update(String Uid,String Utype,String Umoney,String Uremark){

DBcon dBcon=new DBcon();

Connection conn=dBcon.getConn();

if(conn != null){

try {

Statement sm = conn.createStatement();

int n = sm.executeUpdate("update TALLY set TTYPE= '" + Utype+ "',MONEY='"+Umoney+

"',REMARK='" + Uremark+ "'where TID='" + Uid+ "'");

if(n>0){

JOptionPane.showMessageDialog(null, "Update Success!");

}

else{

JOptionPane.showMessageDialog(null, "ID信息不符合,请确认后重新输入");

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

2.6.3删除账目业务

Swing 界面

package com.handson.services;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import javax.swing.Box;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JTextField;

import com.handson.entity.DBdelete;

import com.tcl.util.DBcon;

public class SWdelete extends JFrame{

JTextField id = new JTextField(10);

String Did;

Box baseBox,boxV1,boxV2;//面板

JButton btn1 = new JButton("OK");

public SWdelete(){

this.setBounds(100,100,310,260);

this.setTitle("DELETE");

this.setLayout(new java.awt.FlowLayout());//容器

init();

this.setVisible(true);

this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);//只关闭当前窗口

}

void init(){

boxV1 = Box.createVerticalBox();

boxV1.add(new JLabel("ID:"));

boxV2 = Box.createVerticalBox();

boxV2.add(id);

baseBox = Box.createHorizontalBox();

baseBox.add(boxV1);

boxV2.add(Box.createVerticalStrut(10));

baseBox.add(boxV2);

add(baseBox);//容器

add(btn1);

btn1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

Did = id.getText();

if (!id.equals("")) {

try {

Integer.parseInt(Did); // 只能为正整数

DBcon dBcon=new DBcon();

Connection con=dBcon.getConn();

if(con==null){

System.out.println("数据库删除连接失败");

}

else{

System.out.println("数据库删除连接成功");

DBdelete.Delete(Did);

id.setText("");

}

} catch (Exception e2) {

// TODO: handle exception

JOptionPane.showMessageDialog(null, "ID格式不正确,请重新输入!");

}

}

else{

JOptionPane.showMessageDialog(null, "数据不能为空,请补充完整!");

}

}

});

}

}

数据库删除操作

package com.handson.entity;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import javax.swing.JOptionPane;

import com.tcl.util.DBcon;

public class DBdelete {

public static void Delete(String Did){

DBcon dBcon=new DBcon();

Connection conn=dBcon.getConn();

if(conn== null){

dBcon.getConn();

}

PreparedStatement sm = null;//PreparedStatement用于使用绑定变量重用执行计划

try {

String sql = "delete from TALLY where TID = ?";

sm = conn.prepareStatement(sql);

sm.setString(1, Did);//给第一个问号赋值

int n = sm.executeUpdate();

if(n>0){

JOptionPane.showMessageDialog(null, "Delete Success!");

}

else{

JOptionPane.showMessageDialog(null, "请输入正确的ID!");

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

2.6.4查询账目业务

查询单个账目信息:

Swing 界面

package com.handson.services;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import javax.swing.Box;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JTextField;

import com.handson.entity.DBselect;

import com.tcl.util.DBcon;

public class SWselect extends JFrame{

JTextField id = new JTextField(10);//要查询的卡号

JTextField type = new JTextField(10);

JTextField money = new JTextField(10);

JTextField date = new JTextField(10);

JTextField remark = new JTextField(10);

JLabel cxjg = new JLabel();//显示结果标签

Box baseBox,boxV1,boxV2;

JButton btn1 = new JButton("查询");

public SWselect(){

this.setBounds(100,100,310,260);

this.setTitle("查询账目");

this.setLayout(new java.awt.FlowLayout());

init();

this.setVisible(true);

this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);//只关闭当前窗口

}

void init(){

boxV1 = Box.createVerticalBox();

boxV1.add(new JLabel("请输入要查询的ID:"));

boxV1.add(Box.createVerticalStrut(8));

boxV1.add(new JLabel("结果如下:"));

boxV1.add(Box.createVerticalStrut(8));

boxV1.add(new JLabel("TYPE:"));

boxV1.add(Box.createVerticalStrut(8));

boxV1.add(new JLabel("MONEY:"));

boxV1.add(Box.createVerticalStrut(8));

boxV1.add(new JLabel("DATE:"));

boxV1.add(Box.createVerticalStrut(8));

boxV1.add(new JLabel("REMARK:"));

boxV1.add(Box.createVerticalStrut(8));

boxV2 = Box.createVerticalBox();

boxV2.add(id);

boxV2.add(Box.createVerticalStrut(8));

boxV2.add(btn1);

type.setEnabled(false);

boxV2.add(type);

boxV2.add(Box.createVerticalStrut(8));

money.setEnabled(false);

boxV2.add(money);

boxV2.add(Box.createVerticalStrut(8));

date.setEnabled(false);

boxV2.add(date);

boxV2.add(Box.createVerticalStrut(8));

remark.setEnabled(false);

boxV2.add(remark);

boxV2.add(Box.createVerticalStrut(8));

baseBox = Box.createHorizontalBox();

baseBox.add(boxV1);

boxV2.add(Box.createVerticalStrut(10));

baseBox.add(boxV2);

add(baseBox);

btn1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

DBcon dBcon=new DBcon();

Connection con=dBcon.getConn();

if(con==null){

System.out.println("数据库查询连接失败");

}

else{

System.out.println("数据库查询连接成功");

String idString=id.getText();

if (!idString.equals("")) {

try {

Integer.parseInt(idString); // 只能为正整数

DBselect.select(idString);

} catch (Exception e2) {

// TODO: handle exception

JOptionPane.showMessageDialog(null, "ID格式不正确,请重新输入!");

}

}

else {

JOptionPane.showMessageDialog(null, "Please input ID!");

}

//id.setText(DBselect.s);

type.setText(DBselect.Stype);

money.setText(DBselect.Smoney);

date.setText(DBselect.Sdate);

remark.setText(DBselect.Sremark);

}

}

});

}

}数据库查询操作:

package com.handson.entity;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Scanner;

import javax.swing.JOptionPane;

import com.tcl.util.DBcon;

public class DBselect{

public static String Stype;

public static String Smoney;

public static String Sdate;

public static String Sremark;

public static void select(String idString){

int i=0;

DBcon dBcon=new DBcon();

Connection conn=dBcon.getConn();

if(conn != null){

try {

Statement sm = conn.createStatement();

ResultSet n = sm.executeQuery("select * from TALLY where TID='"+idString+"'");

while (n.next()) {

Stype=n.getString(2);

Smoney=n.getString(3);

Sdate=n.getString(4);

Sremark=n.getString(5);

i++;

// JOptionPane.showMessageDialog(null, "Select Success!");

}

n.close();

sm.close();

conn.close();

if (i==1) {

JOptionPane.showMessageDialog(null, "Select Success!");

}

else {

JOptionPane.showMessageDialog(null, "请输入正确的ID!");

}

}

catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

查询全部账目信息:

package com.handson.entity;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.swing.Box;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JTextField;

import com.tcl.util.DBcon;

public class DBSWseleteall extends JFrame{

JTextField id = new JTextField(10);//要查询的卡号

Box baseBox,boxV1,boxV2;

public DBSWseleteall(){

this.setBounds(100,100,450,260);

this.setTitle("查询全部");

this.setLayout(new java.awt.FlowLayout());

init();

this.setVisible(true);

this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);//只关闭当前窗口

}

void init(){

boxV1 = Box.createVerticalBox();

boxV1.add(new JLabel("查询结果如下:"));

boxV1.add(Box.createVerticalStrut(8));

DBcon drop=new DBcon();

Connection conn=drop.getConn();

if(conn != null){

try {

Statement sm = conn.createStatement();

ResultSet n = sm.executeQuery("select * from TALLY");//用于产生单个结果集的语句

while (n.next()) {

String id=n.getString(1);

String type=n.getString(2);

String money=n.getString(3);

String date=n.getString(4);

String remark=n.getString(5);

boxV1.add(new JLabel("ID:"+id+","+"TYPE:"+type+","+"MONEY:"+money+","+"DATE:"+date+","+"REMARK:"+remark+","));

boxV1.add(Box.createVerticalStrut(8));

}

n.close();

sm.close();

conn.close();

}

catch (SQLException i) {

// TODO Auto-generated catch block

i.printStackTrace();

}

}

baseBox = Box.createHorizontalBox();

baseBox.add(boxV1);

add(baseBox);

}

}

运行结果太多就不一一列举了

附主运行界面:

package com.handson.main;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.border.EmptyBorder;

import com.handson.entity.DBSWseleteall;

import com.handson.services.SWdelete;

import com.handson.services.SWinsert;

import com.handson.services.SWselect;

import com.handson.services.SWupdate;

import java.awt.Color;

import java.awt.Font;

import javax.swing.JButton;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class Pinit extends JFrame{ //界面的初始化和数据库连接

JButton jb1=null;

public static void main(String[] args)

{

Pinit frame = new Pinit();

frame.setVisible(true);

}

public Pinit()

{

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 573, 381);

JPanel contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

getContentPane().setBackground(Color.gray);

contentPane.setLayout(null);

JButton tianjia = new JButton("INSERT");

tianjia.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

SWinsert ins = new SWinsert();

}

});

tianjia.setFont(new Font("宋体", Font.PLAIN, 18));

tianjia.setBounds(91, 100, 150, 27);

contentPane.add(tianjia);

JButton xiugai = new JButton("UPDATE");

xiugai.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

SWupdate up = new SWupdate();

}

});

xiugai.setFont(new Font("宋体", Font.PLAIN, 18));

xiugai.setBounds(91, 150, 150, 27);

contentPane.add(xiugai);

JButton shanchu= new JButton("DELETE");

shanchu.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

SWdelete dr = new SWdelete();

}

});

shanchu.setFont(new Font("宋体", Font.PLAIN, 18));

shanchu.setBounds(91, 200, 150, 27);

contentPane.add(shanchu);

JButton zhangmu = new JButton("SELECT");

zhangmu.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

SWselect se = new SWselect();

}

});

zhangmu.setFont(new Font("宋体", Font.PLAIN, 18));

zhangmu.setBounds(300,100, 150, 27);

contentPane.add(zhangmu);

JButton quanbu = new JButton("SELECT ALL");

quanbu.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

DBSWseleteall se = new DBSWseleteall();

}

});

quanbu.setFont(new Font("宋体", Font.PLAIN, 18));

quanbu.setBounds(300,150, 150, 27);

contentPane.add(quanbu);

JButton tuichu = new JButton("EXIT");

tuichu.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

System.exit(0);

}

});

tuichu.setFont(new Font("宋体", Font.PLAIN, 18));

tuichu.setBounds(300,200, 150, 27);

contentPane.add(tuichu);

// 连接数据库 测试

String URL = "jdbc:oracle:thin:@localhost:1521:ORCL";

String user = "scott";//sql用户名

String psd = "123456";//sql密码

try

{

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

Connection con = DriverManager.getConnection(URL, user, psd);

Statement stat = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

ResultSet.CONCUR_READ_ONLY);

JOptionPane.showMessageDialog(null, "RUNNING。。。");

}

catch (ClassNotFoundException e)

{

JOptionPane.showMessageDialog(null, "SQL链接不成功!"); //未查找到相应的连接内容

}

catch (SQLException e)

{

JOptionPane.showMessageDialog(null, "FAIL!"); //数据库未连接

}

}

}运行结果:

c6c9ad81480cdaa69d852b37e1901ab3.png

第三部分总结

其中用了大量的Swing界面视图的构建,还有数据库的连接已经进行操作。其中还对各种输入的错误操作进行了错误提醒。就是这样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/520192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

KubeCon 2018 参会记录 —— FluentBit Deep Dive

在最近的上海和北美KubeCon大会上,来自于Treasure Data的Eduardo Silva(Fluentd Maintainer)带来了最期待的关于容器日志采集工具FluentBit的最新进展以及深入解析的分享;我们知道Fluentd是在2016年底正式加入CNCF,成为…

全球首个!阿里云开源批流一体机器学习平台Alink……

11月28日,阿里云正式开源机器学习平台 Alink,这也是全球首个批流一体的算法平台,旨在降低算法开发门槛,帮助开发者掌握机器学习的生命全周期。 Flink Forward 2019在京举办,吸引众多开发者参与标题Alink基于实时计算引…

聚焦产业·城市、擎领数字未来:IMPACT2019紫光云峰会在津成功举办

近日,紫光云技术有限公司在天津举行主题为“产业城市 擎领未来”的IMPACT2019紫光云峰会,深度阐释打造产业数字引擎的理念和实践,并为unI X云创中心揭牌,发布紫光云芯片产业数字引擎。 天津市人民政府副秘书长杨明远为大会致辞会上…

IntelliJ IDEA 2020 创建xml文件

1、file—setting,左上角输入template, 2、在左侧栏找到File And Code Templates 3、中间选中Files 4、点击号,添加模板 5、输入模板名字:Name:mybatis-cfg.xml (name可以自定义) 6、后缀名extension&#…

刚刚,蚂蚁金服荣膺“中国金融大数据领军企业”称号

小蚂蚁说: 2018中国软件和信息服务领域十大领军企业、人物及产业园区评选活动是业界最权威和最受关注的评选之一。12月20日,在北京举行的“2018中国软件大会”正式宣布蚂蚁金服成为“2018中国大数据金融领军企业”。 2018年12月20日,在北京举…

学java要算法吗_学习java不可不知的几种算法

1、冒泡排序算法&#xff1a;编程语言算法中比较经典的算法。每个程序员都必须了解和会运用的。AAA软件教育程序算法基础通过多次比较(相邻两个数)和交换来实现排序&#xff1a;public class bubble {public static void bubbleSort(int[] a) {int temp;for (int i 1; i < …

IntelliJ IDEA 2020 数据库连接Oracle和Mysql

Mysql数据库连接 填写下面需求要的信息url需要处理 jdbc:mysql://127.0.0.1:3306/xxxdatabase?autoReconnecttrue&useUnicodetrue&characterEncodingutf8&zeroDateTimeBehaviorCONVERT_TO_NULL&useSSLfalse&serverTimezoneCTT&nullCatalogMeansCurr…

i 智慧 | 计算产业发展黄金10年 腾讯云弹性计算抢占计算蓝海

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 刘丹出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;近年来&#xff0c;随着云计算如火如荼的发展&#xff0c;上云已经成为当前企业发展的必然选择。在云计算领域里&#xff0c;计算是最大颗粒度的产品&…

深入探访支付宝双11十年路,技术凿穿焦虑与想象极限

小蚂蚁说&#xff1a; 双11十年间&#xff0c;交易规模的指数级增长不断挑战人们的想象力&#xff0c;而对蚂蚁技术团队来说&#xff0c;这不仅是一场消费盛宴&#xff0c;而是无数次濒临压力和焦虑极限的体验&#xff0c;更是技术的练兵场。如今双11对蚂蚁金服而言&#xff0…

IntelliJ IDEA 2020 快捷键私人订制

文章目录一、 快捷键总览二、 快捷键风格三、 自定义快捷键3.1. 全局替换3.2. 查找和替换3.3. 文件重命名一、 快捷键总览 快捷键说明关键词CTRLALTT光标定位到这段代码&#xff0c;常用的函数如try等等按2下Shirft瞬间查找文件夹或者文件CtrlAltS打开设置SettingsAlt/自动提示…

防水耐脏,超大容量双肩包,限时拼团仅需49元

男人出门有三宝&#xff0c;钱包、手机和电脑。自从有了支付宝&#xff0c;大家钱包都懒得带了但是电脑&#xff0c;尤其是作为一位007的程序员电脑就是我们的命&#xff0c;上班下班都得带着有时上班可能还要再配一个耳机或者保温杯。能放下这么多的东西又美观的只有双肩包。那…

阿里开源首个深度学习框架 X-Deep Learning!

刚刚&#xff0c;阿里妈妈正式对外发布了X-Deep Learning(下文简称XDL)的开源代码地址&#xff0c;开发者们可以在Github上自主下载。 此前&#xff0c;在11月底&#xff0c;阿里妈妈就公布了这项开源计划&#xff0c;引来了业界的广泛关注。XDL突破了现有深度学习开源框架大都…

离职阿里三年后,他又回来了

11月22日&#xff0c;马辉从黄龙体育中心附近的办公室开车来到阿里园区北2门&#xff0c;离开阿里三年后&#xff0c;马辉和1000多名已经毕业的“校友”又回到了这个梦想启程的地方。 在校友会现场&#xff0c;马辉分享了自己的公益故事。 1991年&#xff0c;大眼睛女孩苏明娟…

腾讯花85亿买岛;微信发原图或泄露位置信息?高通逼因特尔把Modem芯片业务卖给苹果?小米9官网正式下架……...

关注并标星星CSDN云计算 速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周两次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go goFujifilm为X-T3增添机械云台功摄模块&#xff08;…

云栖专辑 | 阿里开发者们的第4个感悟:自驱是最好的进步方式

2015年12月20日&#xff0c;云栖社区上线。2018年12月20日&#xff0c;云栖社区3岁。 阿里巴巴常说“晴天修屋顶”。 在我们看来&#xff0c;寒冬中&#xff0c;最值得投资的是学习&#xff0c;是增厚的知识储备。 所以社区特别制作了这个专辑——分享给开发者们20个弥足珍贵的…

【建议珍藏系列】如果你这样回答「什么是线程安全」,面试官都会对你刮目相看!...

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 陈树义责编 | 阿秃不是线程的安全面试官问&#xff1a;“什么是线程安全”&#xff0c;如果你不能很好的回答&#xff0c;那就请往下看吧。论语中有句话叫“学而优则仕”&#xff0c;相信很多人都觉得是“学习好了可以做官”…

阿里开发者们的第5个感悟:听话,出活

2015年12月20日&#xff0c;云栖社区上线。2018年12月20日&#xff0c;云栖社区3岁。 阿里巴巴常说“晴天修屋顶”。 在我们看来&#xff0c;寒冬中&#xff0c;最值得投资的是学习&#xff0c;是增厚的知识储备。 所以社区特别制作了这个专辑——分享给开发者们20个弥足珍贵的…

bash: vue: command not found

安装Vuecli正常 npm install -g vue/cli查看vue版本&#xff0c;抛出bash: vue: command not found vue --version解决方案1&#xff1a; 在这个目录下面执行命令正常&#xff0c; 那就配置环境变量即可

机器学习与数据科学决策树指南

还在为如何抉择而感到纠结吗&#xff1f;快采用决策树&#xff08;Decision Tree&#xff09;算法帮你做出决定吧。决策树是一类非常强大的机器学习模型&#xff0c;具有高度可解释的同时&#xff0c;在许多任务中也有很高的精度。决策树在机器学习模型领域的特殊之处在于其信息…