asp.net代码练习 work075

3.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>{$RealName}的详细资料</title>
</head>
<body>
    <table border="1">
        <tr>
            <td>编号</td>
            <td>{$UserID}</td>
        </tr>
        <tr>
            <td>用户名</td>
            <td>{$UserName}</td>
        </tr>
        <tr>
            <td>真实姓名</td>
            <td>{$RealName}</td>
        </tr>
        <tr>
            <td>年龄</td>
            <td>{$Age}</td>
        </tr>
        <tr>
            <td>性别</td>
            <td>{$Sex}</td>
        </tr>
        <tr>
            <td>手机</td>
            <td>{$Mobile}</td>
        </tr>
        <tr>
            <td>电子邮件</td>
            <td>{$Email}</td>
        </tr>
    </table>
</body>
</html>

2.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="2.aspx.cs" Inherits="work076._2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>查看用户详情</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table border="1">
            <tr>
                <td>编号</td>
                <td>
                    <asp:Label ID="lblUserID" runat="server" Text=""></asp:Label>
                </td>
            </tr>
            <tr>
                <td>用户名</td>
                <td>
                    <asp:Label ID="lblUserName" runat="server" Text=""></asp:Label>
                </td>
            </tr>
            <tr>
                <td>真实姓名</td>
                <td>
                    <asp:Label ID="lblRealName" runat="server" Text=""></asp:Label>
                </td>
            </tr>
            <tr>
                <td>年龄</td>
                <td>
                    <asp:Label ID="lblAge" runat="server" Text=""></asp:Label>
                </td>
            </tr>
            <tr>
                <td>性别</td>
                <td>
                    <asp:Label ID="lblSex" runat="server" Text=""></asp:Label>
                </td>
            </tr>
            <tr>
                <td>手机</td>
                <td>
                    <asp:Label ID="lblMobile" runat="server" Text=""></asp:Label>
                </td>
            </tr>
            <tr>
                <td>电子邮件</td>
                <td>
                    <asp:Label ID="lblEmail" runat="server" Text=""></asp:Label>
                </td>
            </tr>
        </table>
    </div>
    </form>
</body>
</html>

2.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace work076
{
    public partial class _2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string userId = Request.QueryString["id"];

                if (!string.IsNullOrEmpty(userId))
                {
                    System.Data.SqlClient.SqlConnectionStringBuilder bu = new System.Data.SqlClient.SqlConnectionStringBuilder();
                    bu.DataSource = "(local)";
                    bu.InitialCatalog = "test";
                    bu.UserID = "sa";
                    bu.Password = "123456";

                    string conString = bu.ConnectionString;
                    SqlDbHelper helper = new SqlDbHelper(conString);

                    string sql = "select * from UserInfo where user_id=@uid";
                    System.Data.SqlClient.SqlParameter[] parameters = new System.Data.SqlClient.SqlParameter[1];
                    parameters[0] = new System.Data.SqlClient.SqlParameter("@uid", userId);
                    System.Data.SqlClient.SqlDataReader reader = helper.ExecuteReader(sql, System.Data.CommandType.Text, parameters);

                    if (reader.Read())
                    {
                        lblUserID.Text = userId;
                        lblUserName.Text = reader["user_name"].ToString();
                        lblRealName.Text = reader["real_name"].ToString();
                        lblAge.Text = reader["age"].ToString();
                        lblSex.Text = bool.Parse(reader["sex"].ToString()) ? "男" : "女";
                        lblMobile.Text = reader["mobile"].ToString();
                        lblEmail.Text = reader["email"].ToString();
                        reader.Close();
                    }
                    else
                    {
                        lblUserName.Text = "未找到相关数据";
                    }
                }
                else
                {
                    lblUserName.Text = "参数错误";
                }
            }
        }
    }
}

