数据库系统原理课程设计--银行储蓄系统数据库设计

合集下载

银行储蓄系统课程设计

银行储蓄系统课程设计

银行储蓄系统课程设计银行计算机储蓄系统目录一、任务 (3)二、总体设计 (3)1、模块结构图 (3)2、数据库总体设计 (5)3、数据库设计与程序关系 (6)4、数据字典 (6)三、详细设计 (7)1、平台支持设计 (7)2、结构程序设计 (8)2.1 3种基本的控制结构(顺序,选择,循环) (8)2.2 功能模块与程序间的关系: .. 93、人机界面设计 (9)3.1 系统响应时间 (9)3.2 用户帮助设施 (10)3.3 出错信息出理 (10)3.4 系统维护设计 (10)4、模块设计 (12)5、数据库详细设计 (13)6、数据字典详细设计 (15)7、技术审查和管理审查 (16)8、总结 (16)9、参考资料 (17)一、任务为方便用户,银行需开发计算机储蓄系统。

储户填写的存款单或取款单由业务员键入系统,如果是存款,系统记录存款人的姓名,住址,存款类型,存款日期,利率等信息,并印出存款单给储户;如果是取款,系统计算利率,并印出取款清单给储户。

二、总体设计1、模块结构图初始业务员信取款信息储户信息存款信息收/付款登录主批量实时系统记总账1.报表打印数据备份存款3.1取款3.2查询3.32、数据库总体设计业务员信息表业务员编号姓名性别出生年月年龄密码取款信息卡号密码取款人取款金额取款类型利率取款日期余额利息存款信息卡号存款人储户姓名存款金额存款日期存款类型利率存款期限余额身份证接受储户存/取款时填写的单据后,产生相应的存/取款信息写入数据库收/付款信息卡号储户姓名业务员编号收/付款金额收/付款日期在业务员收/付款之后打印相应的存款凭证并修改账户余额。

储户信息卡号储户姓名联系电话身份证地址备注主要在存取款时将客户信息写入数据库并返回。

2.3 数据库设计与程序关系程序在对存/取款进行操作时需对数据库数据结构,也就是数据表进行查询和修改:在存/取款过程中都需要对数据库中的所有表,进行联合查询、修改。

数据库银行储蓄系统课程设计

数据库银行储蓄系统课程设计

数据库银行储蓄系统课程设计一、课程设计目的数据库银行储蓄系统课程设计旨在使学生掌握数据库技术的基础知识和实际应用,提高学生对数据库系统设计、开发和管理的认识和能力。

通过实际操作,培养学生分析问题、解决问题的能力,为学生将来从事相关工作打下基础。

二、课程设计要求1. 数据库系统需求分析:学生需分析系统需求,确定系统所需数据和功能,制定数据库设计计划。

2. 数据库设计:学生需根据需求分析结果,设计出合适的数据库结构,包括表、视图、触发器等,保证数据的完整性、一致性和安全性。

3. 系统功能开发:学生需使用所学知识,编写数据库查询、插入、更新、删除等操作代码,实现银行储蓄系统的各项功能。

4. 系统测试与优化:学生需对所开发的系统进行测试,查找并修复潜在的问题,优化系统性能,提高系统的可靠性和稳定性。

5. 文档编写:学生需编写详细的系统设计文档,包括需求分析文档、数据库设计文档、系统功能文档等,以便于他人理解和维护系统。

三、课程设计内容1. 数据库系统需求分析:学生需分析银行储蓄系统的需求,包括客户信息管理、账户信息管理、存取款管理等功能需求。

2. 数据库设计:学生需根据需求分析结果,设计出合适的数据库结构,包括客户表、账户表、交易表等,并定义表之间的关系。

3. 系统功能开发:学生需使用所学知识,编写数据库操作代码,实现银行储蓄系统的各项功能。

4. 系统测试与优化:学生需对所开发的系统进行测试,查找并修复潜在的问题,优化系统性能。

5. 文档编写:学生需编写详细的系统设计文档,包括需求分析文档、数据库设计文档、系统功能文档等。

四、课程设计步骤1. 需求分析:首先,我们需要对银行储蓄系统的需求进行深入分析。

这包括了解客户信息管理、账户信息管理、存取款管理等功能的具体需求。

通过这一步骤,我们将能够明确系统需要的数据和功能,为后续的数据库设计打下基础。

2. 数据库设计:在需求分析的基础上,我们需要设计出合适的数据库结构。

软件工程课程设计_银行储蓄系统

软件工程课程设计_银行储蓄系统

银行储蓄系统系统设计报告目录一、引言 (3)1.编写目的 (3)2.项目背景 (3)3.开发人员 (3)4.参考文献 (3)二、问题定义 (4)1.目标 (4)2.系统功能 (4)三、可行性研究分析 (4)四、需求分析 (5)1. 功能需求分析 (5)2. 建立功能模型和数据需求 (5)3. 建立逻辑模型 (13)4. 建立行为模型 (14)5. 性能需求分析 (14)6. 系统可用性和可靠性需求分析 (14)五、概要设计报告 (15)1 数据库概要设计 (15)2 系统总体设计 (16)3 测试计划 (17)4 接口设计 (17)5 运行设计 (18)6 出错处理设计 (18)7 安全保密设计 (18)8 维护设计 (18)六、详细设计报告 (19)1 用户界面设计 (19)2 测试用例及预测结果 (25)七、运行环境和编译环境说明书 (27)1 开发编译环境 (27)2 运行使用环境 (27)3 错误处理 (27)八、总结报告 (28)1一、引言1、编写目的为了规范化软件开发,提高开发过程的能见度,便于控制和管理软件开发过程,提高软件质量,降低开发风险,减少需求变更,便于日后的维护工作,文档定制了软件开发的细节问题,明确软件需求,便于与用户协调开发,确认需求。

对软件的开发相关文档及用户使用手册进行了整理。

2、项目背景非电子化的银行储蓄系统工作效率较低,且安全性,准确性得不到保证。

越来越满足不了用户的需求和银行自身发展的需要。

建立一个高效,准确,方便,安全的银行储蓄系统是用户需求和技术进步的共同推动。

3、开发人员组长:xxx组员:xx xxx xxx xxx xxxxx作为项目经理,在人员沟通,质量管理,进度管理,风险管理方面进行了着重管理,并对里程碑进行了评审,确认。

并对变更进行评审,控制,记录。

需求分析以及系统编码由xxx完成。

用户界面设计以及系统测试由xxx完成。

数据库设计工作由xx完成。

银行系统的数据库课程设计

银行系统的数据库课程设计

银行系统的数据库课程设计目录一、目的与意义 0二、设计内容与要求 0三、设计原理 (1)1、数据库基本操作: (1)Ⅰ、定义基本表 (1)Ⅱ、修改基本表 (1)III、删除基本表 (1)IV、数据查询 (1)V、插入元组 (2)VI、修改数据 (2)VII、删除数据 (2)2、数据库完整性 (2)I、实体完整性定义 (2)II、参照完整性定义 (2)3、触发器 (3)I、定义触发器 (3)II、激活触发器 (3)III、删除触发器 (3)4、存储过程 (3)I、PL/SQL的块结构 (3)II、变量常量的定义 (4)III、控制结构 (4)IV、存储过程的用户接口 (5)四、总体设计方案 (5)五、详细设计 (5)1、需求分析 (5)2、流程图 (6)3、E-R图 (6)4、设计表 (6)5、关系图 (7)6、编码 (8)六、测试与调试 (11)七、收获与体会 (15)八、主要参考资料 (15)一、目的与意义本课程设计是在学完《数据库系统与应用》课程之后,让学生综合应用数据库知识,设计数据库,进行调试与测试,以加深对数据库基本知识及SQL语言的理解,提高综合应用知识的能力、分析解决问题的能力,加强数据库知识的实践技能,初步培养开发实用数据库系统的能力。

二、设计内容与要求设计一个银行账户管理系统,至少能够实现存款、取款、查询、转账等基本功能,要求在在数据库实现过程中至少建立三张表、不得少于四个查询、三个触发器、使用至少一个存储过程。

三、设计原理SQL是一种介于关系代数与关系演算之间的结构化查询语言,其功能并不仅仅是查询。

SQL是一个通用的、功能极强的关系数据库语言。

它之所以能够为用户和业界所接受,并成为国际标准,是因为它是一个综合的、功能极强同时又简捷易学的语言。

SQL语言集数据查询(Data Query)、数据操纵(Data Manipulation)、数据定义(Data Definition)和数据控制(Data Control)功能于一体。

数据库设计实验报告-银行储蓄系统

数据库设计实验报告-银行储蓄系统

