public static RULE GetNamesIDs(SqlConnection Connection, int flag = 0, int ID = 1, string Name = null)
        {
            string     sqlExpression = findNeedSELECT(flag, ID, Name);
            RULE       R             = new RULE();
            SqlCommand command       = new SqlCommand(sqlExpression, Connection);

            try
            {
                Connection.Open();
                SqlDataReader reader = command.ExecuteReader();
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        R.ID   = reader.GetInt32(0);
                        R.Name = reader.GetString(1);
                    }
                }
                Connection.Close();
            }
            catch (SqlException se)
            {
                MessageBox.Show("GetNamesIDs - " + "SELECT exeption: " + se.Number.ToString() + "\n" + se.Message);
                Connection.Close();
            }
            if (Connection.State != ConnectionState.Closed)
            {
                Connection.Close();
            }
            return(R);
        }
示例#2
0
            public Task <List <string> > CorrectRules(SqlConnection Connection)
            {
                List <RULE>   ListNode        = new List <RULE>();
                List <string> RuleNameStrings = new List <string>();
                RULE          R = new RULE();

                R.Copy(this);
                ListNode = SELECTallRules(Connection, true, R, ListNode);
                for (int i = 0; i < ListNode.Count; ++i)
                {
                    if (R.Node.Sr(ListNode[i].Node))
                    {
                        RuleNameStrings.Add(ListNode[i].Name);
                    }
                }
                return(Task.Run(() =>
                {
                    ListNode = SELECTallRules(Connection, true, R, ListNode);
                    for (int i = 0; i < ListNode.Count; ++i)
                    {
                        if (R.Node.Sr(ListNode[i].Node))
                        {
                            RuleNameStrings.Add(ListNode[i].Name);
                        }
                    }
                    return RuleNameStrings;
                }));
            }
示例#3
0
        /// <summary>
        /// 根据ID获取数据模型
        /// </summary>
        /// <param name="id">编号</param>
        /// <returns></returns>
        public RULE Get(string id)
        {
            RULE item = m_BLL.GetById(id);


            return(item);
        }
示例#4
0
 public void ImportKB(StreamReader sr)
 {
     //表示知识库已经存在了,可以进行数据的加载了
     while (!sr.EndOfStream)
     {
         string sp;
         LinkedListNode <CAUSE> cp;
         LinkedListNode <RULE>  rp;
         sp = sr.ReadLine();
         if (sp == "" || sp == "\\") //新的规则的标记
         {
             break;
         }
         RULE nr = new RULE(sp);
         rp = new LinkedListNode <RULE>(KnowledgeBase, nr);
         KnowledgeBase.AddFirst(rp);
         sp = sr.ReadLine();
         while (sp != "\\") //表示的是前件
         {
             CAUSE nc = new CAUSE();
             nc.Cause = sp;
             cp       = new LinkedListNode <CAUSE>(rp.Item.Cause_chain, nc);
             rp.Item.Cause_chain.AddLast(cp);
             sp = sr.ReadLine();
         }
     }
     sr.Close();
     MarkKB();
 }
示例#5
0
        public void toggleDuelRules(int buttonId)
        {
            if (buttonId == 102)
            {
                acceptDuel();
                return;
            }
            if (buttonId == 107)
            {
                declineDuel();
                return;
            }
            RULE rule = getArrayId(buttonId);

            if (rule == RULE.NOTHING)
            {
                return;
            }

            //Compute the bitwse dule rules configuration packet data.
            if (ruleEnabled(rule))
            {                         //rule is set, unset it.
                setRule(rule, false); //off
                p2.getDuel().setRule(rule, false);
            }
            else
            {                        //rule is unset, set it.
                setRule(rule, true); //on
                p2.getDuel().setRule(rule, true);
            }

            if (ruleEnabled(RULE.WEAPON))
            {
                player.getPackets().sendMessage("You will not be able to use two-handed weapons, such as bows.");
                p2.getPackets().sendMessage("You will not be able to use two-handed weapons, such as bows.");
            }
            if (ruleEnabled(RULE.ARROWS))
            {
                player.getPackets().sendMessage("You will not be able to use any weapon which uses arrows.");
                p2.getPackets().sendMessage("You will not be able to use any weapon which uses arrows.");
            }

            if (rules > (int)RULE.NOTHING)
            {
                player.getPackets().sendConfig(286, rules);
                p2.getPackets().sendConfig(286, rules);
            }
            else
            {
                player.getPackets().sendConfig(286, (int)RULE.NOTHING);
                p2.getPackets().sendConfig(286, (int)RULE.NOTHING);
            }

            resetStatus();
        }
示例#6
0
 public void setRule(RULE rule, bool set)
 {
     if (set)
     {
         rules |= (int)rule;
     }
     else
     {
         rules &= ~(int)rule;
     }
 }
示例#7
0
 /// <summary>
 /// 创建一个规程表
 /// </summary>
 /// <param name="validationErrors">返回的错误信息</param>
 /// <param name="db">数据库上下文</param>
 /// <param name="entity">一个规程表</param>
 /// <returns></returns>
 public bool Create(ref ValidationErrors validationErrors, RULE entity)
 {
     try
     {
         repository.Create(entity);
         return(true);
     }
     catch (Exception ex)
     {
         validationErrors.Add(ex.Message);
         ExceptionsHander.WriteExceptions(ex);
     }
     return(false);
 }
