ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:114.81KB ,
资源ID:3310057      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3310057.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ASP实验五简单聊天室设计课案.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ASP实验五简单聊天室设计课案.docx

1、ASP实验五简单聊天室设计课案ASP.NET程序设计实 验 报 告 学院: 临沂大学 专业: 软件工程 报告人: 学号: 班级: 实验五 简单聊天室设计一、目的与要求1、掌握程序开发流程。2、了解Web应用程序的逻辑结构。3、掌握三层架构二、实验仪器Windows操作系统,Microsoft Visual Studio .NET 2010。三、实验内容1. 设计与实现一个简易聊天室。四、实验过程及结果(1) 设计数据库首先,多用户聊天室具有用户表User,其字段如表20.1所示。 User(用户)表字段名数据类型备注UserNamevarchar(50) not null用户名Password

2、varchar(50)not_null密码记录发言信息的表Message的字段如表20.2所示。 Message(发言信息)表字段名数据类型备注UserNamevarchar(50) not null发言者CreateTimevarchar(50) not null发言时间ContentText发言全文Colorvarchar(50) not null文字颜色Emotionvarchar(50) not null用户表情其中,color属性的取值可能为red、blue、green,它们能够直接赋值给,而不是简单的存储汉字,这样可以方便显示。本例中,emotion存储的是文字信息,如微笑地、难过