1.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="1.aspx.cs" Inherits="work076._1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>生成静态页面的示例</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnPageIndexChanging="GridView1_PageIndexChanging">
            <Columns>
                <asp:BoundField DataField="user_id" HeaderText="编号"/>
                <asp:BoundField DataField="user_name" HeaderText="用户名"/>
                <asp:BoundField DataField="real_name" HeaderText="真实姓名"/>
                <asp:BoundField DataField="age" HeaderText="年龄"/>
                <asp:BoundField DataField="sex" HeaderText="性别"/>
                <asp:BoundField DataField="mobile" HeaderText="手机"/>
                <asp:BoundField DataField="email" HeaderText="邮件"/>
                <asp:HyperLinkField DataNavigateUrlFields="user_id" DataNavigateUrlFormatString="3-{0}.html" DataTextField="real_name" HeaderText="查看" />
            </Columns>
            <EmptyDataTemplate>
                提示:当前没有任何记录
            </EmptyDataTemplate>
        </asp:GridView>
        <asp:Label ID="lblStatus" runat="server" Text=""></asp:Label>
        <br />
        <asp:Button ID="Button1" runat="server" Text="模板替换法" OnClick="Button1_Click" />
        <asp:Button ID="Button2" runat="server" Text="直接输出法" OnClick="Button2_Click" />
    </div>
    </form>
</body>
</html>

1.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace work076
{
    public partial class _1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            BindGridView(0);
        }

        private void BindGridView(int pageIndex)
        {
            System.Data.SqlClient.SqlConnectionStringBuilder bu = new System.Data.SqlClient.SqlConnectionStringBuilder();
            bu.DataSource = "(local)";
            bu.InitialCatalog = "test";
            bu.UserID = "sa";
            bu.Password = "123456";
            string conString = bu.ConnectionString;

            SqlDbHelper helper = new SqlDbHelper(conString);
            string sql = "select * from userinfo";
            System.Data.DataTable dt = helper.ExecuteDataTable(sql);

            GridView1.AllowPaging = true;
            GridView1.PageSize = 3;

            GridView1.DataSource = dt;
            GridView1.PageIndex = pageIndex;
            GridView1.DataBind();

        }

        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            BindGridView(e.NewPageIndex);
        }

        /// <summary>
        /// 模板替换法
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button1_Click(object sender, EventArgs e)
        {
            string templatePath = Server.MapPath("~/3.html");
            if (System.IO.File.Exists(templatePath))
            {
                System.IO.StreamReader reader = new System.IO.StreamReader(templatePath, System.Text.Encoding.UTF8);
                string templateValue = reader.ReadToEnd();
                reader.Close();

                System.Data.SqlClient.SqlConnectionStringBuilder bu = new System.Data.SqlClient.SqlConnectionStringBuilder();
                bu.DataSource = "(local)";
                bu.InitialCatalog = "test";
                bu.UserID = "sa";
                bu.Password = "123456";
                string conString = bu.ConnectionString;

                SqlDbHelper helper = new SqlDbHelper(conString);
                string sql = "select * from userinfo";
                System.Data.DataTable dt = helper.ExecuteDataTable(sql);

                foreach (System.Data.DataRow row in dt.Rows)
                {
                    System.Text.StringBuilder result = new System.Text.StringBuilder(templateValue);
                    result = result.Replace("{$UserID}", row["user_id"].ToString());
                    result = result.Replace("{$UserName}", row["user_name"].ToString());
                    result = result.Replace("{$RealName}", row["real_name"].ToString());
                    result = result.Replace("{$Age}", row["age"].ToString());
                    result = result.Replace("{$Sex}", row["sex"].ToString());
                    result = result.Replace("{$Mobile}", row["mobile"].ToString());
                    result = result.Replace("{$Email}", row["email"].ToString());

                    string userId = row["user_id"].ToString();

                    string savePath = Server.MapPath("~/3-" + userId + ".html");
                    System.IO.StreamWriter writer = new System.IO.StreamWriter(savePath, false, System.Text.Encoding.UTF8);
                    writer.Write(result.ToString());
                    writer.Close();
                }

                lblStatus.Text = "静态页面生成成功!";
            }
        }

        /// <summary>
        /// 直接输出法
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button2_Click(object sender, EventArgs e)
        {
            System.Data.SqlClient.SqlConnectionStringBuilder bu = new System.Data.SqlClient.SqlConnectionStringBuilder();
            bu.DataSource = "(local)";
            bu.InitialCatalog = "test";
            bu.UserID = "sa";
            bu.Password = "123456";
            string conString = bu.ConnectionString;

            SqlDbHelper helper = new SqlDbHelper(conString);
            string sql = "select user_id from userinfo";
            System.Data.SqlClient.SqlDataReader reader = helper.ExecuteReader(sql);

            string url = "http://localhost:51615/2.aspx?id=";
            string userId = string.Empty;

            System.Net.HttpWebRequest request = null;
            System.Net.HttpWebResponse response = null;
            System.IO.Stream stream = null;
            System.IO.StreamReader streamReader = null;

            while (reader.Read())
            {
                userId = reader[0].ToString();
                request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(url + userId);
                response = (System.Net.HttpWebResponse)request.GetResponse();
                stream = response.GetResponseStream();
                streamReader = new System.IO.StreamReader(stream);

                string result = streamReader.ReadToEnd();
                streamReader.Close();
                response.Close();

                string savePath = Server.MapPath("~/3-" + userId + ".html");
                System.IO.StreamWriter writer = new System.IO.StreamWriter(savePath, false, System.Text.Encoding.UTF8);
                writer.Write(result);
                writer.Close();
            }

            reader.Close();
            lblStatus.Text = "所有静态页面生成成功";
        }
    }
}

