1、 需求分析规格说明书 项目名称 : 毕业设计管理系统 专业班级 : 信息管理与信息系统1班 负责人 : 合作人员 : 指导老师 : 2013年12月08日 目 录
2、 第1章 引 言 2 1.1 选题背景 2 1.2 选题意义 2 第2章 系统需求分析 2 2.1目标 3 2.2 性能及运行需求 4 2.3 功能需求 5 2.4 系统E-R图 6 第3章 系统设计 7 3.1概要设计 8 3.1.1 系统数据流程设计 9 3.1.2 数据字典 10 3.1.3 系统结构设计 11 3.1.4表结构设计 13 3.2 详细设计 15 3.2.1 系统概述 17 3.2.2 系统流程图 20 第4章 系统实现 21 4.1 数据库连接 23 4.2系统各模块功能及实现效果图 24 4.2.1出题模块及效果图 25 4
3、2.2审题模块及效果图 26 4.2.3选题模块及效果图 27 4.2.4进程控制模块及效果图 28 4.2.5评阅模块及效果图 29 4.2.6调剂模块及效果图 29 4.3 查询及分页显示功能 30 4.3.1 查询功能 30 4.3.2 分页显示功能 30 4.4 应用中出现的问题与解决方法 31 第5章 系统测试 31 5.1测试方法的介绍 31 5.2测试环境 31 5.3测试对象 32 5.3.1管理员模块 32 5.3.2教师模块 33 5.3.3学生模块 33 5.4测试用例及结果 33 5.4.1管理员模块 34 5.4.2教师模块
4、 34 5.4.3学生模块 34 结 论 35 参 考 文 献 36 第1章 引 言 1.1 选题背景 随着计算机及计算机网络的普及和全国各院校的校园网络的日益完善、健全,各种工作的计算机网络化将逐步取代繁重的传统办公模式。毕业设计作为大学生四年学习的重要环节,也有必要实行计算机网络化管理,从而减轻设计指导老师的承重负担,简化立题、选题、评分等过程,让繁冗的课题设计信息采用计算机数据库统筹管理。因此,设计一种毕业设计综合管理系统是我校教学管理发展的一项任务,也是各院校教学发展的趋势。该系统为学生、教师、管理员提供一个交互的接口,大大方便了学生
5、老师及管理员的管理人员。 1.2 选题意义 毕业设计是学生在校期间的最后一个教学环节,是学习深化和提高的一个重要过程,也是综合检验所学理论知识的一个重要环节。本设计从课题的申报、课题的审核、学生选题、调剂、指导、评阅、答辩、归档等环节进行管理,实现了毕业设计的整个流程的管理工作。系统实现了学生自主选题和教师自主选择学生的网上双向选择,并增加了留言板、文件上传与下载、新闻发布等功能,能够保证毕业设计期间管理员、老师、学生之间信息的联通,对保证毕业设计的质量有非常重要的现实意义。随着网络化的普及,全国高校的校园网络日益健全,实现无纸化办公成为未来的趋势,并且随着天津城市建设学院的教学体制改革
6、不断加深,本系统的建立为参加毕业设计的教师、学生提供接口。 第2章 系统需求分析 2.1系统目标 1.应具有方便、强大的资料管理和良好的人机界面,使用户易于操作,便于浏览。 2.系统的健壮性,扩展性良好。系统具有对数据备份和日志记录的功能。 3.系统的安全性好,通过密码和权限的管理是用户的数据不受到侵害。 4.系统的动态信息交互功能强,系统根据不同的用户的权限开放不同的处理权限;不同的用户可以通过留言板进行信息的沟通。 5.系统尽量给用户提供一个良好的操作环境。 2.2 性能及运行需求 对于毕业设计综合管理系统要求运行的工作环境稳定,易
7、于操作,系统方便应用、安全可靠、便于维护以及实时性强,对于广大用户所要执行的操作简单易懂,访问速度较快,界面友好美观,有基本的错误提醒功能,远程操作数据库正确,要求和用户有很强的互动性。 运行环境:本系统开发的毕业设计综合管理系统,在Windows XP下运行,要求使用的操作系统上安装有SQL Server2000数据库、JBuilder、Dreamweaver、Tomcat服务器(已安装的JBuilder里包含Tomcat服务器)。主机要求赛扬M或相当性能以上配置。 2.3 功能需求 根据功能分为教师、学生的前台操作和管理员的综合管理。 系统有三个主要的角色组成:学生、教师、
8、管理人员。 1. 教师完成的操作: 个人信息的管理;课题的申报、修改、选择学生,设计期间与学生的交流与辅导、实习/指导、评阅和答辩成绩的评定。 2. 学生完成的操作: 个人信息的管理,选择课题,设计期间利用留言板和教师进行交流,查询成绩。 3. 管理人员: 对教师、学生的信息查询,添加和删除;系统开放管理;选课期间调剂操作;分配评阅老师和答辩老师;成绩录入;新闻发布。 2.4 系统E-R图 管理员 姓名 密码 教师 职称 学历 密码 性别 教研室 姓名 电话 专业 监督 监督 监督 学生 密码 班级 电话 性别 姓名 课题 专业
9、 班级 评题人 出题人 名称 管理员 学生 教师 课题 审题 出题 选题 1 n 1 n 1 n n n 1 1 n 图2-1 系统E-R图 第3章 系统总体设计 3.1概要设计 3.1.1 系统数据流程设计 概要设计阶段的基本目标是用比较抽象的方式确定系统如何完成预定的任务,也就是说,应该确定系统的物理配置方案,并且进而确定组成系统的每个程序的结构。从数据流图出发设想完成系统功能的若干种合理的物理方案,从中选择一个最佳方案。然后进行软件结构设计,确定软件由哪些模块组成以及这些模块的动态调用关系。 本设计包括出题、选题、系统维
10、护、评阅和答辩等模块的设计。 首先管理员登录系统,对系统进行初始化,并可设置系统的开放与关闭。系统初始化后教师可以出题,教师出题完毕管理员审核课题,审核通过后学生才可进行选题,学生选题完后教师可以选择符合题目要求的学生,形成双向选择。如果还有学生没选上题目,管理员可以进行调剂,使每个学生都有题目。 当出题选题完毕,教师和学生建立了双向的关系后,进入到做题阶段。管理员和教师通过文件上传与下载、留言板、新闻发布和邮箱联系等方式对学生完成毕设的情况进行监督。 指导教师指导学生完成设计后,进入到评阅阶段。管理员分配评阅教师后,评阅教师对所评阅课题进行评阅,给出相应成绩。 评阅教师指导学生完成设
11、计后,进入到答辩阶段。管理员分配答辩教师后,答辩教师对所答辩课题进行答辩,给出相应成绩。 答辩结束后,由管理员对学生的实习/指导成绩、评阅成绩和答辩成绩进行录入,进行归档。 系统数据流图如下: 图3-1 系统数据流图 3.1.2 数据字典 主要的数据字典: 1. 管理员信息数据字典 表3-1 管理员信息数据字典 名字:管理员信息 别名:person 描述:管理员的相关信息 定义:管理员信息=管理员id+管理员name+管理员password 位置:存于数据库,在维护系统时应用 2. 教师信息数据字典 表3-2 教师信息数据字典 名字:教师信息
12、 别名:teacher 描述:教师的相关信息 定义:教师信息=教师id+教师姓名+教师职称+教师学历+教师性别+教师教研室+教师系别+教师电话+教师密码 位置:存于数据库,在出题和进程控制时应用 表3-3 学生信息数据字典 名字:学生信息 别名:student 描述:学生的相关信息 定义:学生信息=学生id+学生姓名+学生性别+学生系别+学生专业+学生年级+学生班级+学生成绩+学生电话+学生密码 位置:存于数据库,在选题和进程控制时应用 表3-4课题信息数据字典 名字:课题信息 别名:title 描述:课题的相关信息 定义:课题信息=课题id+课题名+出题教
13、师+课题类别+所属专业+需求人数+课题要求+课题内容 位置:存于数据库,在出题、选题时应用 表3-5管理员调剂课题数据字典 名字:管理员调剂课题 别名:adjust 描述:管理员为没有选到题的学生调剂课题 定义:管理员调剂课题=学生id+学生名字 位置:存于数据库,在选题时应用 表3-6管理员分配答辩老师数据字典 名字:管理员分配答辩老师 别名:answer 描述:管理员为每一个课题分配5位答辩老师,其中一名为答辩组长。 定义:管理员分配答辩老师=答辩题目id+答辩题目+答辩组长+答辩老师1+答辩老师2+答辩老师3+答辩老师4+答辩时间+答辩教室 位置:存
14、于数据库,在答辩时应用 表3-7 留言板信息数据字典 名字:留言板信息 别名:bbs 描述:留言板的相关信息 定义:留言板信息=主题id+楼主+主题+回复+人气+发表时间+最后回复+内容 位置:存于数据库,在留言时应用 表3-8 课题类别信息数据字典 名字:课题类别 别名:category 描述:课题类别的相关信息 定义:课题类别信息=课题类别id+名称+专业+系别 位置:存于数据库,在出题时应用 表3-9 学生成绩信息数据字典 名字:学生成绩信息 别名:score 描述:学生成绩的相关信息 定义:学生成绩信息=成绩id+学生名字+实习成绩+指导成
15、绩+评阅成绩+答辩成绩 位置:存于数据库,在归档时应用 表3-10 上传文件信息数据字典 名字:上传文件信息 别名:uploadfile 描述:上传文件的相关信息 定义:上传文件信息=文件id+名称+大小+路径+上传人 位置:存于数据库,在上传文件时应用 表3-11 系统状态信息数据字典 名字:系统状态信息 别名:system 描述:系统状态的相关信息 定义:系统状态信息=系统id+名称+开关标志 位置:存于数据库,在维护系统时应用 3.1.3 系统结构设计 图3-2系统结构图 3.1.4表结构设计 设计的表为:管理员表(person),教师表
16、teacher),学生表(student),课题表(title),教师布置任务表(task),学生提交任务表(task1),系统状态表(system)。 各个表的结构如下: 表3-1 管理员调剂选题表(adjust) 列名 数据类型 长度 是否可为空 说明 Id Int 4 N 学生Id Name Varchar 20 N 学生名字 说明:该表存储管理员调剂相关的信息 表3-2 答辩老师分配表(answer) 列名 数据类型 长度 是否可为空 说明 answer_id Int 4 N 答辩Id(主键) answer_title
17、 Varchar 20 Y 答辩题目 answer_zuzhang Varchar 20 Y 答辩组长 answer_t1 Varchar 20 Y 答辩老师1 answer_t2 Varchar 20 Y 答辩老师2 answer_t3 Varchar 20 Y 答辩老师3 answer_t4 Varchar 20 Y 答辩老师4 answer_time Varchar 20 Y 答辩时间 answer_room Varchar 20 Y 答辩教室 说明:该表存储答辩老师相关的信息 表3-3 留言板信息表(b
18、bs) 列名 数据类型 长度 是否可为空 说明 主题id int 4 N 留言号 楼主 Varchar 20 N 楼主 主题 Varchar 130 N 主题 回复 Int 4 Y 回复 人气 Int 4 Y 人气 发表时间 Varchar 50 N 发表时间 最后回复 Varchar 20 Y 最后回复 内容 text 20 Y 内容 该表存储留言板相关的信息 表3-4 课题类别信息表(category) 列名 数据类型 长度 是否可为空 说明 category_id Int
19、 4 N 留言号 category_name Varchar 50 Y 楼主 category_professional Varchar 50 Y 主题 category_department Varchar 50 Y 回复 该表存储课题相关的信息 表3-5 新闻信息表(news) 列名 数据类型 长度 是否可为空 说明 news_id Int 4 N 新闻号 news_content Varchar 300 Y 新闻内容 news_title Varchar 50 Y 新闻题目 该表存储新闻相关的信息
20、表3-6 管理员表(person) 列名 数据类型 长度 是否可为空 说明 id Varchar 20 N 管理员id name Varchar 20 N 管理员姓名 password Varchar 20 Y 管理员密码 该表存储管理员相关的信息 表3-7 成绩显示表(score) 列名 数据类型 长度 是否可为空 说明 score_id Int 4 N 学生id score_name Varchar 20 Y 学生姓名 score_sx Varchar 20 Y 实习成绩 score_zd Varc
21、har 20 Y 指导成绩 score_py Varchar 20 Y 评阅成绩 score_db Varchar 20 Y 答辩成绩 score_z Varchar 20 Y 答辩组长 score_a1 Varchar 20 Y 平均成绩1 score_db1 Varchar 20 Y 答辩老师1 score_db2 Int 4 N 答辩老师2 score_db3 Varchar 20 Y 答辩老师3 score_db4 Varchar 20 Y 答辩老师4 score_a2 Varchar 20
22、Y 平均成绩2 表3-8 教师表(teacher) 列名 数据类型 长度 是否可为空 说明 teacher_id Int 4 N 教师Id teacher_name Varchar 50 N 教师姓名 teacher_sex Varchar 50 Y 教师性别 teacher_record Varchar 50 Y 教师学历 teacher_post Varchar 50 Y 教师职称 teacher_room Varchar 50 Y 教研室 teacher_phone Varchar 50 Y 教师电话
23、 teacher_role Varchar 50 Y 角色 teacher_department Varchar 50 Y 系别 teacher_email Varchar 50 Y 邮箱号 teacher_password Varchar 50 Y 教师密码 teacher_power Int 4 Y 教师权限 说明:该表存储教师相关的信息 表3-9 学生表(student) 列名 数据类型 长度 是否可为空 说明 stu_id Int 4 N 学生Id stu_name Varchar 50 N 学生姓
24、名 stu_sex Varchar 50 Y 学生性别 stu_department Varchar 50 Y 系别 stu_professional Varchar 50 Y 专业 stu_grade Varchar 50 Y 年级 stu_class Varchar 50 Y 班级 stu_phone Varchar 50 Y 电话 stu_email Varchar 50 Y 邮箱号 stu_qq Varchar 20 Y QQ号 stu_password Varchar 50 N 学生密码 st
25、u_title Int 50 Y 所选课题 stu_score Int 4 Y 分数 stu_lock Varchar 50 Y 锁定标志 说明:该表存储学生相关的信息 表3-10 课题表(title) 列名 数据类型 长度 是否可为空 说明 title_id Int 4 N 课题Id title_name Varchar 50 N 课题名 title_teacher Varchar 50 Y 出题教师 title_category Varchar 50 Y 课题类别 title_professional
26、 Varchar 50 Y 使用专业 title_num Varchar 50 Y 需求认识 title_require Varchar 80 Y 课题要求 title_flag Varchar 50 Y 是否选中 title_content Varchar 50 Y 课题内容 title_check Varchar 20 Y 是否审核 title_xnum Int 4 Y 已选人数 title_appraise Varchar 50 Y 评阅教师 说明:该表存储课题相关的信息 表3-11 文件信息表(file)
27、 列名 数据类型 长度 是否可为空 说明 file_id Int 4 Y 文件id file_name Varchar 255 N 文件名 file_size Int 4 Y 文件大小 file_route Varchar 50 Y 文件路径 file_person Varchar 50 N 上传人 说明:该表存储上传文件相关的信息 表3-12 系统状态表(system) 列名 数据类型 长度 是否可为空 说明 system_id int 4 N 系统Id system_name varchar 50
28、 N 系统名 system_open bit 1 N 开启状态 说明:该表存储系统状态相关的信息 3.2 详细设计 3.2.1 系统概述 详细设计阶段的关键任务是确定怎样具体地实现用户需要的软件系统,也就是要设计出程序的“蓝图”。除了应该保证软件的可靠性之外,使将来编写出的程序可读性好、容易理解、容易测试和维护,是详细设计阶段最重要的目标。 1.我们设计的模块有出题、选题子系统、系统维护子系统和评阅答辩管理等。最初时管理员应对系统进行初始化,初始化完后,教师拥有权限进行出题操作,教师出题完毕,管理员应对该课题进行审核,审核通过后学生这时拥有权限进行选课操作,学生选课操
29、作完毕,这时,教师可以从选择他所出课题的学生中选择适合该课题的学生,达到一种双向的自主选择。操作完毕后,可能存在某些学生没有选上题目,这时可以通过管理员的调剂操作来处理,把没选题的学生调剂到缺少人数的课题或者重新出题来满足要求,是每个学生都有题可做。这时,指导教师应指导学生完成毕业设计,完成后应由评阅教师进行评阅。 2. 出题阶段参与工作的有相关的教师,他们由教师表(表3-8)确定,每一个教师在登录的时候就可以进入自己的界面。教师根据要求填写自己的课题和相关要求,可以通过多次登录就行修改、删除和提交来完成出题工作,所出课题存储于课题表(表3-10),也可以通过留言板与管理员交流。 开始
30、是否登录成功? 出题 出题成功? 结束 Y Y N N 图3-3出题流程图 3. 选题阶段首先由管理员确定发布内容。学生通过登录自己的界面,可以看到题目的全部信息并且进行选择。在达到限定时间后,由管理员通过人工干预的方式确定最终的选题结果。在确定的时间内和学生完成选题后,由管理员根据题目和学生的具体情况,通过人工干预的方式,对表3-11进行处理,确定每一个学生的题目,协调学生和题目之间的关系。 开始 是否登录成功? 选题 选题成功? 结束 Y Y N N 图3-4选题流程图 4. 在评题阶段,首先由管
31、理员通过对表4-2的输入,确定每一个评题阶段的评题人;然后评题人通过登录自己的界面进行评题。 开始 是否登录成功? 评阅 评阅成功? 结束 Y Y N N 图3-5评阅流程图 4. 在答辩阶段,首先由管理员通过对表4-2的输入,确定每一个题目的答辩组长和其他四位答辩老师;然后答辩老师通过登录自己的界面进行答辩管理。 图3-6评阅流程图 3.2.2 系统流程图 查看课题信息 审核课题 提交课题 课题通过 确定课题 选择学生 N Y N Y 开始 登录成功?
32、 结束 成功? Y N N Y 图3-7 系统流程图 第4章 系统实现 4.1 数据库连接 <%!String DBDRIVER="com.microsoft.jdbc.sqlserver.SQLServerDriver" ; String DBURL= "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=bishe" ; String DBUSER="sa" ; String DBPASSWORD="" ; Connection conn=null ;
33、 Statement pstmt=null ; ResultSet rs= null ; %><%String sql = "……"; try{Class.forName(DBDRIVER) ; conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; pstmt = conn.createStatement() ; rs=pstmt.executeQuery(sql) ;} catch(Exception e){} %> 4.2系统各模块功能及实现效果图 4.2.1出题模块及效果图 出题模块主要主要通过在
34、页面设置表单,出题人点击提交按钮后把相应的表单信息存入数据库bishe的表title中。 实现的主要代码: String sql= "insert into title (title_name,title_teacher,title_category,title_professional,title_num,title_require,title_flag,title_content) values (?,?,?,?,?,?,?,?)"; 效果图如下: 图4-1 出题效果图 4.2.2审题模块及效果图 审题模块主要通过从数据表title中查询出某教师的所有课题,从中选择未审核的
35、课题进行审核,同时更新数据表title。审核成功且通过后,学生自主选题。 主要实现代码: String sql = "update title set title_name=?,title_teacher=?,title_category=?,title_professional=?,title_num=?,title_require=?,title_flag=?,title_content=?, title_check=? where title_id=?;"; 实现效果图: 图4-2 审题 4.2.3选题模块及效果图 选题模块主要是先在学生主页中显示所有的已通过审核的课题,
36、学生点击课题名查看课题详细信息后,如果对课题有兴趣就点击选题按钮,把所选课题名存入数据表student中。 主要实现代码: String sql = "update title set title_xnum=title_xnum+1 where title_id=?;"; String sql1 = "update student set stu_title=? where stu_name=? and stu_lock='no'"; String sql2 = "select stu_title from student where stu_name=?"; 实现效果图:
37、 图4-3 选题效果图 4.2.4评阅模块及效果图 评阅模块主要通过从数据表teacher中查询出所有教师,从中选择合适的教师为评阅教师,同时更新数据表title。成为评阅教师后,教师可以评阅相应课题并给出成绩。 主要实现代码: String sql = "update title set title_appraise=? where title_name='"+title+"'" ; String sql2 = "update teacher set teacher_power='"+2+"' where teacher_name=?" ; 实现效果图:
38、 图4-4 选题效果图 4.2.5答辩模块及效果图 答辩模块主要通过从数据表teacher中查询出所有教师,从中选择合适的教师为答辩教师,同时更新数据表title。成为答辩教师后,教师可以答辩相应课题并给出成绩。 主要实现代码: String sql = "update title set title_answer=? where title_name='"+title+"'" ; String sql2 = "update teacher set teacher_power='"+2+"' where teacher_name=?" ; 实现效果图:
39、 图4-5 选择评阅教师 4.2.6调剂模块及效果图 调剂模块主要是管理员查找还未选题的学生,为其选择课题。实现时先选中某课题,再查找未选题的学生,为课题选择合适的学生点击提交后存入数据表中。 主要实现代码: 实现效果图: 图4-6 调剂 4.3 查询及分页显示功能 4.3.1 查询功能
47、 String term=request.getParameter("term"); term=new String(term.trim().getBytes("ISO8859_1"),"GB2312"); String sql="select * from title where "+field+"='"+term+"'"; 4.3.2 分页显示功能 //countpage总页数,sqan宽度,count总纪录数,fpage现在页,fcount现纪录数 String strpages=(String)request.getParameter("pages"); int p
48、ages=0; if(strpages==null){pages=0;} else{pages=Integer.parseInt(strpages); } rs.last(); int sqan=4,j=0,fcount=0; int count=rs.getRow(); int countpage=count/sqan; if(count%sqan>0) countpage=countpage+1; if(pages<0) pages=0; if(pages>countpage-1) pages=countpage-1; fcount=pages*sq
49、an+1; int fpage=(count-fcount)/sqan+1; rs.absolute(fcount); rs.previous(); 4.4 应用中出现的问题与解决方法 世界上的各地区都有本地的语言。地区差异直接导致了语言环境的差异。在开发一个国际化程序的过程中,处理语言问题就显得很重要了。这其中汉字是双字节的,所谓双字节是指一个双字要占用两个BYTE的位置(即16位),分别称为高位和低位。中国规定的汉字编码为GB2312,这是强制性的,目前几乎所有的能处理中文的应用程序都支持GB2312。 另外有一种编码,叫做GBK,但这是一份规范,不是强制的。GBK
50、提供了20902个汉字,它兼容GB2312,编码范围为0x8140到0xfefe。GBK中的所有字符都可以一一映射到Unicode 2.0。 当我们在处理数据库中的信息时,无论是把信息从数据库中取出来传到web页面上,还是把web页面中的信息用request对象的getParameter方法取进来插入数据库中,都会出现乱码问题。 其原因就是Java 语言内部是用 Unicode 表示字符的,采用unicode编码。Java 程序无论是从/往文件系统以字符流读/写文件,还是往 URL 连接写 HTML 信息,或从 URL 连接读取参数值,都会有字符编码的转换。所以两个方向转换都有






