家庭收支管理系统设计_第1页
家庭收支管理系统设计_第2页
家庭收支管理系统设计_第3页
家庭收支管理系统设计_第4页
家庭收支管理系统设计_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录TOC\o"1-3"第一章前言 31.1项目背景与意义 31.2研究开发现状分析 31.3项目的目标和范围 41.4论文的结构简介 4第二章技术与原理 62.1.NET、C#语言及Winform 62.2SQL语言与SQLServer2008数据库管理系统 82.3三层架构体系 82.4UML建模技术 9第三章需求建模 103.1系统需求概述 103.1.1功能性需求分析 103.1.2系统模块划分 103.2系统用例 113.2.1系统用例图 113.2.2系统用例表 123.3核心用例设计 133.3.1UC004录入收入条目 143.3.2UC005修改收入条目 153.3.3UC013查看家庭统计信息 173.4领域模型 19第四章架构设计 204.1系统架构和原理 204.2业务用例的实现 214.2.1用户注册用例实现 214.2.2删除支出条目用例实现 224.3数据库设计 234.3.1E-R图 234.3.2数据库 23第五章模块设计 255.1用户管理模块 255.1.1系统设置流程概述 255.1.2系统设置算法描述 255.1.3系统设置部分核心代码 265.2支出管理模块 285.2.1删除支出条目流程概述 285.2.2删除支出条目算法描述 295.2.3删除支出条目部分核心代码 29第六章部署与应用 356.1系统运行环境 356.2系统部署 356.2.1制作安装包 356.2.2安装程序 376.3系统测试 38第七章结论 43致谢 44参考文献 45附录 46

