大学生创新实践训练计划-项目管理系统开发报告(推荐).doc
xx大学?数据库技术及应用? 数据库应用系统开发报告工程名称: SITP 工程管理系统 班级: xx 小组成员: xxx 年级: xx 专业: xx 指导教师: xx 日期: x 年 x 月 x 日目录一、 需求分析1. 背景 22. 目的及意义 2二、 软件功能分析1. 权限说明 32. 用户使用流程分类介绍 33. 各模块内容介绍 5三、 数据库设计1. ER图 162. 创立各表和相关约束 183. 创立触发器 214. 创立存储过程 235. 创立视图 32四、 VB.NET程序开发代码1. Module1 332. 登录333. 注册374. 主窗体 435. 个人信息管理 456. 论文 517. 查看或修改我的工程 558. 论文提交 629. 论文摘要 6410. 设备管理 6411. 设备借用 6812. 系统管理 7013. 工程 74五、 软件测试报告 101六、 工程开发心得 108一、 需求分析1. 背景大学生创新实践训练方案Student Innovation Training Program,简称SITP,是建立创新人才培养体系、进一步开展教育教学改革、加强大学生创新能力培养的重要举措。使本科生尽早接受科研训练、尽早熟悉企业、了解社会实际,掌握根本的科学研究方法和手段,培养大学生严谨的科学态度、创新意识和团队合作精神,提高大学生的研究创新能力和综合实践能力。SITP工程主要源于科研、教学、生产、工程、设计和管理等方面的工程,并将这些工程细化、分解为子工程,课题执行的各个环节要充分表达对学生创新和实践能力的培养。2. 目的及意义SITP工程的实施无疑是广阔在校大学生的福音。大学生有了自主创新的平台,有了可以展现自己能力的地方。但是,面对这些摩拳擦掌的大学生们,SITP工程的申报、管理、以及评估将是一项繁重的工作。目前同济大学教务管理信息系统包含SITP模块,但仅有工程立项和报名的功能。因此,为了方便大学生进行SITP工程的申报,方便相关工作人员对SITP工程进行管理以及评估,我们自主开发了这个系统。本系统针对SITP开展的完整过程,实现了申请立项、工程审批、报名参与、工程人事管理、论文提交、设备借用等一系列功能,能完成对各种数据的简单检索,而且针对数据平安的需要进行了简单的控制。极大地方便了SITP工程的管理,具有一定的现实意义。本系统的创新主要集中在以下方面:1) 针对科研工程的需要设计了论文提交和检索功能;2) 针对学校目前基于各学院科技创新平台的SITP工程管理模式,考虑到工程参与者借用设备的需要,设计了设备管理功能。但是本系统是使用VB.NET和SQL Server 开发的Windows程序,不具备网络通信功能,仅适用于规模较小的数据库系统。例如将本系统安装在图书馆或机房的公共计算机上,供学生和教师使用,定时由教师和管理人员完成工程、设备、论文以及数据库的管理。本系统应用前景较好,由于知识储藏有限,系统的局限性不可防止,不过相信随着知识的积累和丰富,其适用范围可以进一步扩大,功能也将进一步完善。二、 软件功能分析1. 权限说明本系统的权限管理采取以VB.NET为主、结合SQL Server 数据库中完整性控制的方式实现。为尽可能到达与实际使用需求相符,权限的规定仿照数据库中按角色管理的方式。用户类型有以下几种:未知,本科生,研究生,教师,设备管理员,系统管理员;角色有以下几种:匿名,普通用户,立项人,工程负责人,申请参与者,参与者,指导教师,专家,设备管理员,系统管理员。各角色、用户类型和权限的对应关系见下表,对论文原文的查看只允许本工程成员进行,本表未列出。一个帐户可以担当多个角色,但在进行某一确定的操作时有确定的角色,因此,角色的权限约束可以根本通过VB.NET编程实现。表格 1系统权限表其中表示授权,表示实际具有但建议不使用的权限帐户类型角色匿名普通用户立项人工程负责人申请参与者参与者指导教师专家设备管理员系统管理员用户类型数据库未知本科生研究生教师本科生研究生教师本科生研究生教师本科生研究生本科生研究生教师教师设备管理员系统管理员各项操作权限工程查询论文查询设备查询申请立项工程报名工程信息修改提交论文借用设备工程审批工程合作者管理现有设备管理添加新设备个人信息管理2. 用户使用流程分类介绍SITP工程管理系统分为工程信息管理系统、论文管理系统、设备管理系统和用户信息管理系统四大模块见以下图。为使程序符合SITP各类参与者的使用需求,我们在设计操作界面上根据SITP工程申报和参与的大致流程作了优化。考虑到不同用户类型对功能有不同的要求,程序运行时首先显示登录界面,在用户选择了登录帐户类型并使用正确信息登录后,系统将根据帐户类型和用户身份显示不同控件或开放、屏蔽局部功能。1)在登录界面中,用户可以选择的用户类型有本科生、研究生、教师、设备管理员、系统管理员,如果用户选择匿名登录,那么忽略用户名和密码信息,登录后拥有最小权限并在状态栏显示“未登录。登录界面下面从不同类型用户的角度按照大致操作流程分别介绍一下本系统的功能。2) 学生本科生或研究生用户学生在本系统中可能拥有的帐户类型以下之一:普通用户,立项人,工程负责人,申请参与者,参与者。A. 新建的学生用户默认具有普通用户的权限,表示用户既未申请立项,也未报名参加工程。作为学生的普通用户可以在主菜单中依次选择操作->工程翻开工程窗口进行申请立项或工程报名操作。工程窗口中有工程浏览和工程查询标签,所有用户均可在此查询工程的简单信息。其中工程查询中提供了多种查询方式:按指导老师工号、按所属学院、按批次、按所属基地或按以上所有。当用户按某种方式查询并选择一条记录时,工程浏览中的下拉列表中也将选中相应的记录,用户可以切换标签进行浏览,浏览标签内容较多,分为3页,用户可以在各页之间切换。B. 假设用户选择工程申请那么要求用户填写立项所需的各种信息共3页 。当用户提交申请,重新登录或刷新后,帐户类型变为立项人。对于立项人,工程模块的我的工程标签将开放,用户可以在此选择已经参加或立项的工程查看信息,并可以进行修改信息、借用设备、提交论文和管理工程合作者等操作。当工程立项被批准后,立项人的帐户类型变为工程负责人。C. 如果用户选择工程报名,可以在下拉列表中依次选择工程所属学院和工程名称,用户选定的工程简单信息将显示在下面的表格中,如果需要更多信息可以单击旁边的按钮。报名过程系统会自动获取用户注册时填写的信息,不需用户填写更多表格。当用户点击报名后会弹出对话框请求确认。用户报名并重新登录或刷新后,帐户类型变为申请参与者。对于申请参与者,工程模块的我的工程标签将开放,其功能与立项人的我的工程根本相同,但不能进行管理工程合作者操作。当工程立项被批准后,申请参与者的帐户类型变为参与者。D. 工程结题后,工程负责人和参与者的帐户类型不做变化。3) 教师用户教师在本系统中可能拥有的帐户类型以下之一:普通用户,立项人,工程负责人,指导教师,专家 。A. 新建的教师用户默认具有普通用户的权限,表示用户既未申请立项,也未报名参加工程。B. 作为教师的普通用户可以在主菜单中依次选择操作->工程翻开工程窗口进行申请立项操作。其具体操作过程与学生申请立项根本相同。当用户提交申请,重新登录或刷新后,帐户类型变为立项人。当工程立项被批准后,立项人的帐户类型变为工程负责人。C. 教师不能报名参加工程,但可以作为工程指导教师,指导教师的身份是根据用户在立项时填写的信息确定的,教师不能直接选择。D. 局部教师可以被系统管理员设置为专家,专家可以参与工程立项过程中的工程评审。其界面作为工程中的一个标签,当用户角色被确定为专家时显示。4) 设备管理员用户A. 设备管理员帐户不能自行注册,而要由系统管理员添加。设备管理员除具备匿名用户的权限外,还可以进行设备借用预约的审批、设备状态更改、添加新设备等操作,这三项操作可以通过依次选择操作->设备在翻开设备管理窗口中进行。5) 系统管理员用户A. 系统管理员是程序内建的特殊帐户,其信息不存于数据库中。系统管理员主要负责过期或失效数据的清理、添加设备管理员、设置或取消教师的专家身份等。系统中的大局部除个人信息管理控件对于系统管理员而言是可用的。3. 各模块内容介绍SITP工程管理系统用户信息管理系统工程信息管理系统设备管理系统工程合作者管理申请立项管理工程报名管理论文管理系统论文提交论文检索工程审批管理设备借用设备管理系统管理维护图 1系统模块组成示意图1) SITP工程管理系统主界面主界面2) 用户信息管理系统A. 用户注册界面如果用户在系统中还没有账户,那么可以先进行注册,注册时选择用户类型,并使用自己的学号、工号作为帐号系统会分别验证帐号格式,设备管理员由于有管理设备这一特殊权限,不能自行注册,其帐户必须由系统管理员代为添加。系统管理员作为具有最高权限的特殊用户,其信息未存储于数据库中,并且在程序开发阶段已经固定。本本科生注册B. 个人信息管理界面用户可以在此修改除帐户号和姓名外的其他信息。个人信息管理3) 工程信息管理系统A. 我的工程我的工程是SITP参与者关注的核心,因此该界面可以链接到设备、论文模块,集中实现多项功能。在该界面的工程管理局部中,用户可以看到专家的审批意见,并根据意见对自己的工程信息做出修改。该界面对于不同帐户显示的工程有所不同,对于立项人和工程负责人,该界面中可以进行工程合作者管理,具体操作是,选中数据表中的一条记录中任意一项此时位于窗口下方的标签会显示用户所选的报名者姓名,然后点击同意录取。我的工程B. 工程查询工程查询界面提供了多种查询方式。用户在选择一种查询方式后选择所需的字段,查询结果列在下面的表格中,当用户在表格中选择一行数据后,位于窗口下方的标签会显示相应的工程名称。用户可以切换至工程浏览标签继续浏览该工程详细信息。工程查询C. 工程浏览用户在工程浏览界面既可以自行选择需要查看信息的工程名称,又可以浏览在工程查询中检索到的工程,共分3页,详见测试报告。工程浏览D. 申请立项申请立项需填写3页表格,在此仅列举第一页,参见工程测试报告。为防止输入无效的数据,局部工程如学院、工程类别等用户只能从现有条目中选择。为方便申请人填写,设计了重置按钮。申请立项E. 工程报名工程报名界面可以根据用户选择的学院名称和工程显示相关信息,如果用户想了解更多信息,点选点击了解更多工程信息按钮可以在新窗口中浏览,窗口模式与工程浏览相似,同样分为3页。工程报名F. 工程审批工程审批只有专家帐户可以使用,并且专家只能审批本学院的工程。首先选择待审批的工程名称,此时审批记录会显示在下面的表格中。然后填写审批意见可选,并选择是否同意立项,之后确认,完成一次审批。一位专家对同一工程只能给出一次“同意立项的审批通过VB.NET编程实现。当“同意立项的记录到达3条,工程立项即成立,并从待审批工程中移除。工程检索4) 设备管理系统A. 设备借用我的工程界面有设备借用按钮。当用户选定我的工程名称后,可以进行设备借用,要求用户选定设备,指定借用时间和归还时间借期30分至7天。提交后等待设备管理员批准。预约时间和归还时间默认均取为当前。缺少任何必要信息系统会提示用户补全。设备借用B. 设备管理设备管理员可以从主菜单中进入设备管理界面。设备管理功能包括设备状态更改、设备预约批准、添加新设备。其中,设备状态模块的设计基于对复杂具体情况的简化,即设备正常设为“否,可以表示设备的丧失、损坏等各种非正常情况。这样,用户是否带走或归还设备可以不予考虑。设备管理5) 论文管理系统A. 论文提交为便于论文检索和保存,论文的存储采用检索信息和文章别离的方式。用户提交论文时被要求额外输入论文标题作者等信息,这局部信息放在数据库中,以便检索;同时要求指定论文文件doc格式路径。如果各项信息具备且无误,那么当用户选择提交论文并确认后,系统会将用户指定的文件改名并移动到一个固定目录下用户不知道该操作具体过程,因而难以找到原文件,增强了论文系统的平安性。相应地,在论文检索界面的查看全文按钮的单击事件触发时,系统会在C盘根目录生成一个固定名称论文只读副本,用户对该副本进行的任何操作将不会影响到原文件。鉴于此系统的假象应用平台为公共计算机,提交论文删除原文件可以增强平安性,此操作要求用户确认。论文提交确认B. 论文检索论文检索模块提供了两种检索方式:模糊检索和分类检索。其检索对象是数据经过调整的视图,根本用存储过程实现参见存储过程代码。视图中论文信息对各类用户开放,但论文原文只有本工程成员可以查看。论文模糊检索论文分类检索查看论文摘要6) 系统管理界面系统管理员在主菜单的操作菜单中可以选择系统管理,进入系统管理界面。系统管理员的三大功能集中在此:添加设备管理员,添加或删除教师作为专家审批工程的权限,删除数据库中过期或冗余的数据。系统管理界面三、 数据库设计数据库功能概念图工程本科生设备论文教师参与属于研究生审批专家借用设备管理员管理参与参与isa1. ER图数据库模块总E-R图2. 创立各表和相关约束1) 关系模式:教师(工号,姓名,性别,职称,院系, ,邮箱,专家否,密码)专家审批工程编号,专家工号,专家意见本科生学号,姓名,性别,院系,年级,绩点,邮箱, ,密码本科生参与(学号,工程编号,方案,是否录取,)研究生学号,姓名,性别,院系,年级,绩点,邮箱, ,密码研究生参与(学号,工程编号,方案,是否录取,)工程工程编号,工程名称,所属学院,所属基地,立项人学号或工号,立项人 ,指导老师工号,指导老师 ,合作者人数,经费,工程来源,工程类别,工程批次,成果形式,工程周期,开题时间,结题时间,进度安排,执行环节,工程简介,合作者同组人员要求,工程特色与创新,经费使用方案,状态,申请时间设备设备编号,设备名称,设备简介,状态借用工程编号,设备编号,借出时间,应还时间论文论文编号,标题,作者1,作者2,作者3,作者4,所属工程编号,关键字,摘要,存放路径设备管理员管理员编号,姓名,所属基地,邮箱, ,密码以上建立的关系模式属于三范式。2) 用户根本信息表教师表编号列名 数据类型可否为空约束说明1工号char(5)NOT NULL5位数字主键2姓名varchar(8)NOT NULL3性别char(2)NOT NULL男或女4职称varchar(10)NOT NULL5学院varchar(24)NOT NULL24学院之一6 varchar(11)NULL11个数字7邮箱varchar(40)NULL含8专家否Char(2)NOT NULL默认为否9密码char(6)NOT NULL6位数字职称:助教、讲师、副教授、教授、高级工程师、外聘、未定、研究实习员本科生表编号列名 数据类型可否为空约束说明1学号char(6)NOT NULL6位数字主键2姓名varchar(8)NOT NULL3性别char(2)NOT NULL男或女4学院varchar(24)NOT NULL24学院之一5年级char(4)NOT NULL两位数字6绩点realNULL>=0且<=57邮箱char(40)NULL含8 char(11)NULL11位数9密码char(6)NOT NULL6位字符研究生表编号列名 数据类型可否为空约束说明1学号char(10)NOT NULL10位数字主键2姓名varchar(8)NOT NULL3性别char(1)NOT NULL男或女4学院char(24)NOT NULL24学院之一5年级char(4)NOT NULL两位数字6绩点smallintNULL>=0且<=57邮箱char(40)NULL含8 char(11)NULL11位数9密码char(6)NOT NULL6位字符3) 工程相关表建表资料学院:建筑与城市规划学院,土木工程学院,机械工程,经济与管理,环境科学与工程,材料科学与工程,电子与信息工程,人文,法政,外国语,理学部,汽车,交通运输工程,软件,生命科学与技术,知识产权,医学院,传播与艺术,口腔医学院,铁道与城市轨道交通研究院,职业技术教育,电影,中德,体育教学部基地:国家工科物理根底课程教学基地,国家生命科学与技术人才培养基地,工科数学教学基地建设,外语教学实践与创新基地,大学生电子信息科技创新基地,大学生汽车科技创新实践基地,大学生实验交通科技创新基地,土木工程教学创新基地,大学生实验交通科技创新基地, 环境科技创新人才培养基地,建筑与城市规划学院教学创新基地,大学生机械与热能创新实践基地工程来源:自选,教学,设计,工程,科研工程类别:工学,管理,经济,理学,文学,其他成果形式:研究报告,论文,其他执行环节:文献查阅,撰写论文及研究报告,结题和辩论,方案设计,试验研究,数据处理,社会调查,建立数据模型,模型优化和实验,研制开发,综合测试与完善,平台开发工程表编号列名 数据类型可否为空约束说明1工程编号char(6)NOT NULL自动生成主键2工程名称varchar(80)NOT NULL3所属学院varchar(24)NOT NULL24院系4所属基地varchar(30)NOT NULL11基地之一5立项人学号或工号varchar(10)NOT NULL外键约束6立项人 varchar(11)NULL11位数字7指导老师工号char(5)NULL8指导老师 varchar(11)NULL11位数字9合作者人数intNOT NULL10经费moneyNOT NULL11工程来源char(4)NOT NULL12工程类别char(4)NOT NULL13工程批次char(6)NOT NULL自动生成14成果形式varchar(8)NOT NULL15工程周期char(4)NOT NULL半年 一年 两年16开题时间smalldatetimeNULL17结题时间smalldatetimeNULL开题时间加工程周期18进度安排varchar(400)NOT NULL19执行环节varchar(146)NOT NULL20工程简介varchar(2000)NOT NULL21合作者要求varchar(300)NOT NULL22工程特色与创新varchar(1000)NOT NULL23经费使用方案varchar(300)NOT NULL24状态char(6)NOT NULL25申请时间smalldatetimeNot NullGetdatetime()状态:默认为待审批,待审批 ,已成立,已开题,已结题专家审批编号列名 数据类型可否为空约束说明1专家工号char(5)NOT NULL外键约束主键2工程编号char(6)NOT NULL外键约束主键3是否批准Char(2)NOT NULL默认为否4评审意见varchar400NULL5审批时间smalldatetimeNOT NULL 主键4) 设备相关表设备表编号列名 数据类型可否为空约束说明1设备编号char(8)NOT NULL主键2设备名称varchar(40)NOT NULL3管理员编号char(4)NOT NULL外键约束4设备简介varchar(200)NULL5状态varchar(6)NOT NULL空闲或使用中借用表编号列名 数据类型可否为空约束说明1工程编号char(6)NOT NULL外键约束2设备编号char(8)NOT NULL外键约束主键3借出时间smalldatetimeNOT NULL主键4应还时间smalldatetimeNOT NULL5) 论文相关表论文表编号列名 数据类型可否为空约束说明1论文编号char(6)NOT NULL主键2标题varchar(80)NOT NULL3作者1varchar(8)NOT NULL4作者2varchar(8)NULL5作者3varchar(8)NULL6作者4varchar(8)NULL7所属工程编号char(6)NOT NULL外键约束8关键字varchar(100)NOT NULL9摘要varchar(2000)NULL10存放路径varchar(100)NOT NULL6) 报名参与类型表本科生参与表编号列名 数据类型可否为空约束说明1学号char(6)NOT NULL外键约束主键2工程编号char(6)NOT NULL外键约束主键3是否录取Char(2)NOT NULL默认为否4方案varchar400NULL研究生参与表编号列名 数据类型可否为空约束说明1学号char(6)NOT NULL外键约束主键2工程编号char(6)NOT NULL外键约束主键3是否录取Char(2)NOT NULL默认为否4方案varchar400NULL3. 创立触发器触发器是强制实施数据库中数据完整性的主要机制之一。为防止非法数据入侵,维护数据完整性,本系统创立了假设干触发器实现保存已定义约束和应用规那么的目的。在用户对指定表执行更新操作时,系统自动执行相应触发器中的SQL语句,实现较复杂的完整性控制。具体实例如下:create trigger 工程_状态on 专家审批for insertas declare _num char(6) declare _state char(6) declare _time char(6) declare _stime smalldatetime declare _etime smalldatetime declare _int smallint select _num=i.工程编号 from inserted iselect _state=状态,_time=工程周期 from 工程 where 工程编号=_num set _stime=getdate() if (_time='半年') set _etime=dateadd(month,6,_stime) else if(_time='一年') set _etime=dateadd(month,12,_stime) else if(_time='两年') set _etime=dateadd(month,24,_stime) if(_state='待审批') select _int=count(工程编号) from 专家审批 where 工程编号=_num and 是否批准='是' if (_int>2) begin update 工程 set 状态='已开题', 开题时间=_stime, 结题时间=_etime where 工程编号=_num commit end创立Insert触发器 工程_状态计算结题时间执行插入操作时,系统检查工程状态是否正确如果工程状态为“待审批,统计该工程获批准的数目,假设三个专家批准该工程,那么系统允许更新工程状态为“已开题create trigger ydelon 研究生instead of deleteas declare num char(10) select num=i.学号 from deleted i begin delete from 工程 where 立项人学号或工号=num delete from 研究生参与 where 学号=num delete from 研究生 where 学号=num end创立instead of delete触发器ydel删除研究生中记录时,自动删除工程和研究生参与中的相关记录create trigger bdelon 本科生instead of deleteas declare num char(6) select num=i.学号 from deleted i begin delete from 本科生参与 where 学号=num delete from 工程 where 立项人学号或工号=num delete from 本科生 where 学号=num end创立instead of delete触发器bdelcreate trigger xdelon 工程instead of deleteas declare num char(6) select num=i.工程编号 from deleted i begin delete from 研究生参与 where 工程编号=num delete from 本科生参与 where 工程编号=num delete from 论文 where 所属工程编号=num delete from 借用 where 所属工程编号=num delete from 工程 where 工程编号=num end创立instead of delete触发器xdelcreate trigger gdelon 设备管理员instead of deleteas declare num char(4) select num=i.管理员编号 from deleted i begin delete from 设备 where 管理员编号=num delete from 设备管理员 where 管理员编号=num end创立instead of delete触发器gdel4. 创立存储过程SITP系统功能模块较复杂,创立存储模块不仅增强了模块的重要性和共享性,可被多个程序屡次调用,而且加快了系统的运行速度,提高数据平安性。本系统针对每一特定功能创立了一系列相应的用户自定义存储过程,如用户注册信息的存储过程,用户修改信息的存储过程,添加管理员的存储过程,报名录取的存储过程,工程申请及查询修改的存储过程,论文提交的存储过程,论文查询检索的存储过程,设备借用及查询的存储过程,借用审批及更改设备状态的存储过程,更改教师审批权限的存储过程等。具体创立过程如下:create proc 注册_学生;1 _flag bit, _num1 as char(6)=null, _num2 as char(10)=null, _name varchar(8), _sex char(2), _aca varchar(24), _year char(4), _gpa real=null, _email varchar(40)=null, _pho varchar(11)=null, _code char(6)asif (_flag=0) begin insert 本科生(学号,姓名,性别,学院,年级,绩点,邮箱, ,密码) values(_num1,_name,_sex,_aca,_year,_gpa,_email,_pho,_code)endelsebegin insert 研究生(学号,姓名,性别,学院,年级,绩点,邮箱, ,密码) values(_num2,_name,_sex,_aca,_year,_gpa,_email,_pho,_code)end用户注册信息学生注册create proc 注册_教师;1 _num char(5), _name char(8), _sex char(2), _cla varchar(10), _aca varchar(24), _pho varchar(11)=null, _email varchar(40)=null, _ispro bit=0, _code char(6)as insert 教师(工号,姓名,性别,职称,学院, ,邮箱,专家否,密码) values(_num,_name,_sex,_cla,_aca,_pho,_email,_ispro,_code)用户注册信息教师注册create proc 信息_修改;1_loginnum char(6),_aca varchar(24),_year char(4),_gpa real=null,_mail varchar(40)=null,_phonum varchar(11)=null,_c