[工学]数据库课程设计报告.doc

上传人:sccc 文档编号:4532968 上传时间:2023-04-26 格式:DOC 页数:36 大小:1.54MB
返回 下载 相关 举报
[工学]数据库课程设计报告.doc_第1页
第1页 / 共36页
[工学]数据库课程设计报告.doc_第2页
第2页 / 共36页
[工学]数据库课程设计报告.doc_第3页
第3页 / 共36页
[工学]数据库课程设计报告.doc_第4页
第4页 / 共36页
[工学]数据库课程设计报告.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《[工学]数据库课程设计报告.doc》由会员分享,可在线阅读,更多相关《[工学]数据库课程设计报告.doc(36页珍藏版)》请在三一办公上搜索。

1、数据库课程设计报告 姓 名:李 晋 林班 级:19110213学 号:20101002007学 院:计算机学院指导老师:胡 霍 真实习时间:2012年12月一 需求分析:设计银行管理系统:该系统有三种用户登录类型,分别为:普通客户,银行雇员,经理。各类用户各自的权限也不一样,具体操作的结果会体现在对数据库信息的修改。普通客户:根据自己的账号,密码登录进入界面,可以完成以下业务:存款,取款,转账,查询余额,修改密码,交易明细,该账户信息银行雇员:输入雇员ID和密码登录进入,可完成以下业务:开户,销户,查看所有账户,查看所有贷款信息,管理银行信息,为客户受理贷款,办理客户还款业务。经理:经理是特殊

2、的雇员,可以作为普通雇员管理客户,也可以管理其他雇员信息。输入用户名密码登陆后可完成以下功能:添加雇员信息,删除雇员信息,修改雇员信息,查看所有雇员信息。二 设计 1. 设计思想:该系统采用VC+6.0开发环境作为前台和SQLServer2008数据库存储数据。采用ADO开发技术,将数据库与VC开发环境建立连接,操作数据库,并返回数据库里的数据集合。同时直接对数据库信息的修改也会在前台显示出来。2. 设计表示:(1) 数据库设计A打开SQLServer2008,建立Bank数据库,打开表,设计如下9张表,各表具体结构:Customer(customer_id,customer_name,cus

3、tomer_tel,customer_street,customer_city);Account(account_number,account_pswd,branch_name,balance);Branch(branch_name,branch_city,assets);Employee(employee_id,employee_name,employee_tel,start_date,employee_pswd);Manager(manager_id,manager_pswd,manager_name,start_date,manager_tel);Depositor(account_nu

4、mber,customer_id,account_type,access_date,amount);Loan(loan_number,customer_id,branch_name,amount,loan_date);Payment(payment_number,payment_date,payment_amount);Workers_for(worker_employee_id,manager_employee_id);B表详细设计:Customer:属性数据类型是否空主键外键customer_idVarchar(30)否是是customer_nameVarchar(30)否customer

5、_telNchar(11)否customer_streetVarchar(30)否customer_cityVarchar(30)否Account:属性数据类型是否空主键外键account_numberVarchar(30)否是是account_pswdVarchar(30)否branch_nameVarchar(30)否balanceMoney否Branch:属性数据类型是否空主键外键branch_name Varchar(30)否是是branch_cityVarchar(30)否assetsMoney否Employee:属性数据类型是否空主键外键employee_id, Varchar(3

6、0)否是是employee_nameVarchar(30)否employee_telVarchar(30)否start_date,Datetime否employee_pswdVarchar(30)否Manager:属性数据类型是否空主键外键manager_id, Varchar(30)否是manager_pswdVarchar(30)否manager_nameVarchar(30)否start_dateDatetime否manager_telVarchar(30)否Depositor:属性数据类型是否空主键外键account_numberVarchar(30)否是是customer_idVar

7、char(30)否是account_typeVarchar(30)否access_dateDate否是amountMoney否Loan:属性数据类型是否空主键外键loan_numberVarchar(30)否是是customer_id,Varchar(30)是branch_nameVarchar(30)是amountMoneyloan_dateDatetimePayment:属性数据类型是否空主键外键payment_number Varchar(30)否是是payment_dateDatetime否是payment_amountMoney否Works_for:属性数据类型是否空主键外键work

