摘 要
银行管理系统在无论在网络上,还是各种管理系统软件的资料上都有讲解,
而且均非常详细,其难度也可想而知。这次课程设计时间紧迫,另外作者本身能
力也十分有限,只能完成银行管理系统中的少量功能,所以该系统还有很多有待
扩充及完善的地方,有不妥善的地方还请老师指点。(这些应出现在总结,在此
应简要说明选题的目的及意义)这次课程设计只是达到训练、牢固知识的目的,
熟悉数据库的前台和后台编程、VC++的控件、如何访问数据库等方面的知识,所
以实现的功能也很有限,待以后随着知识的积累,慢慢地扩充完善该系统。
本系统采用了可视化的集成开发环境 Visual C++ 6.0 编辑用户操作界面、
以 SQL Sever 为后台数据库并以 CRecordSet 类访问数据库信息的管理系统,该
系统能够完成用户帐号的建立、用户存取款、数据备份与恢复等基本功能。
关键字:SQL 数据库、SQL 语言、VC++、银行管理系统
1
目
录
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
参考文献
(页码再核对一下)
2
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. 数据库设计
3.1 概念结构设计
活期操作记录
活期存取款
帐号
姓名
密码
银行
存储
储户
身份证号
性别
定期操作记录
定期存取款
开户地址
开户日期
帐户余额
银行管理系统 E-R 图
3.2 逻辑结构设计
储户(帐号,姓名,密码,身份证号,性别,帐户余额,开户日期,开户地址);
活期存取款(nID,帐号,金额,类型,办理日期,利息,账户余额);
定期存款(nID,帐号,存款人姓名,金额,存储年份,年利率,存储日期);
定期取款(nID,帐号,取款人姓名,取款金额,取款日期);
定期记录(nID,帐号,存取款人姓名,类型,操作金额,年份,操作日期)
3.3 物理结构设计
序号
字段名称
字段描述
储户表
数据类型
Varchar
1
2
3
4
5
6
7
8
CNo
CName
CPassword
CID
CSex
CBalance
CDate
CAddress
帐号
开户人姓名 Varhcar
登录密码
身份证号
性别
帐户余额
开户日期
开户地址
Char
Varchar
Char
Float
Datetime
Varchar
主键:帐号;
约束条件:各属性均非空,密码长度为 6 位;
长度
20
20
6
20
2
8
8
30
属性
PK
非空
非空
非空
非空
非空
非空
非空
4
序号
字段名称
字段描述
数据类型
长度
活期存取款表
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
主键: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
主键:nID;外键:帐号;被参照表:储户表
约束条件:各属性均非空;
定期取款表
序号
字段名称
字段描述
数据类型
长度
1
2
3
4
5
nID
CNo
CName
CMoney
CDate
序号
帐号
Int
Varchar
取款人姓名 Varchar
取款金额
取款日期
Float
Datetime
4
20
10
8
8
主键: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
主键:nID;外键:nID;被参照表:定期存款表,定期取款表
约束条件:各属性非空
属性
PK
非空
非空
非空
非空
非空
非空
属性
PK
非空
非空
非空
非空
非空
非空
属性
PK
非空
非空
非空
非空
属性
PK
非空
非空
非空
非空
非空
非空
5
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).单击“确定”按钮,关闭对话框,数据库创建成功。
完成“账户登录”的窗口
6
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 ;
}
7
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;
}
完成“创建新帐户”的窗口:
8