前言项目背景与意义随着人们经济意识的提高,“家庭理财”这个词已经不再陌生,成为了每个家庭日常生活中不可或缺的一部分。家庭理财涵盖了许多方面,包括理财理念的更新、财务、投资、计划、预算以及心态等。这些方面的基础就是对家庭收支状况的了解与分析,就是记账。传统记账的主要方式是基于账簿、表格等纸介质的手工处理,存在很多问题:以纸张为载体,占用空间大,不易保管,容易丢失和破损;录入时要边算边记录,工作量大,易出错且耗时;查找困难,不易修改(帐薄记录的错误要用化线法和红字法更正)[1]这些问题使传统记账无法满足人们对方便、快捷、环保等特性日益增长的需求。所幸的是信息时代的今天,计算机早已迅速渗透进人们的日常生活,成为家庭生活的一部分,使记账电子化成为解决传统手工记账问题的可行方案。作为计算机应用的一部分,家庭收支管理系统可以帮助个人或家庭更加快速、准确地增加、查询、修改、删除收支项目,即时查看收支明细,还可以得到各种账目汇总报表,多样化的统计报表、统计图表可以方便地分析各个时段、各类项目的收入和支出情况,可靠性高、保密性好、存储量大、成本低,使家庭收支管理工作规范化、程序化,避免时间和精力的不必要浪费,帮助使用者充分挖掘数字背后的情况。家庭收支管理系统作为一款PC端记账软件使家庭收支管理更加方便、快速、安全,操作简单,即时使用,帮助使用者更方便、快速地通过数据掌握个人或家庭收支情况,合理规划消费和投资,提高理财水平。研究开发现状分析财务记账软件从使用对象的性质角度可以划分为专业会计从业人员的大型软件(如用友、金蝶)和针对非专业会计人员的简单实用型会计软件(如星宇财务记账软件,E会计)。专业人员使用的记账软件在我国始于上世纪八十年代初中期,目前处于较成熟的时期;业余人员使用的记账软件则是近几年来才流行起来的,目前方兴未艾。从接入平台上分,记账软件分为财金汇和QUICKEN为代表的PC端理财记账软件、MINT为代表的WEB在线理财记账及MONEY为代表的手机理财记账三大平台。[2]本系统面向普通家庭用户,操作简单,无需培训学习使用。操作系统为受众广泛且安装于PC机的Windows系统,开发目的是帮助每个家庭管理自己家的财务收支情况,不需要信息共享,所以无需接入网络,信息存储更为安全。因此,家庭收支管理系统属于针对非专业人员的PC端的记账软件。系统开发采用C#语言进行开发,借助.NET搭建框架,界面布局快且美观,具有丰富的Winform控件,开发周期较短。Winform对数据库处理提供全面支持,具有与SQLServer易于连接的数据控件,并且使用C#开发Windows应用程序已有许多成熟的案例,这些优点使开发能够更顺利的进行。项目的目标和范围本系统的开发目标是代替需要许多繁杂工作的传统手工记账,帮助使用者更加快速、方便地管理家庭财务收支,更加准确、清晰地掌握家庭收支情况,节约资源,提高家庭理财效率,建立一款服务于普通家庭的桌面应用程序(GraphicalUserInterface)。在设计和技术实现层面,系统开发是在Windows7平台下,使用VisualStudio2010和SQLServer2008开发工具,在三层架构体系结构的基础上,借助.NET搭建框架,使用C#语言进行开发。清晰的界面设计使操作更简单,为用户提供更加友好的用户体验。系统需经注册后登陆使用,注册时需选择适合用户的权限,包括收入管理权限、支出管理权限、总账查看权限。用户登陆后可以在权限范围内进行用户个人收支项的添加、查询、修改、删除,查看个人统计信息、家庭统计信息(包括表格和折线图),进行权限重设等操作。论文的结构简介本论文旨在设计和开发一个操作简单、易于使用的桌面家庭记账系统。整篇论文共为七章,分别是:前言、技术与原理、需求建模、架构设计、模块设计、部署与应用和结论。:前言。阐述项目背景,研究分析开发现状,确定项目目标、项目范围以及论文结构,整体上对项目进行描述。:技术与原理。描述系统开发过程中所使用的相关技术和原理,简要介绍C#语言、.NET平台、Winform、SQL语言、SQLServer2008数据库管理系统、三层架构体系结构、UML建模方法。:需求建模。确定项目功能性需求,描述系统用例,对其中的具有代表性的用例录入收入条目、修改收入条目、查看家庭统计信息加以详细的需求分析,最后进行领域建模。:架构设计。概述系统架构和数据库设计,借助包图描述系统设计思路,利用顺序图说明用户注册、删除支出条目两个典型用例的业务实现过程和交互过程,使用ER图介绍数据库设计。:模块设计。对系统主要模块进行详细设计,选取系统用户管理模块、支出管理模块的典型子模块,针对其主要流程、算法和核心代码作简要介绍。:部署与应用。利用系统部署图说明系统的运行环境,描述系统安装包的制作流程以及安装流程,选取部分用例对系统进行测试,并展示系统若干典型界面。:结论。总结了项目的成果以及设计和开发过程中的不足之处,最后提出系统的改进方向。技术与原理本章介绍设计开发本系统所使用的技术,包括.NET平台、C#语言、Winform、SQL语言、SQLServer2008数据库管理系统、三层架构、UML建模方法。.NET、C#语言及Winform介绍.NET之前先介绍一下什么是.NETFramework。.NETFramework是支持生成和运行下一代应用程序和Web服务的内部Windows组件。.NETFramework的关键组件为公共语言运行时(CLR)和.NETFramework类库。.NET是微软的新一代技术平台,为敏捷商务构建互联互通的应用系统。一个.NET应用是一个使用.NETFramework类库来编写,并运行于公共语言运行时之上的应用程序。[3]C#是从C和C++派生出来的一种简单、现代、面向对象和类型安全的面向对象的编程语言,其语言体系都构建在.NETFramework上,并且能够与.NETFramework完美结合。C#具有以下突出的特点:EQ\o\ac(○,1)语法简洁,不允许直接操作内存,去掉了指针操作;EQ\o\ac(○,2)彻底的面向对象设计,具有封装、继承和多态等特性;EQ\o\ac(○,3)与Web紧密结合,支持绝大多数的Web标准,如HTML、XML等;EQ\o\ac(○,4)强大的安全机制,可以消除软件开发中的常见错误(如语法错误),.NET提供的垃圾回收器能够帮助开发者有效地管理内存资源;EQ\o\ac(○,5)兼容性,遵守.NET的公共语言规范(CLS),从而保证能够与其他语言开发的组件兼容;EQ\o\ac(○,6)灵活的版本处理技术,语言本身内置了版本控制功能,使得开发人员可以更容易地开发和维护;EQ\o\ac(○,7)完善的错误、异常处理机制,提供了完善的错误和异常处理机制,使程序在交付应用时能够更加健壮。[4]用C#编写的源代码被编译为一种符合CLI(CommonLanguageInfrastructure,通用语言基础结构)规范的中间语言(IL)。IL代码与资源一起作为一种称为程序集的可执行文件存储在磁盘上,通常具有的扩展名为.exe或.dll。执行C#程序时,程序集将加载到CLR中,如果符合安全要求,CLR就会执行实时(JIT)编译以将IL代码转换为本机机器指令。图2-1阐释了C#源代码文件、.NETFramework类库、程序集和CLR编译时和运行时关系。[5]图2-1从C#源代码到计算机执行[5]C#与.NET的关系如图2-2所示:图2-2C#与.NET的关系[4]Winform是.NET开发平台对WindowsForm的一种称谓,它是Windows窗体应用程序的基本单元。.NETFramework类库的System.Windows.Forms命名空间中定义的Form类是所有窗体的基类。[4]Winform不仅提供了许多控件,还提供了自行开发控件的基础结构,因此互联网上可以搜索到很多第三方控件(重写或者扩展了一些原有控件的方法和属性,从而能实现某些新的功能)。本系统的开发就使用了一款第三方控件——Chartlet(图表控件)。SQL语言与SQLServer2008数据库管理系统SQL全名是结构化查询语言(StructuredQueryLanguage),是用于数据库中的标准数据查询语言,IBM公司最早使用在其开发的数据库系统中。1986年10月,美国国家标准学会(ANSI)对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSIX3.135-1986),1987年得到国际标准组织的支持下成为国际标准。[6]SQLServer2008是Microsoft公司推出的SQLServer数据库管理系统的新版本,是一款大型的关系型数据库管理系统,具有强大的后台数据库管理能力。SQLServer2008允许用户在使用Microsoft.NET和VisualStudio开发的自定义应用程序中使用数据,提供了一系列丰富的集成服务,可以对数据进行查询、搜索、同步、报告和分析等操作。数据可以存储在各种设备上,从数据中心最大的服务器一直到左面计算机和移动设备。[7]三层架构体系三层架构(3-tierarchitecture)通常意义上的三层架构就是将整个业务应用划分为:表示层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。图2-3为三层架构模型。图2-3三层架构模型表示层主要由响应各种用户界面请求的动作类组成,它会调用业务逻辑层中的函数进行业务逻辑处理,同时根据结果显示不同的界面给用户,本系统中主要表示成Winform方式。业务逻辑层主要完成实际的业务逻辑,把一些数据层的操作进行组合,是系统最核心的部分。数据访问层主要完成对数据文件的操作,负责数据库的访问。三层架构体系结构是面向对象思想发展中的必然产物。通过引入中间层,将复杂的商业逻辑从传统的双层结构(Client-Server)应用模型中分离出来,同时增强了应用程序的可用性、安全性、封装复用性、可扩展性和可移植性,使用户在管理上所花费的时间最小化,从而实现了便捷、高效、安全、稳定的企业级系统应用。[8]UML建模技术统一建模语言(UML,UnifiedModelingLanguage)是非专利的第三代建模和规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML适用于以面向对象技术来描述任何类型的系统,而且适用于系统开发的不同阶段,从需求规格描述直至系统完成后的测试和维护。[9]UML模型大多以图表的方式表现出来,包括五类图:用例图、静态图、行为图、交互图、实现图。开发阶段不同,模型的侧重点也不同,但是都能在UML语言中找到合适的图来加以描述,并且随着各阶段的变化,前一阶段的描述都能比较好地被后一阶段的建模工作加以利用。通常,在分析阶段,使用用例图描述用户需求,确定项目范围,使用交互图(常为顺序图)描述描述对象间的交互关系;在设计阶段,使用类图(属于静态图)描述系统中类的静态结构(包括类之间的联系以及类的属性和操作)。[10]

