目 录
1 前言 1
2 需求分析 1
2.1 课程MATCH_
word
word文档格式规范word作业纸小票打印word模板word简历模板免费word简历
_1714153967825_2目的 1
2.2 课程设计任务 1
2.3 设计环境 2
2.4 开发语言 2
3 分析和设计 2
3.1 界面设计 2
3.2 系统E-R模型 5
3.3 表空间及表的设计 5
3.4 视图设计 6
3.5 存储过程、函数、序列的设计 6
3.6 触发器设计 7
3.7 角色、用户、权限设计 8
4 课程设计总结 9
致 谢 10
附 录 11
1 前言
俗话说“你不理财,财不理你”,只有通过合理的理财,才能够有效的管理你的个人资产,使它得到的合理运用。个人理财软件不仅可以帮你记帐,更多的是可以实时掌握你的收入与支出,掌握资金的变动情况,同时还可以统计出资金的主要流向,从而更合理的分配资金,提高理财的效率。本次课程设计的任务就是综合运用所学的Oracle数据库知识设计一个简单的个人理财软件—个人记账系统。
2 需求分析
2.1 课程设计目的
通过专业课程设计Ⅱ,即大型数据库系统课程设计,有助于培养学生综合运用数据库相关知识解决实际问题的能力。本设计要求对实际问题进行需求分析,提炼实际问题中的数据,建立关系模型,并在大型数据库中得以实现。同时要求对数据库的运营、管理及使用上进行必要的规划和实现。
2.2 课程设计任务
针对财务管理信息系统的需求,设计一个数据库系统。具体内容如下:
(1) 根据需求,建立ER模型。通过ER图表示。
(2) 在此基础上,设计物理表结构,编写创建数据库表的语句。较高要求为在设计创建数据表语句的同时考虑性能上的要求,采用相关的磁盘存储技术。
(3) 从实际查询应用出发,为一些主要的应用模块设计至少3个参数化视图。
(4) 针对常用的业务,创建包,同时实现一个函数放入包中。
(5) 从数据检验的角度出发,为相关的表建立至少1个触发器。
(6) 从数据更新或修改的角度出发,设计至少1个存储过程。
(7) 从安全的角度出发,规划系统的角色、用户、权限,并通过相关的SQL实现。
(8) 预计每个表的大致容量和增长速度。指定备份的
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
,写出相关的备份命令。
(9) 以上所有命令及脚本均需测试,在设计报告中说明其功能并
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
其输出。
2.3 设计环境
(1)WINDOWS 2000/2003/XP系统
(2)Oracle数据库管理系统
(3)Java开发及运行环境
2.4 开发语言
PL/SQL语言
JAVA
3 分析和设计
3.1 界面设计
界面设计工作使用eclipse完成,其中使用了JDatePicker日期控件。
1. 主界面设计
2.收入界面设计
2. 支出界面设计
4.查询界面设计
3.2 系统E-R模型
3.3 表空间及表的设计
1 .创建收入表
CREATE TABLE BANK_INCOME
( "IN_ID" NUMBER NOT NULL ENABLE,
"IN_NAME" VARCHAR2(50 BYTE) NOT NULL ENABLE,
"IN_DATE" VARCHAR2(50 BYTE) NOT NULL ENABLE,
"IN_MONEY" NUMBER(10,0) NOT NULL ENABLE,
"IN_COMMENT" VARCHAR2(500 BYTE) NOT NULL ENABLE,
CONSTRAINT "BANK_INCOME_PK" PRIMARY KEY ("IN_ID");
收入表 BANK_INCOME表结构
2.创建支出表
CREATE TABLE BAN_OUT
(OUT_ID NUMBER NOT NULL,
OUT_NAME VARCHAR2(50) NOT NULL,
OUT_DATE VARCHAR2(50) NOT NULL,
OUT_MONEY NUMBER(10, 2) NOT NULL,
OUT_COMMENT VARCHAR2(500) NOT NULL,
CONSTRAINT BAN_OUT_PK PRIMARY KEY (OUT_ID)
ENABLE
);
支出表bank_out表结构
3.4 视图设计
1.收入视图(Bank_income_view)设计
Create or replace view Bank_income_view
As
Select in_id,in_name,in_date,in_money,in_comment
From bank_income;
2.支出视图(Bank_out_view)设计
Create or replace view Bank_out_view
As
Select out_id,out_name,out_date,out_money,out_comment
From bank_out;
3.5 存储过程、函数、序列的设计
1.存储过程设计
2.函数设计
创建收入ID序列
CREATE SEQUENCE "SCOTT"."SEQ_INCOME_ID"
MINVALUE 1 MAXVALUE 9999999999
INCREMENT BY 1 START WITH 1
CACHE 20 NOORDER NOCYCLE ;
创建支出ID序列
CREATE SEQUENCE "SCOTT"."SEQ_OUT_ID"
MINVALUE 1 MAXVALUE 9999999999
INCREMENT BY 1 START WITH 1
CACHE 20 NOORDER NOCYCLE ;
3.6 触发器设计
1.创建检测收入ID序列的触发器
CREATE
TRIGGER TRI_AUTO_INCOME_ID
BEFORE INSERT ON BANK_INCOME
FOR EACH ROW
BEGIN
SELECT SEQ_INCOME_ID.NEXTVAL INTO :NEW.IN_ID FROM DUAL;
END;
2.创建检测支出ID序列的触发器
CREATE OR REPLACE TRIGGER TRI_AUTO_OUTCOME_ID
BEFORE INSERT ON BANK_OUT
FOR EACH ROW
BEGIN
SELECT SEQ_OUT_ID.NEXTVAL INTO :NEW.OUT_ID FROM DUAL;
END;
3.7 角色、用户、权限设计
数据库ORCL中新建一个scott用户,在cmd中进行解锁,并赋予权限。所用语句如下:
创建scott用户,口令为scott:create user scott identified by scott default tablespace users quota 10M on users account lock;
解锁scott用户:
alter user scott account unlock;
赋予scott用户权限:
grantcreate session,create table,create view,create sequence,create trigger to scott;
4 课程设计总结
通过这次的课程设计实验,我发现自己对数据库课程的兴趣有了很大提高,而且对课本的知识更加的了解并有了一定的掌握,通过实验我懂得了如何创建索引、视图、存储过程以及触发器。几天的数据库课程设计很快就结束了,在这短暂的几天的的时间里,发现自己学会了很多课外的东西,特别是和同学们一起讨论分析,以及复习了我们所学过的相关数据库知识,进一步了解了数据库的实践应用过程,增强了课外的动手实践能力。
数据库设计主要讨论数据库设计的方法和步骤应注意的事项。概念结构设计采用的是实体属性分析法。实体属性分析法是从总体的概念入手,从分析一个单位的事务活动开始,首先识别需求分析中所提供的实体及实体间的联系,建立一个初步的数据模型框架,然后在逐步的求精的方法加上必需的描述属性,形成一个完整的局部模型,称为用户视图,最后在加上这些视图集成一个统一的数据模式,称为用户视图的集成,这种统一的数据模式(即全局信息结构)通常用E-R图表示。逻辑结构设计的任务是将概念结构设计的E-R图,转化为与选用的 DBMS所支持的数据模型相符的逻辑结构,形成逻辑模型。
总而言之,这次的课程设计我学到了很多有用很有实践意义的课外知识并体会了一个真理:实践是检验真理的唯一
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
!在这里感谢老师和同学的帮助!
参考文献
[1 ]张福祥. C语言程序设计[M]. 辽宁大学出版社,2008.1
[2] 张福祥,王萌.C语言程序设计习题解答与实验实训[M].沈阳:辽宁大学出版社,2008.
[3] 牛莉,刘远军等.计算机等级考试辅导教程[M].北京:中国铁道出版社,2008.
致 谢
经过两周的不懈努力,很高兴能完成一个oracle程序。从中体会到以及学习到很多关于oracle的知识,是我更加了解了oracle,并更加熟练了oracle。
在此次设计中我也遇到了很多的问题,都是经过查看老师所给的关于课程设计书和图书馆借的书才明白所用函数的用法,更重要的是上课时老师的细心教学,使我们学会了许多关于oracle的基础知识,为本次的课程设计打好了很好的基础。从而使我能够顺利完成这次课程设计。
在本次做课程设计过程中,要感谢申寿云老师的悉心关照,一直陪伴我们,并为大家讲解不懂的地方,很是辛苦,也很是忙碌。有时我会突然对某个函数有了编写的灵感,然后就会去问一下老师是否可行,有时都到了很晚的时候了,老师还会细心的跟我讲解,这让我很是感动。也要感谢和我一起做这个课题的同学们,因为我们会经常互相讨论不懂的地方,互相学习。正是有了他们的帮助我才能成功的完成此次课程设计。
虽然只有短短的几周时间,但是通过课程设计让我锻炼了动手能力和思考能力,再次向老师致以深深的谢意!
附录
主要代码:
1.连接数据库代码:
package com.sxt.bank.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
/**
* 数据库工具类
* @author Administrator
*
*/
public class DBUtil {
/**
* 专用于取得数据库的连接
* @return
*/
public 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();
}
return conn;
}
/**
* 专用于关闭连接
* @param conn
* @param stat
*/
public static void closeConn(Connection conn,Statement stat){
try {
stat.close();
conn.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
2.收入数据处理代码:
package com.sxt.bank.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import com.sxt.bank.entity.InCome;
/**
* 数据处理
* @author Administrator
*
*/
public class IncomeDao {
/**
* 用于保存收入项到数据库
* @param income
*/
public void saveIncome(InCome income){
Connection conn=null;
PreparedStatement stat=null;
try {
conn=DBUtil.getConn();
//得到预编译执行器
stat=conn.prepareStatement("insert into bank_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 (Exception e) {
e.printStackTrace();
}finally{
DBUtil.closeConn(conn, stat);
}
}
}
3.支出数据处理代码:
package com.sxt.bank.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import com.sxt.bank.entity.Out;
/**
* 支出的数据处理
* @author Administrator
*
*/
public class OutDao {
/**
* 用于保存支出项到数据库
* @param income
*/
public 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");
//得到预编译执行器
stat=conn.prepareStatement("insert into bank_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 (Exception e) {
e.printStackTrace();
}finally{
try {
stat.close();
conn.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
4.查询代码:
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.entity.Out;
/**
* 收入支出查询
* @author Administrator
*
*/
public class QueryDao {
/**
* 取得数据的记录,并封装成集合
* @return
*/
public ArrayList getInList(){
Connection conn=null;
PreparedStatement stat=null;
ResultSet rs=null;
//新建一个集合用来装out
ArrayList
inList=new ArrayList();
try {
//得到连接
conn=DBUtil.getConn();
//SQL语句执行器
stat=conn.prepareStatement("select * from bank_income");
//执行SQL查询,得到结果集
rs=stat.executeQuery();
while(rs.next()){
//从记录中取值 参数类型 字段名
String inName=rs.getString("in_name");
String inDate=rs.getString("in_date");
float money=rs.getFloat("in_money");
String comment=rs.getString("in_comment");
//封装成对象
InCome in=new InCome(inName, inDate, money, comment);
//将对象装载到集合中
inList.add(in);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
DBUtil.closeConn(conn, stat);
}
//返回
return inList;
}
/**
* 取得数据的记录,并封装成集合
* @return
*/
public ArrayList getOutList(){
Connection conn=null;
PreparedStatement stat=null;
ResultSet rs=null;
//新建一个集合用来装out
ArrayList outList=new ArrayList();
try {
//得到连接
conn=DBUtil.getConn();
//SQL语句执行器
stat=conn.prepareStatement("select * from bank_out");
//执行SQL查询,得到结果集
rs=stat.executeQuery();
while(rs.next()){
//从记录中取值 参数类型 字段名
String outName=rs.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.printStackTrace();
}finally{
DBUtil.closeConn(conn, stat);
}
//返回
return outList;
}
}