数据库课程设计报告JAVA个人记账管理系统.docx
- 文档编号:27326256
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:31
- 大小:322.19KB
数据库课程设计报告JAVA个人记账管理系统.docx
《数据库课程设计报告JAVA个人记账管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告JAVA个人记账管理系统.docx(31页珍藏版)》请在冰豆网上搜索。
数据库课程设计报告JAVA个人记账管理系统
1前言
设计一个个人记账管理系统,用JAVA来编写。
综合运用JAVA的基础和算法设计的基本原则,用PLSQLDeveloper,orcale等工具实现。
功能包括收入记录、支出记录、查询功能、报表,并将记录保存在数据库中,通过连接数据库可以查询所有记录,可以通过选择日期将符合条件的记录显示在查询框中,可以选择收入或支出查询收入记录或者支出记录。
用户可以通过报表了解到指定时间段收入总和、支出总和、余额。
2需求分析
2.1课程设计目的
通过专业课程设计Ⅱ,即大型数据库系统课程设计,有助于培养学生综合运用数据库相关知识解决实际问题的能力。
本设计要求对实际问题进行需求分析,提炼实际问题中的数据,建立关系模型,并在大型数据库中得以实现。
同时要求对数据库的运营、管理及使用上进行必要的规划和实现。
2.2课程设计任务
针对某管理信息系统的需求,设计一个数据库系统。
具体容如下:
(1)根据需求,建立ER模型。
通过ER图表示。
(2)在此基础上,设计物理表结构,编写创建数据库表的语句。
较高要求为在设计创建数据表语句的同时考虑性能上的要求,采用相关的磁盘存储技术。
(3)从实际查询应用出发,为一些主要的应用模块设计至少3个参数化视图。
(4)针对常用的业务,创建包,同时实现一个函数放入包中。
(5)从数据检验的角度出发,为相关的表建立至少1个触发器。
(6)从数据更新或修改的角度出发,设计至少1个存储过程。
(7)从安全的角度出发,规划系统的角色、用户、权限,并通过SQL实现。
(8)预计每个表的大致容量和增长速度。
指定备份的案,写出相关的备份命令。
(9)以上所有命令及脚本均需测试,在设计报告中说明其功能并记录其输出。
2.3设计环境
(1)WINDOWS2000/2003/XP系统
(2)Oracle数据库管理系统
2.4开发语言
PL/SQL语言
3分析和设计
3.1系统E-R模型
图3-1个人记账管理系统E-R图
3.2表空间及表的设计
--Createtable
createtableBANK_INCOME(
IN_IDNUMBERnotnull,
IN_NAMEVARCHAR2(50),
IN_DATEVARCHAR2(50),
IN_MONEYNUMBER(10,2),
IN_COMMENTVARCHAR2(500)
)
tablespaceUSERS
pctfree10
initrans1
maxtrans255
storage
(
initial64K
minextents1
maxextentsunlimited
);
--Create/Recreateprimary,uniqueandforeignkeyconstraints
altertableBANK_INCOME
addconstraintPK_IN_IDprimarykey(IN_ID)
usingindex
tablespaceUSERS
pctfree10
initrans2
maxtrans255
storage
(
initial64K
minextents1
maxextentsunlimited
);
--Createtable
createtableBANK_OUT
(
OUT_IDNUMBERnotnull,
OUT_NAMEVARCHAR2(50),
OUT_DATEVARCHAR2(50),
OUT_MONEYNUMBER(10,2),
OUT_COMMENTVARCHAR2(500)
)
tablespaceUSERS
pctfree10
initrans1
maxtrans255
storage
(
initial64K
minextents1
maxextentsunlimited
);
--Create/Recreateprimary,uniqueandforeignkeyconstraints
altertableBANK_OUT
addprimarykey(OUT_ID)
usingindex
tablespaceUSERS
pctfree10
initrans2
maxtrans255
storage
(
initial64K
minextents1
maxextentsunlimited
);
列名
类型
说明
in_id
number
主键,收入id
in_name
Varchar2(50)
收入项
in_date
Varchar2(50)
收入日期
in_money
Number(10,2)
收入金额
in_comment
Varchar2(500)
收入备注
图3-2收入表
列名
类型
说明
out_id
number
主键,支出id
out_name
Varchar2(50)
支出项
out_date
Varchar2(50)
支出日期
out_money
Number(10,2)
支出金额
out_comment
Varchar2(500)
支出备注
图3-3支出表
3.3视图设计
图3-4收入视图
图3-5支出视图
3.4存储过程、函数、包的设计
图3-6存储过程
图3-7包的设计
3.5触发器设计
(1)收入触发器
createorreplacetriggertri_auto_income_id
beforeinsertonbank_income
foreachrow
declare
--localvariableshere
begin
selectseq_income_id.nextvalinto:
new.in_idfromdual;
endtri_auto_income_id;
(2)支出触发器
createorreplacetriggerTRI_AUTO_OUT_ID
beforeinsertonbank_out
foreachrow
declare
--localvariableshere
begin
selectseq_out_id.nextvalinto:
new.out_idfromdual;
endTRI_AUTO_OUT_ID;
3.6角色、用户、权限设计
--Createtherole
createroleROLE1;
--给角色授权
grantselect,update,insertonbank_incometorole1
grantselect,update,insertonbank_outtorole1
--Createtheuser
createuserhuanghua
identifiedby"123456"
defaulttablespaceSYSTEM
temporarytablespaceTEMP
profileDEFAULT;
grantselect,update,insertonbank_incometohuanghuawithgrantoption
3.7备份案设计
(1)启动SQL*plus,以SYSDBA身份登录数据库
(2)查询当前数据库所有数据文件、控制文件、联机重做文件的位置
SQL>selectfile_namefromdba_data_files;
SQL>SELECTmemberFROMv$logfile;
SQL>SELECTvalueFROMv$parameterWHEREname=’control_files’;
(3)关闭数据库
SQL>SHUTDOWNIMMEDIATE
(4)复制所有数据文件、联机重做文件以及控制文件到备份磁盘可以直接在操作系统中使用复制、粘贴式进行
(5)重新启动数据库
SQL>STARTUP
4课程设计总结
4.1运行结果如下图所示:
图4-1个人记账管理界面
图4-2收入记录界面
图4-3支出记录界面
图4-4查询收入支出界面
图4-5报表界面
4.2、设计总结
这次我们的课程设计题目是个人记账管理系统。
通过此次课程设计,掌握到了数据库系统的开发法。
同时也加深了对刚刚学习的JAVA的印象。
整个代码在写的过程中出现了很多问题。
有的实在解决不了的问题,就去问教我们JAVA的柳小文老师,老师也非常乐意帮助我解决一些困难。
有的时候不懂的问题就去上网搜索答案,或者自己去看书。
学习需要自主,对这一点我颇有感触。
此次课程设计结束之后,我还意犹未尽,因为从中感觉到了写代码的趣味。
于是,我就开始想设法找点小的应用程序去写。
因为这样的学习法是最快也是最有效的式。
比老师上课讲要好的多。
而且大学生也应该培养自己的动手能力。
而动手能力只能来自于自己从头到尾的去写一个不大的应用程序。
了解整个创作的一个大体思路,在写的过程中还要不断地去请教我们的老师。
因为他们对实际应用程序的把握比我们要强的多。
当然,学无止境,不能因为这么一点小的成就就止步不前。
前路很漫长,但我相信只要自己肯用心去学习,Nothingisimpossible!
参考文献
[1]风栋,蕾等.Oracle10g数据库基础教程[M].北京:
电子工业出版社,2012.10.
[2]珊,萨师煊.数据库系统概论[M]北京:
高等教育出版社,2006.5.
[3]JavaProgrammingJava程序设计[M]北京:
清华大学出版社,2010.1.
致
感我们的指导老师柳小文老师,她在我们的课程设计过程中提出了指导性的案和架构,并指引我们阅读相关的资料和书籍,使我们在不熟悉的领域中仍能迅速掌握新的法和技术。
同时也感校领导给我们这次难得的锻炼机会,让我们能更好的理解和实践Oracle数据库,让我们对数据库有了更深刻的认知,对已学知识有了更进一步的巩固。
总之,通过这次课程设计,我获益良多。
附录
主要代码:
package.sxt.bank.dao;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.Statement;
/**
*数据库工具类
*@authorAdministrator
*
*/
publicclassDBUtil{
/**
*专用于取得数据库的连接
*@return
*/
publicstaticConnectiongetConn(){
Connectionconn=null;
try{
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
Stringurl="jdbc:
oracle:
thin:
@172.19.95.36:
1521:
orcl";
//取得连接
conn=DriverManager.getConnection(url,"scott","tiger");
}catch(Exceptione){
e.printStackTrace();
}
returnconn;
}
/**
*专用于关闭连接
*@paramconn
*@paramstat
*/
publicstaticvoidcloseConn(Connectionconn,Statementstat){
try{
stat.close();
conn.close();
}catch(Exceptione2){
e2.printStackTrace();
}
}
}
收入数据处理代码:
package.sxt.bank.dao;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
import.sxt.bank.entity.InCome;
/**
*数据处理
*@authorAdministrator
*
*/
publicclassIncomeDao{
/**
*用于保存收入项到数据库
*@paramincome
*/
publicvoidsaveIncome(InComeincome){
Connectionconn=null;
PreparedStatementstat=null;
try{
conn=DBUtil.getConn();
//得到预编译执行器
stat=conn.prepareStatement("insertintobank_income(in_name,in_date,in_money,in_comment)values(?
?
?
?
)");
//设置参数
//stat.setInt(1,2);
stat.setString(1,income.getInName());
stat.setString(2,income.getInDate());
stat.setFloat(3,income.getMoney());
stat.setString(4,income.getComment());
//执行
stat.execute();
}catch(Exceptione){
e.printStackTrace();
}finally{
DBUtil.closeConn(conn,stat);
}
}
}
支出数据处理代码:
package.sxt.bank.dao;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
import.sxt.bank.entity.Out;
/**
*支出的数据处理
*@authorAdministrator
*
*/
publicclassOutDao{
/**
*用于保存支出项到数据库
*@paramincome
*/
publicvoidsaveOutcome(Outout){
Connectionconn=null;
PreparedStatementstat=null;
try{
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
Stringurl="jdbc:
oracle:
thin:
@172.19.95.36:
1521:
orcl";
//取得连接
conn=DriverManager.getConnection(url,"scott","tiger");
//得到预编译执行器
stat=conn.prepareStatement("insertintobank_out(out_name,out_date,out_money,out_comment)values(?
?
?
?
)");
//设置参数
stat.setString(1,out.getOutName());
stat.setString(2,out.getOutDate());
stat.setFloat(3,out.getMoney());
stat.setString(4,out.getComment());
//执行
stat.execute();
}catch(Exceptione){
e.printStackTrace();
}finally{
try{
stat.close();
conn.close();
}catch(Exceptione2){
e2.printStackTrace();
}
}
}
}
收入支出查询代码:
package.sxt.bank.dao;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.util.ArrayList;
import.sxt.bank.entity.InCome;
import.sxt.bank.entity.Out;
/**
*收入支出查询
*@authorAdministrator
*
*/
publicclassQueryDao{
/**
*取得数据的记录,并封装成集合
*@return
*/
publicArrayListgetInList(){
Connectionconn=null;
PreparedStatementstat=null;
ResultSetrs=null;
//新建一个集合用来装out
ArrayList
try{
//得到连接
conn=DBUtil.getConn();
//SQL语句执行器
stat=conn.prepareStatement("select*frombank_income");
//执行SQL查询,得到结果集
rs=stat.executeQuery();
while(rs.next()){
//从记录中取值参数类型字段名
StringinName=rs.getString("in_name");
StringinDate=rs.getString("in_date");
floatmoney=rs.getFloat("in_money");
Stringcomment=rs.getString("in_comment");
//封装成对象
InComein=newInCome(inName,inDate,money,comment);
//将对象装载到集合中
inList.add(in);
}
}catch(Exceptione){
e.printStackTrace();
}finally{
DBUtil.closeConn(conn,stat);
}
//返回
returninList;
}
/**
*取得数据的记录,并封装成集合
*@return
*/
publicArrayListgetOutList(){
Connectionconn=null;
PreparedStatementstat=null;
ResultSetrs=null;
//新建一个集合用来装out
ArrayList
try{
//得到连接
conn=DBUtil.getConn();
//SQL语句执行器
stat=conn.prepareStatement("select*frombank_out");
//执行SQL查询,得到结果集
rs=stat.executeQuery();
while(rs.next()){
//从记录中取值参数类型字段名
StringoutName=rs.getString("out_name");
StringoutDate=rs.getString("out_date");
floatmoney=rs.getFloat("out_money");
Stringcomment=rs.getString("out_comment");
//封装成对象
Outout=newOut(outName,outDate,money,comment);
//将对象装载到集合中
outList.add(out);
}
}catch(Exceptione){
e.printStackTrace();
}finally{
DBUtil.closeConn(conn,stat);
}
//返回
returnoutList;
}
}
报表代码:
package.sxt.bank.view;
importjava.awt.EventQueue;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.util.ArrayList;
importjavax.swing.ImageIcon;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JScrollPane;
importjavax.swing.JTable;
importjavax.swing.JTextField;
importjavax.s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 报告 JAVA 个人 记账 管理 系统