示例#8
0
        public static void DefaultRules(SqlConnection Connection)
        {
            if (Connection.State != ConnectionState.Closed)
            {
                Connection.Close();
            }
            RULE R = new RULE();

            R.NewRule("Sanatorii v gorah", SZft: 1, Gff: 1, Gfs: 1, Gft: 1);
            DoINSERTS(Connection, R);
            R.NewRule("Sanatorii vozle vodi", SZft: 1, Rff: 1, Rfs: 1, Rft: 1);
            DoINSERTS(Connection, R);
            R.NewRule("Sanatorii", SZft: 1);
            DoINSERTS(Connection, R);
            R.NewRule("Otdih v palatkah", THff: 2, THfs: 2, SZfs: 1, SZff: 1, P: 1, OnP: 1, OvKff: 1, OvKfs: 1);
            DoINSERTS(Connection, R);
            R.NewRule("Voennii muzei", VTff: 1);
            DoINSERTS(Connection, R);
            R.NewRule("Park slavi", VTfs: 1);
            DoINSERTS(Connection, R);
            R.NewRule("Gornolijnii kurort", Gff: 1, Gfs: 1, Gft: 1, SZfs: 1, SZff: 1, TLff: 1, TLfs: 1, AOff: 1, AOfs: 1, AOft: 1);
            DoINSERTS(Connection, R);
            R.NewRule("Poezdka na more", Rff: 1, AOfs: 1);
            DoINSERTS(Connection, R);
            R.NewRule("Poezdka na ozero", Rfs: 1, AOfs: 1);
            DoINSERTS(Connection, R);
            R.NewRule("Poezdka na ozero", Rft: 1, AOfs: 1);
            DoINSERTS(Connection, R);
            R.NewRule("Daiving", SZff: 1, Rff: 1, Rfs: 1, Rft: 1, AOft: 1);
            DoINSERTS(Connection, R);
            R.NewRule("Alpinizm", SZff: 1, Gff: 1, Gfs: 1, Gft: 1, AOff: 1, AOft: 1);
            DoINSERTS(Connection, R);
            R.NewRule("Ekskursia v gorod", OvKff: 1, OvKfs: 1, Aff: 1, Afs: 1, BGff: 1, BGfs: 1, BGft: 1, MGff: 1);
            DoINSERTS(Connection, R);
            R.NewRule("Ekskursia v selo", Aff: 1, Afs: 1, MGfs: 1);
            DoINSERTS(Connection, R);
            R.NewRule("Poezdka v mesto s istoricheskim naslediem", D: 1, Aff: 1, Afs: 1, P: 1, BGff: 1, BGfs: 1, BGft: 1, MGff: 1, MGfs: 1);
            DoINSERTS(Connection, R);
            R.NewRule("Zapovedhik", OnP: 1, P: 1, D: 1);
            DoINSERTS(Connection, R);
            R.NewRule("Park", BGff: 1, BGfs: 1, BGft: 1, MGff: 1, MGfs: 1, OnP: 1, P: 1);
            DoINSERTS(Connection, R);
            if (Connection.State != ConnectionState.Closed)
            {
                Connection.Close();
            }
        }
示例#9
0
 private void RuleAddEditDeleteForm_Load(object sender, EventArgs e)
 {
     Rule = new RULE();
     Rule.Clear();
     AlgoritmStepIndex              = 0;
     tabPage1_groupBox.Text         = "Предпочитает активный отдых?";
     tabPage1_textBox_Name.Text     = null;
     tabPage1_label1.Text           = "Название места отдыха:";
     tabPage1_progressBar.Step      = 31;
     tabPage1_radioButtonLike.Text  = "Нравится";
     tabPage1_radioButtonDLike.Text = "Не нравится";
     tabPage1_radioButtonDNM.Text   = "Не имеет значения";
     tabPage1_MoveText();
     tabPage1_button_Back.Enabled   = false;
     tabPage1_button_Accept.Enabled = false;
     tabPage1_button_Cancel.Enabled = false;
 }
示例#10
0
        /// <summary>
        /// 创建
        /// </summary>
        /// <param name="entity">实体对象</param>
        /// <returns></returns>
        public Common.ClientResult.Result Post([FromBody] RULE entity)
        {
            Common.ClientResult.Result result = new Common.ClientResult.Result();
            if (entity != null && ModelState.IsValid)
            {
                string currentPerson = GetCurrentPerson();
                entity.CREATETIME   = DateTime.Now;
                entity.CREATEPERSON = currentPerson;
                if (string.IsNullOrWhiteSpace(entity.ID))
                {
                    entity.ID = Result.GetNewId();
                }

                string returnValue = string.Empty;
                if (m_BLL.Create(ref validationErrors, entity))
                {
                    LogClassModels.WriteServiceLog(Suggestion.InsertSucceed + ",规程表的信息的Id为" + entity.ID, "规程表"
                                                   );//写入日志
                    result.Code    = Common.ClientCode.Succeed;
                    result.Message = Suggestion.InsertSucceed;
                    return(result); //提示创建成功
                }
                else
                {
                    if (validationErrors != null && validationErrors.Count > 0)
                    {
                        validationErrors.All(a =>
                        {
                            returnValue += a.ErrorMessage;
                            return(true);
                        });
                    }
                    LogClassModels.WriteServiceLog(Suggestion.InsertFail + ",规程表的信息," + returnValue, "规程表"
                                                   );//写入日志
                    result.Code    = Common.ClientCode.Fail;
                    result.Message = Suggestion.InsertFail + returnValue;
                    return(result); //提示插入失败
                }
            }

            result.Code    = Common.ClientCode.FindNull;
            result.Message = Suggestion.InsertFail + ",请核对输入的数据的格式"; //提示输入的数据的格式不对
            return(result);
        }
