數(shù)據(jù)庫課程設計--java_個人記賬管理系統(tǒng)_第1頁
已閱讀1頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  目 錄</b></p><p><b>  1 前言1</b></p><p><b>  2 需求分析1</b></p><p>  2.1 課程設計目的1</p><p>  2.2 課程設計任務1</p><p&g

2、t;  2.3 設計環(huán)境1</p><p>  2.4 開發(fā)語言2</p><p><b>  3 分析和設計2</b></p><p>  3.1 系統(tǒng)E-R模型2</p><p>  3.2 表空間及表的設計2</p><p>  3.3 視圖設計5</p><

3、p>  3.4 存儲過程、函數(shù)、包的設計6</p><p>  3.5 觸發(fā)器設計7</p><p>  3.6 角色、用戶、權限設計8</p><p>  3.7 備份方案設計9</p><p>  4 課程設計總結9</p><p>  4.1 程序運行結果9</p><p&g

4、t;  4.2 設計結論11</p><p><b>  參考文獻12</b></p><p><b>  致 謝12</b></p><p><b>  附 錄13</b></p><p><b>  1 前言</b></p>

5、<p>  設計一個個人記賬管理系統(tǒng),用JAVA來編寫。綜合運用JAVA的基礎和算法設計的基本原則,用PLSQL Developer,orcale等工具實現(xiàn)。功能包括收入記錄、支出記錄、查詢功能、報表,并將記錄保存在數(shù)據(jù)庫中,通過連接數(shù)據(jù)庫可以查詢所有記錄,可以通過選擇日期將符合條件的記錄顯示在查詢框中,可以選擇收入或支出查詢收入記錄或者支出記錄。用戶可以通過報表了解到指定時間段內(nèi)收入總和、支出總和、余額。</p>

6、;<p><b>  2 需求分析</b></p><p>  2.1 課程設計目的</p><p>  通過專業(yè)課程設計Ⅱ,即大型數(shù)據(jù)庫系統(tǒng)課程設計,有助于培養(yǎng)學生綜合運用數(shù)據(jù)庫相關知識解決實際問題的能力。本設計要求對實際問題進行需求分析,提煉實際問題中的數(shù)據(jù),建立關系模型,并在大型數(shù)據(jù)庫中得以實現(xiàn)。同時要求對數(shù)據(jù)庫的運營、管理及使用上進行必要的規(guī)劃和

7、實現(xiàn)。</p><p>  2.2 課程設計任務</p><p>  針對某管理信息系統(tǒng)的需求,設計一個數(shù)據(jù)庫系統(tǒng)。具體內(nèi)容如下:</p><p>  根據(jù)需求,建立ER模型。通過ER圖表示。</p><p>  在此基礎上,設計物理表結構,編寫創(chuàng)建數(shù)據(jù)庫表的語句。較高要求為在設計創(chuàng)建數(shù)據(jù)表語句的同時考慮性能上的要求,采用相關的磁盤存儲技術。

8、</p><p>  從實際查詢應用出發(fā),為一些主要的應用模塊設計至少3個參數(shù)化視圖。</p><p>  針對常用的業(yè)務,創(chuàng)建包,同時實現(xiàn)一個函數(shù)放入包中。</p><p>  從數(shù)據(jù)檢驗的角度出發(fā),為相關的表建立至少1個觸發(fā)器。</p><p>  從數(shù)據(jù)更新或修改的角度出發(fā),設計至少1個存儲過程。</p><p>

9、;  從安全的角度出發(fā),規(guī)劃系統(tǒng)的角色、用戶、權限,并通過SQL實現(xiàn)。</p><p>  預計每個表的大致容量和增長速度。指定備份的方案,寫出相關的備份命令。</p><p>  以上所有命令及腳本均需測試,在設計報告中說明其功能并記錄其輸出。</p><p><b>  2.3 設計環(huán)境</b></p><p>  