银行储蓄系统Xx1 用户需求分析,建立E-R图,模型生成,数据库实施和修改;Xx2 用户需求分析,建立E-R图,数据库运行和维护;设计过程相互探讨,相互学习,达到共同进步之目的。

一、需求描述银行储蓄系统,实现储户开户登记,办理定期存款帐,办理定期取款手续,办理活期存款帐,办理活期取款手续,同时实现各银行及储蓄所间的业务代理和转换。

1、信息处理需求总行:包括国家编号(唯一),总行长(唯一),总行长编号(唯一),地址,联系电话,包括多个分行分行:包括分行编号(唯一),分行长(唯一),分行长编号(唯一),地址,联系电话,各分行之间为并列关系,分行雇佣业务员,审核账目清单,每个分行有一个营业厅受理各项业务营业厅:包括营业厅编号(唯一),地址,联系电话,营业窗口号,一个营业厅负责受理一个分行的业务,一个营业厅由多个储蓄所组成并有多个业务员受理各项业务储蓄所:包括储蓄所编号(唯一),储蓄所名称,储蓄所长,地址,联系电话,储蓄柜台号,储蓄金额,并有多个职员办理各项业务业务员:包括姓名(唯一),性别,编号(唯一),年龄,职务,办理储蓄类别(活期,定期),每个业务员在一个营业窗口工作职员:包括姓名(唯一),性别,编号(唯一),年龄,职务,办理(包括储蓄类别-活期/定期;登记,核对),每个职员在一个储蓄柜台工作,计算存、取额及利息储户:包括姓名(唯一),身份证号(唯一),性别,储蓄类别,年龄,开户金额,输入(密码,密码确认,储蓄金额,取款额),储户可选择多个储蓄所存、取款,并可拥有多个储蓄账号账户:包括储蓄账号编码(唯一),储蓄账号(唯一),储蓄类别,开户时间,开户金额,总金额,密码2、功能需求交互:各分行及储蓄所之间进行业务交互,包括转账,代办提交:各级银行进行由下至上的清单、业务信息的交接审核:上级银行对所属银行的业务信息和账户清单进行审查、核准计算:主要是工作人员对总账出入和利息的合计办理:职员对储户信息和账户资料的登记和核准,实现储户开户登记,办理定期存款帐,办理定期取款手续,办理活期存款帐,办理活期取款手续管理:主指上级银行业务员对下级银行、人员的管控和调动数据输入:输入储户和账户的基本信息3、系统性能该系统的精度要求较高、时间比较快、应变能力快。

银行储蓄管理系统课程设计

银行储蓄管理系统课程设计

银行储蓄管理系统课程设计一、介绍银行储蓄管理系统在现代银行业中具有重要意义。

本课程设计旨在让学生深入了解银行储蓄管理系统的基本原理、功能和实际运用,帮助他们掌握相关技能,为将来从事银行业务和金融管理工作打下坚实基础。

二、课程目标1.理解银行储蓄管理系统的定义和作用。

2.掌握银行储蓄管理系统的基本原理和工作流程。

3.学习银行储蓄管理系统的常见功能和操作方法。

4.能够运用银行储蓄管理系统进行账户管理、交易处理和报表生成。

5.熟悉银行储蓄管理系统在日常银行业务中的应用。

三、课程大纲1. 银行储蓄管理系统简介•银行储蓄管理系统定义•银行储蓄管理系统的重要性•银行储蓄管理系统的分类和功能2. 银行储蓄管理系统的基本原理•银行储蓄管理系统的组成结构•数据存储和管理原理•系统安全和权限控制3. 银行储蓄管理系统的常见功能•客户信息管理•账户管理和资金调拨•交易处理和结算•报表生成和分析4. 银行储蓄管理系统的操作方法•登录系统和权限设置•客户信息录入和修改•账户开立和关闭•交易处理和查询•报表生成和导出5. 银行储蓄管理系统的应用案例•日常存取款操作•贷款和利息计算•资金清算和风险控制•报表分析和经营决策支持四、教学方法本课程将采用讲授理论知识、案例分析和实际操作相结合的教学方法。

学生将通过课堂授课、实验操作和作业练习等方式,逐步掌握银行储蓄管理系统的相关知识和技能。

五、评估方式学生将通过课堂参与、实验报告、作业考核和综合考试等方式进行评估。

其中,实验操作和项目练习将占据较大比重,以考察学生对银行储蓄管理系统的实际应用能力。

六、参考资料1.《银行信息管理系统概论》2.《银行电子商务技术与应用》3.《金融信息系统案例分析》以上为银行储蓄管理系统课程设计的大致框架,希望学生在学习过程中能够认真对待、勤奋学习,掌握系统知识和技能,为将来的职业发展做好准备。

管理信息系统课程设计--银行储蓄管理系统

管理信息系统课程设计--银行储蓄管理系统

管理信息系统课程设计--银行储蓄管理系统管理信息系统课程设计银行储蓄管理系统一、引言随着经济的快速发展和金融行业的日益繁荣,银行储蓄业务作为金融服务的重要组成部分,对于银行的运营和管理至关重要。

为了提高银行储蓄业务的效率和服务质量,设计一个高效、稳定、安全的银行储蓄管理系统成为了必然需求。

本课程设计旨在开发一个功能齐全、操作便捷的银行储蓄管理系统,以满足银行储蓄业务的日常管理和客户需求。

二、系统需求分析(一)功能需求1、开户管理:能够为新客户办理储蓄账户开户手续,包括收集客户信息、设置账户类型、初始存款等。

2、存款与取款:支持客户进行存款和取款操作,实时更新账户余额。

3、账户查询:客户可以查询自己账户的余额、交易明细等信息。

4、利息计算:根据不同的储蓄类型和利率,自动计算账户利息。

5、转账业务:实现客户账户之间的资金转账。

6、报表生成:生成各类储蓄业务报表,如日结报表、月结报表等,供银行管理人员进行分析和决策。

(二)性能需求1、响应时间:系统对于各种操作的响应时间应在可接受范围内,确保客户体验良好。

2、稳定性:系统应能够长时间稳定运行,避免出现故障和数据丢失。

3、安全性:保障客户信息和资金的安全,防止数据泄露和非法操作。

(三)数据需求1、客户信息:包括姓名、身份证号码、联系方式等。

2、账户信息:账户号码、账户类型、余额、开户日期等。

3、交易记录:存款、取款、转账的时间、金额、操作类型等。

三、系统设计(一)总体架构设计银行储蓄管理系统采用 C/S(客户端/服务器)架构,客户端负责与用户进行交互,服务器端负责数据存储和业务逻辑处理。

系统分为表示层、业务逻辑层和数据访问层。

表示层:采用图形用户界面(GUI),为用户提供直观、友好的操作界面。

业务逻辑层:处理各种业务逻辑,如开户、存款、取款、转账等。

数据访问层:负责与数据库进行交互,实现数据的增删改查操作。

(二)数据库设计1、数据库表结构设计客户表(customer):包含客户编号(customer_id)、姓名(name)、身份证号码(id_number)、联系方式(contact_info)等字段。

数据库课程设计银行储蓄系统

数据库课程设计银行储蓄系统

银行储蓄系统数据库课程设计一、系统概述银行储蓄系统是银行的核心业务系统之一,用于管理客户在银行的储蓄账户信息。

本课程设计将通过建立一个简单的银行储蓄系统,帮助学员掌握数据库设计和应用开发的基本技能。

二、系统需求1.用户管理:能够添加、删除、修改和查询用户信息。

2.账户管理:能够创建、修改、查询和删除账户信息。

3.存款业务:能够完成存款、取款、查询余额等操作。

4.转账业务:能够实现不同账户间的转账功能。

5.报表生成:能够根据需求生成相应的报表。

三、数据库设计1.用户表(Users)UserID(用户ID,主键)UserName(用户名)Password(密码)Email(邮箱)Phone(电话)2.账户表(Accounts)AccountID(账户ID,主键)UserID(用户ID,外键)AccountName(账户名称)AccountType(账户类型)OpenDate(开户日期)Balance(账户余额)3.存款记录表(Deposits)DepositID(存款ID,主键)AccountID(账户ID,外键)DepositAmount(存款金额)DepositDate(存款日期)4.取款记录表(Withdrawals)WithdrawalID(取款ID,主键)AccountID(账户ID,外键)WithdrawalAmount(取款金额)WithdrawalDate(取款日期)5.转账记录表(Transfers)TransferID(转账ID,主键)SourceAccountID(源账户ID,外键)DestinationAccountID(目标账户ID,外键)TransferAmount(转账金额)TransferDate(转账日期)6.报表表(Reports)ReportID(报表ID,主键)ReportType(报表类型)ReportDate(报表日期)ReportContent(报表内容)7.用户权限表(UserPermissions)PermissionID(权限ID,主键)UserID(用户ID,外键)PermissionType(权限类型)。