示例#11
0
        // PUT api/<controller>/5
        /// <summary>
        /// 编辑
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public Common.ClientResult.Result Put([FromBody] RULE entity)
        {
            Common.ClientResult.Result result = new Common.ClientResult.Result();
            if (entity != null && ModelState.IsValid)
            {   //数据校验
                string currentPerson = GetCurrentPerson();
                entity.UPDATETIME   = DateTime.Now;
                entity.UPDATEPERSON = currentPerson;

                string returnValue = string.Empty;
                if (m_BLL.Edit(ref validationErrors, entity))
                {
                    LogClassModels.WriteServiceLog(Suggestion.UpdateSucceed + ",规程表信息的Id为" + entity.ID, "规程表"
                                                   );//写入日志
                    result.Code    = Common.ClientCode.Succeed;
                    result.Message = Suggestion.UpdateSucceed;
                    return(result); //提示更新成功
                }
                else
                {
                    if (validationErrors != null && validationErrors.Count > 0)
                    {
                        validationErrors.All(a =>
                        {
                            returnValue += a.ErrorMessage;
                            return(true);
                        });
                    }
                    LogClassModels.WriteServiceLog(Suggestion.UpdateFail + ",规程表信息的Id为" + entity.ID + "," + returnValue, "规程表"
                                                   );//写入日志
                    result.Code    = Common.ClientCode.Fail;
                    result.Message = Suggestion.UpdateFail + returnValue;
                    return(result); //提示更新失败
                }
            }
            result.Code    = Common.ClientCode.FindNull;
            result.Message = Suggestion.UpdateFail + "请核对输入的数据的格式";
            return(result); //提示输入的数据的格式不对
        }
示例#12
0
 public void Copy(RULE R)
 {
     ID   = R.ID;
     Name = R.Name;
     Node.Copy(R.Node);
 }
示例#13
0
 public void SetIdName(RULE R)
 {
     ID   = R.ID;
     Name = R.Name;
 }
示例#14
0
        public static void DoINSERTS(SqlConnection Connection, RULE Rule = default(RULE))
        {
            string Ex = null;

            string[] sqlExpression = new string[13];
            int      ID            = 0;

            sqlExpression[0] = "INSERT INTO Rules(Priroda, OtdihNaPrirode,Dostoprimech,TempSred,Name) " +
                               $"values({Rule.Node.Prirodu}, {Rule.Node.OtdihNaPrirode}, {Rule.Node.Dostoprimechatelnosti}, {Rule.Node.Temp_Srednaa},'{Rule.Name}')";
            sqlExpression[1] = $"SELECT TOP 1 ID FROM Rules WHERE Name='{Rule.Name}' ORDER BY ID DESC";
            try
            {
                Connection.Open();
                Ex += "Open";
                SqlCommand command = new SqlCommand(sqlExpression[0], Connection);
                Ex += "\n\t" + sqlExpression[0] + "try... ";
                SqlDataReader reader = command.ExecuteReader();
                Ex     += "Done.";
                command = new SqlCommand(sqlExpression[1], Connection);
                Ex     += "\n\t" + sqlExpression[1] + "try... ";
                reader.Close();
                reader = command.ExecuteReader();
                Ex    += "Done.";
                if (reader.HasRows)
                {
                    Ex += "\n\t\t\t\tHasRows.";
                    while (reader.Read())
                    {
                        ID  = reader.GetInt32(0);
                        Ex += $"\n\t\t\t\tHasID: {ID}";
                    }
                }
                reader.Close();
                Connection.Close();
                sqlExpression[2] = "INSERT INTO AktivniiOtdih(ID, FF, FS, FT) " +
                                   $"values({ID}, {Rule.Node.AktivniiOtdih.FF}, {Rule.Node.AktivniiOtdih.FS}, {Rule.Node.AktivniiOtdih.FT})";
                sqlExpression[3] = "INSERT INTO Arhitectura(ID, FF, FS)  " +
                                   $"values({ID}, {Rule.Node.Arhitectura.FF}, {Rule.Node.Arhitectura.FS})";
                sqlExpression[4] = "INSERT INTO BolshieGoroda(ID, FF, FS, FT) " +
                                   $"values({ID}, {Rule.Node.BolshieGoroda.FF}, {Rule.Node.BolshieGoroda.FS}, {Rule.Node.BolshieGoroda.FT})";
                sqlExpression[5] = "INSERT INTO Gori(ID, FF, FS, FT) " +
                                   $"values({ID}, {Rule.Node.Gori.FF}, {Rule.Node.Gori.FS}, {Rule.Node.Gori.FT})";
                sqlExpression[6] = "INSERT INTO MalenkieGoroda(ID, FF, FS) " +
                                   $"values({ID}, {Rule.Node.MalenkieGoroda.FF}, {Rule.Node.MalenkieGoroda.FS})";
                sqlExpression[7] = "INSERT INTO OtdihVKompanii(ID, FF, FS) " +
                                   $"values({ID}, {Rule.Node.OtdihVKompanii.FF}, {Rule.Node.OtdihVKompanii.FS})";
                sqlExpression[8] = "INSERT INTO Reki(ID, FF, FS, FT) " +
                                   $"values({ID}, {Rule.Node.Reki.FF}, {Rule.Node.Reki.FS}, {Rule.Node.Reki.FT})";
                sqlExpression[9] = "INSERT INTO SostoanieZdorovia(ID, FF, FS, FT) " +
                                   $"values({ID}, {Rule.Node.SostoanieZdorovia.FF},{Rule.Node.SostoanieZdorovia.FS}, {Rule.Node.SostoanieZdorovia.FT})";
                sqlExpression[10] = "INSERT INTO Temp_Hight(ID, FF, FS) " +
                                    $"values({ID}, {Rule.Node.Temp_Hight.FF}, {Rule.Node.Temp_Hight.FS})";
                sqlExpression[11] = "INSERT INTO Temp_Low(ID, FF, FS) " +
                                    $"values({ID}, {Rule.Node.Temp_Low.FF}, {Rule.Node.Temp_Low.FS})";
                sqlExpression[12] = "INSERT INTO VoennaaTematika(ID, FF, FS) " +
                                    $"values({ID}, {Rule.Node.VoennaaTematika.FF},{Rule.Node.VoennaaTematika.FS})";
                for (int i = 2; i < 13; ++i)
                {
                    command = new SqlCommand(sqlExpression[i], Connection);
                    Ex     += "\n\t" + sqlExpression[i] + "try... ";
                    Connection.Open();
                    reader = command.ExecuteReader();
                    reader.Close();
                    Connection.Close();
                    Ex += "Done.";
                }
            }
            catch (SqlException se)
            {
                MessageBox.Show("NeedNewTables - " + "SELECT exeption: " + se.Number.ToString() + "\n" + se.Message);

                Connection.Close();
                CreateTable(Connection);
            }
            Connection.Close();
            if (Connection.State != ConnectionState.Closed)
            {
                Connection.Close();
            }
        }
