数据库原理课程设计银行储蓄管理系统.docx
- 文档编号:28648796
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:29
- 大小:244.53KB
数据库原理课程设计银行储蓄管理系统.docx
《数据库原理课程设计银行储蓄管理系统.docx》由会员分享,可在线阅读,更多相关《数据库原理课程设计银行储蓄管理系统.docx(29页珍藏版)》请在冰豆网上搜索。
数据库原理课程设计银行储蓄管理系统
一、需求与功能分析1
二、系统总体框架2
三、逻辑设计2
四、类的设计与分析4
五、数据库表结构设计8
六、特色算法分析8
七、功能测试9
八、存在的不足与对策12
九、程序源代码12
银行储蓄管理系统
一银行储蓄系统需求分析
系统功能简介:
信息系统:
主要是在里面输入用户信息(户名,帐号,开户日期)
主要功能:
记录用户所要进行的各种存取操作(存钱,取钱),并对操作数据做好记录
记录时间:
主要是记录每个用户开户,存取,取钱的日期
相关金额:
该用户的存款金额,取款金额,执行操作后账户余额
保存系统:
可以以连接数据库模式保存查询过的内容,对于刚刚查询过的内容不必重复登陆
工作环境:
该程序可用在各种银行性质的单位,能有效管理用户信息。
方便,快捷,容易上手,安全保密,资料齐整
构造该程序,主要是使用C++&SQL系统。
在MS-DOS以及WINDOWS95以上的操作系统上可以正常运行。
现今的社会,资金流动十分频繁。
不单单是企业、厂商,连个人也不例外。
银行作为一个金融机构,在现代人们的生活中扮演着及其重要的角色。
为生活节奏飞快的现代人提供快速、便捷、高效理财服务,是每一个银行机构的共同职责。
伴随着电脑技术的发展,各大银行储蓄管理软件也随之出现在这一舞台之上。
银行储蓄管理程序的主要功能就是记录用户的账户信息,已经对用户的存取款操作作好记录及数据更新。
银行储蓄管理的特点是数据量大。
数据更新频繁。
因此便捷的操作,数据更新准确度,成了这一系统的主要指标。
二系统总框图
三逻辑设计
任何建模语言都以静态建模机制为基础,标准建模语言UML也不例外。
所谓静态建模是指对象之间通过属性互相联系,而这些关系不随时间而转移。
类和对象的建模,是UML建模的基础。
面向对象的开发方法的基本任务是建立对象模型,是软件系统开发的基础。
UML中的对象类图表达了对象模型的静态结构,能够有效地建立专业领域的计算机系统对象模型。
图1系统类图
动态模型主要描述系统的动态行为和控制结构。
如图中所示,三个序列图和两个协作图表现各用例与类的对象之间的动态合作关系以及合作过程中的行为次序,描述了一个用例的行为。
图2银行储蓄管理系统序列图
图3银行储蓄管理系统协作图
四类的设计与分析
为了使得程序有较高的易读性,我做了多个界面并为每个界面设了类。
由多个类来把所有的功能函数包括起来。
功能分的比较细,条理清楚明确。
下面对这些类作一下简单的分析:
1功能类(包括denglu,jiemian,jiemianx,tianjia,shanchu,xianshi,gengxin)
classdenglu:
publicCDialog
{
public:
denglu(CWnd*pParent=NULL);
enum{IDD=IDD_DIALOG_denglu};
CComboBoxm_status;
CEditm_pwd;
CEditm_num;
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);
protected:
HICONm_hIcon;
virtualBOOLOnInitDialog();
afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);
afx_msgvoidOnPaint();
afx_msgHCURSOROnQueryDragIcon();
afx_msgvoidOnButton1();
afx_msgvoidOnButton2();
DECLARE_MESSAGE_MAP()
};
MFC的功能类所包含的主要都是界面按键的成员方法
2Resource类
//{{NO_DEPENDENCIES}}
//MicrosoftDeveloperStudiogeneratedincludefile.
//Usedbyzhi.rc
//
#defineIDM_ABOUTBOX0x0010
#defineIDD_ABOUTBOX100
#defineIDS_ABOUTBOX101
#defineIDD_ZHI_DIALOG102
#defineIDD_DIALOG_tianjia102
#defineIDR_MAINFRAME128
#defineIDD_DIALOG_cunkuan131
#defineIDD_DIALOG_gengxin131
#defineIDD_DIALOG_qukuan132
#defineIDD_DIALOG_xianshi133
#defineIDD_DIALOG_denglu134
#defineIDD_DIALOG_jiemian135
#defineIDD_DIALOG_shanchu136
#defineIDD_DIALOG_jiemianx137
#defineIDC_EDITname1003
#defineIDC_EDITriqi1005
#defineIDC_EDITyu1007
#defineIDC_LIST11026
#defineIDC_COMBO11031
#defineIDC_BUTTON11032
#defineIDC_EDITnum1033
#defineIDC_EDITpwd1034
#defineIDC_BUTTONqu1037
#defineIDC_BUTTONadd1039
#defineIDC_BUTTONdel1040
#defineIDC_BUTTONshow1041
#defineIDC_BUTTONcun1042
#defineIDC_BUTTONupdate1042
#defineIDC_BUTTONout1043
#defineIDC_EDITid1044
#defineIDC_EDITcun1045
#defineIDC_BUTTONok1046
#defineIDC_BUTTONback1047
#defineIDC_EDITqu1048
#defineIDC_BUTTON21049
#defineIDC_BUTTONcheck1050
//Nextdefaultvaluesfornewobjects
//
#ifdefAPSTUDIO_INVOKED
#ifndefAPSTUDIO_READONLY_SYMBOLS
#define_APS_NEXT_RESOURCE_VALUE138
#define_APS_NEXT_COMMAND_VALUE32771
#define_APS_NEXT_CONTROL_VALUE1051
#define_APS_NEXT_SYMED_VALUE101
#endif
#endif
定义各个按键
3zhi和StdAfx类
classCZhiApp:
publicCWinApp
{
public:
CZhiApp();
//Overrides
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CZhiApp)
public:
virtualBOOLInitInstance();
//}}AFX_VIRTUAL
//Implementation
//{{AFX_MSG(CZhiApp)
//NOTE-theClassWizardwilladdandremovememberfunctionshere.
//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
#if!
defined(AFX_STDAFX_H__E9923E7F_D882_4080_BAF0_8699A6C6D790__INCLUDED_)
#defineAFX_STDAFX_H__E9923E7F_D882_4080_BAF0_8699A6C6D790__INCLUDED_
#if_MSC_VER>1000
#pragmaonce
#endif//_MSC_VER>1000
#defineVC_EXTRALEAN//Excluderarely-usedstufffromWindowsheaders
#include
#include
#include
#include
#ifndef_AFX_NO_AFXCMN_SUPPORT
#include
#endif//_AFX_NO_AFXCMN_SUPPORT
创建MFC文件便会自动生成的定义类
4SQL类
#include"afxdb.h"
classSQL
{
public:
CDatabasem_db;
CRecordsetrs;
};
数据库连接类,包含了与数据库连接相关的成员方法
五数据库中表结构设计
本系统所需连接的表有两个,包括:
admin和users
admin包含a_num,a_pwd,a_right,关于操作员的员工号,密码和职类,用于存储操作员信息
users包含u_id,u_name,u_riqi,u_yu,关于用户的帐号,户名,开户日期和余额,用于存储用户信息
六特色算法分析
在gengxin类中的check算法
功能:
连接数据库,查找出相应的数据
算法思路:
定义几个Cstring变量,分别存放输入搜索相关值和搜索操作,然后按步骤执行操作
流程图:
代码:
CStringu_id,u_yu;
CStringcheck;
m_id.GetWindowText(u_id);
if(sql4.m_db.IsOpen())
{
sql4.m_db.Close();
}
sql4.m_db.OpenEx(conn,0);
if(!
sql4.m_db.IsOpen())
{
AfxMessageBox("failtoconnecttothedb");
return;
}
sql4.rs.m_pDatabase=&sql4.m_db;
check="select*fromuserswhereu_id='"+u_id+"'";
sql4.rs.Open(CRecordset:
:
snapshot,check,CRecordset:
:
readOnly);
if(sql4.m_db.CanUpdate())
{
sql4.rs.GetFieldValue("u_yu",u_yu);
m_yu.SetWindowText(u_yu);
}
else
{
AfxMessageBox("notsuchdataindb");
}
七功能测试
图1登陆界面
图2操作员A主界面
图3添加用户操作
图4删除用户操作
图5显示信息操作
图6操作员B主界面
图7更新数据操作
八存在的不足与对策
由于本人水平有限及时间等方面的原因,该系统的功能比较简单,查错能力也不强,对于一些不正确的输入可能会造成一些难以预料的结果,因此,请不要故意输入错误信息。
这些不足请老师多多谅解。
今后我会更多的学习编程技巧,不断的提高程序设计水平。
1一般而言,余额都能在需输入存款数和取款数后自动更改。
然而由于临近考试,时间比较仓促,使得无法实现这一功能,改为只能直接修改余额。
之间的加上存款数与减去取款数省去了。
2在界面运行情况下,按钮用鼠标点击,直接按回车键会导致直接退出界面,只要注意就可避免。
3界面切换后前一界面不会自动关闭,只是层叠起来。
但不影响主要功能的实现。
九程序源代码
Denglu.cpp
BOOLdenglu:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//Add"About..."menuitemtosystemmenu.
//IDM_ABOUTBOXmustbeinthesystemcommandrange.
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//Settheiconforthisdialog.Theframeworkdoesthisautomatically
//whentheapplication'smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);//Setbigicon
SetIcon(m_hIcon,FALSE);//Setsmallicon
//TODO:
Addextrainitializationhere
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
voiddenglu:
:
OnSysCommand(UINTnID,LPARAMlParam)
{
if((nID&0xFFF0)==IDM_ABOUTBOX)
{
CAboutDlgdlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog:
:
OnSysCommand(nID,lParam);
}
}
//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow
//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,
//thisisautomaticallydoneforyoubytheframework.
voiddenglu:
:
OnPaint()
{
if(IsIconic())
{
CPaintDCdc(this);//devicecontextforpainting
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
//Centericoninclientrectangle
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
//Drawtheicon
dc.DrawIcon(x,y,m_hIcon);
}
else
{
CDialog:
:
OnPaint();
}
}
//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags
//theminimizedwindow.
HCURSORdenglu:
:
OnQueryDragIcon()
{
return(HCURSOR)m_hIcon;
}
voiddenglu:
:
OnButton1()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData(true);
CStringm_num_text,m_pwd_text,m_status_text;
CStringsubmit1,submit2;
CStringm_right1="操作员A",m_right2="操作员B";
intnum_len,pwd_len;
m_num.GetWindowText(m_num_text);
m_pwd.GetWindowText(m_pwd_text);
num_len=m_num_text.GetLength();
pwd_len=m_pwd_text.GetLength();
if(sql.m_db.IsOpen())
{
sql.m_db.Close();
}
sql.m_db.OpenEx(strCONN,0);
if(!
sql.m_db.IsOpen())
{
AfxMessageBox("failconnect!
");
}
if(m_status.GetCurSel()<0)
{
AfxMessageBox("pleasechooseyoustatus.");
return;
}
elseif(num_len<=0||pwd_len<=0)
{
AfxMessageBox("pleaseinputyourIDoryourpwd");
}
else
{
m_status.GetLBText(m_status.GetCurSel(),m_status_text);
sql.rs.m_pDatabase=&sql.m_db;
submit1="select*fromadminwherea_num='"+m_num_text+"'anda_pwd='"+m_pwd_text+"'anda_right='"+m_status_text+"'";
sql.rs.Open(CRecordset:
:
snapshot,submit1,CRecordset:
:
readOnly);
if(sql.rs.GetRecordCount()>0)
{
if(m_status_text.Compare(m_right1)==0)
{
jiemiandlg;
dlg.DoModal();
}
if(m_status_text.Compare(m_right2)==0)
{
jiemianxcdlg;
cdlg.DoModal();
}
}
else
{
AfxMessageBox("thisuserisnotexistorthepwdisn'tright");
}
}
sql.rs.Close();
}
Jiemian.cpp
voidjiemian:
:
OnBUTTONadd()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
tianjiadlg;
dlg.DoModal();
}
voidjiemian:
:
OnBUTTONdel()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
shanchudlg;
dlg.DoModal();
}
voidjiemian:
:
OnBUTTONshow()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
xianshidlg;
dlg.DoModal();
}
voidjiemian:
:
OnBUTTONout()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
jiemian:
:
OnCancel();
}
Jiemianx.cpp
voidjiemianx:
:
OnBUTTONupdate()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
gengxindlg;
dlg.DoModal();
}
voidjiemianx:
:
OnBUTTONshow()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
xianshidlg;
dlg.DoModal();
}
voidjiemianx:
:
OnBUTTONout()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
jiemianx:
:
OnCancel();
}
Tianjia.cpp
voidtianjia:
:
OnBUTTONok()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
Updat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 课程设计 银行 储蓄 管理 系统