版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目 錄1 前言12 需求分析1 2.1 課程設計目的1 2.2 課程設計任務1 2.3 設計環(huán)境1 2.4 開發(fā)語言23 分析和設計2 3.1 系統(tǒng)E-R模型2 3.2 表空間及表的設計2 3.3 視圖設計5 3.4 存儲過程、函數(shù)、包的設計6 3.5 觸發(fā)器設計7 3.6 角色、用戶、權限設計8 3.7 備份方案設計94 課程設計總結9 4.1 程序運行結果9 4.2 設計結論11參考文獻12致 謝12附 錄131 前言設計一個個人記賬管理系統(tǒng),用JAVA來編寫。綜合運用JAVA的基礎和算法設計的基本原則,用PLSQL Developer,orcale等工具實現(xiàn)。功能包括收入記錄、支出記錄、
2、查詢功能、報表,并將記錄保存在數(shù)據庫中,通過連接數(shù)據庫可以查詢所有記錄,可以通過選擇日期將符合條件的記錄顯示在查詢框中,可以選擇收入或支出查詢收入記錄或者支出記錄。用戶可以通過報表了解到指定時間段內收入總和、支出總和、余額。2 需求分析2.1 課程設計目的通過專業(yè)課程設計,即大型數(shù)據庫系統(tǒng)課程設計,有助于培養(yǎng)學生綜合運用數(shù)據庫相關知識解決實際問題的能力。本設計要求對實際問題進行需求分析,提煉實際問題中的數(shù)據,建立關系模型,并在大型數(shù)據庫中得以實現(xiàn)。同時要求對數(shù)據庫的運營、管理及使用上進行必要的規(guī)劃和實現(xiàn)。2.2 課程設計任務針對某管理信息系統(tǒng)的需求,設計一個數(shù)據庫系統(tǒng)。具體內容如下:(1) 根
3、據需求,建立ER模型。通過ER圖表示。(2) 在此基礎上,設計物理表結構,編寫創(chuàng)建數(shù)據庫表的語句。較高要求為在設計創(chuàng)建數(shù)據表語句的同時考慮性能上的要求,采用相關的磁盤存儲技術。(3) 從實際查詢應用出發(fā),為一些主要的應用模塊設計至少3個參數(shù)化視圖。(4) 針對常用的業(yè)務,創(chuàng)建包,同時實現(xiàn)一個函數(shù)放入包中。(5) 從數(shù)據檢驗的角度出發(fā),為相關的表建立至少1個觸發(fā)器。(6) 從數(shù)據更新或修改的角度出發(fā),設計至少1個存儲過程。(7) 從安全的角度出發(fā),規(guī)劃系統(tǒng)的角色、用戶、權限,并通過SQL實現(xiàn)。(8) 預計每個表的大致容量和增長速度。指定備份的方案,寫出相關的備份命令。(9) 以上所有命令及腳本均
4、需測試,在設計報告中說明其功能并記錄其輸出。2.3 設計環(huán)境(1)WINDOWS 2000/2003/XP系統(tǒng)(2)Oracle數(shù)據庫管理系統(tǒng)2.4 開發(fā)語言PL/SQL語言3 分析和設計3.1 系統(tǒng)E-R模型圖3-1 個人記賬管理系統(tǒng)E-R圖3.2 表空間及表的設計- Create tablecreate table BANK_INCOME( IN_ID NUMBER not null, IN_NAME VARCHAR2(50), IN_DATE VARCHAR2(50), IN_MONEY NUMBER(10,2), IN_COMMENT VARCHAR2(500)tablespace U
5、SERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited );- Create/Recreate primary, unique and foreign key constraints alter table BANK_INCOME add constraint PK_IN_ID primary key (IN_ID) using index tablespace USERS pctfree 10 initrans 2 maxtrans 255 storage
6、( initial 64K minextents 1 maxextents unlimited );- Create tablecreate table BANK_OUT( OUT_ID NUMBER not null, OUT_NAME VARCHAR2(50), OUT_DATE VARCHAR2(50), OUT_MONEY NUMBER(10,2), OUT_COMMENT VARCHAR2(500)tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxexte
7、nts unlimited );- Create/Recreate primary, unique and foreign key constraints alter table BANK_OUT add primary key (OUT_ID) using index tablespace USERS pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited );列名類型說明in_idnumber主鍵,收入idin_nameVarchar2(50)收入項in_dateV
8、archar2(50)收入日期in_moneyNumber(10,2)收入金額in_commentVarchar2(500)收入備注圖3-2 收入表列名類型說明out_idnumber主鍵,支出idout _nameVarchar2(50)支出項out _dateVarchar2(50)支出日期out _moneyNumber(10,2)支出金額out _commentVarchar2(500)支出備注 圖3-3 支出表3.3 視圖設計圖3-4 收入視圖圖3-5 支出視圖3.4 存儲過程、函數(shù)、包的設計圖3-6 存儲過程圖3-7包的設計3.5 觸發(fā)器設計 (1)收入觸發(fā)器create or r
9、eplace trigger tri_auto_income_id before insert on bank_income for each rowdeclare - local variables herebegin select seq_income_id.nextval into:new.in_id from dual;end tri_auto_income_id;(2)支出觸發(fā)器create or replace trigger TRI_AUTO_OUT_ID before insert on bank_out for each rowdeclare - local variable
10、s herebegin select seq_out_id.nextval into:new.out_id from dual;end TRI_AUTO_OUT_ID;3.6 角色、用戶、權限設計- Create the role create role ROLE1;-給角色授權grant select,update,insert on bank_income to role1 grant select,update,insert on bank_out to role1- Create the user create user huanghuaidentified by "1234
11、56"default tablespace SYSTEMtemporary tablespace TEMP profile DEFAULT;grant select,update,insert on bank_income to huanghua with grant option3.7 備份方案設計(1)啟動SQL*plus,以SYSDBA身份登錄數(shù)據庫(2)查詢當前數(shù)據庫所有數(shù)據文件、控制文件、聯(lián)機重做文件的位置SQL>select file_name from dba_data_files;SQL>SELECT member FROM v$logfile;SQL&g
12、t;SELECT value FROM v$parameter WHERE name=control_files;(3)關閉數(shù)據庫SQL>SHUTDOWN IMMEDIATE(4)復制所有數(shù)據文件、聯(lián)機重做文件以及控制文件到備份磁盤可以直接在操作系統(tǒng)中使用復制、粘貼方式進行(5)重新啟動數(shù)據庫SQL>STARTUP4 課程設計總結4.1運行結果如下圖所示: 圖4-1 個人記賬管理界面 圖4-2 收入記錄界面 圖4-3支出記錄界面 圖4-4 查詢收入支出界面 圖4-5 報表界面4.2、設計總結這次我們的課程設計題目是個人記賬管理系統(tǒng)。通過此次課程設計,掌握到了數(shù)據庫系統(tǒng)的開發(fā)方法。同
13、時也加深了對剛剛學習的JAVA的印象。整個代碼在寫的過程中出現(xiàn)了很多問題。有的實在解決不了的問題,就去問教我們JAVA的柳小文老師,老師也非常樂意幫助我解決一些困難。有的時候不懂的問題就去上網搜索答案,或者自己去看書。學習需要自主,對這一點我頗有感觸。此次課程設計結束之后,我還意猶未盡,因為從中感覺到了寫代碼的趣味。于是,我就開始想方設法找點小的應用程序去寫。因為這樣的學習方法是最快也是最有效的方式。比老師上課講要好的多。而且大學生也應該培養(yǎng)自己的動手能力。而動手能力只能來自于自己從頭到尾的去寫一個不大的應用程序。了解整個創(chuàng)作的一個大體思路,在寫的過程中還要不斷地去請教我們的老師。因為他們對實
14、際應用程序的把握比我們要強的多。當然,學無止境,不能因為這么一點小的成就就止步不前。前路很漫長,但我相信只要自己肯用心去學習,Nothing is impossible!參考文獻1孫風棟,劉蕾等.Oracle 10g數(shù)據庫基礎教程M.北京:電子工業(yè)出版社,2012.10.2王珊,薩師煊.數(shù)據庫系統(tǒng)概論M北京:高等教育出版社,2006.5.3Java Programming Java程序設計M北京:清華大學出版社,2010.1.致 謝感謝我們的指導老師柳小文老師,謝謝她在我們的課程設計過程中提出了指導性的方案和架構,并指引我們閱讀相關的資料和書籍,使我們在不熟悉的領域中仍能迅速掌握新的方法和技術
15、。同時也感謝校領導給我們這次難得的鍛煉機會,讓我們能更好的理解和實踐Oracle數(shù)據庫,讓我們對數(shù)據庫有了更深刻的認知,對已學知識有了更進一步的鞏固??傊?,通過這次課程設計,我獲益良多。附 錄主要代碼:package com.sxt.bank.dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;/* * 數(shù)據庫工具類 * author Administrator * */public class DBUtil /* * 專用于取得數(shù)據庫的連接 * return */publ
16、ic static Connection getConn()Connection conn=null;try /加載驅動Class.forName("oracle.jdbc.driver.OracleDriver");String url="jdbc:oracle:thin:172.19.95.36:1521:orcl"/取得連接conn=DriverManager.getConnection(url, "scott", "tiger"); catch (Exception e) e.printStackTrace
17、();return conn;/* * 專用于關閉連接 * param conn * param stat */public static void closeConn(Connection conn,Statement stat)try stat.close();conn.close(); catch (Exception e2) e2.printStackTrace();收入數(shù)據處理代碼:package com.sxt.bank.dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Prep
18、aredStatement;import com.sxt.bank.entity.InCome;/* * 數(shù)據處理 * author Administrator * */public class IncomeDao /* * 用于保存收入項到數(shù)據庫 * param income */public void saveIncome(InCome income)Connection conn=null;PreparedStatement stat=null;try conn=DBUtil.getConn();/得到預編譯執(zhí)行器stat=conn.prepareStatement("inse
19、rt into bank_income(in_name,in_date,in_money,in_comment) values(?,?,?,?)");/設置參數(shù)/stat.setInt(1,2);stat.setString(1, income.getInName();stat.setString(2, income.getInDate();stat.setFloat(3, income.getMoney();stat.setString(4, income.getComment();/執(zhí)行stat.execute(); catch (Exception e) e.printStac
20、kTrace();finallyDBUtil.closeConn(conn, stat);支出數(shù)據處理代碼:package com.sxt.bank.dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import com.sxt.bank.entity.Out;/* * 支出的數(shù)據處理 * author Administrator * */public class OutDao /* * 用于保存支出項到數(shù)據庫 * param income */publi
21、c void saveOutcome(Out out)Connection conn=null;PreparedStatement stat=null;try /加載驅動Class.forName("oracle.jdbc.driver.OracleDriver");String url="jdbc:oracle:thin:172.19.95.36:1521:orcl"/取得連接conn=DriverManager.getConnection(url, "scott", "tiger");/得到預編譯執(zhí)行器stat
22、=conn.prepareStatement("insert into bank_out(out_name,out_date,out_money,out_comment) values(?,?,?,?)");/設置參數(shù)stat.setString(1,out.getOutName();stat.setString(2, out.getOutDate();stat.setFloat(3, out.getMoney();stat.setString(4, out.getComment();/執(zhí)行stat.execute(); catch (Exception e) e.prin
23、tStackTrace();finallytry stat.close();conn.close(); catch (Exception e2) e2.printStackTrace();收入支出查詢代碼:package com.sxt.bank.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import com.sxt.bank.entity.InCome;import com.sxt.bank.enti
24、ty.Out;/* * 收入支出查詢 * author Administrator * */public class QueryDao /* * 取得數(shù)據的記錄,并封裝成集合 * return */public ArrayList getInList()Connection conn=null;PreparedStatement stat=null;ResultSet rs=null;/新建一個集合用來裝outArrayList<InCome> inList=new ArrayList<InCome>();try /得到連接conn=DBUtil.getConn();/
25、SQL語句執(zhí)行器stat=conn.prepareStatement("select * from bank_income");/執(zhí)行SQL查詢,得到結果集rs=stat.executeQuery();while(rs.next() /從記錄中取值 參數(shù)類型 字段名String inName=rs.getString("in_name");String inDate=rs.getString("in_date");float money=rs.getFloat("in_money");String comment=
26、rs.getString("in_comment");/封裝成對象InCome in=new InCome(inName, inDate, money, comment);/將對象裝載到集合中inList.add(in); catch (Exception e) e.printStackTrace();finallyDBUtil.closeConn(conn, stat);/返回return inList;/* * 取得數(shù)據的記錄,并封裝成集合 * return */public ArrayList getOutList()Connection conn=null;Prep
27、aredStatement stat=null;ResultSet rs=null;/新建一個集合用來裝outArrayList<Out> outList=new ArrayList<Out>();try /得到連接conn=DBUtil.getConn();/SQL語句執(zhí)行器stat=conn.prepareStatement("select * from bank_out");/執(zhí)行SQL查詢,得到結果集rs=stat.executeQuery();while(rs.next() /從記錄中取值 參數(shù)類型 字段名String outName=rs
28、.getString("out_name");String outDate=rs.getString("out_date");float money=rs.getFloat("out_money");String comment=rs.getString("out_comment");/封裝成對象Out out=new Out(outName, outDate, money, comment);/將對象裝載到集合中outList.add(out); catch (Exception e) e.printStackT
29、race();finallyDBUtil.closeConn(conn, stat);/返回return outList;報表代碼:package com.sxt.bank.view;import java.awt.EventQueue;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.WindowAdapter;import
30、 java.awt.event.WindowEvent;import java.util.ArrayList;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.borde
31、r.EmptyBorder;import javax.swing.table.DefaultTableModel;import com.sxt.bank.dao.QueryDao;import com.sxt.bank.entity.InCome;import com.sxt.bank.entity.Out;import com.sxt.bank.util.DatePanel;public class reportFrame extends JFrame implements ActionListener private JPanel contentPane;private JTextFiel
32、d textf;private JTextField textl;private JTable table;/* * Launch the application. */public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() try reportFrame frame = new reportFrame();frame.setVisible(true); catch (Exception e) e.printStackTrace(););/* * Create th
33、e frame. */public reportFrame() setTitle("u62A5u8868");setResizable(false);this.addWindowListener(new WindowAdapter() Overridepublic void windowClosing(WindowEvent arg0) /只銷毀本窗口,不退出慮擬機reportFrame.this.dispose(););setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);this.setIconImage(new Im
34、ageIcon("image/person.JPG").getImage();setBounds(100, 100, 441, 342);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5);setContentPane(contentPane);/設置背景=ImageIcon img = new ImageIcon("image/chao.jpg");final JLabel lblImg = new JLabel(img);this.getLayere
35、dPane().add(lblImg,new Integer(Integer.MIN_VALUE);lblImg.setBounds(0, lblImg.getHeight(), 457, 542);(JPanel)getContentPane().setOpaque(false); /=contentPane.setLayout(null);JLabel repo = new JLabel("u62A5u8868u8BB0u5F55");repo.setBounds(10, 25, 61, 15);contentPane.add(repo);JLabel lblNewLa
36、bel = new JLabel("u65E5u671FuFF1A");lblNewLabel.setBounds(81, 25, 39, 15);contentPane.add(lblNewLabel);textf = new JTextField();textf.setBounds(118, 22, 73, 21);contentPane.add(textf);textf.setColumns(10);JLabel label = new JLabel("u5230");label.setBounds(224, 25, 21, 15);content
37、Pane.add(label);textl = new JTextField();textl.setColumns(10);textl.setBounds(241, 22, 72, 21);contentPane.add(textl);JButton btnDate1 = new JButton(".");btnDate1.addMouseListener(new MouseAdapter() Overridepublic void mouseClicked(MouseEvent event) /彈出日期框 父窗口 模式 輸入框 x y new DatePanel(repo
38、rtFrame.this,true,textf,event.getXOnScreen(),event.getYOnScreen(););btnDate1.setBounds(195, 22, 21, 23);contentPane.add(btnDate1);JButton btnDate2 = new JButton(".");btnDate2.addMouseListener(new MouseAdapter() Overridepublic void mouseClicked(MouseEvent event) /彈出日期框 父窗口 模式 輸入框 x y new Da
39、tePanel(reportFrame.this,true,textl,event.getXOnScreen(),event.getYOnScreen(););btnDate2.setBounds(316, 21, 21, 23);contentPane.add(btnDate2);JScrollPane scrollPane = new JScrollPane();scrollPane.setBounds(10, 56, 413, 214);contentPane.add(scrollPane);/建表頭String header="收入/支出項","日期&qu
40、ot;,"金額","備注"/建數(shù)據模型dtm=new DefaultTableModel(null,header);table = new JTable(dtm);scrollPane.setViewportView(table);JButton inquiry = new JButton("u67E5u8BE2");inquiry.addActionListener(this);inquiry.setActionCommand("query");inquiry.setBounds(347, 21, 76, 23)
41、;contentPane.add(inquiry);JLabel outlabel = new JLabel("u652Fu51FAu5408u8BA1uFF1A");outlabel.setBounds(10, 285, 72, 15);contentPane.add(outlabel);JLabel label_1 = new JLabel("u6536u5165u5408u8BA1uFF1A");label_1.setBounds(163, 285, 74, 15);contentPane.add(label_1);JLabel label_2 = new JLabel("u4F59u989DuFF1A");label_2.setBounds(313, 285, 44, 15);contentPane.add(label_2);textoutsum = new JTextField();textoutsum.setBounds(87, 282, 66, 21);c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度電商虛擬現(xiàn)實技術應用委托經營協(xié)議3篇
- 二零二五年度奶粉品牌線上直播帶貨代理合同
- 二零二五版智能停車場建設工程承包簡易合同3篇
- 二零二五年度公益活動布展策劃與實施協(xié)議3篇
- 2025年度煤炭行業(yè)信用風險管理合作協(xié)議書
- 2025年綠色建筑項目泥水工安全責任合同
- 二零二五年度馬鈴薯種植保險及風險防控合作協(xié)議4篇
- 二零二五年船舶空調系統(tǒng)改造與環(huán)保驗收合同3篇
- 個人住宅室內裝修設計服務合同(2024版)3篇
- 2025年度化肥電商平臺合作與服務協(xié)議2篇
- 物流無人機垂直起降場選址與建設規(guī)范
- 肺炎臨床路徑
- 外科手術鋪巾順序
- 創(chuàng)新者的窘境讀書課件
- 綜合素質提升培訓全面提升個人綜合素質
- 如何克服高中生的社交恐懼癥
- 聚焦任務的學習設計作業(yè)改革新視角
- 移動商務內容運營(吳洪貴)任務三 APP的品牌建立與價值提供
- 電子競技范文10篇
- 食堂服務質量控制方案與保障措施
- VI設計輔助圖形設計(2022版)
評論
0/150
提交評論