示例#15
0
        public bool ruleEnabled(RULE i)
        {
            int bits = (int)i;

            return((rules & bits) == bits);
        }
示例#16
0
        public static List <RULE> SELECTallRules(SqlConnection Connection, bool flag = false, RULE Rule = default(RULE), List <RULE> ListNode = null)
        {
            string      sqlExpression = null;
            SqlCommand  command;
            RULE        NodeList = new RULE();
            List <RULE> List     = new List <RULE>();

            if (flag)
            {
                sqlExpression = CreateSELECTString(Rule);
            }
            else
            {
                sqlExpression = Properties.Resources.SelectAllString;
                //sqlExpression = Properties.Resources.SelectAllAlternative;
            }
            try
            {
                Connection.Open();
                command = new SqlCommand(sqlExpression, Connection);
                SqlDataReader reader = command.ExecuteReader();
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        NodeList.ID   = reader.GetInt32(0);
                        NodeList.Name = reader.GetString(1);
                        NodeList.Node.AktivniiOtdih.FF      = reader.GetByte(2);
                        NodeList.Node.AktivniiOtdih.FS      = reader.GetByte(3);
                        NodeList.Node.AktivniiOtdih.FT      = reader.GetByte(4);
                        NodeList.Node.OtdihVKompanii.FF     = reader.GetByte(5);
                        NodeList.Node.OtdihVKompanii.FS     = reader.GetByte(6);
                        NodeList.Node.Prirodu               = reader.GetByte(7);
                        NodeList.Node.OtdihNaPrirode        = reader.GetByte(8);
                        NodeList.Node.Arhitectura.FF        = reader.GetByte(9);
                        NodeList.Node.Arhitectura.FS        = reader.GetByte(10);
                        NodeList.Node.BolshieGoroda.FF      = reader.GetByte(11);
                        NodeList.Node.BolshieGoroda.FS      = reader.GetByte(12);
                        NodeList.Node.BolshieGoroda.FT      = reader.GetByte(13);
                        NodeList.Node.MalenkieGoroda.FF     = reader.GetByte(14);
                        NodeList.Node.MalenkieGoroda.FS     = reader.GetByte(15);
                        NodeList.Node.Dostoprimechatelnosti = reader.GetByte(16);
                        NodeList.Node.VoennaaTematika.FF    = reader.GetByte(17);
                        NodeList.Node.VoennaaTematika.FS    = reader.GetByte(18);
                        NodeList.Node.Reki.FF               = reader.GetByte(19);
                        NodeList.Node.Reki.FS               = reader.GetByte(20);
                        NodeList.Node.Reki.FT               = reader.GetByte(21);
                        NodeList.Node.Gori.FF               = reader.GetByte(22);
                        NodeList.Node.Gori.FS               = reader.GetByte(23);
                        NodeList.Node.Gori.FT               = reader.GetByte(24);
                        NodeList.Node.SostoanieZdorovia.FF  = reader.GetByte(25);
                        NodeList.Node.SostoanieZdorovia.FS  = reader.GetByte(26);
                        NodeList.Node.SostoanieZdorovia.FT  = reader.GetByte(27);
                        NodeList.Node.Temp_Hight.FF         = reader.GetByte(28);
                        NodeList.Node.Temp_Hight.FS         = reader.GetByte(29);
                        NodeList.Node.Temp_Low.FF           = reader.GetByte(30);
                        NodeList.Node.Temp_Low.FS           = reader.GetByte(31);
                        NodeList.Node.Temp_Srednaa          = reader.GetByte(32);
                        List.Add(NodeList);
                    }
                }
            }
            catch (SqlException se)
            {
                MessageBox.Show("SELECTallRules - " + "SELECT exeption: " + se.Number.ToString() + "\n" + se.Message);

                Connection.Close();
                CreateTable(Connection);
            }
            if (Connection.State != ConnectionState.Closed)
            {
                Connection.Close();
            }
            if (ListNode != null)
            {
                ListNode = List;
            }
            return(List);
        }
