高校科研管理系统.doc_第1页
高校科研管理系统.doc_第2页
高校科研管理系统.doc_第3页
高校科研管理系统.doc_第4页
高校科研管理系统.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计说明书(数据库系统)题目: 高校科研管理系统院 系: 计算机科学与工程学院专业班级: 计算机09-3班 学 号: 学生姓名: 指导教师: 2010 年 12月 14日 安徽理工大学课程设计(论文)任务书 计算机科学与工程 学院 计算机科学与技术系学 号2009302848学生姓名程明明专业(班级)计算机09-3班设计题目高校科研管理系统设计技术参数1、开发语言选择:Java2、后台数据库:SQL Server 2000 3、应用程序与数据库的连接方式:采用JDBC-ODBC桥接的方式连接4、数据源命名为:sql server 20005、数据库名称为:数据库课程设计,其中有表Employee(主键为职工号),Department()主键为部门编号),Item(主键为项目编号),Fruit(主键为成果编号),Paper(主键为论文编号)GeneralCourse(主键为科研信息编号)6、在java程序中注明 import java.sql.*; 引入数据库包,进行与数据库相关的操作。设计要求主要完成数据库的设计部分,包括需求分析,概念结构设计,逻辑结构设计,物理结构设计,并对关系模式进行分析,最后用自己熟悉的开发工具连接数据库,实现基本的对数据库的操作。工作量 注:可填写说明书(论文)的字数要求或要完成的图纸数量。工作计划2010年11月29日到12月4日:在小组内进行分工,进行系统调查,收集资料,并根据收集的资料进行整体功能分析;查阅资料了解如何使用JDBC-ODBC桥接的方法连接数据库并使用此方法连接数据库进行测试2010年12月5日到12月8日:进行具体的数据库设计,包括确定表的模式,确定表之间的参照完整性和实体完整性,开始建表2010年12月9日到12月11日:运用java语言编写程序,实现所设计的系统功能,并进行调试,同时修改程序中和数据库中的一些错误和不足的地方。2010年12月12日到12月19日:完成课程设计说明书。参考资料数据库系统概论教材java语言程序设计java语言程序设计实验指导等指导教师签字吴观茂系主任签字 2010年 11 月 20 日 指导教师评语:成绩: 指导教师: 年 月 日安徽理工大学课程设计(论文)成绩评定表摘要在此次课程设计中,我做的题目是高校科研管理系统。设计时采用的DBMS是SQL Server 2000,与数据源连接的方式采用的是JDBC-ODBC桥接,采用java语言编写程序,编辑器选择的是Jcreator Pro。通过编写程序实现了利用数据库对2010年安徽理工大学科研信息的管理,包括让普通用户利用此系统查询一些科研信息的详细情况;以及让数据库管理员利用此系统对数据库进行管理包括:更新科研信息、修改科研信息以及删除错误的科研信息等。在此期间我利用了一些很好的资源使得我的程序完成的很快:吴观茂和石文兵老师给了很多指导,同学的帮助,网络资源,图书资料和教材等等。程序完成后,马上开始写课程设计报告书,我采用了两个很好的软件来完成的:WPS文字编辑器和Mcrosoft Visio来制图。目录1系统分析11.1 数据库分析11.2 系统功能分析32系统设计42.1 数据库设计42.1 系统功能设计63系统实现103.1 数据库的具体实现103.1 系统的java程序实现123.1 程序运行的结果124总结164.1 设计体会164.2 系统改进175参考文献18安徽理工大学课程设计(论文)1系统分析1.1 数据库分析数据库可以存储以下信息:科技工作者人员信息,安徽理工大学中的所有部门信息,科研论文的详细信息,科研成果的详细信息,科研著作的详细信息,科研项目的详细信息等,最终要对所有的信息进行汇总,此处包括存储每次插入信息的详细情况。根据以上分析信息及使用的为SQL Server 2000是一种关系数据库,可以做出各关系之间的E-R图如下:图1 科研管理系统数据库的E-R图基于以上分析,共需建立六个表,表模式如下:表1 Employee表职工号(主键)姓名性别名族文化程度职称所在部门部门编号(主键)部门名称负责人联系电话表2 Department表表3 Item表项目编号(主键)项目名称项目来源起讫时间参加人员角色备注论文编号(主键)论文名称所在期刊获奖情况论文简介 表4 Paper表 表5 Fruit表成果编号(主键)成果名称证书级别类别成果简介 表6 GeneralCourse表科研信息编号(主键)发布时间姓名职工号部门编号项目编号科研成果编号论文编号此项全部自动生成 确定关系之间的完整性:表1到5中主键项目不能为空,必须满足实体完整性,表6中的职工号,部门编号,项目编号,科研成果编号,论文编号必须使用check约束定义参照完整性,其中的被参照关系分别为:Employee,Dpartment,Item,Fruit,Paper。1.2 系统功能分析系统是用于对高校科研信息数据库进行操作的,所以最基本角色应该分为两个部分:管理员和查询者,应该针对这两个角色分别设计相应功能的流程。考虑java代码重用,除主方法外另外再定义那些操作中常用的方法。要用到的方法有:查询,更新,修改,删除。其中查询功能又分为:利用姓名查询,利用论文名查询,科研成果名查询,科研项目名查询,部门名查询等。更新功能分为:更新论文信息,更新科研成果信息,更新科研项目信息。修改功能分为:修改科研论文中信息,修改科研成果中信息,修改科研项目中信息等。删除功能下面有分为:删除论文,删除科研成果,删除科研项目。图2 科研管理系统系统功能流程图 2系统设计2.1 数据库设计数据库的物理结构设计如下:图1 Paper表的设计图2 Item表的设计图3 Fruit表的设计图4 Department表的设计图5 Employee表的设计图6 GeneralCourse表的设计2.2 系统功能设计系统是用于查询、修改、更新、删除相关科研信息的一个科研管理系统,于是我在public class TestSqlServer中定义了共五个方法,其中除了主方法外,共有四个方法分别用于查询、修改、更新、删除,在更新模块中实现的功能是向数据库中加入新的科研信息。最后在主方法中利用流程控制语句将这些方法组织起来,实现系统的工能。public class TestSqlServerpublic static void main(String args)public static void query()public static void update()public static void amend() public static void delete() 主方法中的流程控制如下:if(button.equalsIgnoreCase(管理员)System.out.println(*管理员操作界面*);System.out.println(1.查询+2.更新+3.修改+4.删除+0.安全退出);System.out.print(请输入您想进行的操作:);String operate = br.readLine();int p=-1;if(operate.equals(查询)p=1;else if(operate.equals(更新)p=2;else if(operate.equals(修改)p=3;else if(operate.equals(删除)p=4;else if(operate.equals(安全退出)System.out.println(*谢谢使用*);System.exit(0);elseSystem.out.println(=请按要求正确输入您的选择!=);p = 0;while(p!=-1)switch(p)/利用数据库与java连接进行更新操作,添加数据case 0: System.out.println(*管理员操作界面*);System.out.println(1.查询+2.更新+3.修改+4.删除+0.安全退出);System.out.print(请输入您想进行的操作:);operate = br.readLine();p=-1;if(operate.equals(查询)p=1;else if(operate.equals(更新)p=2;else if(operate.equals(修改)p=3;else if(operate.equals(删除)p=4;else if(operate.equals(安全退出)System.out.println(); System.out.println(); System.out.println(*谢谢使用*);System.exit(0);elseSystem.out.println(=请按要求正确输入您的选择:=);p = 0;case 1: TestSqlServer.query(); break;/sql查询操作case 2: TestSqlServer.update();break;/sql更新操作case 3: TestSqlServer.amend();break;/sql修改操作case 4: TestSqlServer.delete();break;default:break;System.out.println(*管理员操作界面*);System.out.println(1.查询+2.更新+3.修改+4.删除+0.安全退出);System.out.print(请输入您想进行的操作:);operate = br.readLine();p=-1;if(operate.equals(查询)p=1;else if(operate.equals(更新)p=2;else if(operate.equals(修改)p=3;else if(operate.equals(删除)p=4;else if(operate.equals(安全退出)System.out.println(*谢谢使用*);System.exit(0);elseSystem.out.println(=请按要求正确输入您的选择!=);p = 0; else if(button.equalsIgnoreCase(查询者)System.out.println(*查询者操作界面*);System.out.println(1.查询+0.安全退出);System.out.print(请输入您想进行的操作:);String operate = br.readLine();int p=-1;if(operate.equals(查询)p=1;else if(operate.equals(安全退出) System.out.println(*谢谢使用*);System.exit(0);elseSystem.out.println(=请您按要求正确输入:=);p = 0;while(p!=-1)switch(p)/利用数据库与java连接case 0: System.out.println(*查询者操作界面*);System.out.println(1.查询+0.安全退出);System.out.print(请输入您想进行的操作:);operate = br.readLine();p=-1;if(operate.equals(查询)p=1;else if(operate.equals(安全退出) System.out.println(*谢谢使用*);System.exit(0);else System.out.println(=请您按要求正确输入:=); p = 0;case 1: TestSqlServer.query();break;/sql查询操作default:break;System.out.println(*查询者操作界面*);System.out.println(1.查询+0.安全退出);System.out.print(请输入您想进行的操作:);operate = br.readLine();p=-1;if(operate.equals(查询)p=1;else if(operate.equals(安全退出)System.out.println(*谢谢使用*);System.exit(0);else System.out.println(=请您按要求正确输入:=); p = 0;else System.out.println(=您的身份有问题!=); System.exit(0);catch(IOException i)System.out.println(键盘输入数据未能被正确读取!);System.exit(-1);通过以上的流程控制语句,并结合用户的输入,不断的调用另外的四个静态方法,最终实现,对于数据库的操作。3系统实现3.1 数据库具体实现图1 部门信息表图2 科研成果信息表图3 教职工信息表图4 科研项目信息表图4 科研论文信息表图4 安徽理工大学2010年科研信息一览表3.2 系统的Java程序实现详见电子文档 TestSqlServer.java。3.3 程序行的结果以下是管理员操作界面,其中罗列了所有的管理员可进行的操作:以下是查询者的操作界面,罗列了查询者可以进行的操作:4总结4.1 设计体会这次课程设计对我来说程序上问题不大,我们组中的组长刘超在课程设计一开始就找到了大量的优秀资料,这使得我们整个小组中的课程设计一开始很有方向,我们第一节课确定了该怎么做,满以为会按部就班非常顺利,结果却是有许多的困难等着我们解决。对于DBMS我开始准备使用MY SQL因为它是java程序设计中常用的数据库,因此查询工具书时要方便的多,但最终由于周围没人用这个,所以安装配置什么的比较困难经过小组讨论,我们还是用了经典的SQL Server 2000。在设计程序的选择上我觉得我的java学得不错,所以我决定了用java来写。但是,在如何与数据库连接的问题上,我曾下过很大工夫,我上网收集的大量资料讲的都是非常复杂的关于数据库如何连接,老师上课时讲的是两种方法:ADO和ODBC连接数据源,我对此非常头痛,并不知道如何下手。通过上网查询和咨询老师最终我使用的是最简单的连接方式:JDBC-ODBC连接。通过查书,我知道了数据库如何与java程序连接,并自己尝试通过了测试。完成了这些,我开始构思java程序,最终却发现,这个流程的控制与c语言几乎没有差别,我毫不费力的完成了整个程序的框架的设计,我对于程序中的每个异常进行了捕捉,并进行了详细的处理。在写完管理员模块的第一个功能:查询时我发现程序已经接近600多行了,我惊讶之余才发现我差点把java的代码重用的功能给忘了,于是我在主方法之外又定义了四个静态方法:查询、更新、修改、删除。这样我的代码数量大大减少了,程序的结构也变得简洁易读了,更加便于维护和修改,在设计如何通过java语言向数据库传参数时,我又查询了大量的参考书,其中的一本叫java程序设计实验指导对我的帮助最大,还有我还用到了java的API文档,它使得我在使用java、sql、*中的一些方法时少走了不少弯路。在数据库的设计过程中,我反复阅读了教材,以求得对数据库的一些概念有个更好的了解,从而设计出一个结构最好,并且存储方便,便于查询的数据库,在反复斟酌,并结合我自己设计的和我们组成员设计的数据库的优缺点,我们最终确定下来采用6个表来存储信息的做法,其中五个表存储基础信息,另外一个总表作为查询的接口,我个人觉得它非常适合我的编程习惯。但我们犯了一个错误,我现在很后悔,我们完全可以只用5个表来完事,这样看起来既整洁又方便存储信息,另外一个表我们可以定义一个视图来代替。在程序设计过程中个人感觉有点忽视数据库的一些优秀性能,比如说,我完全可以用聚集函数来统计某人发表的论文数目,但我却使用结果集对象和计数器来实现,使得我的代码看起来很长且不美观,在课程设计中我并没有完全利用上我学习过的数据库查询语言的一些技巧,这使得我们都非常遗憾。主要还是数据库课程的学习没有达到一个水平,因此我决定课程设计完成后我还要重学数据库教材。在查询一些资料的时候我学会了应该怎样最恰当的查询出自己想要的信息,怎样通过自学掌握一些东西,还让我对计算机这个领域的知识的学习方法有了一个自己的心得和体会,因此我有了下学期学习计算机相关专业知识的一个方法,一个计划,有了一个更好的认识通过这次课程设计,使得我对于java连接数据库也有了初步的了解,便于我以后对于java的学习。4.2 系统改进1、数据库功能模块在数据库功能中我建的表基本满足查询的要求,但还可以加入一个表用于储存科技著作的信息。另外,我在利用数据库查询的过程中没有充分利用数据库的优秀性能,例如在查询的过程中我可以利用聚集函数用来统计某人发表的科研论文的总数,利用多表查询来缩短代码的数量,我还可以利用视图来减少表的数量,这样查询起来更灵活,更方便。我在定义那些编号和名称时,并未用编号来判断是否删除或修改数据,反而为了方便我使得这些功能在操作前判断时仅仅用名称来进行,这样设计并不严谨,应该定义一个功能来使得数据不会发生重名存储,这样在更新、删除、修改时才最大可能的避免发生错误。2、系统功能模块此系统设计的内部查询功能模块的流程设计时非常让我满意的,用户从总界面开始根据用户的选择依次进入各个模块,再可以根据用户的选择依次退出各个界面。查询的信息比较详细,但应该添

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论