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

合集下载

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

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

c 银行储蓄管理系统课程设计一、教学目标本课程旨在让学生了解和掌握银行储蓄管理系统的相关知识,通过学习,学生能够理解银行储蓄管理的基本概念,掌握银行储蓄管理的基本操作,并能够运用所学知识分析和解决实际问题。

具体目标如下:1.理解银行储蓄管理的基本概念和原理。

2.掌握银行储蓄管理的基本操作流程。

3.了解银行储蓄管理的法律法规。

4.能够运用银行储蓄管理系统进行日常操作。

5.能够对银行储蓄管理数据进行分析。

6.能够独立完成银行储蓄管理项目的实施和维护。

情感态度价值观目标:1.培养学生遵守法律法规,诚实守信的意识。

2.培养学生团队合作,积极进取的精神。

3.培养学生关注社会,服务社会的责任感。

二、教学内容本课程的教学内容主要包括银行储蓄管理的基本概念、基本操作和法律法规。

具体安排如下:1.银行储蓄管理的基本概念:介绍银行储蓄管理的定义、特点和作用。

2.银行储蓄管理的基本操作:讲解银行储蓄管理的操作流程,包括开立账户、存款、取款、转账等。

3.银行储蓄管理的法律法规:介绍我国银行储蓄管理的法律法规体系,包括《银行业监督管理法》、《储蓄存款条例》等。

三、教学方法为了提高教学效果,本课程将采用多种教学方法,包括讲授法、案例分析法、实验法等。

1.讲授法:通过讲解银行储蓄管理的基本概念、基本操作和法律法规,使学生掌握相关知识。

2.案例分析法:通过分析实际案例,使学生了解银行储蓄管理在实际工作中的应用。

3.实验法:通过模拟实验,让学生亲自动手操作,提高学生的实际操作能力。

四、教学资源为了支持教学内容的实施和教学方法的应用,我们将准备以下教学资源:1.教材:选用权威、实用的银行储蓄管理系统教材,作为学生学习的主要参考资料。

2.参考书:推荐学生阅读相关的参考书籍,丰富学生的知识体系。

3.多媒体资料:制作精美的PPT,生动形象地展示银行储蓄管理的相关内容。

4.实验设备:准备计算机、投影仪等实验设备,为学生提供动手操作的机会。

银行储蓄系统课程设计

银行储蓄系统课程设计

