免费预览已结束,剩余21页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈阳理工大学课程设计专用纸 No2目 录一、课程设计的目的和意义. .2 二、需求分析.3三、概念结构设计(E-R图).5四、逻辑结构设计.6五、数据实施与维护. .75.1 建立相应的表。.75.2 建立关系图. .9六、界面设计与代码(用VB作为开发工具).106.1 登陆界面. .106.2 系统主界面。.116. 3 基本信息管理界面.126.4理财信息管理界面.166.5 数据统计管理界面.206.6用户管理模块.22七、结果分析. .24八、参考文献. .25家庭理财管理系统一、课程设计的目的和意义家庭理财管理系统可以有效地记录和管理家庭财政的收支情况,合理规划和支配家庭资金,是家庭理财的好帮手,使您生活的更加幸福甜蜜。设计家庭理财管理系统,可以涉及到大多数 Access 数据库的重要数据库对象、重要功能和特性,比如:视图和存储过程等。由此,通过这个课程设计可以加深对这些 Access 数据库知识的学习、理解,积累在实际工程应用中运用各种数据库对象的经验,从而掌握使用应用软件开发工具开发数据库管理系统的基本方法。本课程设计的主要目的是学习和练习Access数据库的实际应用,所以选择Access作为数据库服务器。二、需求分析 家庭理财管理系统是家庭理财的好帮手,包括基本信息管理,理财管理和数据统计等主要功能,具体功能如下: 基本信息的添加、修改、删除和查询。 理财信息的添加、修改、删除和查询。 数据统计模块包括日常收支统计,银行交易统计和家庭资产统计等功能。用户管理关系图如下: 系统用户信息管理修改Admin用户的密码创建、修改和删除普通用户信息修改自身的密码Admin用户普通用户 用户管理关系图系统总体设计图如下:家庭理财管理系统基本信息管理银行信息管理收入类型管理支出类型管理家庭理财管理数据统计管理系统用户管理家庭成员馆管理用户信息管理修改自身密码家庭理财管理系统功能模块示意图日常收支管理银行往来管理银行账户管理日常收支统计银行交易统计家庭资产统计系统的流程分析图如下:开 始用户登录失败重试失败超过三次YESNO退出程序成功读取用户类型Admin用户管理自己的用户信息管理普通用户的信息普通用户管理自己的用户信息 基本信息管理 理财信息管理 数据统计管理系统流程分析图三、概念结构设计(E-R图)用 户 用户名密码银行编号简称地点银行名称银行交易信息 编号家庭成员表编号银行编号账号利息交易日期交易类型交易金额备注信息定期存款月份日常收支信息 成员编号账号金额类型编号人记录编号收支日期 管理管理所属匹配四、逻辑结构设计将E-R图转换成关系模式:用户(用户名,密码)银行(银行编号,银行名称,简称,地点)家庭成员(记录编号,姓名,性别,生日,手机,工作单位)日常支出(记录编号,收支类型编号,收支日期,账号,收支金额,家庭成员编号,备注信息,类型 0表示收入,1表示支出)银行账号(记录编号,账户类型,银行编号,家庭成员编号,开户日期,存款类型,账户金额,备注信息)银行交易信息表(记录编号,银行编号,家庭成员编号,交易日期,账号,交易金额,定期存款月份,利息,备注信息,交易类型)五、数据库实施与维护建立数据库 打开Access 2003,建立数据库:FM添加数据表 在FM数据库中,添加表 如图所示建立相应的表:1、用户表: 沈阳理工大学2、银行信息表:4、日常支出信息表 6、银行账号信息表:3、家庭成员信息表:5、银行交易信息表:7、基本信息表:建立关系图 六、界面设计与代码(用VB作为界面设计语言)1、登录界面其主要代码如下:Private Sub Cmd_Cancel_Click() EndEnd SubPrivate Sub Cmd_OK_Click() Dim j As Single数据有效性检查 If txtUser = Then MsgBox 请输入用户名 txtUser.SetFocus Exit Sub End If If txtPwd = Then MsgBox 请输入密码 txtPwd.SetFocus Exit Sub End If NameKey = Trim(txtUser) PasswordKey = Trim(txtPwd) 判断用户是否存在 If MyUser.In_DB(NameKey) = False Then MsgBox 用户名不存在 Try_times = Try_times + 1 If Try_times = 3 Then MsgBox 您已经三次尝试进入本系统,均不成功,系统将关闭 DBapi_Disconnect End Else Exit Sub End If End If 判断密码是否正确 MyUser.GetInfo (NameKey) If MyUser.UserPwd PasswordKey Then MsgBox 密码错误 Try_times = Try_times + 1 If Try_times = 3 Then MsgBox 您已经三次尝试进入本系统,均不成功,系统将关闭 DBapi_Disconnect End Else Exit Sub End If End If 登录成功,将当前用户的信息保存在CurUser中 CurUser.GetInfo (MyUser.UserName)关闭自己 Unload MeEnd Sub2、系统主界面其主要代码如下:Private Sub m_User_Click()If username = admin Then FrmUserMan.ShowElse MsgBox 您无此权限End IfEnd Sub3、基本信息管理模块:l 银行信息编辑窗体:Public OriBId As LongPublic Modify As BooleanPrivate Sub Cmd_Cancel_Click()Unload MeEnd SubPrivate Sub Cmd_OK_Click()If Len(Trim(txtBName) = 0 ThenMsgBox 请输入银行全称txtBName.SetFocusExit SubEnd IfWith MyBank .BankName = Trim(txtBName) .BShort = Trim(txtShort).Place = Trim(txtPlace)If Modify = False Then .InsertMsgBox 添加成功 Else .Update (OriBId) MsgBox 修改成功 End IfEnd WithUnload MeEnd Subl 银行信息管理界面Private Sub Cmd_Add_Click() FrmBankEdit.Modify = False FrmBankEdit.Show 1 刷新数据 DataRefreshEnd SubPrivate Sub Cmd_Back_Click() Unload MeEnd SubPrivate Sub Cmd_Del_Click() If Adodc1.Recordset.BOF = True Then MsgBox 请选择记录 Exit Sub End If 查找帐户信息Account表是否存在此银行编号,如果存在则不允许删除 If MyAcc.GetInfo(Adodc1.Recordset.Fields(0) Then MsgBox 帐户信息中包含此银行信息,不能删除记录 Exit Sub End If 确认删除 If MsgBox(是否确定要删除银行信息?, vbYesNo, 请确认) = vbNo Then Exit Sub End If 删除银行信息 MyBank.Delete (Adodc1.Recordset.Fields(0) MsgBox 成功删除 刷新数据 DataRefreshEnd SubPrivate Sub Cmd_Modi_Click() If Adodc1.Recordset.BOF = True Then MsgBox 请选择记录 Exit Sub End If FrmBankEdit.Modify = True FrmBankEdit.OriBId Adodc1.Recordset.Fields(0) FrmBankEdit.txtBName = Trim(Adodc1.Recordset.Fields(1) FrmBankEdit.txtShort = Trim(Adodc1.Recordset.Fields(2) FrmBankEdit.txtPlace = Trim(Adodc1.Recordset.Fields(3) FrmBankEdit.Show 1 刷新数据 DataRefreshEnd SubPrivate Sub Cmd_Search_Click() DataRefreshEnd SubPrivate Sub Form_Load() DataRefreshEnd Sub刷新数据Private Sub DataRefresh() Dim strSearch As String Dim TmpSource As String strSearch = If Len(Trim(txtBName) 0 Then strSearch = Where BankName Like % + Trim(txtBName) + % End If TmpSource = Select BankId AS 银行编号,BankName AS 银行全称,BShort AS 简称,Place AS 所在地址 _ + From Banks + strSearch + Order By BankId Adodc1.ConnectionString = Conn Adodc1.RecordSource = TmpSource Adodc1.Refresh Set DataGrid1.DataSource = Adodc1 DataGrid1.Columns(0).Width = 1000 DataGrid1.Columns(1).Width = 2400 DataGrid1.Columns(2).Width = 1200 DataGrid1.Columns(3).Width = 2400End Sub4、l 设计收入类型窗体 Private OriId As Long 类型编号Private OriTypeName As String 原来的类型名称类型分类编号,0-收入类型;1-支出类型Public nFlag As IntegerPrivate Sub Cmd_Add_Click() 添加类型名称,先判断域是否为空 If Len(Trim(txtName) = 0 Then MsgBox (请输入类型名称) txtName.SetFocus Exit Sub End If 判断数据库中是否已经存在此类型名称 If MyType.In_DB(Trim(txtName), nFlag) = True Then MsgBox (已经存在此类型名称 txtName.SetFocus Exit Sub End If 插入新记录 With MyType .TypeName = Trim(txtName) .Flag = nFlag .Insert MsgBox 添加成功 End With DataRefreshEnd SubPrivate Sub Cmd_Del_Click() If Len(Trim(DataList1.BoundText) MsgBox (请选择记录) Exit Sub End If 确定删除 If MsgBox(是否确定要删除 , vbYesNo, 请确认) = vbNo Then Exit Sub End If 删除类型 MyType.Delete (Val(DataList1.BoundText) MsgBox 删除成功 DataRefresh 刷新DataList1End SubPrivate Sub Cmd_Exit_Click() Unload MeEnd SubPrivate Sub Cmd_Modi_Click() 修改类型名称 If Len(Trim(DataList1.BoundText) MsgBox (请选择记录) Exit Sub End If 判断新的名称是否和原来的相同 If Trim(txtName) = OriTypeName Then Exit Sub End If 判断新的名称是否已经存在 If MyType.In_DB(Trim(txtName), nTypeId) = True Then MsgBox (已经存在此类型名称 txtName.SetFocus Exit Sub End If 更新名称 MyType.TypeName = Trim(txtName) MyType.Update (OriId) MsgBox 修改成功 DataRefresh 刷新类型列表End Subl 设计支出类型窗体:支出类型信息管理同上,nFLAG的值为1l 设计家庭成员信息窗体:代码与银行信息编辑类似。l 家庭成员信息管理:主要代码如下:Private Sub Form_Load() DataRefreshEnd Sub刷新数据Private Sub DataRefresh() Dim TmpSource As String TmpSource = Select MemId,MemName AS 姓名,Sex AS 性别,Birth AS 出生日期, _ + Mobile AS 手机,Job AS 工作单位 From Members Order By MemId Adodc1.ConnectionString = Conn Adodc1.RecordSource = TmpSource Adodc1.Refresh Set DataGrid1.DataSource = Adodc1 DataGrid1.Columns(0).Width = 0 DataGrid1.Columns(1).Width = 1000 DataGrid1.Columns(2).Width = 600 DataGrid1.Columns(3).Width = 1200 DataGrid1.Columns(4).Width = 1200 DataGrid1.Columns(5).Width = 18004 理财信息管理模块:l 日常收支信息窗体:Public OriLId As LongPublic Modify As BooleanPublic OldSum As Double 记录原始收支金额Public DSum As Double 差值 If Len(Trim(txtDate) = 0 Then MsgBox 请输入收支日期 txtDate.SetFocus Exit Sub End If If Len(Trim(txtSum) = 0 Then MsgBox 请输入收支金额 txtSum.SetFocus Exit Sub End If If Len(Trim(dco_Mem.Text) = 0 Then MsgBox 请选择使用人 dco_Mem.SetFocus Exit Sub End If 当交易类型为取款(1)时,选择帐户信息后,需要判断是否此账号金额是否足够 If MyAcc.GetInfo(Trim(dco_Acc.BoundText() And MyAcc.ASum 0 Then StrSch = And l.Flag= + Trim(cob_Flag.ListIndex) End If If Len(Trim(dco_Type.Text() 0 Then StrSch = StrSch + And l.TypeId= + dco_Type.BoundText() End If If Len(Trim(cob_Date.Text) 0 Then StrDate = Format(cob_Date.Text, yyyy-mm-dd) StrSch = AND l.UseDate= + Trim(StrDate) + End If End If TmpSource = Select l.Id, IIF(l.Flag=0,收入,支出) AS 收支类型, _ + t.TypeName AS 分类名称,l.ANo AS 账号,l.UseDate AS 收支日期, _ + l.UseSum AS 收支金额,m.MemName AS 使用人,l.Memos AS 说明,l.Flag _ + From InOutList l,Types t,Members m _ + Where l.MemId=m.MemId And l.TypeId=t.TypeId + StrSch _ + Order By l.UseDate DescMsgBox TmpSource Adodc1.ConnectionString = Conn Adodc1.RecordSource = TmpSource Adodc1.Refresh Set DataGrid1.DataSource = Adodc1 DataGrid1.Columns(0).Width = 0 编号 DataGrid1.Columns(1).Width = 2100 收支类型 DataGrid1.Columns(2).Width = 1000 分类名称 DataGrid1.Columns(3).Width = 1600 账号 DataGrid1.Columns(4).Width = 1000 收支日期 DataGrid1.Columns(5).Width = 1200 收支金额 DataGrid1.Columns(6).Width = 1000 使用人 DataGrid1.Columns(7).Width = 1200 说明 DataGrid1.Columns(8).Width = 0 FlagEnd Subl 银行交易信息管理代码与日常收支信息编辑窗体类似l 银行交易信息管理主要代码:刷新数据Private Sub DataRefresh() Dim TmpSource As String Dim StrSch As String 判断是否选中“全部”,如果没有则提取不同的查询条件 If Check1.Value = 1 Then StrSch = Else If Len(Trim(dco_Bank.Text() 0 Then StrSch = And o.BId= + dco_Bank.BoundText() End If If Len(Trim(dco_Mem.Text() 0 Then StrSch = StrSch + And o.MemId= + dco_Mem.BoundText() End If If Len(Trim(dco_Acc.Text() 0 Then StrSch = StrSch + And o.ANo= + dco_Acc.BoundText() + End If End If TmpSource = Select o.Id, b.BankName AS 银行名称,m.MemName AS 交易人姓名,o.ANo AS 账号, _ + o.OperDate AS 交易日期,o.OperSum AS 交易金额, _ + IIF(o.Flag=0,存款,IIF(o.Flag=1,取款,清户) AS 交易类型, _ + o.Smonth AS 定期月份,o.Interest AS 实际利息,o.Memos AS 说明,o.Flag _ + From BankOper o,Banks b,Members m _ + Where o.BId=b.BankId And o.MemId=m.MemId + StrSch _ + Order By o.OperDate Desc Adodc1.ConnectionString = Conn Adodc1.RecordSource = TmpSource Adodc1.Refresh Set DataGrid1.DataSource = Adodc1 DataGrid1.Columns(0).Width = 0 编号 DataGrid1.Columns(1).Width = 2100 银行名称 DataGrid1.Columns(2).Width = 1000 交易人 DataGrid1.Columns(3).Width = 1600 账号 DataGrid1.Columns(4).Width = 1000 交易日期 DataGrid1.Columns(5).Width = 1200 交易金额 DataGrid1.Columns(6).Width = 1000 交易类型 DataGrid1.Columns(7).Width = 1200 定期月份 DataGrid1.Columns(8).Width = 1000 实际利息 DataGrid1.Columns(9).Width = 1200 说明 DataGrid1.Columns(10).Width = 0 FlagEnd Sub5、数据统计模块管理:l 日常收支统计:Private Sub DataRefresh() Dim StrSch As String Dim TmpSource As String Dim StrDate1 As String Dim StrDate2 As String If cob_Month.ListIndex 0 Then 如果月份大于0,则开始日期为本月1日 StrDate1 = Trim(cob_Year.Text) + - + Trim(cob_Month.ListIndex) + -01 If cob_Month.ListIndex = 12 Then 如果月份为12,则结束日期为下一年度1月1日 StrDate2 = Trim(Val(cob_Year.Text) + 1) + -01-01 StrSch = And l.UseDate=# + StrDate1 + # And l.UseDate 0 Then 如果月份大于0,则开始日期为本月1日 StrDate1 = Trim(cob_Year.Text) + - + Trim(cob_Month.ListIndex) + -01 If cob_Month.ListIndex = 12 Then 如果月份为12,则结束日期为下一年度1月1日 StrDate2 = Trim(Val(cob_Year.Text) + 1) + -01-01 Else StrDate2 = Trim(cob_Year.Text) + - + Trim(cob_Month.ListIndex + 1) + -01 End IfStrSch = And o.OperDate=# + StrDate1 + # And o.OperDate# + StrDate2 + l 家庭资产统计:代码:Private Sub Cmd_Back_Click() Unload MeEnd SubPrivate Sub Form_Load() tree1.HotTracking = True tree1.HideSelection = False tree1.LabelEdit = 1 tree1.LineStyle = 1 tree1.Nodes.Add , , N0, 家庭总资产 tree1.Nodes.Add N0, 4, N1, 银行总存款-共计 + Trim(MyAcc.CalSum(1) + 元 tree1.Nodes.Add N0, 4, N2, 现金总额-共计 + Trim(MyAcc.CalSum(0) + 元 tree1.Nodes.Add N0, 4, N3, 收入总额-共计 + Trim(MyList.CalSum(0) + 元 tree1.Nodes.Add N0, 4, N4, 支出总额-共计 + Trim(MyList.CalSum(1) + 元 tree1.Nodes(2).Selected = TrueEnd Sub6用户管理模块:l 用户管理:rivate Sub Cmd_Modi_Click() 如果没有选择用户名,则返回 If DataList1.Text = Then MsgBox 请选择要修改的用户 Exit Sub End If 把当前用户的数据赋值到FrmUserEdit窗体的相关位置 With FrmUserEdit .OriUser = MyUser.UserName .txtUserName = MyUser.UserName .txtPass = MyUser.UserPwd .txtPass2 = MyUser.UserPwd 如果当前用户为Admin,则不能修改用户名 If Format(MyUser.UserName, ) = admin Then .txtUserName.Enabled = False End If 将变量Modify设置为True,表示当前状态为修改已有数据 .Modify = True 启动窗体FrmUserEdit .Show 1 End With 刷新用户名列表框 AdoUserList.Refresh DataList1_ClickEnd SubPrivate Sub DataList1_Click() 如果没有选择用户名,则返回 If DataList1.Text = Then Exit Sub End If 读取当前用户数据 MyUser.GetInfo (DataList1.Text) 设置用户名 lblUserName = MyUser.UserName 设置用户类型 If Format(MyUser.UserName, ) = admin Then lblUserType = 系统管理员 Else lblUserType = 普通用户 End IfEnd Subl 编辑用户信息Private Sub Cmd_OK_Click()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国医药行业运动医学市场前景与投资报告
- 培训安全协议书模板
- 中小学教师副高职称评审答辩题目及答案详解(教育理论、教学管理部分)
- 培训班人员合同范本
- 合资企业债券协议书
- 秋季安全教育主题班会课件
- 半路夫妻财产协议书
- 2025年考试试题试卷及茶艺师(中级)证考试试题附答案
- 安全生产管理理论的发展和应用
- 2025年律师职业道德和执业纪律试题及答案
- 管理学原理 王光健版
- 【合同模板】采购合同-框架+订单采购模式
- 摄影基础-摄影构图课件
- 商标侵权工商投诉书(3篇)
- 2023个人房屋承诺书范例(一)
- 脓毒血症指南解读
- 叉车安全带的作用
- 消防工程施工方案技术标
- 最全螺栓扭矩表(各种标准)
- YS/T 514.5-2009高钛渣、金红石化学分析方法第5部分:氧化铝量的测定EDTA滴定法
- GB/T 9119-2010板式平焊钢制管法兰
评论
0/150
提交评论