需求建模本章采用UML统一过程(UnifiedProcess)对家庭收支管理系统进行需求建模。首先确定项目功能性需求,描述系统用例,对其中的核心用例加以详细的需求分析,最后进行领域建模。系统需求概述功能性需求分析功能性需求是针对系统的特性、功能、安全性方面的需求。[10]根据上文对项目开发背景、开发现状,针对本项目实际需要,提出了本系统的功能性需求。本系统主要面向普通家庭成员(非专业人员),系统的主要功能性需求为:针对收入者:记录每笔收入项详细信息,包括收入项目、收入日期、收入金额以及摘要;查询以及修改(或删除)收入项。针对支出者:记录每笔支出项详细信息,包括支出项目、支出日期、支出金额以及摘要;查询以及修改(或删除)支出项。针对家庭财产管理者:查看家庭收支统计信息。针对所有使用者:注册、登录系统;查看个人收支统计信息;重设密码以及权限。系统模块划分家庭收支管理系统根据功能可分为五大模块:通用模块:处理用户注销和退出系统操作。收入管理模块:收入者录入、修改、删除个人收入项。支出管理模块:支出者录入、修改、删除个人支出项。统计信息模块:所有系统使用者均可查看个人收支统计信息,拥有“总账查看权限”的用户可以查看家庭收支统计信息。用户管理模块:处理用户注册、登录和设置等和用户信息有关的操作。本系统的具体功能模块划分如图3-1所示。图3-1系统功能模块图系统用例用例是文本形式的情节描述,广泛应用于需求的发现和记录工作中,[10]通过用例名、应用程序的用户类型(称为执行者)及执行者和程序间的交互来标识。[11]系统用例图根据上述需求分析可知,本系统面向所有普通家庭成员。所有用户均可进行登录、注册、查看个人收支统计、设置、注销、退出操作,但是不同权限的使用者能够进行的操作也不同。收入管理权限用户可以管理个人收入项,支出管理权限用户可以管理支出项,总账查看权限用户能够查看家庭收支统计。图3-2为家庭收支管理系统用例图。图3-2系统用例图系统用例表本系统的主要用例和其描述、参与者如表3-1所示:表3-1系统用例表用例编号用例名称描述参与者UC001用户注册系统的未来用户通过输入用户名、设定密码、选择权限(至少一项)注册成为系统用户。用户UC002用户登录用户通过输入用户名与密码登录系统用户UC003收入管理管理用户收入项,包含录入收入条目和查改收入条目2个用例。收入管理权限用户UC004录入收入条目把收入项目、收入日期、摘要、金额信息录入系统。收入管理权限用户UC005修改收入条目根据收入日期、收入项目查询目标项,选择需修改的条目进行修改。收入管理权限用户UC006删除收入条目根据收入日期、收入项目查询目标项,选择需删除的条目进行删除。收入管理权限用户UC007支出管理管理用户支出项,包含录入支出条目和查改支出条目2个用例。支出管理权限用户UC008录入支出条目把支出项目、支出日期、摘要、金额信息录入系统。支出管理权限用户UC009修改支出条目根据支出日期、支出项目查询目标项,选中需修改的条目进行修改。支出管理权限用户UC010删除支出条目根据支出日期、支出项目查询目标项,选择需删除的条目进行删除。支出管理权限用户UC011统计信息查看统计信息,包含查看个人统计信息和查看家庭统计信息2个用例。用户UC012查看个人统计信息查看个人收支统计。根据日期、类别(收入、支出、收支)查询,查看表格或图表(折线图),得到统计信息。用户UC013查看家庭统计信息查看家庭收支统计。根据日期、类别(收入、支出、收支)查询,查看表格或图表(折线图),得到统计信息。总账查看权限用户UC014系统设置重设密码或权限。用户UC015系统注销当前用户注销,返回登录界面。用户UC016退出系统退出系统,结束进程。用户核心用例设计本部分将选取家庭收支管理系统的三个具有代表性的用例:录入收入条目、修改收入条目、查看家庭统计信息的设计进行分析。UC004录入收入条目表3-2录入收入条目设计用例名称录入收入条目范围家庭收支管理系统级别用户目标主要参与者收入管理权限用户涉众及其关注点:收入者:希望录入个人收入信息以便后续查看以及统计家庭财务管理者:希望得到每位家庭收入者录入个人收入信息,以便家庭收入统计和分析前置条件用户拥有收入管理权限,并且已登录系统,进入管理界面后置条件用户成功录入收入条目主成功场景用户登录系统用户选择“收入管理”模块,在子菜单中选择“录入用户收入条目”选项用户进入“录入用户收入条目”界面用户输入收入信息:收入日期、收入项目、摘要、金额5.点击“确定”按钮,提交录入收入信息6.系统提示录入的详细收入信息,并询问“是否继续录入收入项”扩展点*a系统崩溃*a1系统异常退出4a没有输入金额(金额文本框为空)4a1系统提示“金额不能为空”6a点击“Yes”6a1跳转至36b点击“No”6b1关闭“录入用户收入条目”窗口,返回到管理窗口发生频率经常“录入收入条目”活动图如图3-3。图3-3录入收入条目活动图UC005修改收入条目表3-3修改收入条目设计用例名称修改收入条目范围家庭收支管理系统级别用户目标主要参与者收入管理权限用户涉众及其关注点:1.收入者:希望查询并修改/删除收入项2.家庭财务管理者:希望得到每位家庭收入者录入个人收入的最新信息,以便家庭收入统计和分析前置条件用户拥有收入管理权限,并且已登录系统,进入管理界面后置条件用户成功修改/删除目标收入条目主成功场景1.用户登录系统2.用户选择“收入管理”模块,在子菜单中选择“查改用户收入条目”选项3.用户进入“查改用户收入条目”界面4.用户选择收入日期范围、项目名称,并以此作为查询条件,点击“查询”按钮5.界面下方显示查询到的收入条目列表,点击选择目标条目6.目标条目信息显示在“收入条目——基本信息”栏中,修改收入信息7.点击“修改”按钮,提交修改信息8.系统提示详细修改信息,并询问“是否继续修改/删除收入项”扩展点*a系统崩溃*a1系统异常退出4a查询条件下没有查到任何收入项4a1系统提示“查询条件下没有找到收入项”7a修改金额为空7a1系统提示“金额不能为空”8a点击“Yes”8a1先前查询条件下没有查到收入项,跳转至38a2先前查询条件下查到至少一条收入项,跳转至56b点击“No”8b1关闭“查改用户收入条目”窗口,返回到管理窗口发生频率经常“修改收入条目”活动图如图3-4。图3-4修改收入条目活动图UC013查看家庭统计信息表3-4查看家庭统计信息设计用例名称查看家庭收支统计范围家庭收支管理系统级别用户目标主要参与者总账查看权限用户涉众及其关注点:1.家庭财务管理者:希望通过表格或图表统计家庭整体在一段时间内的收支状况前置条件用户拥有总账查看权限,并且已登录系统,进入管理界面后置条件系统反馈家庭收支统计情况主成功场景1.用户登录系统2.用户选择“统计信息”模块,在子菜单中选择“查看家庭收支统计”选项3.用户进入“查看家庭收支统计”界面4.用户选择收入日期范围、类别(收入、支出、收支),并以此作为查询条件5.点击“查看表格”按钮6.界面下方显示查询到的家庭所有用户收支(/收入/支出)信息列表,同时统计查询范围内的收入总额、支出总额、期内余额和家庭余额扩展点*a系统崩溃*a1系统异常退出5a查询条件下没有查到任何收入项5a1系统提示“查询条件下没有找到收入项”5b点击“查看表单”按钮5b1界面下方显示查询到的家庭所有用户收支(/收入/支出)折线图,同时统计查询范围内的收入总额、支出总额、期内余额和家庭余额发生频率经常“查看家庭统计信息”活动图如图3-5。图3-5查看家庭统计信息活动图领域模型领域模型(DomainModel)是对领域内的概念类或现实世界中对象的可视化表示,可以减少我们的思维与软件模型之间的表示差异。[10]本系统的领域模型如图3-6所示。图3-6领域模型图