银行储蓄系统课程设计银行计算机储蓄系统目录一、任务 (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三、逻辑设计 2四、类的设计与分析 4五、数据库表结构设计 8六、特色算法分析 8七、功能测试 9八、存在的不足与对策 12九、程序源代码 12银行储蓄管理系统一银行储蓄系统需求分析系统功能简介:信息系统:主要是在里面输入用户信息(户名,帐号,开户日期)主要功能:记录用户所要进行的各种存取操作(存钱,取钱),并对操作数据做好记录记录时间:主要是记录每个用户开户,存取,取钱的日期相关金额:该用户的存款金额,取款金额,执行操作后账户余额保存系统:可以以连接数据库模式保存查询过的内容,对于刚刚查询过的内容不必重复登陆工作环境:该程序可用在各种银行性质的单位,能有效管理用户信息。

方便,快捷,容易上手,安全保密,资料齐整构造该程序,主要是使用C++ & SQL系统。

在MS-DOS以及WINDOWS95以上的操作系统上可以正常运行。

现今的社会,资金流动十分频繁。

不单单是企业、厂商,连个人也不例外。

银行作为一个金融机构,在现代人们的生活中扮演着及其重要的角色。

为生活节奏飞快的现代人提供快速、便捷、高效理财服务,是每一个银行机构的共同职责。

伴随着电脑技术的发展,各大银行储蓄管理软件也随之出现在这一舞台之上。

银行储蓄管理程序的主要功能就是记录用户的账户信息,已经对用户的存取款操作作好记录及数据更新。

银行储蓄管理的特点是数据量大。

数据更新频繁。

因此便捷的操作,数据更新准确度,成了这一系统的主要指标。

二系统总框图三逻辑设计任何建模语言都以静态建模机制为基础,标准建模语言UML也不例外。

所谓静态建模是指对象之间通过属性互相联系,而这些关系不随时间而转移。

类和对象的建模,是UML建模的基础。

面向对象的开发方法的基本任务是建立对象模型,是软件系统开发的基础。

UML中的对象类图表达了对象模型的静态结构,能够有效地建立专业领域的计算机系统对象模型。

图1 系统类图动态模型主要描述系统的动态行为和控制结构。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

储蓄管理系统课程设计

储蓄管理系统课程设计

储蓄管理系统课程设计一、教学目标本节课的学习目标包括:知识目标:学生需要理解储蓄管理系统的概念、组成部分及其作用;掌握储蓄账户的开设、存取款操作、账户管理等相关知识。

技能目标:学生能够运用储蓄管理系统的知识,进行存取款操作、账户管理;能够分析储蓄账户的利率、手续费等要素,做出合理的储蓄决策。

情感态度价值观目标:培养学生珍惜财富、合理消费的观念,提高学生的金钱管理能力,培养学生的金融素养。

通过本节课的学习,学生应掌握储蓄管理系统的相关知识,提高金钱管理能力,培养金融素养,为今后的生活和工作奠定基础。

二、教学内容本节课的教学内容主要包括:1.储蓄管理系统的概念及其组成部分2.储蓄账户的开设、存取款操作、账户管理3.储蓄账户的利率、手续费等要素及其计算4.储蓄管理系统在实际生活中的应用教学内容将按照教材的章节安排进行讲解,并结合实际情况进行举例和拓展。

三、教学方法为了激发学生的学习兴趣和主动性,本节课将采用多种教学方法:1.讲授法:讲解储蓄管理系统的相关知识,阐述概念和原理。

2.案例分析法:分析实际生活中的储蓄案例,引导学生运用所学知识解决问题。

3.讨论法:学生进行小组讨论,分享各自的观点和经验,互相学习。

4.实验法:安排课后实践任务,让学生亲自动手操作储蓄管理系统,巩固所学知识。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:提供给学生最新的储蓄管理系统教材,以便他们随时查阅和复习。

2.参考书:推荐一些与储蓄管理系统相关的参考书籍,拓展学生的知识视野。

3.多媒体资料:制作课件、视频等多媒体资料,帮助学生更好地理解和掌握知识。

4.实验设备:准备计算机、储蓄管理系统软件等实验设备,让学生进行实际操作。

五、教学评估本节课的评估方式包括:1.平时表现:观察学生在课堂上的参与程度、提问回答等情况,评估他们的学习态度和积极性。

2.作业:布置与课程内容相关的作业,评估学生对知识的理解和应用能力。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

银行管理系统1.课程设计的目的应用对数据库系统概论的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。

实践和巩固在课堂教学中学习的关于数据库的有关知识,熟练掌握对于给定结构的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。

实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库银行管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。

2.设计方案论证2.1问题提出银行是一个国家正常运转必不可缺的机构,当今社会,几乎是每个人都会涉及到储蓄业务,为此,为方便用户查询和使用各种业务,可用计算机为工具对查询管理为一体的各种服务。

当然,这样的一个银行储蓄业务系统就应运而生了。

本系统是一个简单的储蓄系统,可以对储户的信息进行查询修改以及删除。

2.2可行性研究2.2.1技术可行性[1]硬件环境: CPU:2.0GH以上内存:2GB以上[2]软件环境: 操作系统:Mecrosoft Windows XP运行环境:SQL Server 2005建模工具:Microsoft Visio,word编辑器2.2.2运行可行性当今社会所有的银行使用计算机数据库来做管理。

我们通过该课程设计,应该达到的目的是把数据库理论知识更加的巩固加深,加强动手能力与实践能力,学以致用,与现实生活中的应用充分的结合起来。

本系统是银行用户的存取款系统。

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

储户填写的存款单或取款单输入系统,如果是存款,则系统记录存款人姓名,住址(或电话号码),身份证号码,存款类型,存款金额,存款日期等信息,并打印存单给储户;如果是取款,则需要输入帐号、取款金额等信息,核对正确后系统打印出清单给储户。

2.3需求分析2.3.1需求分析对于用户部分,能够新建和删除用户,在操作过程中可以更改用户;对于账户部分,可以查询用户的信息,包括各种基本信息、活期余额、定期账单等;对于账户操作部分,有活期存取款、定期存取款操作,另外操作完成之后存储相应的操作记录并能够查询操作记录等功能。

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

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

c 银行储蓄管理系统课程设计一、教学目标本课程旨在让学生了解和掌握银行储蓄管理的基本原理和方法,培养学生运用编程技能解决实际问题的能力。

具体目标如下:1.知识目标:使学生掌握银行储蓄管理的基本概念、业务流程和常用算法;了解编程语言在银行储蓄管理中的应用。

2.技能目标:培养学生使用编程语言进行银行储蓄管理系统的开发和调试;培养学生独立分析问题、解决问题的能力。

3.情感态度价值观目标:培养学生对银行储蓄管理工作的热爱和敬业精神,提高学生对社会金融行业的认识和责任感。

二、教学内容1.银行储蓄管理概述:介绍银行储蓄管理的定义、作用和业务范围。

2.银行储蓄业务流程:讲解银行储蓄业务的各个环节,包括开户、存钱、取钱、转账等。

3.常用算法:介绍在银行储蓄管理中常用的算法,如排序、查找等。

4.编程语言应用:学习编程语言的基本语法,掌握使用编程语言实现银行储蓄管理系统的关键技术。

5.项目实践:以小组为单位,学生自主设计并开发一个简单的银行储蓄管理系统。

三、教学方法1.讲授法:教师讲解银行储蓄管理的基本概念、业务流程和常用算法。

2.案例分析法:分析实际案例,让学生了解编程语言在银行储蓄管理中的应用。

3.实验法:学生动手实践,开发和调试银行储蓄管理系统。

4.讨论法:分组讨论,引导学生独立分析问题、解决问题。

四、教学资源1.教材:选用国内权威出版社出版的银行储蓄管理教材。

2.参考书:推荐学生阅读与银行储蓄管理相关的国内外经典著作。

3.多媒体资料:制作课件、视频等,为学生提供丰富的学习资源。

4.实验设备:为学生提供计算机、网络等实验设备,确保实验教学的顺利进行。

五、教学评估本课程的教学评估将采用多元化的评估方式,以全面、客观、公正地评价学生的学习成果。

评估方式包括:1.平时表现:评估学生在课堂上的参与程度、提问回答等情况,以考察学生的学习态度和积极性。

2.作业:布置课后作业,评估学生的理解和应用能力,以及对银行储蓄管理知识掌握的程度。

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

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

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

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

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

二、系统需求分析(一)功能需求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 问题定义 (3)2 可行性研究 (4)2.1 项目概述 (4)2.2 可行性分析的前提 (4)2.2.1 项目的目标 (4)2.2.2 项目的环境 (5)2.3 可选的方案 (5)2.3.1 方案一 (5)2.3.2 方案二 (5)2.4 所建议的系统 (6)2.4.1 系统说明 (6)2.4.2 系统流程图 (6)2.4.3 高级数据流图 (7)2.5 经济可行性 (8)2.5.1系统开发费用 (8)2.5.2系统运行费用 (9)2.5.3效益 (9)2.6技术可行性 (10)2.7 操作可行性 (10)3 需求分析 (10)3.1 需求概述 (10)3.2 需求模型 (11)3.2.1 数据模型 (11)3.2.2 功能模型 (12)3.2.3 行为模型 (13)3.2.4 数据字典 (15)4 总体设计 (17)4.1 系统体系结构 (17)4.2 模块详细说明 (18)4.3 数据库设计 (19)5 详细设计 (21)5.1 人机界面设计 (21)5.2 过程设计 (26)6 测试 (27)6.1 白盒测试 (27)6.2黑盒测试 (28)7 结论 (29)8参考文献 (30)9 附录 (30)9.1程序代码 (30)1 问题定义账户管理是银行业务流程过程中十分重要且必备的环节之一,在银行业务流程当中起着承上启下的作用,其重要性不言而喻。

可是,当前许多银行在具体的业务流程处理过程中依然使用手工操作的方式来实施,不但费时、费力, 效率低下, 而且无法达到理想的效果。

本文针对上述问题, 采用软件工程的开发原理, 依据软件流程过程规范, 按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个银行账户管理系统。

采用VSC++作为开发工具, 数据库设计遵循3范式, 主要设计了用户基本信息表、用户卡信息表、 ATM 取款机基本信息表、用户银行存款信息表、管理系统的用户口令表、银行系统的用户信息表等数据表。

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

数据库课程设计 银行存储管理系统1
储户(帐号,姓名,密码,身份证号,性 别,帐户余额,开户日期,开户地址)
银行 (编号,活期操作记录,定期操作记 录)
存储(活期存取款,定期存取款,编号, 账号)。
3.银行储蓄管理信息系统的物理结 构设计
该银行储蓄管理信息系统设计了多个数据 库表,列举如下:
1.储户表
表如下
2.银行表
3.存储表
谢谢观看
计科1201 1210014128 文上敏
储户(帐号,姓名,密码,身份证号,性 别,帐户余额,开户日期,开户地址)
银行 (编号,活期操作记录,定期操作记 录)
实体间联系类型有1个。其中联系的属性 如下。
存储(活期存取款,定期存取款,编号, 账号)
2.银行储蓄管理系统的逻辑结构成2个关系模式,另外ER图中有1个 M:N联系,也将转换成1个关系模式
数据库课程设计
银行存储管理系统
数据库设计
1.银行储蓄管理系统的概念结构设计---ER模型
2. 银行储蓄管理系统的逻辑结构设计 3. 银行储蓄管理系统的物理结构设计
1.银行储蓄管理系统的ER模型
某银行设计了储蓄管理信息系统 其ER图如图1 所示。
上述ER图有2个实体类型,其结构如下:

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

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

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

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

二、系统需求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(权限类型)。

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

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

齐齐哈尔大学数据库课程设计报告题目:银行储蓄管理系统班级:计本112姓名:罗娜学号:2011021054指导教师:姜翠霞2013年 12 月 10日银行储蓄管理系统的开发与实现摘要:本课程的设计的目的是通过实践使同学们经历数据库设计开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。

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

本文是基于C++和SQL SERVER 2005开发软件,设计的一个银行储蓄管理系统,软件由客户端程序和服务器端程序构成,主要实现:开户,存取款,修改密码,销户等的数据库操作。

关键字:C++ SQL SERVER 2005 数据库银行储蓄1.概述1.1产品描述本软件实现银行的活期储蓄存款业务。

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

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

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

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

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

1.3主要任务:用户有以下需求:建立用户;建立账户档案,建立账户索引;完成日常交易信息检索、进行存款、转账、取款等工作,对取款、转账等操作,必需进行身份验证。

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

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

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

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

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

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

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

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

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

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

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();}心得体会:这次课程设计体会非常深刻,首先在团队合作方面,我觉得自己作为队长没有两道好我的小队,这是我的失职。

