银行储蓄系统流程图
银行储蓄系统流程图
需求分析用户存款单填表错误存款单存款信息表需要密码密码信息表密码存款信息存款信息用户存单P1.1验收存款单P1.2更新存款信息P1.3处理存款P1.4打印存单不需要密码P1.2.1设置密码重新填写概要设计模块标识符模块功能控制关系身份验证模块G1 验证用户身份存款模块G2 银行业务员输入存款信息,系统进行存储取款模块G3 银行业务员输入取款信息,系统进行存储存款单打印模块G4 银行业务员输入存款信息并打印取款单打印模块G5 银行业务员输入取款信息并打印按用户名和ID查询模块G6 查询用户信息G1 G2 G3 G4G5 G6身份验证功能*存款功能*取款功能*存款单打印功能*取款单打印功能*按用户名和ID查询功能*[说明各个数据结构与访问这些数据结构的各个程序之间的对应关系。
][程序1] [程序2] [……] [程序m][数据结构1] √[数据结构2] √√...... …………[数据结构n] √√输出信息可能原因处理方法***不能为空***项忘记填写按照要求填写***项***不能重复***项数据库已有相应记录按照要求填写***项数据库连接不上等类似的提示信息数据库服务器关闭或者网络不通检查数据库服务器是否关闭,如关闭则启动,否则检查网络配置详细设计名称标识数据类型数据值输入方式用户ID customerid 字符键盘输入密码password 字符或数字键盘输入名称标识数据类型数据值输入方式存款金额cunkuancount 数字( Double )>0 键盘或鼠标名称标识数据类型数据值输入方式取款金额qukuancount 数字( Double )>0 键盘或鼠标名称标识数据类型数据值输入方式用户ID customerid 字符键盘输入用户名customername 字符、数字键盘输入测试分析报告。
银行储蓄系统数据流图
根据以下描述画出系统顶层图及细化数据流图。
银行储蓄系统存取款流程如下:
1.业务员事先录入利率信息。
2.如果是存款,储户填写存款单,业务员将存款单键
入系统,系统更新储户存款信息(存款人姓名、存款人账号、电话号码、身份证号码、存款金额、存款类型、利息、密码等),接下来打印存单给储户;
3.如果是取款,储户填写取款单,业务员将取款单键
入系统,系统根据储户提供的密码及取款单来核对储户密码,若密码正确,则系统更新储户存款信息,根据银行的利率信息计算利息,最后打印利息清单给储户。
对顶层数据流图进一步细化:。
数据库课程设计 银行储蓄管理系统
《数据库系统概论》课程设计报告设计题目:银行储蓄管理系统姓名:学号:班级:设计起止时间:需求分析:在对软件工程相关知识学习之后,我们对设计软件有了基本的认识和一些应用技能。
在数据库的课程设计中,我们计划做一个小型的银行储蓄管理系统,包括了基本的存取转,和管理员对日常工作的管理功能。
功能设计:(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 系统类图动态模型主要描述系统的动态行为和控制结构。
ATM存取款查询流程图
ATM 存取款查询流程图一、数据流图顶层数据流图0层数据流图一层数据流图操作完成二层数据流图 取款:查询:二、E-R图本系统功能管理如下:(1)用户管理:输入用户名、密码,进入操作界面。
(2)查询管理:你可以查询自己的用户信息,卡号以及账户余额等。
(3)修改用户信息管理:此管理中你可以修改你自己相应的信息,密码等。
(4)取款管理:输入相应要取款的金额,然后提交。
(5)转账管理:输入你自己的卡号,准确的金额以及对方的卡号进行转款管理。
(6)系统退出三、数据字典(1)用户信息=用户ID+用户姓名+性别+身份证号+住址+联系方式(2)银行卡信息=用户ID+用户姓名+卡号+密码+账户余额+开户日期用户ID=“1”..“9999999……”用户姓名=2{字母}24性别=“男”,“女”身份证号={数字}17+{字母,数字}1住址=省/市/区(县)联系方式=“00000000000”……“99999999999”或“00-0000-0000000”……“99-9999-99999999”卡号={数字}19密码=(“0”|“000001”..“999999”)账户余额=“0000000.01”..“9999999.99”开户日期=年+月+日年=“0001”..“9999”月=“01”..“12”日=“01”..“31”四、UML事件流:1、用户插入卡2、系统提示要求客户输入卡密码3、对用户输入的密码进行验证正确后,系统出现操作界面4、用户选择相应的操作5、系统进行处理6、处理完成后(非退出操作),系统再出现操作界面供用户选择ATM 类图ATM 系统存款顺序图: 客户需求分析报告1 引言1.1目的为了明确用户的需求并较好的与开发人员进行沟通,使用户与开发人员双方…….1.2、系统背景以及实验要求说明ATM自动柜员机(automatic teller machine)是银行在不同地点设置的一种小型机器,利用一张信用卡大小的胶卡上的磁带〔或芯片卡上的芯片〕记录客户的基本户口资料(通常就是银行卡,或称金融卡,或称提款卡),让客户可以透过机器进行提款、存款、转帐等银行柜台服务,大多数客户都把这种自助机器称为提款机。
银行储蓄系统流程图
需求分析用户存款单填表错误存款单存款信息表需要密码密码信息表密码存款信息存款信息用户存单P1.1验收存款单P1.2更新存款信息P1.3处理存款P1.4打印存单不需要密码P1.2.1设置密码重新填写概要设计模块标识符模块功能控制关系身份验证模块G1 验证用户身份存款模块G2 银行业务员输入存款信息,系统进行存储取款模块G3 银行业务员输入取款信息,系统进行存储存款单打印模块G4 银行业务员输入存款信息并打印取款单打印模块G5 银行业务员输入取款信息并打印按用户名和ID查询模块G6 查询用户信息G1 G2 G3 G4G5 G6身份验证功能*存款功能*取款功能*存款单打印功能*取款单打印功能*按用户名和ID查询功能*[说明各个数据结构与访问这些数据结构的各个程序之间的对应关系。
][程序1] [程序2] [……] [程序m][数据结构1] √[数据结构2] √√...... …………[数据结构n] √√输出信息可能原因处理方法***不能为空***项忘记填写按照要求填写***项***不能重复***项数据库已有相应记录按照要求填写***项数据库连接不上等类似的提示信息数据库服务器关闭或者网络不通检查数据库服务器是否关闭,如关闭则启动,否则检查网络配置详细设计名称标识数据类型数据值输入方式用户ID customerid 字符键盘输入密码password 字符或数字键盘输入名称标识数据类型数据值输入方式存款金额cunkuancount 数字( Double )>0 键盘或鼠标名称标识数据类型数据值输入方式取款金额qukuancount 数字( Double )>0 键盘或鼠标名称标识数据类型数据值输入方式用户ID customerid 字符键盘输入用户名customername 字符、数字键盘输入测试分析报告。
银行存取款数据流图PPT课件
计算利息 生成取款记录 销户
打印存款 单
校验、显示错 误
处理存款
校验、显示错误
第22页/共29页
总体设计
2、优化
•
为减少耦合,也为了使2.1.1和3.1.1作用域小于控制域,“校验”和“接收
存款”、“校验”和“接收取款”应合为一个模块。
•
“销户”太小,应和“生成取款记录”合为一个模块。
•
“生成流水号”、“处理存款”都是对D1操作,可合为一个模块。
有效事务记 录
更新后的存 款记录
第20页/共29页
需求分析
•
取款处理的IPO图:
取款事务 存款信息 底帐
1、校验事务记录 2、计算利息 3、更新底帐 4、更新存款记录
有效取款事务
更新后的底帐 更新后的存款记 录
第21页/共29页
总体设计
1、影射方案
存款控制
主控模块
取款控制
接收存款
生成流水号
打印存款单
第2页/共29页
问题的定义
• 取时,将上述信息输入到计算机中,计算机根据主关键字进行查找,如找到,计算利息并打印利息清单给 用户;如没找到,则给出相应的出错信息。为简化问题,可以认为储户一次性将本金和利息全部取完,进 行销户处理,应将其取款情况记录在“底帐”中。
第3页/共29页
可行性研究
1、提取信息
• 单击“打印”完成取款单的打印工作。即模 块3.4
• 单击“返回”释放返回主菜单。
第27页/共29页
Try Your Best!
第28页/共29页
感谢您的观看!
第29页/共29页
接收 存款 事务
记录 存款 信息
打印 存单
《银行储蓄系统》课件
储蓄系统的主要功能包括账户管 理、存款、取款、转账、查询等 ,为客户提供方便快捷的金融服 务。
系统的重要性与作用
01
02
03
安全性
保障客户资金安全,防止 资金被非法盗用或转移。
高效性
提高银行业务处理效率, 减少人工操作,降低成本 。
便利性
为客户提供24小时不间断 的服务,随时随地可以进 行交易操作。
确保银行储蓄系统的稳定、高效运行,提供优质服务,满足客户 需求。
运营模式
采用集中式或分布式运营模式,根据银行规模和业务需求进行选择 。
运营流程
制定系统运营流程,包括系统监控、数据备份、故障处理等环节, 确保系统正常运行。
系统维护与升级
维护内容
定期对银行储蓄系统进行检查、清洁、保养和维修,确保系统硬 件设备正常运行。
《银行储蓄系统》ppt课件
contents
目录
• 银行储蓄系统概述 • 银行储蓄系统的核心模块 • 银行储蓄系统的技术实现 • 银行储蓄系统的运营与管理 • 银行储蓄系统的未来展望
01
银行储蓄系统概述
系统定义与功能
定义
银行储蓄系统是指银行提供给客 户用于存款、取款、转账等交易 服务的计算机系统。
数据库设计与实现
数据库选型
根据系统需求选择合适的数据库 管理系统,如MySQL、Oracle等
。
数据表设计
详细描述数据表结构、字段、主键 、外键等,以及如何满足业务需求 。
索引优化
介绍如何通过合理使用索引提高数 据库查询效率。
前端技术实现
前端框架选择
介绍选择的前端框架及其特点, 如React、Vue等。
3
智能化服务
银行储蓄系统.pptx
4.对查询、统计的结果能够列表显示。 取款功能:
(1) 用户输入自己的密码 (2)业务员输入相关信息 (3)系统利息计算,在原账户信息中将取款额减去。 (4)若为清户,记录注销该账户,将账户余额一并交与 储户。 (5)打印利息清单给储户。 5.存款功能: (1)系统需要在原账户信息中增加一条记录,包括存款人姓名,存 款类型,存款日期,利息等信息。
组长:杨凯乾 组员:信 昕
王旭飞 王帅
• 需求分析 • 概念设计 • 逻辑结构设计 • 物理结构设计 • 数据库实施
需求分析
• 处理对象
银行信息表(银行号,银行名称,电话,地址) 储户资料表(储户号,姓名,身份证号,联系电话,账户) 工作人员资料表(工作人员信息,工号,密码) 存单(存款人姓名,存款银行,业务员编号,存款金额,存款日期,手续费, 帐户余额) 取单(取款人姓名,取款银行,受理业务员,取款金额,取款日期,手续费, 帐户余额) 余额表(帐户,交易种类,交易日期,剩余金额) 利息表(利率,存款日期,取款日期,存款种类)
• 定期取款表
主键:nID;外键:nID;被参照表:定期存款表 约束条件:各属性非空
• 定期操作记录表
主键:nID;外键:nID;被参照表:定期存款表,定期取款表 约束条件:各属性非空
流程图
概念设计
• 各个属性关系
姓名
登录密码
性别
储户
账户余额
身份证号
开户日期 开户地址
账号
取款金额 取款单 账号
• 各E-R图中联系的属性如下所示:
存款信息:Deposit (DepositID, DepositorID, DepositDate, Depositnum) 取款历史:Draw(DepositID,Depositpwd, Drawnum, DrawDate) 查询信息:Inquire(AccountID,Accountpwd, DepositorName, DepositorID,Accountnum)
银行存取款数据流图课件
Microsoft Visio是一款专业的数据流图绘制工具,提供了丰富的形状、模板和符号,支持创建各种类 型的图表,包括流程图、组织结构图、网络图等。Visio还支持导入和导出多种格式的文件,方便与其 他软件进行协作。
Lucidchart
总结词
在线绘图工具、易于使用
详细描述
Lucidchart是一款在线绘图工具,提供了丰富的模板和符号 ,支持绘制各种类型的图表,包括流程图、组织结构图、数 据流图等。Lucidchart还支持实时协作和版本控制,方便团 队成员共同编辑和修改图表。
数据流图定义
使用图形化方式展示系统 中数据的流动和处理过程 。
主要数据流
包括客户请求、交易处理 、结果反馈等。
数据流图示例
展示一个简单的存取款流 程,包括客户在ATM机上 输入信息、系统处理请求 、数据库更新等步骤。
数据流图分析
数据流图特点
直观、易于理解,能够清晰地展 示系统的数据处理流程。
数据流图分析内容
绘制分层数据流图
总结词
分层数据流图的构建
详细描述
根据顶层数据流图,进一步绘制分层数据流图,将各个业务功能细化为具体的处 理过程和数据流程。分层数据流图应清晰地展示数据的传递和处理过程,以及各 层之间的数据接口。
数据流图的优化与完善
总结词
数据流图的优化策略
详细描述
在绘制完分层数据流图后,需要对数据流图进行优化和完善。优化过程包括简化流程、调整数据流向、合并或拆 分功能等,以提高数据流图的清晰度和可维护性。同时,需要确保数据流图与实际业务处理流程的一致性。
SmartDraw
总结词
功能丰富、适合初学者使用
详细描述
SmartDraw是一款功能丰富的绘图软件,提供了各种类型的图表模板和符号,支持绘 制流程图、组织结构图、数据流图等。SmartDraw还提供了智能布局和自动对齐功能 ,使得绘图更加方便快捷。同时,SmartDraw还提供了丰富的导出和分享选项,方便
银行储蓄管理系统需求分析数据流图
利息
在数据变动之前自动计算上次利息并更新账目进行下一次账目管理
7
报表
对需要通过书面输出的信息进行整理打印
8
开户
为新用户开一个新
9
销户
为用户结算利息,并支出余额存款,并消除资料
10
管理
可对对银行的储蓄业务上的资金流进行分析和查询
附录1:数据流图
附录2:身份验证登记分类
登录系统名
操作项
身分验证需求
柜台操作系统
管理系统用户系统1层图储蓄员管理系统高级管理人员报表系统柜台系统员工登录用户资料表用户atm系统网上系统账目明细表打印输出查询反馈员工表外部系统转账转入接口账目明细表3取款查询身份检验插卡记录操作结果转账分类询问是否继续是是否打印凭条否打印凭条是否退卡用户打印凭条并吞卡三次密码错误是密码用户2层atm系统账目明细表修改密码4查询身份检验登陆转账或网上支付网上分类丢弃错误是网上银行密码用户或消费指令记录操作结果询问是否继续否用户是2层网上系统用户记录操作结果登折并签字询问是否继续否用户账目明细表账目明细表2层图柜台系统相关信息开户身份证取款修改密码存款转账查询销户卡或折身份检验分类是丢弃密码身份证是52层企业管理员2层系统管理员注由于系统管理员仅对系统进行维护并不影响数据库内的数据流向所以本数据流图不对系统管理员模块作数据流分析密码身份检验分类查询丢弃查询目前总余额查询某月至某月大额操作查询某月至某月的存款数查询某月至某月的取款数查询信息数据查询信息数据数据数据查询信息查询信息输入查询月份输入查询月份输入查询月份账目明细表高级管理员修改员工表员工表6金额判断计算利息收取现金计算上次利息金额比较转账计算利息密码核对查找所需信息存款金额及现金本用户帐户上次结余本次需要转出金额账号密码错误则丢弃需转出金额小于上次结余丢弃成功成功查询信息种类输出所查信息提示转帐成功错误返回出错信息选择退出或继续尝试输入金额继续尝试中止3层取款3层存款输入对方帐户信息3层转账3层查询7附录2身份验证登记分类操作项开户存款取款转账查询销户登录登陆登陆登陆登录系统名柜台操作系统身分验证需求身份证无密码密码密码身份证密码密码网上银行密码管理密码员工号员工密码atm操作系统网上银行操作系统管理员操作系统柜台工作人员系统
ATM数据流图
ATM数据流图ATM数据流图标准格式文本一、引言自动取款机(ATM)是一种现代化的银行服务设备,它为用户提供了方便快捷的取款、存款、查询余额等功能。
为了更好地理解和设计ATM系统的数据流,本文将按照标准格式,详细描述ATM数据流图的各个部份。
二、上下文图上下文图是ATM系统的总体概述,它展示了ATM系统与外部实体之间的交互关系。
下面是ATM系统的上下文图:(在此插入上下文图)在上下文图中,ATM系统被表示为一个单独的方框,与用户、银行和网络进行交互。
三、主要功能流程图主要功能流程图展示了ATM系统的核心功能和数据流动的过程。
下面是ATM 系统的主要功能流程图:(在此插入主要功能流程图)主要功能流程图包括以下几个步骤:1. 用户插入银行卡:用户将银行卡插入ATM机。
2. 验证身份:ATM机读取银行卡信息,并与银行数据库进行身份验证。
3. 选择操作:用户选择所需的操作,如取款、存款、查询余额等。
4. 处理操作:ATM机根据用户选择的操作,进行相应的处理,包括扣款、存款、更新余额等。
5. 输出结果:ATM机向用户显示操作结果,并打印相应的凭证。
四、子功能流程图子功能流程图展示了ATM系统中各个子功能的详细流程。
下面是ATM系统的子功能流程图:(在此插入子功能流程图)子功能流程图包括以下几个子功能:1. 取款功能:用户选择取款操作,输入取款金额,ATM机检查余额并进行扣款,然后输出结果。
2. 存款功能:用户选择存款操作,输入存款金额,ATM机进行存款操作,并更新余额,然后输出结果。
3. 查询余额功能:用户选择查询余额操作,ATM机查询余额并输出结果。
4. 转账功能:用户选择转账操作,输入收款账户和转账金额,ATM机进行转账操作,并更新余额,然后输出结果。
五、数据字典数据字典是ATM系统中使用到的数据和数据流的详细描述。
下面是ATM系统的数据字典:(在此插入数据字典)数据字典包括以下几个部份:1. 实体:包括用户、银行、ATM机等。
银行存取款数据流图PPT课件
业务员 事务
储蓄系 统
存款单
储户
利息清单
第5页/共29页
程序流程图实例
一层图
存款单
业务员
事务
区分事务
取款单
处理存款
存款单
储户
处理取款
利息清单
第6页/共29页
可行性研究
二层数据流图(自己写上数据流名)
接收 存款 事务
记录 存款 信息
打印 存单
区
业务员
分
D1 存款信息
事
务
更新存
接收
计算
款记录
取款 事务
有效事务记 录
更新后的存 款记录
第20页/共29页
需求分析
•
取款处理的IPO图:
取款事务 存款信息 底帐
1、校验事务记录 2、计算利息 3、更新底帐 4、更新存款记录
有效取款事务
更新后的底帐 更新后的存款记 录
第21页/共29页
总体设计
1、影射方案
存款控制
主控模块
取款控制
接收存款
生成流水号
打印存款单
第11页/共29页
可行性研究 名字:取款单 别名:底账 描述:客户在银行存款期间内应得到的利息 定义:取款单=存款单+取款日期+利息 位置:底账,打印机
第12页/共29页
可行性研究
名字:取款日期 别名: 描述:何时将款取出银行 定义:取款日期=8{数字}8 位置:取款单
名字:利息 别名: 描述:存取款期间内应得利息总计 定义:利息=1{数字}8 位置:取款单
第13页/共29页
可行性研究
4、E-R图(自己加上属性)
m 储户
存取款
银行计算机储蓄系统需求分析解读
日期:2009.1输入:储户姓名、住址、存款金额、取款金额。
输出:储户姓名、存款金额、存款日期、取款金额、取款日期账户余额、利率、利息
处理:账户余额=存入金额+利息-取出金额
利息=本金*利率*年利率
银行计算机储蓄系统需求分析
为方便储户,某银行拟开发计算机储蓄系统。储户填写的存款单或取款单由
业务员输入系统;如果是存款,系统记录存款人姓名,住址,存款类型,存款日
期,利率等信息,并印出存款单给储户;如果是取款,系统计算利息并印出利息
清单给储户。
一沿数据流图回溯
数据流图如下:
存款信息
存款单银行
存款信息
储蓄系统
D1存款信息
取款单存款信息利息清
存款利息
信息值
储户用卡取款时不能直接取款,要先填取款表,交给业务员输入资料,再由储户输入密码以确认身份,还要在取款表单上签名以再次确认,最后才业务员才把现金交给储户。
系统流程图:
二写出文档初稿
E-R图
N M
N N
1 M
数据字典
IPO图
系统:银行储蓄系统作者:王鹏
四细化数据流图
细化的数据流图如下:
存款流程图
D1存款信息
填表存款
出错信息
存款单
(存折)存款单
密码D2密码
存单存款信息
取款流程图
有误错误
密码
取款单需要密码D1密码
(或银行卡)
取款清单取款信息余额信息
现金
D3取款信息D2余额信息
五书写正式文档
数据流图细化之后,组成系统的各个元素之间的逻辑关系更清楚了,以细化后的数据流图为基础,对系统需求做进一步分析。随着分析过程的进展,通过询问与回答的反复循环,将把目标系统定义得越来越准确。最终,用正式文档“软件需求规格说明书”准确地记录下来。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
需求分析
用户
存款单
填表
错误
存款单
存款信息表
需要
密码
密码信息表
密码
存款信息
存款信息
用户
存单
P1.1
验收
存款单
P1.2
更新存款
信息
P1.3
处理存款
P1.4
打印
存单
不需要密码
P1.2.1
设置密码
重新填写
概要设计
模块标识符模块功能控制关系身份验证模块G1 验证用户身份
存款模块G2 银行业务员输入存款信息,系统进行存储
取款模块G3 银行业务员输入取款信息,系统进行存储
存款单打印模块G4 银行业务员输入存款信息并打印
取款单打印模块G5 银行业务员输入取款信息并打印
按用户名和ID查询模块G6 查询用户信息
G1 G2 G3 G4G5 G6
身份验证功能*
存款功能*
取款功能*
存款单打印功能*
取款单打印功能*
按用户名和ID查询功能*
[说明各个数据结构与访问这些数据结构的各个程序之间的对应关系。
]
[程序1] [程序2] [……] [程序m]
[数据结构1] √
[数据结构2] √√
...... …………
[数据结构n] √√
输出信息可能原因处理方法
***不能为空***项忘记填写按照要求填写***项***不能重复***项数据库已有相应记录按照要求填写***项
数据库连接不上等类似的提示信息数据库服务器关闭或者网络
不通
检查数据库服务器是否关闭,
如关闭则启动,否则检查网络
配置
详细设计
名称标识数据类型数据值输入方式用户ID customerid 字符键盘输入密码password 字符或数字键盘输入
名称标识数据类型数据值输入方式存款金额cunkuancount 数字( Double )>0 键盘或鼠标
名称标识数据类型数据值输入方式取款金额qukuancount 数字( Double )>0 键盘或鼠标
名称标识数据类型数据值输入方式用户ID customerid 字符键盘输入用户名customername 字符、数字键盘输入
测试分析报告。