10、(1)WINDOWS 2000/2003/XP系統(tǒng)</p><p> ?。?)Oracle數(shù)據(jù)庫管理系統(tǒng)</p><p><b>  2.4 開發(fā)語言</b></p><p><b>  PL/SQL語言</b></p><p><b>  3 分析和設計</b></p&

11、gt;<p>  3.1 系統(tǒng)E-R模型</p><p>  圖3-1 個人記賬管理系統(tǒng)E-R圖</p><p>  3.2 表空間及表的設計</p><p>  -- Create table</p><p>  create table BANK_INCOME(</p><p>  IN_ID

12、 NUMBER not null,</p><p>  IN_NAME VARCHAR2(50),</p><p>  IN_DATE VARCHAR2(50),</p><p>  IN_MONEY NUMBER(10,2),</p><p>  IN_COMMENT VARCHAR2(500)</p>

13、<p><b>  )</b></p><p>  tablespace USERS</p><p>  pctfree 10</p><p>  initrans 1</p><p>  maxtrans 255</p><p><b>  storage</b>

14、;</p><p><b>  (</b></p><p>  initial 64K</p><p>  minextents 1</p><p>  maxextents unlimited</p><p><b>  );</b></p><p>

15、;  -- Create/Recreate primary, unique and foreign key constraints </p><p>  alter table BANK_INCOME</p><p>  add constraint PK_IN_ID primary key (IN_ID)</p><p>  using index </p&

16、gt;<p>  tablespace USERS</p><p>  pctfree 10</p><p>  initrans 2</p><p>  maxtrans 255</p><p><b>  storage</b></p><p><b>  (</

17、b></p><p>  initial 64K</p><p>  minextents 1</p><p>  maxextents unlimited</p><p><b>  );</b></p><p>  -- Create table</p><p>

18、  create table BANK_OUT</p><p><b>  (</b></p><p>  OUT_ID NUMBER not null,</p><p>  OUT_NAME VARCHAR2(50),</p><p>  OUT_DATE VARCHAR2(50),</p&

19、gt;<p>  OUT_MONEY NUMBER(10,2),</p><p>  OUT_COMMENT VARCHAR2(500)</p><p><b>  )</b></p><p>  tablespace USERS</p><p>  pctfree 10</p><

20、p>  initrans 1</p><p>  maxtrans 255</p><p><b>  storage</b></p><p><b>  (</b></p><p>  initial 64K</p><p>  minextents 1</p&

21、gt;<p>  maxextents unlimited</p><p><b>  );</b></p><p>  -- Create/Recreate primary, unique and foreign key constraints </p><p>  alter table BANK_OUT</p>

22、<p>  add primary key (OUT_ID)</p><p>  using index </p><p>  tablespace USERS</p><p>  pctfree 10</p><p>  initrans 2</p><p>  maxtrans 255</p>

23、;<p><b>  storage</b></p><p><b>  (</b></p><p>  initial 64K</p><p>  minextents 1</p><p>  maxextents unlimited</p><p><

24、b>  );</b></p><p><b>  圖3-2 收入表</b></p><p><b>  圖3-3 支出表</b></p><p><b>  3.3 視圖設計</b></p><p><b>  圖3-4 收入視圖</b&g

25、t;</p><p><b>  圖3-5 支出視圖</b></p><p>  3.4 存儲過程、函數(shù)、包的設計</p><p><b>  圖3-6 存儲過程</b></p><p><b>  圖3-7包的設計</b></p><p><b&

26、gt;  3.5 觸發(fā)器設計</b></p><p><b>  (1)收入觸發(fā)器</b></p><p>  create or replace trigger tri_auto_income_id</p><p>  before insert on bank_income </p><p>  for

27、 each row</p><p><b>  declare</b></p><p>  -- local variables here</p><p><b>  begin</b></p><p>  select seq_income_id.nextval into:new.in_id fr

28、om dual;</p><p>  end tri_auto_income_id;</p><p><b>  (2)支出觸發(fā)器</b></p><p>  create or replace trigger TRI_AUTO_OUT_ID</p><p>  before insert on bank_out &l