示例#17
0
        public static List <RULE> UPDATEallRules(SqlConnection Connection, bool flag = false, RULE Rule = default(RULE), List <RULE> ListNode = default(List <RULE>))
        {
            string[]   sqlExpression = new string[12];
            SqlCommand command;

            try
            {
                Connection.Open();
                SqlDataReader reader;
                if (flag)
                {
                    sqlExpression = CreateUPDATEString(Connection, Rule, 3);
                }
                else
                {
                    for (int i = 0; i < ListNode.Count; ++i)
                    {
                        sqlExpression = CreateUPDATEString(Connection, ListNode[i], 3);
                    }
                }
                for (int i = 0; i < sqlExpression.Length; ++i)
                {
                    command = new SqlCommand(sqlExpression[i], Connection);
                    reader  = command.ExecuteReader();
                }
            }
            catch (SqlException se)
            {
                MessageBox.Show("NeedNewTables - " + "SELECT exeption: " + se.Number.ToString() + "\n" + se.Message);

                Connection.Close();
                CreateTable(Connection);
            }
            if (Connection.State != ConnectionState.Closed)
            {
                Connection.Close();
            }
            return(ListNode);
        }
示例#18
0
                public TSQLWhereItem(string nameField, RULE rules, params object[] limits)
                {
                    //int lim_max = -1
                    //    , range = -1;

                    _nameField = nameField;
                    if ((!(limits == null)) &&
                        (limits.Length > 0))
                    {
                        if (limits.Length == 1)   // единственный объект
                        {
                            if (limits[0] is Array)
                            {
                                // предполагаем, что все объекты переданы в массиве единственного параметра
                                //Array.Copy(limits[0] as Array, _limits, (limits[0] as Array).Length);
                                _limits = new object[(limits[0] as Array).Length];
                                (limits[0] as Array).CopyTo(_limits, 0);
                            }
                            else
                            {
                                // предполагаем, что единственный объект простой, пригодный для использования в запросе для ограничения
                                _limits = new object[limits.Length];
                                limits.CopyTo(_limits, 0);
                            }
                        }
                        else     // объектов более, чем 1
                        // предполагаем, что все объекты простые, пригодные для использования в запросе для ограничения
                        {
                            _limits = new object[limits.Length];
                            limits.CopyTo(_limits, 0);
                        }
                    }
                    else
                    {
                        ;
                    }
                    Rules = rules;

                    Ready = 0;

                    //lim_max = (int)_limit;
                    //range = 1;
                    //while ((lim_max / range) > 0) range *= 10;
                    //lim_max += range;

                    foreach (RULE rule in Enum.GetValues(typeof(RULE)))
                    {
                        if ((rule & Rules) == rule)
                        {
                            switch (rule)
                            {
                            case RULE.Equale:
                                Value = string.Format(@"{0}={1}", _nameField, (int)_limits[0]);
                                break;

                            case RULE.Between:
                                Value = string.Format(@"{0}>{1} AND {0}<{2}", _nameField, (int)_limits[0], (int)_limits[1]);
                                break;

                            default:
                                break;
                            }
                        }
                        else
                        {
                            ;
                        }
                    }
                }
示例#19
0
        public void CreatKB()                  //创建知识库
        {
            LinkedListNode <CAUSE> cp;
            LinkedListNode <RULE>  rp;
            int    i, j;
            string sp;

            FreeKB(KnowledgeBase);
            FreeKB(Used);
            try
            {
                StreamReader sr = new StreamReader("rule.dat");
                //表示知识库已经存在了,可以进行数据的加载了
                while (!sr.EndOfStream)
                {
                    sp = sr.ReadLine();
                    if (sp == "" || sp == "\\") //新的规则的标记
                    {
                        break;
                    }
                    RULE nr = new RULE(sp);
                    rp = new LinkedListNode <RULE>(KnowledgeBase, nr);
                    KnowledgeBase.AddFirst(rp);
                    sp = sr.ReadLine();
                    while (sp != "\\") //表示的是前件
                    {
                        CAUSE nc = new CAUSE();
                        nc.Cause = sp;
                        cp       = new LinkedListNode <CAUSE>(rp.Item.Cause_chain, nc);
                        rp.Item.Cause_chain.AddLast(cp);
                        sp = sr.ReadLine();
                    }
                }
                sr.Close();
            }
            catch (FileNotFoundException)
            {
                Console.Write("\n knowledgebase is not exist,to establish!\n");
                for (i = 1; ; i++)
                {
                    Console.Write("\n********NO  " + i + "  rule********");
                    Console.Write("\n**Conclusion:(is/can/has)"); //首先输入结论
                    sp = Console.ReadLine();
                    if (sp == "")
                    {
                        break;
                    }
                    RULE nr = new RULE(sp);
                    rp = new LinkedListNode <RULE>(KnowledgeBase, nr); //创建规则链
                    KnowledgeBase.AddFirst(rp);
                    for (j = 1; ; j++)
                    {
                        Console.Write("\n***tiao(" + j + ")(is/can/has):"); //输入支持结论的前件(条件)
                        sp = Console.ReadLine();
                        if (sp == "")
                        {
                            break; //回车表示,前件录入结束
                        }
                        CAUSE nc = new CAUSE(sp);
                        cp = new LinkedListNode <CAUSE>(rp.Item.Cause_chain, nc);
                        rp.Item.Cause_chain.AddFirst(cp);
                    }
                }
                if (KnowledgeBase.mHead == null)
                {
                    Console.Write("\n There is no rule in the Knowledgebase!\n");
                    return;
                }
                //将数据保存到文件当中,一共下一次进行数据的调用
                try
                {
                    StreamWriter sw = new StreamWriter("rule.dat");
                    rp = KnowledgeBase.mHead;
                    while (rp != null)
                    {
                        sw.WriteLine(rp.Item.Result);
                        cp = rp.Item.Cause_chain.mHead;
                        while (cp != null)
                        {
                            sw.WriteLine(cp.Item.Cause);
                            cp = cp.next;
                        }
                        sw.WriteLine("\\");  //规则和规则之间用字符"\"分开
                        rp = rp.next;
                    }
                    sw.Close();
                }
                catch (IOException)
                {
                    Console.Write("\n write file is error!\n");
                    return;
                }
            }
            finally
            {
                MarkKB();
            }
        }
