完整版人体饮食健康系统毕业设计.docx

上传人:b****8 文档编号:9135641 上传时间:2023-02-03 格式:DOCX 页数:60 大小:615.87KB
下载 相关 举报
完整版人体饮食健康系统毕业设计.docx_第1页
第1页 / 共60页
完整版人体饮食健康系统毕业设计.docx_第2页
第2页 / 共60页
完整版人体饮食健康系统毕业设计.docx_第3页
第3页 / 共60页
完整版人体饮食健康系统毕业设计.docx_第4页
第4页 / 共60页
完整版人体饮食健康系统毕业设计.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

完整版人体饮食健康系统毕业设计.docx

《完整版人体饮食健康系统毕业设计.docx》由会员分享,可在线阅读,更多相关《完整版人体饮食健康系统毕业设计.docx(60页珍藏版)》请在冰豆网上搜索。

完整版人体饮食健康系统毕业设计.docx

完整版人体饮食健康系统毕业设计

本科毕业设计(论文)

 

题目:

人体饮食健康系统

 

院(系)

专业

班级

姓名

学号

导师

 

年月日

 

人体饮食健康系统

摘要

随着现代农业与食品工业的发展,食物的种类越来越多,同时,人们的生活节奏日益加快,消费者缺乏食品营养与健康方面的知识,饮食结构不合理,营养平衡经常被打破,导致疾病不断滋生,如三高,营养不良等。

本人体饮食健康系统采用CS结构,主要对用户的饮食信息以及营养摄入情况进行管理,方便用户建立一个完善的、强大的饮食信息数据库。

本文详细介绍了人体饮食健康系统的实现原理及所用到的技术方案,最终实现动态跟踪消费者的饮食习惯,进行营养评估和营养配餐,帮助消费者建立起健康的饮食方案。

关键词:

人体饮食健康系统饮食习惯营养评估CS

Humandietandagricultureandfoodindustry,thekindsoffoodbecamerich.Atthesametime,thepaceofModernpeople'slifewasbecomingfastandpeopleandbrokenupandthereweremanydiseases,suchas,malnutritionandsoon.

TheCSstructureisusedtoThedietdatabase,mainlyontheuser'sdietandnutritioninformationmanagement,Thispaperintroducestherealizationofthedietrecipe,inordertodietandDevelopment,RAD)的思想与简洁的语法将会使你迅速成为一名优秀的软件开发人员。

该语言是专门为.NET应用而开发出的语言,这从根本上保证了C#与.NET框架的完美结合。

在.NET运行库的支持下,.NET框架的各种优点在C#中表现得很完美。

C#的一些突出的特点:

●精心地面向对象设计

●完整的安全性与错误处理

●简洁的语法

●与Web的紧密结合

●灵活性与兼容性

●版本处理技术

2.2.1简洁的语法

C#的代码在.NET框架不允许直接地内存操作,提供的可操纵环境下运行,没有了指针是它最大的特色。

在C++中被经常使用的操作符(例如:

“:

”、“->”和“.,”)已经不再出现。

C#只支持一个“.”。

C#中,用真正的关键字换掉了那些把活动模板库(ActiveTemplateLibrary,ALT)和COM搞得乱糟糟的伪关键字,如(OLE_COLOR、BOOL、VARIANT_BOOL、DISPID_XXXXX等等)。

C#操作符在.NET类库中都有了新名字。

2.2.2精心地面向对象设计

从Smalltalk起,面向对象的话题始终围绕着任何一种现代程序设计语言。

C#确实具有面向对象的语言所应有的一切特性:

封装、继承和多态性,这些也不出众。

但是通过精心地面向对象设计,由高级商业对象到系统级应用,C#建立广泛组件的最优选择。

在C#的类型系统里,每种类型都可以看成一个对象。

C#提供一个叫做装箱(boxing)和拆箱(unboxing)的机制来完成这种操作,但不会给用户带来困扰。

C#只允许单继承,也就是一个类不再有多个基类,因而避免了类型定义的混乱。

你会在继续的学习中了解到C#中没有了全局函数,没有全局变量,也没有全局常数。

所有必须封装在一个类之中。

你书写的代码会具有更好的可读性,并且大大减少了发生命名冲突的可能性。

而这整个C#的类模型是建立在.NET虚拟对象系统(VisualObjectSystem,VOS)的基础之上,它的对象模型是.NET基础架构的一部分,不再是它本身的组成部分。

