一、绪论.....................................................-1-1.1概要描述..............................................-2-1.2团队分工..............................................-2-二、系统需求分析............................................-2-2.1功能需求..............................................-2-三、系统设计.................................................-5-3.1系统采用的逻辑以及物理结构............................-5-3.2系统的开发环境选择....................................-5-3.3系统的数据库设计(个人负责程序涉及的数据库).............-5-四、系统实现及测试...........................................-8-4.1系统模块功能介绍......................................-8-4.2系统实现过程中遇到的主要疑难问题和解决方案............-16-4.3系统实现的特色之处(包括技术和功能).................-17-4.4系统测试.............................................-17-五、总结....................................................-17-5.1不足.................................................-17-5.2总结.................................................-18-参考文献....................................................-18-附录........................................................-19-一、绪论-2-1.1概要描述课程设计管理系统,实现课程信息管理的电子化,减轻管理人员的负担。管理人员能够很好对课程进行管理。长期以来,学校基本都是使用传统人工的方式管理学生课程信息,效率低、保密性差,随着计算机和网络技术的发展,使用计算机来管理课程信息已经成为发展趋势。这样可以提高学生选课和成绩管理工作的效率,围绕此管理所需要的学生个人信息、课程和任课教师信息、所选课程信息进行管理及维护。1.2团队分工二、系统需求分析2.1功能需求系统整体的用例图如下:-3-图2.1系统用例图管理员对课程信息进行增加、删除、编辑和查看;教师打印选课学生名单、班级成绩表、查看课程;学生可以查看自己已选课程的成绩、打印班级课程表、查询课程。需要注意的是,由于课程设计任务书表达的不明确,所以我们将管理员和教师的功能合并到教师角色中。数据流图如下:-4-图2.2数据流图图2.3数据流图-5-三、系统设计3.1系统采用的逻辑以及物理结构图3.13.2系统的开发环境选择(1)使用web的开发环境是myeclipse10;(2)数据库使用的是SQLsserverr2008。3.3系统的数据库设计(个人负责程序涉及的数据库)表3.1系统数据库设计表名功能说明选课表(choose)存放选课信息班级表(class)存放班级信息院系表(college)存放院系信息课程表(course)存放课程信息专业表(major)存放专业信息学生表(student)存放学生信息-6-教师表(teacher)存放教师信息表3.2班级信息表class序号字段名类型是否为空是否主键描述1numVarcher否是主键、班级编号2nameVarchar否否班级名称3teacherVarchar否否班级辅导员4timeVarchar否否入学时间5majorVarchar否否专业表3.3教师信息表teacher序号字段名类型是否为空是否主键描述1numVarchar否是主键、教师编号2nameVarchar否否教师姓名3courseVarchar否否教师姓名4passwordVarchar否否密码表3.4院系信息表college序号字段名类型是否为空是否主键描述1numVarchar否是主键、系编号2nameVarchar否否院系名称表3.5课程信息表class序号字段名类型是否为空是否主键描述1numVarchar否是主键、课程编号2nameVarchar否否课程名称3timeVarchar否否课程学时4scoreVarchar否否学分5styleVarchar否否课程类型6starttimeVarchar否否课程开始时间7endtimeVarchar否否课程结束时间8classroomVarchar否否教室9teacherVarchar否否任课教师10allamountInt否否总人数11nowamountInt否否当前人数12conditionVarchar否否课程状态表3.6学生信息表student-7-序号字段名类型是否为空是否主键描述1numnchar否是主键、学生学号2namenchar否否学生姓名3sexVarchar否否学生性别4birthVarchar否否学生出生日期5jgVarchar否否学生籍贯6mzVarchar否否学生名族7classVarchar否否学生班所在级8passwordVarchar否否密码表3.7选课信息表xuanke序号字段名类型是否为空是否主键描述1numInt否是自增主键、选课编号2studentnumVarchar否否学生编号3coursenumVarchar否否课程编号4gradeVarchar否否成绩表3.8选课表xuanke序号字段名类型是否为空是否主键描述1XuankexhInt否是自增主键2CxhInt否否课程信息表主键3sgradeVarchar否否课程分数4TxhInt否否教师主键-8-图3.2E-R关系图四、系统实现及测试4.1系统模块功能介绍(1)用户身份:教师当用户登录系统后,如果他的身份是管理员,那么他可以对学生信息进行增加、删除、修改和查询。-9-图4.1以下代码为循环读出数据库总学生信息值:%while(rs.next()){%trtd%=rs.getString(num)%/tdtd%=rs.getString(name)%/tdtd%=rs.getString(sex)%/tdtd%=rs.getString(birth)%/tdtd%=rs.getString(jg)%/tdtd%=rs.getString(mz)%/tdtd%=rs.getString(class)%/tdtdahref=tea_xsgl_edit.jsp?id=%=rs.getString(num)%&cla=%=rs.getString(class)%编辑/a ahref=javascript:btnDelete('%=rs.getString(num)%')删除/a/td/tr-10-%}%当点击增加按钮时就会出现增加界面,显示出学生管理信息表中所有的字段,对于存在关联的字段的选项则从关联表中读出所有数据,以下拉列表的形式或者单选框的形式显示出来,方便用户选择,不需要手动写入,直接从下拉框或单选框中获取即可。如果不填写课程编号或其他任何一个选项,就点击提交按钮,就会出现提示框,提醒你要将信息填写完整,否则无法提交。上方有一个功能菜单导航,用户可以通过这些超链接直接进入到教师角色可以进行操作的其他界面。图4.2从数据库中获取课程种类下拉框中的值,代码如下:trtd班级/tdtdselectname=newclass%while(rs.next()){%option%=rs.getString(num)%/option%}%/select/td/tr-11-图4.3当用户点击图表3右侧的编辑按钮,程序首先将这一行所对应的课程信息的主键值传给编辑处理界面,编辑页面接受主键值后,根据主键值从student表中读出这一列所对应的数据显示在如下界面中。教师可以对课程中的任意一个信息进行更改。对于像性别、班级这些选择可以直接从单选框和下拉框中更改,不需要手动输入数据。图4.3当用户点击删除按钮时,程序同样将这一行对应的主键值传给删除处理界面,同时会通过javascript弹出一个对话框,问用户是否确定删除,如果点击确定,则将与传过来的主键相对应的一整行删除掉;如果点击取消,就不对这一行进行处理,原始数据保留。相关代码如下:scriptfunctionbtnDelete(id){if(confirm(确认删除该条记录吗?))location.href=tea_xsgl_del.jsp?id=+id;}/script(2)用户身份:学生-12-当登陆的用户是学生,他可以查询个人信息、进行课程信息查询、进行选课操作、查询成绩。图4.4当用户点击上方选课信息时,会显示所有的课程信息,包括课程编号、课程名称和状态。如果该门课可选,则会在状态列里显示选择按钮,当用户点击选择按钮之后则会显示已选提醒用户该门课已经选择了。显示如下:-13-图4.5(3)登陆页面当用户在进入系统之前,进入登陆界面,会看到如下页面:图4.6用户需要输入用户名、密码,选择身份,才能点击登陆按钮进行登陆,而且要求密码-14-长度在6-10位之间。如果三个中有一个没有输入或者选择,则会通过javascript弹出一个对话框,提醒用户输入完整。相关实现的代码如下:scriptlanguage=javascriptfunctioncheckForm(){varuser=document.myForm.username.value;if(user==){alert(用户名不能为空!);document.myForm.username.focus();returnfalse;}varpwd=document.myForm.userpwd.value;if((pwd.length6)||(pwd.length10)){alert(密码长度在6到10位之间!);returnfalse;}varsf=document.myForm.usersf;varflag=false;for(vari=0;isf.length;i++){if(sf[i].checked)flag=true;-15-}if(!flag){alert(身份不能为空!);returnfalse;}}/script如果用户全部填写,就会将表单信息提交到服务器loginProc.jsp程序进行相关处理。程序会根据用户选择的身份,进入相关的数据库进行身份比对,判断用户名和密码是否一致。如果用户名或密码有一个不正确,则会跳转到登陆错误界面,如下图:图4.7如果用户名和密码都正确,则会跳转到响应身份吧的主页面。程序判定代码如下:-16-while(rs.next()){if(rs.getString(num).equals(name))flag=true;}if(flag){sql=selectpasswordfromstudentwherenum=?;pstm=conn.prepareStatement(sql);pstm.setString(1,name);rs=pstm.executeQuery();w