29、t;/p><p>  for each row</p><p><b>  declare</b></p><p>  -- local variables here</p><p><b>  begin</b></p><p>  select seq_out_id.next

30、val into:new.out_id from dual;</p><p>  end TRI_AUTO_OUT_ID;</p><p>  3.6 角色、用戶、權限設計</p><p>  -- Create the role </p><p>  create role ROLE1;</p><p><b&

31、gt;  --給角色授權</b></p><p>  grant select,update,insert on bank_income to role1 </p><p>  grant select,update,insert on bank_out to role1</p><p>  -- Create the user </p>

32、<p>  create user huanghua</p><p>  identified by "123456"</p><p>  default tablespace SYSTEM</p><p>  temporary tablespace TEMP </p><p>  profile DEFAUL

33、T;</p><p>  grant select,update,insert on bank_income to huanghua with grant option</p><p>  3.7 備份方案設計</p><p>  (1)啟動SQL*plus,以SYSDBA身份登錄數(shù)據(jù)庫</p><p>  (2)查詢當前數(shù)據(jù)庫所有數(shù)據(jù)文件、

34、控制文件、聯(lián)機重做文件的位置</p><p>  SQL>select file_name from dba_data_files;</p><p>  SQL>SELECT member FROM v$logfile;</p><p>  SQL>SELECT value FROM v$parameter WHERE name=’control_

35、files’;</p><p><b>  (3)關閉數(shù)據(jù)庫</b></p><p>  SQL>SHUTDOWN IMMEDIATE</p><p>  (4)復制所有數(shù)據(jù)文件、聯(lián)機重做文件以及控制文件到備份磁盤可以直接在操作系統(tǒng)中使用復制、粘貼方式進行</p><p>  (5)重新啟動數(shù)據(jù)庫</p>

36、;<p>  SQL>STARTUP</p><p><b>  4 課程設計總結</b></p><p>  4.1運行結果如下圖所示:</p><p>  圖4-1 個人記賬管理界面</p><p>  圖4-2 收入記錄界面</p><p>  圖4-3支出記錄界面<

37、;/p><p>  圖4-4 查詢收入支出界面</p><p><b>  圖4-5 報表界面</b></p><p><b>  4.2、設計總結</b></p><p>  這次我們的課程設計題目是個人記賬管理系統(tǒng)。通過此次課程設計,掌握到了數(shù)據(jù)庫系統(tǒng)的開發(fā)方法。同時也加深了對剛剛學習的JAVA的印

38、象。整個代碼在寫的過程中出現(xiàn)了很多問題。有的實在解決不了的問題,就去問教我們JAVA的柳小文老師,老師也非常樂意幫助我解決一些困難。有的時候不懂的問題就去上網(wǎng)搜索答案,或者自己去看書。學習需要自主,對這一點我頗有感觸。</p><p>  此次課程設計結束之后,我還意猶未盡,因為從中感覺到了寫代碼的趣味。于是,我就開始想方設法找點小的應用程序去寫。因為這樣的學習方法是最快也是最有效的方式。比老師上課講要好的多。而

39、且大學生也應該培養(yǎng)自己的動手能力。而動手能力只能來自于自己從頭到尾的去寫一個不大的應用程序。了解整個創(chuàng)作的一個大體思路,在寫的過程中還要不斷地去請教我們的老師。因為他們對實際應用程序的把握比我們要強的多。</p><p>  當然,學無止境,不能因為這么一點小的成就就止步不前。前路很漫長,但我相信只要自己肯用心去學習,Nothing is impossible!</p><p><b

40、>  參考文獻</b></p><p>  [1]孫風棟,劉蕾等.Oracle 10g數(shù)據(jù)庫基礎教程[M].北京:電子工業(yè)出版社,2012.10.</p><p>  [2]王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論[M]北京:高等教育出版社,2006.5.</p><p>  [3]Java Programming Java程序設計[M]北京:清華大學出版社,