sql

create database test;

create table UserInfo(
	user_id int identity(1,1) not null,
	user_name varchar(20) not null unique,
	real_name nvarchar(8) not null,
	age tinyint not null,
	sex bit not null,
	mobile varchar(14),
	phone varchar(14),
	email varchar(50) not null,
	primary key(user_id) 
);

insert into UserInfo values('zhangfei','张飞',36,1,'13011110001','8845996','zf@qq.com');
insert into UserInfo values('guanyu','关羽',38,1,'13011110002','8845995','gy@qq.com');
insert into UserInfo values('liubei','刘备',42,1,'13011110003','8845994','lb@qq.com');
insert into UserInfo values('zhaoyun','赵云',32,1,'13011110004','8845993','zy@qq.com');
insert into UserInfo values('huangzhong','黄忠',50,1,'13011110005','8845992','hz@qq.com');
insert into UserInfo values('caocao','曹操',48,1,'13011110006','8845991','cc@qq.com');
insert into UserInfo values('sunquan','孙权',33,1,'13011110007','8845990','sq@qq.com');
insert into UserInfo values('diaochan','貂蝉',20,0,'13011110008','8845880','dc@qq.com');
insert into UserInfo values('daqiao','大乔',21,0,'13011110009','8845881','dq@qq.com');
insert into UserInfo values('xiaoqiao','小乔',20,0,'13011110010','8845882','xq@qq.com');