3、地等。读者可以很容易地将其转变为图片信息,实现方式是首先设计一些表情图片,然后将其图片名存储在emotion属性中,在显示时根据其值构造标签即可。(2) 实现数据库下面给出数据库实现的SQL命令,也可以通过SQL Server企业管理器创建: (1)创建User表CREATE TABLE dbo.User ( UserName varchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL , Password varchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON PRIMARY(2)创建Message表:CR

4、EATE TABLE dbo.Message ( UserName varchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL , CreateTime varchar (50) COLLATE Chinese_PRC_CI_AS NULL , Content text COLLATE Chinese_PRC_CI_AS NULL , Color varchar (50) COLLATE Chinese_PRC_CI_AS NULL , Emotion varchar (50) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIM

5、ARY TEXTIMAGE_ON PRIMARY3 数据访问层数据访问层完成所有与数据库交互的工作,本系统只包括一个类Database。这个类的功能是向数据库提交SQL语句,并返回相应的操作结果。 (1) 配置数据库连接本例中,在Web.config文件中指定了数据库连接字符串配置信息,在Web.config文件中添加如下代码:1. 2. 6. 用户需要根据自己的配置,修改value中各个连接属性的值。(2) Database类成员一览把Database类放在MyChatRoom.DataAcceessLayer空间下,其类图如图20.5所示。图20.5 数据库类Database的类图成员说明

6、如表20.3所示表20.3 Database类的成员说明属性 / 方法功能说明 Connection保护变量,数据库连接SqlConnection对象 ConnectionString保护变量,数据库连接串 Open连接数据库 Close关闭数据库连接 Dispose释放数据库连接资源 ExecuteSQL执行一个非查询(SELECT)类型的SQL命令 GetDataRow根据输入SQL命令,获取一个DataRow对象 GetDataSet根据输入SQL命令,获取一个DataSet对象(3) 实现Database类下面分别介绍Database类中各个方法的实现。1构造函数构造函数的功能为,读取

7、配置文件Web.config中的连接字符串,并赋予ConnectionString属性,实现如下:1. / 构造函数2. public Database()3. 4. ConnectionString = ConfigurationSettings.AppSettingsDBConnectionString;5. 这里使用ConfigurationSettings类的的AppSettings静态属性,获取Web.config中使用元素的配置信息。ConfigurationSettings类提供配置文件的访问信息。2析构函数构造函数的功能为,关闭数据库连接,并释放连接数据库所使用的资源。实现如下

8、:1. / 析构函数,关闭连接,并释放资源2. Database()3. 4. try5. 6. if (Connection != null)7. Connection.Close();8. 9. catch10. try11. 12. Dispose();13. 14. catch15. 代码49行关闭连接,1014行使用下面介绍的Dispose方法,释放资源。3Dispose方法Database类继承了IDisposal接口,后者定义了释放资源的Dispose方法。在Database中,需要实现这个方法,以释放连接数据库所占用的系统资源(如内存等)。具体地,将使用Connection属性

9、的Dispose方法,来释放这些资源,实现如下:1. / 公有方法,释放资源。2. public void Dispose() 3. 4. / 确保连接被关闭5. if (Connection != null) 6. 7. Connection.Dispose();8. Connection = null;9. 10. 4Open方法Open方法根据ConnectionString属性,创建新的数据库连接对象,并赋予Connection属性。1. / 保护方法,打开数据库连接。2. protected void Open() 3. 4. if (Connection = null)5. 6.

10、Connection = new SqlConnection(ConnectionString);7. 8. if (Connection.State.Equals(ConnectionState.Closed)9. 10. Connection.Open();11. 12. 代码判断是否已经建立了连接,如果没有建立,则创建新的连接,并将其打开。5Close方法Close方法关闭数据库连接。1. / 公有方法,关闭数据库连接。2. public void Close() 3. 4. if (Connection != null)5. Connection.Close();6. 6Execute

11、SQL方法ExecuteSQL方法执行非查询(即非SELECT)SQL命令,并返回执行SQL所影响的数据记录数目。1. / 公有方法,执行Sql语句。2. / Sql语句3. / 对Update、Insert、Delete为影响到的行数,其他情况为-14. public int ExecuteSQL(String SqlString)5. 6. int count = -1;7. Open();8. try9. 10. SqlCommand cmd = new SqlCommand(SqlString,Connection);11. count = cmd.ExecuteNonQuery();

12、12. 13. catch14. 15. count = -1;16. 17. finally18. 19. Close();20. 21. return count;22. 第7行打开数据库连接;第820行使用try-catch-finally语句,利用ExecuteNonQuery方法来执行SQL命令。第21行返回执行SQL影响的记录数。7GetDataSet方法GetDataSet方法接受一个SQL查询命令(SELECT语句),然后返回查询得到的数据集DataSet。1. / 公有方法,获取数据,返回一个DataSet。2. / Sql语句3. / DataSet4. public Da

13、taSet GetDataSet(String SqlString)5. 6. Open();7. SqlDataAdapter adapter = new SqlDataAdapter(SqlString,Connection);8. DataSet dataset = new DataSet();9. adapter.Fill(dataset);10. Close();11. return dataset;12. 第6行打开数据库连接;第79行使用SqlDataAdapter对象得到查询结果,并利用其Fill方法将查询结果放入DataSet中;第10行关闭数据库连接;第11行返回查询结果集

14、。8GetDataRow方法GetDataRow方法接收一个SQL查询命令(SELECT语句),然后返回查询得到的一行数据对象DataRow,很明显,这个方法适合于结果中至多只包含一个记录的查询,例如根据主键查询数据等。1. / 公有方法,获取数据,返回一个DataRow。2. / Sql语句3. / DataRow4. public DataRow GetDataRow(String SqlString)5. 6. DataSet dataset = GetDataSet(SqlString);7. dataset.CaseSensitive = false;8. if (dataset.T

15、ables0.Rows.Count0)9. 10. return dataset.Tables0.Rows0;11. 12. else13. 14. return null;15. 16. 第6行利用前面介绍的GetDataSet方法,获取查询结果数据集;第815行试图取出结果集中第一个表中的第一行数据,并返回;如果数据集中不存在任何数据,则返回空(null)。4 业务逻辑层业务逻辑层完成聊天室的功能,具体包括用户和信息管理,分别使用User和Message类来实现,下面对其一一介绍。1 用户类User1User类的功能用户类模拟了一个使用聊天室的用户,位于MyCharRoom.Bussine

16、ssLogicLayer空间中,其类图如图所示。注意:User类的实现将使用到Database类的方法,因此,在实现User类之前,不要忘记引入数据访问层所在的空间“MyCharRoom.DataAccessLayer”。图20.6 User类的类图成员说明如表20.4所示:表20.4 User类的成员说明属性 / 方法功能说明 UserName字符串,用户名 Password字符串,用户密码 Exist布尔型,指示用户是否存在 Add将当前用户添加到数据库中 LoadData根据用户名,得到用户的详细信息数据2LoadData方法LoadData方法根据用户名参数,查询数据库,并获取该用户的

17、详细信息。1. / 根据参数userName,获取用户详细信息2. / 用户名3. public void LoadData(string userName)4. 5. Database db=new Database(); /实例化一个Database类6. 7. string sql=Select * from User where UserName = +userName+;8. DataRow dr=db.GetDataRow(sql); /利用Database类的GetDataRow方法查询数据9. 10. /根据查询得到的数据,对成员赋值11. if(dr!=null)12. 13

18、. this._userName=drUserName.ToString();14. this._password=drPassword.ToString();15. this._exist=true;16. 17. else18. this._exist=false;19. 第5行得到一个Database对象db;第78行构造了查询语句,形如:Select * from User Where UserName = ZhangSan然后,利用db的GetDataRow方法查询数据;第1018行把查询到的数据赋予User类的各个属性,并标识_exist属性为true;如果没有查询到任何数据,则_

19、exist属性为false。注意:在构造查询语句时,需要在表名User上添加中括号,这是因为,SQLServer中包含名为User的系统表,为了与系统表加以区分,需要使用中括号。3Add方法Add方法向数据库添加一个用户信息。1. / 向数据库添加一个用户2. / 用户名3. / 密码4. public void Add(string userName,string password)5. 6. Database db=new Database(); /实例化一个Database类7. 8. string sql=Insert Into User Values( 9. +userName+,1

20、0. +password+);11. 12. db.ExecuteSQL(sql); /利用Database类的GetDataRow方法查询用户数据13. 第6行得到一个Database对象db;第8行构造了INSERT语句,形如:Insert Into User Values(UserName,Password)然后,利用db的ExecuteSQL方法执行命令。2 消息类Message1Message类的功能Message类用户管理用户的发言信息,位于MyCharRoom.BussinessLogicLayer空间中,其类图如图20.7所示。图20.7 User类的类图成员说明如表20.5所

21、示。表20.5 User类的成员说明属性 / 方法功能说明 Add将一条留言信息,添加到数据库中 LoadTop10静态方法,查询数据库中最近的10条留言,并用DataSet返回2实现Add方法Add方法向数据库添加一个留言信息,具体内容包括留言用户名、时间、内容、字体颜色,以及表情信息。1. / 向数据库中添加一条留言信息2. / 用户名3. / 留言时间4. / 留言内容5. / 颜色6. / 表情7. public void Add(string userName,string createTime,string content,string color,string emotion)8

22、. 9. Database db=new Database(); /实例化一个Database类10. 11. string sql=Insert Into Message Values( 12. +userName+,13. +createTime+,14. +content+,15. +color+,16. +emotion+);17. 18. db.ExecuteSQL(sql); /利用Database类的GetDataRow方法查询用户数据19. 第6行得到一个Database对象db;第8行构造了INSERT语句,形如:Insert Into Message Values(User

23、Name,9:12:23,留言信息,red,微笑着)然后,利用db的ExecuteSQL方法执行命令。3LoadTop10方法LoadTop10方法获取聊天室用户最近发表的10条发言,并用一个DataSet数据集返回。1. / 获取事件最近的10条发言2. public static DataSet LoadTop10()3. 4. Database db=new Database(); /实例化一个Database类5. 6. string sql=Select top 10 * from Message order by CreateTime desc;7. DataSet ds=db.G

24、etDataSet(sql);/用Database类的GetDataSet查询最近的10条发言8. 9. return ds;10. 第4行得到一个Database对象db;第6行构造了INSERT语句,形如:Select top 10 * from Message Order By CreateTime Desc然后,利用db的GetDataSet方法得到查询结果数据集,并返回。5 页面显示层页面显示层是最终呈现在用户浏览器上的系统功能,主要包括对逻辑层的调用,动态显示数据,以及美工两部分工作。此处着重介绍前者。本例中,所包含的页面有:(1)用户登录页面Login.aspx。(2)用户发言页

25、面Speak.aspx。(3)浏览信息页面ShowMessage.aspx。为了便于使用,需要使用一个页面将(2)(3)放在一起,即用户在同一个页面上发言并查看信息,使用框架可以实现这一点,合并的主页面为Main.aspx。下面一一介绍这几个页面的实现。注意:在实现页面之前,需要引入业务逻辑层空间“MyCharRoom.BussinessLogicLayer”。1 用户登录Login.aspx用户登录页面Login.aspx位于MyCharRoom.WebLayer空间中,主要功能为:(1)当用户首次使用系统时,将自动将其信息注册到数据库中;(2)用户再次登录时,系统会检查其输入的用户名和密码是否合法,如不合法,则给出提示,并使用户重新登录。如果合法,则进入聊天室主页面Main.aspx。Login.aspx的页面布局如图所示。图20.8 Login.aspx的页面布局主要控件的属性为:1. 2. 3. 4. 5. 当用户单击“登录”按钮时,其单击事件完成

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

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