架构设计本章概述系统架构和数据库设计,借助包图描述系统设计思路,利用顺序图说明两个典型用例的业务实现过程,使用ER图介绍数据库设计。系统架构和原理家庭收支管理系统使用三层架构体系结构,即将这个业务应用划分为表示层(UI)、业务逻辑层(BLL)、数据访问层(DAL)三层。三层架构把业务逻辑分离出来,使程序各部分可以独立开发、测试和维护,提高了程序整体的可维护性和可扩展性。图4-1为系统包图,体现了分层逻辑设计的思想。图4-1包图表示层主要由响应各种用户界面请求的动作类组成,它会调用业务逻辑层中的函数进行业务逻辑处理,获取业务逻辑层的反馈信息显示不同的信息给用户;表示层将用户动作传递给业务逻辑层,由业务逻辑层完成实际的业务逻辑,在这个过程中业务逻辑层可能会调用数据访问层协助完成实际业务逻辑操作;数据访问层用于访问数据库(即对数据表的增删改查操作)。业务用例的实现本节选取用户注册、删除支出条目两个用例为例子,使用顺序图来说明系统业务用例的实现过程和交互过程。用户注册用例实现用户注册用例的交互过程说明如下:用户点击进入设置界面;用户填写完相关注册信息后,按“提交”按钮;Regist类判断用户输入信息是否合法,有不合法数据的情况下,弹出提示,指导用户更改;Register类把注册信息pope(用户名、密码以及权限)和pbal(余额初始值)传递给Controller类,调用Controller类中add_user()方法;Controller类中add_user()方法调用BaseOperate类中regist()和addPbal()方法,把注册信息写入数据库,更新数据表;更新数据成功后,Regist类弹出“注册成功”消息提示窗。用户注册顺序图如图4-2所示:图4-2用户注册顺序图删除支出条目用例实现删除支出条目用例的交互过程说明如下:用户进入查改收支条目界面;用户选择支出日期范围、项目名称,点击“查询”按钮;选中要删除的条目,点击“删除”按钮,UpdateExpense类将账目信息acco传递给Controller类,调用Controller类中delete_acco()方法;Controller类中delete_acco()方法调用BaseOperate类中deleteItem()方法,更新数据表;更新数据成功后,UpdateExpense类提示删除成功,dataGridView显示更新后的支出条目列表删除支出条目用例的顺序图如图4-3所示:图4-3删除支出条目顺序图数据库设计数据库是数据的集合,用于描述一个或多个相关组织的活动。[12]本系统的数据库使用SQLServer2008设计实现。E-R图E-R方法是“实体-联系方法”(Entity-RelationshipApproach)的简称,是描述现实世界概念结构模型的有效方法。本节针对上述需求分析,使用E-R方法,设计相关的数据模型。本系统E-R图包含3个实体:用户实体、余额实体、账目信息实体。图4-4为系统E-R图。图4-4系统E-R图数据库数据库描述本系统的数据库总共包含三个表tb_Popedom,tb_Pblance,tb_Account。如表4-1所示:表4-1系统数据库各表的描述表名描述tb_Popedom记录注册用户的信息tb_Pblance记录用户余额信息tb_Account记录用户收支信息数据库设计用户表tb_Popedom,username为主键,如表4-2所示:表4-2用户表tb_Popedom的描述字段数据类型描述usernameVARCHAR(20)记录用户名passwordVARCHAR(20)记录用户的密码incomeBIT记录用户的收入管理权限:1为拥有此权限expensesBIT记录用户的支出管理权限:1为拥有此权限ledger_viewBIT记录用户的总账查看权限:1为拥有此权限余额表tb_Pbalance,username为主键,如表4-3所示:表4-3余额表tb_Pbalance的描述字段数据类型描述usernameVARCHAR(20)记录用户名p_balMONEY记录用户的个人余额收支表tb_Account,item_code为主键,如表4-4所示:表4-4收支表tb_Popedom的描述字段数据类型描述Item_codeVARCHAR(20)记录收支编号dateDATE记录收入/支出日期usernameVARCHAR(20)记录用户名categoryVARCHAR(10)记录收支类别projectVARCHAR(20)记录收入/支出项目summaryVARCHAR(20)记录摘要priceMONEY记录金额注意:tb_Account表中date列为收入/支出日期,而非录入/修改日期;category列记录某条记录是收入项还是支出项;project列记录收支项目,其中收入类包括“工资与薪金”、“奖金”、“养老金”、“投资收入”、“自由收入”、“其他收入”6项,支出类包括“日常开支”、“大件消费”、“医疗费用”、“偿付性支出”、“礼金支出”、“教育支出”、“投资支出”、“其他支出”8项。