数据库系统原理课程设计--银行储蓄系统数据库设计

数据库系统原理课程设计--银行储蓄系统数据库设计

课程设计报告书课程名称:《数据库系统原理》课程设计题目:银行储蓄系统数据库设计系名:信息工程系专业班级:2012年 6 月 29日课程设计任务书设计题目:银行储蓄管理系统数据库设计初始条件:本课程的设计的目的是通过实践使同学们经历数据库设计开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。

结合具体的开发案例,理解并初步掌握系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作能力。

要求完成的主要任务:要求学生根据所学的数据库原理与程序设计的知识,能够针对一个小型的银行储蓄管理系统,进行数据库系统的需求分析,概念结构设计、逻辑结构设计、物理结构设计,数据录入及测试等,完成题目要求的功能。

主要任务:用户有以下需求:建立读者档案;建立图书档案,建立书目索引;完成日常图书检索、借还工作,对读者档案、图书档案、借还系统的访问,必需进行身份验证。

具体要求如下:1.存折信息数据包括:存折的基本信息包括:户名、帐号、开户银行名称、开户日期、取款密码等。

2.账户存取明细数据包括:日期、摘要(现存、现支、转存、利息)、交易金额、余额、操作柜员编号。

3.检索系统能根据户名、账号、交易日期、金额等进行查询。

4.取款输入账号和密码后,能根据密码判断用户是否合法,能判断取款金额是否超过了账户余额,如果取款金额合法,就对该账号的余额信息进行更新。

5、存款输入账号和存款金额后,能更新该账号的余额。

6、转账输入账号和密码后,能根据密码判断用户是否合法,然后再输入对方的转账账户,并判断对方的转账账户是否合法,如果合法,再输入转账的金额,并能判断转账金额是否超过了账户余额,如果转账金额合法,就对该账号的余额信息以及对方的账户余额信息进行更新。

设计报告撰写格式要求:要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。

设计报告正文字数不少于0.2万字(不包括附录)第1级(章)题序和题名用黑体三号字,第2级(目)题序和题名用黑体小四号字,第3级(条)题序和题名用黑体小四号字,正文内容用宋体五号字(英文用新罗马体),多倍行距1.25。

银行储蓄管理数据库课程设计报告_夏冬

银行储蓄管理数据库课程设计报告_夏冬

(数据库课程设计)设计说明书起止日期:2011 年11 月1 日至2011 年11 月22 日系别信息工程系学生姓名夏冬班级10级专接本2011年11 月22 日目录一、目的与要求 (2)二、系统分析 (2)2.开发及运行环境 (2)三、数据库设计 (2)1.概念数据库设计 (2)2.逻辑数据库设计 (5)3.物理数据库设计 (7)四、课程设计中遇到的问题、解决方法、收获和总结 (15)五、参考文献 (16)银行储蓄管理一、目的与要求通过数据库课程设计,进一步掌握数据库系统的理论和方法。

培养和锻炼开发管理信息系统的能力,为今后信息系统开发打下良好的基础。

本课程环节主要针对《关系数据库基础与应用》这门课程进行设计,数据库是一门应用性很强的专业课,在学习时必须注意理论与实践相结合。

本次课程环节旨在培养学生在本课程范围内,初步掌握解决实际应用问题时所应具备的查阅资料、综合运用所学知识的能力,为毕业设计及今后从事专业工作打下基础。

本课程环节要求学生了解企业管理信息系统后台数据库的设计、配置过程,掌握管理信息系统的开发方法。

主要包括:需求分析、数据分析、系统逻辑模型设计方法;功能设计、物理模型设计方法;系统的实现等方法。

完成一个小型系统后台数据库的设计与配置。

二、系统分析1. 需求分析某储蓄所接受定期和活期储蓄业务,储户采用实名存款,需登记真实姓名,并出具身份证号码。

储户可以办理多个存折。

系统除了管理存取款业务外,还应管理储蓄所每天的业务交接与对帐、结账业务。

储蓄所每天上班前可能接受运钞车送来的现金,下班时则将所内现金送回金库,零星款项也可能留在所内。

每天下班前都要盘点每个营业员准备金、收取储户的存款、支付储户的取款以及缴回的余款,以验证帐目的正确。

这些比较记录除了存储数据库外,都将打印凭证,交由当事人签字后存档。

储户存款依法支付扣税后利息,定期存款依照到期日计息,活期存款在每年的6 月30 日计息(以存款天数计算)。

银行数据库课程设计

银行数据库课程设计

银行数据库课程设计一、课程目标知识目标:1. 理解数据库的基本概念,掌握数据库的基本结构;2. 学习并掌握SQL语言的基本操作,如查询、插入、删除和更新数据;3. 掌握银行业务中数据库的应用场景,理解银行业务数据的特点。

技能目标:1. 能够运用所学知识设计简单的银行数据库系统;2. 能够运用SQL语言进行基本的数据库操作,解决实际问题;3. 能够分析和解决银行业务中数据库的简单故障。

情感态度价值观目标:1. 培养学生对数据库技术的兴趣,激发他们探索新技术的热情;2. 培养学生的团队协作意识,使他们学会在团队中共同解决问题;3. 培养学生严谨、负责任的工作态度,认识到数据安全的重要性。

课程性质:本课程为信息技术学科,结合学生所在年级的知识深度,注重理论与实践相结合,强调培养学生的实际操作能力和解决问题的能力。

学生特点:学生具备一定的计算机操作能力,对新技术充满好奇,但可能对数据库知识了解较少,需要从基本概念入手,逐步引导。

教学要求:结合课程性质、学生特点和教学目标,采用案例教学、任务驱动等教学方法,以学生为主体,充分调动学生的积极性和主动性。

在教学过程中,注重目标导向,明确学习成果,以便进行有效的教学设计和评估。

二、教学内容1. 数据库基本概念:数据库的定义、功能、类型及发展历程;教材章节:第一章 数据库概述。

2. 数据库结构:关系模型、实体关系模型等;教材章节:第二章 数据库结构。

3. SQL语言基本操作:查询、插入、删除和更新数据;教材章节:第三章 SQL语言。

4. 银行业务数据库设计:了解银行业务流程,学习如何设计满足实际需求的数据库;教材章节:第四章 数据库设计。

5. 银行业务数据库应用:分析银行数据库在实际业务中的应用场景,如客户信息管理、账户管理等;教材章节:第五章 数据库应用。

6. 数据库安全与维护:学习如何保证数据安全,了解数据库的日常维护方法;教材章节:第六章 数据库安全与维护。

银行储蓄系统课程设计

银行储蓄系统课程设计

银行储蓄系统课程设计一、课程目标知识目标:1. 理解银行储蓄系统的基本概念、功能及运作流程;2. 掌握银行储蓄系统中涉及的相关法律法规和风险防范措施;3. 了解银行业务创新的现状及发展趋势。

技能目标:1. 能够运用所学知识,设计并优化银行储蓄系统的相关业务流程;2. 能够运用信息技术手段,对银行储蓄系统的数据进行处理和分析;3. 能够运用创新思维,对现有银行储蓄系统提出改进和优化建议。

情感态度价值观目标:1. 培养学生对银行储蓄系统的兴趣,激发学习热情,形成主动探究的良好习惯;2. 增强学生的团队合作意识,培养沟通与协作能力,提高解决问题的综合素质;3. 培养学生的法律意识,树立正确的金融观念,认识到金融安全对社会的重要性。

课程性质:本课程为高中信息技术学科,结合现实生活中的银行储蓄系统,注重理论联系实际,培养学生的实践操作能力和创新思维能力。

学生特点:高中生具有一定的信息素养,思维活跃,具备一定的自主学习能力和团队合作精神。

教学要求:结合学生特点,注重启发式教学,引导学生主动探究,提高学生的实践操作能力和创新思维能力。

在教学过程中,关注学生的个体差异,因材施教,确保每位学生都能达到课程目标。

通过课程学习,使学生具备实际操作银行储蓄系统的能力,为将来的学习和工作打下坚实基础。

二、教学内容1. 银行储蓄系统基本概念:包括银行储蓄系统的定义、功能、分类及发展历程;2. 银行储蓄业务流程:详细讲解存款、取款、转账等业务的具体操作流程;3. 银行储蓄系统相关法律法规:分析银行储蓄业务中涉及的法律法规,如《银行业监督管理法》、《商业银行法》等;4. 银行储蓄系统风险防范:介绍风险防范措施,包括内部控制、信息安全、反洗钱等;5. 银行业务创新:分析当前银行业务创新的发展趋势,如互联网银行、移动支付等;6. 信息技术在银行储蓄系统的应用:探讨数据库、网络技术、加密技术在银行储蓄系统中的应用。

