Exemplo n.º 1
0
 def __init__(self):
     self.sum = SumInfo()
     self.updatesum = UpdateSum()
     # 更新sum表
     SEQFILENAME = "../outputdemo/seq.csv"
     COURSEFILENAME = "../internal/courseProgress.csv"
     STUFILENAME = "../internal/studentInfo.csv"
     self.updatesum.update_all_sum(COURSEFILENAME, STUFILENAME, SEQFILENAME)
Exemplo n.º 2
0
 def __init__(self):
     self.seq = SeqInfo()
     self.detail = DetailInfo()
     self.course = CourseInfo()
     self.stu = StuInfo()
     self.sum = SumInfo()
     self.ini = IniInfo()
Exemplo n.º 3
0
            new_sum_info.append(sum_line)
        return new_sum_info


if __name__ == "__main__":
    # 算法演示
    d = DetailInfo()
    TECID = "2004643"
    COURSEID = "51610145"
    DETAILFAILENAME = "../outputdemo/" + TECID + "_" + COURSEID + "_1_checkinDetail.csv"
    SUMFAILENAME = "../outputdemo/" + TECID + "_" + COURSEID + "_sum.csv"
    print DETAILFAILENAME
    all_detail_info = d.get_all_detail_info(DETAILFAILENAME)
    print all_detail_info
    stuids = ['201416920104', '201416920405', '201416920217', '201416920105', '201416920102']
    print stuids
    # step1
    STARTTIME = "2017-05-26 19:54:20"
    for detail_line in all_detail_info:
        d.set_detail_result(detail_line, STARTTIME)
    # detail转sum算法setp2
    new_sum_info = d.detail_sum(all_detail_info, stuids, "1")
    print new_sum_info
    # 将转化后的结果写入sum文件
    s = SumInfo()
    all_sum_info = s.sum_creat(stuids)
    print all_sum_info
    all_sum_info = s.sum_update(new_sum_info, all_sum_info, "Checkin1")
    print all_sum_info
    s.write_file(all_sum_info, SUMFAILENAME)
Exemplo n.º 4
0
class UpdateSum(object):
    def __init__(self):
        self.seq = SeqInfo()
        self.course = CourseInfo()
        self.stu = StuInfo()
        self.sum = SumInfo()
        self.detail = DetailInfo()

    # 传入参数 tec_id, course_id, seq_id
    # 从seq表中获取本次的starttime, 需要附加文件名,seq_filename
    # 获取所有学生的名单,需要附加文件名,course_filename,stu_filename
    # 通过detail类的两个方法获得所有学生的考勤结果
    # 获取sum表的文件名
    # 若seq_id==1,需要初始化sum表
    # 按学生考勤结果更新入sum表
    def update_sum(self, tec_id, course_id, seq_id, course_filename,
                   stu_filename, seq_filename):
        starttime = self.get_tec_start_time(tec_id, course_id, seq_id,
                                            seq_filename)
        stuids = self.get_all_stuids(tec_id, course_id, course_filename,
                                     stu_filename)
        sumfilename = self.sum.set_sum_filename(tec_id, course_id)
        if starttime and stuids and sumfilename:
            # 获得所有学生的考勤结果
            detail_filename = self.detail.set_detail_filename(
                tec_id, course_id, seq_id)
            all_detail_info = self.detail.get_all_detail_info(detail_filename)
            for detail_line in all_detail_info:
                self.detail.set_detail_result(detail_line, starttime)
            new_sum_line = self.detail.detail_sum(all_detail_info, stuids,
                                                  seq_id)

            # 更新sum
            if os.path.exists(sumfilename):
                pass
            else:
                # 初始化sum表
                new_sum_info = self.sum.sum_creat(stuids)
                self.sum.write_file(new_sum_info, sumfilename)
            all_sum_info = self.sum.get_all_sum_info(sumfilename)
            new_sum_info = self.sum.sum_update(new_sum_line, all_sum_info,
                                               seq_id)
            self.sum.write_file(new_sum_info, sumfilename)
        else:
            print "您输入的内容有误,请检查后重新操作"

    # 获取教师发起考勤时间
    def get_tec_start_time(self, tec_id, course_id, seq_id, seq_filename):
        all_seq_info = self.seq.get_all_seq_info(seq_filename)
        if self.seq.check_seq_id(tec_id, course_id, seq_id, all_seq_info):
            start_time = self.seq.get_start_time(tec_id, course_id, seq_id,
                                                 all_seq_info)
            if start_time:
                return start_time
            else:
                return None
        else:
            print "您输入的考勤次序号错误"
            return None

    # 获取所有学生的名单
    def get_all_stuids(self, tec_id, course_id, course_filename, stu_filename):
        all_course_info = self.course.get_all_course_info(course_filename)
        classnums = self.course.get_classnames(tec_id, course_id,
                                               all_course_info)
        all_stu_info = self.stu.get_all_stu_info(stu_filename)
        stu_ids = self.stu.get_stuids(
            self.stu.get_wait_checkin_stu_info(classnums, all_stu_info))
        if stu_ids:
            return stu_ids
        else:
            return None

    # 遍历seq表,获取所有detail表,更新sum表
    def update_all_sum(self, COURSEFILENAME, STUFILENAME, SEQFILENAME):
        all_seq_info = self.seq.get_all_seq_info(SEQFILENAME)
        for seq_line in all_seq_info:
            tec_id = seq_line["TeacherID"]
            course_id = seq_line["CourseID"]
            seq_id = seq_line["SeqID"]
            self.update_sum(tec_id, course_id, seq_id, COURSEFILENAME,
                            STUFILENAME, SEQFILENAME)
