数据库课程设计报告银行管理系统
银行管理系统课程设计报告
《数据库原理》 课程设计报告题 目: 银行存储管理系统____________专业班级:计算机与信息工程系11 (1)班 学生姓名 : ______________ 唐益田 _______________ 学号:1108010129 ___________________指导教师: __________________ 陈磊 ______________ 设计周数:2周 _____________设计成绩 : ______________________________________学号2013-2014学年第一学期计算机与信息工程系2013年12月16日目录1 概述 (2)2 需求与功能分析 . (2)3 概要设计 . (2)4 数据库设计 . (4)5关键技术实现 . (7)6数据库安全性控制 . (17)7总结与展望 (17)参考文献. (18)1概述现今的社会,资金流动十分频繁。
不单单是企业、产商,个人也不例外。
银行作为一个金融机构,在现代人们的生活中扮演着极其重要的角色。
为生活节奏飞快的现代人提供快速、便捷、高效的理财服务。
伴随着电脑技术的发展,各大银行的储蓄管理系统也随之出现在这一舞台之上。
这次的数据库课程设计我以这一应用环境为背景,应用数据库原理课程所学的数据库设计与关系数据理论,结合实际的操作和设计进行设计。
目标是制定一套合理、有效,规范和实用的银行管理系统,对银行信息进行集中统一的管理。
提高银行工作效率,做到信息的规范管理,科学统计和快速查询。
这次课程设计我所应用的开发环境是windows7,开发工具是SQL2008所制作数据库在window2000以上操作系统都可以正常运行。
2需求与功能分析银行储存管理系统要求每一个银行管理者都有一个系统帐号,并且每一个帐号都有密码,系统对用户的添加、管理、存款添加都有管理者执行,而不是由存储用户自己执行。
该系统主要有两部分业务内容:存款与取款。
银行管理系统课程设计报告
银行管理系统课程设计报告山西大学计算机与信息技术学院《数据库系统》课程设计论文题目:银行管理系统数据库设计组长高祥专业软件工程班级软件工程4班授课教师庞继芳银行管理系统数据库设计学生姓名:高祥2011242255韩凯2011242259董玉精2011242251郭筱晖2011242258(按照贡献大小排序)授课教师:庞继芳内容提要在计算机技术和网络技术没有得到全面普及以前,各企业和行政单位,在办工时,都要记录大量的数据,这些数据还要保存到文档里,不仅消耗大量的脑力,还要占据大量的空间。
特别是银行工作人员在办理各项业务时,不仅要需要大量的计算和统计,而且需要数据准确、精密。
所以,工作人员在处理业务时,容易出现不可避免的错误。
随着计算机技术和网络技术的快速发展,电脑和INTERNET进入了个行政企业,甚至平常家庭。
因此,编写一个处理银行定期管理的应用系统是很有必要的。
进行计算机计算和管理储户信息,银行存款等各项数据。
避免人类因疲惫或者其他原因造成的错误工作。
关键字:存款;取款;余额;账号;密码。
目的与要求通过数据库课程设计,进一步掌握数据库系统的理论和方法。
培养和锻炼开发管理信息系统的能力,为今后信息系统开发打下良好的基础。
本课程环节主要针对《关系数据库基础与应用》这门课程进行设计,数据库是一门应用性很强的专业课,在学习时必须注意理论与实践相结合。
本次课程环节旨在培养学生在本课程范围内,初步掌握解决实际应用问题时所应具备的查阅资料、综合运用所学知识的能力,为毕业设计及今后从事专业工作打下基础。
本课程环节要求学生了解企业管理信息系统后台数据库的设计、配置过程,掌握管理信息系统的开发方法。
主要包括:需求分析、数据分析、系统逻辑模型设计方法;功能设计、物理模型设计方法;系统的实现等方法。
完成一个小型系统后台数据库的设计与配置。
一.需求分析1.项目概述1.1产品描述本软件实现银行的活期储蓄存款业务。
整套软件由客户端程序和服务器端程序构成,客户端运行在面向个人业务的银行柜台的电脑上,银行职员输入相关信息并通过网络通讯向服务器发送请求,并接受服务器端程序的应答显示处理的结果。
数据库课程设计报告-银行储蓄管理系统数据库设计[2018年整理]
数据库原理及应用课程设计报告组号:小组成员:学院:专业班级:指导老师:2017/1/10目录第1章概述 (1)1.1设计题目: (1)1.2要求完成的主要任务: (1)第2章需求分析 (6)2.1定义 (6)2.2需求规格说明概览 (6)2.3产品的一般性描述 (7)2.4产品功能 (7)2.5用户特征 (7)2.6功能划分 (7)2.7用户界面 (8)2.8可维护性 (9)2.9可理解性 (9)2.10可移植性 (9)第3章数据库表结构图 (9)3.1实体联系图 (10)3.2程序流程图 (10)第4章功能与实现 (11)4.1客户端登录功能 (11)4.2客户端主界面功能 (12)4.3客户端开户功能 (12)4.4客户端存款功能 (13)4.5客户端取款功能 (13)4.6客户端转账功能 (14)4.7客户端余额查询功能 (14)4.8客户端修改密码功能 (14)4.9客户端销户功能 (15)4.10服务器端用户注册功能 (15)4.11服务器端修改用户登密码功能 (15)第5章实现及测试 (16)5.1系统开发环境 (16)5.2主要功能模块的实现及测试 (16)5.2.1数据表的建立 (16)5.2.2数据库连接与数据提供 (16)第6章总结 (17)第7章参考文献 (17)第1章概述本软件实现银行的活期储蓄存款业务。
整套软件由客户端程序和服务器端程序构成,客户端运行在面向个人业务的银行柜台的电脑上,银行职员输入相关信息并通过网络通讯向服务器发送请求,并接受服务器端程序的应答显示处理的结果。
服务器端处理客户端的各种业务请求。
主要实现银行开户、销户、取款、存款、余额查询、转账、修改密码、打印账户明细记录等功能。
1.1 设计题目:题目:银行储蓄管理系统数据库设计本课程的设计的目的是通过实践使同学们经历数据库设计开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。
结合具体的开发案例,理解并初步掌握系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作能力。
数据库原理课程设计银行储蓄管理系统
目录一、需求与功能分析 1二、系统总体框架 2三、逻辑设计 2四、类的设计与分析 4五、数据库表结构设计 8六、特色算法分析 8七、功能测试 9八、存在的不足与对策 12九、程序源代码 12银行储蓄管理系统一银行储蓄系统需求分析系统功能简介:信息系统:主要是在里面输入用户信息(户名,帐号,开户日期)主要功能:记录用户所要进行的各种存取操作(存钱,取钱),并对操作数据做好记录记录时间:主要是记录每个用户开户,存取,取钱的日期相关金额:该用户的存款金额,取款金额,执行操作后账户余额保存系统:可以以连接数据库模式保存查询过的内容,对于刚刚查询过的内容不必重复登陆工作环境:该程序可用在各种银行性质的单位,能有效管理用户信息。
方便,快捷,容易上手,安全保密,资料齐整构造该程序,主要是使用C++ & SQL系统。
在MS-DOS以及WINDOWS95以上的操作系统上可以正常运行。
现今的社会,资金流动十分频繁。
不单单是企业、厂商,连个人也不例外。
银行作为一个金融机构,在现代人们的生活中扮演着及其重要的角色。
为生活节奏飞快的现代人提供快速、便捷、高效理财服务,是每一个银行机构的共同职责。
伴随着电脑技术的发展,各大银行储蓄管理软件也随之出现在这一舞台之上。
银行储蓄管理程序的主要功能就是记录用户的账户信息,已经对用户的存取款操作作好记录及数据更新。
银行储蓄管理的特点是数据量大。
数据更新频繁。
因此便捷的操作,数据更新准确度,成了这一系统的主要指标。
二系统总框图三逻辑设计任何建模语言都以静态建模机制为基础,标准建模语言UML也不例外。
所谓静态建模是指对象之间通过属性互相联系,而这些关系不随时间而转移。
类和对象的建模,是UML建模的基础。
面向对象的开发方法的基本任务是建立对象模型,是软件系统开发的基础。
UML中的对象类图表达了对象模型的静态结构,能够有效地建立专业领域的计算机系统对象模型。
图1 系统类图动态模型主要描述系统的动态行为和控制结构。
银行管理系统数据库设计
银行管理系统数据库设计引言银行管理系统是一种用于存储与管理银行数据的计算机系统,通常由一个后端数据库和一个前端用户界面组成。
数据库连接了所有的用户信息、交易、账户余额和其他相关信息,尤其是在现代银行业中具有极其重要的作用。
因此,设计一个高效的、安全的银行管理系统数据库至关重要。
数据库架构设计银行管理系统数据库的架构设计应该围绕着确保数据安全和数据访问性能进行。
我们设计的数据库架构应该保证:- 可靠性:即使在系统遇到故障时也可以确保银行数据不会丢失。
可靠性:即使在系统遇到故障时也可以确保银行数据不会丢失。
- 高性能:数据库与银行的业务应该相互匹配,以确保较快的响应时间。
高性能:数据库与银行的业务应该相互匹配,以确保较快的响应时间。
- 数据安全:银行管理系统中有很多敏感信息,这些信息必须得到保护。
数据安全:银行管理系统中有很多敏感信息,这些信息必须得到保护。
我们建议采用以下3个数据库组件:1. 用户管理数据库用户管理数据库用于存储所有银行用户的个人信息,包括姓名、地址、电子邮件地址、电话号码等。
这个数据库应该是一个关系型数据库,可以方便地添加、更新、删除用户信息。
用户也可以通过银行的网站或应用程序访问他们的个人信息。
我们建议使用MySQL数据库来实现这个组件,因为它是一种健壮、开放源代码的关系型数据库管理系统。
2. 交易管理数据库交易管理数据库应该用于存储所有银行账户上的交易信息。
每次交易都应该包括转账方、收账方、金额和日期等信息。
这个数据库应该是一个高性能的非关系型数据库。
我们建议使用NoSQL数据库来实现这个组件,因为它可以处理大量的非结构化数据。
3. 账户管理数据库账户管理数据库用于存储所有银行账户的余额和其他相关信息。
这个数据库应该是一个关系型数据库,可以方便地添加、更新、删除账户信息。
我们建议使用Oracle数据库来实现这个组件,因为它是一种能够处理大量事务和复杂查询的关系型数据库管理系统。
数据库课程设计实验报告-银行账户管理系统
数据库课程设计报告题目: 银行账户管理系统院系名称: 计算机学院专业名称: 软件工程班级: 09级01班学生姓名: ***学号(8位): *******指导教师: ***设计起止时间:2011年12月19日~2011年12月30日一. 设计目的银行账户管理是银行业务流程中十分重要的且必备的环节,由于银行有大量数据需要处理,全部采用人工方式明显不现实:这不仅需要花费很高的成本,而且处理事务的效率和质量都存在很大的问题,出于这些问题的考虑,使用计算机来处理这类问题就成为一个相当理想的方案。
利用计算机可以极大地降低成本,更重要的是可以几乎没有错误地高效地处理所有的事务,所以做一款基于银行账户管理方面的系统是十分必要的。
本次课程设计通过对《银行账户管理系统》中银行业务流程的基本实现以及用户环节的事务处理,旨在体验数据库设计和实现的基本过程中掌握数据库模式的设计、分析和实现方法,了解数据库应用系统软件开发的一般过程。
二. 设计内容分别完成银行业务功能、ATM功能和用户管理功能,并设计数据库以支持这些功能的实现,最后通过代码进行具体实现以及数据库链接。
所用数据库:SQL Server 2008开发语言:Java数据库设计:使用了六张表,分别为:管理员表(admin)、ATM机表(ATM)、ATM 机出纳表(ATMOutIn)、银行柜台出纳表(BankOutIn)、银行卡表(card)、用户表(users)。
三个触发器,分别为:冻结用户账号操作(userstatus_update)、ATM机存取款操作(ATMOutIn_insert)和银行存取款操作(BankOutIn_insert)。
一个视图、一个虚表:用户操作查询(allInfo(userId,cunquTime,cunquAddress,cunquMoney,cunquSummary,balanceMoney))。
银行业务功能:设置管理员账号,赋予管理员权限以实现开户、销户、存款、取款、查询、办卡和挂失功能。
银行管理系统数据库
吉首大学张家界学院《数据库系统概念》课程设计题目学号学生姓名院系专业指导教师二O一六年月日学生选课系统的设计一、绪论1.1 目的和意义银行管理系统:该系统要求建立的用户表并不是很多,完成的功能也相对有限,但其中各个表之间的联系很紧密,该系统对数据库表的设计要求会很高,所以完成这个题目,能更好的训练数据库设计和VC的编程能力,选择该题目就是充分训练数据库表设计的能力和运用VC的能力。
1.2 内容和要求用户管理模块:建立新用户、删除老用户、更改用户操作;账户操作模块:账户信息、活期存取款操作、查询活期操作纪录、定期存款、定期取款、查询定期操作纪录;数据库模块:数据库备份、数据库恢复;二、需求分析2.1系统用户对于用户部分,能够新建和删除用户,在操作过程中可以更改用户;对于账户部分,可以查询用户的信息,包括各种基本信息、活期余额、定期账单等;对于账户操作部分,有活期存取款、定期存取款操作,另外操作完成之后存储相应的操作纪录并能够查询操作纪录等功能。
银行帐目管理系统包括五个模块,分别为系统选项、帐目管理、查询统计、用户查询和帮助。
2.2系统主要功能帐目管理模块:主要处理用户的日常操作。
(1)开户:新建一个帐户,为其指定一个唯一的帐号来标志该用户(2)销户:将指定用户的帐号删除。
用户输入密码经过验证成功后,把帐户的余额全部取出,最后删除该帐户。
(3)存款:向指定的帐户中存入一笔钱,经用户输入密码确认后,方可存入。
(4)取款:从指定的帐户中取出一笔钱。
取款前用户需要输入密码确认,取款后帐户余额不得少于帐户的最低存款额,否则不予处理。
(5)修改信息:选择一个存在的帐户,然后输入密码经确认后进入用户信息窗口,可对里面的密码、联系电话和家庭住址进行修改,而帐号和帐户上的金额不能被用户修改。
查询模块:按照指定方式进行查找帐户信息,包括按姓名、帐号和联系电话进行查找,也可以按照地址进行模糊查找。
统计模块:对银行的数据进行统计,如对帐户数量的统计。
数据库 课程设计 报告(基于ODBC的银行管理系统)
数据库课程设计报告姓名:X X院系:XXXXXXX班级:XXXXX学号:XXXXXXXXXX实习时间:XXXXXXXXXX指导老师:XXXXXXX目录(一)需求分析: (2)(二)开发步骤: (2)一、准备数据库,创建数据源 (2)(1)设计数据库 (3)(2)数据库的管理及更新语句 (4)(3)定义ODBC的数据源 (5)(4)定义用户DSN的步骤 (5)二、创建MFC AppWizard应用程序 (8)(1)用MFC AppWizard(exe)创建应用程序Bank (8)(2)用ClassWizard为数据库的表映射记录集类 (8)(3)界面的设计与实现 (8)(4)为每一个对话框新建一个对话框类 (12)(5)对话框控件属性,关联变量和消息处理函数 (12)三、各个功能调用关系图 (19)四、主要函数实现源代码 (20)(1)主对话框的初始化与各个按钮函数实现 (20)(2)登录对话框的实现 (21)(3)存款对话框的实现 (23)(4)查询及取款对话框的实现 (32)五、最终效果截图 (35)(三)用户手册: (39)(四)心得体会: (40)题目:基于ODBC 的银行管理系统(一)需求分析:银行与我们的生活息息相关,我们的生活离不开银行,一个好的银行管理系统,不仅能实现最基本的功能,而且还有很多需要注意的地方,比如说安全性,多线程等等。
本案例是一个简单的银行管理系统,用来管理银行的基本信息。
管理员登录以后,可以编辑银行信息、编辑客户信息、编辑贷款信息和编辑存款信息,在进行编辑的过程中可以对有关信息进行添加、删除、修改和查询等操作。
而当银行的客户登录以后,只能进行查询自己的基本信息、存款信息、贷款信息和取款操作。
(二)开发步骤:一、准备数据库,创建数据源 在创建数据库的应用程序之前,必须有一个可供应用程序使用的数据库。
银行企业的E-R 图accoount branch customer loan depositor Loan- branch account-branch borrower account-number customer-id customer-name customer-city loan-number cmountcustomer-street(1)设计数据库数据库表与表之间的关系构成了一个数据库。
数据库课设---银行管理系统
数据库技术与开发——银行数据库系统专业:计算机科学与技术姓名:***班级:10计算机2班学号:**********指导老师:***内蒙古科技大学课程设计任务书一.课程设计目的 (4)二.课程设计的具体要求 (4)三.题目简介,收集有关数据 (4)四.各个关系图 (6)五.逻辑数据库设计 (6)1.关系模型 (6)2表结构: (7)六.数据库实现 (12)1.建立数据库: (12)2.建立表: (12)七.简单查询 (19)1单表查询 (19)2多表连接查询 (20)3分组查询 (20)4统计查询 (21)5更新 (21)八.存储过程 (22)九.事物 (23)十.游标 (26)十一.触发器 (28)一.课程设计目的1、培养学生运用所学课程《数据库原理及应用》的理论知识和技能以及对数据库组织、管理和使用能力。
2、掌握数据库应用系统的整个设计过程(包括需求分析、概念结构设计、逻辑结构设计与物理设计与实施)二.课程设计的具体要求1.从附录一中选择一个题目进行数据库应用系统设计。
2.功能设计:用Visual FoxPro,Visual Basic、PB等开发工具与数据库管理系统SQL-SEVER 或Access制作一个小型管理系统。
所设计的小型管理系统应包含输入输出、查询、插入、删除等基本功能。
设计课题可以从候选的项目中选出,根据题目的基本需求,画出流程图,编写程序,并写出详细的设计说明书。
(实际系统的实现为可选项,必须有功能设计)3.数据库的设计:根据数据库应用系统设计过程,通过需求分析和系统分析,进行数据库的概念结构设计、逻辑结构设计等工作:概念结构设计的E-R图数据库逻辑结构设计是以表格的形式说明数据库中有几个表,每个表的表名以及每个表的各字段名,类型和约束(主、外码);确定表之间的关联(一对一、一对多、多对多)运用数据库理论确定每个表至少属于3NF。
三.题目简介,收集有关数据设计题目:银行数据库我们试图以商业银行的三大业务(负债业务、资产业务、中间业务与表外业务)为基点;重点讨论他所需要的三大方面数据商业银行的业务三大类:负债业务;资产业务;中间业务与表外业务。
银行管理系统课程设计报告
银行管理系统课程设计报告山西大学计算机与信息技术学院《数据库系统》课程设计论文题目:银行管理系统数据库设计组长高祥专业软件工程班级软件工程4班授课教师庞继芳银行管理系统数据库设计学生姓名:高祥 242255韩凯 242259董玉精 242251郭筱晖 242258(按照贡献大小排序)授课教师:庞继芳内容提要在计算机技术和网络技术没有得到全面普及以前,各企业和行政单位,在办工时,都要记录大量的数据,这些数据还要保存到文档里,不但消耗大量的脑力,还要占据大量的空间。
特别是银行工作人员在办理各项业务时,不但要需要大量的计算和统计,而且需要数据准确、精密。
因此,工作人员在处理业务时,容易出现不可避免的错误。
随着计算机技术和网络技术的快速发展,电脑和INTERNET进入了个行政企业,甚至平常家庭。
因此,编写一个处理银行定期管理的应用系统是很有必要的。
进行计算机计算和管理储户信息,银行存款等各项数据。
避免人类因疲惫或者其它原因造成的错误工作。
关键字:存款;取款;余额;账号;密码。
目的与要求经过数据库课程设计,进一步掌握数据库系统的理论和方法。
培养和锻炼开发管理信息系统的能力,为今后信息系统开发打下良好的基础。
本课程环节主要针对《关系数据库基础与应用》这门课程进行设计,数据库是一门应用性很强的专业课,在学习时必须注意理论与实践相结合。
本次课程环节旨在培养学生在本课程范围内,初步掌握解决实际应用问题时所应具备的查阅资料、综合运用所学知识的能力,为毕业设计及今后从事专业工作打下基础。
本课程环节要求学生了解企业管理信息系统后台数据库的设计、配置过程,掌握管理信息系统的开发方法。
主要包括:需求分析、数据分析、系统逻辑模型设计方法;功能设计、物理模型设计方法;系统的实现等方法。
完成一个小型系统后台数据库的设计与配置。
一.需求分析1.项目概述1.1产品描述本软件实现银行的活期储蓄存款业务。
整套软件由客户端程序和服务器端程序构成,客户端运行在面向个人业务的银行柜台的电脑上,银行职员输入相关信息并经过网络通讯向服务器发送请求,并接受服务器端程序的应答显示处理的结果。
数据库课程设计报告银行管理系统
目录1绪论1.1 选题目的及意义 (2)1.2 设计内容 (2)2需求分析2.1 功能需求 (2)2.2 数据需求 (2)3数据库设计3.1概念结构设计 (7)3.2逻辑结构设计 (9)3.3物理结构设计 (11)4.设计结果及分析4.1查询与结果分析 (24)5.设计体会 (29)参考文献参与设计人员:姓名学号班级负责项目陈盛业20114419 信管(2)需求分析李宁20114432 信管(2)数据库设计、分析向绍鹏20114462 信管(2)绪论、设计体会阳治安20114466 信管(2)数据库设计、分析1.1选题的目的及意义银行管理系统:该系统要求建立的用户表并不是很多,完成的功能也相对有限,但其中各个表之间的联系很紧密,该系统对数据库表的设计要求会很高,所以完成这个题目,能更好的训练数据库设计和VC的编程能力,选择该题目就是充分训练数据库表设计的能力和运用VC的能力。
1.2 设计内容用户管理模块:建立新用户、删除老用户、更改用户操作;账户操作模块:账户信息、活期存取款操作、查询活期操作记录、定期存款、定期取款、查询定期操作记录;数据库模块:数据库备份、数据库恢复;2需求分析2.1功能需求对于用户部分,能够新建和删除用户,在操作过程中可以更改用户;对于账户部分,可以查询用户的信息,包括各种基本信息、活期余额、定期账单等;对于账户操作部分,有活期存取款、定期存取款操作,另外操作完成之后存储相应的操作记录并能够查询操作记录等功能。
2.2数据需求2.21数据字典银行管理系统数据流图中,数据信息和处理过程需要通过数据字典才能描述清楚。
在定义的银行数据库管理系统数据字典中,主要对数据流图中的账户信息定期历史操作记录定期存款定期取款活期操作进行说明。
【1】数据需求的描述(1)数据项名称:帐号含义说明:惟一标识一个用户类型:数字型长度:20逻辑关系:不允许为空(2)数据项名称:开户人姓名类型:字符型长度:20逻辑关系:不允许为空(3)数据项名称:账户密码类型:数字型长度:6逻辑关系:不允许为空(4)数据项名称:身分证号类型:数字型长度:20逻辑关系:不允许为空(5)数据项名称:账户余额类型:数字型逻辑关系:不允许为空(6)数据项名称:开户日期类型:数字型逻辑关系:不允许为空(7)数据项名称:开户地址类型:字符型长度:30逻辑关系:不允许为空(8)数据项名称:利息类型:数字型逻辑关系:不允许为空(9)数据项名称:金额含义说明:可以表示为存入和支出类型:数字型逻辑关系:不允许为空(10)数据项名称:存入日期类型:数字型逻辑关系:不允许为空(11)数据项名称:存款人姓名类型:字符型长度:10逻辑关系:不允许为空(12) 数据项名称:存储年份类型:数字型逻辑关系:不允许为空(13) 数据项名称:存储利率类型:float型逻辑关系:不允许为空(14)数据项名称:取款人姓名类型:字符型长度:10逻辑关系:不允许为空【2】.数据结构的描述(1)数据名字:注册申请表数据来源:储户数据目的:储户信息数据组成:姓名+密码+住址+身份证号码(2)数据名字:储户信息表数据来源:储户数据目的:身份验证数据组成:姓名+密码+住址+身份证号码+现有金额(3)数据名字:利息清单数据来源:系统数据目的:储户数据组成:利息+姓名+取款时间(4)数据名字:存单数据来源:存款信息表数据目的:储户数据组成:姓名+到期时间+存入类型+存入时间+利率+存入金额(5)数据名字:取款单数据来源:储户数据目的:取款信息表数据组成:姓名+到期时间+存入类型+存入时间+利率+取款金额+身份证号(6)数据名字:存款单数据来源:储户数据目的:存款信息表数据组成:姓名+到期时间+存入类型+存入时间+利率+存入金额+身份证号【3】. 数据存储描述(1)数据存储名称:储户基本表含义说明:存放储户的有关信息组成结构:储户信息包括账号,姓名,密码,身份证号,性别,帐户余额,开户日期,开户地址。
银行管理系统-数据库
中南大学数据库课程设计报告院系:信息科学与工程学院专业:计算机科学班级: 1104班学号: 0909112124姓名:指导教师:张健2015年 1月20 日一、任务概述本次课程设计要求设计并实现一个虚拟的银行业务与管理系统。
该系统包含两大模块,即由银行内部工作人员使用的银行服务模块与系统管理模块。
银行服务与管理模块采用C/S模式开发,前端开发平台不限,后台数据库要求采用SQL SERVER2000或Oracle 9i以上版本。
二、课程设计任务要求1.2.1银行服务模块该模块仅供银行内部工作人员使用,需提供以下功能:1)创建新账号。
根据客户填写的开户单创建新的账号,并保留客户基本资料,如姓名、地址、联系电话、证件类型、证件号码等。
账号有不同种类,如储蓄账号和信用卡账号,其中信用卡账号不具备储蓄功能,但是可以透支一定额度。
储蓄账号可储蓄不同币种、不同类型的存款,包括活期和定期。
定期存款的时间长度限定为:三个月、半年、一年、两年、三年和五年。
一个储蓄账号中可对应多笔定期存款。
开设新储蓄账号时,最低存款额为10元。
2)设置或修改账号密码。
密码由用户输入,输入界面显示掩码。
3)账号挂失。
4)取消账号。
5)存款。
存款时需记录操作员编号、存款额、期限、存款时间等信息。
对定期存款,可指定是否要自动转存。
6)取款。
取款时需记录操作员编号、取款额、取款时间等信息。
7)计算利息。
存款利率可随时间变化。
活期存款在每季度末月20日自动结算利息,或在取消账号时结算利息。
定期存款利率采用存款当时的利率,自动转存的,每转存一次,均按转存日的利率计算下一个存期的利息。
利息加入本金,并计算复利。
8)转账。
支持活期账号间的转账操作。
对信用卡账号,系统根据客户的偿还能力和信誉度设定一个透支额度。
以每月为单位进行结算,客户当月消费总额不能超过透支额度。
结算完毕后,向客户发出结算单,如果客户在规定期限内没有还款,则采取收取滞纳金或收回信用卡的措施。
数据库课程设计报告——银行管理系统
金额
float
*
银行卡
9
透支功能
Bool(bit)
*
银行卡
10
透支额度
int
*
银行卡
11
贷款额度
int
*
银行卡
12
转账号
int
*
转账
13
转向卡号
int
*
转账
14
转账金额
int
*
转账
15
手续费
float
*
转账
16
转账利率
float
*
转账
17
贷款号
int
*
贷款
18
贷款金额
int
*
贷款
19
贷款日期
datetime
透支
1.2.3数据库概念结构设计(E-R模型)
、
SQL关系截图:
二.整体设计
1.1选用程序语言
本系统是用C#语言,选用这个语言的原因有以下几点:
1.C#与C/C++具有极大的相似性,我们之前认真学习过C语言和c++语言,c#是这两个语言的高效率版本,更易于上手。
2.C#语言完美支持.NET平台,可以在Microsoft .NET平台上事半功倍的构建应用程序的扩展框架(即与数据库的连接非常易于实现,对数据可以直接进行操作。)
透支(卡号,透支金额,透支号,透支开始时间,透支还清时间)
1.2.2数据项具体设置
编号
标识符
类型
长度
所属表名
1
用户名
nchar
10
用户,银行卡
2
密码
int
数据库课程设计 银行储蓄管理系统
《数据库系统概论》课程设计报告设计题目:银行储蓄管理系统姓名:学号:班级:设计起止时间:需求分析:在对软件工程相关知识学习之后,我们对设计软件有了基本的认识和一些应用技能。
在数据库的课程设计中,我们计划做一个小型的银行储蓄管理系统,包括了基本的存取转,和管理员对日常工作的管理功能。
功能设计:(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.账户存取明细数据包括:日期、摘要(现存、现支、转存、利息)、交易金额、余额、操作柜员编号。
3.检索系统能根据户名、账号、交易日期、金额等进行查询。
4.取款输入账号和密码后,能根据密码判断用户是否合法,能判断取款金额是否超过了账户余额,如果取款金额合法,就对该账号的余额信息进行更新。
5、存款输入账号和存款金额后,能更新该账号的余额。
6、转账输入账号和密码后,能根据密码判断用户是否合法,然后再输入对方的转账账户,并判断对方的转账账户是否合法,如果合法,再输入转账的金额,并能判断转账金额是否超过了账户余额,如果转账金额合法,就对该账号的余额信息以及对方的账户余额信息进行更新。
设计报告撰写格式要求:要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。
设计报告正文字数不少于0.2万字(不包括附录)第1级(章)题序和题名用黑体三号字,第2级(目)题序和题名用黑体小四号字,第3级(条)题序和题名用黑体小四号字,正文内容用宋体五号字(英文用新罗马体),多倍行距1.25。
关于银行系统的数据库课程设计
目录一、目的与意义 (1)二、设计内容与要求 (1)三、设计原理 (1)1、数据库基本操作: (1)Ⅰ、定义基本表 (1)Ⅱ、修改基本表 (1)III、删除基本表 (2)IV、数据查询 (2)V、插入元组 (2)VI、修改数据 (2)VII、删除数据 (2)2、数据库完整性 (3)I、实体完整性定义 (3)II、参照完整性定义 (3)3、触发器 (3)I、定义触发器 (3)II、激活触发器 (4)III、删除触发器 (4)4、存储过程 (4)I、PL/SQL的块结构 (4)II、变量常量的定义 (4)III、控制结构 (5)IV、存储过程的用户接口 (5)四、总体设计方案 (6)五、详细设计 (6)1、需求分析 (6)2、流程图 (6)3、E-R图 (7)4、设计表 (7)5、关系图 (8)6、编码 (8)六、测试与调试 (11)七、收获与体会 (15)八、主要参考资料 (15)一、目的与意义本课程设计是在学完《数据库系统与应用》课程之后,让学生综合应用数据库知识,设计数据库,进行调试与测试,以加深对数据库基本知识及SQL语言的理解,提高综合应用知识的能力、分析解决问题的能力,加强数据库知识的实践技能,初步培养开发实用数据库系统的能力。
二、设计内容与要求设计一个银行账户管理系统,至少能够实现存款、取款、查询、转账等基本功能,要求在在数据库实现过程中至少建立三张表、不得少于四个查询、三个触发器、使用至少一个存储过程。
三、设计原理SQL是一种介于关系代数与关系演算之间的结构化查询语言,其功能并不仅仅是查询。
SQL是一个通用的、功能极强的关系数据库语言。
它之所以能够为用户和业界所接受,并成为国际标准,是因为它是一个综合的、功能极强同时又简捷易学的语言。
SQL语言集数据查询(Data Query)、数据操纵(Data Manipulation)、数据定义(Data Definition)和数据控制(Data Control)功能于一体。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录1绪论1.1 选题目的及意义 (2)1.2 设计内容 (2)2需求分析2.1 功能需求 (2)2.2 数据需求 (2)3数据库设计3.1概念结构设计 (7)3.2逻辑结构设计 (9)3.3物理结构设计 (11)4.设计结果及分析4.1查询与结果分析 (24)5.设计体会 (29)参考文献参与设计人员:姓名学号班级负责项目陈盛业20114419 信管(2)需求分析李宁20114432 信管(2)数据库设计、分析向绍鹏20114462 信管(2)绪论、设计体会阳治安20114466 信管(2)数据库设计、分析1.1选题的目的及意义银行管理系统:该系统要求建立的用户表并不是很多,完成的功能也相对有限,但其中各个表之间的联系很紧密,该系统对数据库表的设计要求会很高,所以完成这个题目,能更好的训练数据库设计和VC的编程能力,选择该题目就是充分训练数据库表设计的能力和运用VC的能力。
1.2 设计内容用户管理模块:建立新用户、删除老用户、更改用户操作;账户操作模块:账户信息、活期存取款操作、查询活期操作记录、定期存款、定期取款、查询定期操作记录;数据库模块:数据库备份、数据库恢复;2需求分析2.1功能需求对于用户部分,能够新建和删除用户,在操作过程中可以更改用户;对于账户部分,可以查询用户的信息,包括各种基本信息、活期余额、定期账单等;对于账户操作部分,有活期存取款、定期存取款操作,另外操作完成之后存储相应的操作记录并能够查询操作记录等功能。
2.2数据需求2.21数据字典银行管理系统数据流图中,数据信息和处理过程需要通过数据字典才能描述清楚。
在定义的银行数据库管理系统数据字典中,主要对数据流图中的账户信息定期历史操作记录定期存款定期取款活期操作进行说明。
【1】数据需求的描述(1)数据项名称:帐号含义说明:惟一标识一个用户类型:数字型长度:20逻辑关系:不允许为空(2)数据项名称:开户人姓名类型:字符型长度:20逻辑关系:不允许为空(3)数据项名称:账户密码类型:数字型长度:6逻辑关系:不允许为空(4)数据项名称:身分证号类型:数字型长度:20逻辑关系:不允许为空(5)数据项名称:账户余额类型:数字型逻辑关系:不允许为空(6)数据项名称:开户日期类型:数字型逻辑关系:不允许为空(7)数据项名称:开户地址类型:字符型长度:30逻辑关系:不允许为空(8)数据项名称:利息类型:数字型逻辑关系:不允许为空(9)数据项名称:金额含义说明:可以表示为存入和支出类型:数字型逻辑关系:不允许为空(10)数据项名称:存入日期类型:数字型逻辑关系:不允许为空(11)数据项名称:存款人姓名类型:字符型长度:10逻辑关系:不允许为空(12) 数据项名称:存储年份类型:数字型逻辑关系:不允许为空(13) 数据项名称:存储利率类型:float型逻辑关系:不允许为空(14)数据项名称:取款人姓名类型:字符型长度:10逻辑关系:不允许为空【2】.数据结构的描述(1)数据名字:注册申请表数据来源:储户数据目的:储户信息数据组成:姓名+密码+住址+身份证号码(2)数据名字:储户信息表数据来源:储户数据目的:身份验证数据组成:姓名+密码+住址+身份证号码+现有金额(3)数据名字:利息清单数据来源:系统数据目的:储户数据组成:利息+姓名+取款时间(4)数据名字:存单数据来源:存款信息表数据目的:储户数据组成:姓名+到期时间+存入类型+存入时间+利率+存入金额(5)数据名字:取款单数据来源:储户数据目的:取款信息表数据组成:姓名+到期时间+存入类型+存入时间+利率+取款金额+身份证号(6)数据名字:存款单数据来源:储户数据目的:存款信息表数据组成:姓名+到期时间+存入类型+存入时间+利率+存入金额+身份证号【3】. 数据存储描述(1)数据存储名称:储户基本表含义说明:存放储户的有关信息组成结构:储户信息包括账号,姓名,密码,身份证号,性别,帐户余额,开户日期,开户地址。
说明:储户帐号具有惟一性和非空性。
(2)数据存储名称:活期存取款表含义说明:存放活期存取款的信息组成结构:活期存取款包括帐号,金额,办理日期,利息,账户余额;说明:帐号具有惟一性和非空性.(3)数据存储名称:定期存款表;含义说明:存放定期存款的信息组成结构:帐号,存款人姓名,金额,存储年份,年利率,存储日期说明:帐号,存储日期,存储年份,年利率具有惟一性和非空性. (4)数据存储名称:定期取款表; 含义说明:存放定期取款的信息组成结构:帐号,取款人姓名,取款金额,取款日期. 说明:帐号,取款人姓名,取款日期具有惟一性和非空性. (5)数据存储名称:定期记录表 含义说明:存放定期存取款的信息组成结构:帐号,存取款人姓名,操作金额,年份,操作日期 说明:帐号,操作日期具有惟一性和非空性.3. 数据库设计3.1概念结构设计图1银行基本信息实体图 图2储户基本信息实体图图3定期记录基本信息实体图图4 合并部分视图生成E-R图3.2 逻辑结构设计3.2.1 E-R图向关系模型的转换(1)一个1:1联系可转换为一个独立的关系模式,可以与任意一端对应的关系模式合并;(2)一个1:n联系可以转换为独立的关系模式,也可以与n端对应的关系模式合并;(3)一个m:n联系转换为一个关系模式。
与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分;将实体转化为关系模式。
由E-R 图转换成关系模式储户(帐号,姓名,密码,身份证号,性别,帐户余额,开户日期,开户地址);活期存取款(nID,帐号,金额,办理日期,利息,账户余额);定期存款(nID,帐号,存款人姓名,金额,存储年份,年利率,存储日期);定期取款(nID,帐号,取款人姓名,取款金额,取款日期);定期记录(nID,帐号,存取款人姓名,操作金额,操作类型,操作日期)3.2.2判断每个表分别属于第几范式(1)由储户表(姓名,账号,密码,身份证号,性别,帐户余额,开户日期,开户地址)写出数据依赖:储户姓名→身份证号,储户姓名→账号,储户姓名→地址该表中的各个元组都不可再分、并且无部分函数依赖和传递函数依赖、主码都是候选码,所以该表满足BCNF范式。
(2)由活期存取款表(序号,利息,帐号,金额,办理日期,账户余额);写出数据依赖:利息→帐号,利息→办理日期,利息→金额该表中的每个元组都不可再分、并且无部分函数依赖和传递函数依赖、主码都是候选码,所以该表也满足BCNF范式。
(3)由定期存款表 (序号,年利率,帐号,存款人姓名,金额,存储年份,存储日期)写出数据依赖:年利率→存储年份,年利率→存储日期,该表中每个元组都不可再分并且无部分函数依赖和传递函数依赖、主码都是候选码,所以该表同样满足BCNF范式。
(4)由定期取款表 (序号,取款人姓名,帐号,取款金额,取款日期)写出数据依赖:取款人姓名→帐号该表中各个元组都不可再分同样无部分函数依赖和传递函数依赖并且主码都是候选码,所以该表同样满足BCNF范式。
(5)由定期记录表(序号,存取款人姓名,帐号,操作金额,操作类型,操作日期)写出数据依赖:存取款人姓名→帐号储户(帐号,姓名,密码,身份证号,性别,帐户余额,开户日期,开户地址);活期存取款(nID,帐号,金额,类型,办理日期,利息,账户余额);定期存款(nID,帐号,存款人姓名,金额,存储年份,年利率,存储日期);定期取款(nID,帐号,取款人姓名,取款金额,取款日期);定期记录(nID,帐号,存取款人姓名,类型,操作金额,年份,操作日期)3.3 物理结构设计储户表主键:帐号;约束条件:各属性均非空,密码长度为6位;活期存取款表主键:nID;外键:帐号;被参照表:储户表约束条件:各属性均非空;定期存款表主键:nID;外键:帐号;被参照表:储户表约束条件:各属性均非空;定期取款表主键:nID;外键:nID;被参照表:定期存款表约束条件:各属性非空定期操作记录表主键:nID;外键:nID;被参照表:定期存款表,定期取款表约束条件:各属性非空3.4创建基本表提高查询速度,分别为各表经常查询的列建立索引。
(1)为chuhu(储户表)中的cno属性建立唯一索引cno:CREATE UNIQUE INDEX cno_index on chuhutable(cno);(2)为Hcq(活期存取款表)中nid属性建立唯一索引nid:CREATE UNIQUE INDEX nid_index ON Hcq(nid);(3)为dqcun (定期存款表)中nid属性建立降序唯一索引niddesc:CREATE UNIQUE INDEX niddesc ON dqcun(nid desc); (4)为dqqu (定期取款表)中nid属性建立升序唯一索引nidasc:CREATE UNIQUE INDEX nidasc ON dqqu(nid asc);(5)为dqjilu (定期记录表)中nid属性建立降序唯一索引niddesc:CREATE UNIQUE INDEX niddesc ON dqjilu n (nid desc);数据的载入是一个非常繁杂和重要的过程需要很大的工作量,可分为人工输入与其它格式数据文件导入。
该系统只是一个简单的实验系统,所以采用手工输入少量的数据可满足实验要求即可。
分别给储户基本信息表,活期存取款基本信息表,定期存款基本信息表,定期取款基本信息表和定期操作记录基本信息表输入数据。
下面若干个表分别显示了所要求的表基本信息息的录入和显示的结果(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定期操作记录表3.4.1为系统创建视图(1)储户表的视图图15 储户表的视图(2)活期存取款表的视图图16活期存取款表的视图(3)定期存款表的视图图17 定期存款表的视图(4)定期取款表的视图图18 定期取款表的视图(5)定期操作记录的视图图19 定期操作记录的视图4.设计结果及分析4.1 查询与结果分析(1)查询储户姓名为王刚的用户的信息结果为:图20查询储户姓名为王刚的用户的信息(2)查询操作金额为85000元用户的帐号结果为:图21查询操作金额为85000元用户的帐号(3)查询定期存取款表中序号为1的用户的名字结果为:图22查询定期存取款表中序号为1的用户的名字(4)为储户表插入一条数据(10012365,张朋,000236,31426003017,鞍山,64,2003-12-20,男)的信息结果为:图23为储户表插入一条数据信息(5)创建角色u1并将对储户表查询,修改和插入的功能赋给角色u1create 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创建存储过程5.设计体会这次银行管理系统课程设计,我主要采用是Microsoft SQLSevere2005数据库设计软件。