ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:263.99KB ,
资源ID:8307319      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8307319.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(银行数据库表的设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

银行数据库表的设计.docx

1、银行数据库表的设计银行数据库表的设计系统需求分析:1.在学习了数据库之后,为了更进一步巩固所学知识,将其用于实践,我们选择了银行管理系统,来完成最基本的一些操作。2.功能 (1).客户:包括存款,取款,转账,查询余额,查看流水,密码修改这些功能 (2).管理员: 1.新增用户 2 .删除 3.查看 4.员工绩效(就是根据流水表中的员工号,select出员工一天内做的所有单,用 来考评绩效) 5.VIP判别(就是账户存储资金大于某个值的时候在账户表的一个字段上赋值为VIP) 6.资金储备金判别,当库存资金总数小于一个值的时候,系统对管理者要提出风险警告。3.功能流程图:详细设计:1.E-R图模型

2、2.根据E-R图设计关系表 (1).银行信息表(bank)字段名字段类型及长度允许空主键 说明Bid nchar(9) no PK银行号Bname nchar(20) no银行名Bmoney numeric(20,3) no银行余额 (2).客户信息表(custom)字段名字段类型及长度允许空主键 说明Cid nchar(9) no PK 客户IDCname nchar(10) no 客户姓名Cpass nchar(10) no 密码Ctime nchar(20) no 注册时间Bid nchar(9) no 所在银行行号 外码(Bank(Bid)Crmoney numeric(10,3) n

3、o 账户余额Cphone nchar(11) no 客户电话 (3).员工(管理员)表(staff)字段名字段类型及长度允许空主键 说明Sid nchar(9) no PK 员工IDSname 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(B

4、id)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关系图:程序代码:客户部分:a. void CClientDlg:OnButtonIn() /存款函数 / TODO: Add your control notification handl

5、er code here CInDlg 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)ResultS

6、et-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)

7、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 *

8、 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 = 存款;

9、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,OB

10、money);ado.ExecuteSQL(_bstr_t)sql);ado.ExitConnect(); b. void CClientDlg:OnButtonGet() /取款函数/ TODO: Add your control notification handler code here CGetDlg GetDlg; if (GetDlg.DoModal()=IDOK) double temp,temp1; ADOConn ado; CString sql = select * from Custom where Cname=+Cname+; _RecordsetPtr ResultS

11、et = 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

12、temp1) 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); s

13、tr = 240600; CString Oid,Cid,Sid,Bid,Otime,Omoney,OAmoney,OBmoney; Oid.Format(%d,+num); Oid=str+Oid; Sid=7985001Bid = 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(b

14、money); 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);OA

15、money = 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();elseAfxMessageBox(账户余额不足!); c. void CClientDlg:OnButtonTurn() / TODO: Add your control notifica

16、tion handler code here CTurnDlg 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 = (LPCT

17、STR)(_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);CS

18、tring 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 (temptemp1)flag = 1; temp-=temp1; /住客户钱数减少str.Format(%f,temp);CString str3 = str; /暂存交易后金额sql = update Cus

19、tom 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(_b

20、str_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

21、日 %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,

22、str4,Bid,Sid,Otype,m_time,Omoney,str5,TCusMon); ado.ExecuteSQL(_bstr_t)sql);ado.ExitConnect();break; elseAfxMessageBox(账户余额不足!); break; ResultSet-MoveNext();if(flag=0)AfxMessageBox(该账户不存在!); d. void CClientDlg:OnButtonHistoy() /历史记录查询/ TODO: Add your control notification handler code here CShowHisto

23、ry showDlg; showDlg.Cname = Cname;showDlg.DoModal();e. void CClientDlg:OnButtonAlter() / TODO: Add your control notification handler code here CAlterDlg alteDlg; if(alteDlg.DoModal()=IDOK) if (alteDlg.m_AItem=0) if (alteDlg.m_Alter1=alteDlg.m_Alter2) ADOConn ado; CString sql = update Custom set Cnam

24、e=+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+ where Cname=+Cname+;ado.ExecuteSQ

25、L(_bstr_t)sql); AfxMessageBox(密码修改成功!); elseAfxMessageBox(两次密码输入不一致,请重新输入!); 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 set Cphone=+alteDlg.m_Alter1+ where Cname=+Cname+; ado.ExecuteSQL(_bstr_t)s

26、ql); AfxMessageBox(电话号码修改成功!); else AfxMessageBox(电话号码格式不对!); else AfxMessageBox(两次电话输入不一致,请重新输入!); 高磊磊:心得体会:这次课程设计体会非常深刻,首先在团队合作方面,我觉得自己作为队长没有两道好我的小队,这是我的失职。因此导致我们小队没有按时完成任务,在这里我向老师道歉。其次在本次课程设计中我们在设计表的时候使用了级联删除,级联更新,外码以及视图等数据库功能。这个过程中我又了解到了数据的一字儿基础知识,把自己以前在认知上有盲点的地方又重新学习了一次。并且看到了数据库对数据处理的方便,对于其中封装的

27、好多方法以及其他的对表格进行处理的方式需要我们更进一步的去学习。在MFC工程中,我是用的是ADO 链接数据库。既可以在工程中直接使用SQL语言对数据库进行操作。以前我也用过ODBC的方法这次深刻感觉到了ADO方法的方便好用。而且对自己在大二所学的VC工程的方法又进行了温习,为了让自己的如阿健界面看起来更友好,我更换了字体,并且在按钮、编辑框、静态框的排列上也下了一番功夫。嘿嘿,看到自己做的这样一个工程现在内心还是有一点小激动的。问题:在对表的关系处理,表与表之间的连接让我们大为头疼。因为有时候一个表的字段的修改或是字段的增加都要重新进行表的创建与联系的创建。到现在为止我觉得我们的表还需要更多的

28、改进。杜青峰:任务: 我主要负责数据库的设计工作,并协助完成了管理员业务功能的设计。数据库方面,我主要完成了建表,业务功能方面,我设计了VIP分级、员工绩效统计、银行储备金预期这三个管理员业务。心得体会:在设计表的初期,我查阅了很多前人设计好的银行管理系统,选择了一个只有存款取款功能的模型。初期的时候一度错误的把银行实体给删掉了,只设计了账户、员工、流水三张表,导致后来在业务逻辑的实现是处处感觉不完善。后来又经过学习,发现银行作为一个重要实体必不可少。在设计管理员业务的时候,我也与学习会计的同学进行了学习。在实现VIP分级的时候,加入了细节上的设计。比如,当一个身份证号上绑定了三个或三个以上的

29、空账号,那就把账号的VIP字段设置为一个Normal评级,持有该身份证的用户登录时,会弹出规劝取消空账户的提醒。在存款储备金的预期分析功能中,我起初简单的设计了,将头天的取款数的二倍,作为第二天该银行储备金。但是后来一分析,存取款数额在一年中是有季节时间上的规律的,所以应该用去年同期的数据作为主要参考数据,而不能简单的使用前一天数据。后来我注意到,银行系统的数据必须得有很高的精确性,所以数据库使用的数据必须相当的精准才行,比如身份证号必须设置为十六位。通过这次数据库课设,我对数据库的一些知识有了更加深刻的认识,比如建立视图的好处等等。我对银行的业务逻辑也有了全新的认识。当然在团队合作中也学到了不少东西。

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

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