信息0801081204112黄露数据库课程设计_第1页
信息0801081204112黄露数据库课程设计_第2页
信息0801081204112黄露数据库课程设计_第3页
信息0801081204112黄露数据库课程设计_第4页
信息0801081204112黄露数据库课程设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库原理及应用课程设计报告 专业: 信息管理与信息系统 班级: 信息0801 学号: 081204112 姓名: 黄露 题目名称:银行储蓄业务管理系统 完成日期: 2011.3.11 目录一、系统定义.3二、需求分析.3(一)系统综合需求(二)系统逻辑模型1数据流图:2数据字典三、系统设计.5(一)概念结构设计E-R图:(二)逻辑结构设计四、详细设计6(一)开发平台及工具(二)数据库分析五、源程序清单13六、设计心得18一、系统定义:银行是一个国家正常运转必不可缺的机构,当今社会,几乎是每个人都会涉及到储蓄业务,为此,为方便用户查询和使用各种业务,可用计算机为工具对查询管理为一体的各种服务。

2、当然,这样的一个银行储蓄业务系统就应运而生了。本系统是一个简单的储蓄系统,可以对储户的信息进行查询修改以及删除。二、需求分析:(一)系统综合需求 本系统是银行用户的存取款系统。主要功能是管理各个用户存取款的相关数据。 储户填写的存款单或取款单输入系统,如果是存款,则系统记录存款人姓名,住址(或电话号码),身份证号码,存款类型,存款金额,存款日期等信息,并打印存单给储户;如果是取款,则需要输入帐号、取款金额等信息,核对正确后系统打印出清单给储户。(二)系统逻辑模型1数据流图:图1-1 系统数据流图2数据字典数据名字:注册申请表数据来源:储户数据目的:储户信息数据组成:姓名+密码+住址+身份证号码

3、数据名字:储户信息表数据来源:储户数据目的:身份验证数据组成:姓名+密码+住址+身份证号码+现有金额数据名字:利息清单数据来源:系统数据目的:储户数据组成:利息+姓名+取款时间数据名字:存单数据来源:存款信息表数据目的:储户数据组成:姓名+到期时间+存入类型+存入时间+利率+存入金额 数据名字:取款单数据来源:储户 数据目的:储户信息表数据组成:姓名+到期时间+存入类型+存入时间+利率+取款金额+身份证号数据名字:存款单数据来源:储户数据目的: 存款信息表数据组成:姓名+到期时间+存入类型+存入时间+利率+存入金额+身份证号表1.1 系统数据字典三、系统设计:(一)概念结构设计E-R图:(二)

4、逻辑结构设计四、详细设计(一)开发平台及工具l 开发工具Microsoft Visual C+ 6.0l DBMS:Microsoft SQL Server 2000l 建模工具:Microsoft Visio,word编辑器说明:为了方便的实现系统以及个人熟悉程度的因素,选择了VC+ 6.0的开发平台。在Windows平台上我们所学过的就只有MS SQL Server了,所以采用SQL Server2000来进行开发。(二)银行储蓄业务数据库分析1)本系统由三张表组成,具体如下:表名属性(字段)名储户表账号、身份证号、姓名、性别、身高、地址、存款余额存款单表存款单号、金额、存款方式、账号、存

5、款日期取款单表取款单号、金额、取款方式、账号、取款日期系统表基本信息2)表间关系如下:一个存款单或取款单属于一个用户,一个用户可以拥有多次存款单或取款单。用户通过存款操作与存款单建立联系,通过取款操作与取款单建立联系。3)数据准备前期准备工作:以system账户登录,创建新账户create user dy identified by lyjn;grant dba to dy;connect dy/dyorcl;各个表的具体信息和创建表的代码如下:储户表(luser)字段(属性)含义字段(属性)名字段(属性)类型账号acnumVARCHAR(5)身份证号idNUMBER姓名nameVARCHAR

