我想做一个中小学排课系统,请问:
1.这个数据库怎样设计才合理.
2.在添加完数据(班级、教师、课程)后,怎么按照规则(比如副课一般排在上午或下午最后一节)自动生成一张课程表?谢谢!

解决方案 »

  1.   

    1.这个数据库怎样设计才合理.
        班级表(班级ID,班级名,年级)
        教师表(教师ID,教师姓名)
        课程表(课程ID,课程名称,是否副课,年级)
        班级课程表(班级课程ID,班级ID,课程ID,上课时间)
        教师任课表(教师任课ID,教师ID,课程ID)
        教师课程表(教师课程ID,教师ID,班级课程ID)    根据需要,还可以灵活伸缩,如,增加年级表,删除教师任课表等等。
    2.在添加完数据(班级、教师、课程)后,怎么按照规则(比如副课一般排在上午或下午最后一节)自动生成一张课程表?    主要就是在课程表中加一个布尔字段“是否副课”来处理。
      

  2.   

    非常感谢 victorycy(中海)
    “1.这个数据库怎样设计才合理.
        班级表(班级ID,班级名,年级)
        教师表(教师ID,教师姓名)
        课程表(课程ID,课程名称,是否副课,年级)
        班级课程表(班级课程ID,班级ID,课程ID,上课时间)
        教师任课表(教师任课ID,教师ID,课程ID)
        教师课程表(教师课程ID,教师ID,班级课程ID)”,请问教教师任课表(教师任课ID,教师ID,课程ID)可否去掉?因为我只需要分别为每个班级,每位教师打印相应地课表?2.另外在排课过程中,还有些规则,比如
    教师要求(如某天不得排课)、
    课程约束(如体育不能排在上午第一节课)、
    班级约束(如某班星期五下午最后一节课不排课)、
    校级约束(如全校所有班级星期一下午第一节课都为班会)等信息自动为班级和教师生成课程表,要求
    主课尽量排在上午和下午一、二节课,
    副课尽量排在上午和下午的最后一节课,
    如体育课排在上午第一节课是不太合适的。
    对于软件不能安排的少数课程,教务工作者能够在自动排出的课程表上进行手工调课。
    要求:
    (1)系统可以进行两节连课处理,如作文课可以连课上;
    (2)排出的课程表中不允许有教师冲突的情况,比如,一个教师同时给两个班级上课是不允许的;
    (3)要求课程表中的课程要有所变化,比如一个班级的所有数学课总是排在上午第一节课是不好的课程表。
    (4)每周上课天数可以是5天也可以是六天,每天上课节数可以是7节或是8节;
    (5)每个年级所开课程是一样的,而且所开课程可以变化;
    (6)一个教师可以教授多门课程;
    (7)系统可以为每个班级和每位教师打印课程表;
    (8)系统可以把生成的课程表自动转化成网页在网上公布;
    (9)在课表生效后,教师可以要求调课;
    (10)教师数量是动态的,所开课程的数量也是动态的。对这些规则是否也需要建表存储呢?
    还有就是设定好这些规则好,如何在自动生成课表时引用这些规则?恳请高手们多多指点!
      

  3.   

    a_cer(玩家) 说得不错,的确是有好多规则的。
      

  4.   

    穷举法?劝楼主不要试了。因为排课组合实在太多。过去在做AI(人工智能)学习报告的时候看过一篇文章,就是排课系统。排课是资源竞争的人工智能问题。你可以到图书馆的文献检索部门查找一下。问题决非那么简单。如果完成希望能跟我交流一下:[email protected](只要思想,不要代码)