sqldbhelper.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace work076
{
    /// <summary>
    /// asp.net 三层架构
    /// 针对sql server数据库操作的通用类
    /// 作者:虾米大王
    /// 日期:2021年6月1日
    /// 版本: 1.0
    /// </summary>
    public class SqlDbHelper
    {

        private string _connectionString;

        /// <summary>
        /// 构造函数
        /// </summary>
        public SqlDbHelper()
        {

        }

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="connectionString">数据库的连接字符串</param>
        public SqlDbHelper(string connectionString)
        {
            this._connectionString = connectionString;
        }

        /// <summary>
        /// 设置数据库连接字符串
        /// </summary>
        public string ConnectionString
        {
            set
            {
                this._connectionString = value;
            }
        }

        /// <summary>
        /// 执行查询,返回DataTable结果集
        /// </summary>
        /// <param name="sql">要执行的SQL语句</param>
        /// <param name="cmdType">执行语句的类型,可以是存储过程或者SQL文本</param>
        /// <param name="parameters">执行语句的参数数组</param>
        /// <returns>DataTable结果集</returns>
        public System.Data.DataTable ExecuteDataTable(string sql, System.Data.CommandType cmdType, System.Data.SqlClient.SqlParameter[] parameters)
        {
            System.Data.DataTable table1 = new System.Data.DataTable();

            //使用using,是为了包含其中的代码执行结束后自动关闭
            using (System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(this._connectionString))
            {
                using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sql, con))
                {
                    cmd.CommandType = cmdType;
                    if (parameters != null)
                    {
                        foreach (System.Data.SqlClient.SqlParameter para in parameters)
                        {
                            cmd.Parameters.Add(para);
                        }
                    }
                    System.Data.SqlClient.SqlDataAdapter adapter = new System.Data.SqlClient.SqlDataAdapter(cmd);
                    adapter.Fill(table1);
                }
            }

            return table1;
        }

        /// <summary>
        /// 执行查询,返回DataTable结果集(函数同名,重构)
        /// </summary>
        /// <param name="sql">要执行的SQL语句</param>
        /// <returns>DataTable结果集</returns>
        public System.Data.DataTable ExecuteDataTable(string sql)
        {
            return ExecuteDataTable(sql, System.Data.CommandType.Text, null);
        }

        /// <summary>
        /// 执行查询,返回DataTable结果集(函数同名,重构)
        /// </summary>
        /// <param name="sql">要执行的SQL语句</param>
        /// <param name="cmdType">执行语句的类型,可以是存储过程或者SQL文本</param>
        /// <returns>DataTable结果集</returns>
        public System.Data.DataTable ExecuteDataTable(string sql, System.Data.CommandType cmdType)
        {
            return ExecuteDataTable(sql, cmdType, null);
        }

        /// <summary>
        /// 执行查询,返回一个SqlDataReader的对象实例
        /// </summary>
        /// <param name="sql">要执行的SQL语句</param>
        /// <param name="cmdType">执行语句的类型,可以是存储过程或者SQL文本</param>
        /// <param name="parameters">参数数组</param>
        /// <returns>SqlDataReader对象实例</returns>
        public System.Data.SqlClient.SqlDataReader ExecuteReader(string sql, System.Data.CommandType cmdType, System.Data.SqlClient.SqlParameter[] parameters)
        {
            System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(this._connectionString);
            System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sql, con);
            if (parameters != null)
            {
                foreach (System.Data.SqlClient.SqlParameter para in parameters)
                {
                    cmd.Parameters.Add(para);
                }
            }
            con.Open();
            //执行行为,关闭reader,同时自动关闭con
            return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
        }

        /// <summary>
        /// 执行查询,返回一个SqlDataReader的对象实例(函数同名,重构)
        /// </summary>
        /// <param name="sql">要执行的SQL语句</param>
        /// <returns>SqlDataReader对象实例</returns>
        public System.Data.SqlClient.SqlDataReader ExecuteReader(string sql)
        {
            return ExecuteReader(sql, System.Data.CommandType.Text, null);
        }

        /// <summary>
        /// 执行查询,返回一个SqlDataReader的对象实例(函数同名,重构)
        /// </summary>
        /// <param name="sql">要执行的SQL语句</param>
        /// <param name="cmdType">SqlDataReader对象实例</param>
        /// <returns>SqlDataReader对象实例</returns>
        public System.Data.SqlClient.SqlDataReader ExecuteReader(string sql, System.Data.CommandType cmdType)
        {
            return ExecuteReader(sql, cmdType, null);
        }

        /// <summary>
        /// 执行查询,返回结果集为首行首列的值
        /// </summary>
        /// <param name="sql">要执行的SQL语句</param>
        /// <param name="cmdType">执行语句的类型,可以是存储过程或者SQL文本</param>
        /// <param name="parameters">参数数组</param>
        /// <returns>首行首列的值</returns>
        public Object ExecuteScalar(string sql, System.Data.CommandType cmdType, System.Data.SqlClient.SqlParameter[] parameters)
        {
            object result = null;

            using (System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(this._connectionString))
            {
                using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sql, con))
                {
                    cmd.CommandType = cmdType;

                    if (parameters != null)
                    {
                        foreach (System.Data.SqlClient.SqlParameter para in parameters)
                        {
                            cmd.Parameters.Add(para);
                        }
                    }
                    con.Open();
                    result = cmd.ExecuteScalar();
                }
            }

            return result;
        }

        /// <summary>
        /// 执行查询,返回结果集为首行首列的值
        /// </summary>
        /// <param name="sql">要执行的SQL语句</param>
        /// <returns>首行首列的值</returns>
        public Object ExecuteScalar(string sql)
        {
            return ExecuteScalar(sql, System.Data.CommandType.Text, null);
        }

        /// <summary>
        /// 执行查询,返回结果集为首行首列的值
        /// </summary>
        /// <param name="sql">要执行的SQL语句</param>
        /// <param name="cmdType">执行语句的类型,可以是存储过程或者SQL文本</param>
        /// <returns>首行首列的值</returns>
        public Object ExecuteScalar(string sql, System.Data.CommandType cmdType)
        {
            return ExecuteScalar(sql, cmdType, null);
        }

        /// <summary>
        /// 对数据库执行增删改操作
        /// </summary>
        /// <param name="sql">执行的SQL语句</param>
        /// <param name="cmdType">执行语句的类型,可以是存储过程或者SQL文本</param>
        /// <param name="parameters">参数数组</param>
        /// <returns>受影响的行数</returns>
        public int ExecuteNonQuery(string sql, System.Data.CommandType cmdType, System.Data.SqlClient.SqlParameter[] parameters)
        {
            int count = 0;

            using (System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(this._connectionString))
            {
                using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sql, con))
                {
                    cmd.CommandType = cmdType;

                    if (parameters != null)
                    {
                        foreach (System.Data.SqlClient.SqlParameter para in parameters)
                        {
                            cmd.Parameters.Add(para);
                        }
                    }

                    con.Open();
                    count = cmd.ExecuteNonQuery();
                }
            }
            //执行insert,update,delete之后,返回的受影响行数
            return count;
        }

        /// <summary>
        /// 对数据库执行增删改操作(函数同名,重构)
        /// </summary>
        /// <param name="sql">执行的SQL语句</param>
        /// <returns>受影响的行数</returns>
        public int ExecuteNonQuery(string sql)
        {
            return ExecuteNonQuery(sql, System.Data.CommandType.Text, null);
        }

        /// <summary>
        /// 对数据库执行增删改操作(函数同名,重构)
        /// </summary>
        /// <param name="sql">执行的SQL语句</param>
        /// <param name="cmdType">执行语句的类型,可以是存储过程或者SQL文本</param>
        /// <returns>受影响的行数</returns>
        public int ExecuteNonQuery(string sql, System.Data.CommandType cmdType)
        {
            return ExecuteNonQuery(sql, cmdType, null);
        }

        /// <summary>
        /// 返回当前数据库中,由用户创建的所有表
        /// </summary>
        /// <returns>DataTable结果集</returns>
        public System.Data.DataTable GetTables()
        {
            System.Data.DataTable table1 = null;

            using (System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(this._connectionString))
            {
                con.Open();
                table1 = con.GetSchema("Tables");
            }

            return table1;
        }
    } 
}