在VB中我们得来的丰富的RAD经验,使得C#具备了良好的开发环境。

结合自身强大的面向对象的功能,C#让开发人员的生产效率得到极大的提高。

对于公司来说,软件开发周期缩短会使他们更好面对网络经济的激烈竞争。

在效率和功能的杠杆上人们终于找到了支点。

2.3SQL2008主要特点

2.3.1NET框架

在SQLServer2008中,开发人员通过运用相似的语言,如微软的VisualC#.NET与微软的VisualBasic,将能够创建数据库对象。

开发人员还将能创建两个新的对象——用户定义的类和集合。

2.3.2XML技术

在使用本地网络和互联网与在不同应用软件之间传输数据的时候,可扩展标记语言(XML)是一个很重要的标准。

SQLServer2008也会支持存储和查询可扩展标记语言文件。

2.3.3ADO.NET2.0版本

由SQL类的新的支持,到多活动结果集(MARS)和SQLServer2008中的ADO.NET将推动数据集操纵和存取,实现更大的可升级性和便利性。

2.3.4增强的安全性

SQLServer2008中的新型安全模式将用户与对象分开,提供fine-grainaccess存取并允许对数据存取进行更多的控制。

所有系统表格会作为视图得到实施,对数据库系统对象进行更大程度控制。

2.3.5Transact-SQL的增强性能

SQLServer2008为开发能够升级的数据库应用软件,提供新的语言功能。

这增强的性能含错误处理,功能递归查询,关系运算符和其他数据列排行功能。

2.3.6SQL服务中介

SQL服务中介给大型营业范围应用软件提供了一个分布式和异步应用框架。

2.3.7通告服务

通告服务使业务建立多样的通知应用软件,能够向任何设备,提供个人化以及及时的信息,如股市警报、包裹递送警报、新闻订阅、航空公司票价等。

在SQLServer2008,通告服务与其他技术紧密地融合在了一起,这些技术包括分析服务以及SQLServerManagementStudio。

2.3.8Web服务

在SQLServer2008,开发人员能够在数据库层开发Web服务,将SQLServer当成一个超文本传输协议()的侦听器,并且能够为网络服务中心应用软件提供一个新型的数据存取功能。

2.3.9报表服务

在SQLServer2008中,报表服务能够提供报表控制,可通过VisualStudio2010发行。

2.3.10全文搜索功能的增强

SQLServer2008支持丰富的全文应用软件。

服务器的编目功能将得到一定增强,对编目对象提供了更大的灵活性。

查询性能与升级性也大幅得到改进,同时新的管理工具可以为有关全文功能的运行,提供更深入的了解。

2.4C#与ADO.NET

2.4.1 C#中的数据库访问[26]

以.NET框架编写的(包括用C#编写的应用程序)应用程序需要访问数据库时,将使用ADO.NET实现数据库访问。

数据绑定是一种非常易用的访问数据库的方法,可以减少编写的代码量。

一些比较简单任务可以通过纯粹声明式代码来完成。

数据访问框架的ADO.NET是微软的最新产物,是.NET框架的一部分。

在ADO.NET使用之前,开发人员在ASP(ActiveServerPages)或VisualBasic中使用ADO(AtiveXDataObjects),它是一组COM(ComponentObjectModel,组件对象模型)组件,可以通过使用一个简单的封装类提供对底层数据访问代码的访问。

ADO很大程度上简化了数据库访问,但更高级的开发人员(特别是C++程序员)一般更喜欢使用更直接和更快的代码,比如OLEDB(ObjectLinkingandEmbeddingforDatabases)代码库。

ADO.NET比ADO的功能更加的强大。

它在.NET代码中是访问数据库的最好工具。

在.NET框架里的ADO.NET类型(在System.Data命名空间和其子空间下的所有类型)含那些为了访问SQLServer、ODBC、OLEDB及Oracle数据库而优化的类型。

它们基于通用类,因而使用ADO.NET访问不同的DBMS是相类似的。

ADO.NET类型实现两个主要的功能。

 ●   数据表示:

用于包含数据库数据(如数据表)的类型。

 ●   数据访问:

用于访问数据库中数据和操作数据库的类型;

 上面两种类型之间联系非常密切,在数据库开发中两种类型都会被用到。

严格意义上来讲,可以只用一种数据库访问类型就可以了。

但是,若使用数据访问类型来填充数据表示类型将会节省大量工作。

ADO.NET包括7个重要的基类,其中4个为数据访问类:

  ● DbConnection;

  ●DbDataReader;

  ●DbCommand;

  ●DbDataAdapter。

其他3个类为数据表示类:

  ●DataRelation;

  ● DataTable;

  ●DataSet。

DataTable类还使用了其他一些很重要的类如:

DataColum、Constraint和DataRow,下面一一介绍它们。

1)DbConnection

