银行储蓄管理数据库课程设计报告_夏冬
数据库原理课程设计银行储蓄管理系统
目录一、需求与功能分析 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. 数据库设计:在需求分析的基础上,我们需要设计出合适的数据库结构。
银行储蓄管理系统数据库设计(总23页)
银行储蓄管理系统数据库设计(总23页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除课程设计报告书课程名称:《数据库系统原理》课程设计题目:银行储蓄管理系统数据库设计系名:信息工程系专业班级:姓名:学号: 1指导教师:2012年 6 月 29日课程设计任务书学生姓名:专业班级:指导教师:工作单位:信息工程系设计题目:银行储蓄管理系统数据库设计初始条件:本课程的设计的目的是通过实践使同学们经历数据库设计开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。
结合具体的开发案例,理解并初步掌握系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作能力。
要求完成的主要任务:要求学生根据所学的数据库原理与程序设计的知识,能够针对一个小型的银行储蓄管理系统,进行数据库系统的需求分析,概念结构设计、逻辑结构设计、物理结构设计,数据录入及测试等,完成题目要求的功能。
主要任务:用户有以下需求:建立用户;建立账户档案,建立账户索引;完成日常交易信息检索、进行存款、转账、取款等工作,对取款、转账等操作,必需进行身份验证。
具体要求如下:1.存折信息数据包括:存折的基本信息包括:户名、帐号、开户银行名称、开户日期、取款密码等。
2.账户存取明细数据包括:日期、摘要(现存、现支、转存、利息)、交易金额、余额、操作柜员编号。
3.检索系统能根据户名、账号、交易日期、金额等进行查询。
4.取款输入账号和密码后,能根据密码判断用户是否合法,能判断取款金额是否超过了账户余额,如果取款金额合法,就对该账号的余额信息进行更新。
5、存款输入账号和存款金额后,能更新该账号的余额。
6、转账输入账号和密码后,能根据密码判断用户是否合法,然后再输入对方的转账账户,并判断对方的转账账户是否合法,如果合法,再输入转账的金额,并能判断转账金额是否超过了账户余额,如果转账金额合法,就对该账号的余额信息以及对方的账户余额信息进行更新。
数据库课程设计 银行储蓄管理系统
《数据库系统概论》课程设计报告设计题目:银行储蓄管理系统姓名:学号:班级:设计起止时间:需求分析:在对软件工程相关知识学习之后,我们对设计软件有了基本的认识和一些应用技能。
在数据库的课程设计中,我们计划做一个小型的银行储蓄管理系统,包括了基本的存取转,和管理员对日常工作的管理功能。
功能设计:(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.学习银行储蓄管理系统的常见功能和操作方法。
4.能够运用银行储蓄管理系统进行账户管理、交易处理和报表生成。
5.熟悉银行储蓄管理系统在日常银行业务中的应用。
三、课程大纲1. 银行储蓄管理系统简介•银行储蓄管理系统定义•银行储蓄管理系统的重要性•银行储蓄管理系统的分类和功能2. 银行储蓄管理系统的基本原理•银行储蓄管理系统的组成结构•数据存储和管理原理•系统安全和权限控制3. 银行储蓄管理系统的常见功能•客户信息管理•账户管理和资金调拨•交易处理和结算•报表生成和分析4. 银行储蓄管理系统的操作方法•登录系统和权限设置•客户信息录入和修改•账户开立和关闭•交易处理和查询•报表生成和导出5. 银行储蓄管理系统的应用案例•日常存取款操作•贷款和利息计算•资金清算和风险控制•报表分析和经营决策支持四、教学方法本课程将采用讲授理论知识、案例分析和实际操作相结合的教学方法。
学生将通过课堂授课、实验操作和作业练习等方式,逐步掌握银行储蓄管理系统的相关知识和技能。
五、评估方式学生将通过课堂参与、实验报告、作业考核和综合考试等方式进行评估。
其中,实验操作和项目练习将占据较大比重,以考察学生对银行储蓄管理系统的实际应用能力。
六、参考资料1.《银行信息管理系统概论》2.《银行电子商务技术与应用》3.《金融信息系统案例分析》以上为银行储蓄管理系统课程设计的大致框架,希望学生在学习过程中能够认真对待、勤奋学习,掌握系统知识和技能,为将来的职业发展做好准备。
管理信息系统课程设计--银行储蓄管理系统
管理信息系统课程设计--银行储蓄管理系统管理信息系统课程设计银行储蓄管理系统一、引言随着经济的快速发展和金融行业的日益繁荣,银行储蓄业务作为金融服务的重要组成部分,对于银行的运营和管理至关重要。
为了提高银行储蓄业务的效率和服务质量,设计一个高效、稳定、安全的银行储蓄管理系统成为了必然需求。
本课程设计旨在开发一个功能齐全、操作便捷的银行储蓄管理系统,以满足银行储蓄业务的日常管理和客户需求。
二、系统需求分析(一)功能需求1、开户管理:能够为新客户办理储蓄账户开户手续,包括收集客户信息、设置账户类型、初始存款等。
2、存款与取款:支持客户进行存款和取款操作,实时更新账户余额。
3、账户查询:客户可以查询自己账户的余额、交易明细等信息。
4、利息计算:根据不同的储蓄类型和利率,自动计算账户利息。
5、转账业务:实现客户账户之间的资金转账。
6、报表生成:生成各类储蓄业务报表,如日结报表、月结报表等,供银行管理人员进行分析和决策。
(二)性能需求1、响应时间:系统对于各种操作的响应时间应在可接受范围内,确保客户体验良好。
2、稳定性:系统应能够长时间稳定运行,避免出现故障和数据丢失。
3、安全性:保障客户信息和资金的安全,防止数据泄露和非法操作。
(三)数据需求1、客户信息:包括姓名、身份证号码、联系方式等。
2、账户信息:账户号码、账户类型、余额、开户日期等。
3、交易记录:存款、取款、转账的时间、金额、操作类型等。
三、系统设计(一)总体架构设计银行储蓄管理系统采用 C/S(客户端/服务器)架构,客户端负责与用户进行交互,服务器端负责数据存储和业务逻辑处理。
系统分为表示层、业务逻辑层和数据访问层。
表示层:采用图形用户界面(GUI),为用户提供直观、友好的操作界面。
业务逻辑层:处理各种业务逻辑,如开户、存款、取款、转账等。
数据访问层:负责与数据库进行交互,实现数据的增删改查操作。
(二)数据库设计1、数据库表结构设计客户表(customer):包含客户编号(customer_id)、姓名(name)、身份证号码(id_number)、联系方式(contact_info)等字段。
数据库课程设计银行储蓄系统
银行储蓄系统数据库课程设计一、系统概述银行储蓄系统是银行的核心业务系统之一,用于管理客户在银行的储蓄账户信息。
本课程设计将通过建立一个简单的银行储蓄系统,帮助学员掌握数据库设计和应用开发的基本技能。
二、系统需求1.用户管理:能够添加、删除、修改和查询用户信息。
2.账户管理:能够创建、修改、查询和删除账户信息。
3.存款业务:能够完成存款、取款、查询余额等操作。
4.转账业务:能够实现不同账户间的转账功能。
5.报表生成:能够根据需求生成相应的报表。
三、数据库设计1.用户表(Users)UserID(用户ID,主键)UserName(用户名)Password(密码)Email(邮箱)Phone(电话)2.账户表(Accounts)AccountID(账户ID,主键)UserID(用户ID,外键)AccountName(账户名称)AccountType(账户类型)OpenDate(开户日期)Balance(账户余额)3.存款记录表(Deposits)DepositID(存款ID,主键)AccountID(账户ID,外键)DepositAmount(存款金额)DepositDate(存款日期)4.取款记录表(Withdrawals)WithdrawalID(取款ID,主键)AccountID(账户ID,外键)WithdrawalAmount(取款金额)WithdrawalDate(取款日期)5.转账记录表(Transfers)TransferID(转账ID,主键)SourceAccountID(源账户ID,外键)DestinationAccountID(目标账户ID,外键)TransferAmount(转账金额)TransferDate(转账日期)6.报表表(Reports)ReportID(报表ID,主键)ReportType(报表类型)ReportDate(报表日期)ReportContent(报表内容)7.用户权限表(UserPermissions)PermissionID(权限ID,主键)UserID(用户ID,外键)PermissionType(权限类型)。
数据结构课程设计之银行储蓄管理
##大学数据结构课程设计报告题目:活期储蓄账目管理院(系):计算机工程学院学生姓名:班级:学号:起迄日期: 2011.06.20-2011.06.27指导教师:2010—2011年度第2 学期一、需求分析1.问题描述:活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求:1) 能比较迅速地找到储户的账户,以实现存款、取款记账;2) 能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。
我做的系统包括以下模块:开户模块:要求能新建账户并且能够进一步对所建立的账户进行查询等操作。
查询模块:能够通过账号查找,迅速的找到要查找的账户,并显示账户余额。
存取钱模块:在迅速地查找到目的账户后,对账户余额进行修改。
销户模块:查找到目的账户,对其销户。
2.基本功能该系统具有以下四个部分的功能:开户功能:能够新建账户,并对其进行存储以备查询。
查询功能:能够通过账号查找,迅速的找到要查找的账户,并显示账户余额。
存取钱功能:在迅速地查找到目的账户后,对账户进行存钱取钱操作。
销户功能:查找到目的账户,对其销户。
3.输入输出账号值大小为long,密码、存款数额值的范围为int大小,姓名为字符串。
假定账号是从50000开始,否则输出提示错误并返回主菜单;主菜单,输入从1-到5,依次实现开户、查询、存取钱、销户和退出功能,按其他数字键位返回主菜单。
开户的时候,账号是自动分配的,从50000开始,依次增加我这里暂定账户数上限为2000,然后需要输入用户姓名,再然后是账号密码和存储金额;对于用户姓名,是字符串类型,而账号和密码必须输入数字,开户金额10元起存,小于10元慧提示并允许重新输入开户金额。
查询的时候,首先需要输入要查询的账号,如果输入的账号小于默认起始账号,那么提示输入错误并返回主菜单;如果输入了大于默认账户的账号,那么密码核实不会通过,加入输入的密码错误,则会提示并返回主菜单。
存取钱,首先符合查询的输入要求,账号密码都正确时提示存款还是取款,此时要求存款输入s,取款输入t,否则提示错误并返回主菜单,然后输入存入或取出的金额,存款提示成功,取款如果账户余额不足,则会提示余额不足并返回主菜单。
银行储蓄管理数据库课程设计报告_夏冬
(数据库课程设计)设计说明书起止日期:2011 年11 月1 日至2011 年11 月22 日系别信息工程系学生姓名夏冬班级10级专接本2011年11 月22 日目录一、目的与要求 (2)二、系统分析 (2)2.开发及运行环境 (2)三、数据库设计 (2)1.概念数据库设计 (2)2.逻辑数据库设计 (5)3.物理数据库设计 (7)四、课程设计中遇到的问题、解决方法、收获和总结 (15)五、参考文献 (16)银行储蓄管理一、目的与要求通过数据库课程设计,进一步掌握数据库系统的理论和方法。
培养和锻炼开发管理信息系统的能力,为今后信息系统开发打下良好的基础。
本课程环节主要针对《关系数据库基础与应用》这门课程进行设计,数据库是一门应用性很强的专业课,在学习时必须注意理论与实践相结合。
本次课程环节旨在培养学生在本课程范围内,初步掌握解决实际应用问题时所应具备的查阅资料、综合运用所学知识的能力,为毕业设计及今后从事专业工作打下基础。
本课程环节要求学生了解企业管理信息系统后台数据库的设计、配置过程,掌握管理信息系统的开发方法。
主要包括:需求分析、数据分析、系统逻辑模型设计方法;功能设计、物理模型设计方法;系统的实现等方法。
完成一个小型系统后台数据库的设计与配置。
二、系统分析1. 需求分析某储蓄所接受定期和活期储蓄业务,储户采用实名存款,需登记真实姓名,并出具身份证号码。
储户可以办理多个存折。
系统除了管理存取款业务外,还应管理储蓄所每天的业务交接与对帐、结账业务。
储蓄所每天上班前可能接受运钞车送来的现金,下班时则将所内现金送回金库,零星款项也可能留在所内。
每天下班前都要盘点每个营业员准备金、收取储户的存款、支付储户的取款以及缴回的余款,以验证帐目的正确。
这些比较记录除了存储数据库外,都将打印凭证,交由当事人签字后存档。
储户存款依法支付扣税后利息,定期存款依照到期日计息,活期存款在每年的6 月30 日计息(以存款天数计算)。
数据库设计实验报告-银行储蓄系统
银行储蓄系统Xx1 用户需求分析,建立E-R图,模型生成,数据库实施和修改;Xx2 用户需求分析,建立E-R图,数据库运行和维护;设计过程相互探讨,相互学习,达到共同进步之目的。
一、需求描述银行储蓄系统,实现储户开户登记,办理定期存款帐,办理定期取款手续,办理活期存款帐,办理活期取款手续,同时实现各银行及储蓄所间的业务代理和转换。
1、信息处理需求总行:包括国家编号(唯一),总行长(唯一),总行长编号(唯一),地址,联系电话,包括多个分行分行:包括分行编号(唯一),分行长(唯一),分行长编号(唯一),地址,联系电话,各分行之间为并列关系,分行雇佣业务员,审核账目清单,每个分行有一个营业厅受理各项业务营业厅:包括营业厅编号(唯一),地址,联系电话,营业窗口号,一个营业厅负责受理一个分行的业务,一个营业厅由多个储蓄所组成并有多个业务员受理各项业务储蓄所:包括储蓄所编号(唯一),储蓄所名称,储蓄所长,地址,联系电话,储蓄柜台号,储蓄金额,并有多个职员办理各项业务业务员:包括姓名(唯一),性别,编号(唯一),年龄,职务,办理储蓄类别(活期,定期),每个业务员在一个营业窗口工作职员:包括姓名(唯一),性别,编号(唯一),年龄,职务,办理(包括储蓄类别-活期/定期;登记,核对),每个职员在一个储蓄柜台工作,计算存、取额及利息储户:包括姓名(唯一),身份证号(唯一),性别,储蓄类别,年龄,开户金额,输入(密码,密码确认,储蓄金额,取款额),储户可选择多个储蓄所存、取款,并可拥有多个储蓄账号账户:包括储蓄账号编码(唯一),储蓄账号(唯一),储蓄类别,开户时间,开户金额,总金额,密码2、功能需求交互:各分行及储蓄所之间进行业务交互,包括转账,代办提交:各级银行进行由下至上的清单、业务信息的交接审核:上级银行对所属银行的业务信息和账户清单进行审查、核准计算:主要是工作人员对总账出入和利息的合计办理:职员对储户信息和账户资料的登记和核准,实现储户开户登记,办理定期存款帐,办理定期取款手续,办理活期存款帐,办理活期取款手续管理:主指上级银行业务员对下级银行、人员的管控和调动数据输入:输入储户和账户的基本信息3、系统性能该系统的精度要求较高、时间比较快、应变能力快。
数据库课程设计银行存取款管理
数据库课程设计银⾏存取款管理银⾏储蓄业务数据库分析⼀、系统功能简介本系统是银⾏⽤户的存取款系统。
主要功能是管理各个⽤户存取款的相关数据。
⼆、本系统由三张表组成,具体如下:表名属性(字段)名储户表账号、⾝份证号、姓名、性别、⾝⾼、地址、存款余额存款单表存款单号、⾦额、存款⽅式、账号、存款⽇期取款单表取款单号、⾦额、取款⽅式、账号、取款⽇期系统表基本信息三、表间关系如下:⼀个存款单或取款单属于⼀个⽤户,⼀个⽤户可以拥有多次存款单或取款单。
⽤户通过存款操作与存款单建⽴联系,通过取款操作与取款单建⽴联系。
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。
课程设计报告银行储蓄管理系统
《数据结构》课程设计报告设计题目活期储蓄账目学院名称信息工程学院专业班级13计本1姓名学号0目录一、实验题目—活期储蓄账理-------------------------------二、问题描述-----------------------------------------------三、设计目标-----------------------------------------------四、需求分析-----------------------------------------------五、概要设计-----------------------------------------------1---系统流程图--------------------------------------2--各个模块功能的详细描-------------------------------六、详细设计-----------------------------------------------七、测试分析-----------------------------------------------八、使用说明-----------------------------------------------九、课程设计总结-------------------------------------------一活期储蓄账目管理二问题描述活期储蓄处理中,储蓄开户、销户、存款、取款活动频繁,系统设计要求:•能够比较迅速地找到储户的账户,以实现存款、取款记账;•能比较简单,迅速地插入和删除,以实现开户和销户的需要。
三设计目标编写一个程序,要求该程序可以实现储蓄开户,及储蓄销户。
同时,该程序具有在储蓄账户中实现存款、取款,查看该账户信息的功能。
四需求分析本演示程序用c语言编写,完成银行管理系统的生成,储户开户、销户、存入、支出。
数据库课程设计报告银行管理系统【范本模板】
目录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、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(数据库课程设计)设计说明书起止日期:2011 年11 月1 日至2011 年11 月22 日系别信息工程系学生姓名夏冬班级10级专接本2011年11 月22 日目录一、目的与要求 (2)二、系统分析 (2)2.开发及运行环境 (2)三、数据库设计 (2)1.概念数据库设计 (2)2.逻辑数据库设计 (5)3.物理数据库设计 (7)四、课程设计中遇到的问题、解决方法、收获和总结 (15)五、参考文献 (16)银行储蓄管理一、目的与要求通过数据库课程设计,进一步掌握数据库系统的理论和方法。
培养和锻炼开发管理信息系统的能力,为今后信息系统开发打下良好的基础。
本课程环节主要针对《关系数据库基础与应用》这门课程进行设计,数据库是一门应用性很强的专业课,在学习时必须注意理论与实践相结合。
本次课程环节旨在培养学生在本课程范围内,初步掌握解决实际应用问题时所应具备的查阅资料、综合运用所学知识的能力,为毕业设计及今后从事专业工作打下基础。
本课程环节要求学生了解企业管理信息系统后台数据库的设计、配置过程,掌握管理信息系统的开发方法。
主要包括:需求分析、数据分析、系统逻辑模型设计方法;功能设计、物理模型设计方法;系统的实现等方法。
完成一个小型系统后台数据库的设计与配置。
二、系统分析1. 需求分析某储蓄所接受定期和活期储蓄业务,储户采用实名存款,需登记真实姓名,并出具身份证号码。
储户可以办理多个存折。
系统除了管理存取款业务外,还应管理储蓄所每天的业务交接与对帐、结账业务。
储蓄所每天上班前可能接受运钞车送来的现金,下班时则将所内现金送回金库,零星款项也可能留在所内。
每天下班前都要盘点每个营业员准备金、收取储户的存款、支付储户的取款以及缴回的余款,以验证帐目的正确。
这些比较记录除了存储数据库外,都将打印凭证,交由当事人签字后存档。
储户存款依法支付扣税后利息,定期存款依照到期日计息,活期存款在每年的6 月30 日计息(以存款天数计算)。
此外,某个单位可能为本单位职工在该银行办理了工资卡,应予以考虑本项业务。
客户存折或卡丢失后,可以申请挂失,挂失后该帐户即被冻结,直到储户补办新折或卡后。
根据上述描述,设计并开发一个储蓄管理系统。
1)创建数据库,数据表(帐户表,业务员表,帐户管理表,活期存取款表,转账表,定期取款表,定期存款表)2)创建视图(所有VIP客户(帐户大于800),储户定期存款记录,储户定期取款记录)3)创建函数(区分VIP客户和普通客户的函数,根据帐号查询用户信息的函数)4)创建存储过程(帐户管理表的存储过程,转帐的存储过程)2.开发及运行环境1. Windows XP 操作系统,Professional 版;2. Microsoft SQL Server 2000开发版三、数据库设计1.概念数据库设计开户(图3-1)图3-1 销户(图3-2)图3-2 挂失(图3-3)图3-3存款(图3-4)图3-4 取款(图3-5)图3-5 转账(图3-6)图3-62.逻辑数据库设计1)关系模型帐户表(帐号,开户人姓名,登录密码,身份证号,性别,帐户余额,开户日期,开户地址)业务员表(业务员ID,业务员姓名,登录密码,性别)帐户管理表(流水单号,业务员ID,帐号,操作时间,开户,消户,挂失)活期存取款表(序号,帐号,业务员ID,操作金额,操作类型,操作日期,利息,帐户余额)定期存款表(存储利率,序号,帐号,业务员ID,存款人姓名,存款金额,存款日期,存储年份)定期取款表(序号,帐号,业务员ID,取款人姓名,取款金额,取款日期)转账表(序号,帐号,业务员ID,转出金额,转帐时间,转出帐号)2)表结构(1)帐户表(Deposit)3.物理数据库设计--第一步:数据库创建create DATABASE BankManager on (name=BankManager_data,Filename ='C:\BankManager_data.MDF', size=2MB,FileGrowth=15%)Log on(name=TecherManager_log,Filename='C:\BankManager_log.LDF', Size=2MB,FileGrowth=15%)--第二步:数据表创建--(1)帐户表(Deposit)use BankManagergocreate table Deposit(DNo char(20) primary key,DName char(10) not null,DPassword char(8) not null,DID char(20) not null,DSex char(2) not null,DBalance float(8) not null,DDate datetime not null,DAddress char(30) not null)go--(2)业务员表(Operation)use BankManagergocreate table Operation(ONo char(10) primary key,OName char(10) not null,CPassword char(6) not null,CSex char(2) not null)go--(3)帐户管理表(DepositManage)use BankManagergo(DMNo char(10) primary key,ONo char(10) not null,DNo char(20) not null,Dtime datetime not null,Dopen char(2),Ddelete char(2),Dloss char(2))go--(4)活期存取款表(CurrendAccount) use BankManagergocreate table CurrendAccount(NID int primary key,CNo char(20) not null,ONo char(10) not null,CMoney Float(8) not null,CStyle char(10) not null,CDate Datetime not null,CInterest Float(8) not null,CBalance Float(8) not null, )go--(5)定期存款表(FixedAccountC) use BankManagergocreate table FixedAccountC(nID Int primary key,DNo char(20) not null,ONo char(20) not null,CName char(10) not null,CMoney Float(8) not null,CDate Datetime not null,CYear Int not null,CRate Float(8) not null,)go--(6)定期取款表(FixedAccountQ) use BankManagergo(nID Int primary key,DNo char(20) not null,ONo char(10) not null,DName char(10) not null,CMoney Float(8) not null,CDate Datetime not null,)go--(7)转账表(transfer)use BankManagergocreate table transfer(GlideID Int primary key,DNo char(20) not null,ONo char(10) not null,TransferMoney float(8) not null,TransferTime datetime not null,DNo1 char(20) not null,)go--第三步:添加数据记录--(1)帐户表(Deposit)use BankManagergoinsert into Depositvalues('622848*************','夏冬','587642','320482198913143618','男','500','2001-3-4','苏州吴中');insert into Depositvalues('622848*************','小红','512545','320482198913143628','男','700','2001-3-4','苏州平江');insert into Depositvalues(********************','小明','584122','320482198913143638','男','800','2001-3-4','苏州金鸡');insert into Depositvalues('622848*************','小王','584552','320482198913143648','女','800','2001-3-4','苏州相城');insert into Depositvalues('622848*************','王一','587442','320482198913143658','女','200','2001-3-4','苏州吴中');insert into Depositvalues('622848*************','张三','587552','320482198913143668','女','500','2001-3-4','苏州吴中');insert into Depositvalues('622848*************','李四','587442','320482198913143678','男','600','2001-3-4','苏州平江');insert into Depositvalues('622848*************','王五','587412','320482198913143688','女','600','2001-3-4','苏州相城');insert into Depositvalues('622848*************','小夏','581142','320482198913143698','女','500','2001-3-4','苏州金鸡');insert into Depositvalues('622848*************','胡户','587611','320482198913143610','男','500','2001-3-4','苏州吴中');go--(2)业务员表(Operation)use BankManagergoinsert into Operationvalues('083411131','胡户','587611','男');insert into Operationvalues('083411132','王二','587610','男');insert into Operationvalues('083411133','张三','587610','女');insert into Operationvalues('083411134','李司','587620','男');insert into Operationvalues('083411135','王五','587112','女');insert into Operationvalues('083411136','王洁','587551','女');insert into Operationvalues('083411137','丁叶','587445','男');insert into Operationvalues('083411138','花蓉','587511','女');insert into Operationvalues('083411139','财进','587711','男');insert into Operationvalues('083411140','李鬼','585511','女');go--3)帐户管理表(DepositManage)use BankManagergoinsert into DepositManagevalues('0000000001','083411131','622848*************','2001-3-4','k','','');insert into DepositManagevalues('0000000002','083411132','622848*************','2001-3-4','k','','');insert into DepositManagevalues('0000000003','083411133',********************','2001-3-4','k','','');insert into DepositManagevalues('0000000004','083411134','622848*************','2001-3-4','k','','');insert into DepositManagevalues('0000000005','083411135','622848*************','2001-3-4','k','','');insert into DepositManagevalues('0000000006','083411136','622848*************','2001-3-4','k','','');insert into DepositManagevalues('0000000007','083411137','622848*************','2001-3-4','k','','');insert into DepositManagevalues('0000000008','083411138','622848*************','2001-3-4','k','','');insert into DepositManagevalues('0000000009','083411139','622848*************','2001-3-4','k','','');insert into DepositManagevalues('0000000010','083411140','622848*************','2001-3-4','k','','');go--(4)活期存取款表(CurrendAccount)use BankManagergoinsert into CurrendAccountvalues('0000000001','622848*************','083411131','200','存','2011-3-4','0.001','700');insert into CurrendAccountvalues('0000000002','622848*************','083411132','200','存','2011-3-4','0.001','900');insert into CurrendAccountvalues('0000000003',********************','083411133','200','取','2011-3-4','0.001','600');insert into CurrendAccountvalues('0000000004','622848*************','083411134','200','存','2011-3-4','0.001','1000');insert into CurrendAccountvalues('0000000005','622848*************','083411135','200','取','2011-3-4','0.001','0');insert into CurrendAccountvalues('0000000006','622848*************','083411136','200','存','2011-3-4','0.001','700');insert into CurrendAccountvalues('0000000007','622848*************','083411137','200','取','2011-3-4','0.001','400');insert into CurrendAccountvalues('0000000008','622848*************','083411138','200','存','2011-3-4','0.001','800');insert into CurrendAccountvalues('0000000009','622848*************','083411139','200','取','2011-3-4','0.001','300');insert into CurrendAccountvalues('0000000010','622848*************','083411140','200','存','2011-3-4','0.001','700');go--(5)定期存款表(FixedAccountC)use BankManagergoinsert into FixedAccountCvalues('0000000001','622848*************','083411131','夏冬','200','2011-3-4','4','0.027');insert into FixedAccountCvalues('0000000002','622848*************','083411132','小红','200','2011-3-4','4','0.027');insert into FixedAccountCvalues('0000000003',********************','083411133','小明','200','2011-3-4','4','0.027');insert into FixedAccountCvalues('0000000004','622848*************','083411134','小王','200','2011-3-4','4','0.027');insert into FixedAccountCvalues('0000000005','622848*************','083411135','王一','200','2011-3-4','2','0.027');insert into FixedAccountCvalues('0000000006','622848*************','083411136','张三','200','2011-3-4','1','0.027');insert into FixedAccountCvalues('0000000007','622848*************','083411137','李四','200','2011-3-4','1','0.027');insert into FixedAccountCvalues('0000000008','622848*************','083411138','王五','200','2011-3-4','5','0.027');insert into FixedAccountCvalues('0000000009','622848*************','083411139','小夏','200','2011-3-4','3','0.027');insert into FixedAccountCvalues('0000000010','622848*************','083411140','胡户','200','2011-3-4','3','0.027');go--(6)定期取款表(FixedAccountQ)use BankManagergoinsert into FixedAccountQvalues('0000000001','622848*************','083411131','夏冬','100','2011-3-4');insert into FixedAccountQvalues('0000000002','622848*************','083411132','小红','100','2011-3-4');insert into FixedAccountQvalues('0000000003',********************','083411133','小明','100','2011-3-4');insert into FixedAccountQvalues('0000000004','622848*************','083411134','小王','100','2011-3-4');insert into FixedAccountQvalues('0000000005','622848*************','083411135','王一','100','2011-3-4');insert into FixedAccountQvalues('0000000006','622848*************','083411136','张三','100','2011-3-4');insert into FixedAccountQvalues('0000000007','622848*************','083411137','李四','100','2011-3-4');insert into FixedAccountQvalues('0000000008','622848*************','083411138','王五','100','2011-3-4');insert into FixedAccountQvalues('0000000009','622848*************','083411139','小夏','100','2011-3-4');insert into FixedAccountQvalues('0000000010','622848*************','083411140','胡户','100','2011-3-4');go-- (7)转账表(transfer)use BankManagergoinsert into transfervalues('0000000001','622848*************','083411131','100','2011-3-4','6228485879 445748458');insert into transfervalues('0000000002','622848*************','083411132','100','2011-3-4','6228445821 456245876');insert into transfervalues('0000000003',********************','083411133','100','2011-3-4','6228485576 415455876');insert into transfervalues('0000000004','622848*************','083411134','100','2011-3-4','6228485879 456587545');insert into transfervalues('0000000005','622848*************','083411135','100','2011-3-4','6228485879 498746566');insert into transfervalues('0000000006','622848*************','083411136','100','2011-3-4','6228485879 456245851');insert into transfervalues('0000000007','622848*************','083411137','100','2011-3-4','6228485879 456245871');insert into transfervalues('0000000008','622848*************','083411138','100','2011-3-4','6228485879 456245874');insert into transfervalues('0000000009','622848*************','083411139','100','2011-3-4','6228485879 456245877');insert into transfervalues('0000000010','622848*************','083411140','100','2011-3-4','6228485879 456245876');go--第四步:创建视图--(1)创建所有VIP客户(帐户大于800)use BankManagergocreate view Deposit_view(DNo,DName,DBalance)asselect DNo,DName,DBalance from dbo.Depositwhere DBalance>700.00 or DBalance=700.00--(2)创建储户定期存款记录use BankManagergocreate view FixedAccountList_viewasselect nID,DNo,CName,CMoney,CYear,CRate from dbo.FixedAccountCgo--(3)创建储户定期取款记录use BankManagergocreate view FixedAccountList2_viewasselect nID,DNo,DName,CMoney from dbo.FixedAccountQgo--第五步:函数、存储过程、触发器和游标的创建--(1)区分VIP客户和普通客户的函数use BankManagergocreate function Deposit_fun(@DBalance1 float) returns varchar(20)asbegindeclare @returnstr varchar(20)if @DBalance1>=700.00set @returnstr='VIP客户'elseset @DBalance1='普通客户'return @returnstrend--执行select DNo,DName,DID,DBalance,dbo.Deposit_fun(DBalance) as 客户等级from dbo.Deposit--(2)根据帐号查询用户信息的函数create function Deposit_f(@inputcno char(20)) returns tableasreturn (select DNo,DName,DID,DBalance from dbo.Depositwhere DNo=@inputcno)--执行select * from Deposit_f('622848*************')--创建帐户管理表的存储过程use BankManagergocreate procedure dbo.DepositManage_pro@Tno char(10)asselect * from dbo.DepositManage where DMNo=@Tnogo--创建转帐的存储过程use BankManagergocreate procedure dbo.transfer_pro@Tno char(10)asselect * from dbo.transfer where GlideID=@Tnogo四、课程设计中遇到的问题、解决方法、收获和总结1) 问题这次的课程设计,抽签决定了课程设计的题目,我做的是银行储蓄管理系统,刚开始拿到项目时觉得这个比较简单,但实际做需求分析时还是有点困难,不知道从什么地方下手。