教学大纲安排:第一周:银行储蓄系统基本概念及发展历程;第二周:银行储蓄业务流程及操作;第三周:银行储蓄系统相关法律法规及风险防范;第四周:银行业务创新及信息技术应用。

数据库课程设计银行存取款管理

数据库课程设计银行存取款管理

数据库课程设计银⾏存取款管理银⾏储蓄业务数据库分析⼀、系统功能简介本系统是银⾏⽤户的存取款系统。

主要功能是管理各个⽤户存取款的相关数据。

⼆、本系统由三张表组成,具体如下:表名属性(字段)名储户表账号、⾝份证号、姓名、性别、⾝⾼、地址、存款余额存款单表存款单号、⾦额、存款⽅式、账号、存款⽇期取款单表取款单号、⾦额、取款⽅式、账号、取款⽇期系统表基本信息三、表间关系如下:⼀个存款单或取款单属于⼀个⽤户,⼀个⽤户可以拥有多次存款单或取款单。

⽤户通过存款操作与存款单建⽴联系,通过取款操作与取款单建⽴联系。

ER模型如下图:四、数据准备前期准备⼯作:以system账户登录,创建新账户create user dy identified by lyjn;grant dba to dy;connect dy/dy@orcl;各个表的具体信息和创建表的代码如下: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);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));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));五、插⼊(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-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 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_TIME, 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('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 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, 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','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, MONEY, 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'), '取款机');七、索引建⽴索引遵循的规律: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);⼋、触发器1、插⼊存款,对应储户表的相应储户的余额(balance)增加插⼊记录包含的⾦额数(money)CREATE OR REPLACE TRIGGER OperatingDpsAFTER INSERT ON depositslipFOR 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 OperatingDps;2、删除存款,对应储户表的相应储户的余额(balance)减去所删除记录的⾦额数(money) CREATE OR REPLACE TRIGGER OperatingDps2AFTER DELETE ON depositslipFOR 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、插⼊取款,对应储户表的相应储户的余额(balance)减少插⼊记录包含的⾦额数(money) CREATE OR REPLACE TRIGGER OperatingDwAFTER INSERT ON drawslipFOR 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)加上所删除记录的⾦额数(money) CREATE OR REPLACE TRIGGER OperatingDw2AFTER DELETE ON drawslipFOR 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 REPLACE TRIGGER OperatingDw3 AFTER insert ON drawslipFOR 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_mo>n_ba thenRAISE_APPLICATION_ERROR(-20000, '存款余额不⾜!请重新插⼊存款!'); end if;END OperatingDw3;测试(以刘忠⽥为例):查看刘忠⽥的余额数select name,balance from luser where name='刘忠⽥'1、插⼊存款时插⼊⼀条存款记录insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98012,'00001', 80,to_date('08-09-2009','dd-mm-yyyy'), '整存整取');查看插⼊后,刘忠⽥余额数的变化select name,balance from luser where name='刘忠⽥’2、删除存款时删除⼀条存款记录delete from depositslip where dps_num=98012查看删除后,刘忠⽥余额数的变化select name,balance from luser where name='刘忠⽥’3、插⼊取款时插⼊⼀条取款记录insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY)values (52007,'00001', 80,to_date('08-11-2010','dd-mm-yyyy'), '柜台'); 查看插⼊取款后,刘忠⽥余额数的变化select name,balance from luser where name='刘忠⽥’4、删除取款时删除⼀条取款记录delete from drawslip where dw_num=52007查看删除后,刘忠⽥余额数的变化select name,balance from luser where name='刘忠⽥’5、插⼊的取款数⼤于余额数时insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY)values (52007,'00001', 700,to_date('08-12-2010','dd-mm-yyyy'), '柜台'); 700⼤于刘忠⽥的余额数系统会报错:ORA-20000: 存款余额不⾜!请重新插⼊存款! ORA-06512: 在"DY.OPERATINGDW3", line 10ORA-04088: 触发器 'DY.OPERATINGDW3' 执⾏过程中出错九、存储过程创建过程dpspro,查询某位储户共取过多少钱create or replace procedure dpspro(dname varchar2) assmoney int;beginselect sum(money) into smoney from drawslip natural join luser where name=dname; DBMS_OUTPUT.PUT_LINE(smoney); end dpspro;创建存储过程luinf,查询余额⼤于取款总数储户的相关信息先创建两张表create table new1 as select name 姓名,sum(money) 总数from luser inner join drawslip onluser.acnum=drawslip.acnum group by name;create table new2 as select * from luser inner join new1 on /doc/2ae93f3f0912a2161479298b.html=new1.姓名;存储过程create or replace procedure luinfiscursor mycur isselect * from new2 where new2.balance>new2.总数;v_record new2%rowtype;)beginif mycur%isopen=false thenopen mycur;end if;DBMS_OUTPUT.PUT_LINE(rpad('账号',15,'-')||rpad('⾝份证',15,'-')||rpad('姓名',15,'-')||rpad('性别',15,'-')||rpad('余额',15,'-')||'取款总数');loopfetch mycur into v_record;exit when mycur%notfound;DBMS_OUTPUT.PUT_LINE(rpad(v_record.acnum,15,'-')||rpad(v_/doc/2ae93f3f0912a2161479298b.html,15,'-')||rpad(v_record.id,15,'-')||rpad(v_record.sex,15,'-')||rpad(v_record.balance,15,'-')||v_record.总数);end loop;close mycur;end luinf;⼗、查询1、查询余额最多的⼈共取过多少次款,共取了多少钱select count(*),sum(money) from luser natural join drawslip where name=(select name from luser where balance=(select max(balance) from luser)) 2、查询存款余额⼤于200(亿)的储户,男⼥分别有多少⼈select sex,count(*)from luser where balance>200 group by sex3、查询哪个储户的某次存款期限满16个⽉,显⽰姓名、当次存款⾦额和性别select name,money,sex from luser natural join depositslip where extract(month from sysdate)-extract(month from dps_time)>44、查询哪些储户的取款总数⼤于100select name 姓名,sum(money) 取款数, '亿' 单位from luser inner join drawslip on luser.acnum=drawslip.acnum group by name having sum(money)>1005、查询存款时间长度超过4个⽉的存款信息select name 姓名,dps_num 存款单号,dps_time 存款⽇期,extract(month from sysdate)-extract(month from dps_time) 存款时间长度,'⽉' 单位from luser natural join depositslip where balance>400 and extract(month from sysdate)-extract(month fromdps_time)>=3。

数据库课程设计 银行储蓄管理系统

数据库课程设计 银行储蓄管理系统

《数据库系统概论》课程设计报告设计题目:银行储蓄管理系统姓名:学号:班级:设计起止时间:需求分析:在对软件工程相关知识学习之后,我们对设计软件有了基本的认识和一些应用技能。

在数据库的课程设计中,我们计划做一个小型的银行储蓄管理系统,包括了基本的存取转,和管理员对日常工作的管理功能。

功能设计:(1).客户:包括存款,取款,转账,查询余额,查看流水,密码修改功能(2).管理员:新增用户,删除用户,查看用户,员工绩效,VIP用户判别,储备金预警分析。