课程设计银行管理系统

课程设计银行管理系统

课程设计银行管理系统一、课程目标知识目标:1. 理解银行管理系统的基础知识,掌握系统架构、功能模块及其操作流程。

2. 学会运用数据库管理基本操作,如建立账户、存取款、查询余额等。

3. 了解银行业务中的风险控制及防范措施,理解系统安全的重要性。

技能目标:1. 能够设计并实现一个简易的银行管理系统,运用所学编程知识完成系统功能。

2. 掌握运用数据库技术进行数据存取和管理,提高实际操作能力。

3. 学会分析实际银行业务问题,提出合理的解决方案。

情感态度价值观目标:1. 培养学生的团队协作精神,提高沟通与协作能力,感受合作的重要性。

2. 增强学生对信息技术的兴趣,激发学习热情,培养主动探索和创新的意识。

3. 强化学生的金融安全意识,树立正确的价值观,关注社会热点问题。

分析课程性质、学生特点和教学要求:1. 课程性质:本课程属于信息技术与金融知识相结合的实践性课程,旨在培养学生的实际操作能力和解决问题的能力。

2. 学生特点:学生具备一定的计算机操作能力和编程基础,对银行业务有一定的了解,但缺乏实际应用经验。

3. 教学要求:结合实际案例,注重理论与实践相结合,充分调动学生的主观能动性,提高学生的动手实践能力。

