课程设计题目:酒店客房管理系统
学 院: 明德学院
专 业: 计算机科学与技术
班 级: 计科071
学 号: [1**********]0
设计人员: 王泽霖
指导教师: 冯建老师
目 录
一、可行性研究报告···································· 3
二、软件需求说明书···································· 6
三、数据库设计说明书·································· 11
四、概要说明书········································ 19
五、编码与测试········································ 20
六、结论········································ 43
一、可行性研究报告
1、编写目的:
酒店客房管理是一个至关重要的管理系统,它直接关系酒店客房的分配问题,随着计算机科学技术的飞速发展,计算机的应用在全球范围内日益普及,酒店客房管理由人工管转变为自动化,机器化。着重解决酒店客房管理问题,使酒店客房管理工作规范化,系统化,程序化,避免酒店客房管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改酒店客房情况,使人力与设备费用的减少,通常情况下,只需要一名管理员就可以快速操作系统,为了用户方便地对书目进行检索和查看。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能以为人们深刻认识,它以进入人类社会的各个领域并发挥着越来越重要的作用。
由计算机管理方式于传统的方式相比较,优势是显而易见的,首先,可以省去大量人工的费用,加速现代化管理的进程;其次,避免了人工管理出错,使酒店客房管理工作可以轻松进行。然后,可以充分发挥计算机在信息处理方面的优势,可以让繁琐
的工作由计算机处理。因此,开发一个酒店客房管理系统是很有必要的。
2、背景:
采用了C# 和SQL来实现该系统,该系统能够有效的帮助管理员高效的进行酒店套房管理,快速的实现房间的查询等操作。系统使用Visual Studio C#编程语言,采用SQL 2000作为数据库,保证了数据库的安全性和使用性,是现在开发设计中比较流行的开发方式。主要使用AOD.NET数据组件来对数据库进行连接。为了实现对数据库的访问,ADO .NET定义了两个核心组件:DataSet和.NET Framework数据提供程序,后者是一组包括Connection,Command,DataReader和DataAdapter对象在内的组件。
3、系统最终实现功能:
通常,酒店客房管理系统的主要功能包括以下几个方面。
(1) 用户信息管理:对酒店客房管理系统的使用员工进行管理,包括对员工的基本信息(如用户姓名、所属部门、用户类型等)进行检索、录入和修改。
(2) 客房类型管理:用户可自定义客房类型,并对其进行管理,包括对客房类型的基本信息(如类型名称、面积、床位、价格等)进行检索、录入和修改。
(3) 客房信息管理:用户对客房信息进行管理,包括对客房的基本信息(如客房号、客房类型、客房位置等)进行检索、录入和修改。
(4) 客房经营管理:实现对客房的订房和退房管理,包括对客房的业务信息(如客房号、入房时间、退房时间、金额等)进行检索、录入和修改。
(5) 客户信息查询:用户可对入住过酒店的客户信息进行查询,包括对客户的基本信息(如身份证号、客户姓名、联系电话)进行检索。
(6) 经营状况统计:根据酒店客房的业务记录,用户可选择不同的统计方式对营业额进行统计。
从功能描述的内容来看,本实例可以实现六大功能。我们根据这些功能,设计出系统的功能模块,
酒店客房管理系统功能模块示意图
4、流程图:
酒店系统前台的结构图如图所示。
酒店客房管理系统前台结构图
前台在考虑功能实现的同时,也考虑了操作的简洁和方便性,目的是让大多数客户能够轻松地享受电子商务给他们带来的便利。
二、软件需求说明书
1、编写目的:
编写这份软件需求说明书的目的是说明酒店客房管理系
统的需求。
2、背景:
说明:
(1)软件系统的名称:酒店客房管理系统。
(2)软件系统的背景:采用了C# 和SQL来实现该系统,
Visual Studio C#编程语言,采用SQL 2000作为数据库
3、任务概述:
目标:该图书管理系统开发的意图是简化借还书的步骤,该软件是采用用了C# 和SQL的综合构建而成的。
4、需求规定:
(1)对功能的规定:用列表的方式(即输入、处理、输出表的形式),逐项定量和定性地叙述对软件所提出的功能要求,说明输入什么量、经怎样的处理、得到什么输出。
(2)对性能的规定:能运行系统,性能稳定。
5、E-R图分析
整体E-R图:
酒店客房管理系统E-R图
6、UML建模:
系统的用例分析是UML建模的第一步。在前面,我们已经确定了酒店客房管理系统的各功能模块(用例),包括用户信息管理、客房类型管理、客房信息管理、客房经营管理、客户信息查询、经营状况统计等。其用例图如图所示。
酒店客房管理系统用例图
该用例图标记了酒店客房管理系统的所有用例,并且形象地描述了各用例与用户角色之间的关系。
在UML中,对系统的动态方面建模的五种图有:用例图、活动图、状态图、时序图和协作图。在设计阶段,我们需要使用状态图来描述类的对象的状态及其行为,显示对象的整个生命周期。在本系统中,有状态图的类有客房信息(RoomsInfo),该类的状态图如图所示。
状态图
另外,在多数情况下,为了描述用例的动态行为,我们还需要用到时序图。时序图可以单独使用,以可视化、详述、构造和文档化一个特定对象群体的动态信息,对一个实例的特定控制流进行建模。下面我们给出各个用例的时序图,以帮助我们接下来的设计工作。
订房管理的时序图,如图所示。
订房管理时序图
退房管理的时序图,如图所示。
退房管理时序图
到此,经过了需求分析,使用UML建模绘出了各用例的用例图、状态图、时序图之后,我们已经对酒店客房管理系统的具体功能
实现有了比较明确的认识。接下来,需要我们对系统进行框架设计和详细设计。
在进行构架设计时,我们将酒店客房管理系统设计视图中的类组织成一个标准的三级体系结构,如图所示。用户服务包(User Services)中的元素提供了表现信息和收集的可视化界面。业务服务包(Bussiness Services)中的元素负责维护、访问和修改数据。数据服务包(Data Services)中的元素为另两个包的元素搭桥,并包含了管理用户请求(为了执行业务上的任务)的所有类和其他元素,包括支配数据操纵策略的业务规则。
酒店客房管理系统的体系结构
三、数据库设计说明书
1、编写目的:
这份数据库设计说明书的目的是说明酒店客房管理系统的数据库的具体设计,预期的使用者是酒店客房管理员。该说明书详细描述了该系统中所用到的数据库,以及数据库中所创建的表和列名,说明每个表所确定的主键
2、背景:
采用的是Microsoft SQL 2000编写的数据库,SQL创建数据库比较简洁方便,连接C#的程序也比较便捷,能快速实现客房的退/订,查询等功能,待开发的数据库名称为JdgSys,使用此数据库的软件系统名称为酒店客房管理系统。
3、静态数据:
用户信息,具体操作为用户编号、用户姓名、密码等。 客户信息,具体操作为生份证号、姓名、联系电话等。 客房信息,具体操作为客房号、客房位置等。 以上均为静态数据,在一定时间内是不变的。
4、动态输入数据:
管理员操作中登记读者,新书入库,图书借还是随时可能发生变化的,都属于动态数据。
5、建表
数据库JdglSys包含以下7个表:用户信息表
(UsersInfo)、客户信息表(CustomersInfo)、客房类型表(RoomCategory)、客房信息表(RoomsInfo)、客房状态表(RoomStatus)、客房业务表(RoomOperation)、业务记录表(History)。
下面分别介绍这些表的结构。 (1) 用户信息表
用户信息表(UsersInfo)用来保存使用该系统的酒店员工的基本信息,表UsersInfo的结构如表所示。
用户信息表(UsersInfo)
(2) 客户信息表
客户信息表(CustomersInfo)用来保存在酒店订房的客户的基本信息,表CustomersInfo的结构如表所示。
客户信息表(CustomersInfo)
(3) 客房类型表
客房类型表(RoomCategory)用来保存酒店所有客房类型的基本信息,表RoomCategory的结构
客房类型表(RoomCategory)
(4) 客房信息表
客房信息表(RoomsInfo)用来保存酒店所有客房的相关信息,表RoomsInfo结构的如表所示。
客房信息表(RoomsInfo)
(5) 客房状态表
客房状态表(RoomStatus)用来保存客房使用情况的基本信息,表RoomStatus结构的如表所示。
客房状态表(RoomStatus)
(6) 客房业务表
客房业务表(RoomOperation)用来保存目前酒店正有客户入住的客房的相关信息,表RoomOperation的结构如表所示。
客房业务表(RoomOperation)
(7) 业务记录表
业务记录表(History)用来保存酒店里所有入住过客户的客房的业务信息,表History的结构如表所示。
业务记录表(History)
(1) 创建用户信息表(UsersInfo)的脚本文件如下: CREATE TABLE [dbo].[UsersInfo] ( [UserId] [int] NOT NULL ,
[Name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Password] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Gender] [int] NULL ,
[Email] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Address] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Telephone] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Department] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Type] [int] NULL ) ON [PRIMARY] (2) 创建客户信息表(CustomersInfo)的脚本文件如下: CREATE TABLE [dbo].[CustomersInfo] ( [CIdentityId] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[CName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[CPhone] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] (3) 创建客房类型表(RoomCategory)的脚本文件如下: CREATE TABLE [dbo].[RoomCategory] (
[RCategoryId] [int] IDENTITY (1, 1) NOT NULL , [Name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Area] [float] NULL ,
[BedNum] [int] NULL , [Price] [money] NULL ,
[AirCondition] [int] NULL , [TV] [int] NULL ) ON [PRIMARY]
(4) 创建客房信息表(RoomsInfo)的脚本文件如下: CREATE TABLE [dbo].[RoomsInfo] ( [RoomId] [int] NOT NULL , [RCategoryId] [int] NULL ,
[RPosition] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Description] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] (5) 创建作者信息表(Authors)的脚本文件如下:
CREATE TABLE [dbo].[Authors] (
[PKId] [int] IDENTITY (1, 1) NOT NULL ,
[Name] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY] (6) 创建客房业务表(RoomOperation)的脚本文件如下: CREATE TABLE [dbo].[RoomOperation] ( [RoomId] [int] NOT NULL , [BeginTime] [datetime] NULL ,
[CIdentityId] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Remarks] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] (7) 创建业务记录表(History)的脚本文件如下: CREATE TABLE [dbo].[History] (
[BeginTime] [datetime] NOT NULL , [EndTime] [datetime] NULL , [RoomId] [int] NOT NULL , [TotalPrice] [money] NULL ,
[CIdentityId] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[CName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[CPhone] [nvarchar] (50) COLLATE
Chinese_PRC_CI_AS NULL ,
[Remarks] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
四、概要说明书
1、总体设计:
(1)需求规定:说明对本系统的主要的输入输出项目、处
理的功能性能求。
(2)基本设计概念和处理流程:
说明本系统的基本设计概念和处理流程,尽量使用图表的形式。 (3)尚未解决的问题
说明在概要设计过程中尚未解决而设计者认为在系统完成之前必须解决的各个问题。
2、接口设计:
(1)外部接口:管理员通过管理服务器系统,与用户进
行交互,从而达到资源共享的目的,实现酒店客房管理系统。
(2)内部接口:程序内部需要共同的数据定义和描述,此
系统是智能办公化管理系统的一个子系统,必须和这个系统的其他子系统统一数据定义等,才能使该系统
性能达到最好,并且要尽量消除和其他子系统模块之间存在的数据冗余,才能使整个智能办公系统做到高效,方便。
3、运行设计:
(1)运行模块组合:
运行模块分成基本的三个模块,即是:输入模块,输出模块,处理模块等。这使得整个系统的维护容易,简单;系统的结构层次简单,易懂。 (2)运行控制:
本系统采用的控制方式主要有二种:顺序,选择。
五、编码与测试
数据库分析和设计工作完成后,我们将进行系统的页面设计。酒店客房管理系统的页面由四部分组成: ● 酒店客房管理系统首页的设计 ● 系统各功能实现页面的设计 ● 添加信息页面的设计 ● 编辑信息页面的设计
1、酒店客房管理系统首页设计及其代码分析:
当用户进入酒店管理系统首页后,首先需要进行身份验证,系统在验证通过后,将使用UserType变量记录其用户类型,并根据用户类型确定用户的使用权限。酒店管理系统的首页。 顾客进入系统首页后,首先需要在主显示区输入用户名及密码,然后单击“登录”按钮,系统验证通过后,会显示提示信息,如图所示。此时,用户可以直接单击功能列表中的链接来使用各项功能了。否则系统会显示提示信息,要求用户登录。
酒店客房管理系统首页
在首页的代码(Default.aspx)中,我们调用了Web用户控件(ListModule.ascx)来实现功能列表,以及Web用户控件(LogonModule.ascx)来实现员工登录功能。现给出Logon Module.ascx的主要代码及代码分析,如下所示:
//ModuleBase是继承System.Web.UI.UserControl的用户定义类 public class LogonModule : ModuleBase { „ „ private void Page_Load(object sender, System.EventArgs e) { //如果用户身份已验证成功
if(HttpContext.Current.User.Identity.IsAuthenticated) { //保存用户姓名及用户类型 String UserName=HttpContext.Current.User.Identity.Name; String Type=null; // UserType是在ModuleBase类中定义的变量,用于保存用户类型 if(UserType.ToString()==
{ //验证失败,显示提示信息 MismatchLabel.Visible=true; } } }
1、客房信息管理页面设计及其代码分析
客房信息管理页面,如图所示,该页所属模块是系统的主要部分,客房信息页面主要是负责所有客房信息的维护。用户可以根据客房号直接查找客房信息。如果需要添加新客房,可单击“添加新客房”链接,系统会显示客房添加页面;如果需要修改客房信息,可以在列表中单击该客房的“详单”链接,系统会显示客房修改页面;如果需要删除客房信息,单击“删除”链接即可。
客房信息管理页面
在客房信息管理页面的代码(RoomsMan.aspx)中我们调用了Web用户控件(RoomsMan Module.ascx)来实现客房信息显示功能。现给出RoomsManModule.ascx的主要代码及代码分析,如下所示:
public class RoomsManModule : ModuleBase { „ „
private void Page_Load(object sender, System.EventArgs e) { if(!IsPostBack) Show_RoomsList(); } //完成DataGrid控件dg_RoomsList的数据绑定,通过连接数据库,取出客房信息,在dg_RoomsList上显示 protected void Show_RoomsList() { //从文件Web.config中读取连接字符串 string sqldb = ConfigurationSettings.AppSettings[
//从dg_RoomsList中获取UserId值 mycommand.Parameters[
//实现“全部显示”按钮的单击事件 private void ShowAll_Click(object sender, System.EventArgs e) { Show_RoomsList(); } }
3、客房信息添加/修改页面设计及其代码分析
客房信息添加页面,如图所示,主要负责添加新的客房信息。其中客房类型信息从维护好的客房类型表中取得,在页面的Page_Load()事件中完成绑定。后台支持Submit Button_Click()事件,完成数据提交,当用户单击“添加”按钮后触发该事件。
客房信息添加页面
在客房信息添加页面的代码(RoomAdd.aspx)中,我们调用了Web用户控件(RoomAdd Module.ascx)来实现客房信息添加功能。现给出RoomAddModule.ascx的主要代码及代码分析,如下所示:
public class RoomAddModule : ModuleBase { „ „ private void Page_Load(object sender, System.EventArgs e) { //绑定客房类型信息下拉列表框 if(!IsPostBack) {
//从文件Web.config中读取连接字符串 string sqldb= ConfigurationSettings.AppSettings[
//执行ExecuteReader ()方法 SqlDataReader dr=mycommand.ExecuteReader (); if(dr.Read ()) args.IsValid =false;//客房号已存在 else args.IsValid =true;//客房号未登记 //关闭连接 Conn.Close(); } //客房类型是否已选定 public void NotNullValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args) { if(RCategoryNameList.SelectedIndex==0) args.IsValid =false;//客房类型未选 else args.IsValid =true;//客房类型已选 } //实现“提交”按钮的单击事件 private void SubmitButton_Click(object sender, System.EventArgs e) { if(Page.IsValid) { //从文件Web.config中读取连接字符串 string sqldb= ConfigurationSettings.AppSettings[
(
客房信息修改页面主要负责修改现有的客房信息,如图所示。与客房信息添加页面相比,界面上很相似。由于这是一个信息修改界面,系统必须提供原始数据记录,所以在Page_Load()事件里,我们添加了实现各个文本框初始数据绑定的程序代码。当用户单击“修改信息”按钮时,系统会触发Submit_Click()事件,
将涉及到对RoomsInfo表的操作。
客房信息修改页面
在客房信息修改页面的代码(RoomEdit.aspx)中,我们调用了Web用户控件(RoomEdit Module.ascx)来实现客房信息修改功能。
4、客房经营管理页面设计及其代码分析
客房经营管理页面,该页为酒店前台工作人员提供所有客房当前状态信息,页面采用DataList控件显示客房信息,因为DataList控件的优点是布局好控制,并且界面直观明了,另外,页面还采用了Repeater控件来显示选定客房的详细信息。
在页面中,用户可以根据客房类型或状态查询客房的使用信息,还可以单击列表中目标客房的客房号,列表下方便会显示该客房的详细信息。如果客房的空房项标识为“有”,则客房详细信息中的酒店业务项提供订房服务,如图所示。如果客房空房项标识为“无”,则客房详细信息中的酒店业务项提供退房服务,如图所示。
客房经营管理页面-订房业务
客房经营管理页面-退房业务
在客房经营页面的代码(RBussinessMan.aspx)中,我们调用了Web用户控件(RbussiMan Module.ascx)来实现客房信息显示功能。现给出RoomEditModule.ascx的主要代码及代码分析,如下所示:
public class RBussiModule : ModuleBase { „ „ private void Page_Load(object sender, System.EventArgs e) { if(!IsPostBack) { //绑定客房类型信息下拉列表框
„ „ //实现DataList控件dl_RoomsList显示客房信息 Show_RoomsList(); } } //实现DataList控件dl_RoomsList显示客房信息 protected void Show_RoomsList() { if(dl_RoomsList.SelectedIndex>-1){ dl_RoomsList.SelectedIndex=-1; } //从文件Web.config中读取连接字符串 string sqldb= ConfigurationSettings.AppSettings[
sender, System.EventArgs e) { int RoomId=int.Parse(dl_RoomsList.DataKeys[dl_RoomsList.SelectedIndex].ToString()); //从文件Web.config中读取连接字符串 string sqldb= ConfigurationSettings.AppSettings[
System.EventArgs e) { if(dl_RoomsList.SelectedIndex>-1) dl_RoomsList.SelectedIndex=-1; //从文件Web.config中读取连接字符串 string sqldb = ConfigurationSettings.AppSettings[
} }
5、订房/退房管理页面设计及其代码分析
订房管理页面,如图所示,主要帮助用户完成订房操作。当用户在客房经营管理页面中单击目标客房的“订房”链接时,系统便会显示该页面。当用户填写完订房信息后,单击“订单”按钮,系统则会触发后台支持的Order_Click()事件,完成数据提交。
订房管理页面
在订房管理页面(RoomOrder.aspx)的代码中,我们调用了Web用户控件(RoomOrder Module.ascx)来实现订房功能。现给出RoomOrderModule.ascx的主要代码及代码分析,如下所示:
public class RoomOrderModule : ModuleBase { „ „ private void Page_Load(object sender, System.EventArgs e) { if(!IsPostBack){ RoomIdLabel.Text=Request.QueryString[
ing(); NowTimeLabel.Text=DateTime.Now.ToString(); } } //实现“订房”功能按钮 private void Order_Click(object sender, System.EventArgs e) { if(Page.IsValid) { //从文件Web.config中读取连接字符串 string sqldb= ConfigurationSettings.AppSettings[
mycommand.Parameters [
退房管理页面主要负责用户完成退房操作,如图所示。当用户在客房经营管理页面中单击目标客房的“退房”链接时,系统便会显示该页面。与订房管理页面相比,界面上较为相似,但该页面的各项数据是不可编辑的,系统必须提供原始数据记录,在Page_Load()事件里,我们添加了实现各个文本框初始数据绑定的程序代码。当用户单击“退房”按钮时,系统会触发CheckOut_Click()事件,将涉及到对History表的操作,同时,页面会显示该客房的使用金额。
退房管理页面
在退房管理页面的代码(RoomCheckOut.aspx)中,我们调用了Web用户控件(Room CheckOutModule.ascx)来实现退房功能。
6、经营状况统计页面设计及其代码分析
经营状况统计页面,如图所示,该页的功能是提供本酒店的业绩统计。在页面中,用户可以通过日期进行统计,其中的日期条件我们初始设为从2000年1月1日到2010年12月31日,在向数据库提交时,我们把年、月、日两组六个DropDownList控件提交上来的值结合为两个合法的数据库DateTime类型。用户还可进一步按照客房类型对营业额进行统计,方便查看各类客房的收入情况。客房类型DropDownList控件在Page_Load()事件中进行数据绑定。
当用户单击“开始统计”按钮时,系统会触发Calculate_Click
()事件,并将统计出的营业额显示在页面中。
经营状况统计页面
在客房经营页面(TurnoverStat.aspx)的代码中,我们调用了Web用户控件(TurnOverStat Module.ascx)来实现客房信息显示功能。现给出TurnOverStatModule.ascx的主要代码及代码分析,如下所示:
public class TurnOverStatModule : ModuleBase { „ „ private void Page_Load(object sender, System.EventArgs e) { if(!IsPostBack) { //绑定客房类型信息下拉列表框 „ „ //绑定DataGrid控件dg_TurnOverList的数据 Show_TurnOverList(); } } //绑定DataList控件dg_TurnOverList的数据 protected void Show_TurnOverList() { //从文件Web.config中读取连接字符串 string sqldb = ConfigurationSettings.AppSettings[
//定义sql string selsql=
'
7、调试
经过上面各节的工作后,我们基本上完成了一个酒店客房管理系统的开发。将工程中的Default.aspx设为起始页,然后编译执行工程,系统会显示酒店客房管理系统的首页,如图所示。
酒店客房管理首页
输入用户名和密码,单击“确认”按钮,当身份验证成功后就可以使用功能列表中的功能了。如果需要对员工信息进行维护,我们可以单击“员工信息管理”链接,进入员工信息管理页面,如图所示。在页面中,我们可以通过员工编号查询员工信息,单击“详单”链接,进入员工信息修改页面,对员工信息进行修改;如果要添加新员工,我们可以单击列表下方的“添加新员工”链接,在出现的添加新员工页面中添加新员工信息。
员工信息管理页面
在维护客房信息之前,我们必须预先维护好客房类型信息。在客房类型管理页面中,我们添加了五种客房类型信息,如图所示。
客房类型管理页面
六、结 论
此次课程设计是我们即将从大学毕业生走向社会重要的一步。从最初的选题,开题到设计、编写代码直到完成设计。其间,查找资料,老师指导,与同学交流,反复修改,每一个过程都是对自己能力的一次检验和充实,虽然它还有诸多需要完善的地方,但是拿着这件设计,我仍然有止不住的兴奋。
通过这次设计,我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高。从方案形成到准备图形再到买
数据库、到代码的调试„„每一个小小的步骤,我都得到了很好的锻炼。我学会了怎样有效的收集整合资料;我学会了怎样耐心的查找错误;我学会了怎样虚心地寻求帮助;我学会了„„我也明白了,很多书本上的东西光靠趴在书本上学是学不到其中的精髓的,我们必须亲自去试着实践了,亲自去经历失败了才能对它们真正的掌握。理论必须联系实际,而实践试检验真理的唯一标准,我真正的懂得了这句话的真谛。在我以后的工作和生活中,我从此可以汲取很多经验,凡事都要自己去动下手,去实践一下,遇到困难,永远不要丧失一颗胜利的心,有耐心,有信心,有细心,有恒心,有虚心,只有这样,我才会在逆境中不断前进。