DbConnection类应用与数据库的连接。

创建DbConnection对象的时候,应提供和DBMS通信所需要的信息,比如数据库的位置、密码和用于认证的用户名以及要访问的DBMS中的数据库。

其他ADO.NET数据的访问类依靠DbConnection和数据库进行通信。

DbConnection类的角色如图2.1所示。

图2.1 DbConnection类

由DbConnection派生而来的类里,到数据库的连接全是由连接字符串定义的,此字符串存储在属性为DbConnection.ConnectionString中。

数据库连接应只在传输数据时才打开,因而创建DbConnection实例的时候并不是自动连接到数据库。

DbConnection类定义了Open()方法及Close()方法,用于控制连接什么时候能用。

许多其他的ADO.NET类也能控制连接状态,如有一些类在完成操作后关闭它们所使用的连接。

DbConnection对象还可以参与事务。

可用“DbConnection.BeginTransaction()”方法开始事务,或者使用“DbConnection.EnlistTransaction()”作为已有事务的一部分执行操作。

要访问SQLServer或SQLServer速成版中的数据时,会使用SqlConnection,该类是DbConnection中的子类。

一般来讲,DbConnection和SqlConnection及其他子类都被称为连接类。

2)DbCommand

DbCommand类可以提供与数据库交互的主要方法。

用DbCommand对象来执行SQL语句并运行存储过程等。

DbCommand和其派生类被称为命令类。

大多数情况下并不直接使用DbCommand,是用封装DbCommand的其他对象。

但有些时候要对数据库通信实行更多的控制,此时就可以运用DbCommand对象。

DbCommand对象的角色如图2.2所示。

图2.2 DbCommand类

DbCommand中最重要的属性应该是DbCommandmandText。

若要执行SQL语句,就必须把语句文本放在此属性中。

可以用DbCommandmandType来定要执行的语句类型,以DbCommand.Connection.DbCommand.Tranction来访问底层的连接或事务。

DbCommand对象中可能会有参数化的命令字符串,命令里的参数来于类型为DbCommand.Parameters集合的属性。

它和直接在命令字符串中输入参数相比有非常多的优点。

如果要用DbCommand对象来执行命令,这里有三种选择,这取决于要执行的命令是什么和有些命令不返回结果,该状况下可以用“DbCommand.ExecuteNonQuery()”方法;有一些命令返回一个结果,这时候可用“DbCommand.ExecuteScalar()”方法;最后,有很多命令返回多行数据,这时候可用“DbCommand.ExecuteReader()”方法,它将会返回一个DbDataReader对象。

SQLServer的DbCommand版本名是SqlCommand。

它有一些特殊方法,比如SqlCommand.ExecuteXmlReader()方法,它直接是以XML格式返回结果。

3)DbDataReader

用DbDataReader类能够从结果集中读取数据,像是从执行存储在命令对象中的命令生成的结果集中读取数据。

此类经过高度的优化,能够迅速地访问数据库中的数据。

但是这种优化也有些不方便的情况,比如只能以串行方式一次读取一行数据。

而不能读完两行后然后返回去读取第一行。

一般情况下,可以用DbDataReader对象来提取将要使用的行数据,并把它存储在其他对象中。

如能读取一个结果集中的每行,然后将其存储到在自定义集合或泛型列表对象中自定义类里。

与命令对象相同,许多数据阅读器对象是由ADO.NET命名空间下的其他类使用的,用户不必直接运用它们。

图2.3说明了如何在数据库应用程序里用数据阅读器。

图2.3 DbDataReader类

若要使用数据阅读器对象,先必须要调用DbDataReader.Read()方法选择结果集中的第一行。

用户可以不断调用该方法来移动数据阅读器,使得数据阅读器像结果集中的游标一样总指向一行。

