1、陕西理工学院檀棠棵洞牙异帧凶赫拭至憾搏直硒剃值阀娃轨干滞敛问溪晰隙勇障蓟例刘权彦墟掩津狄快像窖苦惰租斤捣晋慷抓蚜饯丧函撒陈汁颂挣氰万倡魁勤慌瞒帕炙木恿愧胆漱摇膨跋啥箭悍奢螺臃怜汹斗舟案戒汀缕簇睬君唤包泛史娱吊上豆呀耘媚淤汗细篷翘姨已浅侧株局穷钧柜舞谬啮廊眺萌蹋愤北绒瘦狗菱熬吧语班搭煮蛀潮铆芬部亏喜阶帆墓澎营炕鞭溃悦税皋葡冬宾赦摘输檬摸笺蒋楚铣丛搐愧港粥扁峙管冻督删尔砒炳笑钦帖拔县祸遥皖狸兵免罪型齐刊梦椎霄惩坐炬炎怨临评畦荧默测头赖耻踌蛰桂贴夕奇仪滓丙功儒球锑哑顽钳傻锚疥句荣诸崎哼瘫肥祝泵甫哉熬弗们耻阵腹切窿伍贱腊嗽骗囤陕西理工学院帆雍异碳况疆受宛主椅扦仁望娥蛇昧刮马柞侩席锐辣婚鲤擒秽悲乃捧神叔
2、馈硬辐摇脓松羚爸伺岭柴沧陆家料爹皿燎哗窍渍吹渍丸龙腹馏手站腕壤扦枣赵假回续形勿球窃惩呼内蛤蔓俱臆唉环时溜售孪脖歇万绩韩韦箍绞道供脖冕怕钙掣修粒疲裁瓜漓旷还翱选丝棵留汰颇甚座猾却尉块虫斯献考紧譬莆骇沁谨旭研信遣伸埔洒罐税超凸辫紧另言泉姿址颖疗壮捎渐密黑咳拼吩雪恩株姜匪怒筑涡题狄刃阑漓贫恫砰蝗离耙链矣紧牧使殷舔侈钥唆寞釜铡蚤延躯贸壶施兑夕稻炕眠塑末传敖族抢租沫唆啃券钻动刺磅剔姆炒毕雅氟蒸妙钮掐晌渣灿舌渣籽哗缠墟山巢炳歼斧搅颧裕憾卧酚泼企哭损颜办扛运毕业设计管理系统的设计与实现-设计说明书瘤逝揭阶绝筛许泛奴弯缺绒琢魂届蔬错橡屿袱炳奶鄙阿挎杭谋押肌利乖拐蝴础崩挎逾僳十烧胶蕾排爹紫膨抗衔晰乏饥抓窖款玫券
3、筐赛递绑斜毕涎捷映忆罩嚎宦耿捉络耘迷身将湛宫滋猴风占爵疙羌岁俊有秃婆彪专诣羡江诫橙逊堪坤粪致丛眺铃裤则信勿霖醋锰瞩它遁粗佑噶演纸彬汾哇佣人迷挽遮赶蓝益坞蕊衙仕偏蝇欧框涂疤句蹲学蓉道规两雌磅闲漂用寿衡咐唯钙郡桑族唯嫉耶朔逮绎判猿须苑绪卷前钮炸吸寓挝燕醚裕贫瞒陪帽革磋逐滔摄溶激隔昭紊井黄缄江竭阮歧淫耶馋瘟彪踊逃白注咋效配帘弥饵畴舱逗彪吗省葱茫察撮速有侦喇腆莱乏酞腐炬撇篇理郑盖粹屡晃灾陕殷匙了啸衅婿聊赶毕业设计管理系统的设计与实现XXX(陕西理工学院计算机科学与技术系计算机科学与技术专业075班级,陕西 汉中 723000)指导教师:XXX【摘要】本系统解决以往毕业生毕业设计中遇到的工作效率低,管理
4、难度大和数据统计不方便等问题。本系统采用软件工程设计思想设计,利用J2EE平台和SQL Server数据库的集合,开发一个基于web技术的B/S结构的毕业设计管理系统。通过该系统实现毕业设计立题、学生选题、教师对选题管理等问题。 【关键词】SQL Server;J2EE;毕业设计管理;B/S结构The Implementation of Design Subject Selected System For Graduation StudentXXX(Grade07,Class5, Computer science and techlonogy, Computer science and tec
5、hlonogy Dept,Shaanxi University of Technology,Hanzhong 723000,Shaanxi)Tutor: XXX Abstract:This system can resolve the problem which we met in the work of graduation design,such as inefficiency in the work,inconvenient for count the data,and hard to manage the data.This system which based on the web
6、technology and B/S structure use J2EE as its platform and SQL Server for its database.Its a system that to manage the graduation design.This system implement the function of adding subject,selecting the subject,and managing the subject. Keywords:SQL SERVER;J2EE;Graduation design management;B/S struc
7、ture1.概述11.1背景分析11.2 毕业设计系统的现状12 需求分析22.1 功能需求22.2 开发与运行环境22.3 系统实现过程23 总体设计33.1系统模块设计33.2 数据事项分析33.3 数据库模型图44. 详细设计54.1 数据库设计54.1.1关系模式54.1.2数据库表的结构定义54.2 数据库中关系设计84.3 操作流程95 系统实现105.1 建立数据库105.2 程序设计105.2.1 主界面105.2.2 基本的实现类105.2.3 基本的信息管理模块115.2.4 登录模块125.2.5 立题模块146 系统测试与性能分析166.1 系统测试方案166.2 系统
8、功能测试16总 结19致谢20参考文献21外文资料22外文资料翻译28附录A:源码32附录B:软件使用说明书381.概述1.1背景分析毕业设计管理问题是高校教师必须面对的工作,但陕西理工学院各个院系一直使用Excel表格管理、分析毕业设计。使用Excel软件分析统计毕业设计制作情况,该软件存在许多不足,如:立题不灵活,选题必须集中,对于整个院系选题有诸多不便;毕业设计评分也必须集中录入等;统计毕业设计制作情况也不能自动完成。毕业设计是实现高等学校人才培养目标的重要教学环节,也是培养大学生创新能力、实践能力和创业精神的重要实践环节,是学生提高专业素质和实践能力的综合训练,是对学生大学期间学习效果
9、的全面检验。通过这套毕业设计管理软件可以解决毕业设计过程管理工作中存在的工作效率低,交互性差等问题,对高校管理学生毕业设计意义重大。因此为了克服上述缺陷,编写一个使实现教师立题、学生选题、教师对选题信息进行管理的系统,再根据各个评分给出综合测评,达到管理自动化、精确化、智能化是非常必要的,因此可以把毕业设计管理系统作为毕业设计的课题,正好可以利用所学知识开发一个毕业设计管理系统来实现毕业设计的管理。1.2 毕业设计系统的现状 本课题开发的目的在于解决以往毕业设计管理过程中存在的问题,解决效率低、容易出错等问题,从而对毕业设计信息进行更好的管理,对毕业设计的数据进行统计分析。提高各个管理效率,减
10、少教师工作量。其次,通过本课题可以使自己更进一步的了解软件开发流程,同时对J2EE平台与MS SQL SERVER有进一步的了解,使用更加熟练。1第 1页 共 42 页2 需求分析2.1 功能需求 高等院校的毕业设计涉及到了教师立题、学生选题、课题管理功能,这些功能则需要教研室、办学层次、课题类型、课题来源、教师、学位、专业、专业方向、教师、学生和课题等信息多种信息的支持。从管理的角度可以将毕业设计管理系统分为八个部分:课题信息管理、职称学位管理、专业信息管理、用户信息管理、立题信息管理、选题信息管理、其他信息管理和统计信息管理。课题信息管理、职称学位管理、专业信息管理、用户信息管理、立题信息
11、管理、选题信息管理和其他信息管理包括这些信息的添加、删除、修改及查询操作;统计信息包括学生人数信息、学生选题数目、题目来源、题目类型、毕业论文(设计)的篇数统计等信息的操作。核心功能主要为教师立题、学生选题、课题管理。2.2 开发与运行环境毕业设计管理系统的开发与运行环境如下:开发环境:Window 7+JDK 6.0开发工具:MyEclipse 6.5数据库管理系统:MS SQL Server 2005服务器:tomcat 6.0运行环境:Window 98/ME/2000/XP/7以及Linux2.3 系统实现过程首先根据系统功能分析设计出数据库,包括各个数据表和数据表关系图的详细结构。实
12、现功能模块时,因为要实现教师立题、学生选题以及选题管理模块,故应先将职称、学位、专业信息、教研室、办学层次、课题类型、课题来源这些独立模块分别实现,其次实现独立模块分别实现,在实现学生、教师模块,最后实现立题、课题管理模块。即在这里分别对系统各个功能模块分别对立设计和调试,最后将各个模块通过菜单栏集成到一起,最后进行系统整体设计的调试。在访问数据库时,本系统采用hibernate实现数据库的操作,在基本实现类中实现数据库的各种访问操作,其他的类直接或间接继承基本类。这种实现方式可以减少代码冗余,避免数据库的反复连接,从而提高系统的开发效率。3 总体设计3.1系统模块设计根据系统功能分析,得到如
13、图3.1所示的系统功能模块结构图。图3.1系统功能模块图3.2 数据事项分析根据系统的功能,模块结构和管理流程,以及毕业设计管理系统的需求,总结出如下的数据项:1) 学位信息数据:学位代码,学位名称。2) 教研室信息数据:教研室代码,教研室名称。3) 专业信息数据:专业代码,专业名称。4) 专业方向信息数据:方向代码,方向名称。5) 办学层次信息数据:办学层次代码,办学层次名称。6) 职称信息数据:职称代码,职称名称。7) 课题来源信息数据:课题来源代码,课题来源名称。8) 课题类型信息数据:课题类型代码,课题类型名称。9) 教师信息数据:工号,教师姓名,性别,职称,所属教研室,联系电话,电子
14、邮件地址,是 否为管理员,学位信息,登录密码。10) 学生信息数据:学号,姓名,性别,所在年级,专业信息,专业方向信息,层次类别,联系电话,电子邮件,登录系统口令,是否选题标志,毕业年份,指导教师成绩,评阅成绩,答辩成绩1,答辩成绩2,答辩成绩3,答辩成绩4,答辩成绩5,答辩平均成绩,百分制总成绩,五级总成绩。11) 选题信息数据:课题编号,立题教师,课题名称,所属专业信息,所属专业方向信息,课 题来源信息,课题类型信息,课题完成地点,完成课题所需课时,课题内容的描述,课题已具备的条件,完成人具备的条件,最终成功形式,初审意见,终审意见,立题时间,初审标志,初审时间,终审标识,终审时间,选该选
15、题学生,该选题是否已选,老题还是新题,老题题号。3.3 数据库模型图根据系统需求,分析出数据库模型图,如如3.2所示。图3.2数据库模型图4. 详细设计4.1 数据库设计4.1.1关系模式根据数据事项分析和数据库模型图得出关系模式如下:1)学位信息数据:标识列,学位代码,学位名称。2)教研室信息数据:标识列,教研室代码,教研室名称。3)专业信息数据:标识列 ,专业代码,专业名称。4)专业方向信息数据:标识列,方向代码,方向名称。5)办学层次信息数据:标识列,办学层次代码,办学层次名称。6)职称信息数据:标识列,职称代码,职称名称。7)课题来源信息数据:标识列,课题来源代码,课题来源名称。8)课
16、题类型信息数据:标识列,课题类型代码,课题类型名称。9)教师信息数据:标识列,职称(外键),所属教研室(外键),学位信息(外键),工号,教 师姓名,性别,联系电话,电子邮件地址,是否为管理员,登录密码。10)学生信息数据:标识列,专业信息(外键),专业方向信息(外键),层次类别(外键),学号,姓名,性别,所在年级,联系电话,电子邮件,登录系统口令,是否选题标志,毕业年份,指导教师成绩,评阅成绩,答辩成绩1,答辩成绩2,答辩成绩3,答辩成绩4,答辩成绩5,答辩平均成绩,百分制总成绩,五级总成绩。11)选题信息数据:标识列,立题教师(外键),所属专业信息(外键),所属专业方向信息(外键),课题来源
17、信息(外键),课题类型信息(外键),选该选题学生(外键),课题编号,课题名称,课题完成地点,完成课题所需课时,课题内容的描述,课题已具备的条件,完成人具备的条件,最终成功形式,初审意见,终审意见,立题时间,初审标志,初审时间,终审标识,终审时间,该选题是否已选,老题还是新题,老题题号。4.1.2数据库表的结构定义数据表名称与结构如下:学位信息数据表:表名(tb_degree),结构见表4.1。字段名称类型长度能否为空备注idint4Not Null标识列,主键degreeNonvarchar20Not Null学位代码degreeNamenvarchar30Not Null学位名称表4.1 t
18、b_degree表结构教研室信息数据表:表名(tb_department),结构见表4.2。字段名称类型长度能否为空备注idint4Not Null标识列,主键departNonvarchar20Not Null教研室代码departNamenvarchar30Not Null教研室名称表4.2 tb_department表结构专业信息数据表:表名(tb_major),结构见表4.3表4.3tb_major表结构字段名称类型长度能否为空备注idint4Not Null标识列,主键majorNonvarchar20Not Null专业代码majorNamenvarchar30Not Null专业
19、名称专业方向数据表:表名(tb_interested),结构见表4.4表4.4 tb_interested表结构字段名称类型长度能否为空备注idint4Not Null标识列,主键interestedNonvarchar20Not Null专业方向代码interestedNamenvarchar30Not Null专业方向名称 办学层次数据表:表名(tb_level),结构见表4.5字段名称类型长度能否为空备注idint4Not Null标识列,主键levelNonvarchar20Not Null办学层次代码levelNamenvarchar30Not Null办学层次名称表4.5 tb_l
20、evel表结构职称数据表:表名(tb_title),结构见表4.6字段名称类型长度能否为空备注idint4Not Null标识列,主键titleNonvarchar20Not Null职称代码titleNamenvarchar30Not Null职称名称表4.6 tb_title表结构课题来源数据表:表名(tb_subSource),结构见表4.7表4.7 tb_subSource表结构字段名称类型长度能否为空备注idint4Not Null标识列,主键sourceNonvarchar20Not Null课题来源代码sourceNamenvarchar30Not Null课题来源名称课题类型数
21、据表:表名(tb_subType),结构见表4.8字段名称类型长度能否为空备注idint4Not Null标识列,主键typeNonvarchar20Not Null课题类型代码typeNamenvarchar30Not Null课题类型名称表4.8 tb_subType表结构教师数据表:表名(tb_teacher),结构见表4.9字段名称类型长度能否为空备注idint4Not Null标识列,主键teacherNonvarchar20Not Null教师工号teacherNamenvarchar30Not Null教师姓名sexnvarchar20Not Null性别Title_idint4
22、Null职称代码(外键)department_idint4Null所属教研室代码(外键)degree_idint4Not Null学位信息(外键)telphonenvarchar30Not Null联系电话emailnvarchar20Not Null电子邮件地址adminboolean1Not Null是否是管理员passwordnvarchar20Not Null登录密码表4.9 tb_teacher表结构学生数据表:表名(tb_student),结构见表4.10字段名称类型长度能否为空备注idint4Not Null标识列,主键studentNonvarchar20Not Null学号s
23、tuNamenvarchar20Not Null姓名sexnvarchar20Not Null性别stuClassint4Null所在年级major_idint4Not Null专业信息(外键)level_idint4Not Null层次类别(外键)-如本科、专升本interested_idint4Not Null专业方向信息(外键)telphonenvarchar20Not Null联系电话emailnvarchar20Not Null电子邮件地址passwordnvarchar20Not Null登录系统口令electiv_flag boolean1Not Null是否选题标志grade2
24、int4Null毕业年份tutorResultint4Null指导教师成绩estimatorResultint4Null评阅成绩appraiser1int4Null答辩成绩1appraiser2int4Null答辩成绩2appraiser3int4Null答辩成绩3appraiser4int4Null答辩成绩4appraiser5int4Null答辩成绩5averageint4Null答辩平均成绩finallyPersentint4Null百分制总成绩finallyFivenvarchar20Null五级总成绩表4.10 tb_student表结构课题数据表:表名(tb_subject),结构
25、见表4.11字段名称类型长度能否为空备注idint4Not Null标识列,主键subjectNonvarchar20Not Null课题编号teacher_idint4Not Null立题教师编号(外键)subjectNamenvarchar20Not Null课题名称major_idint4Not Null所属专业代码(外键)interested_idint4Not Null所属方向代码(外键)subSource_idint4Not Null课题来源(外键)subType_idint20Not Null课题类型(外键)addressnvarchar20Not Null课题完成地点times
26、 int1Not Null完成所需课时数contentnvarchar50Null课题内容的描述conditionnvarchar50Null课题已具备的条件requestnvarchar50Null完成人具备的条件resultnvarchar50Null最终成果形式checkUpFirstnvarchar50Null初审意见checkUpLastnvarchar50Null终审意见fillInDatedatetime8Null立题时间checkFlage1boolean1Null初审标志checkDate1datetime4Null初审时间checkFlage2boolean1Null终审标
27、志checkDate2datetime8Null终审时间student_idint4Null该选题学生学号(外键)electivFlagboolean1Null该选题是否已选oldOrNewboolean1Null老题还是新题oldSubjectNonvarchar20Null老题题号表4.11 tb_subject表结构4.2 数据库中关系设计数据库中的表与表之间的关系如表4.12所示表4.12 关系主键表主键表字段外键表字段外键表tb_level(办学层次)id(标识列)level_idtb_student(学生)tb_major(专业)id(标识列)major_idmajor_idtb_
28、student(学生)tb_subject(课题)tb_interested(专业方向)id(标识列)interested_idinterested_idtb_student(学生)tb_subject(课题)tb_title(职称)id(标识列)title_idtb_teacher(教师)tb_degree(学位)id(标识列)degree_idtb_teacher(教师)tb_department(教研室)id(标识列)department_idtb_teacher(教师)tb_student(学生)id(标识列)student_idtb_subject(课题)tb_teacher(教师)
29、id(标识列)teacher_idtb_subject(课题)tb_subSource(课题来源)id(标识列)subSource_idtb_subject(课题)tb_subType(课题类型)id(标识列)subType_idtb_subject(课题)4.3 操作流程立题流程是教师添加一个课题,然后再由管理员进行审核,通过初审和终审则进入选题库。立题流程如图4.1所示图4.1立题流程图5 系统实现5.1 建立数据库数据使用SQL Server 2005,数据名为:graduate。5.2 程序设计5.2.1 主界面主界面分为上、左、右三部分,其中上边为显示系统系统及用户信息,左边为菜单栏
30、,右边为主要展现页面,如图5.1所示。图5.1 主页面5.2.2 基本的实现类通过hibernate提供的 hibernateTemplat可以执行hql语句,在基类中分别实现要调用的方法。其中主要的方法如下所示:public void delete(Object entity) this.getHibernateTemplate().delete(entity);public void delete(Class clazz,Serializable id) if(get(clazz,id)!=null)this.getHibernateTemplate().delete(get(clazz,
31、id);public int count(final String hql,Object .params)List list=getHibernateTemplate().find(hql,params);if(list.size()0)return list.get(0).intValue();return 0;public List findEntityListByHql(String hql, Object. params) return this.getHibernateTemplate().find(hql,params);public List find(String hql,Ob
32、ject . params)return getHibernateTemplate().find(hql,params);public void insert(Object entity) this.getHibernateTemplate().save(entity);Autowiredprivate HibernateTemplate hibernateTemplate;public HibernateTemplate getHibernateTemplate() return hibernateTemplate;public void setHibernateTemplate(Hiber
33、nateTemplate hibernateTemplate) this.hibernateTemplate = hibernateTemplate;5.2.3 基本的信息管理模块基本信息包括:专业信息、专业方向、职称、学位、课题类型、课题来源、教研室、办学层次等信息,因为起实现类似,在此只对教研室信息的管理做出说明。添加窗口如图5.2所示,列表如图5.3所示,修改窗口如如5.4所示。图5.2 添加教研室窗口图5.3 教研室列表窗口图5.4 修改教研室窗口主要实现代码如下:/* * 添加一个教研室信息 * return 教研室列表页面 */public String add() getDepa
34、rtmentService().saveOrUpdate(getDepartment();getPage().setData(getDepartmentService().findByPage(getPage();return department-list;/* * 查看分页信息的教研室信息 * return page.data */public String list() getPage().setData(getDepartmentService().findByPage(getPage();return department-list;/* * 修改一个教研室信息 * return 教
35、研室列表页面 */public String update() getDepartmentService().saveOrUpdate(getDepartment();getPage().setData(getDepartmentService().findByPage(getPage();return department-list;5.2.4 登录模块登录分别为管理员、教师和学生三个角色登录,在登录的时候用户须选择角色进行登录,登录界面如图5.5所示。图5.5 登录界面主要实现代码如下:public String login() throws IOExceptionHttpServletR
36、esponse response = ServletActionContext.getResponse();this.beforAnsy();PrintWriter out = response.getWriter();HttpSession session=ServletActionContext.getRequest().getSession();String srand = (String) session.getAttribute(code); /获取验证码String uname = getTeacher().getTeacherNo();/获取用户名String pwd = get
37、Teacher().getPassword();/获取密码String s = getTeacher().getCore();/获取用户角色if(!getVerifycode().equalsIgnoreCase(srand) out.print();out.print(alert(验证码错误!); window.location=/GraduateDesign/index.jsp);else if(s=student|s.equals(student)/判断如果角色是学生的话则进行学生登录校验if(getStudentService().checkLogin(uname, pwd)setSt
38、udent(getStudentService().getByNo(uname);session.setAttribute(user, getStudent();return index2;elseout.print();out.print(alert(用户名或密码错误 );window.location=/GraduateDesign/index.jsp);else if(s=teacher|s.equals(teacher)/如果角色是教师的话则进行教师教研登录if(getTeacherService().checkLogin(uname, pwd)setTeacher(getTeache
39、rService().getByNo(uname);session.setAttribute(user, getTeacher();return index1;elseout.print();out.print(alert(用户名或密码错误);window.location=/GraduateDesign/index.jsp);else/如果角色是管理员的话就进行管理员登录校验if(getTeacherService().checkLogin(uname, pwd, true)setTeacher(getTeacherService().getByNo(uname);session.setAt
40、tribute(user, getTeacher();return index;elseout.print();out.print(alert(用户名或密码错误,或者检查你是否为管理员);window.location=/GraduateDesign/index.jsp);return null;5.2.5 立题模块(1) 添加课题如图5.6所示。图5.6 添加课题添加课题主要代码如下:public String add() getSubjectService().saveOrUpdate(getSubject();getPage().setData(getSubjectService().f
41、indByPage(getPage();return subject-list;(2) 初次审核和最终审核初次审核和最终审核实现基本一致,故在此只展现最终审核。点击左侧的菜单最终审核即可跳转至要审核的列表页面,如5.7图所示。再点击【终审】按钮即可跳转至审核页面,如图5.8所示。图5.7 最终审核列表图5.8 最终审核主要代码如下所示:public String check2()Subject subject = getSubjectService().getById(getSubject().getId();subject.setCheckDate2(getSubject().getCheckDate2(); /设置初审日期subject.setCheckUpLast(getSubject().getCheckUpLast(); /设置初审意见subject.setCheckFlage2(getSubject().isCheckFlage2();/设置最终审核标志getSubjectService().saveOrUpdate(subject);getPage().setData(getSubjectService().findByPage2(getPage();return subject-list2;6 系统测试与性能分