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)
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 "输入有误,请检查后重新操作"