科研管理系统设计_第1页
科研管理系统设计_第2页
科研管理系统设计_第3页
科研管理系统设计_第4页
科研管理系统设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

《软件工程上机实验》实验报告书——科研管理系统专业班级学号姓名指导教师安徽XX大学简介此次试验,要求完成可视化的科研管理系统。将自己在软件工程课程中学习到的软件设计的知识运用的实际中,加深对知识的理解,也增强自己动手的实践能力。开发环境和开发工具:WINDOWS操作平台上,使用MSvc6.0+sqlserver2021试验步骤需求分析:分析该系统需要完成的功能,需要什么开发工具和数据库管理软件数据库设计:分析系统的数据,画出数据库的E-R图,并在此基础上完成数据库表的设计和初始数据的输入数据流图的设计:仿照用户的使用习惯,分析从系统启动到系统退出系统数据的使用系统功能模块的设计:按照数据流图的需要,分析出系统需要哪些模块来完成需求分析中提出的功能需求实现和编码:在选定的平台上上运用开发工具和数据库管理软件进行系统的开发测试:每完成一个模块和重要函数,进行相应的单元测试;系统完成之后,需要系统测试迭代:根据测试的结果进行迭代,从而形成一个完整可用的系统需求分析系统将采用先进的信息化技术,并有效结合现代科研管理理念和学校科研管理实际情况。系统的成功建设将能够轻松解决传统科研管理中难以解决的系列问题,并在多个方面实现突破:实现标准化的科研信息系统:系统将采用了国家教育部信息化标准,完全兼容了“全国普通高等学校人文社会科学研究管理系统”,同时也充分体现学校的科研管理办法和有关精神。系统将采集和管理标准完整的科研机构、人员、项目和成果等基础数据,避免了数据的无效性和不规范性,为以后的管理工作打下坚实基础。

构建开放式的科研管理体系:系统将向全校所有从事科研活动或者科研辅助工作的老师开放,并和学校人事处等业务部分建立数据共享机制。系统将彻底改变以前封闭式的管理模式,解决系统数据对内对外的开放性问题。

科学分析和决策支持:系统能够及时收集到学校最新的科研项目、科研成果和学术活动等业务数据,并在大量的数据基础上进行数据挖掘分析工作。既方便学校进行各种查询,也可以提供各种分析报表。系统能够为学校科研管理决策提供科学有效的辅助支持。