二、教学内容1. 理论知识:- 银行管理系统概述:介绍银行管理系统的发展、功能模块及系统架构。

- 数据库基础:讲解数据库的基本概念、关系型数据库的原理及SQL语言操作。

- 系统安全与风险控制:分析银行管理系统中的安全风险及防范措施。

2. 实践操作:- 系统设计:学习银行管理系统的需求分析、功能设计、数据库设计等。

- 编程实现:运用所学编程知识,如Java、C#等,实现银行管理系统的基础功能。

- 系统测试与优化:掌握系统测试方法,对实现的系统进行测试并优化。

3. 教学大纲:- 第一周:银行管理系统概述,了解系统发展、功能模块及架构。

- 第二周:数据库基础,学习数据库原理及SQL语言操作。

- 第三周:系统安全与风险控制,分析银行管理系统中的安全问题。

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

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

数据库银行管理系统课程设计一、引言随着金融科技的迅猛发展,数据库银行管理系统已经成为现代银行业务管理的重要组成部分。

本文将从数据库设计、系统功能、安全性和性能等方面进行课程设计,旨在帮助学生深入了解数据库银行管理系统的架构和运行机制。

二、数据库设计1. 数据库架构数据库银行管理系统主要由客户信息数据库、账户信息数据库、交易记录数据库等组成。

