用户注册——注册信息保存到数据库

一、所需知识要点

q  ASP.NET的网页代码模型。

q  Web窗体基本控件。

q  数据库基础。

q  ADO.NET常用对象。

q  Web窗体数据控件。

基本了解了以上章节的知识点后,就能够熟练学习和开发此模块。

 

二、首先用户需要访问网站,访问网站后就会选择是否进行注册,如果需要注册则网站提供一个注册模块给用户,用户就能够进行注册。在用户完成注册后,用户信息还应该被管理员管理,管理员能够通过用户管理页面进行页面管理。

q  注册页面:提供用用户注册操作。

 

q  管理页面:提供管理员管理页面。

 

在基本规划了Web应用中需要制作的模块,可以为这些模块进行模块的流程分析。

三、数据库设计

 

表为用户的基本信息创建了字段,这些字段的意义分别为:

q  id:用于标识用户的ID号,并为自动增长的主键。

q  username:用于标识用户名。

q  password:用于标识用户密码。

q  sex:用于标识用户性别。

q  picture:用于标识用户头像。

q  IM:用于标识用户的IM信息,包括QQ/MSN等。

q  information:用于标识用户的个性签名。

q  others:用于标识用户的备注信息。

q  ifisuser:用于标识用户是否为合法用户。

四、根据数据库字段,创建好页面,

    <form id="form1" runat="server"  method="post">
    <div class="top">
    </div>
    <div class="register" style="text-align: center">
        <div>
            <asp:Label ID="Label1" runat="server" Text="用户名">
            </asp:Label><asp:TextBox ID="TextBox1" Width="200px" runat="server"></asp:TextBox></div>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ValidationGroup="validgroup" ControlToValidate="TextBox1"  runat="server" ErrorMessage="用户名不能为空"></asp:RequiredFieldValidator>
        <div>
            <asp:Label ID="Label2" runat="server" Text="密码"></asp:Label>
            <asp:TextBox ID="TextBox2" Width="200px" runat="server" ></asp:TextBox></div>
             <asp:RequiredFieldValidator ID="RequiredFieldValidator2" ValidationGroup="validgroup" ControlToValidate="TextBox2"  runat="server" ErrorMessage="密码不能为空"></asp:RequiredFieldValidator>
        <div>
            <asp:Label ID="Label3" runat="server" Text="性别"></asp:Label>
            <asp:DropDownList ID="DropDownList1" runat="server"  Width="130px">
                <asp:ListItem>0</asp:ListItem>
                <asp:ListItem>1</asp:ListItem>
            </asp:DropDownList>
             <asp:RequiredFieldValidator ID="RequiredFieldValidator3" ValidationGroup="validgroup" ControlToValidate="DropDownList1"  runat="server" ErrorMessage="性别必须选择"></asp:RequiredFieldValidator>
            </div>
        <div>
            <asp:Label ID="Label4" runat="server" Text="头像"></asp:Label>
            <asp:TextBox ID="TextBox3" runat="server" Width="200px"></asp:TextBox></div>
        <div>
            <asp:Label ID="Label5" runat="server" Text="IM"></asp:Label>
            <asp:TextBox ID="TextBox4" runat="server" Width="200px"></asp:TextBox></div>
        <div>
            <asp:Label ID="Label6" runat="server" Text="个性签名"></asp:Label>
            <asp:TextBox ID="TextBox5" runat="server" Width="180px"></asp:TextBox></div>
        <div>
            <asp:Label ID="Label7" runat="server" Text="备注"></asp:Label>
            <asp:TextBox ID="TextBox6" runat="server" Width="200px"></asp:TextBox></div>
        <asp:Label ID="Label8" runat="server" Text="Label" Visible="False"></asp:Label>
       <div> <asp:Button ID="Button1" runat="server" Text="注册" οnclick="Button1_Click" /></div>
    </div>
    <div class="end">
        <p>
            版权信息
        </p>
        <p>
            本网站不会将用户信息泄露给任何机构</p>
    </div>
    </form>

 

五、代码实现数据的插入和判断

 

在用户单击按钮控件时会执行数据插入操作,在数据插入之前就需要对信息进行过滤,示例代码如下所示。

 

        protected void Button1_Click(object sender, EventArgs e)

 

        {

 

            if (Check(TextBox1.Text) || Check(TextBox2.Text) || Check(TextBox4.Text) ||

 

            Check(TextBox5.Text) || Check(TextBox6.Text) || Check(TextBox7.Text))                        //判断

 

            {

 

                Label8.Text = "用户信息中不能够包含特殊字符如<,>,',//,\\,请审核";                          //输出信息

 

            }

 

            else

 

            {

 

                //注册代码

 

            }

 

        }

 

上述代码使用了Check函数对文本框控件进行了用户资料的判断,Check函数的实现如下所示。

 

        protected bool Check(string text)                                                                                                                //判断实现

 

        {

 

            if (text.Contains("<") || text.Contains(">") || text.Contains("'") ||

 

              text.Contains("//") || text.Contains("\\"))                                                                                  //检查字串

 

            {

 

                return true;                                                                                                                              //返回真

 

            }

 

            else

 

            {

 

                return false;                                                                                                                            //返回假

 

            }

 

        }

 

Check函数定义了基本的判断方式,如果文本框信息中包含“<”,“>”,“”,“/”,“\”等字符串时,该方法将会返回true,否则会返回false。这也就是说,如果字符串中包含了这些字符,则会返回true。在Button1_Click函数中就会判断包含非法字符,并进行提示,否则会执行注册代码。对关键字的过滤是非常必要的,这样能够保证应用程序的完整性并提高应用程序健壮性,同时也对数据库中的完整性进行了保护。

 

