还剩27页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
*******************实践教学*******************兰州理工大学计算机与通信学院2011年秋季学期面向对象课程设计题目高校科研管理信息系统的设计与开发专业班级计算机科学与技术1班姓名李高亮学号10240109指导教师年福忠成绩目 录摘要……………………………………………………………………………3引言……………………………………………………………………………41课程设计概述………………………………………………………………
51.1课程设计目的…………………………………………………………
51.2课程设计的内容………………………………………………………
51.3课程设计的背景………………………………………………………52程序说明……………………………………………………………………
72.1课程设计思路说明……………………………………………………
72.2所需库函数说明………………………………………………………83详细设计……………………………………………………………………
93.1系统结构………………………………………………………………
93.2添加数据流程图………………………………………………………
93.3修改数据流程图………………………………………………………
103.4删除数据流程图………………………………………………………
113.5查找数据流程图………………………………………………………114系统图示……………………………………………………………………
124.1系统功能函数…………………………………………………………
124.2程序的实现……………………………………………………………
144.3程序运行………………………………………………………………
174.4程序调试………………………………………………………………195结束语………………………………………………………………………20致谢…………………………………………………………………………21参考文献……………………………………………………………………22附录1设计源程序清单…………………………………………………23摘要科研和论文管理信息系统是由人、计算机、网络组成的能进行科研信息的搜集、传递、存贮、加工、维护和使用的系统,该系统能够实时反映高校的科研活动,为日常事务的处理和管理职能提供重要支持高校科研信息管理通常是比较复杂,由于各类信息繁多难归集,利用计算机支持高校高效率完成信息管理,是适应现代高等学校制度要求,推动高校科研信息管理走向科学化、社会化、规范化和自动化,从而提高高校科研项目的成功率,提高整体科研水品和管理科研的水平关键词科研管理、信息管理存贮引言随着高等学校科研建设的不断深入发展科研人员、项目、成果逐年增加但是长期以来科研资料及其数据以文字和表格形式存档不但门类广而且繁杂格式不统一管理起来显得混乱;甚至一些资料和数据丢失或残缺给正常的教学、科研和管理工作带来了极大的不便管理效率较低;由于各院校工作的特殊性套用标准管理方式显然不十分适宜在当前的形势下有必要开发适合高院校使用的科研管理系统使其能更方便、更有效和更安全地管理各种相关资料和数据并且具备实时处理能力提高工作效率和工作质量某高校科研管理系统的工作重心是全心全意为广大教师和科研工作者提供一种高效率、手续简便的服务,要做到这一点必须具备一个能满足新形势需求的、先进的、高效的科研信息管理系统高校科研管理系统的开发其目的是要将先进的管理技术运用到高校科研管理中来通过该系统不但能完成学校的科研项目日常管理工作还可以及时向各级领导、上级主管部门提供报表、数据信息为领导的决策提供一定的参考
[1]1课程设计概述
1.1课程设计目的本次设计题目“高校科研管理信息系统的设计与开发”是利用C++程序设计语言设计一个简单的高校管理系统用实现对高校科研信息的简单管理,如增加新科研项目;删除某科研项目;对已完成的科研项目进行存储;查询某科研项目;显示某科研项目的简单信息,等等程序虽然简单,但对于一个计算机初学者来说是很有必要的,在程序设计过程中通过查阅资料,请教老师,请问同学,让我对C++有了更深的认识
1.2课程设计的内容本系统分新建、删除、查询、建立已完成项目库等四大功能其中查询是按照科研项目名查询,系统管理则包括对科研信息的新建,删除及已完成项目库的建立本课程设计主要解决在一个学校科研信息的管理在课程设计中,系统开发平台为Windows2000,程序设计设计语言采用VisualC++,由于没能很好的运用数据库,对于数据的存储还有待改进程序运行平台为Windows98/2000/XP程序通过调试运行,初步实现了设计目标,并且经过完善后,将可以应用在高校中解决实际问题
1.3课程设计的背景科学研究是高等学校的重要工作之一,对于一所高等院校来说,学科门类多,科研项目及成果所涉及科学领域较广,其数量亦比较大,这给管理造成了一定的困难,通过计算机进行管理无疑是最科学和最有效的方法,一方面可提高工作效率和工作质量,同时又便于部门之间进行信息交流科研管理信息系统是一个由人、计算机组成的能进行科研信息的搜集、传递、存贮、加工、维护和使用的系统,该系统能够实时反映高校的科研活动,为日常事务的处理和管理职能提供支持在人类发明计算机之前,管理信息系统完全是手工作业,随着计算机技术的产生和发展,管理信息系统的结构发生了很大的改变,计算机强大的数据处理能力及现代化的网络通讯技术大大提高了管理信息系统的效能作为高校的科研管理人员要分清楚哪些信息适合计算机处理,哪些信息更适合于手工作业,在工作中将两种方式有机地结合,互相取长补短,以求达到最佳的管理方式因此,使科研管理工作更加规范化、科学化,建设一个科研管理信息系统已显得非常重要高校科研管理信息系统通常包括科研人员信息管理、科研项目管理、科研成果管理、学术交流管理、业绩考核管理等传统的科研管理方法已不再适合目前的科研管理的工作的要求,因此加强科研管理,实现管理科学化,通过管理促进科研的发展,更好地为经济建设服务,则是今后科研管理工作的指导思想实行科学化的管理,必须尊重科学研究的规律,改变以往那种静止、封闭的行政管理为主的模式,突出科研工作动态、开放的行业性管理特点它需要全面系统地掌握科研信息,而管理信息系统就是综合利用计算机硬件、软件、网络、数据库等现代化管理手段来满足这个需求的,科研管理信息系统的建立是实现科研管理科学化的一个重要任务
[1]2程序说明
2.1课程设计思路说明我在对本课程设计思考与查询资料的过程中发现科研管理系统是一个十分庞大的系统,其科研管理系统可分为科研人员管理系统;科研经费管理系统;科研信息管理系统等等想到自己还是个计算机的初学者,对数据库还不能很好的运用,所以对于科研人员管理系统与科研经费管理系统的设计与实现还不能完成,就对科研信息管理系统做了一个简单的程序使用了C++的一些语法知识类,函数等配合输入输出流(cin和cout)来解决问题并运用了C++中最能解决连接问题的指针指针使用灵活,可以让你自己管理内存,在你需要的时候及时分配内存,不需要的时候释放掉;举个例子,在一般的链表中,当你要插入一个结点的时候可以为这个结点动态分配内存再插入进链表中,而你在删除完一个结点的时候释放这一部分空间以免占据多余的内存,当然指针的好处远远不止这些,比如可以有效地表示复杂的数据结构;它能够为调用函数灵活地修改实参变量的值,在函数调用时能够获得1个以上的结果;支持动态内存分配,能够方便地实现动态数据结构(如二叉树和链表);能够直接处理内存单元地址,可以提高程序的运行速度进而提升处理问题的速度等等当然,因为指针是直接访问地址,所以相对比较麻烦而且很容易出错
[2]完成相关资料的查询后我开始设计程序第一步,因为结构体变量做链表的结点最为合适,所以程序的第一部分我就先通过一个结构体定义了每个记录的基本形式structscience//结构体{//intid;charname[N];//字符串数组charauthor[N];charpublishing_company[N];intdate;boolstate;science*next;}myscience;第二步,我定义了一个kenyan类,用来声明下面程序需要使用到的功能函数,比如lend()、find()、input()等等,同时声明一些私有成员第三步,功能函数的设计,分别设计了新增(input)、删除(del)、查找(find)、显示(show)、查询科研项目状态(lend)最后,我编写简单的主函数,定义了类对象t,用以实现程序
2.2所需库函数说明为文件分配空间所用库函数#includemalloc.h打开文件用到的库函数#includestdlib.h使用字符串所需要库函数#includestring.hC++语言输入输出流库函数#includeiostream.h在程序代码的起始处包含了上述头文件后,当需要使用到的时候就可以直接调用系统标准库里头文件信息,来完成程序调度因此,可以不必自己在源代码中定义库函数的实现代码勿庸置疑,在程序设计中灵活地运用这些系统自带库函数,能够为自己遍写程序带来较多便利3详细设计
3.1系统结构
3.2添加数据流程图执行添加相关数据信息流程:用户首先需要输入添加到数据库中的信息,系统验证是否输入正确的符合要求的信息输入正确信息,将数据插入到数据库中,如未输入数据系统提示用户必须输入相关信息重新输入数据执行添加操作,如果添加数据信息成功,系统提示添加成功,插入失败需要重新添加添加数据信息流程图如图
3.2添加数据流程图所示
3.3修改数据流程图执行修改相关数据信息流程:用户首先进入显示页面,执行修改操作,系统根据修改数据主键信息判断是否为所需修改项当传入的是主键信息,显示用户所要修改信息页面,否则提示没有相关信息当用户对信息修改完成后,系统判断是否输入正确的修改信息输入正确,系统修改数据库中数据,输入错误用户需要继续输入数据信息当修改成功,系统自动跳转倒显示页面,否则系统提示错误信息修改数据信息流程图如下图
3.3修改数据流程图所示图
3.2添加数据流程图图
3.3修改数据流程图
3.4删除数据流程图执行删除相关数据信息流程:用户首先进入显示页面,执行删除操作,系统根据删除数据主键信息判断是否为所需删除项当传入的是主键信息,显示用户所要删除信息页面当用户删除数据时,系统判断是否删除信息成功当删除成功,系统自动跳转倒显示页面,否则系统提示错误信息删除数据信息流程图如图
3.4删除数据流程图所示
3.5查找数据流程图执行查找相关数据信息流程:用户首先进入显示页面,在指定的文本框处输入查找信息,在数据库中查找符合要求的信息如果找到信息,显示详细信息,如果没有查找到系统提示没有此信息查找数据信息流程图如图
3.5查找数据流程图所示图
3.4删除数据流程图图
3.5查找数据流程图4系统图示
4.1系统功能函数高校科研管理系统需要实现的功能主要有查找某科研项目信息、修改某科研项目信息、新增某科研项目信息、查询某科研项目的状态其中某科研项目信息的新增与查找是整个系统的核心1find函数{stringna;systemcls;coutendlendlendlendlendl;cout\t\t\t\t查找 endl;coutendl;cout\t\t\t\t请输入项目名;cinna;p=first;whilep!=NULL{ifp-name==nareturntrue;elsep=p-next;}returnfalse;}主要功能是通过科研项目名查找某科研项目的相关信息2input函数{science*t=newscience;systemcls;coutendlendlendlendlendl;cout\t\t\t\t新增科研状态endl;coutendl;cout\t\t\t\t请输入科研项目名称:;cint-name;cout\t\t\t\t请输入负责人姓名:;cint-author;cout\t\t\t\t请输入科研经费:;cint-publishing_company;cout\t\t\t\t请输入编号:;cint-date;t-state=true;t-next=NULL;end-next=t;end=t;}主要功能是增加某项科研项目,及相关信息的输入3lend函数{boolt;t=find;systemcls;ift==false{coutendlendlendlendl;cout\t\t\t对不起,无此科研状态!endl;}else{ifp-state==false{coutendlendlendlendl;cout\t\t\t项目进行中endl;}else{p-state=false;coutendlendlendlendl;cout\t\t\tendl;cout\t\t\t建立已完成项目成功!endl;cout\t\t\tendl;}}p=first;cout\t\t\t;systempause;}主要功能是对科研项目当前状态的确定
4.2程序的实现
(1)因为没有使用数据库,所以必需先新建几组科研项目的相关信息登录执行截图如4-1所示图4-1登录执行截图建立科研项目如4-2所示图4-2
(2)程序正常运行,运行截面如4-3所示图4-3程序运行截图
4.3程序的运行对新建的科研项目进行查找,如4-4所示图4-4科研项目查找执行截图对新建的科研项目信息进行查找,查找结果如4-5所示图4-5科研项目查找结果截图
4.4程序调试程序调试是程序设计过程中很重要的的一个环节为了便于查错、阅读,在设计该程序时我大多数情况下采用的是结构化程序方法编辑,添加了尽可能多的注释,这为我后来的调试过程带来了很多方便
[3]最出的调试错误过多,在修改过程中,发现很多都是因为在写完一个语句时忘了加上分号(;),变量名的输入错误;变量名未定义等等经过仔细的初步检查后我开始了上机调试,在编译和连接过程中发现错误,屏幕上显示了出错信息,根据提示找到出错的位置,加以改正,再进行编译……如此反复,直到顺利通过编译和连接为止错误主要有
一、定义变量时;粗心大意错写变量名,不过这在VisualC++编译器的错误信息提示框帮助下还是很容易找到并改正的所以我发现在定义变量名的时候应该尽可能使用相近意思的英文单词或缩写,如name姓名、num(工作证号)、depart(部门)、ttemp等等,这样一来就可以适当的减少对变量名的生疏,减少低级错误的过多产生,把更多的精力放在语法检查上
二、语法错误;在书本以及VisualC++编译器的错误信息提示框的帮助下,能够处理好大多数基本语法错误我个人认为,作为一个程序员应该把书本上的语法看得滚瓜烂熟,才能在程序设计时驾车就熟的去使用这些语法帮助自己更好地完成程序设计目的;在精通一门语言的同时,学习多门语言的语法知识,体会两种语言的区别,对自己阅读更好优秀程序有很大裨益
三、逻辑错误;逻辑上的错误机器不易检查出来,有时候VisualC++编译器的错误信息提示框里的错误提示或许是不准确的(提示20几个错误,实际上只要改正1处其它的错误都会随之消失),这时就需要对数据处理结果进行人工分析这种错误是最难找的,需要编写程序的人有相当耐心和细心去找出问题所在5结束语C++语言是在C语言的基础上为支持面向对象程序面研制的一种编程语言为了满足管理程序的复杂性的需要,1980年,贝尔实验室的BjarneStroustrup开始对C语言进行改进和扩充在经历了三次C++修订后,于1994年制定了ANSIC++标准的草案以后又经过不断完善,成为目前的C++C++包含了整个C,而C是建立C++的基础C++包含了C的全部特征和优点,同时又添加了对面向对象编程的完全支持面向对象的程序设计方法强调直接以问题域中的事物为中心来思考和认识问题,并按照这些事物的本质特征把它们抽象为对象,以作为构成软件系统的基础这样,在现实世界中有哪些值得注意的事物,在程序中就有哪些对象与之对应程序设计者的任务包括两个方面一是设计所需的各种类和对象,即决定把哪些数据和操作封装在一起;二是考虑怎样向有关对象发送消息,以完成所需的任务经过一学期的认真学习,对C++这门计算机基础语言有了简单的认识在本次程序设计过程中,我受益良多对面向对象更深入理解致谢在此向所有在这次课程设计中给予我关心、支持和帮助的老师、朋友们,致以最诚挚的谢意,在整个的设计过程中,很多老师、同学们都给予我们莫大的帮助我深知,只有不断的拼搏进取、不断的前进,才是对大家最好的感谢老师的严谨的工作作风、亲切的待人方式,渊博的专业知识都给我留下了深刻的印象,老师细心的讲解和指点使我从课程设计之中受益匪浅,使我从实际的算法实现中更好地掌握了理论知识她深厚的理论水平都使我受益匪浅,无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高,这对于我以后的工作和学习都是一种巨大的帮助!最后还要感谢我的同学们,感谢他们耐心的讲解和细心的指导,也感谢他们给我提出那么多的解决方案和指导性意见,帮我顺利完成我的课程设计!参考文献
[1]谭浩强.C++语言程序设计.第三版.清华大学出版社,2005
[2]叶秉哲.C++常见问题解2000
[3]谭浩强.C++语言程序设计.第三版.清华大学出版社,2005
[4]陈维兴,林小茶C++面向对象程序设计教程第二版2004
[5]叶秉哲.C++常见问题解2000
[6]overlandB.C++语言命令详解(第二版)董梁,李君成,李自更译,2000附录1设计源程序清单//程序名称:高校科研管理信息系统的设计与开发.CPP//程序功能采用结构化与面向对象方法设计程序,完成科研管理系统的设计与实现#includeiostream#includefstream#includestring#includeiomanipusingnamespacestd;constN=100;//常变量structscience//结构体{//intid;charname[N];//字符串数组charauthor[N];charpublishing_company[N];intdate;boolstate;science*next;}myscience;classkeyan//科研管理类{private:science*first*end*p;public:keyan{Modify;}voidmenu0;//程序运行voidquit{systemcls;coutendlendlendlendl;cout\t\t\t正在保存数据......endl;save;systemcls;coutendlendlendlendlendlendlendlendl;cout\t\t\t感谢您的使用!再见!endl;exit1;}//函数原型voidModify;voidsave;//数据存盘voidlend;//查询科研项目状态boolfind;//查询科研项目信息voidinput;//新增科研项目voiddel;//删除科研项目voidshow;//显示科研项目信息voidinput1;};voidkeyan::menu0{systemcls;intc;coutendl;coutendl\t\t\t欢迎使用本科研工资管理系统!;coutendl;cout\t\t\t\t主菜单endl;cout\t\t\t
1.建立已完成项目endl;cout\t\t\t
2.查找endl;cout\t\t\t
3.新增科研项目endl;cout\t\t\t
4.删除科研项目endl;cout\t\t\t
5.退出系统endl;;cout\t\t\t请选择;cinc;switchc{case1:lend;break;case2:show;break;case3:input;break;case4:del;break;case5:quit;break;default:break;}}voidkeyan::Modify{fstreamfptushu.batios::in;if!fp{coutendlendlendlendl;cout\t\t打开数据文件失败,请重新创建数据!endl;coutendl;inti;cout\t\t\t是否新建数据?endl;coutendl;cout\t\t\t
1.新建endl;cout\t\t\t
2.退出endl;cout\t\t\t\t;cini;switchi//选择运行项目{case1:input1;break;case2:exit0;break;default:break;}}else{science*t=newscience;first=t;fp.seekg0ios::beg;fp.readchar*tsizeofmyscience;p=first;t=newscience;whilefp.readchar*tsizeofmyscience{//t=newscience;p-next=t;p=t;}end=t;end-next=NULL;p=first;deletet;fp.close;}}voidkeyan::save//保存科研项目信息{fstreamfptushu.batios::out;p=first;whilep!=NULL{fp.writechar*psizeofmyscience;p=p-next;}}voidkeyan::lend{boolt;t=find;systemcls;ift==false{coutendlendlendlendl;cout\t\t\t对不起,无此科研状态!endl;}else{ifp-state==false{coutendlendlendlendl;cout\t\t\t项目进行中endl;}else{p-state=false;coutendlendlendlendl;cout\t\t\tendl;cout\t\t\t建立已完成项目成功!endl;cout\t\t\tendl;}}p=first;cout\t\t\t;systempause;}boolkeyan::find{stringna;systemcls;coutendlendlendlendlendl;cout\t\t\t\t查找 endl;coutendl;cout\t\t\t\t请输入项目名;cinna;p=first;whilep!=NULL{ifp-name==nareturntrue;elsep=p-next;}returnfalse;}voidkeyan::input{science*t=newscience;systemcls;coutendlendlendlendlendl;cout\t\t\t\t新增科研状态endl;coutendl;cout\t\t\t\t请输入科研项目名称:;cint-name;cout\t\t\t\t请输入负责人姓名:;cint-author;cout\t\t\t\t请输入科研经费:;cint-publishing_company;cout\t\t\t\t请输入编号:;cint-date;t-state=true;t-next=NULL;end-next=t;end=t;}voidkeyan::input1{science*t=newscience;systemcls;coutendlendlendlendlendl;cout\t\t\t\t 新建 endl;coutendl;cout\t\t\t\t请输入科研项目名称:;cint-name;cout\t\t\t\t请输入负责人姓名:;cint-author;cout\t\t\t\t请输入科研经费:;cint-publishing_company;cout\t\t\t\t请输入编号:;cint-date;t-state=true;t-next=NULL;first=end=p=t;}voidkeyan::del{boolt;t=find;ift==false{coutendlendlendlendl;cout\t\t\t无此人、无法删除!endl;}else{//////////////////}cout\t\t\t;systempause;}voidkeyan::show{systemcls;coutendlendl;cout\t\t\t\t信息endl;cout\t\t\t\tendl;coutleftsetw14姓名setw10负责人姓名setw14科研经费setw10编号setw10状态endl;p=first;whilep!=NULL{coutleftsetw14p-namesetw10p-authorsetw14p-publishing_companysetw10p-date;ifp-state==truecoutsetw10项目进行中endl;elsecoutsetw10项目已完成endl;p=p-next;}cout\t\t\t;systempause;}//主程序voidmain{keyant;whiletrue{t.menu0;}}科研管理系统新增科研信息查找科研信息建立已完成项目删除科研项目退出管理系统。