using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace WindowsApplication1
{
    class Buessiness
    {
        ///下面，开始实例化另一个命名空间的一个类
        Mydatabase DB = new Mydatabase();
        /*******************************************************
       **方 法  名：Getteacherinfo
       **输 入参数：int id教师主键
       **输 出参数：out int dno教师系编号, out int xb教师性别编号, out string zc教师职称,out string degree教师学位
       **返 回  值：无
       **创 建  人：钱哨
       **创 建日期：08-7-9
       **描     述：通过存储过程逻辑查询教师具体信息。
       *******************************************************/

        public void Getteacherinfo(int id, out int dno, out int xb, out string zc, out string degree, out string dname, out string tname)
        {
            
            //下面建立执行存储过程的字符串，一般建议该存储过程的执行最好在查询分析器之中执行通过，同时保证执行参数名称的正确。
            string sql = String.Format("exec proc_find_teachermess " + id.ToString() + " ,@dno output,@xb output,@zc output,@degree output,@dname output,@tname output");
            //执行的T-SQL串
            SqlCommand MyCommand = DB.GetProcCommand(sql);
            MyCommand.Parameters.Add(new SqlParameter("@dno", SqlDbType.Int));
            MyCommand.Parameters.Add(new SqlParameter("@xb", SqlDbType.SmallInt));
            MyCommand.Parameters.Add(new SqlParameter("@zc", SqlDbType.VarChar, 20));
            MyCommand.Parameters.Add(new SqlParameter("@degree", SqlDbType.VarChar, 20));
            MyCommand.Parameters.Add(new SqlParameter("@dname", SqlDbType.VarChar, 30));
            MyCommand.Parameters.Add(new SqlParameter("@tname", SqlDbType.VarChar, 20));


            MyCommand.Parameters["@dno"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@xb"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@zc"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@degree"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@dname"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@tname"].Direction = ParameterDirection.Output;
            MyCommand.ExecuteNonQuery();

            dno = Convert.ToInt16(MyCommand.Parameters["@dno"].Value);　//接收输出的参数
            xb = Convert.ToInt16(MyCommand.Parameters["@xb"].Value);
            zc = Convert.ToString(MyCommand.Parameters["@zc"].Value);
            degree = Convert.ToString(MyCommand.Parameters["@degree"].Value);
            dname = Convert.ToString(MyCommand.Parameters["@dname"].Value);
            tname = Convert.ToString(MyCommand.Parameters["@tname"].Value);
        }
        /*******************************************************
        **方 法  名：GetSendCourse
        **输 入参数：派课编号
        **输 出参数：
        **返 回  值：
        **创 建  人：钱哨
        **创 建日期：08-7-9
        **描     述：通过存储过程逻辑查询某个派课信息的各种结果值。
        *******************************************************/

        public void GetCourselist(int id, out int cno, out int tno, out string skxq, out int sktime, out int bno, out string tname, out string cname, out string bname, out string skxqn, out int zt, out int schno, out string schname, out int stunum, out int yy, out int wy, out int ztbk, out int stunumbk, out int yybk, out int wybk, out int ztqk, out int stunumqk, out int yyqk, out int wyqk)
        {
            cno=0; tno=0; sktime=0; bno=0; zt=0; schno=0; stunum=0; yy=0; wy=0; ztbk=0; stunumbk=0; yybk=0; wybk=0; ztqk=0; stunumqk=0; yyqk=0; wyqk=0;
            skxq = ""; tname = ""; cname = ""; bname = ""; skxqn = ""; schname = "";
            if (id > 0)
            {
                string sql = String.Format("exec proc_find_sendcourse " + id + ",@cno output, @tno output,@skxq output, @sktime output,@bno output,@tname output,@cname output,@bname output,@skxqn output,@zt output,@schno output,@schname output,@stunum output,@yy output,@wy output, @ztbk output, @stunumbk output, @yybk output, @wybk output, @ztqk output, @stunumqk output, @yyqk output, @wyqk output");
                //执行的T-SQL串
                SqlCommand MyCommand = DB.GetProcCommand(sql);
                MyCommand.Parameters.Add(new SqlParameter("@cno", SqlDbType.Int));
                MyCommand.Parameters.Add(new SqlParameter("@tno", SqlDbType.Int));
                MyCommand.Parameters.Add(new SqlParameter("@skxq", SqlDbType.VarChar, 10));
                MyCommand.Parameters.Add(new SqlParameter("@sktime", SqlDbType.Int));
                MyCommand.Parameters.Add(new SqlParameter("@bno", SqlDbType.Int));
                MyCommand.Parameters.Add(new SqlParameter("@tname", SqlDbType.VarChar, 30));
                MyCommand.Parameters.Add(new SqlParameter("@cname", SqlDbType.VarChar, 30));
                MyCommand.Parameters.Add(new SqlParameter("@bname", SqlDbType.VarChar, 30));
                MyCommand.Parameters.Add(new SqlParameter("@skxqn", SqlDbType.VarChar, 30));
                MyCommand.Parameters.Add(new SqlParameter("@zt", SqlDbType.Int));
                MyCommand.Parameters.Add(new SqlParameter("@schno", SqlDbType.Int));
                MyCommand.Parameters.Add(new SqlParameter("@schname", SqlDbType.VarChar, 30));
                MyCommand.Parameters.Add(new SqlParameter("@stunum", SqlDbType.Int));
                MyCommand.Parameters.Add(new SqlParameter("@yy", SqlDbType.Int));
                MyCommand.Parameters.Add(new SqlParameter("@wy", SqlDbType.Int));
                MyCommand.Parameters.Add(new SqlParameter("@ztbk", SqlDbType.Int));
                MyCommand.Parameters.Add(new SqlParameter("@stunumbk", SqlDbType.Int));
                MyCommand.Parameters.Add(new SqlParameter("@yybk", SqlDbType.Int));
                MyCommand.Parameters.Add(new SqlParameter("@wybk", SqlDbType.Int));
                MyCommand.Parameters.Add(new SqlParameter("@ztqk", SqlDbType.Int));
                MyCommand.Parameters.Add(new SqlParameter("@stunumqk", SqlDbType.Int));
                MyCommand.Parameters.Add(new SqlParameter("@yyqk", SqlDbType.Int));
                MyCommand.Parameters.Add(new SqlParameter("@wyqk", SqlDbType.Int));


                MyCommand.Parameters["@cno"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@tno"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@skxq"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@sktime"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@bno"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@tname"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@cname"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@bname"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@skxqn"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@zt"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@schno"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@schname"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@stunum"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@yy"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@wy"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@ztbk"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@stunumbk"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@yybk"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@wybk"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@ztqk"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@stunumqk"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@yyqk"].Direction = ParameterDirection.Output;
                MyCommand.Parameters["@wyqk"].Direction = ParameterDirection.Output;


                MyCommand.ExecuteNonQuery();

                cno = Convert.ToInt16(MyCommand.Parameters["@cno"].Value);　//接收输出的参数
                tno = Convert.ToInt16(MyCommand.Parameters["@tno"].Value);
                skxq = Convert.ToString(MyCommand.Parameters["@skxq"].Value);
                sktime = Convert.ToInt16(MyCommand.Parameters["@sktime"].Value);
                bno = Convert.ToInt16(MyCommand.Parameters["@bno"].Value);
                tname = Convert.ToString(MyCommand.Parameters["@tname"].Value);
                cname = Convert.ToString(MyCommand.Parameters["@cname"].Value);
                bname = Convert.ToString(MyCommand.Parameters["@bname"].Value);
                skxqn = Convert.ToString(MyCommand.Parameters["@skxqn"].Value);
                zt = Convert.ToInt16(MyCommand.Parameters["@zt"].Value);
                schno = Convert.ToInt16(MyCommand.Parameters["@schno"].Value);
                schname = Convert.ToString(MyCommand.Parameters["@schname"].Value);
                stunum = Convert.ToInt16(MyCommand.Parameters["@stunum"].Value);
                yy = Convert.ToInt16(MyCommand.Parameters["@yy"].Value);
                wy = Convert.ToInt16(MyCommand.Parameters["@wy"].Value);


                ztbk = Convert.ToInt16(MyCommand.Parameters["@ztbk"].Value);
                stunumbk = Convert.ToInt16(MyCommand.Parameters["@stunumbk"].Value);
                yybk = Convert.ToInt16(MyCommand.Parameters["@yybk"].Value);
                wybk = Convert.ToInt16(MyCommand.Parameters["@wybk"].Value);
                ztqk = Convert.ToInt16(MyCommand.Parameters["@ztqk"].Value);
                stunumqk = Convert.ToInt16(MyCommand.Parameters["@stunumqk"].Value);
                yyqk = Convert.ToInt16(MyCommand.Parameters["@yyqk"].Value);
                wyqk = Convert.ToInt16(MyCommand.Parameters["@wyqk"].Value);

                DB.close();
            }
        }
        /*******************************************************
       **方 法  名：GetCoursecheck
       **输 入参数：cno课程编号  bno班级编号
       **输 出参数：
       **返 回  值：
       **创 建  人：钱哨
       **创 建日期：08-7-9
       **描     述：通过存储过程输入cno课程编号和bno班级编号，判别该班该门课程是否有判卷，如果没有则需要进行考试表的初始化工作。
       *******************************************************/

        public void GetCoursecheck(int cno, int bno, out int percent_qm, out int percent_sj, out int percent_ps)
        {
            ///下面，开始实例化另一个命名空间的一个类
            Mydatabase DB = new Mydatabase();
            string sql = String.Format("exec proc_GetCoursecheck " + cno + "," + bno + ",@percent_qm output,@percent_ps output,@percent_sj output");

            //执行的T-SQL串
            SqlCommand MyCommand = DB.GetProcCommand(sql);
            MyCommand.Parameters.Add(new SqlParameter("@percent_qm", SqlDbType.Int));
            MyCommand.Parameters.Add(new SqlParameter("@percent_ps", SqlDbType.Int));
            MyCommand.Parameters.Add(new SqlParameter("@percent_sj", SqlDbType.Int));

            MyCommand.Parameters["@percent_qm"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@percent_ps"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@percent_sj"].Direction = ParameterDirection.Output;


            MyCommand.ExecuteNonQuery();

            percent_qm = Convert.ToInt16(MyCommand.Parameters["@percent_qm"].Value);　//接收输出的参数
            percent_ps = Convert.ToInt16(MyCommand.Parameters["@percent_ps"].Value);
            percent_sj = Convert.ToInt16(MyCommand.Parameters["@percent_sj"].Value);

            DB.close();

        }
        /*******************************************************
      **方 法  名：GetPaperMessage
      **输 入参数：课程号码和班级号码，教师编号
      **输 出参数：
      **返 回  值：
      **创 建  人：钱哨
      **创 建日期：08-7-9
      **描     述：通过存储过程获取试卷界面的参数信息。
      *******************************************************/

        public void GetPaperMessage(int cno, int bno, int tno, out string xqmess, out string cname, out string zy, out string nj, out string bname, out string tname, out string year1, out string month1, out string day1, out Int16 @clx_num, out string @clx_string, out int @ctime)
        {
            ///下面，开始实例化另一个命名空间的一个类
            Mydatabase DB = new Mydatabase();
            string sql = String.Format("exec proc_fdpaper " + cno + "," + bno + "," + tno + ",@xqmess output, @cname output,@zy output, @nj output,@bname output,@tname output,@year1 output,@month1 output,@day1 output,@clx_num output,@clx_string output,@ctime output");
            //执行的T-SQL串
            SqlCommand MyCommand = DB.GetProcCommand(sql);
            MyCommand.Parameters.Add(new SqlParameter("@xqmess", SqlDbType.VarChar, 100));
            MyCommand.Parameters.Add(new SqlParameter("@cname", SqlDbType.VarChar, 50));
            MyCommand.Parameters.Add(new SqlParameter("@zy", SqlDbType.VarChar, 40));
            MyCommand.Parameters.Add(new SqlParameter("@nj", SqlDbType.VarChar, 20));
            MyCommand.Parameters.Add(new SqlParameter("@bname", SqlDbType.VarChar, 30));
            MyCommand.Parameters.Add(new SqlParameter("@tname", SqlDbType.VarChar, 40));
            MyCommand.Parameters.Add(new SqlParameter("@year1", SqlDbType.VarChar, 10));
            MyCommand.Parameters.Add(new SqlParameter("@month1", SqlDbType.VarChar, 10));
            MyCommand.Parameters.Add(new SqlParameter("@day1", SqlDbType.VarChar, 10));
            MyCommand.Parameters.Add(new SqlParameter("@clx_num", SqlDbType.TinyInt));
            MyCommand.Parameters.Add(new SqlParameter("@clx_string", SqlDbType.VarChar, 10));
            MyCommand.Parameters.Add(new SqlParameter("@ctime", SqlDbType.Int));

            MyCommand.Parameters["@xqmess"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@cname"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@zy"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@nj"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@bname"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@tname"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@year1"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@month1"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@day1"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@clx_num"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@clx_string"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@ctime"].Direction = ParameterDirection.Output;

            MyCommand.ExecuteNonQuery();


            xqmess = Convert.ToString(MyCommand.Parameters["@xqmess"].Value);　//接收输出的参数
            cname = Convert.ToString(MyCommand.Parameters["@cname"].Value);
            zy = Convert.ToString(MyCommand.Parameters["@zy"].Value);
            nj = Convert.ToString(MyCommand.Parameters["@nj"].Value);
            bname = Convert.ToString(MyCommand.Parameters["@bname"].Value);
            tname = Convert.ToString(MyCommand.Parameters["@tname"].Value);
            year1 = Convert.ToString(MyCommand.Parameters["@year1"].Value);
            month1 = Convert.ToString(MyCommand.Parameters["@month1"].Value);
            day1 = Convert.ToString(MyCommand.Parameters["@day1"].Value);
            clx_num = Convert.ToInt16(MyCommand.Parameters["@clx_num"].Value);
            clx_string = Convert.ToString(MyCommand.Parameters["@clx_string"].Value);
            ctime = Convert.ToInt32(MyCommand.Parameters["@ctime"].Value);

            DB.close();

        }
        /*******************************************************
               **方 法  名：GetPjStatistics
               **输 入参数：int bno班级号码, int cno课程号码
               **输 出参数：
               **返 回  值：
               **创 建  人：钱哨
               **创 建日期：08-7-9
               **描     述：统计试卷各个分值的人数。
               *******************************************************/

        public void GetPjStatistics(int cno, int bno, out int first, out int second, out int third, out int forth, out int fifth, out int total)
        {
            ///下面，开始实例化另一个命名空间的一个类
            Mydatabase DB = new Mydatabase();
            string sql = String.Format("exec proc_PjStatistics " + cno + "," + bno + ",@first output,@second output,@third output,@forth output,@fifth output,@total output");

            //执行的T-SQL串
            SqlCommand MyCommand = DB.GetProcCommand(sql);
            MyCommand.Parameters.Add(new SqlParameter("@first", SqlDbType.Int));
            MyCommand.Parameters.Add(new SqlParameter("@second", SqlDbType.Int));
            MyCommand.Parameters.Add(new SqlParameter("@third", SqlDbType.Int));
            MyCommand.Parameters.Add(new SqlParameter("@forth", SqlDbType.Int));
            MyCommand.Parameters.Add(new SqlParameter("@fifth", SqlDbType.Int));
            MyCommand.Parameters.Add(new SqlParameter("@total", SqlDbType.Int));

            MyCommand.Parameters["@first"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@second"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@third"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@forth"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@fifth"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@total"].Direction = ParameterDirection.Output;

            MyCommand.ExecuteNonQuery();

            first = Convert.ToInt32(MyCommand.Parameters["@first"].Value);　//接收输出的参数
            second = Convert.ToInt32(MyCommand.Parameters["@second"].Value);
            third = Convert.ToInt32(MyCommand.Parameters["@third"].Value);
            forth = Convert.ToInt32(MyCommand.Parameters["@forth"].Value);
            fifth = Convert.ToInt32(MyCommand.Parameters["@fifth"].Value);
            total = Convert.ToInt32(MyCommand.Parameters["@total"].Value);

            DB.close();

        }

    }
}