客户信息数据库包括客户姓名、身份证号、联系方式等信息;账户信息数据库包括账户号、账户类型、余额等信息;交易记录数据库包括交易时间、交易金额、交易类型等信息。

2. 数据表设计设计客户信息表、账户信息表、交易记录表等数据库表,通过主键和外键建立表之间的关联关系,确保数据的一致性和完整性。

三、系统功能1. 客户管理实现客户信息的增删改查功能,包括客户信息的录入、修改、删除和查询操作,方便银行工作人员对客户信息进行管理。

2. 账户管理实现账户开户、销户、转账等功能,包括账户信息的增删改查操作,确保账户信息的准确性和安全性。

3. 交易管理实现用户之间的转账、存取款等交易功能,记录每笔交易的时间、金额和类型,确保交易记录的完整性和可追溯性。

四、安全性1. 用户身份认证通过用户名和密码进行用户身份认证,确保只有授权用户能够访问数据库银行管理系统的功能。

2. 数据加密对用户的敏感信息进行加密存储和传输,保障用户信息的机密性和安全性。

五、性能优化1. 索引优化为数据库表中的关键字段建立索引,提高数据检索和查询的速度,优化系统的响应性能。

2. 缓存优化利用缓存技术减少数据库的访问次数,提高系统的并发处理能力,优化系统的性能表现。

六、总结通过本次数据库银行管理系统课程设计,学生能够了解现代银行管理系统的设计原理和技术应用,掌握数据库设计、系统功能、安全性和性能优化等方面的知识,为未来的职业发展提供必要的技能和经验。

