实验 3 C# 和 ASP.NET 4.5 一 实验目的 (1) 了解 C# 语言规范 (2) 掌握 C# 基础语法 流程控制和异常处理等 (3) 掌握创建 C# 类并应用于 ASP.NET 4.5 页面中的方法 (4) 掌握 ASP.NET 4.5 页面的调试方法 二 实验内容及要求 1. 转换输入的成绩到相应的等级要求如下 : (1) 页面浏览效果如图 3-1 所示 (2) 成绩输入使用 TextBox 控件 (3) 单击 Button 控件时输出相应的等级信息, 其中等级信息输出在一个 Label 控件上 2. 在 Web 窗体中输出九九乘法表浏览效果如图 3-2 所示 图 3-1 成绩转换页 浏览效果 图 3-2 九九乘法表 浏览效果 3. 输入一组以空格间隔的共 10 个以内的整数, 输出该组整数的降序排列要求如下 : (1) 页面浏览效果如图 3-3 所示 (2) 输入使用 TextBox 控件 (3) 单击 Button 控件时输出所有整数的降序排列 图 3-3 降序排列页 浏览效果 (4) 必须使用数组
实验 3 C# 和 ASP.NET 4.5 21 4. 计算两个数的商要求如下 : (1) 页面浏览效果如图 3-4 和图 3-5 所示 (2) 输入使用两个 TextBox 控件 (3) 单击 Button 控件时输出两个数的商 (4) 必须包含异常处理 图 3-4 计算商 浏览效果 (1) 图 3-5 计算商 浏览效果 (2) 5. 设计并实现一个用户信息类 UserInfo 要求如下 : (1) 包括两个属性 : 姓名 (Name) 和生日 (Birthday) (2) 包括一个用于判断用户是否达到规定年龄的 DecideAge() 方法 当年龄大于等于 18 岁时返回值, 您是成人了!, 否则返回值, 您还没长大呢? 6. 在 Web 窗体中应用 UserInfo 类页面浏览效果如图 3-6 和图 3-7 所示 图 3-6 UserInfo 类应用 效果 (1) 图 3-7 UserInfo 类应用 效果 (2) 7. 调试九九乘法表程序要求如下 : (1) 在 Response.Write(" "); 语句处设置断点 (2) 查看循环变量 i 和 j 的值 (3) 通过更改 j 变量人为地控制循环次数 三 实验步骤 1. 转换输入的成绩到相应的等级 (1) 设计 Web 窗体 在 ExSite 网站根文件夹下建立 Ex3 文件夹, 再在 Ex3 文件夹中添加一个 Web 窗体 Grade.aspx, 切换到 设计 视图 如图 3-8 所示, 向页面添加 TextBox Button 和 Label 控件各一个 图 3-8 设计界面 (1)
22 Web 程序设计 ASP.NET 上机实验指导 ( 第 2 版 ) (2) 设置各控件的属性 Web 窗体中各控件的属性设置如表 3-1 所示 表 3-1 各控件的属性设置表 控 件 属性名 属性值 说 明 TextBox ID txtinput 输入成绩 文本框的编程名称 Button ID btnsubmit 等级 按钮的编程名称 Text 等级 等级 按钮上显示的文本 Label ID lbldisplay 显示等级信息的 Label 控件编程名称 Text 空初始不显示任何内容 (3) 编写 Grade.aspx.cs 中的方法代码 按钮 btnsubmit 被单击后, 触发 Click 事件, 执行的方法代码如下 : protected void btnsubmit_click(object sender, EventArgs e) // 本行应自动生成 float fgrade = float.parse(txtinput.text); int igrade = (int)(fgrade / 10); switch (igrade) case 10: case 9: lbldisplay.text = " 优秀 "; case 8: lbldisplay.text = " 良好 "; case 7: lbldisplay.text = " 中等 "; case 6: lbldisplay.text = " 及格 "; default: lbldisplay.text = " 不及格 "; (4) 浏览 Grade.aspx 进行测试 2. 在 Web 窗体中输出九九乘法表 (1) 在 Ex3 文件夹中添加一个 Web 窗体 Multiplication.aspx, 切换到 设计 视图 在空白处双击, 编写 Web 窗体载入时触发 Page.Load 事件后执行的 Page_Load() 方法代码如下 : protected void Page_Load(object sender, EventArgs e) // 本行应自动生成
实验 3 C# 和 ASP.NET 4.5 23 for (int i = 1; i <= 9; i++) //i 变量控制行数 for (int j = 1; j <= i; j++) // 输出一行 // 输出一个乘法算式 Response.Write(i.ToString() + " " + j.tostring() + "=" +(i * j).tostring()); Response.Write(" "); // 输出两个空格 Response.Write("<br />"); // 输出换行 (2) 浏览 Multiplication.aspx 查看效果 3. 输入一组以空格间隔的共 10 个以内的整数, 输出该组整数的降序排列 (1) 设计 Web 窗体 在 Ex3 文件夹中添加一个 Web 窗体 ArrayDescending.aspx, 切换到 设计 视图 如图 3-9 所示, 向页面添加 TextBox 和 Button 控图 3-9 设计界面 (2) 件各一个 (2) 设置各控件的属性 Web 窗体中各控件的属性设置如表 3-2 所示 表 3-2 各控件的属性设置表 控 件 属性名 属性值 说 明 TextBox ID txtinput 输入一组整数 文本框的编程名称 Button ID btnsubmit 降序 按钮的编程名称 Text 降序 降序 按钮上显示的文本 (3) 编写 ArrayDescending.aspx.cs 中的方法代码 按钮 btnsubmit 被单击后, 触发 Click 事件, 执行的方法代码如下 : protected void btnsubmit_click(object sender, EventArgs e) // 本行应自动生成 // 获取文本框中输入的字符串, 并在最后添加一个空格 string sinput = txtinput.text.trim() + " "; // 引号中包含一个空格 //j 控制数组下标 ; 每个 ainput 数组元素存储一个整数 ;temp 存储一个整数字符串 int j = 0; int[] ainput = new int[10]; string temp = "0"; // 逐个获取 sinput 中每个字符 若不是空格, 则将该字符连接到 temp 中 ; // 否则, 将 temp 值转换为整数后存储到数组元素 for (int i = 0; i <= sinput.length - 1; i++) if (sinput.substring(i, 1)!= " ") // 引号中包含一个空格
24 Web 程序设计 ASP.NET 上机实验指导 ( 第 2 版 ) temp += sinput.substring(i, 1); else ainput[j] = int.parse(temp); j++; temp = "0"; Array.Sort(aInput); // 升序排列数组 Array.Reverse(aInput); // 反转数组顺序 foreach (int i in ainput) if (i!= 0) // 数组元素不为 0 Response.Write(i + " "); (4) 浏览 ArrayDescending.aspx 进行测试 4. 计算两个数的商 (1) 设计 Web 窗体 在 Ex3 文件夹中添加一个 Web 窗体 Division.aspx, 切换到 设计 视图 如图 3-10 所示, 向页面添加两个 TextBox 控件和一个 Button 控件 (2) 设置各控件的属性 Web 窗体中各控件的属性设置如表 3-3 所示 图 3-10 设计界面 (3) 表 3-3 各控件的属性设置表 控 件 属性名 属性值 说 明 TextBox ID txtdivsor 除数 文本框的编程名称 TextBox ID txtdividend 被除数 文本框的编程名称 Button ID btnsubmit 提交 按钮的编程名称 Text 提交 提交 按钮上显示的文本 (3) 编写 Division.aspx.cs 中的方法代码 按钮 btnsubmit 被单击后, 触发 Click 事件, 执行的方法代码如下 : protected void btnsubmit_click(object sender, EventArgs e) // 本行应自动生成 try float divsor = float.parse(txtdivsor.text); float dividend = float.parse(txtdividend.text);
实验 3 C# 和 ASP.NET 4.5 25 Response.Write(" 商为 :" + divsor / dividend); catch (Exception ee) Response.Write(" 请输入正确的数字!"); (4) 浏览 Division.aspx 进行测试 5. 设计并实现一个用户信息类 UserInfo 右击 ExSite 网站根文件夹下的 App_Code 文件夹, 选择 添加 类 命令, 输入项名称 UserInfo, 单击 确定 按钮建立 UserInfo.cs 文件 输入代码如下 : /// UserInfo 类包含 Name 和 Birthday 两个属性及一个 DecideAge() 方法 public class UserInfo //_Name 字段对应 Name 属性,_Birthday 字段对应 Birthday 属性 private string _Name; // 下划线前有一个空格, 下同 private DateTime _Birthday; /// 定义 Name 属性 public string Name get return _Name; set _Name = value; /// 定义 Birthday 属性 public DateTime Birthday get return _Birthday; set _Birthday = value; /// 定义构造函数 /// <param name="name"> 姓名 </param> /// <param name="birthday"> 生日 </param> public UserInfo(string name, DateTime birthday) this._name = name; this._birthday = birthday;
26 Web 程序设计 ASP.NET 上机实验指导 ( 第 2 版 ) /// DecideAge() 方法用于判断用户是否达到规定年龄 /// <returns> 当年龄大于等于 18 岁时返回值, 您是成人了!, 否则返回值, /// 您还没长大呢? </returns> public string DecideAge() if (DateTime.Now.Year - _Birthday.Year < 18) return this._name + ", 您还没长大呢?"; else return this._name + ", 您是成人了!"; 6. 在 Web 窗体中应用 UserInfo 类 (1) 设计 Web 窗体 在 Ex3 文件夹中添加一个 Web 窗体 UserInfoPage.aspx, 切换到 设计 视图 如图 3-11 所示, 向页面输入 姓名 : 和 生日 :, 添加两个 TextBox 控件和一个 Button 控件 (2) 设置各控件的属性 Web 窗体中各控件的属性设置如表 3-4 所示 图 3-11 设计界面 (4) 表 3-4 各控件的属性设置表 控 件 属性名 属性值 说 明 TextBox ID txtname 姓名 文本框的编程名称 TextBox ID txtbirthday 生日 文本框的编程名称 Button ID btnsubmit 提交 按钮的编程名称 Text 提交 提交 按钮上显示的文本 (3) 编写 UserInfoPage.aspx.cs 中的方法代码 按钮 btnsubmit 被单击后, 触发 Click 事件, 执行的方法代码如下 : protected void btnsubmit_click(object sender, EventArgs e) // 本行应自动生成 string name = txtname.text; string birthday = txtbirthday.text; // 建立 UserInfo 类的实例对象 userinfo,parseexact() 用于将字符串转换为 DateTime 对象 UserInfo userinfo = new UserInfo(name, DateTime.ParseExact(birthday, "yyyymmdd", null)); Response.Write(userInfo.DecideAge());
实验 3 C# 和 ASP.NET 4.5 27 (4) 浏览 UserInfoPage.aspx 进行测试 7. 调试九九乘法表程序 (1) 打开 Web.config 文件, 在 <system.web> 和 </system.web> 两个标记之间, 输入用于启用调试的配置代码如下 : <compilation debug="true" targetframework="4.5"/> (2) 打开 Multiplication.aspx.cs 文件, 右击 Response.Write(" "); 语句, 选择 断点 插入断点 命令在该语句处设置断点 (3) 按 F5 键启动调试, 呈现如图 3-12 所示的界面 图 3-12 调试界面 (4) 在图 3-12 的 局部变量 窗口中, 查看包括循环变量 i 和 j 在内的所有当前变量信息 (5) 在图 3-12 的 监视 窗口中, 输入 监视名称 j+1, 查看表达式 j+1 的结果 (6) 在图 3-12 的 即时 窗口中, 输入 j=4 并回车, 人为地改变 j 变量的值 (7) 按 F11 键逐语句地执行程序, 在 局部变量 和 监视 窗口中观察各变量和表达式的变化 (8) 当需要结束程序调试时, 按 Shift+F5 键停止调试 四 实验拓展 (1) 扩充成绩转换程序 要求增加对输入成绩的合法性判断 (2) 将九九乘法表改成如图 3-13 所示的浏览效果 (3) 完善实验内容 3 的程序, 要求能完成包含 0 和负数的排序 (4) 使用 ArrayList 类实现降序排列一组整数的功能 (5) 修改计算商的程序, 要求如下 : 1 将用于获取 除数 和 被除数 的变量的数据类型改为 int, 再浏览 Web 窗体进
28 Web 程序设计 ASP.NET 上机实验指导 ( 第 2 版 ) 行测试, 分析显示的结果 ; 2 增加系统异常信息的输出 图 3-13 实验拓展 (2) 浏览效果 (6) 改写 UserInfo 类, 要求如下 : 1 增加一个事件 ValidateBirthday 2 改写 DecideAge() 方法, 当输入的生日值大于当前日期或小于 1900-1-1 时触发事件 ValidateBirthday 3 设计页面并应用修改后的 UserInfo 类 (7) 调试实验内容 3 的程序, 写出 ainput 数组的变化过程