3.功能流程图:银行管理系统登陆管理员客户销户查看员工绩效VIP判别资金储备金判别开户存款取款转账余额显示查看流水修改密码详细设计:1.E-R图模型operatecustombankstaffCphoneCtimeCpassCRmoneyCnameCidBidSphoneSnameSidSpassSItimeBname BmoneyBid1112.根据E-R 图设计关系表 (1).银行信息表(bank )字段名 字段类型及长度 允许空 主键说明 Bid nchar (9) no PK 银行号 Bname nchar (20) no银行名 Bmoney numeric (20,3) no 银行余额(2).客户信息表(custom )字段名 字段类型及长度 允许空主键说明 Cid nchar (9) noPK 客户ID Cname nchar (10) no 客户姓名 Cpass nchar (10) no 密码 Ctime nchar (20) no注册时间Bid nchar (9) no 所在银行行号 外码(Bank (Bid )) Crmoney numeric (10,3) no账户余额 Cphone nchar (11) no 客户电话 (3).员工(管理员)表(staff ) 字段名 字段类型及长度 允许空主键 说明 Sid nchar (9) noPK 员工ID Sname nchar (10) no 员工姓名 Spass nchar (10) no 登陆密码 SItime nchar (20) no入行时间Sphone nchar(11) no 联系电话(4).流水信息表字段名字段类型及长度允许空主键说明Oid nchar(9) no PK 流水号Cid nchar(9) no 客户ID 外码(Custom(Cid))Bid nchar(9) no 银行ID 外码(Bank(Bid))Sid nchar(9) no 员工ID 外码(Staff(Sid))Otype smallint no 操作类型Otime nchar(20) no 操作时间Omoney numeric(10,3) yes 交易金额OBmoney numeric(10,3) yes 上次余额OAmoney numeric(10,3) yes 账户余额三个实体:bank,staff,custom一个联系:operate关系图:SQL语句:/*建表*/create table Bank(Bid nchar(9) primary key,Bname nchar(20) not null,Bmoney numeric(20,3) not null)create table Custom( Cid nchar(9) not null,Cname nchar(10) not null,Cpass nchar(10) not null,Ctype smallint not null,Ctime nchar(20) not null,Ccode nchar(18) not null,Bid nchar(9) not null,Crmoney numeric(10,3) not null,Cphone nchar(11) not null,primary key(Cid),foreign key(Bid) references Bank(Bid) /*在客户表中以Bank表的主码作为一个外键,并对他进行级联更新*/on update cascade,)create table Staff(Sid nchar(9) primary key, /*在列级定义主码*/Sname nchar(10) not null,Spass nchar(10) not null,SItime nchar(20) not null,Sphone nchar(11) not null)create table Operate(Oid nchar(9) not null,Cid nchar(9) not null,Bid nchar(9) not null,Sid nchar(9) not null,Otype nchar(10) not null,Otime nchar(20) not null,Oflag smallint not null,Omoney numeric(10,3),OBmoney numeric(10,3),OAmoney numeric(10,3),primary key(Oid,Cid,Sid),foreign key (Cid) references Custom(Cid) /*以用户表主码为一个外键,进行级联删除*/on delete cascade,foreign key(Sid) references Staff(Sid) /*以员工表的主码作为外键,当删除引起冲突的时候,拒绝删除*/on delete no action,foreign key (Bid) references Bank(Bid)on update cascade)insert into Bank values('00001','中国银行小寨分行',10000)update Bank set Bname='中国银行经开分行' where Bid='00002'select * from Bank;delete from Bank where Bid='1' or Bid='2';insert into Custom values('6505001','花花','111',0,'2012/12/10/08:26:00','610424************','00001','1500','14345678912')insert into Staff values('7985000','自助服务','111','2002/01/07','12331654613')delete from Custom where Bid='2';insert into Operate values('2406002','6505001','00001','7985001','哈哈','2012年12月18日14时12分',0,0,2900,2900)insert into Operate values('2406005','6505007','00001','7985001','嘿嘿','2012年12月18日14时12分',0,0,2900,2900)select * from Custom;select * from Operate;select * from Staff;select * from Bank;delete from Operatedrop table Customdrop table Bankdrop table Staff;drop table Operate;select * from Bank;delete from Operate where Oid='6505001'drop view BMoney;create view BMoneyasselect Omoneyfrom Operatewhere Oflag = 0 and Omoney>2000 and Otype = '取款';create view BInMoneyasfrom Operatewhere Oflag = 0 and Omoney>2000 and Otype='存款';create view VIPasselect Ctypefrom Customwhere Ctype=1;select count(*) from BMoney;select count(*) from BInMoney;select count(*) from VIP;update Bank set Bmoney='10000' where Bid='00001';update Bank set Bmoney='+bmoney' where Bid='"+Bid+"'";update Bank set Bmoney='10200.000000' where Bid='00001'程序代码:客户部分:a.void CClientDlg::OnButtonIn() //存款函数{// TODO: Add your control notification handler code hereCInDlg InDlg;if (InDlg.DoModal()==IDOK){double temp,temp1;ADOConn ado;CString sql = "select * from Custom where Cname='"+Cname+"'";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);CString str = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Crmoney");CString bid = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bid");CString str4 = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cid");CString str2= str; //将交易前钱数暂存temp=atof(str);temp1=(double)InDlg.m_InNum;temp+=temp1;str.Format("%f",temp);CString str3 = str; //暂存交易后金额sql = "update Custom set Crmoney='"+str+"' "+"where Cname='"+Cname+"'";ado.ExecuteSQL((_bstr_t)sql);sql = "select count(*) num from Operate";ResultSet = ado.GetRecordSet((_bstr_t)sql);int num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("num"));str = "240600";CString Oid,Cid,Sid,Bid,Otime,Omoney,OAmoney,OBmoney;Oid.Format("%d",++num); Oid=str+Oid;Sid="7985001";Bid = bid; double temp2;sql = "select * from Bank where Bid='"+Bid+"'";ResultSet = ado.GetRecordSet((_bstr_t)sql);CString bmoney = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bmoney");temp2 = atof(bmoney); temp2+=temp1; bmoney.Format("%f",temp2);sql = "update Bank set Bmoney='"+bmoney+"' where Bid='"+Bid+"'";ado.ExecuteSQL((_bstr_t)sql);CString Otype = "存款";CString m_time; CTime time;time = CTime::GetCurrentTime();m_time = time.Format("%Y年%m月%d日%X");Otime = m_time; int flag = 0;Omoney.Format("%f",temp1); OAmoney = str2;OBmoney = str3;sql.Format("insert into Operate values('%s','%s','%s','%s','%s','%s',%d,%s,%s,%s)",Oid,str4,Bid,Sid,Otype,m_ time,flag,Omoney,OAmoney,OBmoney);ado.ExecuteSQL((_bstr_t)sql);ado.E xitConnect(); }}b.v oid CClientDlg::OnButtonGet() //取款函数{// TODO: Add your control notification handler code hereCGetDlg GetDlg;;if (GetDlg.DoModal()==IDOK){double temp,temp1;ADOConn ado;CString sql = "select * from Custom where Cname='"+Cname+"'";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);CString str = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Crmoney");CString bid = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bid");CString str4 = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cid");CString str2= str;//将交易前钱数暂存temp=atof(str);temp1=(double)GetDlg.m_GetNum;if (temp>temp1){temp-=temp1; str.Format("%f",temp); CString str3 = str;//暂存交易后金额sql = "update Custom set Crmoney='"+str+"' "+"whereCname='"+Cname+"'";ado.ExecuteSQL((_bstr_t)sql);sql = "select count(*) num from Operate";ResultSet = ado.GetRecordSet((_bstr_t)sql) int num= atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("num"));str = "240600";CString Oid,Cid,Sid,Bid,Otime,Omoney,OAmoney,OBmoney;Oid.Format("%d",++num);Oid=str+Oid; Sid="7985001"Bid = bid; double temp2;sql = "select * from Bank where Bid='"+Bid+"'";ResultSet = ado.GetRecordSet((_bstr_t)sql);CString bmoney = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bmoney");temp2 = atof(bmoney); temp2-=temp1;bmoney.Format("%f",temp2);sql = "update Bank set Bmoney='"+bmoney+"' whereBid='"+Bid+"'";ado.ExecuteSQL((_bstr_t)sql);CString Otype = "取款";CString m_time; CTime time;time = CTime::GetCurrentTime();m_time = time.Format("%Y年%m月%d日%X");Otime = m_time; int flag = 0;Omoney.Format("%f",temp1);OAmoney = str2;OBmoney = str3; sql.Format("insert into Operate values('%s','%s','%s','%s','%s','%s',%d,%s,%s,%s)",Oid,str4,Bid,Sid,Otype,m_time,flag,Omoney,OAmoney,OBmoney); ado.ExecuteSQL((_bstr_t)sql);ado.ExitConnect();}else{AfxMessageBox("账户余额不足!"); }}}c.void CClientDlg::OnButtonTurn(){/ TODO: Add your control notification handler code hereCTurnDlg TurnDlg;if (TurnDlg.DoModal()==IDOK){ADOConn ado;CString sql = "select * from Custom";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);int flag = 0;while (!ResultSet->adoEOF)CString TCusId = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cid");CString TCusMon = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Crmoney"); //收钱客户在操作前的余额CString str5 = TCusMon; TCusId.Remove(' ');if (TCusId==TurnDlg.m_TurnId){double temp,temp1;sql = "select * from Custom where Cname='"+Cname+"'";ResultSet = ado.GetRecordSet((_bstr_t)sql);CString str = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Crmoney");CString bid = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bid");CString str4 = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cid");CString str2= str; //将交易前钱数暂存temp=atof(str);temp1=(double)TurnDlg.m_TurnNum; if (temp>temp1){flag = 1;temp-=temp1; //住客户钱数减少str.Format("%f",temp);CString str3 = str; //暂存交易后金额sql = "update Custom set Crmoney='"+str+"' "+"where Cname='"+Cname+"'";do.ExecuteSQL((_bstr_t)sql); temp=atof(TCusMon);//收钱客户钱数增加temp+=temp1;TCusMon.Format("%f",temp); sql = "update Custom set Crmoney='"+TCusMon+"' "+"where Cid='"+TCusId+"'";ado.ExecuteSQL((_bstr_t)sql); sql = "select count(*) num from Operate";ResultSet = ado.GetRecordSet((_bstr_t)sql);int num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("num"));str = "240600";CString Oid,Cid,Sid,Bid,Otime,Omoney,OAmoney,OBmoney;int Otype; Oid.Format("%d",++num); Oid=str+Oid;Sid="7985001";Bid = bid; Otype = 2; CString m_time; CTime time;time = CTime::GetCurrentTime();m_time = time.Format("%Y年%m月%d 日%X");Otime = m_time; Omoney.Format("%f",temp1);OAmoney = str2; OBmoney = str3;sql.Format("insert into Operate values('%s','%s','%s','%s',%d,'%s',%s,%s,%s)",Oid,str4,Bid,Sid,Otype,m_time ,Omoney,OAmoney,OBmoney); ado.ExecuteSQL((_bstr_t)sql);sql.Format("insert into Operate values('%s','%s','%s','%s',%d,'%s',%s,%s,%s)",TCusId,str4,Bid,Sid,Otype,m_t ime,Omoney,str5,TCusMon); ado.ExecuteSQL((_bstr_t)sql);ado.ExitConnect();break; }else{AfxMessageBox("账户余额不足!");break; }}ResultSet->MoveNext();}if(flag==0){AfxMessageBox("该账户不存在!"); }}}d.v oid CClientDlg::OnButtonHistoy() //历史记录查询{// TODO: Add your control notification handler code hereCShowHistory showDlg;ame = Cname;showDlg.DoModal();}e.v oid CClientDlg::OnButtonAlter(){// TODO: Add your control notification handler code hereCAlterDlg alteDlg;if(alteDlg.DoModal()==IDOK){ if (alteDlg.m_AItem==0){if (alteDlg.m_Alter1==alteDlg.m_Alter2) {ADOConn ado; CString sql = "update Custom set Cname='"+alteDlg.m_Alter1+"' where Cname='"+Cname+"'";ado.ExecuteSQL((_bstr_t)sql);AfxMessageBox("姓名修改成功!"); }else {AfxMessageBox("两次姓名输入不一致,请重新输入!"); }}else if(alteDlg.m_AItem==1){if (alteDlg.m_Alter1==alteDlg.m_Alter2) { ADOConn ado;CString sql = "update Custom set Cpass='"+alteDlg.m_Alter1+"' whereCname='"+Cname+"'";ado.ExecuteSQL((_bstr_t)sql); AfxMessageBox("密码修改成功!"); }else{AfxMessageBox("两次密码输入不一致,请重新输入!"); }elseif (alteDlg.m_Alter1==alteDlg.m_Alter2){if (alteDlg.m_Alter1.GetAt(0)=='1'&&alteDlg.m_Alter1.GetLength()==11)ADOConn ado; CString sql = "update Custom setCphone='"+alteDlg.m_Alter1+"' where Cname='"+Cname+"'";ado.ExecuteSQL((_bstr_t)sql); AfxMessageBox("电话号码修改成功!"); }else {AfxMessageBox("电话号码格式不对!");} } else{AfxMessageBox("两次电话输入不一致,请重新输入!"); } }}}管理员部分:a.void CStaffDlg::OnButtonInsert() //添加新成员{// TODO: Add your control notification handler code hereCInsertDlg insertDlg;if (insertDlg.DoModal()==IDOK){if (insertDlg.m_Phone.GetAt(0)=='1'&&insertDlg.m_Phone.GetLength()==11){ADOConn ado;CString sql = "select count(*) Num from Custom whereCcode='"+insertDlg.m_Code+"'";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);int Num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("Num"));if (Num==0){CString str = "650500";sql = "select count(*) num from Custom";ResultSet = ado.GetRecordSet((_bstr_t)sql);Num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("num"));CString Cid,Cpass,Bid,Pmoney; double dou;Cid.Format("%d",++Num); Cid = str+Cid;Cpass = "000000";CString m_time; Bid= "00001";CTime time; time = CTime::GetCurrentTime();m_time = time.Format("%Y年%m月%d日%X");dou = (double)insertDlg.m_Pmoney;Pmoney.Format("%f",dou);// Otime = m_time; sql.Format("insert into Custom values('%s','%s','%s','%s',%s,'%s',%s,%s)",Cid,insertDlg.m_Name,Cpass,m_time,insertDlg.m_Code,Bid,Pmoney,insertDlg.m_Phone);ado.ExecuteSQL((_bstr_t)sql);sql = "select count(*) num from Operate";ResultSet = ado.GetRecordSet((_bstr_t)sql);Num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("num"));CString Oid,OAmoney,Otype; Otype = "新注册";Oid.Format("%d",++Num);str = "240600";Oid = str+Oid; Bid= "00001";int flag = 0; OAmoney = "0";sql.Format("insert into Operatevalues('%s','%s','%s','%s','%s','%s',%d,%s,%s,%s)",Oid,Cid,Bid,Sid,Otype,m_time,flag,Pmoney,OAmoney,Pmoney); ado.ExecuteSQL((_bstr_t)sql);AfxMessageBox("新增客户成功!"); }else{AfxMessageBox("该证件号已经注册!"); }}}b.void CStaffDlg::OnButtonDelete() //注销客户{// TODO: Add your control notification handler code hereCDelDlg delDlg;if (delDlg.DoModal()==IDOK){if (delDlg.m_DelId1==delDlg.m_DelId2){ADOConn ado;count(*) Num from Custom where Cid='"+delDlg.m_DelId1+"'";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);int Num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("Num"));if (Num!=0){CString str = "650500";sql = "delete from Custom whereCid='"+delDlg.m_DelId1+"'";ado.ExecuteSQL((_bstr_t)sql); CString Bid,Cid;Cid = "6505000";CString m_time;CTime time; time = CTime::GetCurrentTime();m_time = time.Format("%Y年%m月%d日%X");sql = "select count(*) numfrom Operate";ResultSet = ado.GetRecordSet((_bstr_t)sql);Num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("num"));CString Oid,OAmoney,Otype; Otype = "注销用户";Oid.Format("%d",++Num);tr = "240600";Oid = str+Oid; Bid= "00001";int flag = 2; OAmoney = "0";sql.Format("insert into Operatevalues('%s','%s','%s','%s','%s','%s',%d,%s,%s,%s)",Oid,Cid,Bid,Sid,Otype,m_time,flag,OAmoney,OAmoney,OAmoney); ado.ExecuteSQL((_bstr_t)sql);AfxMessageBox("注销客户成功!"); }else{AfxMessageBox("不存在该用户!"); }}else {AfxMessageBox("两次输入用户ID不一致,请重新输入!"); }}}c.void CStaffDlg::OnButtonResher() 查询客户{// TODO: Add your control notification handler code hereCAlterDlg altDlg; if (altDlg.DoModal()==IDOK){if (altDlg.m_AItem==0) {if (altDlg.m_Alter1==altDlg.m_Alter2) {ADOConn ado;CString sql = "update Staff set Sname='"+altDlg.m_Alter1+"' whereSname='"+Sname+"'";ado.ExecuteSQL((_bstr_t)sql);AfxMessageBox("姓名修改成功!");}else{AfxMessageBox("两次姓名输入不一致,请重新输入!"); }} else if(altDlg.m_AItem==1){if (altDlg.m_Alter1==altDlg.m_Alter2){ADOConn ado;CString sql = "update Custom set Spass='"+altDlg.m_Alter1+"' where Sname='"+Sname+"'";ado.ExecuteSQL((_bstr_t)sql); AfxMessageBox("密码修改成功!"); }else{AfxMessageBox("两次密码输入不一致,请重新输入!"); }}else{if (altDlg.m_Alter1==altDlg.m_Alter2){if (altDlg.m_Alter1.GetAt(0)=='1'&&altDlg.m_Alter1.GetLength()==11){ADOConn ado;CString sql = "update Custom set Sphone='"+altDlg.m_Alter1+"' where Sname='"+Sname+"'";ado.ExecuteSQL((_bstr_t)sql);AfxMessageBox("电话号码修改成功!"); }else{AfxMessageBox("电话号码格式不对!");} }else{AfxMessageBox("两次电话输入不一致,请重新输入!"); } } }d.void CStaffDlg::OnButtonMoneyctrl() //资金管理{// TODO: Add your control notification handler code hereCSerchDlg serDlg;if (serDlg.DoModal()==IDOK){ADOConn ado;CString sql = "select count(*) Num from Custom where Cid='"+serDlg.m_Cid+"'";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);int Num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("Num"));if (Num!=0){CCusInfoDlg cusDlg;cusDlg.Cid = serDlg.m_Cid ADOConn ado;CString sql = "select * from Custom where Cid='"+cusDlg.Cid+"'";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);cusDlg.m_Cname = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cname");cusDlg.m_Cid = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cid");cusDlg.m_Code = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Ccode");cusDlg.m_Phone = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cphone");cusDlg.m_Rmoney = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Crmoney");cusDlg.DoModal();ado.ExitConnect();}else{AfxMessageBox("不存在该客户!"); }}}e.void CStaffDlg::OnButtonAlter() //信息修改{CMoneyDlg monDlg; ADOConn ado;CString sql = "select count(*) Num from BMoney ";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);monDlg.m_GetNum = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("Num"));sql = "select count(*) Num from BInMoney";ResultSet = ado.GetRecordSet((_bstr_t)sql);monDlg.m_InNum = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("Num"));sql = "select count(*) Num from VIP";ResultSet = ado.GetRecordSet((_bstr_t)sql);monDlg.m_VIPNum= atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("Num"));sql = "select * from Bank where Bid='00001'";ResultSet = ado.GetRecordSet((_bstr_t)sql);monDlg.m_Cash = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bmoney");ado.ExitConnect();monDlg.DoModal();}f.void CStaffDlg::OnButtonAnyse() //员工业绩分析{// TODO: Add your control notification handler code hereCStaffIDlg staDlg;staDlg.DoModal();}心得体会:这次课程设计体会非常深刻,首先在团队合作方面,我觉得自己作为队长没有两道好我的小队,这是我的失职。

