数据库课程设计报告银行管理系统.docx
《数据库课程设计报告银行管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告银行管理系统.docx(15页珍藏版)》请在冰豆网上搜索。
数据库课程设计报告银行管理系统
摘要
银行管理系统在无论在网络上,还是各种管理系统软件的资料上都有讲解,而且均非常详细,其难度也可想而知。
这次课程设计时间紧迫,另外作者本身能力也十分有限,只能完成银行管理系统中的少量功能,所以该系统还有很多有待扩充及完善的地方,有不妥善的地方还请老师指点。
这次课程设计只是达到训练、牢固知识的目的,熟悉数据库的前台和后台编程、VC++的控件、如何访问数据库等方面的知识,所以实现的功能也很有限,待以后随着知识的积累,慢慢地扩充完善该系统。
本系统采用了可视化的集成开发环境VisualC++6.0编辑用户操作界面、以SQLSever为后台数据库并以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系统开发环境
软件:
SQLSever2000,VC++6.0
操作系统:
WindowXP
硬件:
Pentiun4DDR512MB120G硬盘
5.2主要功能的运行结果及代码
数据库创建过程及其连接
(1).进入企业管理器窗口,选择“新建SQLSever注册”;
(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控件的消息响应函数:
voidCLoginDlg:
:
OnOK()
{
UpdateData(TRUE);
if(m_strNo=="")
{
MessageBox("PleaseInputtheAccountNumber!
");
m_ctrNo.SetFocus();
return;
}
if(m_strPassword=="")
{
MessageBox("PleaseInputthePassword!
");
m_ctrPassword.SetFocus();
return;
}
if(m_strRePassword=="")
{
MessageBox("PleaseInputtheConfirmPassword!
");
m_ctrRePassword.SetFocus();
return;
}
if(m_strPassword!
=m_strRePassword)
{
MessageBox("TwoPasswordsAreDiffered!
");
m_strPassword="";
m_strRePassword="";
UpdateData(FALSE);
m_ctrPassword.SetFocus();
return;
}
CStringstrSQL;
strSQL.Format("select*fromAccountwhereCNo='%s'",m_strNo);
if(!
m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("OpenDatabaseFiled!
","DatabaseError",MB_OK);
return;
}
if(m_recordset.m_CPassword!
=m_strPassword)
{
MessageBox("PasswordError!
PleaseRewrite!
");
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()”函数中添加登录对话框的对象:
CLoginDlgdlg;
if(dlg.DoModal()!
=IDOK)
{
returnFALSE;
}
完成“创建新帐户”的窗口:
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()方法:
BOOLCAccountDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
m_tmDate=CTime:
:
GetCurrentTime();
m_ctrSex.AddString("男");
m_ctrSex.AddString("女");
UpdateData(FALSE);
returnTRUE;
}
(4)IDOK控件的消息响应函数,完成对帐户表和活期存取款表的记录添加。
完成“删除帐户”的功能:
在CMainFrame类中添加菜单的消息响应函数,找到当前用户在账户表中的记录,并且判断该帐户是否还有活期存款和定期存款,如果有记录,则无法删除帐户。
voidCMainFrame:
:
OnDeleteAccount()
{
//TODO:
Addyourcommandhandlercodehere
CBankApp*ptheApp=(CBankApp*)AfxGetApp();
CStringstrSQL;
strSQL.Format("select*fromAccountwhereCNo='%s'",ptheApp->strNo);
CAccountSetrecordset;
if(!
recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("OpenDatabaseFiled!
","DatabaseError",MB_OK);
return;
}
if(MessageBox("确定删除该用户?
","提示",MB_YESNO)==IDYES)
{
if(recordset.m_CBalance!
=0)
{
recordset.Close();
MessageBox("用户账户中活期存款仍存有余额,无法进行销户!
");
return;
}
CTimeDepositSettds;
CStringstrRecord;
strRecord.Format("select*fromTimeDepositwhereCNo='%s'",ptheApp->strNo);
if(!
tds.Open(AFX_DB_USE_DEFAULT_TYPE,strRecord))
{
recordset.Close();
MessageBox("OpenDatabaseFiled!
","DatabaseError",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类中添加菜单的消息响应函数:
voidCMainFrame:
:
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(),初始化列表信息。