Exemplo n.º 5
0
class ShowSum(object):
    def __init__(self):
        self.sum = SumInfo()
        self.updatesum = UpdateSum()
        # 更新sum表
        SEQFILENAME = "../outputdemo/seq.csv"
        COURSEFILENAME = "../internal/courseProgress.csv"
        STUFILENAME = "../internal/studentInfo.csv"
        self.updatesum.update_all_sum(COURSEFILENAME, STUFILENAME, SEQFILENAME)

    # 某人所有次考勤记录
    def show_one_stu_all_checks(self, tec_id, course_id, stu_id):
        sumfilename = self.sum.set_sum_filename(tec_id, course_id)
        if os.path.exists(sumfilename):
            all_sum_info = self.sum.get_all_sum_info(sumfilename)
            all_keys = all_sum_info[0].keys()
            print "***  教师 " + tec_id + " 课程 " + course_id + "学生" + stu_id + " 的考勤汇总 ***"
            for key in all_keys:
                print "%-10s" % key,
            print ""
            for sum_line in all_sum_info:
                if sum_line["StuID"] == stu_id:
                    for key in sum_line:
                        print "%-10s" % sum_line[key],
                    print ""
            return True
        else:
            print "输入有误,请检查后重新操作"

    # 某次所有人考勤记录
    def show_one_check_all_stus(self, tec_id, course_id, seq_id):
        sumfilename = self.sum.set_sum_filename(tec_id, course_id)
        if os.path.exists(sumfilename):
            all_sum_info = self.sum.get_all_sum_info(sumfilename)
            all_keys = all_sum_info[0].keys()
            print "***  教师 " + tec_id + " 课程 " + course_id + "第" + seq_id + " 次的考勤汇总 ***"
            print "%-10s%-10s" % ("StuID", "Checkin" + seq_id
                                  )  # "  **  StuID  **  **  Checkin" + seq_id
            for sum_line in all_sum_info:
                print "%-10s%-10s" % (sum_line["StuID"],
                                      sum_line["Checkin" + seq_id])
            return True
        else:
            print "输入有误,请检查后重新操作"

    # 完整sum表
    def show_all_stu_all_check(self, tec_id, course_id):
        sumfilename = self.sum.set_sum_filename(tec_id, course_id)
        if os.path.exists(sumfilename):
            all_sum_info = self.sum.get_all_sum_info(sumfilename)
            all_keys = all_sum_info[0].keys()
            print "***  教师 " + tec_id + " 课程 " + course_id + " 的考勤汇总 ***"
            for key in all_keys:
                print "%-10s" % key,
            print ""
            for sum_line in all_sum_info:
                for key in sum_line:
                    print "%-10s" % sum_line[key],
                print ""
            return True
        else:
            print "输入有误,请检查后重新操作"