获取到一行的时候,Read()方法返回是true;否则返回是false—如当所有行都已经读完的时候。

也可用DbDataReader.HasRows属性来判别结果集中是否还有其他行。

当前选中的行可用很多属性和方法进行检查。

DbDataReader.FieldCount查看当前行所包含了多少列,并且用DbDataReader的重载索引器来访问各列。

若知道将要访问的列名,还可以使用基于整数的索引器通过位置来获得列,可以用基于字符串的索引器来获得列值。

在两种情况下,该方法都将返回object值,可把其转化为其他类型的数据。

还可用DbDataReader提供的多个方法来直接获得类型化的数据,比如GetInt32()和GetString()是分别将指定列以int和string值返回,列由其索引选择。

要用这些方法取得值类型,那必须先要使用DbDataReader.IsDBNull检查空值;否则,空值将会引发异常。

检查空值是非常关键的步骤,因为任何数据库类型都可以为空。

而这与.NET中的值类型不同,可以为空的值类型比如int,在这种上下文环境中是不被支持的。

DbDataReader也可以够获得关于它包含的数据的元信息—使用DbDataReader.GetSchemaTable()方法,这样做就能够知道列的名称、数据类型以及其他信息,比如列是否包含空值等。

与前面的其他类一样,也有专门用于SQLServer的数据阅读器类,这就是SqlDataReader,本书将使用该类。

该类继承DbDataReader,提供将数据读取为本地SQL类型的方法,这样就能够避免空类型的问题。

这些类型包含在System.Data.Sqltypes命名空间中,是可为空的;如SqlDouble和SqlInt32。

虽然这些类型也可以像标准的值类型那样进行操作,但它们实际上是引用类型。

4)DbDataAdapter

在ADO.NET中,最核心的数据访问类是DbDataAdapter类。

该类设计的目的只有一个即减少存储在数据集对象中的数据和数据库进行数据交换时的干扰,而它比前面介绍过的类型要复杂很多;与前面的类相同的是DbDataAdapter类也有很多派生类,它们被称为数据适配器类。

DbDataAdapter最关键的特性之一在于用于传输数据的命令对象被检测出来,因而可以针对需要对它们进行定制。

图2.4说明了DbDataAdapter类的工作原理,包含它包括的命令对象。

图2.4 DbDataAdapter类

数据适配器使用了4个命令对象,而每个命令对象分别存储在对应的属性中:

SelectCommand——用于查询数据、UpdateCommand——用于编辑数据、InsertCommand——用于添加数据和DeleteCommand——用于删除数据。

要使用适配器,并不是要全部用到这4个属性,比如可以只用适配器来查询数据。

.NET框架能够根据其他命令的值推断出命令的值,比如可以根据查询命令生成更新的插入和删除命令。

在数据适配器中,最常用的两个方法是DbDataAdapter.Update()和DbDataAdapter.Fill()。

Update()方法更新数据库中的数据;Fill()方法从数据库中获取数据。

这两个方法都可以用于数据集或者是单个数据表。

还可以用DbDataAdapter.FillSchema()获取架构数据。

SQLServer中的“DbDataAdapter”版本是SqlDbDataAdapter。

5)DataTable

DataTable为ADO.NET提供出来的第一个数据表示类。

这与数据访问类是不同,数据表示类没有特定用于专门数据库管理系统的子类,它们是独立在平台。

一般来说,若是需要的话,数据表示类是完全可以独立于数据库使用。

这个DataTable类是用于存储数据表。

DataTable对象存储的表不是一定要映射到数据库中的表,因为DataTable可能包含表中数据的一个子集,而这个子集可能只包含数据库表的部分列、部分行。

图2.5说明了DataTable与其他ADO.NET对象之间的关系。

图2.5 DataTable

使用数据适配器来获得完全填充的DataTable,含数据DataTable了,就能够访问行、列、约束以及它包含的其他信息。

这些信息可以通过命名属性来访问,包括Columns、Rows和Contraints等。

上面所说的3个属性都会返回一个集合类如“DataRowCollection、DataColumnCollection和ConstaintCollection”对象。

和其他集合类相同,这些类可以用在它们所包含的对象集合中进行导航,添加或删除项等。

DataTable类另外一个非常重要的方面就是如何处理和修改数据等。

比如,如果要删除DataTable中的某一行,数据适配器怎样才知道在数据库中删除对应的数据?

