//引入包
import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.*; import java.text.DateFormat; import java.text.SimpleDateFormat; import org.apache.log4j.*; import java.util.Calendar; import java.util.Vector; import javax.swing.*; import javax.swing.table.DefaultTableModel;
public cla MainTest extends JFrame{
public static final long serialVersionUID = 1l; Vector v=new Vector(); private JButton jb1,jb2,jb3,jb4,jb5,jtf3Listener; //按钮 private JScrollPane jsp; //滚动条 private JPanel jp1,jp2,jp3,jp4,jp5,jp6,jserver,jtable; //控件面板
private JLabel jl1,jl2,jl3,jl4,jl5; //标签 private JMenu jm1,jm2; //菜单 private JMenuItem ji1,ji2; //菜单子项 //表格
BankCard bc=new BankCard(); //新建类BankCard boolean flag=false; private String version=\"V1.5\"; private JTextField jtf,jtf2,jtf3,jtf4,jtf5; //文本框
private JMenuBar jmb1; //菜单栏
DefaultTableModel model = new DefaultTableModel(); String[] columnNames={\"姓名\",\"金额\",\"日期\",\"备注\"}; //创建日志记录器
private static Logger logger=Logger.getLogger(MainTest.cla.getName());
//主程序入口
public static void main(String[] args) { new MainTest();
//窗口初始化
public MainTest(){ }
//窗口初始化
this.setTitle(\"个人财务管理系统\"+version+\"(内测版By ZQ)\"); this.setSize(800,300); this.setLocation(450, 300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); GridLayout Grid=new GridLayout(1,2); this.setLayout(Grid); this.setResizable(true);
jserver=new JPanel(new GridLayout(7,1)); jtable=new JPanel(Grid);
//菜单栏构建
jmb1=new JMenuBar(); jm1=new JMenu(); jm1.setText(\"帮助\"); jm2=new JMenu(); jm2.setText(\"文件\"); ji1=new JMenuItem(); ji1.setText(\"软件须知\"); ji1.addActionListener(new MyBtnListener()); ji2=new JMenuItem(); ji2.setText(\"退出\"); ji2.addActionListener(new MyBtnListener()); jb4=new JButton(\"连接\"); jb4.addActionListener(new MyBtnListener()); jb5=new JButton(\"断开\"); jb5.addActionListener(new MyBtnListener()); jm1.add(ji1); jm2.add(ji2); jmb1.add(jm2); jmb1.add(jm1); jmb1.add(jb4); jmb1.add(jb5); jserver.add(jmb1);
//信息录入框(Label+Meage) jp1=new JPanel(); jl1=new JLabel(\"姓 名:\"); jtf=new JTextField(20); jp1.add(jl1);jp1.add(jtf); jserver.add(jp1);
jp2=new JPanel(); jl2=new JLabel(\"金 额:\"); jtf2=new JTextField(20); jp2.add(jl2);jp2.add(jtf2); jserver.add(jp2);
jp3=new JPanel(); jl3=new JLabel(\"日 期:\"); jtf3=new JTextField(14); jtf3Listener=new JButton(\"选择\"); jtf3Listener.addActionListener(new MyBtnListener()); jp3.add(jl3);jp3.add(jtf3);jp3.add(jtf3Listener); jserver.add(jp3);
jp4=new JPanel(); jl4=new JLabel(\"备 注:\"); jtf4=new JTextField(20); jp4.add(jl4);jp4.add(jtf4); jserver.add(jp4);
//服务器连接按钮
jp5=new JPanel(); jl5=new JLabel(\"服务器:\"); jtf5=new JTextField(20); jtf5.setText(\"localhost:1433\"); jp5.add(jl5); jp5.add(jtf5); jserver.add(jp5); //信息检索 jp6=new JPanel();
jb1=new JButton(\"添加\"); /* * URL url=MainTest.cla.getResource(\"20150524064327527_easyicon_net_128.png\");
Icon icon=new ImageIcon(url); jb1.setIcon(icon); */ jb1.addActionListener(new MyBtnListener()); jb2=new JButton(\"查询\"); jb2.addActionListener(new MyBtnListener()); jb3=new JButton(\"余额\");
jb3.addActionListener(new MyBtnListener()); jp6.add(jb1); jp6.add(jb2); jp6.add(jb3); jserver.add(jp6);
//创建表格------ model.setColumnIdentifiers(columnNames); JTable jt1 = new JTable(null, columnNames);
jt1=new JTable(model); model.addRow(new String[]{\"\",\"\",\"\",\"\"}); jt1.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); jt1.setFillsViewportHeight(true); jsp=new JScrollPane(jt1); jtable.add(jsp);
this.add(jserver); this.add(jtable); this.setVisible(true); }
public void TableValue(String[] s){ model.addRow(s); } public cla BankCard { private int meage = 0; String Name=\"\"; String sql=\"\"; Date Date=null; int Money; int i=0; Connection conn=null; Statement stmt=null; ResultSet rs=null; PreparedStatement pstmt = null; ResultSetMetaData rsmd = null; Object =null;
public int Save(Person p){ //数据存储 try{
int sum=getSum(); if(p.Moneysum){
meage=0; }else{ stmt = conn.createStatement();
sql= \"insert into BankCard (Name,Money,Date,Meage)\" +
\"values(\'\"+p.Name+\"\',\"+p.Money+\",\'\"+p.Date+\"\',\'\"+p.Meage+\"\')\"; stmt.execute(sql); System.out.println(p); System.out.println();
System.out.println(\"添加成功!\"); meage=1; } }catch(SQLException e3){logger.error(e3);} return meage; } /* public void getMeage(String name,String date){ //检索对象信息
Person p=new Person();
} System.out.println(); System.out.println(\"---------------检索结 try{
sql=\"Select * from BankCard Where Name=\"+\"\'\"+name+\"\' and
pstmt = conn.prepareStatement(sql.toString());
rs = pstmt.executeQuery(); rsmd = rs.getMetaData(); while (rs.next()) {
p.Name=rs.getString(\"Name\"); p.Date=rs.getString(\"Date\"); p.Meage=rs.getString(\"Meage\"); p.Money=rs.getInt(\"Money\"); Date=\"+\"\'\"+date+\"\'\"; 束!---------------\");
}catch(SQLException e3){logger.error(e3);} }*/ public void getMeage(String Meage,int idea){ //检索对象信息
Person p=new Person(); model.setRowCount(0);
try{
if(Meage!=\"null\" && idea==1){ //输入null查询所有数据
sql=\"Select * from BankCard Where
}else if(Meage!=\"null\" && idea==2){
sql=\"Select * from BankCard Where Name=\"+\"\'\"+Meage+\"\'\"; sql=\"Select * from BankCard\";
}else {
}
pstmt = conn.prepareStatement(sql.toString()); rs = pstmt.executeQuery(); rsmd = rs.getMetaData(); Date=\"+\"\'\"+Meage+\"\'\";
if(rs.next()==false){JOptionPane.showMeageDialog(getContentPane(),\"没有记录,请确认信息是否正确\",\"警告!\",JOptionPane.WARNING_MESSAGE);}
do{
p.Name=rs.getString(\"Name\"); p.Date=rs.getString(\"Date\"); p.Meage=rs.getString(\"Meage\"); p.Money=rs.getInt(\"Money\"); model.addRow(new System.out.println(p); }while (rs.next()); String[]{p.Name,String.valueOf(p.Money),p.Date,p.Meage}); System.out.println(); System.out.println(\"---------------检索结束!---------------\");
}catch(SQLException e3){logger.error(e3);} } public int getSum(){ //获取余额
sql=\"Select * from BankCard\"; rs = pstmt.executeQuery(); rsmd = rs.getMetaData(); while (rs.next()) { Sum+=rs.getInt(\"Money\"); } }catch(SQLException e3){logger.error(e3);} pstmt = conn.prepareStatement(sql.toString()); int Sum = 0; try{ System.out.println(); return Sum; } public int getDay(){ //获取当月天数
Calendar aCalendar=Calendar.getInstance(); int Day=aCalendar.get(Calendar.DATE); return Day; } public void Advise(){ //友情提示入口
int Sum = 0;
int Sum1= 0; int Day=getDay(); try{ sql=\"Select * from BankCard\"; rs = pstmt.executeQuery(); rsmd = rs.getMetaData(); while (rs.next()) {
Sum1+=rs.getInt(\"Money\");
if(rs.getInt(\"Money\")Sum1){ pstmt = conn.prepareStatement(sql.toString()); JOptionPane.showMeageDialog(null,\"友情提示,截至本月\"+Day+\"日您已花费:\"+(-Sum)+\"元----\"+\"当前余额:\"+Sum1+\"元\",\"警告!\",JOptionPane.WARNING_MESSAGE); }
public boolean testJDBC(String testJDBC){ //建立服务器连接 boolean flag=true;
//[2]建立连接 try{ String sql=\"jdbc:sqlserver://\"+testJDBC+\";DataBaseName=MoneyManager\"; conn=DriverManager.getConnection(sql,\"Welcome\",\"zhang1298\");
//conn=DriverManager.getConnection(\"jdbc:sqlserver://localhost:1433;DataBaseName=MoneyManager\",\"sa\",\"zhang1298\"); System.out.println(\"----——--------建立连接成功!------------\"); try{ //[1]加载驱动
Cla.forName(\"com.microsoft.sqlserver.jdbc.SQLServerDriver\"); } }catch(ClaNotFoundException e1){logger.error(e1);} System.out.println(); Advise(); }catch(SQLException e){logger.error(e);flag=false;} return flag; } public boolean ExitJDBC(){ //断开服务器连接
boolean flag=true;
}
public cla FrameChange implements Runnable {
public void run() { int x = MainTest.this.getX(); try{
//关闭数据连接
if (null != stmt) { stmt.close();} if (null != conn) {conn.close();} System.out.println(\"-------------数据库关闭成功!-----------\"); System.out.println(); }catch(SQLException e2){logger.equals(e2);flag=false;} return flag; }
int y = MainTest.this.getY();
for (int i = 0; i
if ((i & 1) == 0) {
x += 3;
y += 3;
} else {
x -= 3;
y -= 3;
}
MainTest.this.setLocation(x, y);
try {
}
} Thread.sleep(5); // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { } }
//添加信息
if(arg0.getSource()==jb1){
public void actionPerformed(ActionEvent arg0) { try{ //按钮监听器
cla MyBtnListener implements ActionListener{ if(jtf.getText().length()!=0&&jtf3.getText().length()!=0&&jtf2.getText().length()!=0){
Person p=new Person(); p.Name=jtf.getText();
p.Money=Integer.parseInt(jtf2.getText()); p.Date=jtf3.getText(); p.Meage=jtf4.getText(); int
n=JOptionPane.showConfirmDialog(getContentPane(),\"请确认信息,一旦添加无法更改\",\"信息确认!\",JOptionPane.YES_NO_CANCEL_OPTION);
if(n==JOptionPane.YES_OPTION){
int meage=bc.Save(p); if(meage==0){
JOptionPane.showMeageDialog(getContentPane(),\"当前余额:\"+bc.getSum()+\"元,小于您的取款要求:\"+-p.Money+\"元,请检查信息是否错误!\",\"警告!\",JOptionPane.WARNING_MESSAGE);
jtf2.setText(\"\");
}else if(meage==1){
jtf.setText(\"\");
jtf2.setText(\"\");
jtf3.setText(\"\");
jtf4.setText(\"\");
}
} }else{
new FrameChange().run();
JOptionPane.showMeageDialog(getContentPane(),\"请输入完整信息\",\"警告!\",JOptionPane.WARNING_MESSAGE);
}
//查询信息 }else if(arg0.getSource()==jb2){
if(jtf.getText().length()==0 && jtf3.getText().length()==0){ //查询所有
bc.getMeage(\"null\",0);
}else if(jtf.getText().length()==0&&jtf3.getText().length()!=0){ //按日期查询
bc.getMeage(jtf3.getText().toString(),1);
}else if(jtf.getText().length()!=0&&jtf3.getText().length()==0){ //按人名查询
bc.getMeage(jtf.getText().toString(),2); }
/*else if(jtf.getText().length()!=0&&jtf3.getText().length()!=0){ //按日期,人名查询
bc.getMeage(jtf.getText(), jtf3.getText()); }*/ //查询余额
}else if(arg0.getSource()==jb3){
int Sum=bc.getSum();
JOptionPane.showMeageDialog(getContentPane(),\"当前余额:\"+Sum+\"元\",\"余额查询\",JOptionPane.WARNING_MESSAGE);
//连接服务器
}else if(arg0.getSource()==jb4){
flag=bc.testJDBC(jtf5.getText());
if(flag){
jtf5.setText(\"已连接服务器\"); jtf5.setEditable(false); jb4.setEnabled(false); JOptionPane.showMeageDialog(getContentPane(),\"
}else{ 无法连接到数据库,服务器未打开或端口错误\",\"警告\",JOptionPane.WARNING_MESSAGE);
} //断开连接
}else if(arg0.getSource()==jb5){
flag=bc.ExitJDBC();
if(flag){ JOptionPane.showMeageDialog(getContentPane(),\"已断开服务器!\",\"提示\",JOptionPane.WARNING_MESSAGE);
jtf5.setText(\"localhost:1433\"); jtf5.setEditable(true); jb4.setEnabled(true); JOptionPane.showMeageDialog(getContentPane(),\"
}else{ 数据库断开失败,请重试\",\"提示\",JOptionPane.WARNING_MESSAGE);
}
//(菜单)帮助-软件介绍
}else if(arg0.getSource()==ji1){ JOptionPane.showMeageDialog(getContentPane(),\"软件名称:个人财务管理系统\\n软件版本:\"+version+\"(内测版本)\\n作 者:张强\\n更新时间:2015-5-24\",\"软件简介\",JOptionPane.WARNING_MESSAGE);
;
cldMax=format.format(calendar1.getTime()); while(!cld.equals(cldMax)){
//日期选择
}else if(arg0.getSource()==jtf3Listener){
try {
int i=0;
String[] poible =new String[31]; DateFormat format = new
Calendar calendar=Calendar.getInstance(); Calendar calendar1=Calendar.getInstance(); String cld,cldMax;
cld=format.format(calendar.getTime());
//(菜单)文件-退出
}else if(arg0.getSource()==ji2){ int x=MainTest.this.getX(); int y=MainTest.this.getY();
for (int i = 0; i
x=x-3;
y=y-2;
MainTest.this.setSize(x, y);
Thread.sleep(1);
}
System.exit(0); SimpleDateFormat(\"yyyy-M-dd\"); calendar.set(Calendar.DATE,calendar.getActualMinimum(Calendar.DATE)); calendar1.set(Calendar.DATE,calendar.getActualMaximum(Calendar.DATE))
poible[i]=cld;
calendar.add(Calendar.DAY_OF_MONTH,1);
cld=format.format(calendar.getTime());
}
poible[i]=cld; String i=i+1; selectedValue=JOptionPane.showInputDialog(null,\"请选择:\",\"日期\", JOptionPane.INFORMATION_MESSAGE, null, poible, poible[0]).toString();
}
if(selectedValue!=\"\"){
jtf3.setText(selectedValue); }else{}
// TODO Auto-generated catch block
} catch (Exception e) { } }catch(Exception e){new FrameChange().run();JOptionPane.showMeageDialog(getContentPane(),\"请先连接服务器\",\"警告!\",JOptionPane.WARNING_MESSAGE);
} //System.out.println(\"请先连接服务器\");} }
} }
public cla Person {
String Name=\"\";
int Money;
String Date=null;
String Meage=null; public Person(){};
public Person(String name, int money,String date,String Meage) {
}
public String toString() { return \"姓名:\" + Name + \" 金额:\" + Money + \" 日期:\" + Date +\" 备super(); Name = name; Money = money; this.Date = date; this.Meage=Meage;
注:\"+ Meage; } }