6、2(20)性别sexVARCHAR2(2)身高heightNUMBER(3,2)地址addressVARCHAR2(20)存款余额(亿)Balance(billion)INT创建储户表的代码如下:CREATE TABLE luser(acnum VARCHAR2(5) NOT NULL ,id NUMBER NOT NULL ,name VARCHAR2(20) NOT NULL ,sex VARCHAR2(2) CHECK(sex IN (男,女) ) , height NUMBER(3,2) NOT NULL,address VARCHAR2(20) NOT NULL ,balance I

7、NT NOT NULL );ALTER TABLE luser添加主键约束ADD CONSTRAINT XPKluser PRIMARY KEY (acnum);存款单表(depositslip)字段(属性)含义字段(属性)名字段(属性)类型存款单号dps_numNUMBER账号acnumVARCHAR2(5)存款时间dps_timeTIMESTAMP金额(亿)moneyINT存款方式dps_wayVARCHAR2(10)创建存款单表的代码如下:CREATE TABLE depositslip(dps_num NUMBER NOT NULL ,money INT CHECK(money=0)

8、,dps_way VARCHAR2(10) NOT NULL ,acnum VARCHAR2(5) NOT NULL ,dps_time TIMESTAMP NULL );ALTER TABLE depositslip 添加主键约束ADD CONSTRAINT XPKdepositslip PRIMARY KEY (dps_num,acnum);ALTER TABLE depositslip在depositslip表中的acnum字段中添加外键约束ADD (CONSTRAINT R_5 FOREIGN KEY (acnum) REFERENCES luser(acnum);取款单表(draws

9、lip)字段(属性)含义字段(属性)名字段(属性)类型取款单号dw_numNUMBER账号acnumVARCHAR2(5)取款时间dw_timeTIMESTAMP金额(亿)MoneyINT取款方式dw_wayVARCHAR2(10)创建取款单表的代码如下:CREATE TABLE drawslip(dw_num NUMBER NOT NULL ,money INT CHECK(money=0),dw_way VARCHAR2(10) NOT NULL ,acnum VARCHAR2(5) NOT NULL ,dw_time TIMESTAMP NULL );ALTER TABLE drawsl

10、ip 添加主键约束ADD CONSTRAINT XPKdrawslip PRIMARY KEY (dw_num,acnum);ALTER TABLE drawslip 在drawslip表中的acnum字段中添加外键约束ADD (CONSTRAINT R_6 FOREIGN KEY (acnum) REFERENCES luser(acnum);4)插入(insert)数据1、插入储户表(luser)数据insert into luser (ACNUM, ID, NAME, SEX,HEIGHT, ADDRESS, BALANCE)values (00001, 3422101, 刘忠田, 男,

11、1.72 ,北京市朝阳区, 345);insert into luser (ACNUM, ID, NAME, SEX,HEIGHT, ADDRESS, BALANCE)values (00002, 3422102, 周正义, 男,1.78, 天津市宝坻区, 123);insert into luser (ACNUM, ID, NAME, SEX,HEIGHT, ADDRESS, BALANCE)values (00003, 3422103, 陈光标, 男,1.80, 南京市新街口, 333);insert into luser (ACNUM, ID, NAME, SEX,HEIGHT, ADD

12、RESS, BALANCE)values (00004, 3422104, 张茵, 女,1.65, 上海市黄浦区, 234);insert into luser (ACNUM, ID, NAME, SEX,HEIGHT, ADDRESS, BALANCE)values (00005, 3422105, 陈丽华, 女,1.70, 香港市旺角区, 111);2、插入存款单表(depositslip)数据insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY)values (98001,00001, 120,to_date(

13、08-08-2009,dd-mm-yyyy), 整存整取);insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY)values (98002,00001, 300,to_date(10-08-2009,dd-mm-yyyy), 整存整取);insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY)values (98003,00002, 100,to_date(12-08-2009,dd-mm-yyyy), 整存零取);insert into

