银行管理系统课设报告.docx
《银行管理系统课设报告.docx》由会员分享,可在线阅读,更多相关《银行管理系统课设报告.docx(16页珍藏版)》请在冰豆网上搜索。
银行管理系统课设报告
数据库系统课程设计报告
题目银行管理系统的设计与实现
学生姓名梁有权
学号***********
学院计算机与软件学院
专业网络工程
指导教师马瑞
二O一五年四月二十四日
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
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;
}
完成“退出系统”的功能:
在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(),初始化列表信息。
完成“数据库备份”的功能:
(1)在应用类里为master数据库添加名为master的数据源
SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,
"SQLServer",
"DSN=master\0"
"SERVER=(local)\0"
"DATABASE=master\0"
"Trusted_Connection=Yes");
(2)在MainFrame类里添加数据库备份的消息响应函数:
voidCMainFrame:
:
OnDatabaseBackup()
{
//TODO:
Addyourcommandhandlercodehere
CStringstrBackup;
CfileDialogdlg(FALSE,"bak",NULL,OFN_HIDEREADONLY,"数据库文件(*.bak)|*.bak|",NULL);
if(dlg.DoModal()==IDOK)
{
strBackup=dlg.GetPathName();
Invalidate(FALSE);
}
if(strBackup!
="")
{
CDatabasedatabase;
if(!
database.IsOpen())
{
if(database.Open(_T("master")))
{
CStringstrSQL;
strSQL.Format("backupdatabasebanktodisk='%s'",strBackup);
database.ExecuteSQL(strSQL);
database.Close();
MessageBox("数据库备份成功!
","提示",MB_OK);
}
}
}
}
完成“数据库还原”的功能:
(1)在MainFrame类里添加数据库还原的消息响应函数:
voidCMainFrame:
:
OnDatabaseRecovery()
{
//TODO:
Addyourcommandhandlercodehere
CStringstrRecovery;
CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,"数据库文件(*.bak)|*.bak|所有文件|",NULL);
if(dlg.DoModal()==IDOK)
{
strRecovery=dlg.GetPathName();
InvalidateRect(FALSE);
}
if(strRecovery!
="")
{
CDatabasedatabase;
if(!
database.IsOpen())
{
if(database.Open(_T("master")))
{
CStringstrSQL;
strSQL.Format("restoredatabasebankfromdisk='%s'",strRecovery);
database.ExecuteSQL(strSQL);
database.Close();
MessageBox("数据库恢复成功!
","提示",MB_OK);
}
}
}
}
6.总结
通过此次三个周的数据库与程序设计方法学联合课程设计的训练,初步了解了数据库的设计方法和VC如何访问数据库并进行数据库的后台编程。
通过参照贾老师所给的例子,了解了很多VC方面的知识,比如如何访问打开数据库记录,如何运用ListControl控件等,这些知识都是第一次接触,经过多次运用之后,对它们都有所深入的了解,掌握如何运用它们。
另外数据库设计方面,通过此次训练能力也得到了稍微的提高,这也是第一次独立设计数据库,所以一开始有好多设计不完善的地方,有几次都是不得不重新来过,后来经过罗老师的指点后,数据库表的设计才有所完善,同时也积累了些数据库设计的经验。
此次设计的银行管理系统实现的功能还很有限,都是些基本的功能,还有很多改进完善的地方,比如办理信用卡的业务,此次只是办理的银行储蓄卡的业务;实现帐号密码变更的功能,查询列出同一用户多个帐户的功能。
这些功能等以后再添加了,因为这次课程设计时间有限,所以完成的功能也就很有限,但感觉收获很大,很有成就感。
参考文献
1.王珊萨师煊.数据库系统概论.高等教育出版社,2008(4):
198~233