示例#20
0
 public void setRule(RULE rule, bool set)
 {
     if (set)
         rules |= (int)rule;
     else
         rules &= ~(int)rule;
 }
示例#21
0
 public bool ruleEnabled(RULE i)
 {
     int bits = (int)i;
     return (rules & bits) == bits;
 }
示例#22
0
 private static string[] CreateUPDATEString(SqlConnection Connection, RULE Rule, int flag = 0, int ID = 1, string Name = null)
 {
     if (Rule.ID == 0 || Rule.Name == null)
     {
         Rule.SetIdName(GetNamesIDs(Connection, flag, ID, Name));
     }
     string[] Strin = new string[12];
     if (Rule.Name == null || Rule.Name.Length < 2)
     {
         Strin[0] = $"UPDATE AktivniiOtdih SET FF={Rule.Node.AktivniiOtdih.FF}, " +
                    $"FS={Rule.Node.AktivniiOtdih.FS}, FT={Rule.Node.AktivniiOtdih.FT} " +
                    $"WHERE ID ={Rule.ID};";
         Strin[1] = $"UPDATE Arhitectura SET FF={Rule.Node.Arhitectura.FF}, " +
                    $"FS={ Rule.Node.Arhitectura.FS} WHERE ID ={Rule.ID};";
         Strin[2] = $"UPDATE BolshieGoroda SET FF={Rule.Node.BolshieGoroda.FF}, " +
                    $"FS={Rule.Node.BolshieGoroda.FS}, FT={Rule.Node.BolshieGoroda.FT} " +
                    $"WHERE ID ={Rule.ID};";
         Strin[3] = $"UPDATE Gori SET FF={Rule.Node.Gori.FF}, " +
                    $"FS={Rule.Node.Gori.FS}, FT={Rule.Node.Gori.FT} " +
                    $"WHERE ID ={Rule.ID};";
         Strin[4] = $"UPDATE MalenkieGoroda SET FF={Rule.Node.MalenkieGoroda.FF}, " +
                    $"FS={ Rule.Node.MalenkieGoroda.FS} WHERE ID ={Rule.ID};";
         Strin[5] = $"UPDATE OtdihVKompanii SET FF={Rule.Node.OtdihVKompanii.FF}, " +
                    $"FS={ Rule.Node.OtdihVKompanii.FS} WHERE ID ={Rule.ID};";
         Strin[6] = $"UPDATE Reki SET FF={Rule.Node.Reki.FF}, " +
                    $"FS={Rule.Node.Reki.FS}, FT={Rule.Node.Reki.FT} " +
                    $"WHERE ID ={Rule.ID};";
         Strin[7] = $"UPDATE Rules SET Priroda={ Rule.Node.Prirodu}, " +
                    $"OtdihNaPrirode={ Rule.Node.OtdihNaPrirode}, " +
                    $"Dostoprimech={ Rule.Node.Dostoprimechatelnosti}, TempSred={Rule.Node.Temp_Srednaa} " +
                    "WHERE Id =" + Rule.ID + ';';
         Strin[8] = $"UPDATE SostoanieZdorovia SET FF={Rule.Node.SostoanieZdorovia.FF}, " +
                    $"FS={Rule.Node.SostoanieZdorovia.FS}, FT={Rule.Node.SostoanieZdorovia.FT} " +
                    $"WHERE ID ={Rule.ID};";
         Strin[9] = $"UPDATE Temp_Hight SET FF={Rule.Node.Temp_Hight.FF}, " +
                    $"FS={ Rule.Node.Temp_Hight.FS} WHERE ID ={Rule.ID};";
         Strin[10] = $"UPDATE Temp_Low SET FF={Rule.Node.Temp_Low.FF}, " +
                     $"FS={ Rule.Node.Temp_Low.FS} WHERE ID ={Rule.ID};";
         Strin[11] = $"UPDATE VoennaaTematika SET FF={Rule.Node.VoennaaTematika.FF}, " +
                     $"FS={ Rule.Node.VoennaaTematika.FS} WHERE ID ={Rule.ID};";
     }
     else
     {
         Strin[0] = $"UPDATE AktivniiOtdih SET FF={Rule.Node.AktivniiOtdih.FF}, " +
                    $"FS={Rule.Node.AktivniiOtdih.FS}, FT={Rule.Node.AktivniiOtdih.FT} " +
                    $"WHERE ID ={Rule.ID};";
         Strin[1] = $"UPDATE Arhitectura SET FF={Rule.Node.Arhitectura.FF}, " +
                    $"FS={ Rule.Node.Arhitectura.FS} WHERE ID ={Rule.ID};";
         Strin[2] = $"UPDATE BolshieGoroda SET FF={Rule.Node.BolshieGoroda.FF}, " +
                    $"FS={Rule.Node.BolshieGoroda.FS}, FT={Rule.Node.BolshieGoroda.FT} " +
                    $"WHERE ID ={Rule.ID};";
         Strin[3] = $"UPDATE Gori SET FF={Rule.Node.Gori.FF}, " +
                    $"FS={Rule.Node.Gori.FS}, FT={Rule.Node.Gori.FT} " +
                    $"WHERE ID ={Rule.ID};";
         Strin[4] = $"UPDATE MalenkieGoroda SET FF={Rule.Node.MalenkieGoroda.FF}, " +
                    $"FS={ Rule.Node.MalenkieGoroda.FS} WHERE ID ={Rule.ID};";
         Strin[5] = $"UPDATE OtdihVKompanii SET FF={Rule.Node.OtdihVKompanii.FF}, " +
                    $"FS={ Rule.Node.OtdihVKompanii.FS} WHERE ID ={Rule.ID};";
         Strin[6] = $"UPDATE Reki SET FF={Rule.Node.Reki.FF}, " +
                    $"FS={Rule.Node.Reki.FS}, FT={Rule.Node.Reki.FT} " +
                    $"WHERE ID ={Rule.ID};";
         Strin[7] = $"UPDATE Rules SET Priroda={Rule.Node.Prirodu}, Name='{Rule.Name}'," +
                    $"OtdihNaPrirode={Rule.Node.OtdihNaPrirode}, " +
                    $"Dostoprimech={Rule.Node.Dostoprimechatelnosti}, TempSred={Rule.Node.Temp_Srednaa} " +
                    $"WHERE Id ={Rule.ID};";
         Strin[8] = $"UPDATE SostoanieZdorovia SET FF={Rule.Node.SostoanieZdorovia.FF}, " +
                    $"FS={Rule.Node.SostoanieZdorovia.FS}, FT={Rule.Node.SostoanieZdorovia.FT} " +
                    $"WHERE ID ={Rule.ID};";
         Strin[9] = $"UPDATE Temp_Hight SET FF={Rule.Node.Temp_Hight.FF}, " +
                    $"FS={ Rule.Node.Temp_Hight.FS} WHERE ID ={Rule.ID};";
         Strin[10] = $"UPDATE Temp_Low SET FF={Rule.Node.Temp_Low.FF}, " +
                     $"FS={ Rule.Node.Temp_Low.FS} WHERE ID ={Rule.ID};";
         Strin[11] = $"UPDATE VoennaaTematika SET FF={Rule.Node.VoennaaTematika.FF}, " +
                     $"FS={ Rule.Node.VoennaaTematika.FS} WHERE ID ={Rule.ID};";
     }
     if (Connection.State != ConnectionState.Closed)
     {
         Connection.Close();
     }
     return(Strin);
 }
