现在项目进行到最后阶段,有个问题一直很困扰,是这样的,项目是做成绩管理的,一个学生考一次试,上传考试录音至服务器,一个学生一次考试有6个录音文件,每个文件在数据库里对应有上传时间和存储路径,在教师打分的时候,页面上播放学生的录音,每次播放一个学生一次考试的某个录音,播放完老师打分,如何实现呢?求高手帮忙!!

解决方案 »

  1.   

    不难做,楼主不会是新手吧
    一个老师--->多个学生
    学生--->多次考试
    一次考试--->对应一个学生的成绩
    一次考试--->6个录音
      

  2.   

    设计思路:
    可以设计出两张表:一张学生信息表,一张录音信息表,在录音信息表中可以存放录音信息以及其他信息,并在录音信息表中添加一个字段,这个字段就是学生id,这样教师在选择某个学生的时候可以拿到每个学生对应的ID查询出每个学生所对应的录音文件,查询出的录音文件在界面中遍历显示,然后教师就可以随便点击一个录音名称,这样就可以打开所选择的录音文件了。
      

  3.   

    现在问题是实现方面:下面是dao操作,根据班级得到每个学生的录音文件,这样获得的是一个学生所有的录音文件
    //查询录音
    public List<StudentWave> findWaves(String class_name) {
    List<StudentWave> waves = new ArrayList<StudentWave>();
    //根据班级得到学生
    List<Student> students = this.hibernateTemplate.find("from Student s where s.student_class=?",class_name);
    //遍历学生集合
    Iterator<Student> it = students.iterator();
    while(it.hasNext()){
    Student student = it.next();
    String stu_id = student.getStudent_id();
    //得到每个学生的录音文件
    waves = this.hibernateTemplate.find("from StudentWave sw where sw.student_id=? order by sw.test_date",stu_id);
    System.out.println("##################################");
    System.out.println("学生录音个数:"+waves.size());
    for(StudentWave wave:waves){
    System.out.println("学生id: "+wave.getStudent_id()+" 录音地址: "+wave.getPath()+" 测试时间:"+wave.getTest_date());
    }
    }
    if(waves.size()!=0)
    return waves;
    return null;
    }
      

  4.   

    action里操作:
    public String getWavPath(){

    List<StudentWave> waves = this.teacherManager.findWaves(c_name);
                    request.put("waves", waves);
    return SUCCESS;
    }
    页面:
    <div align="center">
    <object classid="CLSID:22D6f312-B0F6-11D0-94AB-0080C74C7E95"
    codebase="http://www.microsoft.com/ntserver/netshow/download/en/nsmp2inf.cab#Version=5,1,51,415"
    type="audio/mp3" width="282" height="45" id="wm_player"
    class="h2_player">

    <!-- 录音地址 -->
    <param name="FileName"
    value="D:\test\双语学院\双语一班\101\2012-9-1-21-47\梁祝 - 小提琴.mp3" /> <param name="AutoStart" value="false" />
    <param name="Loop" value="false" />
    <param name="ShowControls" value="true" />
    </object>
    </div>
      

  5.   

    现在就是这么设计的,每个录音文件对应每个学生id,问题是找到学生这次考试的6个录音后,如何在页面上实现呢,页面现在是这么设计,每个录音打分对应一个radio单选按钮,选择一个单选之后,页面的播放地址对应改变为数据库里录音表的path字段,头疼这呢,不知道该如何实现从页面的${waves}转到wav的字段path