【CRM项目03】专业和岗位管理

来源:互联网 发布:彼得雷乌斯 知乎 编辑:程序博客网 时间:2024/04/29 19:44

这个项目这前面做省份管理,校区管理,岗位管理,专业岗位等,全部都是增删改查

把省份管理做完了,后面的几乎都可以复制粘贴前面的代码了,改一下绑定字段即可。

也没啥新意的,做着做着就失去了动力,如果以后工作都是增删改查,那就太可怕,没劲。


在做专业管理和岗位管理时,两个表很明显是多对多的关系,但设计数据库的人,似乎忘了给关系表


数据库表与表之间多对多关系怎么处理?

拆分关系。增加一个表。使之符合范式。
比如做学生选课系统。多个学生选多门课。这是多对多关系。
这样可以写成三个表。
分别为。学生表(学号,姓名)
课程表(课程号,课程名)
选课表(学号,课程号)
通过选课表,将学生和课程联系起来了。
通常情况是这么处理,但自己不想再建表了。
于是乎想了个用一个字段关系也能表示其内在的关联。

想法比较大胆,思想比较歪。

任何一个整数都可以转化成一个二进制数,

0==》0000,1==》0001,2==》0010,3==》0011,4==》0100,5==》1001

而0,1就能代表关联表中有哪些对应的字段

数据设计是这样的:

--4,岗位表create table Station(StationID int primary key , --岗位IDStationName varchar(50) not null, --岗位名称Remarks varchar(50), --岗位被准)insert into Station values(1,'软件测试','软测');insert into Station values(2,'软件开发','开发');insert into Station values(4,'php','最好的语言');insert into Station values(8,'.net开发','aa');insert into Station values(16,'Android开发','bb');insert into Station values(32,'java开发','cc');insert into Station values(64,'javaScript','cc');select * from Station where StationName like'%%' order by StationID descgo--5,专业表create table Major(proID int primary key identity(1,1),--专业IDproName varchar(50) not null,--专业名称SchoolID int not null references School(SchoolID),--校区ID(外键)StationS int,--和岗位关系Remarks varchar(50),--岗位备注)insert into Major values('软件测试',1,0,'测试')insert into Major values('软件工程',1,3,'');insert into Major values('软件测试',1,11,'');insert into Major values('网络工程',1,4,'');insert into Major values('图形图像',2,38,'');insert into Major values('软件测试',3,21,'');insert into Major values('网络工程',3,7,'');insert into Major values('图形图像',3,38,'');



岗位表的编号采用2的n次幂,专业表中的StationS用一个数字可以代表岗位表中关联的岗位

如岗位表中的80,可以推算出岗位表中有64+16这两个岗位组成的

大概关系就是那样的,主要是每次把数组转换成”外键关系“,需要进行计算,然后做增删改查也比较麻烦

岗位的查询,添加,取消

