家庭财务管理系统
摘 要
本系统应用于 B/S 结构的平台,本研究课题的主要目的是提供财务数据统一
管理和做出合理的财务决策,其界面友好,操作简单,除具备基本的财务信息管理
外,还提供了数据统计,数据查询,数据备份等功能。
为方便操作,从多方面把用户的家庭收入、家庭支出、统计节余等财产管理
的数据,以及他们的生活结余和消费统计,用科学统计的方法把这些数据存储在财
务管理软件之中。本文着重论述了该系统的功能与实现,如:数据流程与存储、管
理等功能,并对关键的技术作了较详细的介绍。
关键词 B/S 结构;数据查询;家庭财务
Family financial management system
Abstract
The system applies to B / S the structure of the platform, the main purpose of
research is to provide unified management of financial data and make a reasonable
financial decision-making, and its user-friendly, simple operation, with the exception
of basic financial information management, it also provided statistical data, data
queries,charts statistical features such as automatic.
To facilitate the operation, from the many users of household income, household
spending, savings and other statistical data on property management, as well as the
balance of their lives and consumption statistics, statistics with scientific methods to
the data stored in the financial management software article focuses on the
function of the system and to achieve, such as: data flow and storage, management,
etc. functions, key technologies and a more detailed presentation made.
Key words B / S structure;data query; family financial management
目 录
第 1 章 绪论......................................................................................................................................1
选题背景.............................................................................................................................1
发展现状..............................................................................................................................2
第 2 章 系统分析..............................................................................................................................3
可行性分析.........................................................................................................................3
需求分析.............................................................................................................................3
所用技术.............................................................................................................................5
简介.........................................................................................................5
SQL Server 数据库简介...........................................................................................6
HTML .......................................................................................................................7
第 3 章 系统概要设计......................................................................................................................8
功能结构图..........................................................................................................................8
详细功能模块.....................................................................................................................8
家庭成员管理模块..................................................................................................8
收支项目管理模块..................................................................................................8
统计管理模块..........................................................................................................9
数据备份模块..........................................................................................................9
第 4 章 系统详细设计....................................................................................................................10
实现概述............................................................................................................................10
软件的运行环境设计.......................................................................................................11
数据库需求分析...............................................................................................................12
数据库结构设计...............................................................................................................12
Users (家庭人员信息表) ........................................................................................12
F_shouru(财务信息表) ...........................................................................................13
Type (记账类型信息表).........................................................................................13
F_zhichu(财务信息表) ...........................................................................................13
Data (数据类型信息表) .........................................................................................14
系统 E-R 图 ......................................................................................................................14
处理流程设计...................................................................................................................15
系统操作流程........................................................................................................15
数据增加流程........................................................................................................16
数据修改流程........................................................................................................16
数据删除流程........................................................................................................17
功能模块............................................................................................................................18
用户登陆模块.........................................................................................................18
账目管理模块........................................................................................................19
添加账目模块........................................................................................................22
查找账目信息........................................................................................................23
家庭人员管理模块................................................................................................24
账目类别信息管理................................................................................................25
账目统计信息........................................................................................................26
第 5 章 系统调试与测试................................................................................................................28
程序调试...........................................................................................................................28
程序的测试.......................................................................................................................28
测试的重要性及目的............................................................................................28
测试过程及结果....................................................................................................30
第 6 章 总结与展望........................................................................................................................32
结 论..............................................................................................................................................33
致 谢..............................................................................................................................................34
参考文献..........................................................................................................................................35
附录 A 译文 ..................................................................................................................................36
.NET Compact Framework 中的新事物 ...................................................................................36
附录 B 外文原文 ..........................................................................................................................43
第 1 章 绪论
选题背景
随着人们生活水平的提高,个人财富的不断增长,人们迫切的需要进行合理
的家庭理财。因而各式的家庭财务管理系统软件应时而生,它们帮助用户有效的
解决了具体的家庭财务问题。为适应这种趋势,家庭财务管理软件向着国际互联
网发展,向着多媒体方向发展,向着大型数据库、多平台发展。
家庭财务管理系统可以有效地记录和管理家庭的收支情况,合理规划和支配
家庭资金,是家庭理财的好帮手每一个家庭好比一个小企业,都有着收入支出及
净利,大部分家庭会用脑用手记录这些烦琐的数据,但是只是局限于记住收入的
多少和支出的去向,不能在每月甚至于每年都有一个规划和对比,调节家庭财政
状况然而,家庭财务管理系统可以有效地记录和管理家庭收支情况,合理规划和
支配家庭资金,是家家户户的好管家,完全替代了手记脑记的烦琐,利于调节家
庭财政状况。
课题意义
家庭理财管理系统是为满足当代家庭理财管理的需要而设计开发的一个财
务管理系统。它针对家庭理财的需要,开发出一个能实现管理家庭财务收支以及
统计分析等功能的实用型软件,能够为每一个家庭的管理者提供充足的信息和快
捷的查询手段,大大方便家庭管理者合理科学有效的理财。
伴随着信息时代的到来,信息的种类、数量越来越多,容量也越来越大,在
竞争越来越激烈的今天,随着科学技术的不断提高,计算机科学日渐成熟,其强
大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要
的作用。而使用计算机对家庭财务进行管理,已经成为一种趋势,与传统的手工
式家庭财务管理相比,利用计算机软件对家庭财务实行管理具有检索迅速、查找
方便、可行性高、存储量大、保密性好、寿命长、成本低等优点。家庭理财管理
系统正是在这种环境下应运而生,其开发的整体任务是实现家庭财务管理的系统
化、规范化、科学化,从而达到有效管理家庭财务的目的。因此,开发这样一个
系统在当今社会中是很有必要的。
发展现状
家庭理财系统,即 Family Conduct Financial Transactions System。它利用计
算机应用技术,使家庭理财逐步信息化,从而形成由家庭成员与计算机共同构成
服务于家庭的人机信息财务管理系统。
家庭理财系统在国内外很多地方使用已经相当的普遍。国外的家庭理财管理
系统发展的相对比较成熟,比如他们系统里包含有股票的预测、基金的分析等等。
在国内,计算机使用盛行的当今社会,家庭理财管理系统已基本替代了传统的手
工记账理财的方法,给消费者带来极大的方便,但由于人们的生活水平越来越高,
收支种类越来越多,家庭消费的内容日益丰富等,现行的许多家庭理财管理系统
已不能满足大家的需求,许多功能还亟待完善与更新。虽然国内的家庭理财管理
系统功能较不完善,但在我国科技迅速发展的今天,其发展前景将十分令人期待,
尤其是在近几年,伴随着计算机在社会中的高速普及,家庭理财系统的使用范围
逐步扩大,从最早的简单记录家庭、个人财务的收支情况,到现在对财务的收支
查询、汇总、报表分析、预测等等。巨大的市场需求也促使了很多公司加大了对
家庭理财系统的研究。
当今社会人们的生活水平和文化素质普遍提高,随着市场经济的快速发展,
观念的不断更新,每个人的理财意识普遍增强,特别是家庭理财意识得到很大发
展,人们对家庭各方面消费不仅仅只有进行记录和统计的愿望,各种收入消费途
径错综复杂,如何使用户能更加方便的操作成为要求;同时伴随精神和物质生活
的提高,人们购置和使用计算机的能力也在增强,网络越来越发达,一种新型网
络家庭理财管理系统软件正等待出现。家庭理财管理系统是一个为方便处理家庭
财务的一个软件,它的作用是更好的满足理财者对家庭财务管理的需要。目前社
会上普遍使用的家庭理财管理系统基本都是单击版的,随着 IT 技术的进步和计
算机网络技术的发展,以及家庭收支范围的扩大,家庭理财管理系统将逐渐从传
统的桌面管理向网络集成的方向发展,从局部、静态、事后核算到全局、动态、
实时的管理,基于不同软硬件平台、不同网络架构的各级财务管理子系统需要有
机地协同工作。因此基于 Internet 的家庭理财管理系统必然成为未来家庭理财管
理系统的发展趋势。
第 2 章 系统分析
可行性分析
可行性分析可以进一步明确系统的目标,规模与功能。对系统开发背景、必
要性和意义进行调查分析并根据需要和可能提出拟定开发系统的初步方案与计
划。可行性研究是对系统进行全面,概要的分析。此项活动开始时,要对初步调
查的结果进行复审,重新明确问题,对所提系统大致规模和目标及有关约束条件
论证,并且提出系统的逻辑模型和各种可能方案。
当今社会是一个讲求效率的社会,时间就是金钱。开发简单,易于操作的,
管理软件不仅可以节省时间,还可以避免浪费人力,物力,提高效率。待开发系
统是一个对家庭理财管理系统,简单,易学,将成为家庭理财的的好帮手。并非
所有问题都有简单明显的解决办法,事实上,许多问题不可能在预定的系统规模
或时间限制之内解决。如果问题没有可行的解,那么花费在这项工程上的任何时
间、人力、软件资源和经费,都是无谓的浪费。可行性研究的目的,就是用最小
的代价在尽可能短的时间内确定问题是否能解决。必须时刻记住,可行性研究的
目的不是解决问题,而是确定问题是否值得去解决。
需求分析
在可行性研究的基础上进一步对现行系统进行全面、深入的调查和分析,弄
清楚现行系统的工作过程,发现其薄弱环节,找出要解决问题的实质,确保新系
统有效。
通过和大量家庭的交流,了解到原信息管理的主要方式是基于文本、表格等
纸介质的手工处理,存在很多的问题:
(1)资料统计为手工进行。财产信息处理工作量很大,易出错且耗时。
(2)财产信息共享率低,大量重复劳动。
(3)纸张的保存不方便,容易丢失和破损。
(4)各类信息查询,统计不方便。
通过建立家庭理财系统,使家庭财产管理工作规范化、制度化和程序化,减
少此方面的不必要的浪费的时间与精力,避免管理的随意性,提高财产信息处理
的速度和准确性,提高决策的水平。将常规的工作交由计算机完成,提高管理家
庭财产管理的效率。
家庭财务管理系统软件是为用户进行家庭成员的收支构成及信息管理进行
辅助的应用软件、功能需求描述如下:
(1)用户登录:系统获取的家庭成员用户名和密码判断该家庭成员能否成
功登录系统,并且当用户登录后根据权限判断该家庭成员是管理员还是普通成员,
可以使用哪些对应的功能。普通级别的用户只有浏览等权限而不能进行实质性的
改动。
(2)给家庭成员提供功能选择界面:不同级别的家庭成员对应不同的功能选
择界面.功能选择界面包括输入功能选项、调用相应程序两大需求。管理员和普
通用户对应的功能选择界面是不同的。
(3)管理收支信息:用户根据提示输入家庭成员的姓名、各项财务信息,
如收入、支出、合计。
(4)增加家庭成员收支信息:可在原有收支信息文件的基础上增加新的家
庭成员财务信息记录,并继续保存至数据库。
(5)删除家庭成员收支信息:提示用户输入要进行删除操作的家庭成员,
如果在文件中有该家庭成员的收支信息存在,则将该序号所对应的姓名、序号、
各种收入信息等在对应项目中加以删除。
(6)修改家庭成员收支信息:提示用户输入要进行修改操作的家庭成员,
如果有该家庭成员的收支信息存在,则提示用户输入该序号对应的家庭成姓名、
收入和支出构成等需要修改的选项,并将修改结果存储于数据库。
(7)查询家庭成员财务情况:分为根据家庭成员查询和项目查询两个具体
需求,选择其中一项用户输入要查询家庭成员信息或项目,如果在数据库中有对
应的家庭成员财务信息,则逐项列出对应家庭成员的收支状况。
(8)家庭成员管理:家长对普通家庭成员的管理也需要进行家庭成员的创
建、增加、删除、修改和浏览。每当有家庭成员登录系统时,系统都会根据数据
库中的用户名和密码进行核实判断,用户才能够顺得登录。家长还具有增加新家
庭成员的功能。当某些家庭成员不再使用系统时,还可进行删除操作,并且家长
具有修改家庭成员权限的功能。
所用技术
本系统采用 b/S 模式,后台使用 SQL Sever 作为后台的数据管理系统,而在
前台使用 SQL Sever 的 Command 组件来调用存储过程的。SQL(Structured Query
Language,结构查询语言)是一个功能强大的数据库语言[1]。SQL 通常使用于数
据库的通讯。ANSI(美国国家标准学会)声称,SQL 是关系数据库管理系统的
标准语言。SQL 语句通常用于完成一些数据库的操作任务,比如在数据库中更
新数据,或者从数据库中检索数据。它具有简单,高效,功能强大等特点,一直
是广大程序员喜爱的编程工具,并且运用 C#作为编程语言,C#代码在.net 框架
提供的受控环境下运行,不允许直接操作内存。C#具有面向对象编程语言所应
有的的一切特性,如封装,继承和多态。在 C#众多的优势中,它在数据库方面
的特长显得尤为突出:适合于多种数据库结构,从客户/服务机模式到多层数据
结构模式,而且 C#编写的代码具有更好的可读性,而且减少了发生命名冲突的
可能。
简介
是把基于通用语言的程序在服务器上运行。不像以前的 ASP 即
时解释程序,而是将程序在服务器端首次运行时进行编译。 构架是可
以用 Microsoft(R)公司最新的产品 Visual 开发环境进行开发,
WYSIWYG(What You See Is What You Get 所见即为所得)的编辑。这些仅是
强大化软件支持的一小部分[3]。
因为 是基于通用语言的编译运行的程序,所以它的强大性和适
应性,可以使它运行在 Web 应用软件开发者的几乎全部的平台上。通用语言的
基本库,消息机制,数据接口的处理都能无缝的整合到 的 Web 应用
中。 同时也是 language-independent 语言独立化的,所以,你可以选
择一种最适合你的语言来编写你的程序,或者把你的程序用很多种语言来写,现
在已经支持的有 C#(C++和 Java 的结合体),VB,Jscript[4]。将来,这样的多
种程序语言协同工作的能力保护您现在的基于 COM+开发的程序,能够完整的移
植向 。
使用一种字符基础的,分级的配置系统,使你服务器环境和应用
程序的设置更加简单。因为配置信息都保存在简单文本中,新的设置有可能都不
需要启动本地的管理员工具就可以实现。这种被称为"Zero Local Administration"
的哲学观念使 的基于应用的开发更加具体,和快捷。一个
的应用程序在一台服务器系统的安装只需要简单的拷贝一些必须得文件,不需要
系统的重新启动,一切就是这么简单。
已经被刻意设计成为一种可以用于多处理器的开发工具,它在多处理
器的环境下用特殊的无缝连接技术,将很大的提高运行速度。即使你现在的
应用软件是为一个处理器开发的,将来多处理器运行时不需要任何改
变都能提高他们的效能,但现在的 ASP 确做不到这一点。
优越性主要体现在以下几个方面:
(1)效率, 是建立在 .NET Framework 之上的 ,可使用 Visual
Basic ,C++这样的模块化程序设计语言,在第一次执行后不须重新编译就可直接
运行,所以速度和效率比 ASP 这种只能用 VBScript 或 JavaScript 这样的非模块化
语言来编写的脚本编程语言提高很多。
(2)是可重用性 不再像 ASP 那样将 ASP 代码与 HTML 混合在
一起,而是实现代码与内容的完全分离,可重用性强。
(3)是代码量.ASP 对所有要实现的功能通过编写代码来实现,而
只须预先说明,就可自动实现,所以,实现同样的功能, 要比 ASP 代码量
小的多。
SQL Server 数据库简介
① SQL Server 为用户提供了完整的数据库解决方案,该软件功能强大、使
用方便,已为越来越多的人所信赖。SQL Server 支持并发连接,允许多个用户同
时访问数据,完全能够满足用户的需求。SQL 提供了强大的数据存储功能,高
效率的数据查询技术、方便易用的向导和工具,友好亲切的用户界面,是制作该
系统后台的很好的 UY 工具。
① SQL Server 特点
① 真正的客户机/服务器体系结构。
①丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。
① SQL Server 与 Windows NT 完全集成,利用了 NT 的许多功能. SQL Server
也可以很好地与 Microsoft BackOffice 产品集成[7]。
① SQL Server 具有很好的伸缩性,提供数据仓库功能。
① 对 Web 技术的支持,使用户能够很容易地将数据库中的数据发布到 Web
页面上 ,图形化用户界面,使系统管理和数据库管理更加直观、简单。
HTML
HTML 的英文全称是"Hypertext Markup Language",中文译为“超文本标记语
言”。“超文本”就是指页面内可以包含图片,联接,甚至音乐,程序等非文字的元
素。在几年前作为 SGML 的一个子集开发的。
一个 HTML 文件中包含了所有将显示在网页上的文字信息,其中也包括对
浏览器的一些指示,如哪些文字应放置在何处,显示模式是什么样的等。如果你
还有一些图片、动画、声音或是任何其它形式的资源,HTML 文件也会告诉浏览
器到哪里去查找这些资源,以及这些资源将放置在网页的什么位置。浏览的网页
就是由 HTML 语言编写出来的。虽然 HTML 是一种语言,但 HTML 不是程序语
言,如 C++ 和 Java 之类,它只是标示语言,你只要明白了各种标记的用法便
算学会了 的格式非常简单,只是由文字及标记组合而成,因此任
何文本编辑器都可以制作 HTML 页面。
在编辑器中输入 html 代码即可完成对网页的设计,如果在其中加入
VB,JAVA 等脚本文件以及数据库连接有关的语句指令,便可对已知数据进行查
询,从而生成动态网页的一部分[2]。
第 3 章 系统概要设计
功能结构图
功能模块图如图 3-1 所示
图 3-1 内部功能模块图
详细功能模块
家庭成员管理模块
通过家 庭 成 员 管 理 模 块 设置家庭成员,进行增加、删除、修改或者查看
等操作。家庭成员字段应该包括“编号,姓名,登录名,登录密码”等。家庭成员
可以用登录名和登录密码登录家庭财务管理系统进行记账管理。
收支项目管理模块
通过收支项目管理模块设置收支项目,进行增加、删除、修改或者查看等操
家庭财务管理系统
家
庭
成
员
管
理
统
计
管
理
收
支
项
目
管
理
其
他
功
能
收
支
项
目
修
改
家
庭
成
员
修
改
收
支
项
目
增
加
收
支
项
目
查
找
收
入
项
目
统
计
支
出
项
目
统
计
家
庭
成
员
增
加
家
庭
成
员
删
除
数
据
库
备
份
作。收支项目要求分为两层,比如“车辆维护-保养费”;任意一层次都可作为收
支项目记账,用户在不清楚支出是否属于“保养费”的时候,可以选择大类“车辆
维护”作为支出项;收支项目具体应该包括“编号,项目名称,收入还是支出”,
编号不用显示在收支账薄中。
统计管理模块
(1)记账
记录收支项目,收支日期,收支家庭成员,收支金额,备注等内容。币种只
支持人民币。
(2)账薄管理
显示给用户一个账薄,可以账薄上新增、修改、删除、查询记账,查询记账
可以选定一个日期范围进行查询。
数据备份模块
通过数据备份模块进行家庭财务信息数据备份,点击“数据备份”,通过超链
接再点击下载并保存。
第 4 章 系统详细设计
实现概述
该网站将采用三层体系结构将应用程序划分为三个逻辑层面,因为三层结
构有很多优点,具体而言主要有以下几点:
首先,通过将整个系统分为不同的逻辑块,大大降低了应用系统开发和维
护的成本。其次,系统的扩展性大大增强。模块化使得系统很容易在纵向和水平
两个方向拓展:一方面可以将系统升级为更大、更有力的平台,同时也可以适当
增加规模来增强系统的网络应用。最后,三层机构的中间层还提供全程交易保护
功能,即要么全部提交要么全部放弃,数据具有高度的完整性和安全性。这三个
逻辑层在本网站系统的具体功能如下:
(1)用户服务层(User Services Tier) ,也称为表现服务(Presebtation
Services),是用户与应用程序进行交互的端点。通常由 WIN32 或者基于浏览器
的图形用户界面应用构成。在该层用户可以查看、输入和处理数据[10]。从用户
的角度来看,用户服务层就是整个应用。在该网站系统中,用户服务层由
web forms 构成,它可以提供用户浏览和查询服务,查看他们的感兴趣的企业或
是个人的信息,并且进行互动。
(2)商务服务层,也称为中间层或者应用服务层,它负责封装事务处理、
商务规则、数据访问及其他的核心应用逻辑。商务服务层可以有效地作为前台用
户服务层和后台数据服务和数据存储之间的桥梁。在网站系统中,商务服务层将
由在 windows 组件服务中执行的事务处理和非事务处理.net 服务组件构成。它的
任务是接受用户的请求,首先需要执行相应的扩展应用程序与数据库进行连接,
通过 SQL 等方式向数据库服务器提出数据处理申请,而后等数据库服务器将数
据处理的结果提交给 Web 服务器,再由 Web 服务器传送回客户端。
(3)数据服务层,该层负责检索和操作在一个或者多个数据存储中存储的
数据。通过将数据访问和操作分离到独立的逻辑层中,就可以将商品服务层从附
属数据存储的细节中抽象出去。在该网站系统中,数据服务层定义和维护数据的
完整性和安全性,响应访问数据的请求,它接受 Web 服务器对数据库操纵的请
求,实现对数据库查询、修改、更新等功能,把运行结果提交给 Web 服务器。
整个网站系统的逻辑体系结构如表 4-1 所示:
表 4-1 网站系统的逻辑体系结构
用户服务
用户交互
页面导航
数据表现
业务服务
事务处理逻辑
业务规则定义
数据访问
数据服务
数据检索
数据操作
数据验证
数据存储
数据存储
数据关系
数据完整性
软件的运行环境设计
服务端硬件要求:如表 4-2 所示
表 4-2 服务端硬件要求
站点最低配置 PIII 500 MHz 以上 256 MB 600MB 以上
站点推荐配置 PIII 500 MHz 以上 512 MB 1GB 以上
服务端操作系统及软件要求:
1 服务器要求:
Windows NT Server With Server Pack4 and Microsoft Internet Explore SP1
以上 Windows 2000 系列 [11]
2 Web 服务器:
Microsoft IIS 以上
3 数据库服务器:
SQL server
客户端硬件及软件要求:如表 4-3 所示
.NET 的服务器组件
的 web 服务
SQL SERVER 的 存 储 过
程
的 Web Forms
数据库
表 4-3 客户端硬件及软件要求
主频 内存 浏览器
最低配置
赛阳 300 MHz 以上 64 MB 以上 IE
标准配置
PII 400 MHz 以上 128 MB 以上 IE
本系统采用 B/S 结构(Browser/Server,浏览器/服务器结构)和基于 Web 服务
两种模式,是一个适用于 Internet 环境下的模型结构。只要用户能连上 Internet,
便可以在任何时间、任何地点使用。系统工作原理图如图 4-4 所示:
图 4-4 系统工作原理图
数据库需求分析
数据库的设计通常是以一个已经存在的数据库管理系统为基础的,常用的数
据库管理系统有 MYSQL,SQL Server, Oracle 等[8]。我采用了 SQL server2005
数据库管理系统,建立的数据库名为 FinancialManagement。
数据库结构设计
Users (家庭人员信息表)
主要用于保存家庭人员的基本信息,该表的结构如表 4-5 所示
客户端 Web服务器
数据库检索
请求
传送
验证
回发
执行过程
表 4-5 Users 表
列名 数据类型 长度 允许空
Id Int 4 否
Name Nvarchar 50 是
Pwd Nvarchar 50 是
RealName Navarre 50 是
F_shouru(财务信息表)
主要用于收入记账的基本信息,该表的结构如表 4-6 所示
表 4-6 F_shouru 表
列名 数据类型 长度 允许空
Id Int 4 否
Name Nvarchar 50 是
Type Nvarchar 50 是
Addtime Datetime 8 是
UserName Nvarchar 50 是
AddMoney Float 8 是
Ds Text 16 是
Type (记账类型信息表)
主要用于保存记账类型的基本信息,该表的结构如表 4-7 所示
表 4-7 Type 表
列名 数据类型 长度 允许空
Id Int 4 否
Name Nvarchar 50 是
Type Nvarchar 50 是
F_zhichu(财务信息表)
主要用于支出记账的基本信息,该表的结构如表 4-8 所示
表 4-8 F_zhichu 表
列名 数据类型 长度 允许空
Id Int 4 否
Name Nvarchar 50 是
Type Nvarchar 50 是
Addtime Datetime 8 是
UserName Nvarchar 50 是
AddMoney Float 8 是
Ds Text 16 是
Data (数据类型信息表)
主要用于保存数据类型的基本信息,该表的结构如表 4-9 所示
表 4-9 Data 表
列名 数据类型 长度 允许空
Id Int 4 否
Path Nvarchar 500 是
Addtime Addtime 50 是
系统 E-R 图
家庭财务管理系统如图 4-10 所示
图 4-10 E-R 图
处理流程设计
系统操作流程
如下图 4-11 所示:
用户收入
属于
支出收入
属于 属于种类
分类
收支种类
数据
支出
数据备份
收入项目
收入成员
收入日期
收入金额
备注
支出日期
支出项目
支出成员
支出金额
备注
输入帐号 输入密码
生活费用 教育费用
生活费用 教育费用
系统主界面 错误信息
密码错误
数据库
功能处理
功能界面
密码正确
检查
输入操作员及密码
系统管理
系统登录界面
图 4-11 系统操作流程
数据增加流程
添加信息时,编号字段由系统自动生成,且不能修改,其他信息由用户输入,
之后对数据进行合法判断,合法则写入保存至数据库,不合法则重新输入数据。
数据增加流程图:如下图 4-12 所示。
图 4-12 数据增加流程图
数据修改流程
在修改信息时,先选中一条待修改的记录,然后直接输入数据,判断合法性,
合法则保存至数据库,不合法重新输入。数据修改流程图如下图 4-13 所示。
开始
自动生成编号
输入数据
是否合法
写入数据库
结束
图 4-13 数据修改流程图
数据删除流程
当用户选定一条记录时,单击删除按钮,会提示用户是否确定删除,然后删
除数据库相关内容。数据删除流程图如下图 4-14 所示。
图 4-14 数据删除流程图
开始
选择需要修改的记录
输入数据
是否合法
写入数据库
结束
开始
选择需要删除的记录
是否删除
结束
更新数据库
功能模块
用户登陆模块
系统的登录界面,需要家庭成员才能登录进入使用系统,当输入错误的帐
号、密码会有提示框提醒重新输入。如图 4-15 所示:
图 4-15 用户登录模块
主要代码如下:
private void chkUser()
{
if ( == "" && == "")
{
("没有输入账号和密码!", "");
}
else
{
dr = ("select * from [Users] where Name='" +
() + "'and Pwd='" + () + "'");
if (())
{
Session["User"] = dr["Name"].ToString();
("");
}
else
{
("账号或者密码不对请重新登陆!",
"");
}
}
}
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
chkUser();
}
protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
{
= "";
= "";
}
protected void LinkButton1_Click(object sender, EventArgs e)
{
("");
}
账目管理模块
进入账簿管理可以对录入的收支项目进行查看、修改、删除、新增和查找
管理账目信息。如下图 4-16 所示:
图 4-16 账目管理模块
主要代码如下:
protected void gvFilms_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
SqlHelper mydata = new SqlHelper();
string ID = [].Values[0].ToString();
try
{
("delete from F_Money where id='" + ID + "'");
= "删除成功!";
= -1;
Get_Article();
}
catch
{
= "删除失败!";
}
}
private void Get_Article()
{
try
{
= GetCodeBy(0);
();
}
catch
{
}
}
protected void gvFilms_PageIndexChanging(object sender,
GridViewPageEventArgs e)
{
= ;
Get_Article();
}
protected void gvFilms_RowDataBound(object sender, GridViewRowEventArgs
e)
{
//鼠标移动变色
if ( == )
{
//当鼠标放上去的时候 先保存当前行的背景颜色 并给附一颜色
("onmouseover",
"currentcolor=;='#f6f6f6',
='';");
//当鼠标离开的时候 将背景颜色还原的以前的颜色
("onmouseout",
"=currentcolor,='';");
}
//单击行改变行背景颜色
if ( == )
{
("onclick", "='#f6f6f6';
='buttontext';='default';");
}
}
public DataSet GetCodeBy(int iCount)
{
SqlHelper date = new SqlHelper();
string strTop = "";
if (iCount > 1)
{
strTop = "top " + ();
}
string sql = "select " + strTop + " * from [F_Money] ";
SqlConnection con = new SqlConnection();
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = null;
try
{
();
ds = new DataSet();
(ds);
}
catch (SqlException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
finally
{
();
}
return ds;
}
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
("");
}
protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
{
("");
}
添加账目模块
家庭成员登陆后可以进入账簿管理,在这里可以添加账目信息,包括收支的
项目、收支类型、收支成员类型、收支的金额和可以对这笔记账进行备注。如
图 4-17 所示:
图 4-17 添加模块
主要代码如下:
Alert alert = new Alert();
SqlHelper data = new SqlHelper();
public string DownPath;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Type();
Users();
}
}
private void Type()
{
= ("select * from Type
");
= "name";
= "id";
();
}
private void Users()
{
= ("select * from Users
");
= "RealName";
= "id";
();
}
protected void IbnOk_Click(object sender, ImageClickEventArgs e)
{
("insert into
F_Money(name,Type,UserName,AddMoney,Ds)values('" +
+ "','" + + "','" +
+ "','" + + "','" +
+ "')");
("添加成功!", "");
}
protected void IbnCanel_Click(object sender, ImageClickEventArgs e)
{
("");
}
查找账目信息
家庭成员登陆后进入账簿管理,可以按时间对账目信息进行查询。如图 4-18
所示:
图 4-18 查找模块
主要代码如下:
protected void IbnOk_Click(object sender, ImageClickEventArgs e)
{
string beingtime = ;
string endtime = ;
("
}
protected void IbnCanel_Click1(object sender, ImageClickEventArgs e)
{
("");
}
家庭人员管理模块
家庭成员登陆后,进入家庭成员管理模块,对现有的家庭成员进行添加、
删除和修改。如图 4-19 所示:
图 4-19 家庭成员管理模块
主要代码如下:
protected void ImageButton2_Click1(object sender, ImageClickEventArgs e)
{
("");
}
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
("insert into Users(Pwd,Name,RealName)values('" +
+ "','" + + "','" + + "')");
("添加成功!", "");
}
账目类别信息管理
家庭成员登陆后,进入收支项目管理可以对所需要的项目进行添加、修改和
删除账目类别信息。如图 4-20 所示:
图 4-20 收支项目管理模块
主要代码如下:
protected void InitData()
{
SqlHelper mydata = new SqlHelper();
= ("select * from Type");
();
}
//GridView控件RowDeleting事件
protected void GridView1_RowDeleting(object sender,
GridViewDeleteEventArgs e)
{
SqlHelper mydata = new SqlHelper();
string ID = [].Values[0].ToString();
try
{
("delete from Type where id='" + ID + "'");
= "删除成功!";
= -1;
InitData();
}
catch
{
= "删除失败!";
}
}
账目统计信息
家庭成员登陆后,进入报表统计模块,可以查询现有账目信息,可以导出
Excel 保存和打印所需要的数据。如图 4-21 所示:
图 4-21 账目统计模块
主要代码如下:
public DataSet GetCodeBy(int iCount)
{
SqlHelper date = new SqlHelper();
string strTop = "";
if (iCount > 1)
{
strTop = "top " + ();
}
string sql = "select " + strTop + " * from [F_Money] ";
SqlConnection con = new SqlConnection();
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = null;
try
{
();
ds = new DataSet();
(ds);
}
catch (SqlException ex)
{ throw ex;}
catch (Exception ex)
{throw ex;}
finally
{();}
return ds;
}
private void DisableControls(Control gv)
{
LinkButton lb = new LinkButton();
Literal l = new Literal();
string name = ;
for (int i = 0; i < ; i++)
{
if ([i].GetType() == typeof(LinkButton))
{
= ([i] as LinkButton).Text;
([i]);
(i, l);
}
else if ([i].GetType() == typeof(DropDownList))
{
= ([i] as DropDownList).;
([i]);
(i, l);
}
if ([i].HasControls())
{
DisableControls([i]);
}
}
}
public override void VerifyRenderingInServerForm(Control control)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
DisableControls(gvFilms);
();
("content-disposition", "attachment;
filename=");
= "application/excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
(htw);
(());
();
}
第 5 章 系统调试与测试
程序调试
在设计系统的过程中,存在一些错误是必然的。对于语句的语法错误,在程
序运行时自动提示,并请求立即纠正,因此,这类错误比较容易发现和纠正。但
另一类错误是在程序执行时由于不正确的操作或对某些数据的计算公式的逻辑
错误导致的错误结果。这类错误隐蔽性强,有时会出现,有时又不出现,因此,
对这一类动态发生的错误的排查是耗时费力的。
程序的测试
测试的重要性及目的
(1) 测试的重要性
软件的测试在软件生命周期中占据重要的地位,在传统的瀑布模型中,软件
测试学仅处于运行维护阶段之前,是软件产品交付用户使用之前保证软件质量的
重要手段。近来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶
段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发
现错误并加以修正,如果不在早期阶段进行测试,错误的延时扩散常常会导致最
后成品测试的巨大困难。
事实上,对于软件来讲,不论采用什么技术和什么方法,软件中仍然会有错。
采用新的语言、先进的开发方式、完善的开发过程,可以减少错误的引入,但是
不可能完全杜绝软件中的错误,这些引入的错误需要测试来找出,软件中的错误
密度也需要测试来进行估计。测试是所有工程学科的基本组成单元,是软件开发
的重要部分。自有程序设计的那天起测试就一直伴随着。统计表明,在典型的软
件开发项目中,软件测试工作量往往占软件开发总工作量的 40%以上。而在软
件开发的总成本中,用在测试上的开销要占 30%到 50%。如果把维护阶段也考
虑在内,讨论整个软件生存期时,测试的成本比例也许会有所降低,但实际上维
护工作相当于二次开发,乃至多次开发,其中必定还包含有许多测试工作。
在实践中,软件测试的困难常常使人望而却步或敷衍了事,这是由于对测试
仍然存在一些不正确的看法和错误的态度,这包括:
① 认为测试工作不如设计和编码那样容易取得进展难以给测试人员某种成就感;
① 以发现软件错误为目标的测试是非建设性的,甚至是破坏性的,测试中发现
错位是对责任者工作的一种否定;
① 测试工作枯燥无味,不能引起人们的兴趣;
① 测试工作是艰苦而细致的工作;
① 对自己编写的程序盲目自信,在发现错误后,顾虑别人对自己的开发能力的
看法。
这些观点对软件测试工作是极为不利的,必须澄清认识、端正态度,才可能提高
软件产品的质量。
(2)测试的目的
如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对软件
比较复杂的部分或是以前出错比较多的位置。
① 软件测试是为了发现错误而执行程序的过程;
① 测试是为了证明程序有错,而不是证明程序无错误;
① 一个好的测试用例是在于它能发现至今未发现的错误;
① 一个成功的测试是发现了至今未发现的错误的测试。
这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正
确功能。但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件
测试的唯一目,查找不出错误的测试就是没有价值的,事实并非如此。
首先,测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的
分布特征,可以发现当前所采用的软件过程的缺陷,以便改进。同时,这种分析
也能帮助我们设计出有针对性地检测方法,改善测试的有效性。其次,没有发现
错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。
测试过程及结果
如表 5-1 所示
表 5-1 测试用例表
测试模块 操作步骤 预期结果 实际结果
登录模块
进入登入界面输入用
户名密码例如(张三,
123)
成功登入 出现提示“帐号或者密码不
对请重新登录”
登录模块
进入登入界面输入用
户名密码例如(张三,
1)
成功登入 登录成功
登录模块
进入登入界面输入用
户名密码例如(李四,
2)
成功登录 登录成功
收入管理模块
进入收入管理,点击
新增,选择项目工资,
选择收支类型收入,
输入金额 1000,最后
确定
成功保存并且录入账
本
录入账本中,并且成功在
收支项目中显示
支出管理模块
进入支出管理,点击
新增,选择项目购物,
选择收支类型收入,
输入金额 100,输入备
注零食,最后确定
成功保存并且录入账
本
录入账本中,并且成功在
收支项目中显示
家庭成员管理模块
进入家庭成员管理,
点击新增,真实姓名
输入 LOUIS,用户名
输入 louis,输入密码
123,确认密码 123
成功添加新的家庭成
员 LOUIS
在家庭成员管理界面显示
新成员 LOUIS
续表 5-1
家庭成员管理模块
进入家庭成员管理,
点击修改,真实姓名
LOUIS 改为 Louis,用
户名 louis 不变,输入
密码 123,确认密码
123
成功修改家庭成员
LOUIS 的名字为 Louis
在家庭成员管理界面显
示 Louis
收支项目管理模块
进去收支项目管理,
点击灰色收入后面的
删除
成功删除收支项目灰
色收入
收支项目栏中成功删除了
灰色收入项目
收支统计模块
进入收支统计模块,
显示以前录入的所有
收支模块的信息
显示以前录入的所有
收支模块的信息
显示完全,没有以后错误
收支管理模块
进入支出模块,点击
查找,选择初试日期
2010-05-01,再选择结
束日期 2010-05-31,最
后点击确认
显示出 2010-05-06 入
账的将于费用支出。
显示出 2010-05-06 入账
的将于费用支出。
数据库备份模块
进入数据库备份,点
击数据库备份,点击
路径进行保存
把数据备份保存到桌
面
成功保存数据库备份文档
在桌面
第 6 章 总结与展望
通过这次毕业设计,我大致了解了进行软件开发工作的基本过程,并且从中
获得了许多实际的、有意义的知识,其中我对以下几点有深刻的体会:
(一)编程中定义窗体及变量的名称时,一定要规范,要让其他编程人员能够看
懂,必要时可以加注释。
(二)对各个控件的属性、事件要了解清楚,这样才能在编程的过程中熟练的应
用。
(三)在编程的过程中要不断的思考,对每一个可能出现的问题都尽量在编程中
处理掉,避免以后的麻烦。
(四)对编程中用到的函数,要将其变量的含义了解清楚,这样才能顺 利应用,
以实现函数的功能。
(五)程序编好后调试是非常重要的,它的意义在于通过调试可以逐步完善它的
功能,改正程序中的错误,使程序尽量达到尽善尽美,在调试的过程中尽量不要
以编程时的思想去调试,要以一个普通用户的思维去思考。
结 论
经过这一个月来对系统的分析、设计,使我对基于 WEB 的家庭财务管理系
统有了全面的了解与认识,同时对基于 WEB 的药品流通管理系统做了具体的解
剖。 我认为基于 WEB 的家庭财务管理系统成功的关键在于以下几方面:
导航界面的清晰,简单设计。界面的清晰简单可以使学习用户一目了然,轻
松的找到自己浏览本系统的目的所在。不需要在花费大量时间来寻找本系统的内
容,浪费用户时间,甚至打消用户的积极性。
系统的易管理性。系统的管理对于系统的维护来说很重要,社会是不断进步
与发展的,用户对于网上娱乐的要求也会越来越高。因此系统要随着用户的需求
而不断发生变化,不断更新系统的内容来满足用户更多的需求。本系统是利用
编程语言和 SQLServer 数据库编译设计的,运行环境简单,一般的浏
览器都可进行浏览。
本系统的大部分模块已经实现,并且也符合以上几个特性。但是,一个完整
的系统仅仅靠两月的分析、设计来开发是远远不够的,它需要更长的时间来测试
并完善。因此,本系统仍然存在着一些需要改进和不足的问题。比如系统的整体
设计需要进一步的美观,系统的自适应性还不够完善还需要进一步的改善和加强,
系统的内容需要更加丰富和多样化。随着研究的进行,可能还会出现其他一些问
题,我会继续努力,逐步改善和不断完善本系统。
致 谢
在本次毕业论文过程中,得到了指导老师的指导与支持。在此特别感谢指导
老师的大力帮助。指导老师的悉心指导和大力支持,在总体结构、功能的把握上
给予了非常大的帮助,同时根我们提供了非常优越的设计环境,并对我在编程、
数据库设计等细节工作上给予了耐心的指导,对于我顺利完成这次毕业论文起到
了关键性的作用。
我还要感谢我的母校,以及给予我关心和帮助的老师和同学,是他们教会了
我专业的知识和做人的道理。通过这次毕业论文我还明白了作为一名计算机专业
的大学毕业生,我们要会的不仅仅是编写代码,更重要的是要有整体把握系统设
计的能力。我会在以后的工作和学习中不断完善自己,为我热爱的母校争光,为
自己翻开辉煌的新篇章。
参考文献
1 屈喜龙,朱杰等. ASP+SQL SERVER 开发动态网站实例荟粹[M].北京:机械出版社,2006.
2 李明刚. Web 站点高级编程范例[M]. 清华大学出版社第五事业部
3 曹衍龙.ASP/ 数据库开发实用工程案例精选[M]. 北京:清华大学出版社,
2004.
4 何光明.C 语言实用培训教程[M].北京:人民邮电出版社, 2003.
5 Visual C#.NET Web 应用程序设计[M].北京:清华大学出版社,
6 陈恩义.Michael Otey,Paul Conte[英]. SQL Server 2000 开发指南[M].北京:清华大学出版
社,2004.
7 Dreamweaver MX 2004 完全征服手册[M].北京;中国青年出版社,2004.
8 吕静骅 史进.Dusan Petkovic[美].SQL Server 2000 基础教程[M].北京:清华大学出版社,
2001
9 李万宝. 技术详解与应用实例[M].北京:机械工业出版社,2005.
10 Douglas J. Reilly .Design Microsoft application[M].北京:清华大学出版社,2001.
11 Mesbah Ahmed , Chris Garrett , Jeremy Faircloth , Chris Microsoft
[M]. Syngress Publishing, Inc,2002.
12 Martin Kalin.面向对象程序设计 C++语言描述.北京:机械工业出版社,2003.
附录 A 译文
.NET Compact Framework 中的新事物
介绍
.NET Compact Framework 版在以前版本——.NET Compact 版
——上提供许多改善。虽然普遍改善,但他们都集中在共同的目标——改进开发
商生产力、以完整的.NET Framwork 提供更强的兼容性,以及加大对设备特性的
支持。这篇文章提供一个.NET Compact 的变动和改进的高水平的
概要。
用户界面
相关的灵活的设备显示器的小尺寸要求:应用程序高效率地使用可用空间。这在
过去是要求开发商花费很多时间来设计和实施应用的用户界面。最近的在灵活的
显示能力方面的进步,譬如高分辨率和多方位支持,使得用户界面发展的工作更
具挑战性。为了简化创造应用用户界面的任务,.NET Compact 提
供许多关于这方面描述的新特性。
窗口形式控制
存在于用户界面中心的是控制;.NET Compact 提供了很多新的控
制。这些新控制由除了特别针对设备之外的控制组成。这种控制是.NET Compact
Framework 有的与.NET Framework 一样充分的控制。
MonthCalendar
MonthCalendar 控制是提供日期显示的可定制的日历控制,而且是有利于为用户
提供一个图解方式来精选日期。
DateTimePicker
DateTimePicker 控制是为显示和允许用户进入日期和时间信息的可定制的控制。
由于它的一个紧凑显示和图解日期选择格式的组合,它特别适用于灵活的设备应
用程序。当显示信息时,DateTimePicker 控制与正文框相似;但是,当用户选择
了一个日期, 可能显示一个类似于 MonthCalendar 控制的弹出日历。
WebBrowser
WebBrowser 控制压缩了设备 Web 浏览器,并且提供强大的显示能力和暴露很多
事件。这些事件除了允许你的应用程序提供对于这些事件的用户化的行为,还允
许你的应用程序追踪用户与 Web 浏览器内容的互动。
Notification
Notification 控制压缩了袖珍版个人电脑的通知特性,就是允许应用程序寄给用户
一个没有改变用户当前活动的上下文的通知。通知文本可以是纯文本或 HTML。
除显示信息之外,通知可以通过包含在通知的 HTML 文本中的 HTML 按钮和链
接来接受用户的输入。
DocumentList
DocumentList 控制为显示和处理文件提供一个标准的机制,譬如当打开 Excel
Mobile and Word Mobile 中的使用的文件。DocumentList 控制提供给用户操纵文
件系统以及删除、复制、行动和重命名的能力。用户也可以用 DocumentList 控
制通过红外线发送电子邮件和发送文件到其它设备。
Smartphone 中的 DataGrid
Smartphone 现在支持 DataGrid 控制。就像袖珍个人电脑,Smartphone 中的
DataGrid 控制支持构形的大小、多种显示形式、数据捆绑、空值处理和跟踪用户
单元选择的事件。
LinkLabel
LinkLabel 控制是一个能显示一个或更多超链接的标签控制。
Splitter
Splitter 控制是一个提供恢复相接控制的能力的分离栏。
ToolBar
ToolBar 控制是能将图像以按钮形式显示的 Windows 工具栏。
用户控制
.NET Compact 现 在 支 持 用 户 控 制 。 增 加 用 户 控 制 的 同
时,.NET Compact Framework 应用程序现在可以用 Visual Studio 2005 图像
化 地 创 建 控 制 , 并 且 , 就 如 完 整 的 .NET Framework 一 样 , .NET Compact
的用户控制自动在控制工具箱出现,而且可以用拖放安置在窗体
上。
显示和布局管理
现在可用的 Windows Mobile 窗体因素的广泛多样性,要求应用程序开发者开发
应用程序用户界面比以前更动态化。为了简化创造动态用户界面的任务,.NET
Compact 提供许多新布局和管理特性。
控制相接
.NET Compact 控制现在支持相接。相接一个控制设置它与双亲控
制的边缘相反,即填充边缘。因为双亲控制调整尺寸,相接控制自动调整尺寸来
填充双亲控制指定的边缘。控制也可以相接填装整个双亲。
控制停滞
.NET Compact 控制也支持停滞。停滞控制识别,即控制的一边或
多边应该依然是与对应的边缘或双亲控制的边缘保持的一个固定距离。因为双亲
控制调整尺寸,控制自动地调整尺寸,因此控制的停滞的一边依然是与双亲控制
的对应的边缘保持的适当的距离。
自动卷曲
Form and Panel 控制——除了继承于 ScrollableControl 控制的其他控制——现在
提供 AutoScroll 属性。当设置为真,控制自动地提供一个卷曲栏来允许用户卷曲
到任一个在控制可视范围之外的孩子控制。
自动缩放比例
所有 ContainerControl 起源的控制,譬如 Form 控制,现在提供 AutoScaleMode
属性。AutoScaleMode 属性指出当控制在一个不同于最初它设计的决议上显示时,
控制应该如何反映。当设置为 时,容器控制的所有孩子控制
相应地与执行时间的显示决议相匹配。 的值表明缩放比例
不会自动完成,这样就使应用程序有责任在不同的决议上准确地提出。
SuspendLayout 和 ResumeLayout
.NET Compact Control 类 现 在 支 持 SuspendLayout 和
ResumeLayout 方法。就像在完整的.NETFramework 中一样,这些方法在与一个
异于聚集布局事件关联,譬如改变一系列的孩子控制的位置或调整它们的尺寸。
Graphics DpiX 和 DpiY 属性
现在,Graphics 类提供关于当前设备显示的决议的信息。DpiX 属性显示水平的
每英寸像素的数量, 而且 DpiY 属性显示垂直的每英寸像素的数量。
自定义图画
为了简化丰富的用户界面的创作,.NET Compact 增加了很多特性。
这些特性允许应用程序更加容易运用自定义图画。
可旋转的字体
LogFont 类添加到.NET Compact 为在为在一个角度显示文本提供
支持,以及为合并其他文本作用提供支持。
自定义笔
现在,应用程序可以创造具体颜色和大小的笔。
位图
.NET Compact 为用位图工作提供改进。这种改进包括:当创建位
图和有能力将一个位图保存到一个文件或流时,提供更多的选择。
应用程序可以运用新加入的 BitmapData 类,通过 LockBits 和 UnlockBits 方法的
联合更加容易观察和操作位图。因为应用程序需要在被处理的和自身的代码之间
分享位图,现在,你可以通过 GetHbitmap 方法检索一个自身位图对象的句柄。
DirectX
Windows Mobile 软件通过执行 DirectX 应用程序设计界面(APIs)包含二维
和 三 维 的 图 画 特 性 。 因 为 .NET Compact Framework 的 开 发 商 ——瞄 准
Windows Mobile 基 础 设 备 的 人 , DirectX 特 性 集 有 能 力 贯 穿 包 含 在
“”命名域中的类和对应的汇编。
键盘管理
现在,灵活的设备的一个增长数字包括键盘。为了允许管理开发商利用可利用的
键盘,.NET Compact 为键盘提供改进的支持。
注:在这部分提及的一些特性被作为一部分加到.NET Compact 服
务包,但在这里提它们,大家就肯定知道它们也是可用的。
制表符支持
现在,控制支持制表符命令以允许应用程序用户通过按制表符键在控制之间切换。
Keyboard Events 和
现在,控制接受 KeyUp、KeyDown 和 KeyPress 事件。此外,现在,Form 控制
提供 KeyPreview 属性。当设置为假, keyboard 事件就会被直接发到控制。当
KeyPreview 被设置为真,所有 keyboard 事件就会被发到 Form 实例以等待被发送
到当前聚焦的控制。通过在 Form 实例的对应的事件处理设置 KeyPressEventArgs
属性为真,Form 实例可以防止事件以焦点被送到控制。
数据
当然,数据是任一个应用程序的重要部份。不管有无关系,针对数据的类在必需
访 问 和 运 作 以 数 据 编 程 的 努 力 上 的 水 平 有 直 接 效 应 。 .NET
除了为现存的类提供新特性,还提供很多新数据类。
Updatable, Scrollable Access to SQL Server 2005 Mobile Edition
.NET Compact 为 进 入 SQL Server 2005 Mobile Edition
(SQL Mobile)数据库——SqlCeResultSet 提供新类。新的 SqlCeResultSet 类提
供卷曲和可更新的直接存取 SQL Mobile 数据库。这个存取为存取 SQL Mobile 数
据提供一种比 DatasSet 类更加快速和更加资源高效率的解决方案。和 DataSet 类
一样,SqlCeResultSet 可以作为数据绑定资源使用。
DataSet
DataSet 类和相关的类提供很多新特性。这些特性不仅提供改进的功能而且带
来.NET Compact Framework 的 DataSet 类与整个.NET Framework 更多协调。
GetChanges 和 Merge Methods
.NET Compact 将 GetChanges 和 Merge 方法增加到 DataSet 类。
GetChanges 方法返回一个包含所有自从最后访问 AcceptChanges 之后的所有变
动的 DataSet 的副本。返回的 DataSet 优化为合并。
DataSet 方 法 将 DataSet 合 并 到 另 一 个 里 。 它 对 于 将 变 动 从 一 个 由 一 个
GetChanges 方法返回的 DataSet 合并到另一个特别有用。
Copy 方法
现在,. NET Compact Framework 的 DataSet 类提供 Copy 方法。Copy 方法返回
包含与原物相同的结构和数据的新 DataSet。
DataTables Serialization
现在,DataTable 类提供 WriteXml 和 ReadXml 方法。这些方法提供各自的表的
XML 连载和非连载。而且,连载和非连载的支持的结合允许 DataTables 作为
Web 服务论点而通过。
XML
.NET Compact 对于与 XML 相关类提供了很多改进。这些改进不
仅简化运用 XML 数据运作的进程,而且给.NET Compact Framework 中 XML 相
关类带来更多与那些在整个.NET Framework 中可用的资源的协调。
XPath 支持
现在,XmlDocument 类支持 SelectSingleNode 和 SelectNodes 方法——二者都是
提供用 XPath 搜索文档的能力。
XML 连载
.NET Compact 与相关属性类一起增加 XmlSerializer 类,譬如
XmlElement 和 XmlAttribute。用 XmlSerializer,你可以从 XML 保存和恢复类,
以及保存和恢复类到 XML。
新的 XmlSerializer 类也通过.NET Compact 的 Web 代理基本类在
内部使用。新的 XmlSerializer 类充分提供通过.NET Compact 在使
用的机制上极大地改善以连载和非连载 Web 服务器论点,因此提供改进的 Web
服务器访问性能。
XML 图解
现在,.NET Compact 为用 XML 图解文档工作提供 XmlSchema 类。
这些类也可以使用到动态地产生图解。
数据绑定
新的数据绑定类——BindingSource——包含在.NET Compact 中。
BindingSource 通常分在一个或更多数据绑定控制和一个数据绑定源之间。当使
用时,BindingSource 类通过提供间接的层数和增加流动管理、改变事件以及更
多来简化数据绑定。
通信
通 信 实 际 上 是 每 个 灵 活 的 设 备 应 用 程 序 的 一 个 重 要 部 份 。 .NET Compact
增加了几个新类以简化共同的通信要求,同时提供整体的新能力。
除新的通信类之外,.NET Compact 还包括对现有的类的改善。
Web 服务
就像之前提到的那样,新的 XmlSerializer 类通过提供一个更加快速的 Web 服务
器论点的 XML 连载和非连载而充分改进了 Web 业务访问性能。
除性能改善之外,现在.NET Compact 的 Web 服务器类为
版提供支持。
MSMQ
作 为 想 利 用 MSMQ 异 步 信 息 特 性 的 应 用 程 序 开 发 商 , .NET Compact
在“”命名域中提供类。这些类为发送和接收包含
使用事物创建基本操作的信息提供支持。
连续端口
为了减少当用连续端口工作时必需的编程的努力,.NET Compact
包含了 SerialPort 类。SerialPort 类提供一个简化的对连续通信端口的提取。这个
端口提供很多简化追踪和配置连续端口的特性。连续端口还简化以连续端口发送
和接收数据——包括自动编码和解码数据发送和从端口接收数据。
IPv6 支持
现在,.NET Compact 网络类除了为 IPv4 支持外,还为 IPv6 提供
支持。
结论
希望这个摘要通过使用.NET Compact 给了你一个关于有利于灵活
设备开发商的许多新特性。关于那些你想要的更多的细节的那些主题,你可以检
索文献和 MSDN。这篇文章里提到的有关每个主题的详细文章在或者很快就会
在 MSDN 上。
附录 B 外文原文
What's New in the .NET Compact Framework
Introduction
The .NET Compact Framework version offers many improvements over its
predecessor, the .NET Compact Framework version . Although the improvements
are widespread, they all focus on the common goals of improving developer
productivity, providing greater compatibility with the full .NET Framework and
increasing support for device features. This article provides a high-level summary of
the .NET Compact Framework changes and enhancements.
User Interface
The relatively small size of smart device displays requires that applications use the
available space efficiently, which historically has required that developers spend a
great deal of time designing and implementing an application's user interface. Recent
advances in smart display capabilities, such as high-resolution and multiple
orientation support have made the job of user interface development even more
challenging. To simplify the task of creating application user interfaces,
the .NET Compact Framework provides the many new features that are described
in this section.
Windows Forms Controls
At the heart of the user interface are the controls; the .NET Compact Framework
provides a number of new controls. These new controls consist of controls that
the .NET Compact Framework has in common with the full .NET Framework in
addition to controls that are specific to devices.
MonthCalendar
The MonthCalendar control is a customizable calendar control that provides a visual
display of dates and is useful for providing a graphical way for users to select dates.
DateTimePicker
The DateTimePicker control is a customizable control for displaying and allowing
users to enter date and time information. It is especially well suited for smart device
applications due to its combination of a compact display and graphical date selection
format. When displaying information, the DateTimePicker control renders similar to a
text box; however, when the user is selecting a date, a pop-up calendar similar to the
MonthCalendar control can be displayed.
WebBrowser
The WebBrowser control encapsulates the device Web browser, providing rich
display capabilities and exposing a variety of events that allow your application to
both track the user's interaction with the Web browser content in addition to allowing
your application to provide customized behaviors for these events.
Notification
The Notification control encapsulates the Pocket PC's notification feature that allows
applications to send the user a notification without changing the context of the user's
current activity. The notification text can be plain text or HTML. In addition to
displaying information, notifications can receive input from the user by including
HTML buttons and links in the HTML text of the notification.
DocumentList
The DocumentList control provides a standard mechanism for displaying and
managing files such as that which is used when opening files in Excel Mobile and
Word Mobile. The DocumentList control provides the user with the ability to navigate
around the file system and to delete, copy, move, and rename files. The user can also
use the DocumentList control to send e-mail messages and send files by means of
infrared to other devices.
DataGrid on Smartphone
Smartphone now supports the DataGrid control. Just like Pocket PC, the DataGrid
control on Smartphone supports configurable column sizes, multiple display styles,
data binding, null value handling, and events to track user cell selections.
LinkLabel
The LinkLabel control is a label control that is capable of displaying one or more
hyperlinks.
Splitter
The Splitter control is a splitter bar that provides resizing capability to docked
controls.
ToolBar
The ToolBar control is Windows toolbar that is capable of displaying images as
buttons.
User Controls
The .NET Compact Framework now supports user controls. With the addition of
user controls, .NET Compact Framework applications can now create controls
graphically within Visual Studio 2005 and, just as the full .NET Framework,
the .NET Compact Framework user controls automatically appear on the control
Toolbox and can be placed on forms by using drag-and-drop.
Display and Layout Management
The wide variety of Windows Mobile form factors that are now available requires that
application developers develop application user interfaces to be much more dynamic
than in the past. To simplify the task of creating dynamic user interfaces,
the .NET Compact Framework provides many new layout and management
features.
Control Docking
The .NET Compact Framework controls now support docking. Docking a control
places it against the edge of the parent control—filling that edge. As the parent
control is resized, the docked control automatically resizes to always fill the specified
edge of the parent control. Controls can also be docked to fill the entire parent.
Control Anchoring
The .NET Compact Framework controls also support anchoring. Anchoring a
control identifies that one or more sides of the control should remain a fixed distance
from the corresponding edge or edges of the parent control. As the parent control is
resized, the control automatically resizes so the anchored sides of the control remain
the appropriate distance from the corresponding edges of the parent control.
Automatic Scrolling
The Form and Panel control—in addition to other controls that inherit from the
ScrollableControl control—now provide the AutoScroll property. When set to true,
the control automatically provides a scroll bar to allow the user to scroll to any child
controls that are outside the control's visible boundary.
Automatic Scaling
All ContainerControl derived controls, such as the Form control, now provide the
AutoScaleMode property. The AutoScaleMode property indicates how the control
should render when it is displayed on a resolution different than the resolution it was
originally designed for. When set to , all child controls of the
container control are scaled to match the runtime display's resolution. A value of
indicates that no automatic scaling will be done, making the
application responsible to render correctly on the different resolutions.
SuspendLayout and ResumeLayout
The .NET Compact Framework Control class now supports the SuspendLayout
and ResumeLayout methods. Just as in the full .NET Framework, these methods are
used in conjunction with one another to group multiple layout events, such as
repositioning or resizing a series of child controls.
Graphics DpiX and DpiY properties
The Graphics class now provides information as to the resolution of the current device
display. The DpiX property indicates the number of horizontal dots per inch, and
DpiY indicates the number of vertical dots per inch.
Custom Drawing
To simplify the creation of rich user interfaces, the .NET Compact Framework has
added a number of features that allow applications to much more easily handle
custom drawing.
Rotatable Fonts
The addition of the LogFont class to the .NET Compact Framework provides
support for displaying text at an angle and for incorporating other text effects.
Custom Pens
Applications can now create pens of a specific color and size.
Bitmaps
The .NET Compact Framework provides many enhancements for working with
bitmaps. Enhancements include providing more options when creating bitmaps and
having the ability to save a bitmap to a file or stream.
Applications can more easily view and manipulate bitmaps through the combination
of the LockBits and UnlockBits methods with the newly added BitmapData class. For
applications needing to share bitmaps between managed and native code, you can
now retrieve a handle to the native bitmap object through the GetHbitmap method.
DirectX
Windows Mobile software includes a number of rich two-dimensional and
three-dimensional drawing features through its native implementation of the DirectX
application programming interfaces (APIs). For .NET Compact Framework
developers who target Windows Mobile –based devices, the DirectX feature set is
available through the classes contained in the ""
namespace and corresponding assembly.
Keyboard Management
An increasing number of smart devices now include keyboards. To allow managed
developers to take advantage of the available keyboards ,
the .NET Compact Framework provides enhanced support for keyboards.
Note Some of the features mentioned in this section were added as part of
the .NET Compact Framework service packs but are mentioned here to be sure
that everyone is aware that they are available.
Tab Support
Controls now support a tab order allowing application users to move between controls
by pressing the tab key.
Keyboard Events and
Controls now receive KeyUp, KeyDown, and KeyPress events. In addition, the Form
control now provides the KeyPreview property. When set to false, keyboard events
are sent directly to the control. When KeyPreview is set to true, all keyboard events
are sent to the Form instance prior to being sent to the control that currently has focus.
The Form instance can prevent an event from being sent to the control with focus by
setting the property to true in the Form instance's
corresponding event handler.
Data
Data is of course a central part of any application. Whether relational, data-oriented
classes have a direct effect on the level of programming effort that is required to
access and work with data. The .NET Compact Framework provides a number of
new data classes in addition to new features to existing classes.
Updatable, Scrollable Access to SQL Server 2005 Mobile Edition
The .NET Compact Framework provides a new class for accessing a
SQL Server 2005 Mobile Edition (SQL Mobile) database, SqlCeResultSet. The new
SqlCeResultSet class provides scrolling and updatable access directly to the SQL
Mobile database. This access provides a much faster and more resource-efficient
solution for accessing SQL Mobile data than the DataSet class. Like the DataSet
class, SqlCeResultSet can be used as a data binding source.
DataSet
The DataSet class and related classes provide a number of new features. These
features not only provide enhanced functionality but also bring
the .NET Compact Framework DataSet class more in line with that of the
full .NET Framework.
GetChanges and Merge Methods
The .NET Compact Framework adds the GetChanges and Merge methods to the
DataSet class. The GetChanges method returns a copy of DataSet that contains all of
the changes since AcceptChanges was last called. The returned DataSet is optimized
for merging.
The Merge method merges one DataSet into another. It is particularly useful for
merging changes from one DataSet, returned by the GetChanges method, into another.
Copy Method
The .NET Compact Framework DataSet class now provides the Copy method. The
Copy method returns a new DataSet containing the same structure and data as the
original.
DataTables Serialization
The DataTable class now provides the WriteXml and ReadXml methods, which
provide XML serialization and deserialization of individual tables. Also the addition
of serialization and deserialization support allows DataTables to be passed as Web
service arguments.
XML
The .NET Compact Framework provides a number of enhancements to the XML–
related classes. These enhancements both simplify the process of working with XML
data and also bring the .NET Compact Framework XML–related classes much more
in line with those available in the full .NET Framework.
XPath Support
The XmlDocument class now supports the SelectSingleNode and SelectNodes
methods—both of which provide the ability to search the document using XPath.
XML Serialization
The .NET Compact Framework adds the XmlSerializer class along with the
related attribute classes, such as XmlElement and XmlAttribute. Using XmlSerializer
allows you to save and restore classes to and from XML.
The new XmlSerializer class is also used internally by
the .NET Compact Framework Web service proxy base classes. The new
XmlSerializer class provides substantially improved performance over the mechanism
used by the .NET Compact Framework to serialize and deserialize Web service
arguments thereby providing improved Web service call performance.
XML Schema
The .NET Compact Framework now provides the XmlSchema class and related
classes for working with XML schema documents. These classes can also be used to
dynamically generate schemas.
Data Binding
The new data binding class, BindingSource, is included in
the .NET Compact Framework . The BindingSource is normally layered between
one or more data bound controls and a data binding source. When used, the
BindingSource class simplifies data binding by providing a layer of indirection and
adding currency management, change events, and more.
Communications
Communications is an important part of virtually every smart device application.
The .NET Compact Framework has added several new classes to simplify
common communications requirements as well as providing entirely new capabilities.
In addition to the new communications classes, the .NET Compact Framework
also includes improvements to existing classes.
Web Services
As noted earlier, the new XmlSerializer class substantially improves the performance
of Web service calls by providing a much faster XML serialization and deserialization
of Web service arguments.
In addition to the performance improvements, the .NET Compact Framework
Web service classes now provide support for SOAP version .
MSMQ
For application developers who want to take advantage of the asynchronous
messaging features of MSMQ, the .NET Compact Framework provides the classes
in the "" namespace. These classes provide support for sending and
receiving messages including using transactions to create atomic operations.
Serial Ports
To reduce the programming effort that is required when working with serial ports,
the .NET Compact Framework includes the SerialPort class. The SerialPort class
provides a simplified abstraction over serial communications ports that provides a
number of features that simplify monitoring and configuring serial ports. The serial
port also simplifies sending and receiving data with serial ports—including the
automatic encoding and decoding of data sent to and received from the port.
IPv6 Support
The .NET Compact Framework networking classes now provide support for IPv6
in addition to IPv4.
Conclusion
Hopefully this summary has given you a good idea about the many new features
available to smart device developers by using the .NET Compact Framework . For
those topics for which you'd like more details, check out the documentation and
MSDN. Detailed articles about each of the topics addressed in this article are or will
soon be available on MSDN.