收藏 分销(赏)

银行储蓄业务管理系统介绍.doc

上传人:w****g 文档编号:9294500 上传时间:2025-03-20 格式:DOC 页数:35 大小:121.54KB
下载 相关 举报
银行储蓄业务管理系统介绍.doc_第1页
第1页 / 共35页
银行储蓄业务管理系统介绍.doc_第2页
第2页 / 共35页
点击查看更多>>
资源描述
银行储蓄业务管理系统介绍 35 2020年4月19日 文档仅供参考 更多企业学院:...../Shop/ <中小企业管理全能版> 183套讲座+89700份资料 ...../Shop/40.shtml <总经理、高层管理> 49套讲座+16388份资料 ...../Shop/38.shtml <中层管理学院> 46套讲座+6020份资料  ...../Shop/39.shtml <国学智慧、易经> 46套讲座 ...../Shop/41.shtml <人力资源学院> 56套讲座+27123份资料 ...../Shop/44.shtml <各阶段员工培训学院> 77套讲座+ 324份资料 ...../Shop/49.shtml <员工管理企业学院> 67套讲座+ 8720份资料 ...../Shop/42.shtml <工厂生产管理学院> 52套讲座+ 13920份资料 ...../Shop/43.shtml <财务管理学院> 53套讲座+ 17945份资料  ...../Shop/45.shtml <销售经理学院> 56套讲座+ 14350份资料 ...../Shop/46.shtml <销售人员培训学院> 72套讲座+ 4879份资料 ...../Shop/47.shtml <数据库原理及应用>课程设计报告 专业: 信息管理与信息系统 班级: 信息0801 学号: 姓名: 黄露 题目名称:银行储蓄业务管理系统 完成日期: .3.11 目录 一、系统定义…………………………………………………..3 二、需求分析…………………………………………………..3 (一)系统综合需求 (二)系统逻辑模型 1.数据流图: 2.数据字典 三、系统设计…………………………………………………...5 (一)概念结构设计 E-R图: (二)逻辑结构设计 四、详细设计……………………………………………………6 (一) 开发平台及工具 (二)数据库分析 五、源程序清单……………………………………………13 六、设计心得…………………………………………………………18 一、系统定义: 银行是一个国家正常运转必不可缺的机构,当今社会,几乎是每个人都会涉及到储蓄业务,为此,为方便用户查询和使用各种业务,可用计算机为工具对查询管理为一体的各种服务。当然,这样的一个银行储蓄业务系统就应运而生了。本系统是一个简单的储蓄系统,能够对储户的信息进行查询修改以及删除。 二、需求分析: (一)系统综合需求 本系统是银行用户的存取款系统。主要功能是管理各个用户存取款的相关数据。 储户填写的存款单或取款单输入系统,如果是存款,则系统记录存款人姓名,住址(或电话号码),身份证号码,存款类型,存款金额,存款日期等信息,并打印存单给储户;如果是取款,则需要输入帐号、取款金额等信息,核对正确后系统打印出清单给储户。 (二)系统逻辑模型 1.数据流图: 图1-1 系统数据流图 2.数据字典 数据名字:注册申请表 数据来源:储户 数据目的:储户信息 数据组成:姓名+密码+住址+身份证号码 数据名字:储户信息表 数据来源:储户 数据目的:身份验证 数据组成:姓名+密码+住址+身份证号码+现有金额 数据名字:利息清单 数据来源:系统 数据目的:储户 数据组成:利息+姓名+取款时间 数据名字:存单 数据来源:存款信息表 数据目的:储户 数据组成:姓名+到期时间+存入类型+存入时间+利率+存入金额 数据名字:取款单 数据来源:储户 数据目的:储户信息表 数据组成:姓名+到期时间+存入类型+存入时间+利率+取款金额+身份证号 数据名字:存款单 数据来源:储户 数据目的: 存款信息表 数据组成:姓名+到期时间+存入类型+存入时间+利率+存入金额+身份证号 表1.1 系统数据字典 三、系统设计: (一)概念结构设计 E-R图: (二)逻辑结构设计 四、详细设计 (一) 开发平台及工具 l 开发工具 Microsoft Visual C++ 6.0 l DBMS: Microsoft SQL Server l 建模工具: Microsoft Visio,word编辑器 说明:为了方便的实现系统以及个人熟悉程度的因素,选择了VC++ 6.0的开发平台。 在Windows平台上我们所学过的就只有MS SQL Server了,因此采用SQL Server 来进行开发。 (二)银行储蓄业务数据库分析 1)本系统由三张表组成,具体如下: 表名 属性(字段)名 储户表 账号、身份证号、姓名、性别、身高、地址、存款余额 存款单表 存款单号、金额、存款方式、账号、存款日期 取款单表 取款单号、金额、取款方式、账号、取款日期 系统表基本信息 2)表间关系如下: 一个存款单或取款单属于一个用户,一个用户能够拥有多次存款单或取款单。用户经过存款操作与存款单建立联系,经过取款操作与取款单建立联系。 3)数据准备 前期准备工作: 以system账户登录,创立新账户 create user dy identified by lyjn; grant dba to dy; connect dy/dy@orcl; 各个表的具体信息和创立表的代码如下: 储户表(luser) 字段(属性)含义 字段(属性)名 字段(属性)类型 账号 acnum VARCHAR(5) 身份证号 id NUMBER 姓名 name VARCHAR2(20) 性别 sex VARCHAR2(2) 身高 height NUMBER(3,2) 地址 address VARCHAR2(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 INT NOT NULL ); ALTER TABLE luser 添加主键约束 ADD CONSTRAINT XPKluser PRIMARY KEY (acnum); 存款单表(depositslip) 字段(属性)含义 字段(属性)名 字段(属性)类型 存款单号 dps_num NUMBER 账号 acnum VARCHAR2(5) 存款时间 dps_time TIMESTAMP 金额(亿) money INT 存款方式 dps_way VARCHAR2(10) 创立存款单表的代码如下: CREATE TABLE depositslip ( dps_num NUMBER NOT NULL , money INT CHECK(money>=0) , 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)); 取款单表(drawslip) 字段(属性)含义 字段(属性)名 字段(属性)类型 取款单号 dw_num NUMBER 账号 acnum VARCHAR2(5) 取款时间 dw_time TIMESTAMP 金额(亿) Money INT 取款方式 dw_way VARCHAR2(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 drawslip 添加主键约束 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, '刘忠田', '男',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, ADDRESS, 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('08-08- ','dd-mm-yyyy'), '整存整取'); insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98002,'00001', 300,to_date('10-08- ','dd-mm-yyyy'), '整存整取'); insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98003,'00002', 100,to_date('12-08- ','dd-mm-yyyy'), '整存零取'); insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98004,'00002', 150,to_date('12-09- ','dd-mm-yyyy'), '整存零取'); insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98005,'00003', 200,to_date('15-08- ','dd-mm-yyyy'), '零存整取'); insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98006,'00003', 100,to_date('14-09- ','dd-mm-yyyy'), '零存整取'); insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98007,'00003', 80,to_date('23-09- ','dd-mm-yyyy'), '零存整取'); insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98008,'00004', 80,to_date('23-08- ','dd-mm-yyyy'), '零存零取'); insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98009,'00004', 180,to_date('24-09- ','dd-mm-yyyy'), '零存零取'); insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98010,'00005', 190,to_date('24-08- ','dd-mm-yyyy'), '通知存款'); insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98011,'00005', 210,to_date('30-09- ','dd-mm-yyyy'), '通知存款'); 3、插入取款单表(drawslip)数据 insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY) values (5 ,'00001', 75,to_date('08-08- ','dd-mm-yyyy'), '柜台'); insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY) values (5 ,'00002', 27,to_date('08-09- ','dd-mm-yyyy'), '取款机'); insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY) values (5 ,'00002',100,to_date('12-10- ','dd-mm-yyyy'), '柜台'); insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY) values (5 ,'00003',47,to_date('15-08- ','dd-mm-yyyy'), '取款机'); insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY) values (5 ,'00004',26,to_date('12-09- ','dd-mm-yyyy'), '取款机'); insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY) values (5 ,'00005',100,to_date('23-09- ','dd-mm-yyyy'), '柜台'); insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY) values (5 ,'00005',150,to_date('10-10- ','dd-mm-yyyy'), '柜台'); insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY) values (5 ,'00005',39,to_date('31-10- ','dd-mm-yyyy'), '取款机'); 5)索引 建立索引遵循的规律: 1.建立在where子句经常引用的列上, 2.经常需要排序的列上, 3.连接属性列上等 在存款单表的存款单号字段和账号字段建立组合索引 CREATE UNIQUE INDEX XPKdepositslip 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 UNIQUE INDEX XPKluser ON luser (acnum ASC); 6)触发器 1、插入存款,对应储户表的相应储户的余额(balance)增加插入记录包含的金额数(money) CREATE OR REPLACE TRIGGER OperatingDps AFTER INSERT ON depositslip FOR EACH ROW DECLARE n_ac VARCHAR2(5); n_mo INT; BEGIN n_ac:=:new.acnum; n_mo:=:new.money; update luser set balance=balance+n_mo where luser.acnum=n_ac; END OperatingDps; 2、删除存款,对应储户表的相应储户的余额(balance)减去所删除记录的金额数(money) CREATE OR REPLACE TRIGGER OperatingDps2 AFTER DELETE ON depositslip FOR EACH ROW DECLARE o_ac VARCHAR2(5); o_mo INT; BEGIN o_ac:=:old.acnum; o_mo:=:old.money; update luser set balance=balance-o_mo where luser.acnum=o_ac; END OperatingDps2; 3、插入取款,对应储户表的相应储户的余额(balance)减少插入记录包含的金额数(money) CREATE OR REPLACE TRIGGER OperatingDw AFTER INSERT ON drawslip FOR EACH ROW DECLARE n_ac VARCHAR2(5); n_mo INT; BEGIN n_ac:=:new.acnum; n_mo:=:new.money; update luser set balance=balance-n_mo where luser.acnum=n_ac; END OperatingDw; 4、删除取款,对应储户表的相应储户的余额(balance)加上所删除记录的金额数(money) CREATE OR REPLACE TRIGGER OperatingDw2 AFTER DELETE ON drawslip FOR EACH ROW DECLARE o_ac VARCHAR2(5); o_mo INT; BEGIN o_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 REPLACE TRIGGER OperatingDw3 AFTER insert ON drawslip FOR EACH ROW DECLARE n_ac VARCHAR2(5); n_mo INT; n_ba INT; BEGIN n_ac:=:new.acnum; n_mo:=:new.money; select balance into n_ba from luser where acnum=n_ac; if n_mo>n_ba then RAISE_APPLICATION_ERROR(- 0, '存款余额不足!请重新插入存款!'); end if; END OperatingDw3; 五、源程序清单 #include<iostream> #include<fstream> #include<string> using 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 getNum() //取得帐户号 { return Num; } double getCurrentAcount() { return CurrentAcount; } void output() //输出相关信息 { cout<<"用户名:"<<name<<endl; cout<<"账 号:"<<Num<<endl; cout<<"余 额:"<<CurrentAcount<<endl; } void addUser(char *name,long Num) { strcpy(this->name,name); this->Num=Num; } void Deposit(User *u,double Acount) //存款 { u->Resert1(u,Acount); } void out(User *u,double acount) //取款 { if(acount>u->getCurrentAcount()) { cout<<"余额不足.\n"; } else { cout<<"请及时取走你的钞票.\n"; u->Resert2(u,acount); } } void Locate(User *u) //查询余额 { u->output(); } private: char name[20]; 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[top]=a; } file.close(); //关闭文件 } void Work(); void addUser(char *name,int Num) { User *p=equal(Num); if(p==NULL) { top++; b[top].addUser(name,Num); cout<<"成功载入\n\n\n"; } else cout<<"该用户已存在.\n"; } User *equal(long Num) { int i; for(i=0;i<top;i++) if(b[i].getNum()==Num) { return &b[i]; } return NULL; } ~DoBank() //析构函数 { fstream file("f:\\User.txt",ios::out); //以写的方式打开文件 for (int i=0;i<=top;i++) file.write((char *)&b[i],sizeof(b[i])); file.close(); //关闭文件 } private: User b[Max]; int top; }; void Wait() { int i=0; while(i<) { i++; } } void Menu() //显示功能菜单 { cout<<"\n\n\n\n"; cout<<" 1、用户维护\n"; cout<<" 2、存款\n"; cout<<" 3、取款\n"; cout<<" 4、查询\n"; cout<<" 0、退出\n"; } void DoBank::Work() { Menu(); User *us; User *us1; char name[20]; long Num; long Num1; long TAcount; char number; cin>>number; while(number!='0') { if((int)number<47||(int)number>53) {cout<<"对不起,你的输入有误。\n";} else{ switch(number) //输入功能代号 { case '1': cout<<"请输入姓名:"; cin>>name; cout<<"请输入账号:"; cin>>Num; addUser(name,Num); break; case '2': cout<<"请输入账号"; cin>>Num; us=equal(Num); if(us==NULL) { cout<<"不存在该用户.\n"; } else { cout<<"请输入存款金额:"; cin>>TAcount; us->Deposit(us,TAcount); } cout<<"成功存入.\n\n\n"; break; case '3': cout<<"请输入账号:"; cin>>Num; us=equal(Num); if(us==NULL) { cout<<"不存在该用户.\n"; } else { cout<<"请输入取款金额:"; cin>>TAcount; us->out(us,TAcount); } cout<<"\n\n\n"; break; case '4': cout<<"请输入查询账户:"; cin>>Num; us=equal(Num); if(us==NULL) { cout<<"不存在该账户.\n"; } else { us->Locate(us); } cout<<"\n\n\n"; break; }} system("pause"); system("cls"); Menu(); cout<<"请输入操作:"; cin>>number; } } int main() { cout<<" ******************************************************\n"; cout<<" 欢迎进入银行管理系统 \n"; cout<<" ******************************************************\n" ; DoBank b; b.Work(); return 0; } 六、设计心得 首先要自我检讨一下,说实话,这个系统没有做好,还有很多地方都存在着不足甚至错误,毕竟基础知识学的不是很扎实,再者,时间也比较仓促。的确,以我现在的水平用来做系统还做不完善,因此,这次自己的尝试虽然不算太成功,但毕竟自己用心了,只希望下次能够有机会做得更好! 这次的课程设计,我选择做银行储蓄系统,主要是觉得这个比较简单看起来。不过,在做课程设计的时候,也学了比较多的知识,恶补了很多以前的功课。最开始时,面对这样一些题目,平时也没怎么对课本学的精的我当时就懵了,因此只有临时抱佛脚,在网上查阅了大量的资料。说实话,以前上数据库课,一开始完全像听天书一样,虽然考前进行了紧锣密鼓的备考,但仅仅也只是冰山一角。不过后来慢慢的逐渐了解多了,做课程设计的过程就是对书本知识巩固、贯通和实践运用的过程,从中学到的东西也是数不胜数。 课程设计是告一段落了,不过这一周下来,我发现,只要坚持,其实一样也能够完成的,虽然不是很完美。由于班干部的疏忽,这次课程设计很多时候基本都没人通知什么时候去或者不去的。前一天晚上我们都还不知道在哪儿进行,几点集中等等都一概不知。我们班的信息太滞后了,要不是自己去问的话根本就没人通知。周三下午我们宿舍急急忙忙赶过去,结果被告知今天机房不开,休息一天,打扫卫生。总的来说,我们还是很积极的去做这些事的。有什么不懂的都去问别人,一定要会做才好。像画图的时候,用
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服