银行数据库表的设计Word下载.docx

上传人:b****6 文档编号:19119750 上传时间:2023-01-03 格式:DOCX 页数:11 大小:29.59KB
下载 相关 举报
银行数据库表的设计Word下载.docx_第1页
第1页 / 共11页
银行数据库表的设计Word下载.docx_第2页
第2页 / 共11页
银行数据库表的设计Word下载.docx_第3页
第3页 / 共11页
银行数据库表的设计Word下载.docx_第4页
第4页 / 共11页
银行数据库表的设计Word下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

银行数据库表的设计Word下载.docx

《银行数据库表的设计Word下载.docx》由会员分享,可在线阅读,更多相关《银行数据库表的设计Word下载.docx(11页珍藏版)》请在冰豆网上搜索。

银行数据库表的设计Word下载.docx

numeric(20,3)

银行余额

2).客户信息表(custom)

Cid

客户ID

Cname

nchar(10)

客户姓名

Cpass

密码

Ctime

注册时间

所在银行行号外码(Bank(Bid))

Crmoney

numeric(10,3)

账户余额

Cphone

nchar(11)

客户电话

(3).员工(管理员)表(staff)

Sid

员工ID

Sname

员工姓名

Spass

登陆密码

SItime

入行时间

Sphone

联系电话

(4).流水信息表

Oid

流水号

