-!吉首大学张家界学院《数据库系统概念》课程设计题目学号学生姓名院系专业指导教师-!二O一六年月日学生选课系统的设计一、绪论1.1目的和意义银行管理系统:该系统要求建立的用户表并不是很多,完成的功能也相对有限,但其中各个表之间的联系很紧密,该系统对数据库表的设计要求会很高,所以完成这个题目,能更好的训练数据库设计和VC的编程能力,选择该题目就是充分训练数据库表设计的能力和运用VC的能力。1.2内容和要求用户管理模块:建立新用户、删除老用户、更改用户操作;账户操作模块:账户信息、活期存取款操作、查询活期操作纪录、定期存款、定期取款、查询定期操作纪录;数据库模块:数据库备份、数据库恢复;二、需求分析2.1系统用户对于用户部分,能够新建和删除用户,在操作过程中可以更改用户;对于账户部分,可以查询用户的信息,包括各种基本信息、活期余额、定期账单等;对于账户操作部分,有活期存取款、-!定期存取款操作,另外操作完成之后存储相应的操作纪录并能够查询操作纪录等功能。银行帐目管理系统包括五个模块,分别为系统选项、帐目管理、查询统计、用户查询和帮助。2.2系统主要功能帐目管理模块:主要处理用户的日常操作。(1)开户:新建一个帐户,为其指定一个唯一的帐号来标志该用户(2)销户:将指定用户的帐号删除。用户输入密码经过验证成功后,把帐户的余额全部取出,最后删除该帐户。(3)存款:向指定的帐户中存入一笔钱,经用户输入密码确认后,方可存入。(4)取款:从指定的帐户中取出一笔钱。取款前用户需要输入密码确认,取款后帐户余额不得少于帐户的最低存款额,否则不予处理。(5)修改信息:选择一个存在的帐户,然后输入密码经确认后进入用户信息窗口,可对里面的密码、联系电话和家庭住址进行修改,而帐号和帐户上的金额不能被用户修改。查询模块:按照指定方式进行查找帐户信息,包括按姓名、帐号和联系电话进行查找,也可以按照地址进行模糊查找。统计模块:对银行的数据进行统计,如对帐户数量的统计。其系统功能模块如图2-1:图2-1系统功能模块-!2.3开发技术开发工具:MYSQL开发语言:SQL开发技术:数据库开发技术面向对象:需求者MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle旗下产品。MySQL最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。本实验将设计出一个银行账目管理数据库系统,其要求简要如下:三、概念结构设计本章节主要包含概念设计、E-R图,以及如何将E-R图转换为实际的物理模型等内容。3.1概念设计在我们的数据库系统中共有5个实体:储户、活期存取款、定期存款、定期取款、定期记录。(1)储户的属性:账号、姓名、密码、身份证号、性别、账户余额、开户日期、开户地址(2)活期存取款的属性:账号、金额、类型、办理日期、利息、账户余额(3)定期存款的属性:账号、存款人姓名、金额、存储年份、年利率、存储日期(4)定期取款的属性:账号、取款人姓名、取款金额、取款日期(5)定期记录的属性:账号、存取款人姓名、类型、操作金额、操作日期3.2E-R图-!图1银行基本信息实体图图2储户基本信息实体图图3定期记录基本信息实体图合并画出数据库系统的E-R图,如图3-7所示:图3-7数据库系统E-R图-!四、逻辑结构设计4.1逻辑转换根据3.2节中的E-R图可以将系统中的概念模型转换为具体的表(即关系)结构,共分为7个关系,详细信息如下所示:(1)储户(账号、姓名、密码、身份证号、性别、账户余额、开户日期、开户地址)(2)活期存取款(账号、金额、类型、办理日期、利息、账户余额)(3)定期存款(账号、存款人姓名、金额、存储年份、年利率、存储日期)(4)定期取款的(账号、取款人姓名、取款金额、取款日期)(5)定期记录(账号、存取款人姓名、类型、操作金额、操作日期)4.2细化表结构为方便,根据上述文字描述,用英文简写为表和列取名,确定列的数据类型及必要的约束规则,给出如下所示数据库表的基本结构及说明:(1)储户表列名字段描述数据类型约束CNo账号varchar(20)主码CName开户人姓名varchar(20)notnull,CPassword登录密码char(6)NotnullCID身份证号varchar(20)notnull,CSex性别char(2)notnullCBalance账户余额Float(8)notnull,CDate开户日期Datetime(8)notnull,CAddress开户地址varchar(30)notnull,(2)活期存取款表列名说明数据类型约束nID序号int(4)主码CNo账号varchar(20)notnullCMoney操作金额Float(8)notnullCStyle操作类型varchar(10)notnull”CDate操作日期Datetime(8)notnullCInterest利息Float(8)notnullCBalance账户余额Float(8)notnull,(3)定期存款表列名说明数据类型约束-!nID序号int(4)主码CNo账号varchar(20)notnullCName存款人姓名varchar(20)notnull,CMoney存款金额Float(8)notnullCDate存款日期Datetime(8)notnullCYear存储年份int(4)notnullCRate存储利率Float(8)notnull(4)定期取款表列名说明数据类型约束nID序号int(4)主码CNo账号varchar(20)notnullCName取款人姓名varchar(20)notnull,CMoney取款金额Float(8)notnullCDate取款日期Datetime(8)notnull(6)定期操作记录表列名说明数据类型约束nID序号Int(4)主码CNo帐号Varchar(20)notnullCName存取款人姓名Float(8)notnullCStyle操作类型char(4)notnulCMoneyfloat8float(8)notnulCYear存储年份Int(4)notnulCDate存取款日期Datetime(8)notnul五、数据库实施本章节主要包含创建表、添加数据和创建必要的视图、触发器和存储过程等内容。5.1创建表提高查询速度,分别为各表经常查询的列建立索引。(1)为chuhu(储户表)中的cno属性建立唯一索引cno:CREATEUNIQUEINDEXcno_indexonchuhutable(cno);(2)为Hcq(活期存取款表)中nid属性建立唯一索引nid:CREATEUNIQUEINDEXnid_indexONHcq(nid);-!(3)为dqcun(定期存款表)中nid属性建立降序唯一索引niddesc:CREATEUNIQUEINDEXniddescONdqcun(niddesc);(4)为dqqu(定期取款表)中nid属性建立升序唯一索引nidasc:CREATEUNIQUEINDEXnidascONdqqu(nidasc);(5)为dqjilu(定期记录表)中nid属性建立降序唯一索引niddesc:CREATEUNIQUEINDEXniddescONdqjilun(niddesc);数据的载入是一个非常繁杂和重要的过程需要很大的工作量,可分为人工输入与其它格式数据文件导入。该系统只是一个简单的实验系统,所以采用手工输入少量的数据可满足实验要求即可。分别给储户基本信息表,活期存取款基本信息表,定期存款基本信息表,定期取款基本信息表和定期操作记录基本信息表输入数据。下面若干个表分别显示了所要求的表基本信息息的录入和显示的结果(1)创建储户表Createtablechuhu(CNointprimarykey,CNamechar(20)notnull,CPasswordintnotnull,CIDintnotnull,CAddresschar(20)notnull,CBalanceintnotnull,CDatedatetimenotnull,CSexchar(2)notnull,)-!图5利用查询编辑器创建储户信息表图6储户信息表(2)创建活期存取款表CreatetableHcq(nIDintprimarykey,CNointnotnull,CMoneyintnotnull,CBalanceintnotnull,CDatedatetimenotnull,CInterestintnotnull,-!)图7利用查询编辑器创建活期存取款表-!图8利用查询编辑器插入活期存取款用户表-!图8利用查询编辑器查询活期存取款用户表图8活期存取款表(3)创建定期存款表Createtabledqcun(nIDintprimarykey,CNointnotnull,CNamechar(10)notnull,CMoneyintnotnull,Cratefloatnotnull,CYearintnotnull,CDatedatetimenotnull,)-!图9利用查询编辑器创建定期存款表-!图10定期存款表(4)创建定期取款表Createtabledqqu(nIDintprimarykey,CNointnotnull,CDatedatetimenotnull,CMoneyintnotnull,CNamechar(20)notnull,)-!图11利用查询编辑器创建定期取款表-!图12定期取款表(5)定期操作记录表Createtabledqjilu(nIDintprimarykey,CNointnotnull,CDatedatetimenotnull,CStylechar(4)notnull,CMoneyintnotnull,CNamechar(8)notnull,)-!图13利用查询编辑器创建定期操作记录表-!图14定期操作记录表)5.2创建必要视图(1)储户表的视图-!-!图15储户表的视图(2)活期存取款表的视图-!图16活期存取款表的视图(3)定期存款表的视图-!-!图17定期存款表的视图(4)定期取款表的视图-!图18定期取款表的视图(5)定期操作记录的视图-!图19定期操作记录的视图5.3设计结果及分析(1)查询储户姓名为朱咏江的用户的信息结果为:-!图20查询储户姓名为王刚的用户的信息(2)查询操作金额为大于500元用户的帐号结果为:-!图21查询操作金额为85000元用户的帐号(3)查询定期存取款表中序号为1的用户的名字结果为:-!图22查询定期存取款表中序号为1的用户的名字(4)为储户表插入一条数据(5,张朋,123456,0000006,湖北,64,2016-12-0100:00:00,男)的信息结果为:-!图23为储户表插入一条数据信息(5)创建角色u1并将对储户表查询,插入的功能赋给角色zyj2CREATEUSER'zyj2'@'localhost'IDENTIFIEDBY'123456';GRANTSELECT,INSERTONbank.chuhuTO'zyj2'@'localhost';结果为:-!.图24创建角色u1并将对储户表查询,修改和插入的功能赋给角色u1(6)收回角色u1储户表修改的功能REVOKESELECTONbank.chuhuFROM'zyj'@'%';结果为:图25收回角色u1储户表修改的功能(7)删除角色u1DROPUSER'zyj'@'localhost';结果为:-!图26删除角色u1(8)建立触发器,当向储户表插入新信息后,打印出又添加了一个供应商信息字样结果为:-!图27建立触发器(9)创建查看一个储户的基本信息的存储过程结果为:图28创建存储过程六、总结-!这次银行管理系统课程设计,我主要采用是mysql数据库设计软件。通过这次课程设计,加深了我对课程设计的理解。通过这次数据库课程设计,真正达到了学与用的结