1、数据库原理及应用课程设计文档分析基于数据库的ATM机存取款系统数据库原理及应用课程设计文档学 号 姓 名 专业班级指导教师日 期 1概述数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效的存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。SQL数据库的安全性、计算机系统的三类安全性问题1.所谓计算机系统安全性,是指为计算机系统建立和采用的各种安全保护措施,以保护计算机系统中的硬件、软件、及数据,防止其偶然或恶意的原因是系统遭到破坏,数据遭到更改或泄露等。2.技术安全:计算机系统中采用具有一定安全性的
2、硬件、软件来实现对计算机系统及其所存数据的安全保护,当计算机系统受到无意或恶意的攻击时仍能保证系统正常运行,保证系统内的数据不增加、不丢失、不泄露。3.管理安全:由于管理不善导致的计算机设备和数据介质的物理破坏、丢失等软硬件意外故障以及场地的意外事故等安全问题。4.政策法律:政府部门建立的有关计算机犯罪、数据安全保密的法律准则和政策法规、法令。 、数据库安全性控制 1.用户标识与鉴别:用户标识、口令。 2.存取控制:定义用户权限,并将用户权限登记到数据字典中、合法权限检查。1.1课程设计目标为用户和各种应用系统提供一个信息基础设施和高效率的运行环境SQL数据库的实际应用、SQL包括了所有对数据
3、库的操作,主要是由4个部分组成: 1.数据定义:这一部分又称为“SQL DDL”,定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引4部分。 2.数据操纵:这一部分又称为“SQL DML”,其中包括数据查询和数据更新两大类操作,其中数据更新又包括插入、删除和更新三种操作。 3.数据控制:对用户访问数据的控制有基本表和视图的授权、完整性规则的描述,事务控制语句等。 4.嵌入式SQL语言的使用规定:规定SQL语句在宿主语言的程序中使用的规则。、在如今的互联网系统中 主要存在B-S模式和C-S模式,B-S模式指的是浏览器服务器模式,C-S模式指的是客户服务器模式。两者的相同部分就是SERVER
4、服务器,SERVER服务器是指的专用计算机,它拥有大容量存储设备和高性能计算功能,用于存储复杂的用户数据,这些复杂臃繁的数据以关系模型存储也就是二维表的形式存储,各二维表之间以相同的字段形成联系,这样存储的好处是具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。在这些专用计算机运行着位于用户与操作系统之间的一层数据管理软件。数据库管理系统和操作系统一样是计算机的基础软件,也是一个大型复杂的软件系统,其主要功能包括数据定义,数据组织、存储和管理,数据操纵功能,数据库的事务管理和运行管理,DBMS与另一个DBMS或文件系统的数据转换功能,异构数据库之间的互访和互操作功能等。而数据库
5、系统是指的在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。1.2课程设计要求使用SqlServer2005 和java语言等技术完成ATM存取款系统,具体要求如下:1. 能从信息需求,处理需求,安全性等方面对系统进行需要分析,并能分析出系统的功能模块 2 能从需要分析里抽象出系统中主要的实体及关联关系,并画出对应的E-R图3. 能从E-R图里抽象出系统的数据库表,并对数据库表用规范化理论优化并评价, 使得所有数据库表最低达到第三范式4. 设计并实现ATM机登录, 存款, 取款, 转账以及查看余额功能,系统设计要实用,编程简练、规范,可
6、用,功能全面5. 提交系统使用说明书1.3 项目人员分工姓名组员分工AA数据库的建立以及辅助组员完成各个模块(参与数据库设计的讨论)BB数据库转账、取款及修改密码存储过程的编写及前后台的链接(参与数据库设计的讨论)CC文档的实现及数据库中表的建立(参与数据库设计讨论)DD前台界面的设计及实现(参与数据库设计的讨论)XXPPT的制作及存款和查询存储过程的实现(参与数据库设计的讨论)FXX数据库中表约束及表关系的建立(参与数据库设计的讨论)1.4 参考资料数据库系统概论 (第四版) 高等教育出版社JAVA2实用教程 (第四版) 清华教育出版社Sql Server2000管理与应用开发教程 人民邮电
7、出版社 2 系统分析和设计2.1开发背景 ATM机管理系统是银行业务流程过程中十分重要且必备的环节之一,在银行业务流程当中起着承上启下的作用,其重要性不言而喻。但是,目前许多银行在具体的一些业务流程处理过程中仍然使用手工操作的方式来实施,不仅费时、费力,效率低下,而且无法达到理想的效果。本文针对上述问题,采用软件工程的开发原理,依据软件流程过程规范,按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个银行ATM机管理系统系统。2.2需求分析1.数据库设计:对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有
8、效地存储和管理数据,满足各个用户的应用需求,包括信息管理要求和数据操作要求。2.数据库设计的特点:数据库建设的基本规律:“三分技术,七分管理,十二分基础数据”;机构(数据)设计和行为(处理)设计相结合。3.数据库设计方法:计算机的基础知识,软件工程的原理和方法,程序设计的方法和技巧,数据库的基本知识,数据库设计技术,应用领域知识。4.数据库设计的基本步骤:需求分析,概念结构设计,逻辑结构设计,物理结构设计,数据库实施,数据库运行和维护。4)SQL作为后台数据库与前台开发工具的结合 前台开发工具用于做前台页面,设计出可视化的图形界面,使不同权限的用户都便于操作整个系统。而前台页面与后台数据库连接
9、最关键的地方则在于SQL语句。各种开发语言都提供了其连接数据库的类,通过这些类的相应方法实现连接数据库、对数据源的各种操作,包括查询、插入、删除、更新操作、返回操作结果等。当点击图形界面相应的控件时,通过监听触发产生相应的SQL语句,然后执行SQL语句将返回的结构显示在图形界面上。5)SQL查询命令的应用SQL提供select语句进行数据库的查询,该语句具有灵活的使用方式和丰富的功能。分为:1.单表查询2.连接查询3.嵌套查询4.集合查询。6)SQL在VB、ASP或其他自选语言中的实际应用数据库安全性分析 1.用户标识与鉴别:用户标识、口令。 2.存取分析:定义用户权限,合法权限检查。2.3系
10、统总体结构系统的模块划分为如图所示,分别为:用户登录、ATM机存款、ATM机取款、ATM机查询余额、ATM转账功能(chat)5个模块。每个模块负责相应的功能。系统采用JAVA技术实现对数据库的访问操作,使用SQL Server 2005作为后台数据库。1 用户登录模块提供用户账号登录界面,输入用户账号,密码进行登录。2 ATM机存款模块ATM机取款模块3数据库结构设计3.1 数据流图3.2 数据库E-R图数据库逻辑设计3.3.1用户表用户表(用户编号,姓名,密码,身份证号,性别,地址,电话) 字段名数据类型长度约束能否为空默认值用户编号int主键否姓名nvarchar50否性别nchar2否
11、男身份证号nvarchar50否电话varchar50否地址nvarchar 50否3.3.2银行卡表银行卡信息(Account)(卡号,密码,货币类型,存款类型,开户日期,开户金额,余额,是否挂失,顾客编号) 字段名数据类型长度约束能否为空默认值卡号varchar20主键否密码varchar6否货币类型varchar20否RMB存款类型varchar2否活期开户日期timestamp否系统时间开户金额double否0余额Double否0是否挂失varchar2否0(正常)顾客编号varchar20外键是3.3.3交易记录表交易记录表(交易编码,卡号,目标卡号,操作类型号,时间,备注) 字段名
12、数据类型长度约束能否为空默认值交易编号int主键否卡号nvarchar50否目标卡号nvarchar50否操作类型号int否时间nchar10否系统时间备注nvarchar 50是3.3.4管理员表管理员信息(管理员编号,姓名,类型号,操作类型) 字段名数据类型长度约束能否为空默认值管理员编号integer主键否姓名varchar20否类型号int否操作类型nvarchar50否总结:以上数据库表结构逻辑设计满足表结构三大范式,设计出合理的关系型数据库表结构,应用环境和现实世界的具体情况合理地选择数据库模式4 实施4.1项目运行环境描述前台JAVA (Myeclipse)后台数据库(Sql s
13、ever 2005)4.2 主要功能实现代码存储过程主代码:创建用户USE ATMGO/* Object: StoredProcedure dbo.create_user Script Date: 12/30/2013 12:22:14 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER proc dbo.create_usertime nvarchar(50),IDcard nvarchar(50),name nvarchar(50),password nvarchar(50),person_card nvarchar(50),sex i
14、nt,money float,address nvarchar(50),tel nvarchar(50)asinsert 用户表 values(IDcard,name,password,person_card,sex,money,address,tel)insert 交易记录 values(IDcard,IDcard,4,time)return 1登陆USE ATMGO/* Object: StoredProcedure dbo.log_in Script Date: 12/30/2013 12:23:44 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER
15、ONGOALTER PROCEDURE dbo.log_inidcard nvarchar(50), code nvarchar(50),passflag int OUTPUTASDECLARE num intSET num=0SELECT num=COUNT(*) FROM 用户表 where idcard=卡号 AND code=密码IF (num0)BEGIN SET passflag=1 ENDELSEBEGIN SET passflag=0 END查询USE ATMGO/* Object: StoredProcedure dbo.quary Script Date: 12/30/20
16、13 12:24:23 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER procedure dbo.quaryIDcard nvarchar(50)as select * from 用户表 where 卡号=IDcard存款USE ATMGO/* Object: StoredProcedure dbo.savemoney Script Date: 12/30/2013 12:24:53 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER procedure dbo.savemoney
17、( savemoney float, IDcard nvarchar(50), time nvarchar(50) )as begin transaction declare errorsum int set errorsum=0 update 用户表 set 余额=余额+savemoney where 卡号=IDcard set errorsum=errorsum+ERROR insert into 交易记录 values(IDcard,IDcard,2,time) set errorsum=errorsum+ERROR if (errorsum0) begin -print 交易失败,回滚
18、事务 rollback transaction return -1 end else begin -print交易成功,提交事务,写入硬盘,永久的保存 commit transaction return 1 end -print查看存款后的余额 select *from 用户表 取款USE ATMGO/* Object: StoredProcedure dbo.take_money Script Date: 12/30/2013 12:25:14 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER proc dbo.take_money -
19、output_value nvarchar(50)OUTPUT, intput_money float, input_src_id nvarchar(50), input_aim_id nvarchar(50), savemoney float, time nvarchar(50)as begin transaction declare errorsum int set errorsum=0 declare temp nvarchar(50) declare select_money nvarchar(50) select temp=卡号 from 用户表 where 卡号=input_aim
20、_id if(temp is not null) begin select select_money=余额 from 用户表 where 卡号=input_src_id if(select_money=intput_money) begin update 用户表 set 余额=余额-intput_money where 卡号=input_src_id set errorsum=errorsum+ERROR insert into 交易记录 values(input_src_id,input_aim_id,2,time) set errorsum=errorsum+ERROR end else
21、begin set errorsum=errorsum+1 -print余额不足 end end else begin -print 用户不存在,交易失败,回滚事务 return 0 end if errorsum0 begin -set output_value=交易失败,回滚事务 rollback transaction return -1 end else begin -set output_value=交易成功,提交事务,写入硬盘,永久的保存 -print交易成功,提交事务,写入硬盘,永久的保存 commit transaction return 1 end-print查看转账后的余额
22、-select *from 用户表转账USE ATMGO/* Object: StoredProcedure dbo.trans_money Script Date: 12/30/2013 12:25:33 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER proc dbo.trans_money intput_money float, input_src_id nvarchar(50), input_aim_id nvarchar(50), savemoney float, time nvarchar(50)as begin trans
23、action declare errorsum int set errorsum=0 declare select_money nvarchar(50) select select_money=余额 from 用户表 where 卡号=input_src_id if(select_money=intput_money) begin update 用户表 set 余额=余额-intput_money where 卡号=input_src_id set errorsum=errorsum+ERROR update 用户表 set 余额=余额+intput_money where 卡号=input_
24、aim_id set errorsum=errorsum+ERROR insert into 交易记录 values(input_src_id,input_aim_id,3,time) set errorsum=errorsum+ERROR end else begin return 0 -print余额不足 end if errorsum0 begin -print 交易失败,回滚事务 rollback transaction return -1 end else begin -print交易成功,提交事务,写入硬盘,永久的保存 commit transaction return 1 end
25、-print查看转账后的余额-select *from 用户表修改密码USE ATMGO/* Object: StoredProcedure dbo.update_password Script Date: 12/30/2013 12:25:52 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER proc dbo.update_passwordpassword nvarchar(50),IDcard nvarchar(50)asupdate 用户表 set 密码=password where 卡号=Idcardjava登陆代码:packa
26、gebankPack;importjava.awt.Image;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.MouseAdapter;importjava.awt.event.MouseEvent;importjava.sql.SQLException;importjavax.swing.ImageIcon;importjavax.swing.JButton;importjavax.swing.JLabel;importjavax.swing.JOptionP
27、ane;importjavax.swing.JPasswordField;importjavax.swing.JTextField;importjavax.swing.WindowConstants;importjavax.swing.SwingUtilities;importjavax.swing.border.LineBorder;importbankImpl.BankDao;importbankentity.UserTbl;/* This code was edited or generated using CloudGardensJigloo* SWT/Swing GUI Builder, which is free for non-commercial* use. If Jigloo is being used commercially (ie, by a corporation,* company or business for any purpose whatever) then you* should purchase a license for each developer using Jigloo.* Please visit for detail
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1