示例#23
0
        public ActionResult Get(string id)
        {
            RULE item = m_BLL.GetById(id);

            return(Json(item, JsonRequestBehavior.AllowGet));
        }
示例#24
0
        public void CreatKB(StreamWriter sw)                  //创建知识库
        {
            LinkedListNode <CAUSE> cp;
            LinkedListNode <RULE>  rp;
            int    i, j;
            string sp;

            FreeKB(KnowledgeBase);
            FreeKB(Used);
            for (i = 1; ; i++)
            {
                sp = Interaction.InputBox("Result:(is/can/has)", "Rule[" + i + "]-Result");//首先输入结论
                if (sp == "")
                {
                    break;
                }
                RULE nr = new RULE(sp);
                rp = new LinkedListNode <RULE>(KnowledgeBase, nr); //创建规则链
                KnowledgeBase.AddFirst(rp);
                for (j = 1; ; j++)
                {
                    //输入支持结论的前件(条件)
                    sp = Interaction.InputBox("Condition " + j + " :(is/can/has)", "Rule[" + i + "]-Condition[" + j + "]");
                    if (sp == "")
                    {
                        break;
                    }
                    CAUSE nc = new CAUSE(sp);
                    cp = new LinkedListNode <CAUSE>(rp.Item.Cause_chain, nc);
                    rp.Item.Cause_chain.AddFirst(cp);
                }
            }
            if (KnowledgeBase.mHead == null)
            {
                MessageBox.Show("There is no rule in the Knowledgebase!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            //将数据保存到文件当中,一共下一次进行数据的调用
            try
            {
                rp = KnowledgeBase.mHead;
                while (rp != null)
                {
                    sw.WriteLine(rp.Item.Result);
                    cp = rp.Item.Cause_chain.mHead;
                    while (cp != null)
                    {
                        sw.WriteLine(cp.Item.Cause);
                        cp = cp.next;
                    }
                    sw.WriteLine("\\");  //规则和规则之间用字符"\"分开
                    rp = rp.next;
                }
                sw.Close();
            }
            catch (IOException)
            {
                MessageBox.Show("Create file \"Rule.rim\" error", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            MarkKB();
        }
示例#25
0
        public static string CreateSELECTString(RULE Rule)
        {
            byte check = 0;
            NODE Node  = new NODE();

            Node.Copy(Rule.Node);
            string Str = Properties.Resources.SelectAllString + '\n';

            while (true)
            {
                if (Node.SostoanieZdorovia.FF != 0)
                {
                    Str += $" WHRERE (SZ.FF={Node.SostoanieZdorovia.FF} OR SZ.FS={Node.SostoanieZdorovia.FF} OR  SZ.FT={Node.SostoanieZdorovia.FF}) AND ( ";
                    ++check;
                    break;
                }
                if (Node.SostoanieZdorovia.FS != 0)
                {
                    Str += $" WHRERE (SZ.FS={Node.SostoanieZdorovia.FF} OR  SZ.FT={Node.SostoanieZdorovia.FF}) AND ( ";
                    ++check;
                    break;
                }
                if (Node.SostoanieZdorovia.FT != 0)
                {
                    Str += " WHRERE SZ.FT=" + Node.SostoanieZdorovia.FT + " AND ( ";
                    ++check;
                }
                break;
            }
            if (Node.AktivniiOtdih.FF != 0)
            {
                Str += " OR AO.FF=" + Node.AktivniiOtdih.FF;
                ++check;
            }
            if (Node.AktivniiOtdih.FS != 0)
            {
                Str += " OR AO.FS=" + Node.AktivniiOtdih.FS;
                ++check;
            }
            if (Node.AktivniiOtdih.FT != 0)
            {
                Str += " OR AO.FT=" + Node.AktivniiOtdih.FT;
                ++check;
            }
            if (Node.OtdihVKompanii.FF != 0)
            {
                Str += " OR OvK.FF=" + Node.OtdihVKompanii.FF;
                ++check;
            }
            if (Node.OtdihVKompanii.FS != 0)
            {
                Str += " OR OvK.FS=" + Node.OtdihVKompanii.FS;
                ++check;
            }
            if (Node.Prirodu != 0)
            {
                Str += " OR R.Priroda=" + Node.Prirodu;
                ++check;
            }
            if (Node.OtdihNaPrirode != 0)
            {
                Str += " OR R.OtdihNaPrirode=" + Node.OtdihNaPrirode;
                ++check;
            }
            if (Node.Arhitectura.FF != 0)
            {
                Str += " OR A.FF=" + Node.Arhitectura.FF;
                ++check;
            }
            if (Node.Arhitectura.FS != 0)
            {
                Str += " OR A.FS=" + Node.Arhitectura.FS;
                ++check;
            }
            if (Node.BolshieGoroda.FF != 0)
            {
                Str += " OR BG.FF=" + Node.BolshieGoroda.FF;
                ++check;
            }
            if (Node.BolshieGoroda.FS != 0)
            {
                Str += " OR BG.FS=" + Node.BolshieGoroda.FS;
                ++check;
            }
            if (Node.BolshieGoroda.FT != 0)
            {
                Str += " OR BG.FT=" + Node.BolshieGoroda.FT;
                ++check;
            }
            if (Node.MalenkieGoroda.FF != 0)
            {
                Str += " OR MG.FF=" + Node.MalenkieGoroda.FF;
                ++check;
            }
            if (Node.MalenkieGoroda.FS != 0)
            {
                Str += " OR MG.FS=" + Node.MalenkieGoroda.FS;
                ++check;
            }
            if (Node.Dostoprimechatelnosti != 0)
            {
                Str += " OR R.Dostoprimech=" + Node.Dostoprimechatelnosti;
                ++check;
            }
            if (Node.VoennaaTematika.FF != 0)
            {
                Str += " OR VT.FF=" + Node.VoennaaTematika.FF;
                ++check;
            }
            if (Node.VoennaaTematika.FS != 0)
            {
                Str += " OR VT.FS=" + Node.VoennaaTematika.FS;
                ++check;
            }
            if (Node.Reki.FF != 0)
            {
                Str += " OR Re.FF=" + Node.Reki.FF;
                ++check;
            }
            if (Node.Reki.FS != 0)
            {
                Str += " OR Re.FS=" + Node.Reki.FS;
                ++check;
            }
            if (Node.Reki.FT != 0)
            {
                Str += " OR Re.FT=" + Node.Reki.FT;
                ++check;
            }
            if (Node.Gori.FF != 0)
            {
                Str += " OR G.FF=" + Node.Gori.FF;
                ++check;
            }
            if (Node.Gori.FS != 0)
            {
                Str += " OR G.FS=" + Node.Gori.FS;
                ++check;
            }
            if (Node.Gori.FT != 0)
            {
                Str += " OR G.FT=" + Node.Gori.FT;
                ++check;
            }

            if (Node.Temp_Hight.FF != 0)
            {
                Str += " OR TH.FF=" + Node.Temp_Hight.FF;
                ++check;
            }
            if (Node.Temp_Hight.FS != 0)
            {
                Str += " OR TH.FS=" + Node.Temp_Hight.FS;
                ++check;
            }
            if (Node.Temp_Low.FF != 0)
            {
                Str += " OR TL.FF=" + Node.Temp_Low.FF;
                ++check;
            }
            if (Node.Temp_Low.FS != 0)
            {
                Str += " OR TL.FS=" + Node.Temp_Low.FS;
                ++check;
            }
            if (Node.Temp_Srednaa != 0)
            {
                Str += " OR R.TempSred=" + Node.Temp_Srednaa;
                ++check;
            }
            if (check == 0)
            {
                Str = Properties.Resources.SelectAllString;
            }
            else
            {
                Str += " );";
            }

            return(Str);
        }