当前位置: 移动技术网 > IT编程>开发语言>c# > C#仿密保卡功能的简单实现代码

C#仿密保卡功能的简单实现代码

2019年07月18日  | 移动技术网IT编程  | 我要评论
不过我写的比较草率,代码结构不是很好,也没有体现oop的思想,这几天有空会重构一下。 先把代码发出来: 复制代码 代码如下:public class matrixcar

不过我写的比较草率,代码结构不是很好,也没有体现oop的思想,这几天有空会重构一下。

先把代码发出来:

复制代码 代码如下:

public class matrixcardmanager
    {
        public static int[,] readmatrixcardfromstring(string matrixstr)
        {
            int[,] arr1 = new int[5, 5];
            int[] temparr = new int[25];
            int k = 0;
            string[] temparrstr = matrixstr.split(',');
            for (int i = 0; i < temparr.length; i++)
            {
                temparr[i] = convert.toint32(temparrstr[i]);
            }
            for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < 5; j++)
                {
                    arr1[i, j] = temparr[k];
                    k++;
                }
            }
            return arr1;
        }

        public static string savematrixintostring(int[,] arr)
        {
            string matrixstr = string.empty;
            int[] linearr = new int[25];
            int k = 0;
            for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < 5; j++)
                {
                    linearr[k] = arr[i, j];
                    k++;
                }
            }
            for (int i = 0; i < linearr.length; i++)
            {
                matrixstr += linearr[i];
                if (i < 24)
                {
                    matrixstr += ",";
                }
            }
            return matrixstr;
        }

        public static void printmatrix(int[,] arr)
        {
            console.writeline("  | a\tb\tc\td\te");
            console.writeline("-------------------------------------------");
            for (int k = 0; k < 5; k++)
            {
                console.write(k + " | ");
                for (int l = 0; l < 5; l++)
                {
                    console.write(arr[k, l] + "\t");
                }
                console.writeline();
            }
        }

        public static int[,] generaterandommatrix()
        {
            random r = new random();
            int[,] arr = new int[5, 5];
            for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < 5; j++)
                {
                    arr[i, j] = r.next(0, 100);
                }
            }
            return arr;
        }

        public static char getcolcode(int colindex)
        {
            char colcode = '-';
            switch (colindex)
            {
                case 0:
                    colcode = 'a';
                    break;
                case 1:
                    colcode = 'b';
                    break;
                case 2:
                    colcode = 'c';
                    break;
                case 3:
                    colcode = 'd';
                    break;
                case 4:
                    colcode = 'e';
                    break;
                default:
                    break;
            }
            return colcode;
        }

        public static bool validate(int[,] arr, int colindex1, int rowindex1, int colindex2, int rowindex2, int colindex3, int rowindex3, string userinput, bool validflag)
        {
            try
            {
                string[] inputarr = userinput.split(',');

                bool ok0 = arr[rowindex1, colindex1] == convert.toint32(inputarr[0]);
                bool ok1 = arr[rowindex2, colindex2] == convert.toint32(inputarr[1]);
                bool ok2 = arr[rowindex3, colindex3] == convert.toint32(inputarr[2]);

                if (ok0 && ok1 && ok2)
                {
                    validflag = true;
                }
                else
                {
                    validflag = false;
                }
            }
            catch (exception)
            {
                console.writeline("oh, **!");
            }
            return validflag;
        }
    }

调用:

复制代码 代码如下:

static void main(string[] args)
        {
            console.writeline("generate and print matrix card:\n");
            int[,] arr = matrixcardmanager.generaterandommatrix();
            matrixcardmanager.printmatrix(arr);
            console.writeline("\n");

            console.writeline("save matrix card into string for storage:\n");
            string matrixstr = matrixcardmanager.savematrixintostring(arr);
            console.writeline(matrixstr);
            console.writeline("\n");

            console.writeline("read matrix card from string:\n");
            int[,] arr1 = matrixcardmanager.readmatrixcardfromstring(matrixstr);
            matrixcardmanager.printmatrix(arr1);
            console.writeline("\n");

            console.writeline("matrix card validation:\n");
            random r = new random();

            int colindex1 = r.next(0, 4);
            int rowindex1 = r.next(0, 4);
            char colcode1 = matrixcardmanager.getcolcode(colindex1);

            int colindex2 = r.next(0, 4);
            int rowindex2 = r.next(0, 4);
            char colcode2 = matrixcardmanager.getcolcode(colindex2);

            int colindex3 = r.next(0, 4);
            int rowindex3 = r.next(0, 4);
            char colcode3 = matrixcardmanager.getcolcode(colindex3);

            console.writeline("please input card number at {0}{1},{2}{3},{4}{5}:\n", colcode1, rowindex1, colcode2, rowindex2, colcode3, rowindex3);

            string userinput = console.readline();

            bool validflag = false;
            validflag = matrixcardmanager.validate(arr, colindex1, rowindex1, colindex2, rowindex2, colindex3, rowindex3, userinput, validflag);
            if (validflag)
            {
                console.writeline("all input are correct!");
            }
            else
            {
                console.writeline("sorry, your input were wrong!");
            }
            console.readkey();
        }

效果:

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网