科研信息化管理的全方位整体解决方案:系统针对学校的日常管理需要,提出的是一个包括信息发布、办公自动化和科研管理等多方面的整体解决方案。这样避免了临时的不完整的信息化建设,一次性的满足了科研管理中多方面的需要。2.1可行性分析系统基于windows操作系统环境,在单机上进行测试和使用,主要功能完备,可以运行。2.2基本功能需求1.系统分成三级用户,不同用户登录界面相同,但是具有的功能不同2.超级管理员能够进行所有的增删查修操作,一般管理员可以对项目等进行增删查修,但是不能对和自己高级同级的用户进行操作3.实现基本信息的各种操作(如学院,部门,委托单位,论文级别,专家等),需要超级管理员的权限4.管理员以上可以实现各种项目、论文、著作、专利的输入工作5.普通用户可以实现项目信息的查询工作数据流图树形结构的数据流图如下所示:第五章系统模块结构图1.登陆界面:主要功能点:从数据库中读取数据,看用户名和密码的正确性;如果用户名输入不正确,提示用户名输入错误;如果密码输入不正确,提示密码输入错误;如果登陆次数多于五次,自动退出系统;用户名和密码正确,则进入系统主界面。主要代码:if(m_strUsername.IsEmpty()||m_strPassword.IsEmpty()) { AfxMessageBox("请将资料填写完整再登录!"); return; } theApp.id=m_strUsername; theApp.m_pRS.ADOExcute("selectpassword,uright,namefromuserinfowhereid='"+m_strUsername+"'"); if(theApp.m_pRS.nFieldRows==1) { str=theApp.m_pRS.GetFieldString(0); str.TrimLeft(); str.TrimRight(); if(theApp.trytime>=5) {//如果登录次数超过五次不成功的话,则退出系统 PostQuitMessage(WM_QUIT); } if(str!=m_strPassword) { theApp.trytime++; AfxMessageBox("错误的密码!"); } else { npower=theApp.m_pRS.GetFieldNumber(1); theApp.power=npower; if(npower==1) power="超级管理员"; elseif(npower==2) power="管理员"; else power="普通用户"; CMainDlg*maindlg; maindlg=newCMainDlg(); maindlg->Create(IDD_MAINDLG_DIALOG); this->ShowWindow(SW_HIDE); maindlg->ShowWindow(SW_SHOW); maindlg->Initial(theApp.m_pRS.GetFieldString(2),power,npower); } } else { AfxMessageBox("错误的用户名!"); }2.系统主界面主要功能点:系统功能采用树形菜单映射的方式,分为设置和管理两大部分;设置主要是设置一些基础信息,比如在下拉框中需要选择的信息,比如学院,委托单位,论文等级等等,需要超级管理员权限;管理是系统主要功能在管理菜单下,普通用户只能查看相关信息,管理员以上可以增删查改相关信息;主界面分成三个部分,树形目录是不会发生改变的,始终显示在界面上;列表也是始终显示在界面上的,根据用户单击树形目录选择相关的信息显示在其中;第三部分,则是根据用户单击的选项来动态变化的,若单击用户管理,则显示用户管理的界面,如下示:系统配有相应的菜单项,工具栏,和状态栏,前两者用来映射树形目录功能,后者则是用来显示用户ID和用户权限以及当前系统时间的。主要代码如下:List表格刷新函数 m_ctrlList.GetClientRect(&rect);//获取列表控件的矩形 m_ctrlList.DeleteAllItems(); while(m_ctrlList.DeleteColumn(0)); //先插入列号 try{ for(i=0;i<colums;i++) { strText=theApp.m_pRS.GetFieldName(i); lvColumn.mask=LVCF_TEXT|LVCF_FMT|LVCF_WIDTH; lvColumn.fmt=LVCFMT_LEFT; lvColumn.cx=rect.right/colums; if(lvColumn.cx<100) lvColumn.cx=100; lvColumn.pszText=strText.GetBuffer(strText.GetLength()); //插入列 m_ctrlList.InsertColumn(i,&lvColumn); } i=0; while(!theApp.m_pRS.ADOEOF()) { m_ctrlList.InsertItem(i,"%d",i); for(j=0;j<colums;j++) { m_ctrlList.SetItemText(i,j,theApp.m_pRS.GetFieldString(j)); } theApp.m_pRS.MoveNext(); i++; } } catch(...) { AfxMessageBox("数据库读取失败!"); return; }选择相应窗口函数:CStringstrText,strSQL; HTREEITEMhTreeItem; hTreeItem=m_ctrltree.GetSelectedItem(); strText=m_ctrltree.GetItemText(hTreeItem); if(strText=="用户管理") { if(power==1)//是超级管理员的话 strSQL="selectID,name,password,urightfromuserinfo"; else strSQL.Format("select*fromuserinfowhereuright>%dorname='%s'",power,name); userinfo.ShowWindow(SW_SHOW); horizproj.ShowWindow(SW_HIDE); vertiproj.ShowWindow(SW_HIDE); article.ShowWindow(SW_HIDE); compose.ShowWindow(SW_HIDE); patent.ShowWindow(SW_HIDE); } elseif(strText=="横向管理") { userinfo.ShowWindow(SW_HIDE); horizproj.ShowWindow(SW_SHOW); vertiproj.ShowWindow(SW_HIDE); article.ShowWindow(SW_HIDE); compose.ShowWindow(SW_HIDE); patent.ShowWindow(SW_HIDE); } elseif(strText=="纵向管理") { strSQL="select*fromvertiproj"; userinfo.ShowWindow(SW_HIDE); horizproj.ShowWindow(SW_HIDE); vertiproj.ShowWindow(SW_SHOW); article.ShowWindow(SW_HIDE); compose.ShowWindow(SW_HIDE); patent.ShowWindow(SW_HIDE); } elseif(strText=="论文管理") { userinfo.ShowWindow(SW_HIDE); horizproj.ShowWindow(SW_HIDE); vertiproj.ShowWindow(SW_HIDE); article.ShowWindow(SW_SHOW); compose.ShowWindow(SW_HIDE); patent.ShowWindow(SW_HIDE); } elseif(strText=="专著管理") { userinfo.ShowWindow(SW_HIDE); horizproj.ShowWindow(SW_HIDE); vertiproj.ShowWindow(SW_HIDE); article.ShowWindow(SW_HIDE); compose.ShowWindow(SW_SHOW); patent.ShowWindow(SW_HIDE); } elseif(strText=="专利管理") { userinfo.ShowWindow(SW_HIDE); horizproj.ShowWindow(SW_HIDE); vertiproj.ShowWindow(SW_HIDE); article.ShowWindow(SW_HIDE); compose.ShowWindow(SW_HIDE); patent.ShowWindow(SW_SHOW); } theApp.m_pRS.ADOExcute(strSQL); RefreshList();3.单击list控件中相应项在下面的子窗体中显示详细信息的函数:CStringid; intcur=m_ctrlList.GetSelectionMark(); intall=m_ctrlList.GetItemCount(); if(cur>=0&&cur<all) {//先查看选中的是否在显示的范围之内 id=m_ctrlList.GetItemText(cur,0); if(userinfo.IsWindowVisible())//判断窗口是否是显示的 userinfo.Display(id); elseif(vertiproj.IsWindowVisible()) vertiproj.Display(id); elseif(horizproj.IsWindowVisible()) horizproj.Display(id); elseif(article.IsWindowVisible()) article.Display(id); elseif(compose.IsWindowVisible()) compose.Display(id); elseif(patent.IsWindowVisible()) patent.Display(id); }4.主窗口初始化函数:状态栏数据结构:staticUINTindicators[]={ ID_INDICATOR_USER, ID_INDICATOR_TIME, ID_INDICATOR_POWER,};初始化状态栏: UINTnID; CRectrect; GetClientRect(rect); this->m_nwndStatusBar.Create(this); this->m_nwndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT)); m_nwndStatusBar.MoveWindow(0,rect.bottom-20,rect.right,20); m_nwndStatusBar.SetPaneStyle(2,SBPS_STRETCH); m_nwndStatusBar.SetPaneInfo(0,nID,SBPS_STRETCH|SBPS_NOBORDERS,rect.right/3-20); m_nwndStatusBar.SetPaneText(0,”当前用户:”+user); m_nwndStatusBar.SetPaneInfo(1,nID,SBPS_STRETCH|SBPS_NOBORDERS,rect.right/3-20); m_nwndStatusBar.SetPaneText(1,”用户权限:”+spower); m_nwndStatusBar.SetPaneInfo(2,nID,SBPS_STRETCH|SBPS_NOBORDERS,rect.right/3); SetTimer(1,1000,NULL);树形目录的初始化: hRootItem=m_ctrltree.InsertItem("科研管理系统",0,2,TVI_ROOT,TVI_LAST); HTREEITEMhsetup=m_ctrltree.InsertItem("设置",1,2,hRootItem,TVI_LAST); HTREEITEMhmanage=m_ctrltree.InsertItem("管理",1,2,hRootItem,TVI_LAST); HTREEITEMhset_school=m_ctrltree.InsertItem("学院设置",2,2,hsetup,TVI_LAST);HTREEITEMhset_task_type=m_ctrltree.InsertItem("课题类型设置",2,2,hsetup,TVI_LAST); HTREEITEMhset_article_type=m_ctrltree.InsertItem("论文类型设置",2,2,hsetup,TVI_LAST); HTREEITEMhset_embody_level=m_ctrltree.InsertItem("级别收录设置",2,2,hsetup,TVI_LAST); HTREEITEMhset_submit_cor=m_ctrltree.InsertItem("委托单位设置",2,2,hsetup,TVI_LAST); HTREEITEMhma_horizinal=m_ctrltree.InsertItem("横向管理",2,2,hmanage,TVI_LAST); HTREEITEMhma_verticle=m_ctrltree.InsertItem("纵向管理",2,2,hmanage,TVI_LAST); HTREEITEMhma_article=m_ctrltree.InsertItem("论文管理",2,2,hmanage,TVI_LAST); HTREEITEMhma_monography=m_ctrltree.InsertItem("专著管理",2,2,hmanage,TVI_LAST); HTREEITEMhma_patent=m_ctrltree.InsertItem("专利管理",2,2,hmanage,TVI_LAST); HTREEITEMhma_identification=m_ctrltree.InsertItem("鉴定管理",2,2,hmanage,TVI_LAST); HTREEITEMhma_reward=m_ctrltree.InsertItem("获奖管理",2,2,hmanage,TVI_LAST); HTREEITEMhma_expert=m_ctrltree.InsertItem("专家管理",2,2,hmanage,TVI_LAST); HTREEITEMhma_basinfo=m_ctrltree.InsertItem("基本信息管理",2,2,hmanage,TVI_LAST); HTREEITEMhma_store=m_ctrltree.InsertItem("转储管理",2,2,hmanage,TVI_LAST); HTREEITEMhma_user=m_ctrltree.InsertItem("用户管理",2,2,hmanage,TVI_LAST);时间刷新定时器设置://TODO:Addyourmessagehandlercodehereand/orcalldefault CTimetime; intweek; time=CTime::GetCurrentTime(); week=time.GetDayOfWeek();//获取星期几,注意1为星期天,7为星期六 CStrings=time.Format("当前时间:%Y-%m-%d%H:%M:%S星期");//月份是小写的,分钟是大写的switch(week) { case1:s+="日";break; case2:s+="一";break; case3:s+="二";break; case4:s+="三";break; case5:s+="四";break; case6:s+="五";break; case7:s+="六";break; } m_nwndStatusBar.SetPaneText(2,s);第六章测试与调试1.测设用例设计用例ID问题描述输入数据预期输出实际输出1登陆界面,用户名错误用户名:aaaa密码:aaaa提示用户名错误弹出提示框,提示用户名错误(图c_1)2登陆界面,没有任何信息用户名:空密码:空提示为空弹出提示框,提示填写完整后再登陆(图c_2)3登陆界面,密码错误用户名:admin密码:admi提示密码错误弹出提示框,提示密码错误(图c_3)4登陆界面,全部正确,超级管理员用户名:admin密码:admin进入主界面状态栏显示“超级管理员”进入主界面状态栏显示“超级管理员”5登陆界面,全部正确,一般管理员用户名:rsq密码:342601进入主界面状态栏显示“管理员”进入主界面状态栏显示“管理员”,沿树形目录打开“用户管理”时,用户权限位是“普通用户”6登陆界面,全部正确,普通用户用户名:PT密码:PT进入主界面状态栏显示“普通用户”进入主界面状态栏显示“普通用户”,沿树形目录打开“用户管理”时,用户权限位是“普通用户”,且没有增加和删除功能用例ID问题描述输入数据预期输出实际输出7主功能模块,增加用户,以超级管理员身份登陆用户名:ren密码:ren用户姓名:ren用户权限:普通用户提示:增加用户成功,数据库中用户记录增加一条提示:增加用户成功(图c_4),数据库中用户记录增加一条8主功能模块,增加用户,以超级管理员身份登陆用户名:sheng密码:sheng用户姓名:sheng用户权限:普通用户资料不完整,增加用户失败提示:增加失败,资料不完整(图c_5)9主功能模块,删除用户,管理员身份登陆在list框中选择一条要删除的记录,单击删除删除成功,数据库中减少一条记录提示:成功删除(图c_6)10主功能模块,修改用户信息,普通用户登陆列表框中之后自己的信息,单击选中,修改信息后,选择“修改”修改成功,数据库中的数据发生相应改变提示:修改成功,数据库中的书库发生相应变化(图c_7)11主功能模块,修改用户信息,普通用户登陆列表框中之后自己的信息,单击选中,修改信息,使得用户姓名不全,单击“修改”按钮修改失败提示:修改失败,资料不完整(图c_8);12主功能模块,单击树形控件中的其他项目,检查界面发生的变化在界面为用户管理界面时,单击“纵向管理”界面发生改变,详细信息部分变成纵向管理的界面,同时,列表框中的数据变成纵向项目的数据界面发生改变,详细信息部分变成纵向管理的界面,同时,列表框中的数据变成纵向项目的数据13主功能界面初始化数据单击“纵向管理”详细信息模块变成“纵向管理”模块的界面,在下来选择框中,委托单位,项目类别,以及参加人的院的待选项为从数据库基础信息中读入的信息详细信息模块变成“纵向管理”模块的界面,在下来选择框中,委托单位,项目类别,以及参加人的院的待选项为从数据库基础信息中读入的信息图c_1图c_2图c_3图c_4图c_5图c_6图c_7图c_8发现的问题当用户在增加或者删除一条记录后,在列表框中没有及时更新其内容,必须要到树形控件中重新单击一次该内容对应的树形目录,才能刷新。原因在于子对话框成员函数无法调用父对话框成员函数。可以通过自己生成一个消息的形式来解决,即为父对话框(系统主界面)设计一个消息,然后每次子窗口增加,修改或删除一条记录后,将这个消息发送给操作系统,让操作系统来通知主界面的及时更新。在设计数据库时,为了体现各表间的关系,外键设置的比较复杂。但是,在用系统时,经常会发生破坏这种依赖关系的操作,导致操作失败。不知道能否找到一个权衡点,来平衡这种操作。上课时,老师说道,在显示数据库中信息时,不要一次性全部显示,而是选择前面多少条。这里我没有实现这样的功能,而且不知道该怎样实现。我们在数据库学习中也没有涉及到这一方面的内容。

社会实践报告系别:班级:学号:姓名:作为祖国未来的事业的继承人,我们这些大学生应该及早树立自己的历史责任感,提高自己的社会适应能力。假期的社会实践就是很好的锻炼自己的机会。当下,挣钱早已不是打工的唯一目的,更多的人将其视为参加社会实践、提高自身能力的机会。许多学校也积极鼓励大学生多接触社会、了解社会,一方面可以把学到的理论知识应用到实践中去,提高各方面的能力;另一方面可以积累工作经验对日后的就业大有裨益。进行社会实践,最理想的就是找到与本专业对口单位进行实习,从而提高自己的实战水平,同时可以将课本知识在实践中得到运用,从而更好的指导自己今后的学习。但是作为一名尚未毕业的大学生,由于本身具备的专业知识还十分的有限,所以我选择了打散工作为第一次社会实践的方式。目的在于熟悉社会。就职业本身而言,并无高低贵贱之分,存在即为合理。通过短短几天的打工经历可以让长期处于校园的我们对社会有一种更直观的认识。实践过程:自从走进了大学,就业问题就似乎总是围绕在我们的身边,成了说不完的话题。在现今社会,招聘会上的大字报都总写着“有经验者优先”,可还在校园里面的我们这班学子社会经验又会拥有多少呢?为了拓展自身的知识面,扩大与社会的接触面,增加个人在社会竞争中的经验,锻炼和提高自己的能力,以便在以后毕业后能真正真正走入社会,能够适应国内外的经济形势的变化,并且能够在生活和工作中很好地处理各方面的问题,我开始了我这个假期的社会实践-走进天源休闲餐厅。实践,就是把我们在学校所学的理论知识,运用到客观实际中去,使自己所学的理论知识有用武之地。只学不实践,那么所学的就等于零。理论应该与实践相结合。另一方面,实践可为以后找工作打基础。通过这段时间的实习,学到一些在学校里学不到的东西。因为环境的不同,接触的人与事不同,从中所学的东西自然就不一样了。要学会从实践中学习,从学习中实践。而且在中国的经济飞速发展,又加入了世贸,国内外经济日趋变化,每天都不断有新的东西涌现,在拥有了越来越多的机会的同时,也有了更多的挑战,前天才刚学到的知识可能在今天就已经被淘汰掉了,中国的经济越和外面接轨,对于人才的要求就会越来越高,我们不只要学好学校里所学到的知识,还要不断从生活中,实践中学其他知识,不断地从各方面武装自已,才能在竞争中突出自已,表现自已。在餐厅里,别人一眼就能把我人出是一名正在读书的学生,我问他们为什么,他们总说从我的脸上就能看出来,也许没有经历过社会的人都有我这种不知名遭遇吧!我并没有因为我在他们面前没有经验而退后,我相信我也能做的像他们一样好.我的工作是在那做传菜生,每天9点钟-下午2点再从下午的4点-晚上8:30分上班,虽然时间长了点但,热情而年轻的我并没有丝毫的感到过累,我觉得这是一种激励,明白了人生,感悟了生活,接触了社会,了解了未来.在餐厅里虽然我是以传菜为主,但我不时还要做一些工作以外的事情,有时要做一些清洁的工作,在学校里也许有老师分配说今天做些什么,明天做些什么,但在这里,不一定有人会告诉你这些,你必须自觉地去做,而且要尽自已的努力做到最好,一件工作的效率就会得到别人不同的评价。在学校,只有学习的氛围,毕竟学校是学习的场所,每一个学生都在为取得更高的成绩而努力。而这里是工作的场所,每个人都会为了获得更多的报酬而努力,无论是学习还是工作,都存在着竞争,在竞争中就要不断学习别人先进的地方,也要不断学习别人怎样做人,以提高自已的能力!记得老师曾经说过大学是一个小社会,但我总觉得校园里总少不了那份纯真,那份真诚,尽管是大学高校,学生还终归保持着学生的身份。而走进企业,接触各种各样的客户、同事、上司等等,关系复杂,但我得去面对我从未面对过的一切。记得在我校举行的招聘会上所反映出来的其中一个问题是,学生的实际操作能力与在校理论学习有一定的差距。在这次实践中,这一点我感受很深。在学校,理论的学习很多,而且是多方面的,几乎是面面俱到;而在实际工作中,可能会遇到书本上没学到的,又可能是书本上的知识一点都用不上的情况。或许工作中运用到的只是很简单的问题,只要套公式似的就能完成一项任务。有时候我会埋怨,实际操作这么简单,但为什么书本上的知识让人学得这么吃力呢?这是社会与学校脱轨了吗?也许老师是正确的,虽然大学生生活不像踏入社会,但是总算是社会的一个部分,这是不可否认的事实。但是有时也要感谢老师孜孜不倦地教导,有些问题有了有课堂上地认真消化,有平时作业作补充,我比一部人具有更高的起点,有了更多的知识层面去应付各种工作上的问题,作为一名大学生,应该懂得与社会上各方面的人交往,处理社会上所发生的各方面的事情,这就意味着大学生要注意到社会实践,社会实践必不可少。毕竟,很快我就不再是一名大学生,而是社会中的一分子,要与社会交流,为社会做贡献。只懂得纸上谈兵是远远不及的,以后的人生旅途是漫长的,为了锻炼自己成为一名合格的、对社会有用的

温馨提示

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

评论

0/150

提交评论