41、2010.1.</p><p><b>  致 謝</b></p><p>  感謝我們的指導老師xx老師,謝謝她在我們的課程設計過程中提出了指導性的方案和架構,并指引我們閱讀相關的資料和書籍,使我們在不熟悉的領域中仍能迅速掌握新的方法和技術。</p><p>  同時也感謝校領導給我們這次難得的鍛煉機會,讓我們能更好的理解和實踐Oracle

42、數(shù)據(jù)庫,讓我們對數(shù)據(jù)庫有了更深刻的認知,對已學知識有了更進一步的鞏固。</p><p>  總之,通過這次課程設計,我獲益良多。</p><p><b>  附 錄</b></p><p><b>  主要代碼:</b></p><p>  package com.sxt.bank.dao;<

43、/p><p>  import java.sql.Connection;</p><p>  import java.sql.DriverManager;</p><p>  import java.sql.Statement;</p><p><b>  /**</b></p><p><b&

44、gt;  * 數(shù)據(jù)庫工具類</b></p><p>  * @author Administrator</p><p><b>  *</b></p><p><b>  */</b></p><p>  public class DBUtil {</p><p>

45、;<b>  /**</b></p><p>  * 專用于取得數(shù)據(jù)庫的連接</p><p><b>  * @return</b></p><p><b>  */</b></p><p>  public static Connection getConn(){</p

46、><p>  Connection conn=null;</p><p><b>  try {</b></p><p><b>  //加載驅(qū)動</b></p><p>  Class.forName("oracle.jdbc.driver.OracleDriver");</

47、p><p>  String url="jdbc:oracle:thin:@172.19.95.36:1521:orcl";</p><p><b>  //取得連接</b></p><p>  conn=DriverManager.getConnection(url, "scott", "tige

48、r");</p><p>  } catch (Exception e) {</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p>  return conn;</p><p><b>  }</b>&

49、lt;/p><p><b>  /**</b></p><p><b>  * 專用于關閉連接</b></p><p>  * @param conn</p><p>  * @param stat</p><p><b>  */</b></p>

50、;<p>  public static void closeConn(Connection conn,Statement stat){</p><p><b>  try {</b></p><p>  stat.close();</p><p>  conn.close();</p><p>  } c

51、atch (Exception e2) {</p><p>  e2.printStackTrace();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b

52、>  收入數(shù)據(jù)處理代碼:</b></p><p>  package com.sxt.bank.dao;</p><p>  import java.sql.Connection;</p><p>  import java.sql.DriverManager;</p><p>  import java.sql.Prepa

53、redStatement;</p><p>  import com.sxt.bank.entity.InCome;</p><p><b>  /**</b></p><p><b>  * 數(shù)據(jù)處理</b></p><p>  * @author Administrator</p>

54、<p><b>  *</b></p><p><b>  */</b></p><p>  public class IncomeDao {</p><p><b>  /**</b></p><p>  * 用于保存收入項到數(shù)據(jù)庫</p><

55、p>  * @param income</p><p><b>  */</b></p><p>  public void saveIncome(InCome income){</p><p>  Connection conn=null;</p><p>  PreparedStatement stat=nul

56、l;</p><p><b>  try {</b></p><p>  conn=DBUtil.getConn();</p><p>  //得到預編譯執(zhí)行器</p><p>  stat=conn.prepareStatement("insert into bank_income(in_name,in_da

57、te,in_money,in_comment) values(?,?,?,?)");</p><p><b>  //設置參數(shù)</b></p><p>  //stat.setInt(1,2);</p><p>  stat.setString(1, income.getInName());</p><p> 

58、 stat.setString(2, income.getInDate());</p><p>  stat.setFloat(3, income.getMoney());</p><p>  stat.setString(4, income.getComment());</p><p><b>  //執(zhí)行</b></p>&l

59、t;p>  stat.execute();</p><p>  } catch (Exception e) {</p><p>  e.printStackTrace();</p><p><b>  }finally{</b></p><p>  DBUtil.closeConn(conn, stat);<

60、/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  支出數(shù)據(jù)處理代碼:</b></p><p>  package com.sxt.bank.

61、dao;</p><p>  import java.sql.Connection;</p><p>  import java.sql.DriverManager;</p><p>  import java.sql.PreparedStatement;</p><p>  import com.sxt.bank.entity.Out;&l

62、t;/p><p><b>  /**</b></p><p><b>  * 支出的數(shù)據(jù)處理</b></p><p>  * @author Administrator</p><p><b>  *</b></p><p><b>  */<

63、;/b></p><p>  public class OutDao {</p><p><b>  /**</b></p><p>  * 用于保存支出項到數(shù)據(jù)庫</p><p>  * @param income</p><p><b>  */</b></p

64、><p>  public void saveOutcome(Out out){</p><p>  Connection conn=null;</p><p>  PreparedStatement stat=null;</p><p><b>  try {</b></p><p><b&g

65、t;  //加載驅(qū)動</b></p><p>  Class.forName("oracle.jdbc.driver.OracleDriver");</p><p>  String url="jdbc:oracle:thin:@172.19.95.36:1521:orcl";</p><p><b> 

66、 //取得連接</b></p><p>  conn=DriverManager.getConnection(url, "scott", "tiger");</p><p>  //得到預編譯執(zhí)行器</p><p>  stat=conn.prepareStatement("insert into ban

67、k_out(out_name,out_date,out_money,out_comment) values(?,?,?,?)");</p><p><b>  //設置參數(shù)</b></p><p>  stat.setString(1,out.getOutName());</p><p>  stat.setString(2, out

68、.getOutDate());</p><p>  stat.setFloat(3, out.getMoney());</p><p>  stat.setString(4, out.getComment());</p><p><b>  //執(zhí)行</b></p><p>  stat.execute();</p

69、><p>  } catch (Exception e) {</p><p>  e.printStackTrace();</p><p><b>  }finally{</b></p><p><b>  try {</b></p><p>  stat.close();<

70、;/p><p>  conn.close();</p><p>  } catch (Exception e2) {</p><p>  e2.printStackTrace();</p><p><b>  }</b></p><p><b>  }</b></p>

71、<p><b>  }</b></p><p><b>  }</b></p><p><b>  收入支出查詢代碼:</b></p><p>  package com.sxt.bank.dao;</p><p>  import java.sql.Connec

72、tion;</p><p>  import java.sql.PreparedStatement;</p><p>  import java.sql.ResultSet;</p><p>  import java.util.ArrayList;</p><p>  import com.sxt.bank.entity.InCome;&l

73、t;/p><p>  import com.sxt.bank.entity.Out;</p><p><b>  /**</b></p><p><b>  * 收入支出查詢</b></p><p>  * @author Administrator</p><p><b&

74、gt;  *</b></p><p><b>  */</b></p><p>  public class QueryDao {</p><p><b>  /**</b></p><p>  * 取得數(shù)據(jù)的記錄,并封裝成集合</p><p><b>

75、  * @return</b></p><p><b>  */</b></p><p>  public ArrayList getInList(){</p><p>  Connection conn=null;</p><p>  PreparedStatement stat=null;</p&g

76、t;<p>  ResultSet rs=null;</p><p>  //新建一個集合用來裝out</p><p>  ArrayList<InCome> inList=new ArrayList<InCome>();</p><p><b>  try {</b></p><p&g

77、t;<b>  //得到連接</b></p><p>  conn=DBUtil.getConn();</p><p>  //SQL語句執(zhí)行器</p><p>  stat=conn.prepareStatement("select * from bank_income");</p><p>  /

78、/執(zhí)行SQL查詢,得到結果集</p><p>  rs=stat.executeQuery();</p><p>  while(rs.next()){ </p><p>  //從記錄中取值 參數(shù)類型 字段名</p><p>  String inName=rs.getString("in_

79、name");</p><p>  String inDate=rs.getString("in_date");</p><p>  float money=rs.getFloat("in_money");</p><p>  String comment=rs.getString("in_comment&

80、quot;);</p><p><b>  //封裝成對象</b></p><p>  InCome in=new InCome(inName, inDate, money, comment);</p><p>  //將對象裝載到集合中</p><p>  inList.add(in);</p><

81、p><b>  }</b></p><p>  } catch (Exception e) {</p><p>  e.printStackTrace();</p><p><b>  }finally{</b></p><p>  DBUtil.closeConn(conn, stat);&

82、lt;/p><p><b>  }</b></p><p><b>  //返回</b></p><p>  return inList;</p><p><b>  }</b></p><p><b>  /**</b></p&

83、gt;<p>  * 取得數(shù)據(jù)的記錄,并封裝成集合</p><p><b>  * @return</b></p><p><b>  */</b></p><p>  public ArrayList getOutList(){</p><p>  Connection conn=n

84、ull;</p><p>  PreparedStatement stat=null;</p><p>  ResultSet rs=null;</p><p>  //新建一個集合用來裝out</p><p>  ArrayList<Out> outList=new ArrayList<Out>();</p&g

85、t;<p><b>  try {</b></p><p><b>  //得到連接</b></p><p>  conn=DBUtil.getConn();</p><p>  //SQL語句執(zhí)行器</p><p>  stat=conn.prepareStatement("

86、;select * from bank_out");</p><p>  //執(zhí)行SQL查詢,得到結果集</p><p>  rs=stat.executeQuery();</p><p>  while(rs.next()){ </p><p>  //從記錄中取值 參數(shù)類型 字段名<

87、/p><p>  String outName=rs.getString("out_name");</p><p>  String outDate=rs.getString("out_date");</p><p>  float money=rs.getFloat("out_money");</p&g

88、t;<p>  String comment=rs.getString("out_comment");</p><p><b>  //封裝成對象</b></p><p>  Out out=new Out(outName, outDate, money, comment);</p><p>  //將對象裝載

89、到集合中</p><p>  outList.add(out);</p><p><b>  }</b></p><p>  } catch (Exception e) {</p><p>  e.printStackTrace();</p><p><b>  }finally{<

90、;/b></p><p>  DBUtil.closeConn(conn, stat);</p><p><b>  }</b></p><p><b>  //返回</b></p><p>  return outList;</p><p><b>  }&

91、lt;/b></p><p><b>  }</b></p><p><b>  報表代碼:</b></p><p>  package com.sxt.bank.view;</p><p>  import java.awt.EventQueue;</p><p> 

92、 import java.awt.event.ActionEvent;</p><p>  import java.awt.event.ActionListener;</p><p>  import java.awt.event.MouseAdapter;</p><p>  import java.awt.event.MouseEvent;</p>

93、<p>  import java.awt.event.WindowAdapter;</p><p>  import java.awt.event.WindowEvent;</p><p>  import java.util.ArrayList;</p><p>  import javax.swing.ImageIcon;</p>&

94、lt;p>  import javax.swing.JButton;</p><p>  import javax.swing.JFrame;</p><p>  import javax.swing.JLabel;</p><p>  import javax.swing.JPanel;</p><p>  import javax.

95、swing.JScrollPane;</p><p>  import javax.swing.JTable;</p><p>  import javax.swing.JTextField;</p><p>  import javax.swing.border.EmptyBorder;</p><p>  import javax.swi

96、ng.table.DefaultTableModel;</p><p>  import com.sxt.bank.dao.QueryDao;</p><p>  import com.sxt.bank.entity.InCome;</p><p>  import com.sxt.bank.entity.Out;</p><p>  imp

97、ort com.sxt.bank.util.DatePanel;</p><p>  public class reportFrame extends JFrame implements ActionListener {</p><p>  private JPanel contentPane;</p><p>  private JTextField textf;

98、</p><p>  private JTextField textl;</p><p>  private JTable table;</p><p><b>  /**</b></p><p>  * Launch the application.</p><p><b>  */&

99、lt;/b></p><p>  public static void main(String[] args) {</p><p>  EventQueue.invokeLater(new Runnable() {</p><p>  public void run() {</p><p><b>  try {</b&

100、gt;</p><p>  reportFrame frame = new reportFrame();</p><p>  frame.setVisible(true);</p><p>  } catch (Exception e) {</p><p>  e.printStackTrace();</p><p>

101、<b>  }</b></p><p><b>  }</b></p><p><b>  });</b></p><p><b>  }</b></p><p><b>  /**</b></p><p> 

102、 * Create the frame.</p><p><b>  */</b></p><p>  public reportFrame() {</p><p>  setTitle("\u62A5\u8868");</p><p>  setResizable(false);</p>

103、<p>  this.addWindowListener(new WindowAdapter() {</p><p><b>  @Override</b></p><p>  public void windowClosing(WindowEvent arg0) {</p><p>  //只銷毀本窗口,不退出慮擬機</p

104、><p>  reportFrame.this.dispose();</p><p><b>  }</b></p><p><b>  });</b></p><p>  setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);</p>

105、<p>  this.setIconImage(new ImageIcon("image/person.JPG").getImage());</p><p>  setBounds(100, 100, 441, 342);</p><p>  contentPane = new JPanel();</p><p>  contentPa

106、ne.setBorder(new EmptyBorder(5, 5, 5, 5));</p><p>  setContentPane(contentPane);</p><p>  //設置背景===============</p><p>  ImageIcon img = new ImageIcon("image/chao.jpg");&

107、lt;/p><p>  final JLabel lblImg = new JLabel(img);</p><p>  this.getLayeredPane().add(lblImg,new Integer(Integer.MIN_VALUE));</p><p>  lblImg.setBounds(0, lblImg.getHeight(), 457, 542)

108、;</p><p>  ((JPanel)getContentPane()).setOpaque(false); </p><p>  //======================</p><p>  contentPane.setLayout(null);</p><p>  JLabel repo = new JLabel("

109、;\u62A5\u8868\u8BB0\u5F55");</p><p>  repo.setBounds(10, 25, 61, 15);</p><p>  contentPane.add(repo);</p><p>  JLabel lblNewLabel = new JLabel("\u65E5\u671F\uFF1A");&

110、lt;/p><p>  lblNewLabel.setBounds(81, 25, 39, 15);</p><p>  contentPane.add(lblNewLabel);</p><p>  textf = new JTextField();</p><p>  textf.setBounds(118, 22, 73, 21);<

111、/p><p>  contentPane.add(textf);</p><p>  textf.setColumns(10);</p><p>  JLabel label = new JLabel("\u5230");</p><p>  label.setBounds(224, 25, 21, 15);</p>

112、;<p>  contentPane.add(label);</p><p>  textl = new JTextField();</p><p>  textl.setColumns(10);</p><p>  textl.setBounds(241, 22, 72, 21);</p><p>  contentPane.

113、add(textl);</p><p>  JButton btnDate1 = new JButton("...");</p><p>  btnDate1.addMouseListener(new MouseAdapter() {</p><p><b>  @Override</b></p><p&

114、gt;  public void mouseClicked(MouseEvent event) {</p><p>  //彈出日期框 父窗口 模式 輸入框 x y </p><p>  new DatePanel(reportFrame.this,true,textf,event.getXOnScreen(),event.getYO

115、nScreen());</p><p><b>  }</b></p><p><b>  });</b></p><p>  btnDate1.setBounds(195, 22, 21, 23);</p><p>  contentPane.add(btnDate1);</p>&

116、lt;p>  JButton btnDate2 = new JButton("...");</p><p>  btnDate2.addMouseListener(new MouseAdapter() {</p><p><b>  @Override</b></p><p>  public void mouseCl

117、icked(MouseEvent event) {</p><p>  //彈出日期框 父窗口 模式 輸入框 x y </p><p>  new DatePanel(reportFrame.this,true,textl,event.getXOnScreen(),event.getYOnScreen());</p>&

118、lt;p><b>  }</b></p><p><b>  });</b></p><p>  btnDate2.setBounds(316, 21, 21, 23);</p><p>  contentPane.add(btnDate2);</p><p>  JScrollPane sc

119、rollPane = new JScrollPane();</p><p>  scrollPane.setBounds(10, 56, 413, 214);</p><p>  contentPane.add(scrollPane);</p><p><b>  //建表頭</b></p><p>  String[]

120、 header={"收入/支出項","日期","金額","備注"};</p><p><b>  //建數(shù)據(jù)模型</b></p><p>  dtm=new DefaultTableModel(null,header);</p><p>  table = new

121、JTable(dtm);</p><p>  scrollPane.setViewportView(table);</p><p>  JButton inquiry = new JButton("\u67E5\u8BE2");</p><p>  inquiry.addActionListener(this);</p><p

122、>  inquiry.setActionCommand("query");</p><p>  inquiry.setBounds(347, 21, 76, 23);</p><p>  contentPane.add(inquiry);</p><p>  JLabel outlabel = new JLabel("\u652F

123、\u51FA\u5408\u8BA1\uFF1A");</p><p>  outlabel.setBounds(10, 285, 72, 15);</p><p>  contentPane.add(outlabel);</p><p>  JLabel label_1 = new JLabel("\u6536\u5165\u5408\u8BA

124、1\uFF1A");</p><p>  label_1.setBounds(163, 285, 74, 15);</p><p>  contentPane.add(label_1);</p><p>  JLabel label_2 = new JLabel("\u4F59\u989D\uFF1A");</p><

125、;p>  label_2.setBounds(313, 285, 44, 15);</p><p>  contentPane.add(label_2);</p><p>  textoutsum = new JTextField();</p><p>  textoutsum.setBounds(87, 282, 66, 21);</p>&l

126、t;p>  contentPane.add(textoutsum);</p><p>  textoutsum.setColumns(10);</p><p>  textinsum = new JTextField();</p><p>  textinsum.setColumns(10);</p><p>  textinsum.s

127、etBounds(237, 282, 66, 21);</p><p>  contentPane.add(textinsum);</p><p>  textyu = new JTextField();</p><p>  textyu.setColumns(10);</p><p>  textyu.setBounds(357, 282,

128、 66, 21);</p><p>  contentPane.add(textyu);</p><p><b>  }</b></p><p>  static double insum=0,outsum=0,remanent=0;</p><p>  DefaultTableModel dtm=null;</p

129、><p>  private JTextField textoutsum;</p><p>  private JTextField textinsum;</p><p>  private JTextField textyu;</p><p>  public void actionPerformed(ActionEvent event) {&

130、lt;/p><p>  if(event.getActionCommand().equals("exit")){</p><p>  this.dispose();</p><p>  }else if(event.getActionCommand().equals("query")){</p><p> 

131、 //去數(shù)據(jù)庫查詢 得到數(shù)據(jù)</p><p>  QueryDao queryDao=new QueryDao();</p><p><b>  //取得集合</b></p><p>  ArrayList<InCome> inList=queryDao.getInList();</p><p>  Arra

132、yList<Out> outList=queryDao.getOutList();</p><p>  //清空表格的歷史數(shù)據(jù)</p><p>  dtm.setRowCount(0);</p><p>  insum=outsum=0;</p><p><b>  //顯示在表格中</b></p>

133、;<p>  for(InCome in:inList){</p><p>  //將數(shù)據(jù)加載到表格模型中out</p><p>  dtm.addRow(new Object[]{in.getInName(),in.getInDate(),in.getMoney(),in.getComment()});</p><p>  insum+=in.get

134、Money();</p><p>  textinsum.setText(String.valueOf(insum));</p><p><b>  }</b></p><p><b>  //顯示在表格中</b></p><p>  for(Out out:outList){</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論