命名变量,变量计算等(WindowsFormsApplication1): using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { textBox1.Text="hello"; string teststring="hello, world!"; //定义变量 textBox1.Text = teststring; } private void textBox1_TextChanged(object sender, EventArgs e) { } private void button2_Click(object sender, EventArgs e) { int testint1 = 1000; //定义变量 int testint2 = 60; testint2 += 60; testint1 /= 2; textBox1.Text = Convert.ToString(testint1 + testint2); //变量相加 textBox2.Text = Convert.ToString(testint1 % testint2); //变量取余数 textBox3.Text = Convert.ToString( testint2); //取最终变量数 textBox4.Text = Convert.ToString(testint1); //取最终变量数 textBox5.Text = Convert.ToString(--testint1); //取自减一 textBox6.Text = Convert.ToString(++testint1); //取自加以 textBox7.Text = Convert.ToString(testint1--); //取自减一 textBox8.Text = Convert.ToString(testint1); //取自减一 textBox9.Text = "\"hello, \n world!\""; //换行符和转移符 textBox10.Text = testint1 > testint2 ? "大于" : "不大于"; // > 的选择 textBox11.Text = testint1 == testint2 ? "相等" : "不相等"; // == 的选择 textBox12.Text = testint1 != testint2 ? "不相等" : "相等"; // != 的选择 Boolean testboolean = true; label1.Text = Convert.ToString(testboolean); label2.Text = Convert.ToString(!testboolean); label3.Text = Convert.ToString(6 == 3 & 3 > 6); // 需要两个都满足是true,否则false label4.Text = Convert.ToString(6 != 3 & 3 6); // 需要两个都满足或都不满足是false,否则true textBox13.Text = Convert.ToString(10 <> 3); //二进制的计算 } private void textBox6_TextChanged(object sender, EventArgs e) { } private void Form1_Load(object sender, EventArgs e) { } private void textBox13_TextChanged(object sender, EventArgs e) { } private void button3_Click(object sender, EventArgs e) { int testint1 = 1; int testsum = 0; while (testint1 60) //if语句 { textBox15.Text = "大于60"; } else if (testint > 80) { textBox15.Text = "大于80"; } else if (testint > 200) { textBox15.Text = "小于200"; } textBox16.Text = "好的"; goto hello; //goto语句 hello: textBox16.Text = "hello"; } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虾米大王

有你的支持,我会更有动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值