数据库课程设计报告银行管理系统方案.doc
. . 摘要银行管理系统在无论在网络上,还是各种管理系统软件的资料上都有讲解,而且均非常详细,其难度也可想而知。这次课程设计时间紧迫,另外作者本身能力也十分有限,只能完成银行管理系统中的少量功能,所以该系统还有很多有待扩充及完善的地方,有不妥善的地方还请老师指点。这些应出现在总结,在此应简要说明选题的目的及意义这次课程设计只是达到训练、牢固知识的目的,熟悉数据库的前台和后台编程、VC+的控件、如何访问数据库等方面的知识,所以实现的功能也很有限,待以后随着知识的积累,慢慢地扩充完善该系统。本系统采用了可视化的集成开发环境Visual C+ 6.0编辑用户操作界面、以SQL Sever为后台数据库并以CRecordSet类访问数据库信息的管理系统,该系统能够完成用户的建立、用户存取款、数据备份与恢复等基本功能。关键字:SQL数据库、SQL语言、VC+、银行管理系统目 录1绪论1.1 选题目的及意义11.2 设计容12需求分析2.1 功能需求12.2 数据需求12.3 其他需求13数据库设计3.1概念结构设计23.2逻辑结构设计23.3物理结构设计24 系统功能设计45系统实现5.1 开发环境45.2 主要功能的运行结果及代码46总结18参考文献页码再核对一下1 绪论1.1选题的目的及意义银行管理系统:该系统要求建立的用户表并不是很多,完成的功能也相对有限,但其中各个表之间的联系很紧密,该系统对数据库表的设计要求会很高,所以完成这个题目,能更好的训练数据库设计和VC的编程能力,选择该题目就是充分训练数据库表设计的能力和运用VC的能力。1.2 设计容用户管理模块:建立新用户、删除老用户、更改用户操作;账户操作模块:账户信息、活期存取款操作、查询活期操作记录、定期存款、定期取款、查询定期操作记录;数据库模块:数据库备份、数据库恢复;2 需求分析2.1 功能需求对于用户部分,能够新建和删除用户,在操作过程中可以更改用户;对于账户部分,可以查询用户的信息,包括各种基本信息、活期余额、定期账单等;对于账户操作部分,有活期存取款、定期存取款操作,另外操作完成之后存储相应的操作记录并能够查询操作记录等功能。2.2 数据需求账户信息:varchar<20>,开户人varchar<20>,账户密码char<6>,身分证号varchar<20>,账户余额float,开户日期datetime,开户地址varchar<30>;活期操作:varchar<20>,金额float,类型<存入,支出>,账户余额float,利息float,存入日期datetime;定期存款:varchar<20>,存款人varhcar<10>,存款金额float,存款日期datetime,存储年份int,存储利率float;定期取款:varchar<20>,取款人varhcar<10>,取款金额float,取款日期datetime;定期历史操作记录:varchar<20>,存取款人varhcar<10>,类型<存入,支出>,办理日期datetime,存储年份int,存储利率float;2.3 其它需求完成数据库的备份与恢复,系统登录对话框等功能。3. 数据库设计3.1概念结构设计活期存取款存储XX银行储户开户地址XX性别XX余额开户日期密码XX号定期存取款定期操作记录活期操作记录 银行管理系统E-R图3.2 逻辑结构设计储户<,密码,号,性别,余额,开户日期,开户地址>;活期存取款<nID,金额,类型,办理日期,利息,账户余额>;定期存款<nID,存款人,金额,存储年份,年利率,存储日期>;定期取款<nID,取款人,取款金额,取款日期>;定期记录<nID,存取款人,类型,操作金额,年份,操作日期>3.3 物理结构设计储户表序号字段名称字段描述数据类型长度属性1CNoVarchar20PK2CName开户人Varhcar20非空3CPassword登录密码Char6非空4CID号Varchar20非空5CSex性别Char 2非空6CBalance余额Float8非空7CDate开户日期Datetime8非空8CAddress开户地址Varchar30非空主键:;约束条件:各属性均非空,密码长度为6位;活期存取款表序号字段名称字段描述数据类型长度属性1nID序号Int4PK2CNoVarchar20非空3CMoney操作金额Float8非空4CStyle操作类型Varchar10非空5CDate操作日期Datetime8非空6CInterest利息Float8非空7CBalance余额Float8非空主键:nID;外键:;被参照表:储户表约束条件:各属性均非空;定期存款表序号字段名称字段描述数据类型长度属性1nID序号Int4PK2CNoVarchar20非空3CName存款人Varchar10非空4CMoney存款金额Float8非空5CDate存款日期Datetime8非空6CYear存储年份Int4非空7CRate存储利率Float8非空主键:nID;外键:;被参照表:储户表约束条件:各属性均非空;定期取款表序号字段名称字段描述数据类型长度属性1nID序号Int4PK2CNoVarchar20非空3CName取款人Varchar10非空4CMoney取款金额Float8非空5CDate取款日期Datetime8非空主键:nID;外键:nID;被参照表:定期存款表约束条件:各属性非空定期操作记录表序号字段名称字段描述数据类型长度属性1nID序号Int4PK2CNoVarchar20非空3CName存取款人Float8非空4CStyle操作类型Char4非空5CMoney存取款金额float8非空6CYear存储年份Int4非空7CDate存取款日期Datetime8非空主键:nID;外键:nID;被参照表:定期存款表,定期取款表约束条件:各属性非空4.系统功能设计银行管理系统银行账户系统管理理新建账户删除账户更改账户账户管理退出系统账户操作查看账户信息活期操作定期操作活期存取款查看历史记录定期存款定期取款查看历史记录数据库管理数据库备份数据库恢复账户登录,身份验证图4-1银行管理系统功能结构图5 .系统实现5.1 系统开发环境软件:SQL Sever 2000,VC+6.0操作系统:Window XP硬件:Pentiun 4 DDR 512MB 120G硬盘5.2主要功能的运行结果及代码数据库创建过程及其连接<1>.进入企业管理器窗口,选择"新建SQL Sever注册";<2>.选中"数据库"文件夹,单击鼠标右键,选择"新建数据库",输入数据库名Bank;<3>.单击"确定"按钮,关闭对话框,数据库创建成功。完成"账户登录"的窗口ID控件类型成员变量说明IDC_EDIT1CStringm_strNo用户IDC_EDIT1CEditm_ctrNoIDC_EDIT2CStringm_strPassword登录密码IDC_EDIT2CEditm_ctrPasswordIDC_EDIT3CStringm_strRePassword确认密码IDC_EDIT3CEditm_ctrRePasswordIDOK"OK"按钮IDCANCLE"Cancle"按钮(1) 添加记录集类CAccountSet类,基类为CRecordSet,数据表为account表;<2> 在CLoginDlg类中添加CAccontSet类的成员变量m_recordset;<3> 为"CBankApp"类添加为CString型的成员变量strNO;<4> IDOK控件的消息响应函数:void CLoginDlg:OnOK<> UpdateData<TRUE>if <m_strNo = "">MessageBox<"Please Input the Account Number!">m_ctrNo.SetFocus<>return ;if <m_strPassword = "">MessageBox<"Please Input the Password!">m_ctrPassword.SetFocus<>return ;if <m_strRePassword = "">MessageBox<"Please Input the Confirm Password!">m_ctrRePassword.SetFocus<>return ;if <m_strPassword != m_strRePassword>MessageBox<"Two Passwords Are Differed!">m_strPassword = ""m_strRePassword = ""UpdateData<FALSE>m_ctrPassword.SetFocus<>return ;CString strSQL;strSQL.Format<"select * from Account where CNo = '%s'",m_strNo>if <!m_recordset.Open<AFX_DB_USE_DEFAULT_TYPE,strSQL>>MessageBox<"Open Database Filed!","Database Error",MB_OK>return ;if <m_recordset.m_CPassword != m_strPassword>MessageBox<"Password Error! Please Rewrite!">m_recordset.Close<>m_strPassword = ""m_strRePassword = ""UpdateData<FALSE>m_ctrPassword.SetFocus<>return ;CBankApp * ptheApp = <CBankApp *> AfxGetApp<>ptheApp->strNo = m_strNo;CDialog:OnOK<><5> 在"CBankApp"类中的"InitInstance<>"函数中添加登录对话框的对象:CLoginDlg dlg;if <dlg.DoModal<> != IDOK>return FALSE;完成"创建新"的窗口:ID控件类型成员变量说明IDC_COMBO1CComboBoxm_ctrSex性别IDC_DATETIMEPICKER1CTimem_tmDate开户日期IDC_EDIT1CStringm_strNoIDC_EDIT1CEditm_ctrNoIDC_EDIT2CStringm_strName开户人IDC_EDIT2CEditm_ctrNameIDC_EDIT3CStringm_strPassword密码IDC_EDIT3CEditm_ctrPasswordIDC_EDIT4CStringm_strComPassword确认密码IDC_EDIT4CEditm_ctrComPasswordIDC_EDIT5CStringm_strID号IDC_EDIT5CEditm_ctrIDIDC_EDIT6Doublem_bBalance余额IDC_EDIT7CStringm_strAddress开户地址IDC_EDIT7CEditm_ctrAddressIDOK"确定"按钮IDCANCLE"取消"按钮(1) 在CAccountDlg类中添加CAccontSet类的成员变量m_recordset;(2) 添加记录集类CCurrentSet类,基类为CRecordSet,数据表为current表;(3) 添加初始化对话框OnInitDialog<>方法:BOOL CAccountDlg:OnInitDialog<> CDialog:OnInitDialog<>m_tmDate = CTime:GetCurrentTime<>m_ctrSex.AddString<"男">m_ctrSex.AddString<"女">UpdateData<FALSE>return TRUE; (4) IDOK控件的消息响应函数,完成对表和活期存取款表的记录添加。完成"删除"的功能:在CMainFrame类中添加菜单的消息响应函数,找到当前用户在账户表中的记录,并且判断该是否还有活期存款和定期存款,如果有记录,则无法删除。void CMainFrame:OnDeleteAccount<> / TODO: Add your command handler code hereCBankApp * ptheApp = <CBankApp *> AfxGetApp<>CString strSQL;strSQL.Format<"select * from Account where CNo = '%s'",ptheApp->strNo>CAccountSet recordset;if <!recordset.Open<AFX_DB_USE_DEFAULT_TYPE,strSQL>>MessageBox<"Open Database Filed!","Database Error",MB_OK>return ;if <MessageBox<"确定删除该用户?","提示",MB_YESNO> = IDYES>if <recordset.m_CBalance != 0>recordset.Close<>MessageBox<"用户账户中活期存款仍存有余额,无法进行销户!">return ;CTimeDepositSet tds;CString strRecord;strRecord.Format<"select* from TimeDeposit where CNo = '%s'",ptheApp->strNo>if <!tds.Open<AFX_DB_USE_DEFAULT_TYPE,strRecord>>recordset.Close<>MessageBox<"Open Database Filed!","Database Error",MB_OK>return ;if <tds.GetRecordCount<> != 0>recordset.Close<>tds.Close<>MessageBox<"用户账户中仍存有定期账目,无法销户!">return ;recordset.Delete<>recordset.Requery<>recordset.Close<>MessageBox<"用户账户删除成功!">elserecordset.Close<>return ;完成"退出系统"的功能:在CMainFrame类中添加菜单的消息响应函数:void CMainFrame:OnExit<> if <MessageBox<"确定退出该系统?","提示",MB_YESNO> = IDYES>PostQuitMessage<1>return ;完成"查询账户信息"的功能:ID控件类型成员变量说明IDC_DATETIMEPICKER1CTimem_tmDate开户日期IDC_EDIT1CStringm_strNoIDC_EDIT2CStringm_strNameIDC_EDIT3CStringm_strAddress开户地址IDC_EDIT4CStringm_strBalance余额IDC_LIST1CListCtrlm_ctrList列表控件IDOK"确定"按钮<1>添加初始化对话框OnInitDialog<>响应函数,初始化对话框信息;<2>为CAccountInfo类添加void型的成员函数RefreshList<>,初始化列表信息。12 / 12