数据库原理课程设计-银行储蓄系统题目要求

数据库原理课程设计-银行储蓄系统题目要求

数据库原理课程设计一、课程设计目的及任务《数据库原理课程设计》是《数据库原理》理论课程的配套实践性教学环节之一。

作为理论教学的辅助手段,要求学生应用现有的数据建模工具和数据库管理系统软件,依据软件工程规范,科学的完成小型数据库的设计与实现。

使学生更好的掌握数据库的基本概念,通过结合实际的设计和操作巩固课程教学的内容,并有效延伸了数据库原理理论知识的涉及范围。

把理论课和实验课所学的内容统一综合,在此基础上,强化实际动手能力,设计能力以及创新思想并培养严谨的科研开发作风。

二、课程设计的基本要求根据所学的数据库原理与程序设计的知识,能够针对一个小型的数据库管理系统,进行系统的需求分析,系统设计,数据库设计,编码,测试等。

要求学生掌握如下内容:数据库的概念结构设计,逻辑结构设计,数据库中表、视图、存储过程、触发器的设计与实现。

提高学生实际动手能力和创新能力,从而为后续课程的学习,毕业设计环节以及将来的实际工作打好坚实的基础。

三、课程设计地点及要求课程设计地点:东区三教计算机系机房。

按照机房统一安排进行上机练习。