/// <summary>        /// 绑定专业对应的岗位信息        /// </summary>        /// <param name="majorID"></param>        private void GetHideMajorInfo(string majorID)        {            Model.majorModel model = new Model.majorModel();            model.PproName = "";            model.PproID = int.Parse(majorID);            DataTable dt = bll.MajorAndSchool(model);            this.txtMajorName.Text=dt.Rows[0]["proName"].ToString();            this.txtSchool.Text=dt.Rows[0]["SchoolName"].ToString();            int GGNumber=int.Parse(dt.Rows[0]["StationS"].ToString());            DataTable gws = bll.selectStation();            this.DDLStationMy.Items.Clear();            foreach (DataRow row in gws.Rows)            {                int p = int.Parse(row["StationID"].ToString());                if(p<= GGNumber)                {                    GGNumber -= p;                    string key = row["StationName"].ToString();                    string value = row["StationID"].ToString();                    this.DDLStationMy.Items.Add(new ListItem(key, value));                    if (GGNumber == 0) break;                }            }        }        /// <summary>        /// 绑定所有岗位信息        /// </summary>        private void GetBindDDLStation()        {            this.DDLStationAll.DataSource = bll.selectStation();            this.DDLStationAll.DataTextField = "StationName";            this.DDLStationAll.DataValueField = "StationID";            this.DDLStationAll.DataBind();        }        /// <summary>        /// 添加岗位        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        protected void btnAdd_Click(object sender, EventArgs e)        {            string MajorID = Request.QueryString["MajorID"];            int number =int.Parse(this.DDLStationAll.SelectedValue);            foreach ( ListItem ll in DDLStationMy.Items)            {                if(ll.Value== number.ToString())                {                    ClientScript.RegisterStartupScript(GetType(), "UserMain", "alert('该专业已经存在!')", true);                    return;                }            }            bll.AddStationbyNumber('+', number,int.Parse(MajorID));            GetHideMajorInfo(MajorID);        }        /// <summary>        /// 取消岗位        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        protected void btnUpa_Click(object sender, EventArgs e)        {            string MajorID = Request.QueryString["MajorID"];            int number = int.Parse(this.DDLStationMy.SelectedValue);            bll.AddStationbyNumber('-', number, int.Parse(MajorID));            GetHideMajorInfo(MajorID);        }


设置添加新岗位的ID编号


BLL.StationBLL bll = new BLL.StationBLL();        /// <summary>        /// 设置新加的岗位ID        /// </summary>        private void GetTxtStationID()        {            DataTable dt = bll.SelectStationID();//查询Station表中所有的ID            for (int newId = 1; newId < Math.Pow(2,31); newId *= 2)            {                bool falg = true;//新创建的id能否使用                foreach (DataRow row in dt.Rows)                {                    int id = int.Parse(row["StationID"].ToString());//数据库中的id                    if(id== newId)//新创建的id数据库中已经存在                    {                        falg = false;//新创建的id不能用                        break;//跳出循环,在创建一个newID                    }                }                if (falg)//新创建的id可以用,找到了,赋值,跳出循环                {                    this.txtStationID.Text = newId.ToString();                    break;                }            }        }


修改专业的岗位SQL语句:

        /// <summary>        /// 修改专业的岗位信息        /// </summary>        /// <param name="addNumber"></param>        /// <param name="majorId"></param>        /// <returns></returns>        public bool AddStationbyNumber(char fuhao, int Number,int majorId)        {            string sql = string.Format("update Major set StationS{0}={1} where proID={2}", fuhao, Number, majorId);            return DbHelperSQL.ExecuteSql(sql)>0?true:false;        }


数据库删除某个岗位,对应专业中减去该岗位的数值

        /// <summary>        /// 删除岗位表中的数据        /// </summary>        /// <param name="id"></param>        /// <returns></returns>        public bool DeleteStationByID(int id)        {            string sql = "delete Station where StationID="+id;            UpdateMajorByStation(id);            return DbHelperSQL.ExecuteSql(sql) > 0 ? true : false;        }        /// <summary>        /// 删除岗位表中数据更新专业表中number        /// </summary>        /// <param name="id"></param>        public void UpdateMajorByStation(int id)        {            DAL.majorDAL major = new majorDAL();            DataTable dt = major.selectMajorAll();            DataTable Station = SelectStationInfo("");            foreach (DataRow row in dt.Rows)            {                int number = int.Parse(row["StationS"].ToString());                foreach (DataRow item in Station.Rows)                {                    int p = int.Parse(item["StationID"].ToString());                    if (number >= p)                    {                        number -= p;                        if (p == id)                        {                            updateMajorNumber(row["proID"].ToString(), id);                        }                    }                }            }        }        public void updateMajorNumber(string Majorid,int id)        {            string sql =string.Format("update Major set StationS-={0} where proID={1}",id,Majorid);            DbHelperSQL.ExecuteSql(sql);        }
ps:好多没解释清楚。算了就这样把