14、depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY)values (98004,00002, 150,to_date(12-09-2009,dd-mm-yyyy), 整存零取);insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY)values (98005,00003, 200,to_date(15-08-2009,dd-mm-yyyy), 零存整取);insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TI

15、ME, DPS_WAY)values (98006,00003, 100,to_date(14-09-2009,dd-mm-yyyy), 零存整取);insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY)values (98007,00003, 80,to_date(23-09-2009,dd-mm-yyyy), 零存整取);insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY)values (98008,00004, 80,to_date

16、(23-08-2009,dd-mm-yyyy), 零存零取);insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY)values (98009,00004, 180,to_date(24-09-2009,dd-mm-yyyy), 零存零取);insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY)values (98010,00005, 190,to_date(24-08-2009,dd-mm-yyyy), 通知存款);insert into

17、 depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY)values (98011,00005, 210,to_date(30-09-2009,dd-mm-yyyy), 通知存款);3、插入取款单表(drawslip)数据insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY)values (52001,00001, 75,to_date(08-08-2010,dd-mm-yyyy), 柜台);insert into drawslip (DW_NUM, ACNUM, MONEY

18、, DW_TIME, DW_WAY)values (52002,00002, 27,to_date(08-09-2010,dd-mm-yyyy), 取款机);insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY)values (52003,00002,100,to_date(12-10-2010,dd-mm-yyyy), 柜台);insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY)values (52004,00003,47,to_date(15-08-2010

19、,dd-mm-yyyy), 取款机);insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY)values (52005,00004,26,to_date(12-09-2010,dd-mm-yyyy), 取款机);insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY)values (52006,00005,100,to_date(23-09-2010,dd-mm-yyyy), 柜台);insert into drawslip (DW_NUM, ACNUM, MONE

20、Y, DW_TIME, DW_WAY)values (52007,00005,150,to_date(10-10-2010,dd-mm-yyyy), 柜台);insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY)values (52008,00005,39,to_date(31-10-2010,dd-mm-yyyy), 取款机);5)索引建立索引遵循的规律:1.建立在where子句经常引用的列上,2.经常需要排序的列上,3.连接属性列上等在存款单表的存款单号字段和账号字段建立组合索引CREATE UNIQUE INDEX XPK

21、depositslip ON depositslip(dps_num ASC,acnum ASC);在存款单表的账号字段建立索引CREATE INDEX XIF1depositslip ON depositslip(acnum ASC);在取款单表的取款单号字段和账号字段建立组合索引CREATE UNIQUE INDEX XPKdrawslip ON drawslip(dw_num ASC,acnum ASC);在取款单表的账号字段建立索引CREATE INDEX XIF1drawslip ON drawslip(acnum ASC);在储户表的账户字段上建立索引,方便查询CREATE UNI

22、QUE INDEX XPKluser ON luser(acnum ASC);6)触发器1、插入存款,对应储户表的相应储户的余额(balance)增加插入记录包含的金额数(money)CREATE OR REPLACE TRIGGER OperatingDps AFTER INSERT ON depositslip FOR EACH ROWDECLAREn_ac VARCHAR2(5);n_mo INT;BEGINn_ac:=:new.acnum;n_mo:=:new.money;update luser set balance=balance+n_mo where luser.acnum=n

23、_ac;END OperatingDps;2、删除存款,对应储户表的相应储户的余额(balance)减去所删除记录的金额数(money)CREATE OR REPLACE TRIGGER OperatingDps2 AFTER DELETE ON depositslip FOR EACH ROWDECLAREo_ac VARCHAR2(5);o_mo INT;BEGINo_ac:=:old.acnum;o_mo:=:old.money;update luser set balance=balance-o_mo where luser.acnum=o_ac;END OperatingDps2;3