四、课程设计的选题原则课程设计题目以选用学生相对比较熟悉的业务模型,通过本实践性教学环节,能较好地巩固数据库的基本概念、基本原理、关系数据库的设计理论、设计方法等主要相关知识点,针对实际问题设计概念模型,并应用现有的工具完成小型数据库的设计与实现。

五、课程设计的内容3、银行储蓄系统设计要求:(1)实现储户开户登记。

(2)办理定期存款帐。

(3)办理定期取款手续。

(4)办理活期存款帐(5)办理活期取款手续。

(6)实现利息计算。

(7)输出明细表。

(8)具有数据备份和数据恢复功能。

1。

计算机-数据库课程设计-银行管理系统

计算机-数据库课程设计-银行管理系统

(1)创建储户表Create table chuhu(CNo int primary key,CName char(20) not null,CPassword int not null,CID int not null,CAddress char(20) not null,CBalance int not null,CDate datetime not null,CSex char(2) not null,)图5利用查询编辑器创建储户信息表图6储户信息表(2)创建活期存取款表Create table Hcq(nID int primary key,CNo int not null,CMoney int not null,CBalance int not null,CDate datetime not null,CInterest int not null,)图7利用查询编辑器创建活期存取款表图8活期存取款表(3)创建定期存款表Create table dqcun(nID int primary key,CNo int not null,CName char(10) not null,CMoney int not null,Crate float not null,CYear int not null,CDate datetime not null,)图9利用查询编辑器创建定期存款表图10定期存款表(4)创建定期取款表Create table dqqu(nID int primary key,CNo int not null,CDate datetime not null,CMoney int not null,CName char(20) not null,)图11利用查询编辑器创建定期取款表图12定期取款表(5)定期操作记录表Create table dqjilu(nID int primary key,CNo int not null,CDate datetime not null,CStyle char(4) not null,CMoney int not null,CName char(8) not null,)图13利用查询编辑器创建定期操作记录表图14定期操作记录表2.5.5为系统创建视图(1)储户表的视图图15 储户表的视图(2)活期存取款表的视图图16活期存取款表的视图(3)定期存款表的视图图17 定期存款表的视图(4)定期取款表的视图图18 定期取款表的视图(5)定期操作记录的视图图19 定期操作记录的视图3.设计结果及分析3.1 查询与结果分析(1)查询储户姓名为王刚的用户的信息结果为:图20查询储户姓名为王刚的用户的信息(2)查询操作金额为85000元用户的帐号结果为:图21查询操作金额为85000元用户的帐号(3)查询定期存取款表中序号为1的用户的名字结果为:图22查询定期存取款表中序号为1的用户的名字(4)为储户表插入一条数据(10012365,张朋,000236,31426003017,鞍山,64,2003-12-20,男)的信息结果为:图23为储户表插入一条数据信息(5)创建角色u1并将对储户表查询,修改和插入的功能赋给角色u1 create role u1grant select,update,inserton chuhuto u1结果为:图24创建角色u1并将对储户表查询,修改和插入的功能赋给角色u1(6)收回角色u1储户表修改的功能revoke updateon chuhufrom u1结果为:图25收回角色u1储户表修改的功能(7)删除角色u1结果为:图26删除角色u1(8)建立触发器,当向储户表插入新信息后,打印出又添加了一个供应商信息字样结果为:图27建立触发器(9)创建查看一个储户的基本信息的存储过程结果为:图28创建存储过程4设计体会这次银行管理系统课程设计,我主要采用是Microsoft SQL Severe2005数据库设计软件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告书课程名称:《数据库系统原理》课程设计题目:银行储蓄系统数据库设计系名:信息工程系专业班级:2012年 6 月 29日课程设计任务书设计题目:银行储蓄管理系统数据库设计初始条件:本课程的设计的目的是通过实践使同学们经历数据库设计开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。

结合具体的开发案例,理解并初步掌握系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作能力。

要求完成的主要任务:要求学生根据所学的数据库原理与程序设计的知识,能够针对一个小型的银行储蓄管理系统,进行数据库系统的需求分析,概念结构设计、逻辑结构设计、物理结构设计,数据录入及测试等,完成题目要求的功能。

主要任务:用户有以下需求:建立读者档案;建立图书档案,建立书目索引;完成日常图书检索、借还工作,对读者档案、图书档案、借还系统的访问,必需进行身份验证。

具体要求如下:1.存折信息数据包括:存折的基本信息包括:户名、帐号、开户银行名称、开户日期、取款密码等。

2.账户存取明细数据包括:日期、摘要(现存、现支、转存、利息)、交易金额、余额、操作柜员编号。

3.检索系统能根据户名、账号、交易日期、金额等进行查询。

4.取款输入账号和密码后,能根据密码判断用户是否合法,能判断取款金额是否超过了账户余额,如果取款金额合法,就对该账号的余额信息进行更新。

5、存款输入账号和存款金额后,能更新该账号的余额。

6、转账输入账号和密码后,能根据密码判断用户是否合法,然后再输入对方的转账账户,并判断对方的转账账户是否合法,如果合法,再输入转账的金额,并能判断转账金额是否超过了账户余额,如果转账金额合法,就对该账号的余额信息以及对方的账户余额信息进行更新。

设计报告撰写格式要求:要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。

设计报告正文字数不少于0.2万字(不包括附录)第1级(章)题序和题名用黑体三号字,第2级(目)题序和题名用黑体小四号字,第3级(条)题序和题名用黑体小四号字,正文内容用宋体五号字(英文用新罗马体),多倍行距1.25。

报告内容一律使用A4打印纸计算机打印,页码在页下居中标明。

必须使用国家公布的规范字。

页面设置:上空2.5 cm,下空2.0 cm,左空2.5 cm,右空2.0cm(左装订)。

插图图面要整齐、美观,插图应与正文呼应,不能脱节。