8、er_employee_idVarchar(30)否是是manager_employee_idVarchar(30)否是C. E_R图:(2) 系统功能模块:注册客户修改雇员删除雇员查看所有雇员信息所有贷款信息银行信息管理经理所有账户信息办理还款业务办理贷款业务查看所有账户销户开户所有交易记录查看该账号信息修改密码查询余额转账取款存款添加雇员雇员用户登录这是系统运行时的主界面3. 详细设计:所使用的对话框:对话框ID作用相关类IDD_LOGIN_DIALOG登录界面CLoginDlgIDD_BANK_DIALOG用户操作界面CBankDlgIDD_REGIST_DIALOG新用户注册CRegi

9、steDlgIDD_TAKEDIALOG取款CTakeMoneyDlgIDD_USERINFO账户信息CUserInfoDlgIDD_TRANSFORDIALOG转账CTransforDlgIDD_DETAILDIALOG交易详细信息CDetailDlgIDD_ALLEMPDIALOG所有雇员信息CAllEmpDlgIDD_DELUSERDIALOG注销账号CDelUserDlgIDD_MANAGER_DIALOG经理操作界面CManagerDlgIDD_PAYMENTDIALOG还款CPaymentDlgIDD_CHANGEPSWD修改密码CChangePswdIDD_AMOUNT存款CAm

10、ounDlgIDD_ADDEMPDIALOG添加雇员信息CAddEmpDlgIDD_MODEMPDLG修改雇员信息CModEmpDlgIDD_LOANDIALOG受理贷款CLoanDlgIDD_DELEMPDIALOG删除雇员信息CDelEmpDlgIDD_BRANCHDIALOG银行信息管理CBranchDlgIDD_ALLLOANDIALOG所有贷款信息CAllLoanDlgIDD_ALLACCOUNT所有账户信息CAllAccountDlgIDD_ADDUSERDIALOG开户CAddUserDlgIDD_EMPLOYEE_DIALOG雇员操作界面CEmployeeDlg下面列出每个对话

11、框的界面,及相关控件ID和相关变量IDD_ADDEMPDIALOGIDD_ADDUSERDIALOG:IDD_ALLACCOUNT:IDD_ALLEMPDIALOG:IDD_ALLLOANDIALOG:IDD_AMOUNT:IDD_BANK_DIALOG:IDD_BRANCHDIALOG:IDD_CHANGEPSWD:IDD_DELEMPDIALOG:IDD_DELUSERDIALOG:IDD_DETAILDIALOG:IDD_EMPLOYEE_DIALOG:IDD_LOANDIALOG:IDD_LOGIN_DIALOG:IDD_MANAGER_DIALOG:IDD_MODEMPDLG:IDD

12、_PAYMENTDIALOG:IDD_REGIST_DIALOG:IDD_TAKEDIALOG:IDD_TRANSFORDIALOG:IDD_USERINFO:4. 具体操作:(1) 设计数据库a. 按上述表示的数据建立数据库b. 如果要从外部导入别人的数据库,需要打开SQLServer2008数据库,找到要导入的数据库,右击任务分离,然后打开C盘,找到ProgramFiles/Microsoft SQLServer/MSSQL10.MSSQLSERVER/MSSQL/DATA/这个目录,在该目录下复制两个文件(.mdf和.fdf)到自己电脑的这个目录下面,再打开自己的数据库,右击附加添加,找

13、到.mdf文件,确定,就把别人的数据库导入到自己的电脑上去了。(2) 建立工程打开VC6.0,FilenewMFC AppWizard,设定目录,在第一个选项卡下选择第三项,建立一个基于对话框的程序(我建立的为Bank工程),点finish后就建立完成。然后按照上述的截图添加22个对话框,每个对话框添加控件,设定相关变量,并生成与之相关的对话框类。打开resource选项卡,点击Dialog,右击Insert dialog,修改对话框界面,右击对话框-properities,修改每个对话框的ID和Captation(ID号如下表所示。一定要注意修改,否则对话框很多会混淆)。然后添加控件,如果是