以上为数据库银行管理系统课程设计内容,希。

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

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

《数据结构》课程设计报告设计题目活期储蓄账目学院名称信息工程学院专业班级13计本1姓名学号000000000000目录一、实验题目—活期储蓄账理-------------------------------二、问题描述-----------------------------------------------三、设计目标-----------------------------------------------四、需求分析-----------------------------------------------五、概要设计-----------------------------------------------1---系统流程图--------------------------------------2--各个模块功能的详细描-------------------------------六、详细设计-----------------------------------------------七、测试分析-----------------------------------------------八、使用说明-----------------------------------------------九、课程设计总结-------------------------------------------一活期储蓄账目管理二问题描述活期储蓄处理中,储蓄开户、销户、存款、取款活动频繁,系统设计要求:•能够比较迅速地找到储户的账户,以实现存款、取款记账;•能比较简单,迅速地插入和删除,以实现开户和销户的需要。

三设计目标编写一个程序,要求该程序可以实现储蓄开户,及储蓄销户。

同时,该程序具有在储蓄账户中实现存款、取款,查看该账户信息的功能。

四需求分析本演示程序用c语言编写,完成银行管理系统的生成,储户开户、销户、存入、支出。

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

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

银行储蓄管理系统c 课程设计一、教学目标本课程的学习目标主要包括知识目标、技能目标和情感态度价值观目标。

通过本课程的学习,学生需要掌握银行储蓄管理系统的相关知识,包括储蓄业务的基本原理、储蓄账户的管理、储蓄业务流程等。

在技能方面,学生需要能够运用C语言进行简单的程序设计,实现银行储蓄管理的基本功能。

在情感态度价值观方面,学生需要培养对银行储蓄管理系统的兴趣,提高对编程和计算机科学的热情,培养良好的编程习惯和团队合作精神。

二、教学内容本课程的教学内容主要包括银行储蓄管理系统的相关知识和C语言编程基础。

首先,学生需要了解储蓄业务的基本原理,包括储蓄账户的开设、存款、取款、转账等业务。

其次,学生需要学习C语言编程基础,包括变量、数据类型、运算符、控制结构等。

然后,学生将运用所学的C语言编程知识,设计和实现一个简单的银行储蓄管理系统,包括账户管理、存款、取款、转账等功能。

最后,学生将对所设计的银行储蓄管理系统进行测试和优化,提高系统的稳定性和效率。

三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法。

首先,讲授法将用于向学生传授银行储蓄管理系统的相关知识和C语言编程基础。

其次,讨论法将用于引导学生进行思考和交流,培养学生的团队合作精神和问题解决能力。

案例分析法将用于分析实际生活中的储蓄业务案例,帮助学生更好地理解和应用所学知识。

实验法将用于让学生通过实际编程和测试,提高编程技能和系统设计能力。

四、教学资源为了支持教学内容和教学方法的实施,本课程将准备多种教学资源。

教材将提供银行储蓄管理系统的基本知识和C语言编程基础的学习材料。

参考书将提供更深入的理论和实践指导。

多媒体资料将用于展示实际储蓄业务案例和编程技巧。

实验设备将用于让学生进行实际编程和系统测试。

此外,还将提供在线编程平台和调试工具,方便学生进行自主学习和交流。

五、教学评估本课程的教学评估将采用多元化的方式,以全面客观地评价学生的学习成果。

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

数据库课程设计--银行储蓄管理系统齐齐哈尔大学数据库课程设计报告题目:银行储蓄管理系统班级:计本112姓名:**学号:**********指导教师:***2013年 12 月 10日银行储蓄管理系统的开发与实现摘要:本课程的设计的目的是通过实践使同学们经历数据库设计开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。

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

本文是基于C++和SQL SERVER 2005开发软件,设计的一个银行储蓄管理系统,软件由客户端程序和服务器端程序构成,主要实现:开户,存取款,修改密码,销户等的数据库操作。