当用户单击按钮控件时,如果对用户进行了非空验证和关键字过滤后,就能够进行数据的插入,用户可以使用ADO.NET进行数据操作,示例代码如下所示。

 

        protected void Button1_Click(object sender, EventArgs e)

 

        {

 

            if (Check(TextBox1.Text) || Check(TextBox2.Text) || Check(TextBox3.Text) ||

 

              Check(TextBox4.Text) || Check(TextBox5.Text) || Check(TextBox6.Text))                    //检查字串

 

            {

 

                Label8.Text = "用户信息中不能够包含特殊字符如<,>,',//,\\,请审核";                          //输出信息

 

            }

 

            else

 

            {

 

                try

 

                {

 

                    SqlConnection con =

 

                    new SqlConnection("server='(local)';database='Register';uid='sa';pwd='sa'");//建立连接

 

                    con.Open();                                                                                                                    //打开连接

 

                    string strsql =

 

                    "insert into register (username,password,sex,picture,im,information,others,ifisuser) values

 

                     ('" + TextBox1.Text + "','" + TextBox2.Text + "','" + DropDownList1.Text + "','" +

 

                    TextBox3.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text + "',0)";

 

                    SqlCommand cmd = new SqlCommand(strsql,con);                                           //创建执行

 

                    cmd.ExecuteNonQuery();                                                                                           //执行SQL

 

                    Label8.Text = "注册成功,请牢记您的信息";                                                               //提示成功

 

                }

 

                catch

 

                {

 

                    Label8.Text = "出现错误信息,请返回给管理员";                                                       //抛出异常

 

                }

 

            }

 

        }

 

上述代码通过ADO.NET实现了数据的插入,但是上述代码有一个缺点,如果用户注册了一个用户并且名称为abc,当这个用户注销并再注册一个用户名称为abc时,如果依旧将数据插入到数据库则会出现错误。值得注意的是,这个错误并不是逻辑错误,但是这个错误会造成不同的用户可能登录了同一个用户信息并产生信息错误。为了避免这种情况的发生,在用户注册前首先需要执行判断,示例代码如下所示。

 

        string check = "select * from register where username='" + TextBox1.Text + "'";

 

        SqlDataAdapter da = new SqlDataAdapter(check,con);                                                     //创建适配器

 

        DataSet ds = new DataSet();                                                                                                     //创建数据集

 

        da.Fill(ds, "table");                                                                                                                       //填充数据集

 

        if (da.Fill(ds, "table") > 0)                                                                                                            //判断同名

 

        {

 

            Label8.Text = "注册失败,有相同用户名";                                                                          //输出信息

 

        }

 

        else

 

        {

 

            SqlCommand cmd = new SqlCommand(strsql, con);                                                 //创建执行对象

 

            cmd.ExecuteNonQuery();                                                                                                  //执行SQL

 

            Label8.Text = "注册成功,请牢记您的信息";                                                                      //输出成功

 

        }

 

在用户注册时,首先从数据库查询出是否已经包含这个用户名的信息,如果包含则不允许用户注册,如果没有,则说明用户是一个新用户,可以进行注册。

本人也是菜鸟一个~~一起努力!请各位老大指教!!谢谢!!

 附带一下代码:default.aspx.cs

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

namespace 登录注册
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            {
                Label8.Visible = true;
            }

        }

        protected bool Check(string text)                                                                                                                //判断实现
        {

            if (text.Contains("<") || text.Contains(">") || text.Contains("'") ||

              text.Contains("//") || text.Contains("\\"))                                                                                  //检查字串
            {

                return true;                                                                                                                              //返回真

            }

            else
            {

                return false;                                                                                                                            //返回假

            }

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            if (Check(TextBox1.Text) || Check(TextBox2.Text) || Check(TextBox3.Text) ||

           Check(TextBox4.Text) || Check(TextBox5.Text) || Check(TextBox6.Text))                   //判断
            {
                Label8.Visible = true;

                Label8.Text = "用户信息中不能够包含特殊字符如<,>,',//,\\等,请审核";               //输出信息

            }

            else
            {
                try
                {
                    SqlConnection con =

                    new SqlConnection("Data Source=.;Initial Catalog=Register;Integrated Security=True");//建立连接

                    con.Open();

                    string check = "select * from register where username='" + TextBox1.Text + "'";

                    SqlDataAdapter da = new SqlDataAdapter(check, con);                                                     //创建适配器

                    DataSet ds = new DataSet();                                                                                                     //创建数据集

                    da.Fill(ds, "table");                                                                                                                       //填充数据集

                    if (da.Fill(ds, "table") > 0)                                                                                                            //判断同名
                    {

                        Label8.Text = "注册失败,有相同用户名";                                                                          //输出信息

                    }


                    else
                    {
                        string strsql =

                          @"insert into register (username,password,sex,picture,im,information,others,ifisuser) values

                     ('" + TextBox1.Text + "','" + TextBox2.Text + "','" + DropDownList1.Text + "','" +

                        TextBox3.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text + "',0)";


                        SqlCommand cmd = new SqlCommand(strsql, con);                                           //创建执行

                        cmd.ExecuteNonQuery();                                                                                           //执行SQL

                        Label8.Text = "注册成功,请牢记您的信息";   //提示成功
                    }                                             

                }


                catch
                {

                    Label8.Text = "出现错误信息,请返回给管理员";     //抛出异常
                }



            }

        }
    }
}

 

 

 

 

 

