毕业设计论文应用3张文鹏Word格式.docx
《毕业设计论文应用3张文鹏Word格式.docx》由会员分享,可在线阅读,更多相关《毕业设计论文应用3张文鹏Word格式.docx(25页珍藏版)》请在冰豆网上搜索。
包括系统管理、基础数据管理、日常收支管理、银行储蓄管理、借还钱管理、理财分析等六个模块的设计。
第四章介绍模块与表功能的实现;
包括后台具备数据输入、批量数据导入、修改、删除、查询、权限设置与管理等功能。
第五章介绍菜单的设计以及数据库与VB的链接技术及运用。
本论文中对家庭理财管理信息系统的创建工具技巧如下:
Ø
公共模块的设计
ACCESS数据库设计方法
VB菜单设计方法
ADO控件设计方法
DataGrid控件设计方法
统一的数据编辑方法
VB报表设计方法
图像数据的存储方法
事件编辑技术
第1章VB数据库开发基础
VB提供了功能强大的数据库管理功能,能够方便、灵活地完成数据库应用中涉及的查询、修改数据库以及打印等各种操作。
本章主要介绍以access为平台的VB数据库系统开发相关知识,为后面几章的数据库应用系统设计打下基础。
1.1数据访问对象模型
ODBC数据库是开放式数据库,包括ODBC标准的客户/服务器数据库,如MicrosoftServer、Oracle、Sybase等,VB可以使用支持ODBC标准的数据库。
1.2ODBC
●ODBC是开放式数据库链接,它能提供访问数据库的单一接口。
●ODBC使客户应用程序的开发可以独立于后端服务器。
●ODBC由如图1.1几部分组成。
图1.1ODBC的组成
1.3创建数据源
在建立好数据源并在当前服务器上安装相应的ODBC驱动程序,就可以建立应用程序需要的数据源了。
创建一个ODBC数据源:
1.在控制面板中,建立数据源界面。
2.双击“ODBCDateSource”进入ODBC数据源管理器。
图1.2ODBC数据源管理器
图1.3创建新数据源
图1.4创建Access数据源
1.4ADODate数据库
ADODate控件它与VB固有的Date控件相似。
使用ADODate控件,可以利用ADO快速建立数据绑定控件和数据提供者之间的连接。
设置ADO数据控件的连接字符串(ConnectionString)属性来创建到数据源的连接。
这个属性给出了将要访问的数据库的位置和类型。
在ADO数据控件的属性窗口中单击ConnectionString属性旁的浏览按钮就可以设置这个属性。
使用数据连接文件
这个选项指定一个连接到数据源的自定义的连接字符串,单击旁边的“浏览”按钮可以选择一个连接文件。
使用ODBC数据源名称
这个选项允许使用一个系统定义好的数据源名称(DSN)来作为连接字符串。
可以在组合框中的数据源列表中进行选择,使用旁边的“添加”按钮可以添加或修改DSN。
使用连接字符串
这个选项定义一个到数据源的连接字符串。
单击“生成”按钮弹出“数据连接属性”对话框,在这个对话框中可以指定提供者的名称、连接以及其它的要求信息。
单击浏览按钮调出属性页窗口,设置连接字符串属性。
ADODate控件的功能:
✧连接本地数据库。
✧打开指定的数据库表,或定义基于SQL查询,存储过程数据库表中的视图记录集合。
✧添加新记录或显示在绑定的控件中数据库来更新数据库。
1.4.1ADOData控件的属性
ADOData控件的属性如下:
✓Align属性
✓BOFAction和EOFAction属性
✓ConnectionString属性
✓RecordSource属性
1.4.2ADOData控件的方法
方法UpdateControls方法(ADO数据控件),Refresh方法,SetFocus方法,Drag方法,Move方法,ZOrder方法,ShowWhatsThis方法。
事件EndOfRecordSet(ConnectionEvent)方法(ADO),FetchComplet(RecordsetEvent)方法(ADO),FetchProgress(RecordsetEvent)方法(ADO),WillChangeField和FieldChangeComplete(ConnectionEvent)方法(ADO),WillChangeRecord和RecordChangeComplete(ConnectionEvent)方法(ADO),WillMove和MoveComplete(ConnectionEvent)方法(ADO)。
1.4.3ADOData控件的事件
ADOData控件的事件:
✧WillMove和MoveComplete事件
✧WillChangeField和FieldChangeComplete事件
✧WillChangeRecord和RecordChangeComplete事件
1.5DataCombo控件
DataCombo控件是以一个下拉列表框的形式提供给用户。
它可以和一个具体的数据库中的表、表中的某些项或一段SQL语句相联系,从而在下拉列表框中显示出具体的数据。
Windows窗体ComboBox控件用于在下拉组合框中显示数据。
默认情况下,ComboBox控件分两个部分显示:
顶部是一个允许用户键入列表项的文本框。
第二部分是一个列表框,它显示一个项列表,用户可从中选择一项。
有关组合框的其他样式的更多信息,请参见何时使用Windows窗体ComboBox而非ListBox。
SelectedIndex属性返回一个整数值,该值与选择的列表项相对应。
通过在代码中更改SelectedIndex值,可以编程方式更改选择项;
列表中的相应项将出现在组合框的文本框部分。
如果未选择任何项,则SelectedIndex值为-1。
如果选择列表中的第一项,则SelectedIndex值为0。
SelectedItem属性与SelectedIndex类似,但它返回项本身,通常是一个字符串值。
Count属性反映列表的项数,由于SelectedIndex是从零开始的,所以Count属性的值通常比SelectedIndex的最大可能值大一。
若要在ComboBox控件中添加或删除项,请使用Add、Insert、Clear或Remove方法。
或者,可以在设计器中使用Items属性向列表添加项。
1.5.1DataCombo控件的属性
DataCombo控件的属性如下:
◆DateSource属性
◆DateField属性
◆RowSource属性
◆ListField属性
其操作步骤如下:
1)在家庭理财管理信息系统中添加一个窗体Form1.
2)在该窗体中添加一个ADO控件Adodc1,其属性设置如下:
ConnectionString=”Stud”
RecordSource=”Select*fromstudent”
UserName=”sa”
DTPicker1.Value=MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row,1)
Combo1.Text=MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row,2)
1.5.2DataCombo控件的方法
DataCombo控件的常用方法为Refresh方法,该方法用于刷新DataCombo控件的数据源。
ComboBox控件使用dataProvider定义下拉列表的值。
dataProvider的类型可以是Array、XML或者是ICollectionView。
这里monthCombo的dataProvider是一个包含十二个月份的Array。
我们看到,monthCombo的TextInput区域和下拉列表中都显示的是Array中每个Object的label字段的值。
1.5.3ataCombo控件的事件
DataCombo控件的事件如下:
1)LostFocus事件
2)Click事件
第2章数据库的设计
2.1概述
数据库设计(DatabaseDesign)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求。
这篇专题主要针对数据库的设计原则与开发技巧进行了扼要的总结。
2.1.1系统功能
系统功能如下:
1)家庭成员可以根据帐户信息来进行取款记录
2)对定期存储、取款、日常收支等功能进行理财分析并用图标表示
3)对家庭工资还可以进行定期查询、删除、更新等操作功能
2.1.2设计技巧
设计技巧如下:
1)公共模块
2)VB菜单设计方法
3)统一的数据编辑设计方法
4)图像数据的存取方法
5)事件编程技术
6)数据库基础知识
2.2系统结构
本系统对应的工程,它包含的所有文件及结构如下:
图2.1系统结构组成
图2.2家庭理财管理系统.vbp工程
2.3数据表的设计
数据库表设计原则:
1)不应该针对整个系统进行数据库设计,而应该根据系统架构中的组件划分,针对每个组件所处理的业务进行组件单元的数据库设计;
不同组件间所对应的数据库表之间的关联应尽可能减少,如果不同组件间的表需要外键关联也尽量不要创建外键关联,而只是记录关联表的一个主键,确保组件对应的表之间的独立性,为系统或表结构的重构提供可能性。
2)采用领域模型驱动的方式和自顶向下的思路进行数据库设计,首先分析系统业务,根据职责定义对象。
对象要符合封装的特性,确保与职责相关的数据项被定义在一个对象之内,这些数据项能够完整描述该职责,不会出现职责描述缺失。
并且一个对象有且只有一项职责,如果一个对象要负责两个或两个以上的职责,应进行分拆。
3)根据建立的领域模型进行数据库表的映射,此时应参考数据库设计第二范式:
一个表中的所有非关键字属性都依赖于整个关键字。
关键字可以是一个属性,也可以是多个属性的集合,不论那种方式,都应确保关键字能够保证唯一性。
在确定关键字时,应保证关键字不会参与业务且不会出现更新异常,这时,最优解决方案为采用一个自增数值型属性或一个随机字符串作为表的关键字。
4)由于第一点所述的领域模型驱动的方式设计数据库表结构,领域模型中的每一个对象只有一项职责,所以对象中的数据项不存在传递依赖,所以,这种思路的数据库表结构设计从一开始即满足第三范式:
一个表应满足第二范式,且属性间不存在传递依赖。
5)同样,由于对象职责的单一性以及对象之间的关系反映的是业务逻辑之间的关系,所以在领域模型中的对象存在主对象和从对象之分,从对象是从1-N或N-N的角度进一步主对象的业务逻辑,所以从对象及对象关系映射为的表及表关联关系不存在删除和插入异常。
6)在映射后得出的数据库表结构中,应再根据第四范式进行进一步修改,确保不存在多值依赖。
这时,应根据反向工程的思路反馈给领域模型。
如果表结构中存在多值依赖,则证明领域模型中的对象具有至少两个以上的职责,应根据第一条进行设计修正。
第四范式:
一个表如果满足BCNF,不应存在多值依赖。
7)在经过分析后确认所有的表都满足二、三、四范式的情况下,表和表之间的关联尽量采用弱关联以便于对表字段和表结构的调整和重构。
并且,我认为数据库中的表是用来持久化一个对象实例在特定时间及特定条件下的状态的,只是一个存储介质,所以,表和表之间也不应用强关联来表述业务(数据间的一致性),这一职责应由系统的逻辑层来保证,这种方式也确保了系统对于不正确数据(脏数据)的兼容性。
当然,从整个系统的角度来说我们还是要尽最大努力确保系统不会产生脏数据,单从另一个角度来说,脏数据的产生在一定程度上也是不可避免的,我们也要保证系统对这种情况的容错性。
这是一个折中的方案。
8)应针对所有表的主键和外键建立索引,有针对性的(针对一些大数据量和常用检索方式)建立组合属性的索引,提高检索效率。
虽然建立索引会消耗部分系统资源,但比较起在检索时搜索整张表中的数据尤其时表中的数据量较大时所带来的性能影响,以及无索引时的排序操作所带来的性能影响,这种方式仍然是值得提倡的。
9)尽量少采用存储过程,目前已经有很多技术可以替代存储过程的功能如“对象/关系映射”等,将数据一致性的保证放在数据库中,无论对于版本控制、开发和部署、以及数据库的迁移都会带来很大的影响。
但不可否认,存储过程具有性能上的优势,所以,当系统可使用的硬件不会得到提升而性能又是非常重要的质量属性时,可经过平衡考虑选用存储过程。
10)当处理表间的关联约束所付出的代价(常常是使用性上的代价)超过了保证不会出现修改、删除、更改异常所付出的代价,并且数据冗余也不是主要的问题时,表设计可以不符合四个范式。
四个范式确保了不会出现异常,但也可能由此导致过于纯洁的设计,使得表结构难于使用,所以在设计时需要进行综合判断,但首先确保符合四个范式,然后再进行精化修正是刚刚进入数据库设计领域时可以采用的最好办法。
11)设计出的表要具有较好的使用性,主要体现在查询时是否需要关联多张表且还需使用复杂的SQL技巧。
12)设计出的表要尽可能减少数据冗余,确保数据的准确性,有效的控制冗余有助于提高数据库的性能。
在系统中设计了数据库KSD,其中包含如下数据表:
例如:
活期存取表,包括账号、日期、姓名等。
图2.3活期存取表
2.3.1用户及家庭成员信息表的建立
利用Access基础知识,对表建立,例如:
数据类型、字段名称。
图2.4家庭成员表的建立
第3章家庭管理系统
3.1系统实现
本章介绍家庭管理系统组成部分的实现方法。
对于窗体、给出执行功能、设计界面、主要对象和方法。
以及公共模块和系统的最终运行。
本工程中引用了一些ActiveX控件等,在设计时选择“工程”菜单中“引用”选项,从引用列表中选择如下选项:
图3.1引用——家庭管理信息系统.vbp工程
再选择“工程”菜单中的“部件”选项,从控件列表中选中如下选项:
图3.2部件
若找不到,则单击“浏览”按钮,出现“添加ActiveX控件”对话框,选择Windows\System文件夹中的MsComctl.ocx文件即可。
3.1.1公共模块
本工程中包含一个公共模块即Module1.Bas模块,其中包含一些全局变量和过程(被本工程中的一些窗体所调用),代码如下:
PublicStr_pathasString
PublicCnameAsString'
登陆时传用户名
PublicCdate1AsString'
传日期(收入情况列表)
PublicCdate2AsString'
传日期
PublicAAAsBoolean'
判断是否选择月份
PublicFunctionexesql(ByValsqlAsString)AsADODB.Recordset’用于执行用户给定的SELECT语句,返回对应的记录集:
DimStokens()AsString'
数组'
OnErrorGoToexecutesql_error
Stokens=Split(Sql)'
将sql语句按关键字保存在数组中
SetCnn=NewADODB.Connection
Cnn.OpenConnectstring
IfInStr("
INSERT,DELETE,UPDATE"
UCase$(Stokens(0)))Then
Cnn.ExecuteSql
Msgstring=Stokens(0)&
"
查询成功"
Else
SetRst=NewADODB.Recordset
Rst.OpenTrim$(Sql),Cnn,adOpenKeyset,adLockOptimistic'
重服务器中提取符合要求的记录集
SetExeCutesql=Rst
Msgstring="
查询到"
&
Rst.RecordCount&
条记录"
EndIf
executesql_exit:
SetRst=Nothing'
释放记录集
SetCnn=Nothing'
释放连接语句
ExitFunction
executesql_error:
查询错误:
"
Err.Description
Resumeexecutesql_exit
EndFunction
3.1.2登陆界面
首先,客户先进入登陆界面,输入用户名和密码。
输入期限最多三次。
若输入错误或密码记错,会有信息框提示;
若不是本人,可以先注册然后登陆;
同时也可以修改密码等。
图3.3登陆界面
3.1.3窗体
窗体用于接受用户名/口令输入,不断是否为合法。
如果是合法用户,释放该窗体并启动main窗体;
否则释放该窗体不启动main窗体。
Main窗体是一个多文档窗体,该窗体中包含对象和功能如图所示。
该窗体上设计了六个菜单及其子菜单如图所示。
从工具栏中截取了十一个彩色图标,它代表着窗体的各个功能,它包括:
项目管理、添加家庭成员、修改密码、数据的保存系统、日常收入和支出、活期存款、理财汇报、查询、退出功能。
下面分节详细介绍。
图3.4家庭理财管理信息系统——多文档窗体
3.1.4定期存款
图3.5定期存款
3.1.5日常收支
图3.6日常支出
图3.7日常收入
3.1.6查询
图3.8查询
3.1.7活期存取
图3.9活期存款——取款记录
图3.10活期存款——帐户信息
3.1.8借还帐户
图3.11借入款
图3.12借出款
3.1.9银行储蓄
图3.13银行储蓄——项目管理
3.1.10分析
图3.14理财报告
第4章模块与表功能的实现
4.1操作查询的实现
操作查询分为选择查询、更新查询、生成表查询、删除查询,本论文中涉及到一线数据库的操作查询。
删除、选择、添加、修改等。
在Access中也介绍了兑现关于查询,比如添加新老客户,添加家庭成员,必须涉及到Access的操作。
在项目管理中,我们对收支项目的统计,进行每月的操作。
添加或删除记录,对管理家庭经济由很大帮助,同时也便于管理。
就好比会计,经济管理中的经济利润和会计利润的区别。
更加大了精确性和效率性。
4.2数据的输入与导入
在登陆系统界面时,点击菜单系统设置时,会出现数据的导入和导出。
点击导出数据会激发mnuout_Click()事件;
同样点击导入数据会激发mnuinput_Click()事件。
设计代码如下:
PrivateFunctionFileGo()
OnErrorGoTo1
DimA,BasString
CommonDialog1.ShowSave
A=CommonDialog1.FileName
B=App.Path&
\"
database\MoneyMIS.mdb"
Setfess=CreateObject("
Scripting.FileSystemObject"
)
Fs.CopyFileB,A
Skybox"
数据库导出成功!
vbOKOnly+64,"
成功"
1:
MsgBox"
数据库导出失败!
失败"
PrivateFunctionFileIn()
DimA,B,C,DasString
C=MsgBox("
是否真的导入数据库,导入新数据库后,将覆盖原来的所有录?
vbYesNo+48+256,"
警告"
IfC=vbYesThen
CommonDialog1.ShowOpen
B=App.Path&
'
D=CurDir()&
MoneyMIS.mdb"
SetFs1=CreateObject
("
Sfcripting.FileSystemObject"
Fs1.DeleteFileD,True
Fs1.CopyFileA,B
数据库导入成功!
数据库导入失败!
1:
第5章菜单设计与访问VB数据库
5.1概述
VisualBasic提供了设计菜单的工具,但是这个工具不在工具箱中。
在设计菜单的时候,需要在主窗口栏中选择“工具”菜单项,从其下拉菜单中选择“菜单编辑器”窗口,如图,利用这个“菜单编辑器”能够对所要设计的菜单的每一项的属性进