关键字:C++ SQL SERVER 2005 数据库银行储蓄1.概述1.1产品描述本软件实现银行的活期储蓄存款业务。

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

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

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

1.2产品功能模块功能说明客户端程序主菜单取款开户销户余额打印账户明细记录修改密码存款服务器端程序取款开户销户查询修改1.3.用户特点:本软件的最终用户主要面向银行柜台职员。

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

1.3主要任务:用户有以下需求:建立用户;建立账户档案,建立账户索引;完成日常交易信息检索、进行存款、转账、取款等工作,对取款、转账等操作,必需进行身份验证。

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

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

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

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

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

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

2.需求分析1.主菜单功能:输出主菜单(包括开户、存款、取款、查询、转账、修改密码、销户、退出等功能)供操作用户选择,然后根据用户的输入选择进入不同的系统功能界面。

2.开户功能:银行职员在客户端输入开户的基本信息,通过网络传送数据,在服务器处理后显示服务器端的处理结果。

开户成功后打印存折相关信息。

操作结束后返回主菜单界面。

存折的基本信息包括:户名、帐号、开户人电话号码、开户日期等。

3.存款功能:主要有存款金额与存款时间,存款的账号等,供用户来填写数据存款。

5.取款功能:包含取款金额,取款时间等,供用户操作。

6.查询功能:提供查询功能,能够查询用户余额,所得利息,与以往的存取款记录。

7.销户功能:能通过账号与身份等验证来销户,说明销户的日期,方便记录。

8.修改功能:可以通过原密码来改新密码。

3.数据库逻辑设计3.1 将数据库的概念模型转换为关系模型开户(姓名、性别、密码、身份证号码、开户日期、联系电话)存款(账号、存款金额、存款时间)取款(账号、密码、群款金额、取款时间)修改密码(账号、身份证、原密码、新密码)查询(余额、利息、记录)销户(账号、身份证、开户时间、销户时间)3.2 各个功能模块的E-R图(1)开户E-R图(2)销户E-R 图(3)存款E-R 图(4)取款E-R 图存账号密码 存款开户姓名联系密码地身份证销户账号身份证电话(5)查询E-R 图(6)修改E-R 图4.软件功能设计修账号原密新密身份查询余额利息 记录取款账号密码取款引言:接收客户端传送的数据,把数据保存到数据库中,经过服务器段的处理后把处理的结果传回给客户端。

输入:1、接收客户端传送过来的数据。

处理:1、自动生成账户ID,长度5位,从1开始编号,不足补0,例如00009、00103等。

自动生成账户ID要求唯一。

2、账户所有信息将保存数据库的账户信息表中。

3、根据开户金额生成一条账户的存款记录。

输出:1、把服务器端处理的结果返回给客户端。

处理的结果包括开户是否成功,如果开户成功处理的结果中还包含生成的存款记录。

4.2存款功能引言:接收客户端传送的数据,增加账户余额并修改相关的数据库信息,把结果传回给客户端。

输入处理输出1、客户端传送的数据。

1、验证账户ID是否存在。

2、修改对应账户ID的数据库信息。

1、把服务器端处理的结果返回给客户端。

4.3取款功能引言:接收客户端传送的数据,减少账户余额并修改相关的数据库信息,把结果传回给客户端。

输入处理输出1、客户端传送的数据。

1、验证账户ID是否存在。

2、验证密码是否正确。

3、验证余额是否足够。

2、修改对应账户ID的数据库信息。

1、把服务器端处理的结果返回给客户端。

引言:接收客户端传送的数据,查找账户信息,把结果传回给客户端。

输入处理输出1、客户端传送的数据。

1、验证账户ID是否存在。

2、验证密码是否正确。

3、查找对应的账户信息。

1、把服务器端处理的结果返回给客户端。