客户ID外码(Custom(Cid)

银行ID外码(Bank(Bid)

员工ID外码(Staff(Sid))

Otype

smallint

操作类型

Otime

操作时间

Omoney

yes

交易金额

OBmoney

上次余额

OAmoney

三个实体:

bank,staff,custom

一个联系:

operate关系图:

程序代码:

客户部分:

a.voidCClientDlg:

:

OnButtonIn()

//存款函数

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CInDlgInDlg;

if(InDlg.DoModal()==IDOK)

{doubletemp,temp1;

ADOConnado;

CStringsql="

select*from

CustomwhereCname='

"

+Cname+"

'

;

_RecordsetPtrResultSetado.GetRecordSet((_bstr_t)sql);

CStringstr(LPCTSTR)(_bstr_t)ResultSet->

GetCollect("

Crmoney"

);

CStringbid(LPCTSTR)(_bstr_t)ResultSet->

Bid"

CStringstr4(LPCTSTR)(_bstr_t)ResultSet->

Cid"

CStringstr2=

//将交易前钱数暂存temp=atof(str);

temp1=(double)InDlg.m_InNum;

temp+=temp1;

str.Format("

%f"

temp);

CStringstr3=

//暂存交易后金额

str;

set

sql="

updateCustom

+"

where

Crmoney='

+str+"

Cname='

ado.ExecuteSQL((_bstr_t)sql);

selectcount(*)numfromOperate"

ResultSetado.GetRecordSet((_bstr_t)sql);

intnumatoi((LPCTSTR)(_bstr_t)ResultSet->

GetCollect("

num"

));

str="

240600"

CStringOid,Cid,Sid,Bid,Otime,Omoney,OAmoney,OBmoney;

Oid.Format("

%d"

++num);

Oid=str+Oid;

Sid="

7985001"

Bid=bid;

doubletemp2;

select*fromBankwhereBid='

+Bid+"

CStringbmoney

(LPCTSTR)(_bstr_t)ResultSet->

Bmoney"

temp2

atof(bmoney);

temp2+=temp1;

bmoney.Format("

temp2);

Bankset

updateBmoney='

+bmoney+"

Bid='

CStringOtype="

存款"

CStringm_time;

CTimetime;

time=CTime:

GetCurrentTime();

m_time=time.Format("

%Y年%m月%d日%X"

Otime=m_time;

intflag=0;

Omoney.Format("

temp1);

OAmoney=str2;

OBmoney=str3;

sql.Format("

insertintoOperatevalues('

%s'

'

%d,%s,%s,%s)"

Oid,str4,Bid,Sid,Otype,m_time,flag,Omoney,OAmoney,OBmoney);

ado.ExecuteSQL((_bstr_t)sql)

ado.ExitConnect();

}}

b.voidCClientDlg:

OnButtonGet()

//取款函数

{//TODO:

CGetDlgGetDlg;

if(GetDlg.DoModal()==IDOK){doubletemp,temp1;

select*fromCustomwhereCname='

_RecordsetPtrResultSet=

ado.GetRecordSet((_bstr_t)sql);

CStringstr=

GetCollect("

CStringbid=(LPCTSTR)(_bstr_t)ResultSet->

CString

str4

(LPCTSTR)(_bstr_t)ResultSet->

GetCollect("

CStringstr2=str;

//将交易前钱数暂存temp=atof(str);

temp1=(double)GetDlg.m_GetNum;

if(temp>

temp1)

{temp-=temp1;

te

mp);

CStringstr3=str;

//暂存交易后金额

updateCustomseCrmoney='

"

whereCname='

+Cname+

selectcount(*)num

fromOperate"

ResultSet=ado.GetRecordSet((_bstr_t)sql)intnum=atoi((LPCTSTR)(_bstr_t)ResultSet->

str="

CStringOid,Cid,Sid,Bid,Otime,Omoney,OAmoney,OBmoney;

ResultSet=ado.GetRecordSet((_bstr_t)sql);

CStringbmoney=(LPCTSTR)(_bstr_t)ResultSet->

Bmoney"

temp2=atof(bmoney);

temp2-=temp1;

bmoney.Format("

updateBanksetBmoney='

+bmoney+"

where

Bid='

取款"

%Y年%m月%d日%X"

OAmoney=str2;

insertintoOperate

values('

Oid,str4,Bid,Sid,Otype,m_time,flag,Omoney,OAmoney,OB

money);

ado.ExecuteSQL((_bstr_t)sql);

ado.ExitConnect();

}else{AfxMessageBox("

账户余额不足!

}}}

c.voidCClientDlg:

OnButtonTurn()

{/TODO:

CTurnDlgTurnDlg;

if(TurnDlg.DoModal()==IDOK){ADOConnado;

select*fromCustom"

_RecordsetPtrResultSet=ado.GetRecordSet((_bstr_t)sql);

intflag=0;

while(!

ResultSet->

adoEOF)

CStringTCusId=(LPCTSTR)(_bstr_t)ResultSet->

CStringTCusMon=

//收钱客户在

操作前的余额

CStringstr5=TCusMon;

TCusId.Remove('

'

if

(TCusId==TurnDlg.m_TurnId)

select*fromCustomwhere

CStringstr=(LPCTSTR)(_bstr_t)ResultSet->

CStringbid=

CStringstr4=

//将交易前

钱数暂存temp=atof(str);

temp1=(double)TurnDlg.m_TurnNum;

//暂存交易后金

{flag=1;

temp-=temp1;

//住客户钱数减少str.Format("

Customset

updateCrmoney='

Cname='

do.ExecuteSQL((_bstr_t)sql);

temp=atof(TCusMon);

钱客户钱数增加temp+=temp1;

TCusMon.Format("

="

//收

sq

+TCusMon+"

whereCid='

+TCusId+"

sql"

ResultSetado.GetRecordSet((_bstr_t)sql);

intnum=atoi((LPCTSTR)(_bstr_t)ResultSet->

GetCollect("

intOtype;

Oid.Format("

Otype=2;

CStringm_time;

%Y年%m月%d日%X"

Omoney.Format("

OAmoney=str2;

OBmoney=str3;

%d,'

%s,%s,%s)"

Oid,str4,Bid,Sid,Otype,m_time,Omoney,OAmoney,OBmoney);

TCusId,str4,Bid,Sid,Otype,m_time,Omoney,str5,TCusMon);

break;

}else{AfxMessageBox("

账户余额不足!

break;

}}ResultSet->

MoveNext();

}if(flag==0){AfxMessageBox("

该账户不存在!

d.void

CClientDlg:

OnButtonHistoy()

//历史记录查询

CShowHistoryshowDlg;

showDlg.Cname=Cname;

showDlg.DoModal();

}

e.voidCClientDlg:

OnButtonAlter()

CAlterDlgalteDlg;

if(alteDlg.DoModal()==IDOK)

{if(alteDlg.m_AItem==0)

{if

(alteDlg.m_Alter1==alteDlg.m_Alter2){

CStringsql="

updateCustomsetCname='

+alteDlg.m_Alter1+"

ado.ExecuteSQL((_bstr_t)sql);

AfxMessageBox("

姓名修改成功!

}

else{AfxMessageBox("

两次姓名输入不一致,请重新输入!

elseif(alteDlg.m_AItem==1)

(alteDlg.m_Alter1==alteDlg.m_Alter2){ADOConnado;

updateCustomset

Cpass='

ado.ExecuteS

QL((_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)

update

CustomseCphone='

whereCname='

电话号码修改成功!

电话号码格式

!

}}else

{AfxMessageBox("

两次电话输入不一致,请重新输入!

}}}}

心得体会:

这次课程设计体会非常深刻,首先在团队合作方面,我觉得自己作为队长没有两道好我的小队,这是我的失职。

因此导致我们小队没有按时完成任务,在这里我向老师道歉。

其次在本次课程设计中我们在设计表的时候使用了级联删除,级联更新,外码以及视图等数据库功能。

这个过程中我又了解到了数据的一字儿基础知识,把自己以前在认知上有盲点的地方又重新学习了一次。

并且看到了数据库对数据处理的方便,对于其中封装的好多方法以及其他的对表格进行处理的方式需要我们更进一步的去学习。

在MFC工程中,我是用的是ADO链接数据库。

既可以在工程中直接使用SQL语言对数据库进行操作。

以前我也用过ODBC的方法这次深刻感觉到了ADO方法的方便好用。

而且对自己在大二所学的VC工程的方法又进行了温习,为了让自己的如阿健界面看起来更友好,我更换了字体,并且在按钮、编辑框、静态框的排列上也下了一番功夫。

嘿嘿,看到自己做的这样一个工程现在内心还是有一点小激动的。

问题:

在对表的关系处理,表与表之间的连接让我们大为头疼。

因为有时候一个表的字段的修改或是字段的增加都要重新进行表的创建与联系的创建。

到现在为止我觉得我们的表还需要更多的改进。

杜青峰:

任务:

我主要负责数据库的设计工作,并协助完成了管理员业务功能的设计。

数据库方面,我主要完成了建表,业务功能方面,我设计了VIP分级、员工绩效统计、银行储备金预期这三个管理员业务。

在设计表的初期,我查阅了很多前人设计好的银行管理系统,选择了一个只有存款取款功能的模型。

初期的时候一度错误的把银行实体给删掉了,只设计了账户、员工、流水三张表,导致后来在业务逻辑的实现是处处感觉不完善。

后来又经过学习,发现银行作为一个重要实体必不可少。

在设计管理员业务的时候,我也与学习会计的同学进行了学习。

在实现VIP分级的时候,加入了细节上的设计。

比如,当一个身份证号上绑定了三个或三个以上的空账号,那就把账号的VIP字段设置为一个Normal评级,持有该身份证的用户登录时,会弹出规劝取消空账户的提醒。

在存款储备金的预期分析功能中,我起初简单的设计了,将头天的取款数的二倍,作为第二天该银行储备金。

但是后来一分析,存取款数额在一年中是有季节时间上的规律的,所以应该用去年同期的数据作为主要参考数据,而不能简单的使用前一天数据。

后来我注意到,银行系统的数据必须得有很高的精确性,所以数据库使用的数据必须相当的精准才行,比如身份证号必须设置为十六位。

通过这次数据库课设,我对数据库的一些知识有了更加深刻的认识,比如建立视图的好处等等。

我对银行的业务逻辑也有了全新的认识。

当然在团队合作中也学到了不少东西。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1