《ASP.NET Web程序设计 教学课件 ppt 作者 祁长兴_ chapter12》由会员分享,可在线阅读,更多相关《ASP.NET Web程序设计 教学课件 ppt 作者 祁长兴_ chapter12(55页珍藏版)》请在金锄头文库上搜索。
1、ASP.NET Web程序设计,12,综合案例:公众养老服务系统,第,章,本章内容,12.1 系统需求,12.2 Web系统设计,12.3 Web系统实现,12.4 习题,12.1 系统需求,系统要求使用面向对象建模方法,引入了用例的概念来描述用户需求。 需求阶段产生用例模型,用例模型是计算机工程人员从用户角度运用简单的图示描述的系统模型,同时它也是获取需求、规划和控制项目迭代过程的基本工具。,12.1 系统需求,公众养老服务网上预订系统设计必须达到以下技术指标: 信息的完整性 系统实用性 系统可扩展性 系统安全性,12.2 Web系统设计,本系统采用ASP.NET语言和 SQL Server
2、 2010 数据库来完成公众养老服务网上预订系统的设计与实现。其功能模块主要包括授权管理、服务机构信息管理、服务机构网上预订和用户查询时提供个性化推荐这四个模块。 12.2.1 系统实现功能模块设计 12.2.2 数据库ER设计 12.2.3 数据表设计 12.2.4 数据关系图,1. 授权管理,12.2.1 系统实现功能模块设计,2. 公众养老服务机构信息管理,12.2.1 系统实现功能模块设计,3. 公众养老服务机构网上预订,12.2.1 系统实现功能模块设计,4. 用户查询公众养老服务机构时系统提供的个性化推荐,12.2.1 系统实现功能模块设计,用户实体属性图,12.2.2 数据库ER
3、设计,服务机构实体属性图,12.2.2 数据库ER设计,评论实体联系图,12.2.2 数据库ER设计,用户预服务实体属性图,12.2.2 数据库ER设计,整体E-R图,12.2.2 数据库ER设计,1. 一般用户登记信息表(Manager),12.2.3 数据表设计,2. 机构信息登记表(Company),12.2.3 数据表设计,3. 用户评价信息表(Comment),12.2.3 数据表设计,4. 用户预订服务信息表(Booking),12.2.3 数据表设计,根据数据库设计表可以得到数据库关系图,12.2.4 数据关系图,12.3 Web系统实现,本系统主要通过以下几个模块的编码,从而实
4、现最终的效果:公共模块、用户登录模块、用户预订模块、评论模块、机构列表模块、服务机构注册等。 12.3.1 公共模块 12.3.2 系统登陆页面 12.3.3 用户进入系统页面 12.3.4 服务机构进入系统页面,1. 数据库连接和操作方法,12.3.1 公共模块,数据库连接公共类在App_Code文件夹下建立DB.cs类中建立连接字符串,如下面代码所示:,public static SqlConnection sqlconnection; public static readonly string cnstr = “Data Source=.;Initial Catalog=YangLaoD
5、B;Integrated Security=True“;,12.3.1 公共模块,打开数据库方法OpenConnection(),public static SqlConnection OpenConnection() try sqlconnection = new SqlConnection(cnstr); sqlconnection.Open(); return sqlconnection; catch (Exception ex) throw new Exception(ex.Message); ,12.3.1 公共模块,关闭数据库方法DisposeConnection(),public
6、 static void DisposeConnection(SqlConnection Conn) if (Conn != null) Conn.Close(); Conn.Dispose(); ,12.3.1 公共模块,执行SQL语句方法ExecuteSql(string strSQL) 如下 :,public static SqlDataReader getDataReader(string strSQL) SqlConnection conn = OpenConnection(); SqlDataReader dr = null; try SqlCommand comm = new S
7、qlCommand(strSQL, conn); dr = comm.ExecuteReader(); return dr; ,12.3.1 公共模块,返回指定SQL语句的sqlDataReader,具体实现如下 :,public static int ExecuteSql(string strSQL) SqlConnection conn = OpenConnection(); try SqlCommand comm = new SqlCommand(strSQL, conn); int val = comm.ExecuteNonQuery(); DisposeConnection(conn
8、); return val; catch (Exception e) DisposeConnection(conn); throw new Exception(e.Message); ,12.3.1 公共模块,catch (Exception ex) if (dr != null ,12.3.1 公共模块,返回指定SQL语句的DataTable ,具体实现如下 :,public static DataTable getDataTable(string strSQL) SqlConnection conn = OpenConnection(); try SqlCommand comm = new
9、 SqlCommand(strSQL, conn); SqlDataAdapter da = new SqlDataAdapter(comm); DataTable table = new DataTable(); da.Fill(table); DisposeConnection(conn); return table; ,12.3.1 公共模块,catch (Exception ex) DisposeConnection(conn); throw new Exception(ex.Message); ,12.3.1 公共模块,返回指定SQL语句的DataSet ,具体实现如下 :,publ
10、ic static DataSet getDataSet(string strSQL) DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(); SqlConnection conn = OpenConnection();,12.3.1 公共模块,try SqlCommand comm = new SqlCommand(strSQL, conn); comm.CommandType = CommandType.Text; da.SelectCommand = comm; da.Fill(ds); DisposeC
11、onnection(conn); return ds; catch (Exception e) DisposeConnection(conn); throw new Exception(e.Message); ,12.3.1 公共模块,查询数据库中是否存在该条记录,存在返回True,不存在返回False, 具体实现如下 :,public static bool isExists(string strSQL) SqlConnection conn = OpenConnection(); try SqlCommand comm = new SqlCommand(strSQL,conn); SqlD
12、ataReader dr = comm.ExecuteReader(); if (dr.HasRows) return true; DisposeConnection(conn); return false; ,12.3.1 公共模块,catch (Exception ex) DisposeConnection(conn); throw new Exception(ex.Message); ,12.3.1 公共模块,查询记录时获取记录总数,具体实现如下 :,public static int getRowCount(string tableNm) SqlConnection cn=OpenCo
13、nnection(); int intRowCount = 0; string str = “select count(*) from (“ + tableNm + “)“; SqlCommand cmd=new SqlCommand (str,cn); intRowCount = (int)cmd.ExecuteScalar(); DisposeConnection(cn); return intRowCount; ,12.3.1 公共模块,为DropDownList绑定数据 ,具体实现如下 :,public static void Bind_Dropdownlist(string sql,
14、DropDownList ddl,string value,string textvalue) ddl.DataSource = getDataTable(sql); ddl.DataTextField = textvalue; ddl.DataValueField = value; ddl.DataBind(); ,12.3.1 公共模块,为Reapeater绑定数据,具体实现如下 :,public static void Bind_Repeater(string sql, Repeater rpt,SqlConnection cn) SqlDataReader dr = getDataRe
15、ader(sql); rpt.DataSource = dr; rpt.DataBind(); dr.Close(); dr.Dispose(); ,2. 其它公共方法,12.3.1 公共模块,其它公共方法统一放在App_Code文件夹下的Common.cs类中。 过滤字符串的HTML标签,其主要作用是去除掉HTML代码中的HTML标记,如 ,等。 SHA1加密函数主要是为了实现用户登录密码的保护,通过加密措施,使得密码不被盗取。,12.3.2 系统登陆页面,为简单起见,登陆页面就设为本系统的首页,任何用户或者服务机构要进入系统都要通过登陆页面。 由于这部分还有注册信息,因此登陆页面也包含了用
16、户和服务机构的注册功能。,12.3.2 系统登陆页面,登陆页面需要两个文本框用来输入帐号和密码; 创建一个RadioButtonList控件用来选择用户或者服务机构; 新建两个Button控件分别用作“登陆”和“取消”; 最后再创建两个HTML 标签,利用它的 href 属性进行链接到“用户注册”和“服务机构注册”页面。,12.3.2 系统登陆页面,登陆页面运行效果,12.3.2 系统登陆页面,登陆和取消按钮ImageButton接受onclick事件; 按照选定的类型“用户”或者“服务机构”进行选择性登陆; 登陆密码使用MD5加密法与原始注册密码进行校对,以保证用户密码的安全性; 同时需要记录下用户登陆的次数。,12.3.2 系统登陆页面,用户注册界面设计比较简单,只需要几个文本框、按钮控件就可以实现,实现效果如图。,12.3.2 系统登陆页面,同样,也使用类似的方法创建服务机构注册界面设计,实现效果如下图 。,12