转载于:https://my.oschina.net/coderpeng/blog/531296

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1篇 HTML基础   第1章 HTML基础 3   教学录像:22分钟   1.1 HTML的基本概念 4   1.2 HTML发展史 4   1.3 HTML的基本结构 5   1.3.1 HTML文件的编方法 5   1.3.2 文件开始标签<html> 7   1.3.3 文件头部标签<head> 7   1.3.4 文件标题标签<title> 7   1.3.5 文件主体标签<body> 7   1.3.6 编文件的注意事项 8   1.4 编第一个HTML文件 8   1.4.1 HTML文件的编方法 8   1.4.2 手工编页面 9   1.4.3 使用可视化软件制作页面 10   1.4.4 使用浏览器浏览HTML文件 14   1.4.5 使用HTML开发的明日图书网 14   1.5 小结 15   1.6 习题 16   第2章 HTML文件基本标记 17   教学录像:44分钟   2.1 HTML头部标记 18   2.2 标题标记<title> 18   2.3 元信息标记<meta> 19   2.3.1 设置页面关键字 19   2.3.2 设置页面描述 20   2.3.3 设置编辑工具 20   2.3.4 设定作者信息 21   2.3.5 限制搜索方式 22   2.3.6 设置网页文字及语言 22   2.3.7 设置网页的定跳转 23   2.3.8 设定有效期限 24   2.3.9 禁止从缓存调用 24   2.3.10 删除过期的cookie 25   2.3.11 强制打开新窗口 25   2.3.12 设置网页的过渡效果 26   2.4 基底网址标记<base> 29   2.5 页面的主体标记<body> 30   2.5.1 设置文字颜色——text 31   2.5.2 背景颜色属性——bgcolor 32   2.5.3 背景图像属性——background 32   2.5.4 设置链接文字属性——link 35   2.5.5 设置边距——margin 37   2.6 页面的注释标记 38   2.7 实例演练——创建基本的HTML网页 38   2.8 小结 39   2.9 习题 40   第3章 设计网页文本内容 41   教学录像:29分钟   3.1 标题文字的建立 42   3.1.1 标题文字标记<h> 42   3.1.2 标题文字的对齐方式——align 43   3.2 设置文字格式 44   3.2.1 设置文字字体——face 44   3.2.2 设置字号——size 45   3.2.3 设置文字颜色——color 46   3.2.4 粗体、斜体、下划线——strong、em、u 46   3.2.5 上标与下标——sup、sub 47   3.2.6 设置删除线——strike 48   3.2.7 等宽文字标记——code 49   3.2.8 空格——&nbsp; 49   3.2.9 其他特殊符号 50   3.3 设置段落格式 51   3.3.1 段落标记——p 51   3.3.2 取消文字换行标记——nobr 52   3.3.3 换行标记——br 53   3.3.4 保留原始排版方式标记——pre 53   3.3.5 居对齐标记——center 54   3.3.6 向右缩进标记——blockquote 55   3.4 水平线标记 56   3.4.1 添加水平线——hr 56   3.4.2 设置水平线的宽度与高度   ——width、height 57   3.4.3 设置水平线的颜色——color 58   3.4.4 设置水平线的对齐方式——align 59   3.4.5 去掉水平线阴影——noshade 60   3.5 其他文字标记 60   3.5.1 文字标注标记——ruby 60   3.5.2 声明变量标记——var 61   3.5.3 忽视HTML标记   ——plaintext、xmp 62   3.6 小结 63   3.7 习题 63   第4章 使用列表 65   教学录像:35分钟   4.1 列表的标记 66   4.2 使用无序列表 66   4.2.1 无序列表标记——ul 66   4.2.2 无序列表的符号类型——type 67   4.3 使用有序列表 69   4.3.1 有序列表标记——ol 69   4.3.2 有序列表的属性——type 70   4.3.3 有序列表的起始数值——start 72   4.4 定义列表标记——dl 73   4.5 菜单列表标记——menu 74   4.6 目录列表——dir 75   4.7 使用嵌套列表 76   4.7.1 定义列表的嵌套 77   4.7.2 无序列表和有序列表的嵌套 78   4.8 小结 79   4.9 习题 80   第5章 超链接 81   教学录像:22分钟   5.1 超链接的基本知识 82   5.1.1 超链接 82   5.1.2 绝对路径 82   5.1.3 相对路径 82   5.2 超链接的建立 83   5.2.1 超链接标记的基本语法 83   5.2.2 建立文本超链接 83   5.2.3 设置超链接的目标窗口 85   5.3 内部链接 87   5.4 书签链接 89   5.4.1 建立书签 89   5.4.2 链接到同一页面的书签 91   5.4.3 链接到不同页面的书签 92   5.5 外部链接 93   5.5.1 通过HTTP协议 94   5.5.2 通过FTP 94   5.5.3 发送E-mail 95   5.5.4 下载文件 96   5.6 其他链接 98   5.6.1 脚本链接 98   5.6.2 空链接 99   5.7 小结 99   5.8 习题 100   第6章 使用图像 101   教学录像:35分钟   6.1 图像的基本格式 102   6.2 添加图像——img 102   6.3 设置图像属性 103   6.3.1 图像高度——height 103   6.3.2 图像宽度——width 104   6.3.3 图像边框——border 105   6.3.4 图像水平间距——hspace 107   6.3.5 图像垂直间距——vspace 108   6.3.6 图像相对于文字基准线的对齐方式   ——align 108   6.3.7 图像的提示文字——alt 110   6.4 图像的超链接 111   6.4.1 设置图像的超链接 111   6.4.2 设置图像热区链接 112   6.5 小结 116   6.6 习题 116   第7章 表格的应用 118   教学录像:48分钟   7.1 创建表格 119   7.1.1 表格的基本构成——table、tr、td 119   7.1.2 表格的标题——caption 120   7.1.3 表格的表头——th 121   7.2 设置表格基本属性 123   7.2.1 表格的宽度——width 123   7.2.2 表格的高度——height 125   7.2.3 表格的对齐方式——align 126   7.3 设置表格的边框 127   7.3.1 表格边框的宽度——border 127   7.3.2 表格边框的颜色——bordercolor 128   7.3.3 表格内框的宽度——cellspacing 130   7.3.4 表格内文字与边框的间距   ——cellpadding 131   7.4 设置表格背景 132   7.4.1 表格的背景颜色——bgcolor 132   7.4.2 表格的背景图像——background 133   7.5 设置表格的行属性 134   7.5.1 高度的控制——height 134   7.5.2 行的边框颜色——bordercolor 135   7.5.3 行的背景颜色——bgcolor、background 136   7.5.4 行文字的水平对齐方式——align 137   7.5.5 行文字的垂直对齐方式——valign 139   7.5.6 表格标题的垂直对齐方式——align 140   7.6 调整单元格属性 141   7.6.1 单元格大小——width、height 141   7.6.2 单元格水平跨度——colspan 142   7.6.3 单元格垂直跨度——rowspan 143   7.6.4 单元格对齐方式——align、valign 144   7.6.5 单元格的背景色 146   7.6.6 单元格的边框颜色——bordercolor 147   7.6.7 单元格的亮边框——bordercolorlight 148   7.6.8 单元格的暗边框——bordercolordark 150   7.6.9 单元格的背景图像——background 151   7.7 表格的结构 152   7.7.1 表格的表头标记——thead 153   7.7.2 表格的表主体标记——tbody 154   7.7.3 表格的表尾标记——tfoot 156   7.8 表格的嵌套 157   7.9 小结 159   7.10 习题 159   第8章 层标记——div 161   教学录像:33分钟   8.1 层 162   8.1.1 层的分类 162   8.1.2 定义数据块 162   8.2 <div>标签 163   8.2.1 <div>标签的简介 163   8.2.2 <div>标签的属性 164   8.2.3 <span>标签与<div>标签 170   8.3 <iframe>标签 172   8.3.1 <iframe>标签的简介 172   8.3.2 <iframe>标签的属性 172   8.4 <layer>标签和<ilayer>标签 174   8.4.1 标签层的使用 175   8.4.2 <layer>标签和<ilayer>标签的区别 176   8.5 应用div制作下拉菜单导航条 176   8.6 小结 179   8.7 习题 179   第9章 编辑表单 181   教学录像:26分钟   9.1 使用表单标签——form 182   9.1.1 处理动作——action 182   9.1.2 表单名称——name 183   9.1.3 传送方法——method 183   9.1.4 编码方式——enctype 184   9.1.5 目标显示方式——target 185   9.2 添加控件 185   9.3 输入类的控件 186   9.3.1 文字字段——text 186   9.3.2 密码域——password 187   9.3.3 单选按钮——radio 188   9.3.4 复选框——checkbox 189   9.3.5 普通按钮——button 190   9.3.6 提交按钮——submit 191   9.3.7 重置按钮——reset 192   9.3.8 图像域——image 193   9.3.9 隐藏域——hidden 195   9.3.10 文件域——file 195   9.4 列表/菜单标记 197   9.5 文本域标记——textarea 198   9.6 id标记 199   9.7 小结 200   9.8 习题 200   第10章 多媒体页面 202   视频讲解:18分钟   10.1 设置滚动文字 203   10.1.1 滚动文字标签——marquee 203   10.1.2 滚动方向属性——direction 203   10.1.3 滚动方式属性——behavior 204   10.1.4 滚动速度属性——scrollamount 205   10.1.5 滚动延迟属性——scrolldelay 206   10.1.6 滚动循环属性——loop 207   10.1.7 滚动范围属性——width、height 208   10.1.8 滚动背景颜色属性——bgcolor 209   10.1.9 滚动空间属性——hspace、vspace 209   10.2 添加背景音乐 211   10.2.1 设置背景音乐——bgsound 211   10.2.2 设置循环播放次数——loop 212   10.3 添加多媒体文件 213   10.3.1 添加多媒体文件标记——embed 213   10.3.2 设置自动运行——autostart 214   10.3.3 设置媒体文件的循环播放——loop 215   10.3.4 隐藏面板——hidden 216   10.3.5 添加其他类型的媒体文件 217   10.4 小结 217   10.5 习题 218   第2篇 HTML 5高级应用   第11章 HTML 5的新特性 221   视频讲解:6分钟   11.1 谁在开发HTML 5 222   11.2 HTML 5的新认识 222   11.2.1 兼容性 222   11.2.2 实用性和用户优先 222   11.2.3 化繁为简 223   11.3 无插件范式 223   11.4 HTML 5的新特性 224   11.5 小结 224   第12章 HTML 5与HTML 4的区别 225   视频讲解:51分钟   12.1 语法的改变 226   12.1.1 HTML 5的语法变化 226   12.1.2 HTML 5的标记方法 226   12.1.3 HTML 5语法的3个要点 227   12.1.4 标签实例 228   12.2 新增的元素和废除的元素 228   12.2.1 新增的结构元素 228   12.2.2 新增的块级的语义元素 230   12.2.3 新增的行内的语义元素 231   12.2.4 新增的嵌入多媒体元素与交互性元素 231   12.2.5 新增的input元素的类型 232   12.2.6 废除的元素 233   12.3 新增的属性和废除的属性 234   12.3.1 新增的属性 234   12.3.2 废除的属性 236   12.4 全局属性 237   12.4.1 contentEditable属性 237   12.4.2 designMode属性 238   12.4.3 hidden属性 239   12.4.4 spellcheck属性 239   12.4.5 tabindex属性 240   12.5 小结 240   12.6 习题 240   第13章 HTML 5的结构 242   视频讲解:20分钟   13.1 新增的主体结构元素 243   13.1.1 article元素 243   13.1.2 section元素 245   13.1.3 nav元素 247   13.1.4 aside元素 248   13.1.5 time元素 250   13.1.6 pubdate属性 250   13.2 新增的非主体结构元素 251   13.2.1 header元素 251   13.2.2 hgroup元素 252   13.2.3 footer元素 252   13.2.4 address元素 253   13.3 小结 253   13.4 习题 254   第14章 HTML 5的表单 255   视频讲解:50分钟   14.1 新增表单元素与属性 256   14.1.1 新增的属性 256   14.1.2 增加与改良的input元素的种类 259   14.1.3 output元素的添加 264   14.1.4 应用新增元素制作注册表单 264   14.2 对表单的验证 266   14.2.1 自动验证 266   14.2.2 checkValidity显式验证法 267   14.2.3 避免验证 268   14.2.4 使用setCustomValidity方法自定义   错误信息 268   14.3 增加的页面元素 269   14.3.1 新增的figure元素 270   14.3.2 新增的details元素 271   14.3.3 新增的mark元素 272   14.3.4 新增的progress元素 274   14.3.5 新增的meter元素 275   14.3.6 改良的ol列表 276   14.3.7 改良的dl列表 276   14.3.8 加以严格限制的cite元素 277   14.3.9 重新定义的small元素 278   14.4 小结 278   14.5 习题 279   第15章 HTML 5的文件与拖放 280   视频讲解:40分钟   15.1 选择文件 281   15.1.1 通过file对象选择文件 281   15.1.2 使用blob接口获取文件的类型与大小 282   15.1.3 通过类型过滤选择的文件 283   15.2 使用FileReader接口读取文件 285   15.2.1 检测浏览器是否支持FileReader接口 285   15.2.2 FileReader接口的方法 285   15.2.3 使用readAsDataURL方法预览图片 286   15.2.4 使用readAsText方法读取文本文件 287   15.2.5 FileReader接口的事件 288   15.3 拖放API 290   15.3.1 实现拖放的步骤 290   15.3.2 通过拖放显示欢迎信息 291   15.4 dataTransfer对象应用详解 293   15.4.1 使用effectAllowed和dropEffect属性   设置拖放效果 293   15.4.2 使用setDragImage方法设置拖放图标 294   15.5 小结 295   15.6 习题 295   第16章 多媒体播放 296   视频讲解:35分钟   16.1 HTML 5多媒体的简述 297   16.1.1 HTML 4多媒体的应用 297   16.1.2 HTML 5页面的多媒体 297   16.2 多媒体元素基本属性 298   16.3 多媒体元素常用方法 302   16.3.1 媒体播放的方法 302   16.3.2 canPlayType(type)方法 304   16.4 多媒体元素重要事件 304   16.4.1 事件处理方式 304   16.4.2 事件介绍 305   16.4.3 事件实例 306   16.5 小结 308   16.6 习题 309   第17章 绘制图形 310   视频讲解:1小32分钟   17.1 canvas的基础知识 311   17.1.1 canvas是什么 311   17.1.2 在页面放置canvas元素 311   17.1.3 绘制带边框的矩形 312   17.2 在画布使用路径 314   17.2.1 使用arc方法绘制圆形 314   17.2.2 使用moveTo与lineTo路径绘制火柴人 316   17.2.3 贝塞尔和二次方曲线 317   17.3 运用样式与颜色 319   17.3.1 fillStyle 和 strokeStyle属性 319   17.3.2 透明度 globalAlpha 321   17.3.3 线型 Line styles 323   17.4 绘制渐变图形 325   17.4.1 绘制线性渐变 325   17.4.2 绘制径向渐变 326   17.5 绘制变形图形 328   17.5.1 坐标的变换 328   17.5.2 矩阵变换 330   17.6 组合多个图形 333   17.7 给图形绘制阴影 335   17.8 应用图像 336   17.8.1 绘制图像 336   17.8.2 图像的局部放大 338   17.8.3 图像平铺 339   17.8.4 图像裁剪 341   17.8.5 像素的处理 342   17.9 绘制文字 344   17.10 保存与恢复状态 345   17.11 文件的保存 346   17.12 对画布绘制实现动画 347   17.13 综合实例——桌面钟 348   17.14 小结 350   17.15 习题 351   第18章 数据存储 352   视频讲解:50分钟   18.1 初识Web Storage 353   18.1.1 什么是Web Storage 353   18.1.2 使用Web Storage的API 353   18.1.3 sessionStorage和localStorage的实例   ——计数器 355   18.1.4 Web Storage综合实例——留言本 357   18.1.5 JSON对象的存数实例——用户信息卡 359   18.2 本地数据库 361   18.2.1 Web SQL数据库简介 361   18.2.2 使用Web SQL Database API 362   18.2.3 本地数据库实例——用户登录 363   18.3 小结 367   18.4 习题 367   第19章 离线应用程序 368   视频讲解:13分钟   19.1 HTML 5离线Web应用概述 369   19.1.1 离线Web应用概述 369   19.1.2 本地缓存与浏览器网页缓存的区别 370   19.2 创建HTML 5离线应用 370   19.2.1 缓存清单(manifest) 370   19.2.2 配置IIS服务器 372   19.2.3 浏览缓存清单 372   19.3 浏览器与服务器的交互过程 373   19.4 applicationCache对象 374   19.4.1 swapCache方法 375   19.4.2 applicationCache对象的事件 376   19.5 小结 379   19.6 习题 379   第20章 使用Web Worker处理线程 380   视频讲解:25分钟   20.1 Web Worker概述 381   20.1.1 创建和使用Worker 381   20.1.2 Web Worker应用实例——求和运算 382   20.2 在Worker内部能做什么 383   20.3 多个JavaScript文件的加载与执行 384   20.4 线程嵌套 384   20.4.1 单层嵌套 385   20.4.2 在多个子线程进行数据的交互 387   20.5 小结 390   20.6 习题 390   第21章 通信API 391   视频讲解:4分钟   21.1 跨文档消息通信 392   21.1.1 使用postMessageAPI 392   21.1.2 跨文档消息传输 392   21.2 小结 394   第22章 获取地理位置信息 395   视频讲解:12分钟   22.1 Geolocation API的概述 396   22.1.1 使用getCurrentPosition方法获取   当前地理位置 396   22.1.2 持续监视当前地理位置的信息 398   22.1.3 停止获取当前用户的地理位置信息 398   22.2 position对象 398   22.3 在google地图上显示“我在这” 399   22.4 小结 401   22.5 习题 401   第3篇 HTML 5项目实战   第23章 旅游信息网前台页面 405   视频讲解:20分钟   23.1 概述 406   23.2 网站预览 406   23.3 关键技术 410   23.3.1 网站主体结构设计 410   23.3.2 HTML 5结构元素的使用 410   23.4 网站公共部分设计 411   23.4.1 设计网站公共header 411   23.4.2 设计网站公共footer 418   23.5 网站主页设计 419   23.5.1 显示网站介绍及相关图片 419   23.5.2 主页左侧导航的实现 421   23.6 留下足迹页面设计 424   23.6.1 播放音乐 424   23.6.2 添加留言功能的实现 425   23.7 小结 426   附录 习题参考答案 427   HTML 5从入门到精通   目 录   X   XI
PL/SQL Developer(pl/sql 7.1.5)是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。<br><br>此版本包含注册文件和简体文语言安装包<br><br>Enhancements in PL/SQL Developer 7.1.5<br>======================================<br>- Fixed some access violations<br>- Inserting a record in the SQL Window would pass null for Unicode columns<br> instead of omitting it from the inserts statement<br>- Support for the ODAC instant client added<br>- Translated help files were not used<br>- Performance improvements for some dictionary queries<br>- SQL Exporter did not export very old dates in date format<br>- SQL Exporter could export floats with comma as decimal separator<br><br>PL/SQL Developer主要特性:<br>PL/SQL编辑器,功能强大——该编辑器具有语法加强、SQL和PL/SQL帮助、对象描述、代码助手、编译器提示、PL/SQL完善、代码内容、代码分级、浏览器按钮、超链接导航、宏库等许多智能特性,能够满足要求性最高的用户需求。当您需要某个信息,它将自动出现,至多单击即可将信息调出。<br><br>集成调试器(要求Oracle 7.3.4或更高)——该调试器提供您所需要的全部特性:跳入(Step In)、跳过(Step Over)、跳出(Step Out)、异常停止运行、断点、观察和设置变量、观察全部堆栈等。基本能够调试任何程序单元(包括触发器和Oracle8 对象类型),无需作出任何修改。<br><br>PL/SQL完善器——该完善器允许您通过用户定义的规则对SQL和PL/SQL代码进行规范化处理。在编译、保存、打开一个文件,代码将自动被规范化。该特性提高了您编码的生产力,改善了PL/SQL代码的可读性,促进了大规模工作团队的协作。<br><br>SQL 窗口——该窗口允许您输入任何SQL语句,并以栅格形式对结果进行观察和编辑,支持按范例查询模式,以便在某个结果集合查找特定记录。另外,还含有历史缓存,您可以轻松调用先前执行过的SQL语句。该SQL编辑器提供了同PL/SQL编辑器相同的强大特性。<br><br>命令窗口——使用PL/SQL Developer 的命令窗口能够开发并运行SQL脚本。该窗口具有同SQL*Plus相同的感观,另外还增加了一个内置的带语法加强特性的脚本编辑器。这样,您就可以开发自己的脚本,无需编辑脚本/保存脚本/转换为SQL*Plus/运行脚本过程,也不用离开PL/SQL Developer集成开发环境。<br><br>报告——PL/SQL Developer提供内置的报告功能,您可以根据程序数据或Oracle字典运行报告。PL/SQL Developer本身提供了大量标准报告,而且您还可以方便的创建自定义报告。自定义报告将被保存在报告文件,进而包含在报告菜单内。这样,运行您自己经常使用的自定义报告就非常方便。<br>您可以使用Query Reporter免费软件工具来运行您的报告,不需要PL/SQL Developer,直接从命令行运行即可。<br><br>工程——PL/SQL Developer内置的工程概念可以用来组织您的工作。一个工程包括源文件集合、数据库对象、notes和选项。PL/SQL Developer允许您在某些特定的条目集合范围之内进行工作,而不是在完全的数据库或架构之内。这样,如果需要编译所有工程条目或者将工程从某个位置或数据库移动到其他位置,所需工程条目的查找就变得比较简单,<br><br>To-Do条目——您可以在任何SQL或PL/SQL源文件使用To-Do条目快速记录该文件那些需要进行的事项。以后能够从To-Do列表访问这些信息,访问操作可以在对象层或工程层进行。<br><br>对象浏览器——可配置的树形浏览能够显示同PL/SQL开发相关的全部信息,使用该浏览器可以获取对象描述、浏览对象定义、创建测试脚本以便调试、使能或禁止触发器或约束条件、重新编译不合法对象、查询或编辑表格、浏览数据、在对象源进行文本查找、拖放对象名到编辑器等。<br>此外,该对象浏览器还可以显示对象之间的依存关系,您可以递归的扩展这些依存对象(如包参考检查、浏览参考表格、图表类型等)。<br><br>性能优化——使用PL/SQL Profiler,可以浏览每一执行的PL/SQL代码行的信息(Oracle8i或更高),从而优化您SQL和PL/SQL的代码性能。<br>更进一步,您还可以自动获取所执行的SQL语句和PL/SQL程序统计信息。该统计信息包括CPU使用情况、块I/O、记录I/O、表格扫描、分类等。<br>HTML指南——Oracle目前支持HTML格式的在线指南。您可以将其集成到PL/SQL Developer工作环境,以便在编辑、编译出错或运行出错提供内容敏感帮助。<br><br>非PL/SQL对象——不使用任何SQL,您就可以对表格、序列、符号、库、目录、工作、队列、用户和角色进行浏览、创建和修改行为。PL/SQL Developer提供了一个简单易用的窗体,只要将信息输入其,PL/SQL Developer就将生成相应的SQL,从而创建或转换对象。<br><br>模板列表——PL/SQL Developer的模板列表可用作一个实的帮助组件,协助您强制实现标准化。只要点击相应的模板,您就可以向编辑器插入标准的SQL或PL/SQL代码,或者从草稿出发来创建一个新程序。<br><br>查询构建器——图形化查询构建器简化了新选择语句的创建和已有语句的修改过程。只要拖放表格和视窗,为区域列表选择专栏,基于外部键约束定义联合表格即可。<br><br>比较用户对象——对表格定义、视图、程序单元等作出修改后,将这些修改传递给其他数据库用户或检查修改前后的区别将是非常有用的。这也许是一个其他的开发环境,如测试环境或制作环境等。而比较用户对象功能则允许您对所选对象进行比较,将不同点可视化,并运行或保存应用必要变动的SQL脚本。<br>导出用户对象——该工具可以导出用户所选对象的DDL(数据定义语言)语句。您可以方便的为其他用户重新创建对象,也可以保存文件作为备份。<br><br>工具——PL/SQL Developer为简化日常开发专门提供了几种工具。使用这些工具,您可以重新编译全部不合法对象、查找数据库文本、导入或导出表格、生成测试数据、导出文本文件、监控dbms_alert和dbms_pipe事件、浏览会话信息等。<br><br>授权——大多数开发环境,您不希望所有数据库都具备PL/SQL Developer的全部功能性。例如,数据库开发您可以允许PL/SQL Developer的全部功能性,而数据库测试您可以仅允许数据查询/编辑和对象浏览功能,而数据库制作您甚至根本不希望PL/SQL Developer访问。利用PL/SQL Developer授权功能,您可以方便的定义特定用户或规则所允许使用的功能。<br><br>插件扩展——可以通过插件对PL/SQL Developer功能进行扩展。Add-ons页面提供插件可以免费下载。Allround Automations或其他用户均可提供插件(如版本控制插件或plsqldoc插件)。如果您具备创建DLL的编程语言,您还可以自己编插件。<br><br>多线程IDE——PL/SQL Developer是一个多线程IDE。这样,当SQL查询、PL/SQL程序、调试会话等正在运行,您依然可以继续工作。而且,该多线程IDE还意味着出现编程错误不会止:您在任何间都可以断执行或保存您的工作。<br><br>易于安装——不同于SQL*Net,无需间件,也无需数据库对象安装。只需点击安装程序按钮,您就可以开始安装从而使用软件了。
金属材料标准的应用数据库MtrRvw简介 1 应用数据库MtrRvw 1.1 “MtrRvw”的含义 1.1.1 “Mtr”是“Material Test Report”的首字母缩,表示材料试验报告。 1.1.2 “Rvw”是“Review”的缩,表示审查。 1.1.3 “MtrRvw”表示“材料试验报告的审查”,这是数据库的核心应用。 1.2 数据库的区分 1.2.1 开发数据库: 开发数据库是由开发者设计、使用和管理的数据库; 开发数据库包含标准数据化的成果——数据表、查询和应用程序模块; 开发数据库包含数据库开发的一切成果。 1.2.2 测试数据库: 测试数据库是开发数据库的子集,只包含订制的产品规范和适用产品规范的所有试验标准的数据,以及处理这些数据的机制; 开发者为数据库设置安全机制,绑定硬盘、建立帐户、设置权限和运行密码; 开发者通过运行密码设置适用开发环境的业务逻辑,运行测试数据库以确认数据库功能符合开发目标。 1.2.3 演示数据库: 演示数据库是开发数据库的子集,只包含若干典型的产品规范和适用产品规范的所有试验标准的数据,以及处理这些数据的机制; 开发者为数据库设置安全机制,建立帐户、设置权限和运行密码; 演示数据库不与硬盘绑定 用户利用演示数据库可以评价标准的数据化开发的成果是否符合自己的期望; 用户利用演示数据库可以了解产品规范和试验标准的数据构成,制定适用预算、审查对象、使用期限和工作计划的订制方案。 1.2.4 生产数据库:交付的生产数据库是测试数据库的编译版本(MDE文件); 交付前设置生产数据库使用户只能通过数据库窗体访问数据和功能;用户不需要掌握操作数据库对象的知识和技能。 交付的数据库组件:生产数据库包含用户订制的材料规范和适用的试验标准的数据,以及使用这些数据的查询、窗体和应用程序模块;首次交付的生产数据库包含保存生产数据的数据表(没有任何生产数据);升级交付的生产数据库不包含保存生产数据的数据表,但包含从生产数据库导入生产数据的数据表的机制。 必要通过导入备份的生产数据库数据表,将当前生产数据库的生产数据还原。 1.3 演示数据库和支持文件的发布 1.2.5 演示数据库在MtrRvw的“百度云网盘”的分享主页发布 1.2.6 MtrRvw的“百度云网盘”的分享主页地址: http://pan.baidu.com/share/home?uk=981856497#category/type=0 1.2.7 文件 1.2.7.1 数据库文件:DemoForMtrRvw.mde 1.2.7.2 工作组信息文件:WorkgroupInfo.mdw 1.2.7.3 保存演示数据库使用的图像文件的文件夹:“Images” 1.2.7.4 MtrRvw 帮助:MtrRvwChs.chm,保存在文件夹“Help/Chinese”。 1.2.7.5 文件汇编:MtrRvwRef.chm,保存在文件夹“Help/ Reference”。 1.2.7.6 其它文件 1.2.7.6.1 帐户信息文件:Accounts.xls 1.2.7.6.2 采集计算机的硬盘信息的文件:HddInfo.xls 1.2.7.6.3 运行密码明细:Keys.xls 1.2.7.6.4 ReadMe.txt 1.2.7.7 上述文件保存在文件夹“Demo”并压缩为“Demox.rar”,“x”表示一个自然数,数值越大表示“rar”文件的版本越新。 1.4 数据库MtrRvw的重要属性 1.4.1 数据库MtrRvw是金属材料标准的数据化开发的主要成果,也是高效应用标准数据的工具。 1.4.2 数据库MtrRvw诞生于实践并经历了实践的验证; 基于适用大型锅炉和钢结构的材料规范和试验标准的开发形成了完善的开发和应用机制,使首期的开发成果有可观的应用前景; 采用先开发和发布材料规范再按规划开发和发布适用的试验标准的策略,用户根据标准的开发状况和自身的实际需要选用。 1.4.3 数据库MtrRvw引入革新的材料标准的应用方式。 开发者长期专注于材料标准的跨体系开发,能够透彻和全面地理解标准,加上客观和严谨的态度,可以保证“标准条文数据化后的数据”与“数据化前标准的条文”在内涵和外延上的一致性; 数据库发布后,还可能吸收和整合大量专业人士的意见,使数据持续完善; 保存数据库的数据是相对稳定的,并且可以被数据库高效地应用和处理,因此标准的应用效率和可靠性获得极大的提高; 利用“文件汇编”用户可以将精力集于研究和解决发现的问题,而非寻找适用的条文。 1.4.4 数据库MtrRvw能够为用户创造重要的价值。 数据采集作业与分析和审查作业分离,提高各自效率并明确责任; 将耗的反复操作的手工作业自动化,数据库应用为工作人员,尤其是薪资较昂贵的专业人员节省大量间,使他们可以专注于研究和处理问题; 数据库应用能够按照材料规范,如果必要,甚至试验标准的所有条款的规定审查材料试验报告,因此审查是全面的和彻底的,这样可以避免问题在材料使用后才被发现而给制造厂带来损失,这种损失可能因材料追溯性缺失而进一步扩大; 数据库应用将问题集起来以方便问题的跟踪和处理; 未来将开发除材料试验报告审查以外其它数据应用,包括数据操作跟踪、供应商质量记录、材料复验计划和完全可追溯性; 运行密码的引入使产品规范的灵活订制成为可能。 1.4.5 数据库MtrRvw是辅助用户对材料作出处理决定的工具。 MtrRvw厘清规范和标准的试验特征的逻辑关系,将试验数据放在在这个逻辑关系考察其符合性; 试验特征的逻辑关系可能受一些特殊条件的影响,这些特殊条件由用户设置或确认; 一般的特殊条件容易发现,而依赖其它条件的特殊条件容易被忽略; 用户应该熟悉适用材料的标准体系,对影响材料性能的特征有充分的敏感性; MtrRvw发现的问题可以作为影响对材料的处理决定的诸多因素之一。 1.4.6 安全机制限制对数据库对象的访问。 如果保存数据库文件的计算机的硬盘信息用户注册的硬盘信息不一致,则“Security”窗体和“MTR Review”窗体不能打开; 以分权方式在各帐户间分配权限,“管理员”和“管理员组”没有任何权限; “客户管理员”是“管理员组”的成员,能够设置帐户的密码和修改业务规则,但没有数据应用的权限; “客户用户”有数据应用的权限,但没有管理权限; 开发工具是Microsoft Access 2002,在更新版本Microsoft Access打开数据库,弹出安全警告; 数据库以文件共享方式部署。 1.4.7 适用的用户: 生产金属材料的钢厂和以金属材料为原料的制造厂; 金属试验室和检测公司; 监造工程师、授权检验员、总包方和业主; 标准化组织。 2 关于数据化开发 2.1 数据化的定义 2.1.1 数据化开发全面地和彻底地将材料标准(包括材料规范和试验标准等)的内容(条文、表格和图形)分解为试验特征的标题、要求值(表达式)、依据和属性,以及计量、采样(统计)和数据测量规则等,并包装到各个相关的数据库表。 2.1.2 试验特征之间的逻辑关系通过试验特征对其它试验特征的要求值和测量值的引用,以及数据库表、查询和程序模块的设计表现。 2.1.3 将标准文件整合为“文件汇编” 2.2 试验标准的数据化 2.2.1 数据化的通用方法: 从标准的条文抽象试验特征,按一定的规则命名试验特征。 特征的标题从标准的条文提取,力求言简意赅。 按规定的格式构造试验特征的要求值表达式和依据表达式 2.2.2 化学分析和机械试验标准的数据化: 按标准的规定设置试验特征的数据规则 按试验特征本身以及与其它试验特征的逻辑关系,设置专用窗体的对应控件的属性,以及其它关于计算和审查的要求。 按规定的格式表达特征的要求值表达式 按规定的格式表达特征的依据表达式 辅助字段:ValExpr(特征的测量值的表达式)、ReqtSaved(特征的表达式的值临保存起来以避免重复计算)、Must(对审查的设置)。 2.3 材料规范的数据化 2.3.1 化学元素含量、试验要求及其表达: 化学元素含量保存在“化学元素含量汇总表”; 化学分析的要求统一保存在“试验要求数据表”,该表包含指向特定化学分析方法的索引。 2.3.2 机械性能、试验要求及其表达: 机械性能保存在“机械性能汇总表”; 每种试验的试验要求保存在各自的“试验要求数据表” 2.4 其它检查、测试和试验的数据化 2.4.1 其它检查、测试和试验指除化学分析、热处理工艺检查、机械性能试验以外,一切检查、测试和试验,包括自定义的检查、测试和试验。 2.4.2 “检查、测试和试验标准的数据表”:通过联接字段和值过滤字段从“检查、测试和试验标准的数据表”选定第1个适用的记录,再计算该记录的各个特征的表达式;计算值非空的特征适用,既可以在“Miscellaneous”窗体显示,也会被审查。 2.4.3 “检查、测试和试验标准汇总表”表达各种检查、测试和试验标准的适用条件,设置材料规范和合同/协议的特殊要求,规定从“检查、测试和试验标准的数据表”选择记录以及计算试验特征的要求值的方法。 2.4.4 “检查、测试和试验的特征汇总表”的每一条记录设置一个特定特征的属性。这些属性决定在“Miscellaneous”窗体上相应的控件的显示信息(如果其要求值适用)。这些信息除了可以帮助用户了解特征以外,对一些重要功能的实现也是必要的,如输入字符的过滤、量规的显示和输入、自动计算和入以及显示文件汇编等。 2.4.5 自定义的检查、测试和试验 自定义的检查、测试和试验指用户根据合同或协议规定的任何检查、测试和试验,既可以完全取代,也可以补充材料规范或其它标准规定的检查、测试和试验。 试验的定义:“试验方案的定义表”和“试验特征的定义表”。 3 关于窗体的设计 3.1 数据库MtrRvw使用窗体展现试验特征的标题、要求值、依据和逻辑关系,输入、编辑和管理试验数据,以上下文敏感的方式访问保存在“文件汇编”的标准条文。 窗体以试验标准的试验特征为主体,通常按若干范畴组织起来,而材料规范(产品规范和通用规范)的试验特征与试验标准的相应的试验特征合并。 试验标准的依据包含所有相关标准的条款号,当“F3”键被按下,各标准的条文依次出现在“文件汇编”的相应窗口,因而可以对照阅读。 3.2 显示试验特征的窗体有两种类型。一种是“专用窗体”,适用热处理工艺检查、化学分析和机械性能试验,通常每一种试验方法都有一个对应的窗体; 另一种是“Miscellaneous”窗体,适用其它检查、测试和试验,包括自定义的检查、测试和试验,所有试验实际上使用同一个窗体。 4 关于审查 4.1 审查是基于试验的数据结构和处理机制,将试验数据与材料规范和试验标准的相应的要求比较,通过分析发现问题的过程。 4.2 材料规范规定的材料性能可以因特殊条件的确认而变化,也可以随试验的方法、条件和程序,即其它试验特征的数据而变化。 适用的材料性能必须有对应的试验数据,否则将作为一个问题报告。 试验标准规定的试验特征的要求值也可以因其它试验特征的数据而变化,但除非输入了测量值或者设置了“Must”属性,否则不会被审查。 4.3 审查的成果即问题清单是审查报告和后续数据应用的基础信息,也是联系试验数据和规范/标准的枢纽。 4.4 对问题的研究 4.4.1 “问题清单”的依据包含所有相关标准的条款号,当“F3”键被按下,各标准的条文依次出现在“文件汇编”的相应窗口,因而可以对照阅读。 4.4.2 在“审查”窗体,单击命令按钮“View Details”,打开问题相应的试验窗体,找到发现问题的试验特征,将焦点放入表达该特征的测量值文本框或组合框。 4.4.3 在“审查”窗体,单击命令按钮“View Issues”,打开窗体“View Issues”;窗体“View Issues”将通用数据、“问题清单”和审查信息显示出来,以便分析。 4.4.4 在“审查”窗体,单击命令按钮“Preview Report”,打开报表的预览,报表将通用数据、“问题清单”和审查信息以报告的形式输出到显示器或打印机。 5 产品规范的订制 5.1 定价原则 5.1.1 基本费率 首期开发对象的108个产品规范及已开发的适用的通用规范和试验标准的数据量总和为56.410MB,其,产品规范独占的数据量为22.391MB,产品规范分享的数据库对象的数据量为34.019MB; 上述数据量的1个月(31天)的使用费为1000RMB(元) 基本费率=1000(RMB)÷31(Day)÷56.410(MB)÷1(Account)=0.565055RMB/MB/Day/Account 5.1.2 订制方案的价格 订制方案的价格=基本费率×{[Σ(产品规范独占的数据量×产品规范的使用天数)]+[Σ(分享的数据库对象的数据量×最大使用天数)]}×账户数 账户数:“客户用户”的数目不超过2,账户数=1;“客户用户”的数目超过2,账户数=“客户用户”的数目-1。 5.2 订购流程 5.2.1 通过演示数据库体验应用数据库MtrRvw 5.2.2 订购信息的生成和发送 在“Order”窗体生成订制信息,将订单和明细输出到“Excel”表。 将硬盘信息文件(HddInfo.xls)复制到将来保存数据库文件的计算机,采集该计算机的硬盘信息用户将上述保存订购信息的文件发送到开发者的信箱:[email protected]。 5.2.3 《开发协议》的协商 如果接受用户的订单,开发者向用户的信箱发送《开发协议》。开发者和用户通过各自的信箱协商《开发协议》的细节;当开发者和用户就《开发协议》的所有细节达成一致,《开发协议》生效;开发者和用户按照《开发协议》承担各自的责任并获取相应的权益。 如果不接受用户的订单,开发者向用户的信箱发送说明。 5.2.4 《开发协议》模板:见MtrRvw 帮助-〉用户手册-〉产品规范的订制

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值