24、、插入取款,对应储户表的相应储户的余额(balance)减少插入记录包含的金额数(money)CREATE OR REPLACE TRIGGER OperatingDw AFTER INSERT ON drawslip FOR EACH ROWDECLAREn_ac VARCHAR2(5);n_mo INT;BEGINn_ac:=:new.acnum;n_mo:=:new.money;update luser set balance=balance-n_mo where luser.acnum=n_ac;END OperatingDw;4、删除取款,对应储户表的相应储户的余额(balance)

25、加上所删除记录的金额数(money)CREATE OR REPLACE TRIGGER OperatingDw2 AFTER DELETE ON drawslip FOR EACH ROWDECLAREo_ac VARCHAR2(5);o_mo INT;BEGINo_ac:=:old.acnum;o_mo:=:old.money;update luser set balance=balance+o_mo where luser.acnum=o_ac;END OperatingDw2;5、插入的取款金额(money)大于对应用户的余额(balance)时,系统报错CREATE OR REPLAC

26、E TRIGGER OperatingDw3 AFTER insert ON drawslip FOR EACH ROWDECLAREn_ac VARCHAR2(5);n_mo INT;n_ba INT;BEGINn_ac:=:new.acnum;n_mo:=:new.money;select balance into n_ba from luser where acnum=n_ac;if n_mon_ba thenRAISE_APPLICATION_ERROR(-20000, 存款余额不足!请重新插入存款!);end if;END OperatingDw3;五、源程序清单#include#i

27、nclude#includeusing namespace std;const int Max=100;void Wait();class User /用户类的声明public: User() CurrentAcount=0; /初始化当前的账户 void Resert1(User *u,double A) u-CurrentAcount=u-CurrentAcount+A; void Resert2(User *u,double A) u-CurrentAcount=u-CurrentAcount-A; char *getname() /取得用户名 return name; long get

28、Num() /取得帐户号 return Num; double getCurrentAcount() return CurrentAcount; void output() /输出相关信息 cout用户名:nameendl; cout账 号:Numendl; cout余 额:CurrentAcountname,name); this-Num=Num; void Deposit(User *u,double Acount) /存款 u-Resert1(u,Acount); void out(User *u,double acount) /取款 if(acountu-getCurrentAcoun

29、t() cout余额不足.n; else coutResert2(u,acount); void Locate(User *u) /查询余额 u-output(); private: char name20; long Num; double CurrentAcount; ;class DoBank /银行管理类的声明public: DoBank() User a; top=-1; fstream file(f:User.txt,ios:in); /以读的方式打开文件 while(1) file.read(char*)&a,sizeof(a); if(!file) break; top+; b

30、top=a; file.close(); /关闭文件 void Work(); void addUser(char *name,int Num) User *p=equal(Num); if(p=NULL) top+; btop.addUser(name,Num); cout成功载入nnn; else cout该用户已存在.n; User *equal(long Num) int i; for(i=0;itop;i+) if(bi.getNum()=Num) return &bi; return NULL; DoBank() /析构函数 fstream file(f:User.txt,ios:

31、out); /以写的方式打开文件 for (int i=0;i=top;i+) file.write(char *)&bi,sizeof(bi); file.close(); /关闭文件 private: User bMax; int top;void Wait() int i=0; while(i999999999) i+; void Menu() /显示功能菜单 coutnnnn; cout 1、用户维护n; cout 2、存款n; cout 3、取款n;cout 4、查询n; coutnumber; while(number!=0) if(int)number53) cout对不起,你的

32、输入有误。n; else switch(number) /输入功能代号 case 1: coutname; coutNum; addUser(name,Num); break; case 2: coutNum; us=equal(Num); if(us=NULL) cout不存在该用户.n; else coutTAcount; us-Deposit(us,TAcount); cout成功存入.nnn; break; case 3: coutNum; us=equal(Num); if(us=NULL) cout不存在该用户.n; else coutTAcount; us-out(us,TAcount); co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论