模块设计如图3-1系统功能模块图所示,家庭收支管理系统共包含五大模块。本章选取用户管理模块、支出管理模块,针对其主要流程、算法和核心代码作简要介绍。用户管理模块用户管理模块涉及和用户信息相关的用户注册、登录、系统设置等操作,本节选取其中用户的设置流程作介绍。系统设置流程概述用户已登录系统,点击菜单栏上“设置”选项,进入系统设置界面。系统允许密码重设和权限重设,其中权限重设区域显示用户当前权限。如果用户希望重新设置密码,那么在“密码重设”区域输入相关信息并点击“提交”按钮;如果用户希望重新设置权限,那么在“权限重设”区域重选权限,使用当前密码确认并点击“提交”按钮。如输入(/选择)信息有误或缺失,系统会有相关提示。系统设置算法描述重设密码与重设权限流程类似,管理流程算法如活动图5-1所示。图5-1设置活动图系统设置部分核心代码本节介绍重设权限操作核心代码。Setting类(Windows窗体)中button3_Click()方法:按下“权限重设”区域“提交”按钮触发此方法,若检测到输入合法,则调用Setting类中UpdatePope()方法。对应代码如图5-2所示。图5-2Setting.button3_Click()方法Setting类中UpdatePope()方法:把用户输入的权限数据传递给Controller类并调用Controller类中update_pope()方法,即把具体业务逻辑操作交给业务逻辑层处理。对应代码如图5-3所示。图5-3Setting.UpdatePope()方法Controller类中update_pope()方法:调用BaseOperate类中updatePope()方法。对应代码如图5-4所示。图5-4Controller.update_pope()方法BaseOperate类中updatePope()方法:权限数据实例化成参数对象,调用LinkDB类中RunProc()方法。对应代码如图5-5所示。图5-5BaseOperate.updatePope()方法LinkDB类中RunProc()方法:传入BaseOperate.updatePope()中构造的参数数组,调用LinkDB类中CreateCommand()方法创建SqlCommand对象,直接执行SQL语句命令。对应代码如图5-6所示。图5-6LinkDB.RunProc()方法LinkDB类中CreateCommand()方法:创建一个SqlCommand对象以此来执行命令文本。对应代码如图5-7所示。图5-7LinkDB.CreateCommand()方法支出管理模块由于收入管理模块和支出管理模块操作类似,本章只介绍支出管理模块。支出管理模块涉及支出项的录入、查找、修改、删除操作。本节选取删除支出条目这一流程作介绍,涉及到查找、删除两项操作。删除支出条目流程概述用户(此用户需拥有“支出管理权限”)进入查改用户支出条目界面,选择支出日期范围和支出项目名称,点击“查询”按钮。若存在支出项,界面下方显示支出项列表(DataGridView),默认选中第一条。反之,系统提示“查询条件下没有查询到支出项”。选择目标支出条目,点击删除”按钮,系统提示删除成功并询问是否继续修改/删除,点击“Yes”则以当前查询条件查询并显示查询结果,点击“No”则退出查改用户支出条目界面,回到管理界面。若在初始界面直接点击“删除”按钮,系统会提示“请选择修改/删除项”,本系统不支持批量删除。删除支出条目算法描述删除支出条目算法如活动图5-8所示。图5-8删除支出条目活动图删除支出条目部分核心代码UpdateExpense类(Windows窗体)中button1_Click()方法:按下“查询”按钮触发此方法,调用UpdateExpense类中SelectItem()方法,根据其返回的不同结果显示不同的提示信息。对应代码如图5-9所示。图5-9UpdateExpenses.button1_Click()方法UpdateExpense类中SelectItem()方法:查找支出项,把输入日期、项目传递给Controller类,调用Controller类中select_acco()方法,其中涉及Controller类中变量Flag来标识不同的查找情况。若返回结果说明输入合法且至少查找到一项支出项,那么把返回的DataSet作为数据源传入DataGridView控件并在界面下方显示列表详细信息。对应代码如图5-10所示。图5-10UpdateExpenses.SelectItem()方法Controller类中select_acco()方法:判断输入日期是否合法,若合法则进行下一步查找工作,反之,仅返回空的DataSet;同时还根据查找到的不同情况对Flag进行赋值;调用BaseOperate类中的GetAccoByCUDP()方法。对应代码如图5-11所示。图5-11Controller.select_acco()方法BaseOperate类中GetAccoByCUDP()方法:根据收支类别、用户名、日期范围、收入/支出项目查找收支表,调用LinkDB类中RunProcReturn()方法,此方法不涉及SqlParameter。对应代码如图5-12所示。图5-12BaseOperate.GetAccoByCUDP()方法LinkDB类中RunProcReturn()方法:调用LinkDB类中CreateDataAdaper()方法,创建SqlDataAdapter对象来执行命令文本,使用此对象填充DataSet并返回。对应代码如图5-13所示。图5-13LinkDB.RunProcReturn()方法LinkDB类中CreateDataAdaper()方法:创建SqlDataAdapter对象来执行命令文本。对应代码如图5-14所示。图5-14LinkDB.CreateDataAdaper()方法在系统设置部分底层LinkDB类执行SQL命令主要使用的是SqlCommand,而在本节主要使用SqlDataAdapter。SqlCommand是C#中与Sql数据库打交道的对象,几乎所有的Sql数据库操作都需要使用该对象来实现,但其功能有限,只是简单的实现了与Sql数据库的接口而已;SqlDataAdapter是一个功能强大的SqL数据适配器,也用于操作Sql数据库,是连接DataSet和数据库的桥梁,所有对DataSet的操作(填充,更新等)都要通过它。[13]系统设置并不涉及DataSet,因此使用SqlCommand比较合适,而查找操作需要返回一个DataSet,因此需要使用SqlDataAdapter。本小节上述内容介绍的是查找操作,下面介绍删除操作。UpdateExpense类中button1_Click()和被其调用的DeletePbal()方法:这两个方法均向Controller类传递数据(acco和pbal),且分别调用Controller类中的delete_acco()方法和update_pbal()方法。按下“删除”按钮触发button1_Click()方法,删除成功后调用本类的DeletePbal()方法,更新余额。对应代码如图5-15所示。图5-15UpdateExpense.button3_Click()和UpdateExpense.DeletePbal()Controller类中delete_acco()和update_pbal()方法:update_pbal()方法根据收支类别以及操作的不同,使用不同的方法计算余额,并调用BaseOperate类中的updatePbal()方法更新数据库;delete_acco()方法用BaseOperate类中的deleteItem()删除数据表中对应支出项。对应代码如图5-16所示。图5-16Controller.update_pbal()和Controller.delete_acco()BaseOperate类与DataLink类中关于删除操作的方法与本章中上述设置操作与查找操作类似,就不一一赘述。