每幅插图应有图序与图题,图序编号要连续,图序与图题间空一格且要放在插图下方居中处。

时间安排:消化资料、系统调查 1天系统分析、总体设计,实施计划、撰写报告3天演示、验收1天指导教师签字:凌伟2012年6月25日系主任签字:2012年6月25 日1.概述(设计题目与可行性分析)1.1产品描述本软件实现银行的活期储蓄存款业务。

整套软件由客户端程序和服务器端程序构成,客户端运行在面向个人业务的银行柜台的电脑上,银行职员输入相关信息并通过网络通讯向服务器发送请求,并接受服务器端程序的应答显示处理的结果。

服务器端处理客户端的各种业务请求。

主要实现银行开户、销户、取款、存款、余额查询、转账、修改密码、打印账户明细记录等功能。

1.2产品功能1.3用户特点本软件的最终用户主要面向银行柜台职员。

这些操作人员的教育水平是高中及以上学历,经过计算机操作的相关培训,能够熟练使用和操作电脑。

1.4一般约束下面对设计系统时限制开发者选择的其他一些项作一般性描述。

而这些项将限定开发者在设计系统时的任选项。

这些包括:a.管理方针;b.硬件的限制:终端电脑性能较差,无法支持图形化界面;c.与其他应用间的接口;d.并行操作:支持10个终端同时操作;e.审查功能;f.控制功能;g.所需的高级语言:标准C++语言;h.通信协议:TCP/IP;i.应用的临界点;j.安全和保密方面的考虑:各种密码输入后用‘*’显示。

通过网络传送的数据在传送前需要简单加密,接收后在处理前需要简单解密。

服务器端对接收到的数据需要进行第二次数据有效性验证。

1.5假设和依据本条列出影响需求说明中陈述的需求的每一个因素。

这些因素不是软件的设计约束,但是它们的改变可能影响到需求说明中的需求。

例如:假定一个特定的操作系统是在被软件产品指定的硬件上使用的,然而,事实上这个操作系统是不可能使用的,于是,需求说明就要进行相应的改变。

2.需求分析储蓄业务越来越走进人们的生活。

代发工资、代缴水电费、代缴电话费等业务极大的方便了人们的日常生活。

越来越多的人们也开始使用银行业务、储蓄业务,同时银行储蓄储户越来越多。

银行还在使用手工记账,由于手工记账工作效率非常低,通常有储户等待,排成长龙的现象,同时这给工作人员增加了非常大的负担和额外的工作负荷,也给银行的发展带来了严重的制约和压力,银行储蓄信息化已经到了不解决不行的地步。

储蓄综合业务平台就是在此背景下开发出来,本系统用现代化的电子信息技术,实现和发展了储蓄业务。

它不仅代替了存款、取款等手工记账的操作,还实现了数据自动计算、智能检查、高效数据检索和安全数据存储等功能。

本案例做一个储蓄综合业务平台系统。

储蓄综合业务平台是以银行柜台员工的日常工作为出发点,为银行储蓄柜台开发的一套综合业务平台,它包括储蓄柜台最常使用的开户、销户、存款、取款、冻结解冻、查询、日志管理以及员工管理等功能。

在上一个案例中完成了储蓄综合业务平台中员工管理、登录、主窗体设计以及日志查看功能,接下来将完成本系统剩下的业务功能。

系统主要功能描述:1. 开户:储户来储蓄所办理业务前,要先申请账户,提供户主姓名、密码和预存款金额,此时系统自动为储户生成账号,以后储户再次办理业务时,根据此账号和密码就可以完成。

2. 存款:储户来储蓄所存钱时,只需要提供账号和存款金额。

系统验证通过后,将储户账户余额加上存款金额,最后显示储户存款的当前余额信息。

3. 取款:储户来储蓄所取钱时,要提供账号、密码和取款金额。

系统验证账户的合法性,然后将账户余额减去取款金额,最后显示储户取款后的账户余额信息。

4. 查询账户余额:查询账户余额时,只需要提供账号,系统验证账号是否存在,然后显示此账号信息,包括户主姓名、账户余额和账户状态信息。

5. 查看全部账户信息:系统以列表形式显示当前系统中所有账户信息,包括账号、户主姓名、账户余额、账户状态信息。

6. 销户:储户不需要在储蓄所办理业务的时候,要进行销户。

提供账号和密码,系统进行账户有效性验证,验证通过后将提醒储户将此账户余额取出,系统将余额清零,并将此账户状态置为销户状态。

7. 修改账户密码:储户可以随时修改自己的密码。

在修改前,系统验证账户的合法性,然后提示储户设置两次密码,并验证两次密码输入是否正确。

3.概念结构设计图 3-1 银行管理系统结构图图 3-2 银行管理系统操作图4.逻辑结构设计给出本系统内所使用的每个数据结构的名称、标识符以及它们之中每个数据项、记录、文卷和系的标识、定义、长度及它们之间的层次的或表格的相互关系。

5.物理结构设计: 如表 1:储户表主键:帐号;约束条件:各属性均非空,密码长度为6位;如表 2:活期存取款表主键:nID;外键:帐号;被参照表:储户表约束条件:各属性均非空;如表 3:定期存款表主键:nID;外键:帐号;被参照表:储户表约束条件:各属性均非空;如表 4:定期取款表主键:nID;外键:nID;被参照表:定期存款表约束条件:各属性非空如表 5:定期操作记录表主键:nID;外键:nID;被参照表:定期存款表,定期取款表约束条件:各属性非空6.实现及测试主界面如下所示:图6-1图6-26.1开户窗体即frmCreateAccount窗体:开户流程描述:首先系统为新储户生成账号,提示输入户主姓名、密码和开户金额,在输入这些信息后进行验证,如果不合法则提示用户重新输入,如果验证通过,则将账户信息保存到账户文件中,并提示开户成功信息,最后将添加日志信息到日志文件中。

要求:●账号生成规则:如果是第一个账户,则使用系统初始化账号(10000),如果不是第一个账户,则根据最大账号加一获得新账号。

●账号密码为6位数字。

●输入的开户金额必须是数字并且不小于1。

●开户的账户状态默认为“正常”。

●账户信息保存到账户文件时的格式:账号|户主姓名|密码|开户金额|账户状态。

窗体界面如下:图6-3 图6-46.2存款窗体即frmDeposit窗体存款流程是:营业员输入储户账号,系统将验证该账户是否存在。

如果存在,则显示账户信息。

如果账户状态是“销户”或“冻结”,则存款金额和存款按钮不可用。

如果是“正常”状态,则将存款金额和存款按钮置为可用状态,提示输入存款金额,将存款金额追加到该账户余额中。

最后显示储户账户存款后的余额信息,并添加存款日志。

要求:●输入的账号必须是数字,并且不能超过5位。

●显示的账户余额保留小数点后2位●存款金额必须是数字并且大于0。

界面如下所示:图6-5 图6-66.3取款窗体即frmTakeOutMoney窗体取款流程是:营业员输入储户账号,系统将验证该账户是否存在。

如果存在,则显示账户信息。

如果账户状态是“销户”或“冻结”,则取款金额和取款按钮不可用。

如果账户状态是“正常”状态,则将取款金额和取款按钮置为可用状态,提示输入取款金额。

如果输入的取款金额大于账户余额时,提示“取款金额不能大于账户余额”。

当按下取款按钮时,提示储户输入密码,并验证密码是否正确。

验证通过后将该账户余额减去取款金额,并保存到账户文件中。

最后显示储户取款后的账户余额等信息,并添加取款日志。

要求:●输入的账号必须是数字,并且不能超过5位。

●显示的账户余额保留小数点后2位●输入的密码以“*”显示,并且不能超过6位。

●取款金额必须是数字并且大于0。

●取款金额必须小于账户余额。

界面如下所示:图6-7图6-8 图6-96.4查询账户余额窗体即frmQueryAccount窗体查询账户余额流程:营业员输入储户账号,系统将验证该账户是否存在。

如果存在,则显示账户基本信息,包括:户主姓名、账户余额和账户状态。

要求:●输入的账号必须是数字,并且不能超过5位。

●显示的账户余额保留小数点后2位界面如下所示:图6-106.5查看全部账户窗体即frmQueryAllAccount窗体为了安全考虑,查看全部账户时需要将查询者的信息记录到日志中。

以列表形式显示的账户信息包括:账号、户主姓名、账户余额和账户状态。

由于密码属于储户私人所有,因此在列表中不能显示。

界面如下所示:图6-116.6修改账户密码窗体即frmChangeAccountPassword窗体修改账户密码流程:营业员输入储户账号,系统验证账号是否存在。

如果存在,则显示账户基本信息,包括储户姓名和账户状态。

相关文档
最新文档