• ISBN号校检程序(C#与SQL版)


     1 
     2 /*
     3   Author:EF 
     4   Email:escms@qq.com
     5   Date:08-10-14
     6   Desc:计算正确ISBN号,错误则返回为空
     7   DEMO:select dbo.isbn('7504536093')
     8 */
     9 
    10 CREATE FUNCTION ISBN(@isbn varchar(50))
    11 --ALTER FUNCTION ISBN(@isbn varchar(50))
    12 RETURNS nvarchar(50)
    13 AS
    14 BEGIN
    15     DECLARE @i int
    16     DECLARE @sn int
    17     DECLARE @endisbn nvarchar(50)
    18     SET @endisbn = ''
    19     
    20     IF (len(@isbn>=12 and left(@isbn,3= '978')
    21         BEGIN
    22             SET @isbn = rtrim(ltrim(replace(@isbn,'-','')))
    23             SET @isbn = replace(replace(@isbn,'x',''),'.','')
    24             IF (ISNUMERIC(@isbn)=1 and len(@isbn>= 9)
    25             BEGIN
    26             SET @sn = cast(left(@isbn,1as int+ 
    27                      cast(right(left(@isbn,2),1as int* 3 + 
    28                      cast(right(left(@isbn,3),1as int+ 
    29                      cast(right(left(@isbn,4),1as int* 3 + 
    30                      cast(right(left(@isbn,5),1as int+ 
    31                      cast(right(left(@isbn,6),1as int* 3 + 
    32                      cast(right(left(@isbn,7),1as int+ 
    33                      cast(right(left(@isbn,8),1as int* 3 + 
    34                      cast(right(left(@isbn,9),1as int+ 
    35                      cast(right(left(@isbn,10),1as int* 3 + 
    36                      cast(right(left(@isbn,11),1as int+ 
    37                      cast(right(left(@isbn,12),1as int* 3
    38                 SET @sn = 10-(@sn % 10)
    39                 IF @sn = 10
    40                    SET @sn = 0
    41                 SET @endisbn = left(@isbn,12+ cast(@sn as varchar)
    42             END
    43             ELSE
    44                 SET @endisbn = 'Error'
    45 
    46         END
    47     IF (len(@isbn>=9 and len(@isbn<= 10 and left(@isbn,1= '7')
    48         BEGIN
    49             SET @isbn = rtrim(ltrim(replace(@isbn,'-','')))
    50             SET @isbn = replace(replace(@isbn,'x',''),'.','')
    51             IF (ISNUMERIC(@isbn)=1 and len(@isbn>= 9)
    52             BEGIN
    53             SET @sn = cast(right(left(@isbn,1),1as int* 10 + 
    54                      cast(right(left(@isbn,2),1as int* 9 +  
    55                      cast(right(left(@isbn,3),1as int* 8 + 
    56                      cast(right(left(@isbn,4),1as int* 7 + 
    57                      cast(right(left(@isbn,5),1as int* 6 + 
    58                      cast(right(left(@isbn,6),1as int* 5 + 
    59                      cast(right(left(@isbn,7),1as int* 4 + 
    60                      cast(right(left(@isbn,8),1as int* 3 + 
    61                      cast(right(left(@isbn,9),1as int* 2
    62 
    63                 SET @sn = 11-(@sn % 11)
    64                 IF @sn = 10
    65                     SET @endisbn = left(@isbn,9+ 'X'
    66                 ELSE
    67                     BEGIN
    68                     IF @sn = 11
    69                         SET @endisbn = left(@isbn,9+ '0'
    70                     ELSE
    71                         SET @endisbn = left(@isbn,9+ cast(@sn as varchar)
    72                     END
    73             END
    74             ELSE
    75                 SET @endisbn = 'Error'
    76 
    77         END
    78     IF @endisbn = ''
    79         SET @endisbn = @isbn
    80 
    81 RETURN @endisbn
    82 END

    输入9~10位ISBN号可计算出10位正确的ISBN号。

    输入11~14位ISBN号可计算出13位正确的ISBN号。

    用于校检和规范ISBN号。

     C#版:

     1 
     2         private void button1_Click(object sender, EventArgs e)
     3         {
     4             if (textBox1.Text == "" || textBox1.Text.Length > 15)
     5             {
     6                 MessageBox.Show("书号输入不正确!","错误");
     7                 return;
     8             }
     9             try
    10             {
    11                 string isbnstr;
    12                 int isbns;
    13                 isbnstr = textBox1.Text.Trim();
    14                 isbnstr = isbnstr.Replace("-""").Replace("X""").Replace(".""");
    15                 if (isbnstr.Length >= 11 && isbnstr.Length <= 14)
    16                 {
    17                     isbns=0;
    18                     isbns += Convert.ToInt32(isbnstr.Substring(01)) * 1;
    19                     isbns += Convert.ToInt32(isbnstr.Substring(11)) * 3;
    20                     isbns += Convert.ToInt32(isbnstr.Substring(21)) * 1;
    21                     isbns += Convert.ToInt32(isbnstr.Substring(31)) * 3
    22                     isbns += Convert.ToInt32(isbnstr.Substring(41)) * 1;
    23                     isbns += Convert.ToInt32(isbnstr.Substring(51)) * 3
    24                     isbns += Convert.ToInt32(isbnstr.Substring(61)) * 1;
    25                     isbns += Convert.ToInt32(isbnstr.Substring(71)) * 3
    26                     isbns += Convert.ToInt32(isbnstr.Substring(81)) * 1;
    27                     isbns += Convert.ToInt32(isbnstr.Substring(91)) * 3
    28                     isbns += Convert.ToInt32(isbnstr.Substring(101)) * 1;
    29                     isbns += Convert.ToInt32(isbnstr.Substring(111)) * 3;
    30                     isbns = 10 - (isbns % 10);
    31                     if (isbns == 10) { isbns = 0; }
    32                     textBox2.Text = isbnstr.Substring(012+ isbns.ToString();
    33                 }
    34                 else if (isbnstr.Length >= 9 && isbnstr.Length <= 10)
    35                 {
    36                     isbns = 0;
    37                     isbns += Convert.ToInt32(isbnstr.Substring(01)) * 10;
    38                     isbns += Convert.ToInt32(isbnstr.Substring(11)) * 9;
    39                     isbns += Convert.ToInt32(isbnstr.Substring(21)) * 8;
    40                     isbns += Convert.ToInt32(isbnstr.Substring(31)) * 7;
    41                     isbns += Convert.ToInt32(isbnstr.Substring(41)) * 6;
    42                     isbns += Convert.ToInt32(isbnstr.Substring(51)) * 5;
    43                     isbns += Convert.ToInt32(isbnstr.Substring(61)) * 4;
    44                     isbns += Convert.ToInt32(isbnstr.Substring(71)) * 3;
    45                     isbns += Convert.ToInt32(isbnstr.Substring(81)) * 2;
    46                     isbns = 11 - (isbns % 11);
    47                     if (isbns == 10) {
    48                         textBox2.Text = isbnstr.Substring(09+ "X";
    49                     }
    50                     else if (isbns == 11)
    51                     { textBox2.Text = isbnstr.Substring(09+ "0"; }
    52                     else
    53                     {
    54                         textBox2.Text = isbnstr.Substring(09+ isbns.ToString();
    55                     }
    56                 }
    57                 else {
    58                     MessageBox.Show("不可识别的ISBN号""错误");
    59                     return;
    60                 }
    61             }
    62             catch
    63             {
    64                 MessageBox.Show("不可识别的ISBN号""错误");
    65                 return;
    66             }
    67 
    68 
    69         }
    70 
  • 相关阅读:
    opencv 在工业中的应用:模板匹配
    opencv 在工业中的应用:圆孔定位
    视觉基础与开发思路-第十节其他功能简介及总结
    视觉基础与开发思路-第九节形态学操作
    视觉基础与开发思路--第八节图像分割之轮廓进一步处理
    视觉基础与开发思路-第七节图像分割之点线圆边缘
    视觉基础与开发思路--第六节区域特征提取
    视觉基础与开发思路--第五节阈值分割
    vmware key
    编程常用命名大全
  • 原文地址:https://www.cnblogs.com/gsyifan/p/1660996.html
Copyright © 2020-2023  润新知