数据库课程设计 银行管理系统
银行管理系统数据库设计报告
银行管理系统数据库设计报告一、引言银行作为一个重要的金融机构,在日常运营中需要进行大量的数据管理和处理,以满足客户的需求并确保正常运作。
数据库作为银行信息系统的核心,扮演着不可或缺的角色。
本报告将介绍银行管理系统数据库设计的相关内容,包括数据库结构、数据表设计和关键功能的实现。
二、数据库结构设计1. 数据库类型银行管理系统将采用关系型数据库,以确保数据之间的一致性和完整性。
2. 数据库表设计•客户信息表(Customers):包括客户ID、客户姓名、联系方式等字段。
•账户信息表(Accounts):存储账户号、账户类型、余额等数据。
•交易记录表(Transactions):记录每笔交易的相关信息,如交易ID、交易时间、金额等。
•员工信息表(Employees):包括员工ID、姓名、职位等字段。
3. 数据表关系•客户信息表与账户信息表之间是一对多的关系,一个客户可以拥有多个账户。
•账户信息表与交易记录表之间是一对多的关系,一个账户可以有多条交易记录。
•员工信息表与账户信息表之间是多对多的关系,一个员工可以管理多个账户,一个账户也可能由多个员工共同管理。
三、关键功能的实现1. 客户管理•实现客户信息的增加、删除、修改和查询功能。
•可以查看客户所拥有的账户信息。
2. 账户管理•实现账户信息的开户、销户、存取款等操作。
•可以查看账户的交易记录和余额情况。
3. 交易记录管理•记录每笔交易的相关信息,确保交易安全可追溯。
•支持按照时间、金额等条件对交易记录进行查询。
4. 员工管理•实现员工信息的录入、修改、删除等操作。
•显示员工所管理的账户信息。
四、总结通过本报告对银行管理系统数据库设计的详细介绍,我们可以看到该系统的结构清晰、功能完善。
数据库设计是银行信息系统开发中至关重要的一环,只有合理设计和优化数据库,才能保证系统的高效运行和数据的安全性。
在未来的发展中,我们将不断优化数据库结构,提升系统的性能和用户体验。
数据库课程设计 银行储蓄管理系统
《数据库系统概论》课程设计报告设计题目:银行储蓄管理系统姓名:学号:班级:设计起止时间:需求分析:在对软件工程相关知识学习之后,我们对设计软件有了基本的认识和一些应用技能。
在数据库的课程设计中,我们计划做一个小型的银行储蓄管理系统,包括了基本的存取转,和管理员对日常工作的管理功能。
功能设计:(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三、逻辑设计 2四、类的设计与分析 4五、数据库表结构设计 8六、特色算法分析 8七、功能测试 9八、存在的不足与对策 12九、程序源代码 12银行储蓄管理系统一银行储蓄系统需求分析系统功能简介:信息系统:主要是在里面输入用户信息(户名,帐号,开户日期)主要功能:记录用户所要进行的各种存取操作(存钱,取钱),并对操作数据做好记录记录时间:主要是记录每个用户开户,存取,取钱的日期相关金额:该用户的存款金额,取款金额,执行操作后账户余额保存系统:可以以连接数据库模式保存查询过的内容,对于刚刚查询过的内容不必重复登陆工作环境:该程序可用在各种银行性质的单位,能有效管理用户信息。
方便,快捷,容易上手,安全保密,资料齐整构造该程序,主要是使用C++ & SQL系统。
在MS-DOS以及WINDOWS95以上的操作系统上可以正常运行。
现今的社会,资金流动十分频繁。
不单单是企业、厂商,连个人也不例外。
银行作为一个金融机构,在现代人们的生活中扮演着及其重要的角色。
为生活节奏飞快的现代人提供快速、便捷、高效理财服务,是每一个银行机构的共同职责。
伴随着电脑技术的发展,各大银行储蓄管理软件也随之出现在这一舞台之上。
银行储蓄管理程序的主要功能就是记录用户的账户信息,已经对用户的存取款操作作好记录及数据更新。
银行储蓄管理的特点是数据量大。
数据更新频繁。
因此便捷的操作,数据更新准确度,成了这一系统的主要指标。
二系统总框图三逻辑设计任何建模语言都以静态建模机制为基础,标准建模语言UML也不例外。
所谓静态建模是指对象之间通过属性互相联系,而这些关系不随时间而转移。
类和对象的建模,是UML建模的基础。
面向对象的开发方法的基本任务是建立对象模型,是软件系统开发的基础。
UML中的对象类图表达了对象模型的静态结构,能够有效地建立专业领域的计算机系统对象模型。
图1 系统类图动态模型主要描述系统的动态行为和控制结构。
数据结构课程设计银行账户管理系统
数据结构课程设计银行账户管理系统简介本文档旨在描述一个基于数据结构的银行账户管理系统的设计。
该系统可用于管理银行账户信息,包括添加账户、查看余额、存款、取款以及转账等功能。
功能需求系统应具备以下功能:1. 添加账户:系统允许用户添加新的银行账户,包括账户持有人的姓名、身份证号码和初始存款金额。
2. 查看余额:用户可以查询账户的当前余额,系统将显示对应账户的余额信息。
3. 存款:用户可以向指定账户存入指定金额的资金,系统将更新对应账户的余额信息。
4. 取款:用户可以从指定账户中取出指定金额的资金,系统将更新对应账户的余额信息。
5. 转账:用户可以将指定账户的资金转移到另一个指定账户中,系统将更新相关账户的余额信息。
数据结构设计为了实现上述功能,可以采用以下数据结构设计:- 银行账户类:包括账户持有人姓名、身份证号码和当前余额属性,以及对应的添加账户、查看余额、存款、取款和转账的方法。
- 银行账户列表类:包括一个存储所有银行账户的数组,以及对应的添加账户、查询账户、存款、取款和转账的方法。
系统流程系统流程如下:1. 用户选择相应操作:添加账户、查看余额、存款、取款或转账。
2. 根据用户选择的操作,系统执行相应的方法。
3. 系统根据方法执行的结果,显示相应的输出信息。
总结本文档介绍了一个基于数据结构的银行账户管理系统的设计,包括功能需求和数据结构设计。
通过该系统,用户可以方便地管理银行账户,进行账户操作和查询余额等操作。
该系统具备简洁、高效的特点,可以满足日常的银行账户管理需求。
银行系统的数据库课程设计
目录一、目的与意义 0二、设计内容与要求 0三、设计原理 (1)1、数据库基本操作: (1)Ⅰ、定义基本表 (1)Ⅱ、修改基本表 (1)III、删除基本表 (1)IV、数据查询 (1)V、插入元组 (2)VI、修改数据 (2)VII、删除数据 (2)2、数据库完整性 (2)I、实体完整性定义 (2)II、参照完整性定义 (2)3、触发器 (3)I、定义触发器 (3)II、激活触发器 (3)III、删除触发器 (3)4、存储过程 (3)I、PL/SQL的块结构 (3)II、变量常量的定义 (4)III、控制结构 (4)IV、存储过程的用户接口 (5)四、总体设计方案 (5)五、详细设计 (5)1、需求分析 (5)2、流程图 (6)3、E-R图 (6)4、设计表 (6)5、关系图 (7)6、编码 (8)六、测试与调试 (11)七、收获与体会 (15)八、主要参考资料 (15)一、目的与意义本课程设计是在学完《数据库系统与应用》课程之后,让学生综合应用数据库知识,设计数据库,进行调试与测试,以加深对数据库基本知识及SQL语言的理解,提高综合应用知识的能力、分析解决问题的能力,加强数据库知识的实践技能,初步培养开发实用数据库系统的能力。
二、设计内容与要求设计一个银行账户管理系统,至少能够实现存款、取款、查询、转账等基本功能,要求在在数据库实现过程中至少建立三张表、不得少于四个查询、三个触发器、使用至少一个存储过程。
三、设计原理SQL是一种介于关系代数与关系演算之间的结构化查询语言,其功能并不仅仅是查询。
SQL是一个通用的、功能极强的关系数据库语言。
它之所以能够为用户和业界所接受,并成为国际标准,是因为它是一个综合的、功能极强同时又简捷易学的语言。
SQL语言集数据查询(Data Query)、数据操纵(Data Manipulation)、数据定义(Data Definition)和数据控制(Data Control)功能于一体。
数据库课程设计实验报告-银行账户管理系统
数据库课程设计报告题目: 银行账户管理系统院系名称: 计算机学院专业名称: 软件工程班级: 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))。
银行业务功能:设置管理员账号,赋予管理员权限以实现开户、销户、存款、取款、查询、办卡和挂失功能。
计算机数据库课程设计银行管理系统
银行管理系统1.课程设计的目的应用对数据库系统概论的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。
实践和巩固在课堂教学中学习的关于数据库的有关知识,熟练掌握对于给定结构的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。
实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库银行管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。
2.设计方案论证2.1问题提出银行是一个国家正常运转必不可缺的机构,当今社会,几乎是每个人都会涉及到储蓄业务,为此,为方便用户查询和使用各种业务,可用计算机为工具对查询管理为一体的各种服务。
当然,这样的一个银行储蓄业务系统就应运而生了。
本系统是一个简单的储蓄系统,可以对储户的信息进行查询修改以及删除。
2.2可行性研究2.2.1技术可行性[1]硬件环境: CPU:2.0GH以上内存:2GB以上[2]软件环境: 操作系统:Mecrosoft Windows XP运行环境:SQL Server 2005建模工具:Microsoft Visio,word编辑器2.2.2运行可行性当今社会所有的银行使用计算机数据库来做管理。
我们通过该课程设计,应该达到的目的是把数据库理论知识更加的巩固加深,加强动手能力与实践能力,学以致用,与现实生活中的应用充分的结合起来。
本系统是银行用户的存取款系统。
主要功能是管理各个用户存取款的相关数据。
储户填写的存款单或取款单输入系统,如果是存款,则系统记录存款人姓名,住址(或电话号码),身份证号码,存款类型,存款金额,存款日期等信息,并打印存单给储户;如果是取款,则需要输入帐号、取款金额等信息,核对正确后系统打印出清单给储户。
2.3需求分析2.3.1需求分析对于用户部分,能够新建和删除用户,在操作过程中可以更改用户;对于账户部分,可以查询用户的信息,包括各种基本信息、活期余额、定期账单等;对于账户操作部分,有活期存取款、定期存取款操作,另外操作完成之后存储相应的操作记录并能够查询操作记录等功能。
数据库课程设计银行
数据库课程设计银行一、课程目标知识目标:1. 理解数据库的基本概念,掌握数据库的设计原则和方法。
2. 学习银行数据库的构建,了解银行业务数据的特点和需求。
3. 掌握SQL语言的基本操作,实现对银行数据库的增、删、改、查功能。
技能目标:1. 能够运用数据库设计原则,独立设计并实现一个简单的银行数据库系统。
2. 通过实践操作,熟练使用SQL语言进行数据管理和查询。
3. 培养学生的团队协作能力,学会在项目中分工与协作,共同完成数据库设计。
情感态度价值观目标:1. 培养学生对数据库课程的兴趣,激发学习积极性,提高自主学习能力。
2. 增强学生的数据安全意识,了解数据库在保障信息安全中的重要作用。
3. 通过实际案例,让学生认识到数据库在现实生活中的广泛应用,培养其实践应用能力。
课程性质:本课程为高二年级信息技术课程,以实践操作为主,注重培养学生的动手能力和实际应用能力。
学生特点:高二学生已具备一定的计算机操作基础,对数据库概念有一定了解,但尚需加强实践操作和团队协作能力。
教学要求:结合学生特点,以实际案例为载体,采用任务驱动法,引导学生主动参与,注重理论与实践相结合,提高学生的实际操作能力。
在教学过程中,关注学生的个体差异,给予个性化指导,确保课程目标的实现。
通过课程学习,使学生能够独立完成数据库设计,并为后续相关课程打下坚实基础。
二、教学内容1. 数据库基础知识回顾:数据库概念、数据模型、关系型数据库。
教材章节:第一章 数据库基础2. 银行数据库需求分析:银行业务流程、数据特点、数据管理需求。
教材章节:第二章 数据库设计3. 数据库设计方法与实践:实体关系模型、E-R图绘制、数据库表设计。
教材章节:第二章 数据库设计4. SQL语言操作:数据定义、数据操纵、数据查询、数据控制。
教材章节:第三章 SQL语言5. 银行数据库实现:创建数据库、创建表、插入数据、查询数据、修改数据、删除数据。
教材章节:第四章 数据库实现6. 数据库安全性:用户权限管理、数据备份与恢复。
管理信息系统课程设计--银行储蓄管理系统
管理信息系统课程设计--银行储蓄管理系统管理信息系统课程设计银行储蓄管理系统一、引言随着经济的快速发展和金融行业的日益繁荣,银行储蓄业务作为金融服务的重要组成部分,对于银行的运营和管理至关重要。
为了提高银行储蓄业务的效率和服务质量,设计一个高效、稳定、安全的银行储蓄管理系统成为了必然需求。
本课程设计旨在开发一个功能齐全、操作便捷的银行储蓄管理系统,以满足银行储蓄业务的日常管理和客户需求。
二、系统需求分析(一)功能需求1、开户管理:能够为新客户办理储蓄账户开户手续,包括收集客户信息、设置账户类型、初始存款等。
2、存款与取款:支持客户进行存款和取款操作,实时更新账户余额。
3、账户查询:客户可以查询自己账户的余额、交易明细等信息。
4、利息计算:根据不同的储蓄类型和利率,自动计算账户利息。
5、转账业务:实现客户账户之间的资金转账。
6、报表生成:生成各类储蓄业务报表,如日结报表、月结报表等,供银行管理人员进行分析和决策。
(二)性能需求1、响应时间:系统对于各种操作的响应时间应在可接受范围内,确保客户体验良好。
2、稳定性:系统应能够长时间稳定运行,避免出现故障和数据丢失。
3、安全性:保障客户信息和资金的安全,防止数据泄露和非法操作。
(三)数据需求1、客户信息:包括姓名、身份证号码、联系方式等。
2、账户信息:账户号码、账户类型、余额、开户日期等。
3、交易记录:存款、取款、转账的时间、金额、操作类型等。
三、系统设计(一)总体架构设计银行储蓄管理系统采用 C/S(客户端/服务器)架构,客户端负责与用户进行交互,服务器端负责数据存储和业务逻辑处理。
系统分为表示层、业务逻辑层和数据访问层。
表示层:采用图形用户界面(GUI),为用户提供直观、友好的操作界面。
业务逻辑层:处理各种业务逻辑,如开户、存款、取款、转账等。
数据访问层:负责与数据库进行交互,实现数据的增删改查操作。
(二)数据库设计1、数据库表结构设计客户表(customer):包含客户编号(customer_id)、姓名(name)、身份证号码(id_number)、联系方式(contact_info)等字段。
数据库课设---银行管理系统
数据库技术与开发——银行数据库系统专业:计算机科学与技术姓名:***班级: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。
三.题目简介,收集有关数据设计题目:银行数据库我们试图以商业银行的三大业务(负债业务、资产业务、中间业务与表外业务)为基点;重点讨论他所需要的三大方面数据商业银行的业务三大类:负债业务;资产业务;中间业务与表外业务。
数据库课程设计报告——银行管理系统
金额
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
数据库课程设计银行存取款管理
数据库课程设计银⾏存取款管理银⾏储蓄业务数据库分析⼀、系统功能简介本系统是银⾏⽤户的存取款系统。
主要功能是管理各个⽤户存取款的相关数据。
⼆、本系统由三张表组成,具体如下:表名属性(字段)名储户表账号、⾝份证号、姓名、性别、⾝⾼、地址、存款余额存款单表存款单号、⾦额、存款⽅式、账号、存款⽇期取款单表取款单号、⾦额、取款⽅式、账号、取款⽇期系统表基本信息三、表间关系如下:⼀个存款单或取款单属于⼀个⽤户,⼀个⽤户可以拥有多次存款单或取款单。
⽤户通过存款操作与存款单建⽴联系,通过取款操作与取款单建⽴联系。
ER模型如下图:四、数据准备前期准备⼯作:以system账户登录,创建新账户create user dy identified by lyjn;grant dba to dy;connect dy/dy@orcl;各个表的具体信息和创建表的代码如下:CREATE TABLE luser(acnum VARCHAR2(5) NOT NULL ,id NUMBER NOT NULL ,name VARCHAR2(20) NOT NULL ,sex VARCHAR2(2) CHECK(sex IN ('男','⼥') ) , height NUMBER(3,2) NOT NULL, address VARCHAR2(20) NOT NULL ,balance INT NOT NULL);ALTER TABLE luser添加主键约束ADD CONSTRAINT XPKluser PRIMARY KEY (acnum);CREATE TABLE depositslip(dps_num NUMBER NOT NULL ,money INT CHECK(money>=0) ,dps_way VARCHAR2(10) NOT NULL ,acnum VARCHAR2(5) NOT NULL ,dps_time TIMESTAMP NULL);ALTER TABLE depositslip添加主键约束ADD CONSTRAINT XPKdepositslip PRIMARY KEY (dps_num,acnum);ALTER TABLE depositslip在depositslip表中的acnum字段中添加外键约束ADD (CONSTRAINT R_5 FOREIGN KEY (acnum) REFERENCES luser(acnum));CREATE TABLE drawslip(dw_num NUMBER NOT NULL ,money INT CHECK(money>=0),dw_way VARCHAR2(10) NOT NULL ,acnum VARCHAR2(5) NOT NULL ,dw_time TIMESTAMP NULL);ALTER TABLE drawslip添加主键约束ADD CONSTRAINT XPKdrawslip PRIMARY KEY (dw_num,acnum);ALTER TABLE drawslip在drawslip表中的acnum字段中添加外键约束ADD (CONSTRAINT R_6 FOREIGN KEY (acnum) REFERENCES luser(acnum));五、插⼊(insert)数据1、插⼊储户表(luser)数据insert into luser (ACNUM, ID, NAME, SEX,HEIGHT, ADDRESS, BALANCE) values ('00001', 3422101, '刘忠⽥', '男',1.72 ,'北京市朝阳区', 345);insert into luser (ACNUM, ID, NAME, SEX,HEIGHT, ADDRESS, BALANCE) values ('00002', 3422102, '周正义', '男',1.78, '天津市宝坻区', 123);insert into luser (ACNUM, ID, NAME, SEX,HEIGHT, ADDRESS, BALANCE) values ('00003', 3422103, '陈光标', '男',1.80, '南京市新街⼝', 333);insert into luser (ACNUM, ID, NAME, SEX,HEIGHT, ADDRESS, BALANCE) values ('00004', 3422104, '张茵', '⼥',1.65, '上海市黄浦区', 234);insert into luser (ACNUM, ID, NAME, SEX,HEIGHT, ADDRESS, BALANCE) values ('00005', 3422105, '陈丽华', '⼥',1.70, '⾹港市旺⾓区', 111);2、插⼊存款单表(depositslip)数据insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY)values (98001,'00001', 120,to_date('08-08-2009','dd-mm-yyyy'), '整存整取');insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98002,'00001', 300,to_date('10-08-2009','dd-mm-yyyy'), '整存整取');insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98003,'00002', 100,to_date('12-08-2009','dd-mm-yyyy'), '整存零取');insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98004,'00002', 150,to_date('12-09-2009','dd-mm-yyyy'), '整存零取');insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98005,'00003', 200,to_date('15-08-2009','dd-mm-yyyy'), '零存整取');insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98006,'00003', 100,to_date('14-09-2009','dd-mm-yyyy'), '零存整取');insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98007,'00003', 80,to_date('23-09-2009','dd-mm-yyyy'), '零存整取'); insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98008,'00004', 80,to_date('23-08-2009','dd-mm-yyyy'), '零存零取');insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98009,'00004', 180,to_date('24-09-2009','dd-mm-yyyy'), '零存零取');insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98010,'00005', 190,to_date('24-08-2009','dd-mm-yyyy'), '通知存款');insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98011,'00005', 210,to_date('30-09-2009','dd-mm-yyyy'), '通知存款'); 3、插⼊取款单表(drawslip)数据insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY) values (52001,'00001', 75,to_date('08-08-2010','dd-mm-yyyy'), '柜台');insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY) values (52002,'00002', 27,to_date('08-09-2010','dd-mm-yyyy'), '取款机');insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY) values (52003,'00002',100,to_date('12-10-2010','dd-mm-yyyy'), '柜台');insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY) values (52004,'00003',47,to_date('15-08-2010','dd-mm-yyyy'), '取款机');insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY) values (52005,'00004',26,to_date('12-09-2010','dd-mm-yyyy'), '取款机');insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY) values (52006,'00005',100,to_date('23-09-2010','dd-mm-yyyy'), '柜台');insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY) values (52007,'00005',150,to_date('10-10-2010','dd-mm-yyyy'), '柜台');insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY) values (52008,'00005',39,to_date('31-10-2010','dd-mm-yyyy'), '取款机');七、索引建⽴索引遵循的规律:1.建⽴在where⼦句经常引⽤的列上,2.经常需要排序的列上,3.连接属性列上等在存款单表的存款单号字段和账号字段建⽴组合索引CREATE UNIQUE INDEX XPKdepositslip ON depositslip(dps_num ASC,acnum ASC);在存款单表的账号字段建⽴索引CREATE INDEX XIF1depositslip ON depositslip(acnum ASC);在取款单表的取款单号字段和账号字段建⽴组合索引CREATE UNIQUE INDEX XPKdrawslip ON drawslip(dw_num ASC,acnum ASC);在取款单表的账号字段建⽴索引CREATE INDEX XIF1drawslip ON drawslip(acnum ASC);在储户表的账户字段上建⽴索引,⽅便查询CREATE UNIQUE INDEX XPKluser ON luser(acnum ASC);⼋、触发器1、插⼊存款,对应储户表的相应储户的余额(balance)增加插⼊记录包含的⾦额数(money)CREATE OR REPLACE TRIGGER OperatingDpsAFTER INSERT ON depositslipFOR EACH ROWDECLAREn_ac VARCHAR2(5);n_mo INT;BEGINn_ac:=:new.acnum;n_mo:=:new.money;update luser set balance=balance+n_mo where luser.acnum=n_ac;END OperatingDps;2、删除存款,对应储户表的相应储户的余额(balance)减去所删除记录的⾦额数(money) CREATE OR REPLACE TRIGGER OperatingDps2AFTER DELETE ON depositslipFOR EACH ROWDECLAREo_ac VARCHAR2(5);o_mo INT;BEGINo_ac:=:old.acnum;o_mo:=:old.money;update luser set balance=balance-o_mo where luser.acnum=o_ac;END OperatingDps2;3、插⼊取款,对应储户表的相应储户的余额(balance)减少插⼊记录包含的⾦额数(money) CREATE OR REPLACE TRIGGER OperatingDwAFTER INSERT ON drawslipFOR EACH ROWDECLAREn_ac VARCHAR2(5);n_mo INT;BEGINn_ac:=:new.acnum;n_mo:=:new.money;update luser set balance=balance-n_mo where luser.acnum=n_ac;END OperatingDw;4、删除取款,对应储户表的相应储户的余额(balance)加上所删除记录的⾦额数(money) CREATE OR REPLACE TRIGGER OperatingDw2AFTER DELETE ON drawslipFOR EACH ROWDECLAREo_ac VARCHAR2(5);o_mo INT;BEGINo_ac:=:old.acnum;o_mo:=:old.money;update luser set balance=balance+o_mo where luser.acnum=o_ac;END OperatingDw2;5、插⼊的取款⾦额(money)⼤于对应⽤户的余额(balance)时,系统报错CREATE OR REPLACE TRIGGER OperatingDw3 AFTER insert ON drawslipFOR EACH ROWDECLAREn_ac VARCHAR2(5);n_mo INT;n_ba INT;BEGINn_ac:=:new.acnum;n_mo:=:new.money;select balance into n_ba from luser where acnum=n_ac;if n_mo>n_ba thenRAISE_APPLICATION_ERROR(-20000, '存款余额不⾜!请重新插⼊存款!'); end if;END OperatingDw3;测试(以刘忠⽥为例):查看刘忠⽥的余额数select name,balance from luser where name='刘忠⽥'1、插⼊存款时插⼊⼀条存款记录insert into depositslip (DPS_NUM, ACNUM, MONEY, DPS_TIME, DPS_WAY) values (98012,'00001', 80,to_date('08-09-2009','dd-mm-yyyy'), '整存整取');查看插⼊后,刘忠⽥余额数的变化select name,balance from luser where name='刘忠⽥’2、删除存款时删除⼀条存款记录delete from depositslip where dps_num=98012查看删除后,刘忠⽥余额数的变化select name,balance from luser where name='刘忠⽥’3、插⼊取款时插⼊⼀条取款记录insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY)values (52007,'00001', 80,to_date('08-11-2010','dd-mm-yyyy'), '柜台'); 查看插⼊取款后,刘忠⽥余额数的变化select name,balance from luser where name='刘忠⽥’4、删除取款时删除⼀条取款记录delete from drawslip where dw_num=52007查看删除后,刘忠⽥余额数的变化select name,balance from luser where name='刘忠⽥’5、插⼊的取款数⼤于余额数时insert into drawslip (DW_NUM, ACNUM, MONEY, DW_TIME, DW_WAY)values (52007,'00001', 700,to_date('08-12-2010','dd-mm-yyyy'), '柜台'); 700⼤于刘忠⽥的余额数系统会报错:ORA-20000: 存款余额不⾜!请重新插⼊存款! ORA-06512: 在"DY.OPERATINGDW3", line 10ORA-04088: 触发器 'DY.OPERATINGDW3' 执⾏过程中出错九、存储过程创建过程dpspro,查询某位储户共取过多少钱create or replace procedure dpspro(dname varchar2) assmoney int;beginselect sum(money) into smoney from drawslip natural join luser where name=dname; DBMS_OUTPUT.PUT_LINE(smoney); end dpspro;创建存储过程luinf,查询余额⼤于取款总数储户的相关信息先创建两张表create table new1 as select name 姓名,sum(money) 总数from luser inner join drawslip onluser.acnum=drawslip.acnum group by name;create table new2 as select * from luser inner join new1 on /doc/2ae93f3f0912a2161479298b.html=new1.姓名;存储过程create or replace procedure luinfiscursor mycur isselect * from new2 where new2.balance>new2.总数;v_record new2%rowtype;)beginif mycur%isopen=false thenopen mycur;end if;DBMS_OUTPUT.PUT_LINE(rpad('账号',15,'-')||rpad('⾝份证',15,'-')||rpad('姓名',15,'-')||rpad('性别',15,'-')||rpad('余额',15,'-')||'取款总数');loopfetch mycur into v_record;exit when mycur%notfound;DBMS_OUTPUT.PUT_LINE(rpad(v_record.acnum,15,'-')||rpad(v_/doc/2ae93f3f0912a2161479298b.html,15,'-')||rpad(v_record.id,15,'-')||rpad(v_record.sex,15,'-')||rpad(v_record.balance,15,'-')||v_record.总数);end loop;close mycur;end luinf;⼗、查询1、查询余额最多的⼈共取过多少次款,共取了多少钱select count(*),sum(money) from luser natural join drawslip where name=(select name from luser where balance=(select max(balance) from luser)) 2、查询存款余额⼤于200(亿)的储户,男⼥分别有多少⼈select sex,count(*)from luser where balance>200 group by sex3、查询哪个储户的某次存款期限满16个⽉,显⽰姓名、当次存款⾦额和性别select name,money,sex from luser natural join depositslip where extract(month from sysdate)-extract(month from dps_time)>44、查询哪些储户的取款总数⼤于100select name 姓名,sum(money) 取款数, '亿' 单位from luser inner join drawslip on luser.acnum=drawslip.acnum group by name having sum(money)>1005、查询存款时间长度超过4个⽉的存款信息select name 姓名,dps_num 存款单号,dps_time 存款⽇期,extract(month from sysdate)-extract(month from dps_time) 存款时间长度,'⽉' 单位from luser natural join depositslip where balance>400 and extract(month from sysdate)-extract(month fromdps_time)>=3。
课程设计银行管理系统
课程设计银行管理系统一、课程目标知识目标:1. 理解银行管理系统的基础知识,掌握系统架构、功能模块及其操作流程。
2. 学会运用数据库管理基本操作,如建立账户、存取款、查询余额等。
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. 数据库架构数据库银行管理系统主要由客户信息数据库、账户信息数据库、交易记录数据库等组成。
客户信息数据库包括客户姓名、身份证号、联系方式等信息;账户信息数据库包括账户号、账户类型、余额等信息;交易记录数据库包括交易时间、交易金额、交易类型等信息。
2. 数据表设计设计客户信息表、账户信息表、交易记录表等数据库表,通过主键和外键建立表之间的关联关系,确保数据的一致性和完整性。
三、系统功能1. 客户管理实现客户信息的增删改查功能,包括客户信息的录入、修改、删除和查询操作,方便银行工作人员对客户信息进行管理。
2. 账户管理实现账户开户、销户、转账等功能,包括账户信息的增删改查操作,确保账户信息的准确性和安全性。
3. 交易管理实现用户之间的转账、存取款等交易功能,记录每笔交易的时间、金额和类型,确保交易记录的完整性和可追溯性。
四、安全性1. 用户身份认证通过用户名和密码进行用户身份认证,确保只有授权用户能够访问数据库银行管理系统的功能。
2. 数据加密对用户的敏感信息进行加密存储和传输,保障用户信息的机密性和安全性。
五、性能优化1. 索引优化为数据库表中的关键字段建立索引,提高数据检索和查询的速度,优化系统的响应性能。
2. 缓存优化利用缓存技术减少数据库的访问次数,提高系统的并发处理能力,优化系统的性能表现。
六、总结通过本次数据库银行管理系统课程设计,学生能够了解现代银行管理系统的设计原理和技术应用,掌握数据库设计、系统功能、安全性和性能优化等方面的知识,为未来的职业发展提供必要的技能和经验。
以上为数据库银行管理系统课程设计内容,希。
关于银行系统的数据库课程设计
目录一、目的与意义 (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)功能于一体。
银行数据库管理系统设计
《网络数据库》课程设计题目:银行管理系统数据结构设计与实现院系名称:管理学院专业班级:电子商务0901班学生姓名:笑嘻嘻学号: 200946900000 成绩评定:调查、资料收集情况(20%)专业知识应用情况(30%)论文、报告的创新性(35%)写作及排版的规范性(15%)总评2011年12 月30 日银行管理系统数据结构设计与实现一、所需软件:Microsoft SQL Server 2000二、目的和要求1.理解和掌握数据库原理的基本概念和思想;2.熟悉和掌握SQL Server 2000的基本操作;3.理解和掌握数据结构分析的基本方法与实现过程。
三、课程设计内容(一)选择银行管理信息系统为原型,分析并建立其数据结构。
1、银行管理信息系统的应用背景银行采购信息管理系统是用于银行管理物品采购信息的系统,该系统是银行内部的一个重要组成部分,它提供了一个全面的银行采购信息管理平台。
在现代银行业中,物品采购是一个控制银行成本,减少人力物力重复浪费的重要环节。
在此背景下,银行内部需要实现采购流程的自动化、统一管理和控制,通过系统开发来提高业务处理效率和实现风险管理。
其开发的主要功能是:当各部门需要采购物品时,先进行申报采购所需物品的基本信息,包括物品的种类、名称、数量等,然后通过申报审核、采购审批等环节,实现全行对所需物品的统一采购。
对已完成采购的物品进行入库、出库操作,库存信息包括物品的基本信息、出入库时间等,最后通过对物品的库存信息,进行后续的管理工作。
总体说来,银行采购信息管理系统就是通过申报、审核、审批、入库、出库等活动,解决多部门进行物品采购时存在的时间、数量、品种、价格等方面的矛盾,高效率的衔接各部门之间的采购环节,从而提高业务处理效率和实现风险管理。
2、银行管理信息系统的数据需求程序流程图:系统功能分析是在系统开发的总体任务的基础上完成。
本系统需要完成的功能主要有:对于用户,能够新建和删除用户,在操作过程中可以更改用户;对于账户部分,可以查询用户的信息,包括各种基本信息,活期余额定期账单等;对于账户操作部分,有活期存取款、定期存取款操作,在操作完成后存储相应的操作记录并能够查询操作记录等功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
武汉理工大学华夏学院课程设计报告书课程名称:《数据库系统原理》课程设计题目:银行储蓄管理系统数据库设计课程设计任务书学生姓名:专业班级:指导教师:工作单位:设计题目:银行储蓄管理系统数据库设计初始条件:本课程的设计的目的是通过实践使同学们经历数据库设计开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。
结合具体的开发案例,理解并初步掌握系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作能力。
要求完成的主要任务:要求学生根据所学的数据库原理与程序设计的知识,能够针对一个小型的银行储蓄管理系统,进行数据库系统的需求分析,概念结构设计、逻辑结构设计、物理结构设计,数据录入及测试等,完成题目要求的功能。
主要任务:用户有以下需求:建立读者档案;建立图书档案,建立书目索引;完成日常图书检索、借还工作,对读者档案、图书档案、借还系统的访问,必需进行身份验证。
具体要求如下:1.存折信息数据包括:存折的基本信息包括:户名、帐号、开户银行名称、开户日期、取款密码等。
2.账户存取明细数据包括:日期、摘要(现存、现支、转存、利息)、交易金额、余额、操作柜员编号。
3.检索系统能根据户名、账号、交易日期、金额等进行查询。
4.取款输入账号和密码后,能根据密码判断用户是否合法,能判断取款金额是否超过了账户余额,如果取款金额合法,就对该账号的余额信息进行更新。
5、存款输入账号和存款金额后,能更新该账号的余额。
6、转账输入账号和密码后,能根据密码判断用户是否合法,然后再输入对方的转账账户,并判断对方的转账账户是否合法,如果合法,再输入转账的金额,并能判断转账金额是否超过了账户余额,如果转账金额合法,就对该账号的余额信息以及对方的账户余额信息进行更新。
设计报告撰写格式要求:要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。
设计报告正文字数不少于0.2万字(不包括附录)第1级(章)题序和题名用黑体三号字,第2级(目)题序和题名用黑体小四号字,第3级(条)题序和题名用黑体小四号字,正文内容用宋体五号字(英文用新罗马体),多倍行距1.25。
报告内容一律使用A4打印纸计算机打印,页码在页下居中标明。
必须使用国家公布的规范字。
页面设置:上空2.5 cm,下空2.0 cm,左空2.5 cm,右空2.0cm(左装订)。
插图图面要整齐、美观,插图应与正文呼应,不能脱节。
每幅插图应有图序与图题,图序编号要连续,图序与图题间空一格且要放在插图下方居中处。
时间安排:消化资料、系统调查 1天系统分析、总体设计,实施计划、撰写报告3天演示、验收1天指导教师签字:2012年6月25日系主任签字:2012年6月25 日1.概述(设计题目与可行性分析)本软件实现银行的活期储蓄存款业务。
整套软件由客户端程序和服务器端程序构成,客户端运行在面向个人业务的银行柜台的电脑上,银行职员输入相关信息并通过网络通讯向服务器发送请求,并接受服务器端程序的应答显示处理的结果。
服务器端处理客户端的各种业务请求。
主要实现银行开户、销户、取款、存款、余额查询、转账、修改密码、打印账户明细记录等功能。
2.需求分析2.1 定义银行储蓄应用系统软件:基本元素为构成银行储蓄及相关行为所必须的各种部分。
需求:用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。
需求分析:包括提炼,分析和仔细审查已收集到的需求,以确保所有的风险承担者都明其含义并找出其中的错误,遗憾或其它不足的地方。
模块的独立性:是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的2.2 需求规格说明概览用户在进行存款取款的时候要做到高效高速地完成,计算机在这个过程中起到至关重要地作用,而我们的这个系统就是让计算机能够轻易地解决这一问题,用户需要存款并且快速将自己的使用信息记录下来,工作人员不用手写记录,人机交互中完成记录的输入。
用户取款的时候计算机能很快速的清算出用户余额数并快速取款并打印单据。
2.3产品的一般性描述现在的银行储蓄系统工作效率低,越来越不能满足广大人民群众的需要,人们希望能更方便更省时就可以办理储蓄业务;随着拥有多种银行卡的人群不断增长,人们急切希望有一种通用的银行卡以便随时随地在哪家银行都可以存款提款;现在计算机网络的高速发现使越来越多的人更喜欢在网购物、在家存款取款。
在这样的背景下,很明显现在的银行储蓄系统已经不能满足人们越益增长的需求,急切需要建立一个新的、高效的、方便的、互联的计算机储蓄系统。
2.4 产品功能外部功能:实现化窗口,查找及储蓄内部功能:同步,过滤,定位,识别存储帐户信息:所有帐户信息永久性保存在一个特定的磁盘文件之中。
在系统退出时,自动依据内存中存放的帐户信息映射表将所有帐户信息存入库文件之中。
保存时先将原有库文件进行备份,之后将现有帐户信息映射表存储为新的库文件。
读取帐户信息:所有帐户信息永久性保存在一个特定的磁盘文件之中。
在系统开始运行时首先自动打开该文件,将文件中的全部账户信息加载到内存中存放这些信息的帐户信息映射表中。
并且在提示面板中显示库文件载入成功的信息。
建立新帐户:通过建立新帐户面板输入一个新帐户的描述信息,并将该帐户添加到帐户信息映射表中,并以系统自动生成的唯一的帐户号作为键。
由于键值唯一且通过程序自动生成,因此不会出现即使其他信息全部相同,建立的新帐户也是不重复的。
所有帐户的公有描述信息包括:币种,初始存款额,用户名,用户身份证号,用户住址以及用户联系电话。
其中币种,用户信息以及除密码外的特有描述信息将不能更改。
2.5用户特征前台用户需要一定的计算机操作对数据操作有一定的要求,对于后台维护人员必须对银行大型数据库系统有深刻的认识能对数据库备份、灾难性恢复有一定的了解。
2.6运行环境适合windows 95 ,windows 98,windows xp,windows sp3、数据库:sql20052.7 功能划分软件分别有新建,修改,查询,更新等功能。
各个模块各有不同的功能,但都能完成查询和存储功能。
各模块的数据都存放在数据库中。
数据的条用和廉洁都有程序来完成。
此软件所要完成的主要功能有两方面:如果是存款,储蓄填写存款单,然后交给键入系统,同时系统还要记录存款人姓名,住址,身份证,号码,存款类型,存款日期。
利率及密码(可选)等信息,完成后由系统打印存款单给储户。
如果是取款,储户填写取款单交给业务员,业务员把取款金额输入系统要求储户输入密码以确认身份,核对密码正确无误后系统计算利息并印出利息清单给储户。
⑵功能描述外部功能:实现化窗口,查找及储蓄内部功能:同步,过滤,定位,识别存储帐户信息:所有帐户信息永久性保存在一个特定的磁盘文件之中。
在系统退出时,自动依据内存中存放的帐户信息映射表将所有帐户信息存入库文件之中。
保存时先将原有库文件进行备份,之后将现有帐户信息映射表存储为新的库文件。
读取帐户信息:所有帐户信息永久性保存在一个特定的磁盘文件之中。
在系统开始运行时首先自动打开该文件,将文件中的全部账户信息加载到内存中存放这些信息的帐户信息映射表中。
并且在提示面板中显示库文件载入成功的信息。
建立新帐户:通过建立新帐户面板输入一个新帐户的描述信息,并将该帐户添加到帐户信息映射表中,并以系统自动生成的唯一的帐户号作为键。
由于键值唯一且通过程序自动生成,因此不会出现即使其他信息全部相同,建立的新帐户也是不重复的。
所有帐户的公有描述信息包括:币种,初始存款额,用户名,用户身份证号,用户住址以及用户联系电话。
其中币种,用户信息以及除密码外的特有描述信息将不能更改。
定期存储帐户的特有描述信息为:定期存款方式信用卡帐户的特有描述信息为:信用卡密码结算存储帐户的特有描述信息为:结算汇款方式修改信用卡帐户密码:通过信用卡密码修改面板选择信用卡帐户并输入原始密码及更改密码可更改信用卡帐户密码。
建立用户身份信息资料:在建立新帐户过程中将输入用户的身份信息资料并与帐户信息一同存储。
用户的身份信息资料一经注册便不可修改。
存款功能:以储户的存款为主要活动,相关记录根据存款结果进行调整,以使信息保持一致。
系统需要在原帐户信息中增加一条记录,包括存款人姓名,住址,存款类型,存款日期,利率等信息。
若为新储户须建立一个帐户,并记录此次的记录。
打印存款给储户。
取款功能:系统计算利息,在原帐户信息中取款减去。
若为清户,记录注销该帐户,将帐户余额一并交与储户。
打印利息清单给储户余额查询功能:为储户提供查询余额服务,将储户的相关记录输出。
①需要储户的帐户信息及密码。
②打印储户的帐户余额更新功能:根据用户的存储数量,系统能够自动更新,并且应储户的需求修改密码并保存。
①需要储户输入帐户及密码,若想修改密码按下一个键,输入密码按确定,并且要求储户再次确认密码②系统保存储户信息,并且系统实现自动更新。
2.8用户界面屏幕格式:采用全屏格式,通过分窗口操作进行各个操作之间的转换报表格式:以银行原报表格式设计电子打印表格式。
菜单格式:下拉式菜单,应显示储户资料及帐户资料的各个详细条目。
2.9可维护性本软件利用数据库进行编程,系统结构由程序基本无额定,大量的参数及文本内容全部存放于数据库中。
修改,更新数据库只要在数据库进行修改添加,而不需要对系统结构进行修改,这样系统维护性升级都十分方便。
2.10可理解性本软件界面清晰简单,基本上可以实现鼠标完成日常的工作。
2.11可移植性本软件是运行在windows系统下的,只要拷贝好数据库再安装好银行系统就可以实现软件的移植。
3.概念结构设计3.1数据库表结构图3.2 客户端类图3.3 程序流程图4.逻辑结构设计和物理结构设计4.1客户端登录功能引言:客户端程序运行时,首先进行用户(银行职员)的合法性验证。
银行职员输入正确的用户名和密码后,进入系统主菜单界面。
用户有三次验证机会,超过三次程序直接退出。
用户名和密码需事先保存在程序的配置文件中,并且密码需进行加密保存。
4.2 客户端主菜单功能引言:显示银行的基本信息,例如银行支行的名称,地址,登录的银行职员的ID号等。
以上这些数据银行职员可以手工对相关的文本文件进行修改。
输出主菜单(包括开户、存款、取款、查询、转账、修改密码、销户、退出等功能)供操作用户选择,然后根据用户的输入选择进入不同的系统功能界面。
4.3 客户端开户功能引言:银行职员在客户端输入开户的基本信息,通过网络传送数据,在服务器处理后显示服务器端的处理结果。
开户成功后打印存折相关信息。
操作结束后返回主菜单界面。
存折的基本信息包括:户名、帐号、开户银行名称、开户日期等。