数据库课程设计报告银行管理系统
银行治理系统在不管在网络上,依旧各种治理系统软件的资料上都有讲解,而且均专门详细,其难度也可想而知。这次课程设计时刻紧迫,另外作者本身能力也十分有限,只能完成银行治理系统中的少量功能,因此该系统还有专门多有待扩充及完善的地点,有不妥善的地方还请老师指点。(这些应显现在总结,在此应简要说明选题的目的及意义)这次课程设计只是达到训练、牢固知识的目的,熟悉数据库的前台和后台编程、VC++的控件、如何访问数据库等方面的知识,因此实现的功能也专门有限,待以后随着知识的积存,慢慢地扩充完善该系统。
本系统采纳了可视化的集成开发环境Visual C++ 6.0编辑用户操作界面、以SQL Sever为后台数据库并以CRecordSet类访问数据库信息的治理系统,该系统能够完成用户帐号的建立、用户存取款、数据备份与复原等差不多功能。
关键字:SQL数据库、SQL语言、VC++、银行治理系统
目 录
1 绪论
1.1 选题目的及意义……………………………………………1 1.2 设计内容……………………………………………………1
2 需求分析
2.1 功能需求……………………………………………………1 2.2 数据需求……………………………………………………1 2.3 其他需求……………………………………………………1
3数据库设计
3.1概念结构设计………………………………………………2 3.2逻辑结构设计………………………………………………2 3.3物理结构设计………………………………………………2
4 系统功能设计……………………………………………………4 5 系统实现
5.1 开发环境………………………………………………4 5.2 要紧功能的运行结果及代码…………………………4 6 总结…………………………………………………………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概念结构设计
活期操作记录 活期存取款 帐号 姓名 密码 身份证号 银行 储备 储户 性别 开户地址 定期操作记录 定期存取款 开户日期 帐户余额
银行治理系统E-R图
3.2 逻辑结构设计
储户(帐号,姓名,密码,身份证号,性别,帐户余额,开户日期,开户地址); 活期存取款(nID,帐号,金额,类型,办理日期,利息,账户余额);
定期存款(nID,帐号,存款人姓名,金额,储备年份,年利率,储备日期); 定期取款(nID,帐号,取款人姓名,取款金额,取款日期);
定期记录(nID,帐号,存取款人姓名,类型,操作金额,年份,操作日期)
3.3 物理结构设计
储户表
序号 1 2 3 4 5 6 7 8 字段名称 CNo CName CPassword CID CSex CBalance CDate CAddress 字段描述 帐号 开户人姓名 登录密码 身份证号 性别 帐户余额 开户日期 开户地址 数据类型 Varchar Varhcar Char Varchar Char Float Datetime Varchar 长度 20 20 6 20 2 8 8 30 属性 PK 非空 非空 非空 非空 非空 非空 非空 主键:帐号;
约束条件:各属性均非空,密码长度为6位;
活期存取款表
序号 1 2 3 4 5 6 7 字段名称 nID CNo CMoney CStyle CDate CInterest CBalance 字段描述 序号 帐号 操作金额 操作类型 操作日期 利息 帐户余额 数据类型 Int Varchar Float Varchar Datetime Float Float 长度 4 20 8 10 8 8 8 属性 PK 非空 非空 非空 非空 非空 非空 主键:nID;外键:帐号;被参照表:储户表 约束条件:各属性均非空;
定期存款表
序号 1 2 3 4 5 6 7 字段名称 nID CNo CName CMoney CDate CYear CRate 字段描述 序号 帐号 存款人姓名 存款金额 存款日期 储备年份 储备利率 数据类型 Int Varchar Varchar Float Datetime Int Float 长度 4 20 10 8 8 4 8 属性 PK 非空 非空 非空 非空 非空 非空 主键:nID;外键:帐号;被参照表:储户表 约束条件:各属性均非空;
定期取款表
序号 1 2 3 4 5 字段名称 nID CNo CName CMoney CDate 字段描述 序号 帐号 取款人姓名 取款金额 取款日期 数据类型 Int Varchar Varchar Float Datetime 长度 4 20 10 8 8 属性 PK 非空 非空 非空 非空 主键:nID;外键:nID;被参照表:定期存款表 约束条件:各属性非空
定期操作记录表
序号 1 2 3 4 5 6 7 字段名称 nID CNo CName CStyle CMoney CYear CDate 字段描述 序号 帐号 存取款人姓名 操作类型 存取款金额 储备年份 存取款日期 数据类型 Int Varchar Float Char float Int Datetime 长度 4 20 8 4 8 4 8 属性 PK 非空 非空 非空 非空 非空 非空
主键: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_EDIT1 IDC_EDIT1 IDC_EDIT2 IDC_EDIT2 IDC_EDIT3 IDC_EDIT3 IDOK IDCANCLE 控件类型 CString CEdit CString CEdit CString CEdit 成员变量 m_strNo m_ctrNo m_strPassword m_ctrPassword m_strRePassword m_ctrRePassword 说明 用户帐号 登录密码 确认密码 “OK”按钮 “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 ; }
}
(5) 在“CBankApp”类中的“InitInstance()”函数中添加登录对话框的对象: CLoginDlg dlg;
if (dlg.DoModal() != IDOK) {
return FALSE; }
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'\if (!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)) {
MessageBox(\"Open Database Filed!\ 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();
完成“创建新帐户”的窗口:
ID IDC_COMBO1 IDC_DATETIMEPICKER1 IDC_EDIT1 IDC_EDIT1 IDC_EDIT2 IDC_EDIT2 IDC_EDIT3 IDC_EDIT3 IDC_EDIT4 IDC_EDIT4 IDC_EDIT5 IDC_EDIT5 IDC_EDIT6 IDC_EDIT7 IDC_EDIT7 IDOK IDCANCLE 控件类型 CComboBox CTime CString CEdit CString CEdit CString CEdit CString CEdit CString CEdit Double CString CEdit 成员变量 m_ctrSex m_tmDate m_strNo m_ctrNo m_strName m_ctrName m_strPassword m_ctrPassword m_strComPassword m_ctrComPassword m_strID m_ctrID m_bBalance m_strAddress m_ctrAddress 说明 性别 开户日期 帐号 开户人姓名 密码 确认密码 身份证号 帐户余额 开户地址 “确定”按钮 “取消”按钮 (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 here CBankApp * ptheApp = (CBankApp *) AfxGetApp(); CString strSQL;
strSQL.Format(\"select * from Account where CNo = '%s'\ CAccountSet recordset;
if (!recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)) {
MessageBox(\"Open Database Filed!\ return ; }
if (MessageBox(\"确定删除该用户?\提示\ {
if (recordset.m_CBalance != 0) {
recordset.Close();
MessageBox(\"用户账户中活期存款仍存有余额,无法进行销户!\"); return ; }
CTimeDepositSet tds; CString strRecord;
strRecord.Format(\"select * from TimeDeposit where CNo = '%s'\
if (!tds.Open(AFX_DB_USE_DEFAULT_TYPE,strRecord)) {
recordset.Close();
MessageBox(\"Open Database Filed!\ return ; }
}
if (tds.GetRecordCount() != 0) {
recordset.Close(); tds.Close();
MessageBox(\"用户账户中仍存有定期账目,无法销户!\"); return ; }
recordset.Delete(); recordset.Requery(); recordset.Close();
MessageBox(\"用户账户删除成功!\"); } else {
recordset.Close(); return ; }
完成“退出系统”的功能:
在CMainFrame类中添加菜单的消息响应函数: void CMainFrame::OnExit() {
if (MessageBox(\"确定退出该系统?\提示\ {
PostQuitMessage(1); return ; } }
完成“查询账户信息”的功能:
ID IDC_EDIT1 IDC_EDIT2 IDC_EDIT3 IDC_EDIT4 IDC_LIST1 IDOK 控件类型 CString CString CString CString CListCtrl 成员变量 m_tmDate m_strNo m_strName m_strAddress m_strBalance m_ctrList 说明 开户日期 帐号 姓名 开户地址 帐户余额 列表控件 “确定”按钮 IDC_DATETIMEPICKER1 CTime (1)添加初始化对话框OnInitDialog()响应函数,初始化对话框信息;
(2)为CAccountInfo类添加void型的成员函数RefreshList(),初始化列表信息。
因篇幅问题不能全部显示,请点此查看更多更全内容