4.5修改功能引言:接收客户端传送的数据,修改账户密码,把结果传回给客户端。

输入处理输出1、客户端传送的数据。

1、验证账户ID是否存在。

2、验证密码是否正确。

3、查找对应的账户并修改密码。

1、把服务器端处理的结果返回给客户端。

4.6销户功能引言:接收客户端传送的数据,通过公式计算客户账户的利息,注销该客户账户。

把结果传回给客户端。

输入处理输出1、客户端传送的数据。

1、验证账户ID是否存在。

2、验证密码是否正确。

3、计算利息,具体公式如下:利息 = 存款额 * 存款天数 * 年利率 / 360 需要注意的是,账户中的存款额在变化。

4、修改对应账户ID的数据库。

5、删除用户账户,不是做物理删除处理。

1、把服务器端处理的结果返回给客户端。

4.7功能需求1.主菜单功能:输出主菜单(包括开户、存款、取款、查询、转账、修改密码、销户、退出等功能)供操作用户选择,然后根据用户的输入选择进入不同的系统功能界面。

2.开户功能:银行职员在客户端输入开户的基本信息,通过网络传送数据,在服务器处理后显示服务器端的处理结果。

开户成功后打印存折相关信息。

操作结束后返回主菜单界面。

存折的基本信息包括:户名、帐号、开户人电话号码、开户日期等。

3.存款功能:主要有存款金额与存款时间,存款的账号等,供用户来填写数据存款。

5.取款功能:包含取款金额,取款时间等,供用户操作。

6.查询功能:提供查询功能,能够查询用户余额,所得利息,与以往的存取款记录。

7.销户功能:能通过账号与身份等验证来销户,说明销户的日期,方便记录。

8.修改功能:可以通过原密码来改新密码。

5. 界面设计1、主菜单界面:开户、销户、取款、存款、查询、修改、选择、提交2、开户界面:姓名、身份证号、电话、住址、密码、提交3、销户界面:姓名、身份证号、电话、确认销户4、取款界面:卡号、密码、取款金额、提交5、存款界面:卡号、密码、存款金额、提交6、修改界面:姓名、身份证号、原密码、新密码、提交6.结束语首先要自我检讨一下,说实话,这个系统没有做好,还有很多地方都存在着不足甚至错误,毕竟基础知识学的不是很扎实,再者,时间也比较仓促。

的确,以我现在的水平用来做系统还做不完善,所以,这次自己的尝试虽然不算太成功,但毕竟自己用心了,只希望下次可以有机会做得更好!这次的课程设计,我选择做银行储蓄系统,主要是觉得这个比较简单看起来。

不过,在做课程设计的时候,也学了比较多的知识,恶补了很多以前的功课。

最开始时,面对这样一些题目,平时也没怎么对课本学的精的我当时就懵了,所以只有临时抱佛脚,在网上查阅了大量的资料。

说实话,以前上数据库课,一开始完全像听天书一样,虽然考前进行了紧锣密鼓的备考,但仅仅也只是冰山一角。

不过后来慢慢的逐渐了解多了,做课程设计的过程就是对书本知识巩固、贯通和实践运用的过程,从中学到的东西也是数不胜数。

从这次设计中,我体会到了实际的工作与书本上的知识是有一定距离的,并且还需要进一步的再学习。

要想做好一个数据库,没有一定的底子是完全不够的。

这次说来很惭愧,因为好多资料都是从网上找的,自己写的一些其实还有错,但由于时间的关系,也就没来得及改正了,如果以后还有这样的机会的话,我想我一定会把它做好,做精。

总的来说,这次课程设计对我来说受益匪浅。

7.参考文献1. 王珊,萨师煊,数据库系统概论(第四版).北京:高等教育出版社,20062.数据库系统概念 Abraham Silberschatz等机械工业出版社3. 数据库应用系统开发技术刘军等机械工业出版社4. 数据库系统概论杨开英武汉理工大学出版社。

相关文档
最新文档