资源描述
摘 要
银行管理系统在无论在网络上,还是多种管理系统软件资料上均有讲解,并且均非常详细,其难度也可想而知。这次课程设计时间紧迫,此外作者自身能力也十分有限,只能完毕银行管理系统中少许功能,因此该系统尚有诸多有待扩充及完善地方,有不妥善地方还请老师指点。这次课程设计只是到达训练、牢固知识目,熟悉数据库前台和后台编程、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选题目及意义
银行管理系统:该系统规定建立顾客表并不是诸多,完毕功能也相对有限,但其中各个表之间联络很紧密,该系统对数据库表设计规定会很高,因此完毕这个题目,能更好训练数据库设计和java编程能力,选择该题目就是充足训练数据库表设计能力和运用java能力。
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
CNo
帐号
Varchar
20
PK
2
CName
开户人姓名
Varhcar
20
非空
3
CPassword
登录密码
Char
6
非空
4
CID
身份证号
Varchar
20
非空
5
CSex
性别
Char
2
非空
6
CBalance
帐户余额
Float
8
非空
7
CDate
开户日期
Datetime
8
非空
8
CAddress
开户地址
Varchar
30
非空
主键:帐号;
约束条件:各属性均非空,密码长度为6位;
活期存取款表
序号
字段名称
字段描述
数据类型
长度
属性
1
nID
序号
Int
4
PK
2
CNo
帐号
Varchar
20
非空
3
CMoney
操作金额
Float
8
非空
4
CStyle
操作类型
Varchar
10
非空
5
CDate
操作日期
Datetime
8
非空
6
CInterest
利息
Float
8
非空
7
CBalance
帐户余额
Float
8
非空
主键:nID;外键:帐号;被参照表:储户表
约束条件:各属性均非空;
定期存款表
序号
字段名称
字段描述
数据类型
长度
属性
1
nID
序号
Int
4
PK
2
CNo
帐号
Varchar
20
非空
3
CName
存款人姓名
Varchar
10
非空
4
CMoney
存款金额
Float
8
非空
5
CDate
存款日期
Datetime
8
非空
6
CYear
存储年份
Int
4
非空
7
CRate
存储利率
Float
8
非空
主键:nID;外键:帐号;被参照表:储户表
约束条件:各属性均非空;
定期取款表
序号
字段名称
字段描述
数据类型
长度
属性
1
nID
序号
Int
4
PK
2
CNo
帐号
Varchar
20
非空
3
CName
取款人姓名
Varchar
10
非空
4
CMoney
取款金额
Float
8
非空
5
CDate
取款日期
Datetime
8
非空
主键:nID;外键:nID;被参照表:定期存款表
约束条件:各属性非空
定期操作登记表
序号
字段名称
字段描述
数据类型
长度
属性
1
nID
序号
Int
4
PK
2
CNo
帐号
Varchar
20
非空
3
CName
存取款人姓名
Float
8
非空
4
CStyle
操作类型
Char
4
非空
5
CMoney
存取款金额
float
8
非空
6
CYear
存储年份
Int
4
非空
7
CDate
存取款日期
Datetime
8
非空
主键:nID;外键:nID;被参照表:定期存款表,定期取款表
约束条件:各属性非空
4.系统功能设计
银行管理系统
银行账户系统管理理
新建账户
删除账户
更改账户
账户管理
退出系统
账户操作
查看账户信息
活期操作
定期操作
活期存取款
查看历史记录
定期存款
定期取款
查看历史记录
数据库管理
数据库备份
数据库恢复
账户登录,身份验证
图4-1银行管理系统功能构造图
5 .系统实现
5.1 系统开发环境
软件:SQL Sever ,VC++6.0
操作系统:Window XP
硬件:Pentiun 4 DDR 512MB 120G硬盘
5.2重要功能运行成果及代码
数据库创立过程及其连接
(1).进入企业管理器窗口,选择“新建SQL Sever注册”;
(2).选中“数据库”文献夹,单击鼠标右键,选择“新建数据库”,输入数据库名Bank;
(3).单击“确定”按钮,关闭对话框,数据库创立成功。
完毕“账户登录”窗口
ID
控件类型
组员变量
阐明
IDC_EDIT1
CString
m_strNo
顾客帐号
IDC_EDIT1
CEdit
m_ctrNo
IDC_EDIT2
CString
m_strPassword
登录密码
IDC_EDIT2
CEdit
m_ctrPassword
IDC_EDIT3
CString
m_strRePassword
确认密码
IDC_EDIT3
CEdit
m_ctrRePassword
IDOK
“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_COMBO1
CComboBox
m_ctrSex
性别
IDC_DATETIMEPICKER1
CTime
m_tmDate
开户日期
IDC_EDIT1
CString
m_strNo
帐号
IDC_EDIT1
CEdit
m_ctrNo
IDC_EDIT2
CString
m_strName
开户人姓名
IDC_EDIT2
CEdit
m_ctrName
IDC_EDIT3
CString
m_strPassword
密码
IDC_EDIT3
CEdit
m_ctrPassword
IDC_EDIT4
CString
m_strComPassword
确认密码
IDC_EDIT4
CEdit
m_ctrComPassword
IDC_EDIT5
CString
m_strID
身份证号
IDC_EDIT5
CEdit
m_ctrID
IDC_EDIT6
Double
m_bBalance
帐户余额
IDC_EDIT7
CString
m_strAddress
开户地址
IDC_EDIT7
CEdit
m_ctrAddress
IDOK
“确定”按钮
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 here
CBankApp * 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("顾客账户删除成功!");
}
else
{
recordset.Close();
return ;
}
}
完毕“退出系统”功能:
在CMainFrame类中添加菜单消息响应函数:
void CMainFrame::OnExit()
{
if (MessageBox("确定退出该系统?","提醒",MB_YESNO) == IDYES)
{
PostQuitMessage(1);
return ;
}
}
完毕“查询账户信息”功能:
ID
控件类型
组员变量
阐明
IDC_DATETIMEPICKER1
CTime
m_tmDate
开户日期
IDC_EDIT1
CString
m_strNo
帐号
IDC_EDIT2
CString
m_strName
姓名
IDC_EDIT3
CString
m_strAddress
开户地址
IDC_EDIT4
CString
m_strBalance
帐户余额
IDC_LIST1
CListCtrl
m_ctrList
列表控件
IDOK
“确定”按钮
(1)添加初始化对话框OnInitDialog()响应函数,初始化对话框信息;
(2)为CAccountInfo类添加void型组员函数RefreshList(),初始化列表信息。
展开阅读全文