14、密码框,右击属性,在style选项卡下勾上password。单击菜单栏view-calsswizard,会提示您创建对话框资源,输入下表列出的相关类名,然后,选择classwizard的member variables添加相关变量,注意修改变量类型,具体看下表相关变量。密码框勾选Password。新建一个对话框,会提示创建一个类,点OK,输入相应类名,就建立起与对话框相关的类了。然后按照上述的截图添加控件并添加每个控件的相关变量。(3) 数据库与工程建立连接设定数据源:在控制面板下面搜索,并添加系统。建立文件:找到在(2)中建立的工程的目录,在该目录下面建立一个文本文件,并修改文件类型,取名A

15、DO.udl,注意修改文件后缀名!打开该文件,如图输入自己的服务器名称,不知道服务器名称可以打开SQLServer2008查看,然后确认自己的登录信息,安装数据库的时候如果选择的默认安装,点第一个,选择Windows集成安全设置,如果是设置了用户名密码,就选第二个。再在中选择自己要连接的数据库名称。测试一下如果连接成功就了。添加代码:打开刚才建立的工程,找到StdAfx.h文件,并添加如下代码:#importc:Program Filescommon filessystemadomsado15.dll no_namespace rename(EOF,adoEOF) 用于导入ADO库d 建立新类

16、:把对数据库操作的方法封装在一个类里面。点击菜单栏insertnew class,选择第二个,并输入类名ADOConn,就添加了一个新类。找到该类,在头文件(CADOConn.h)中添加如下代码:class CADOConn /添加成员变量public:_RecordsetPtr m_pRecordset;/记录集指针_ConnectionPtr m_pConnection;/数据库连接指针public:CADOConn();virtual CADOConn();void OnInitADOConn();/连接数据源_RecordsetPtr& GetRecordset(_bstr_t bst

17、rSQL);/获取打开的记录集指针BOOL ExecuteSQL(_bstr_t bstrSQL);/执行sql语句void ExitConnect();/断开连接;然后再源文件(ADOConn.cpp)中添加如下代码:void CADOConn:OnInitADOConn():CoInitialize(NULL);/初始化com环境trym_pConnection.CreateInstance(ADODB.Connection);_bstr_t strConnect;strConnect=File Name=ADO.udl;m_pConnection-Open(strConnect,adMo

18、deUnknown);catch(_com_error e)AfxMessageBox(打开数据库失败);AfxMessageBox(e.ErrorMessage();void CADOConn:ExitConnect()if(m_pRecordset!=NULL)/关闭记录集和断开数据源m_pRecordset-Close();m_pConnection-Close();:CoUninitialize();/释放com环境_RecordsetPtr& CADOConn:GetRecordset(_bstr_t bstrSQL)/打开记录集,返回记录指针tryif(m_pConnection=

19、NULL)OnInitADOConn();m_pRecordset.CreateInstance(_uuidof(Recordset);m_pRecordset-Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);catch(_com_error e)AfxMessageBox(打开记录集失败);AfxMessageBox(e.ErrorMessage();return m_pRecordset;BOOL CADOConn:ExecuteSQL(_bstr_t bstrSQ

20、L)tryif(m_pConnection=NULL)OnInitADOConn();m_pConnection-Execute(bstrSQL,NULL,adCmdText);return true;catch(_com_error e)CString str;str.Format(不能打开记录集!%s,e.ErrorMessage();AfxMessageBox(str);return false;(4) 用该工程操作数据库主要代码:a添加全局变量在Bank.cpp文件下CBankApp theApp后面接着添加全局变量,如下图: 并将InitInstance函数中#endif后面的函数全

21、部注释起来(除了return语句),然后添加一句代码:dlgLogin.DoModal();(注:如果添加了某个全局变量,编译器报错,则需要在该文件的最前面再次申明已经定义的变量,在前面添加extern,如下:)b加载背景图片:(所有加载背景图片的对话框均按此方法)选择要操作的对话框类,右击选择Add Windows Message Handle,选择WM_PAINT,添加消息。注释掉该函数的else条件下面的CDialog:OnPaint();并添加如下代码:C操作数据所有的操作数据库都用到前面添加的CADOConn这个类,方法大同小异,现取出一个作为例子:为控件添加消息响应的代码是,如果要

22、操作数据库,如下代码是必需的。CADOConn m_ADOConn; /申明操作数据库的对象m_ADOConn.OnInitADOConn(); /打开数据库连接_RecordsetPtr m_pRecordset;/定义记录集指针_variant_t theValue; /定义变量保存相关属性值_bstr_t vSQL=”select * from customer”;/定义SQL查询语句m_pRecordset=m_ADOConn.GetRecordset(vSQL);/获取数据theValue=m_pRecordset-GetCollect(employee_pswd); /取得该属性的

23、数据值if(theValue.vt!=VT_NULL)strPswd=(char *)_bstr_t(theValue);/将该属性值转换为具体的数据类型_bstr_t vSQL=”update,delete”;/定义SQL更新语句m_ADOConn.ExecuteSQL(vSQL);/执行更新语句m_ADOConn.ExitConnect();/关闭连接(5) 出现的问题及注意事项:a. 使用到别的文件的类,注意添加头文件。b. 每次要获取控件的值,要添加UpdateData()函数,并且要判断控件的值是否为空,涉及金钱的还要判断输入的是否为负数,否则修改数据库中不为空的值会出错。c. 插入

24、float型的值和插入字符型的值不同,需要将取出的字符用atof(str)函数转换为float型,将这个float型操作之后的结构还要用Format函数转换回字符才能插入数据库。如:double balance;/定义double型数据theValue=m_pRecordset-GetCollect(balance);if(theValue.vt!=VT_NULL)/获取数据库中的double数据strBalance=(char *)_bstr_t(theValue);balance=atof(strBalance);/得到的是字符,转换为doublebalance-=m_Amount;/操作

25、数据/要将数据再返回数据库,要格式化为字符CString strA;strA.Format(%f,balance);d. 插入数据,需要先插入主键表,再插入外键表,否则由于外键约束而无法操作,所有凡是涉及到外键的插入都要先执行主键表的检查。同理,要删除数据,需要先操作外键表,再操作主键表。e. 用到的涉及时间的函数,调用系统函数varchar,getdate(),120)。f. 每次获取数据要先判断是否为空,否则直接去结果集中某个属性值可能因为不存在强制获取而出现bug。三 测试数据及测试结果:1. 新用户注册: 数据库里添加到的信息: 2. 经理登录并添加雇员信息:数据库里添加的记录:查看所

26、有雇员信息:修改和删除雇员信息比较简单,在此不截图了。3. 雇员登录并管理银行信息:添加后的数据库信息:添加,查找银行信息的功能省略截图。4. 雇员登录并为新注册的客户开户:雇员分配账号,客户输入密码和初始存款额。由于经理有最高权限,所以经理也可以作为雇员登录,执行雇员的操作添加后的数据库信息:5. 雇员登录并为新注册的客户受理贷款:6. 新注册成功的客户登陆:Depositor表中添加的记录:7. 修改密码:四.总结:首先,通过一个学期的数据库课程的学习,在掌握了基本的数据库原理之后,这次的课程设计不仅巩固了基础知识,同时锻炼了我的动手能力。特别是对于VC+编程,SQLServer数据库操作

27、的基本知识有了更深的了解。 其次,连接数据库是件很头疼的事情,真的是很考验耐心,甚至最后只能重装系统,然后重新安装数据库。连接数据库的时候,直接输入主机名,数据库名,用户名和密码连接,还要添加一句Integrated security=SSPI,这个加上才连上数据库。后来又在网上找的一个简单的方法是在根目录下建立一个.udl文件,直接设置连接,再加上文件目录和文件名。数据库中表的结构在课程设计的过程中由于之前考虑不足也修改了部分属性,像交易记录等信息还要添加时间作为主键,否则重复账号无法添加记录。然后是更新数据库中的货币,要转换成字符,才能插入,而取出数据时也要转换为浮点型。为按钮添加图片,以及为对话框添加背景都是参考网上的代码,把此次课程设计的界面弄得看着比较舒服了点。总之,这次课程设计巩固了我的基础知识,锻炼了我的动手能力,思考问题以及遇到问题后的解决问题的能力。2012/12/27

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号