因为DataTable对象记录原始数据的修改,不是数据的当前状态。

从DataTable中删除一行并不是一下子删除这些数据,只是把数据标记为已删除。

不管何时都可以使用GetChanges()方法来获得对DataTable对象所做的列表进行修改。

再一些情况下可以使用AcceptChanges()方法接受已经做的修改,从而覆盖原来有的数据。

如可以在修改提交到数据库后这样做或者使用RejectChanges()撤销所有的修改或者当最终用户单击“取消”按钮时。

DataTable对象也表露了许多事件,可以在应用程序中定制这些事件,比如ColumnChanged和RowDeleted。

(1)DataColumn

DataColumn存储了在数据表中定义的列所需的所有的信息。

Columns属性包括一个DataColumnCollection,是个DataColumn对象集合。

DataColumn还包含与DBMD相匹配的属性,包含ColumnName、AllowDBNull、Dataype和DefaultValue。

(2)Constaint

Constaint对象用于包含表的所有元数据(这些数据不包含在DataColumn对象中)。

Constaint类作为更为具体类的基类,具体类包含UniqueConstaint—用于确保给定列或者是列组合的值,是唯一的ForeingKeyConstaint—用于去实现表之间的关系。

(3)DataRow

DataRow类是用于存储表中一行包含的数据。

通过DataTable.Rows属性能够访问到DataRowCollection对象,而后者存储了组成表数据的多个DataRow对象。

通过索引器来访问一行数据中的各列,索引器能够让你通过列名、版本和索引来访问列。

行是否被修改、删除或以其他方式改变,可以通过DataRowState的属性来访问,这个属性的值为DataRowState类型,是种包含所有可能行状态的枚举类型。

各个DataRow对象也会有与DataTable对应的方法,被用于接受、获得更改和拒绝。

比如可以推断出调用DataTable.AcceptChanges()将级联地对表的每行进行调用DataRowAcceptChanges()。

4)DataRelation

当处理多个DataTable对象的时候,通常需要搭建表数据之间的关系。

这个工作是由DataRelation类来完成。

它可以将多个DataRelation对象进行组合起来,构成了一个DataRelationCollection对象。

关系可用到DataRelation类的多个属性来进行定义包括(ChildTable、ChildKeyConstraint、ChildColumns、ParentTable和ParentKeyConstraint等)。

这些属性都是对相应的对象的进行引用,(如DataTable和DataColumn)对象。

关系名也存储在DataRelation.RelationName属性中。

关于DataRelation对象,它们封装了ADO.NET比较高级的方面。

5)DataSet

ADO.NET中最重要的类即DataSet。

从某种意义上来说,该类只是DataRelation对象和DataTable对象的集合如图2.6所示。

图2.6DataSet类

而DataSet的强大功能则主要体现在和其他对象的结合使用,包含用Windows应用程序的控件和在Web应用程序以及XML文档Web服务。

DataSet类还包含很多属性以及方法;而且其中很多和它组成部分的属性和方法相类似,如RejectChanges()和GetChanges()。

还有一些非常重要的属性,比如Tables“以DataTableCollection类的形式包含DataSet中的表集合、Relations包含一个DataRelationCollection类,其中的Relation对象定义了表之间的关系”。

数据表之间的关系以及应用在数据的约束中使得对DataSet的操作很麻烦。

若是两个表之间存在一对多的关系的话,则需要添加一行到其中一个表中,这可能要求另一个表中存在一行。

而如果这行可能不存在,在这个时候为避免错误,则需要添加这些行的顺序会非常重要,在此之前必须先添加位于关系“一”端的行。

我们也可以将DataSet.EnforceConstraints属性改为false,这样在执行编辑操作的时候将会忽略关系。

(1)XML与DataSet对象之间的关系

和ADO.NET的其他对象相同,设计DataSet对象时也应该考虑XML数据。

使用DataSet.GetXml()方法可以将数据集转换为XML文档;还可使用DataSet.GetXmlSchema()方法仅仅提取数据集中的架构其中包括数据集包含的所有表和其他对象的架构作为XML文档;也还可以使用序列化技术在XML文档和DataSet之间进行转换,由于DataSet类实现了IxmlSeria-lizable接口。

XML与DataSet对象之间的关系以及使用序列化在这两种表示格式之间可以进行转换,

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

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1