部署与应用本章利用系统部署图说明系统的运行环境,描述系统安装包的制作流程以及安装流程,选取部分用例对系统进行测试,并展示系统若干典型界面。系统运行环境家庭收支管理系统系统主要基于三层架构模式设计,是一款在VisualStudio2010平台上开发部署的桌面应用程序,运行环境有如下要求:Windows7系统;.NETFramework4.0SQLServer2008数据库管理系统因安装包自带Microsoft.NETFramework4(x86和x64)组件,因此对此项不做强制要求。系统部署图如图6-1所示。图6-1系统部署图系统部署家庭收支管理系统在VS2010平台上完成开发后,利用其打包部署工具对应用程序进行打包部署,制作成安装程序。制作安装包首先,在解决方案下新建“安装向导”项目IEMSetup,导入开发项目(主输出IncomeExpensesManagement)、相关文件(如第三方绘图控件Chartlet),设置系统必备(WindowsInstaller3.1、.NETFramework4)、卸载程序等操作。其次,因为安装应用程序的同时也需要安装数据库,故涉及到打包数据库操作,这时需要安装数据类(InstallDB.cs)来辅助。安装数据类核心代码如图6-2所示。图6-2InstallDB.CreateDataBase()方法IEMSetup项目也需要导入安装数据类(主输出InstallDB)以及相关数据库文件(db_IEM.mdf、db_IEM_log.ldf),并设置相关属性以及用户界面。当前安装部署项目结构如图6-3所示。图6-3安装部署项目结构最后,生成IEMSetup即可。[14]安装包结构如图6-4所示。图6-4安装包结构安装程序双击setup.exe安装程序。安装过程中数据库安装部分如图6-5所示。图6-6为安装成功后,用户的“程序”菜单中快捷方式。图6-5数据库安装部分图6-6程序菜单显示系统测试系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。最有效的可用性测试是针对具体问题来做测试,[15]本节选取注册、登录、录入收入条目、查改支出条目、查看家庭收支统计五个用例进行具体测试。图6-7为用户登录界面,也是双击程序后出现的初始界面。在此界面下可以选择登录或注册。初次使用系统,因为数据表中没有用户信息,所以登录无效,点击“注册”按钮,跳装至注册界面(图6-8)。图6-7用户登录界面/初始界面图6-8用户注册界面注册信息输入完毕后,点击“提交”按钮。若输入合法,系统提示注册成功,跳转进入管理界面,可在菜单栏上进行相应管理操作(图6-9)。图6-9主管理界面选择“收入管理”->“录入个人收入条目”,弹出“录入用户收入条目”界面(图6-10)。点击“提交”按钮,在“金额”项不为空的情况下,弹出录入详细信息提示(图6-11),并询问是否继续,若不继续,则返回到主管理界面。图6-10录入用户输入条目界面图6-11录入详细信息提示在主管理界面菜单栏上,选择“支出管理”->“查改个人支出条目”,弹出“查改支出条目”界面。图6-12为图示查询条件下点击“查询”按钮后的界面。具体流程见章3-5,不再细表。图6-12查改支出条目界面在主管理界面菜单栏上

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论