资源描述
*实践教学*兰州理工大学计算机与通信学院2011年秋季学期 面向对象 课程设计题 目:高校科研管理信息系统的设计与开发 专业班级: 计算机科学与技术1班 姓 名: 李高亮 学 号: 10240109 指导教师: 年福忠 成 绩: 目 录摘要3引言41 课程设计概述5 1 .1 课程设计目的5 1 .2 课程设计的内容5 1 .3 课程设计的背景52 程序说明7 2 .1 课程设计思路说明7 2 .2所需库函数说明83详细设计9 3.1系统结构9 3.2添加数据流程图9 3.3修改数据流程图10 3.4删除数据流程图11 3.5查找数据流程图114系统图示12 4.1系统功能函数12 4.2程序的实现14 4.3程序运行17 4.4程序调试19 5结束语20致谢21参考文献22附录1 设计源程序清单23 摘 要科研和论文管理信息系统是由人、计算机、网络组成的能进行科研信息的搜集、传递、存贮、加工、维护和使用的系统,该系统能够实时反映高校的科研活动,为日常事务的处理和管理职能提供重要支持。高校科研信息管理通常是比较复杂,由于各类信息繁多难归集,利用计算机支持高校高效率完成信息管理,是适应现代高等学校制度要求,推动高校科研信息管理走向科学化、社会化、规范化和自动化,从而提高高校科研项目的成功率,提高整体科研水品和管理科研的水平。关键词:科研管理、信息管理 存贮。 引 言随着高等学校科研建设的不断深入发展,科研人员、项目、成果逐年增加,但是长期以来,科研资料及其数据以文字和表格形式存档,不但门类广而且繁杂,格式不统一,管理起来显得混乱;甚至一些资料和数据丢失或残缺,给正常的教学、科研和管理工作带来了极大的不便,管理效率较低; 由于各院校工作的特殊性,套用标准管理方式显然不十分适宜。在当前的形势下,有必要开发适合高院校使用的科研管理系统,使其能更方便、更有效和更安全地管理各种相关资料和数据,并且具备实时处理能力,提高工作效率和工作质量。某高校科研管理系统的工作重心是全心全意为广大教师和科研工作者提供一种高效率、手续简便的服务,要做到这一点必须具备一个能满足新形势需求的、先进的、高效的科研信息管理系统。 高校科研管理系统的开发,其目的是要将先进的管理技术运用到高校科研管理中来,通过该系统,不但能完成学校的科研项目日常管理工作,还可以及时向各级领导、上级主管部门提供报表、数据信息,为领导的决策提供一定的参考1。 1 课程设计概述1.1 课程设计目的本次设计题目:“高校科研管理信息系统的设计与开发”是 利用C+程序设计语言设计一个简单的高校管理系统用实现对高校科研信息的简单管理,如增加新科研项目;删除某科研项目;对已完成的科研项目进行存储;查询某科研项目;显示某科研项目的简单信息,等等。程序虽然简单,但对于一个计算机初学者来说是很有必要的,在程序设计过程中通过查阅资料,请教老师,请问同学,让我对C+有了更深的认识。1.2课程设计的内容 本系统分新建、删除、查询、建立已完成项目库等四大功能。其中查询是按照科研项目名查询,系统管理则包括对科研信息的新建,删除及已完成项目库的建立。本课程设计主要解决在一个学校科研信息的管理。在课程设计中,系统开发平台为Windows 2000,程序设计设计语言采用Visual C+,由于没能很好的 运用数据库,对于数据的存储还有待改进。程序运行平台为Windows 98/2000/XP程序通过调试运行,初步实现了设计目标,并且经过完善后,将可以应用在高校中解决实际问题。1.3课程设计的背景 科学研究是高等学校的重要工作之一,对于一所高等院校来说,学科门类多,科研项目及成果所涉及科学领域较广,其数量亦比较大,这给管理造成了一定的困难,通过计算机进行管理无疑是最科学和最有效的方法,一方面可提高工作效率和工作质量,同时又便于部门之间进行信息交流。科研管理信息系统是一个由人、计算机组成的能进行科研信息的搜集、传递、存贮、加工、维护和使用的系统,该系统能够实时反映高校的科研活动,为日常事务的处理和管理职能提供支持。在人类发明计算机之前,管理信息系统完全是手工作业,随着计算机技术的产生和发展,管理信息系统的结构发生了很大的改变,计算机强大的数据处理能力及现代化的网络通讯技术大大提高了管理信息系统的效能。作为高校的科研管理人员要分清楚哪些信息适合计算机处理,哪些信息更适合于手工作业,在工作中将两种方式有机地结合,互相取长补短,以求达到最佳的管理方式。因此,使科研管理工作更加规范化、科学化,建设一个科研管理信息系统已显得非常重要。高校科研管理信息系统通常包括科研人员信息管理、科研项目管理、科研成果管理、学术交流管理、业绩考核管理等。传统的科研管理方法已不再适合目前的科研管理的工作的要求,因此加强科研管理,实现管理科学化,通过管理促进科研的发展,更好地为经济建设服务,则是今后科研管理工作的指导思想。实行科学化的管理,必须尊重科学研究的规律,改变以往那种静止、封闭的行政管理为主的模式,突出科研工作动态、开放的行业性管理特点。它需要全面系统地掌握科研信息,而管理信息系统就是综合利用计算机硬件、软件、网络、数据库等现代化管理手段来满足这个需求的,科研管理信息系统的建立是实现科研管理科学化的一个重要任务1。 2 程序说明2.1 课程设计思路说明 我在对本课程设计思考与查询资料的过程中发现科研管理系统是一个十分庞大的系统,其科研管理系统可分为科研人员管理系统;科研经费管理系统;科研信息管理系统等等。想到自己还是个计算机的初学者,对数据库还不 能很好的运用,所以对于科研人员管理系统与科研经费管理系统的设计与实现还不能完成,就对科研信息管理系统做了一个简单的程序。使用了C+的一些语法知识(类,函数等)配合输入输出流(cin和cout)来解决问题。并运用了 C+中最能解决连接问题的指针:指针使用灵活,可以让你自己管理内存,在你需要的时候及时分配内存,不需要的时候释放掉;举个例子,在一般的链表中,当你要插入一个结点的时候可以为这个结点动态分配内存再插入进链表中,而你在删除完一个结点的时候释放这一部分空间以免占据多余的内存,当然指针的好处远远不止这些,比如:可以有效地表示复杂的数据结构;它能够为调用函数灵活地修改实参变量的值,在函数调用时能够获得1个以上的结果;支持动态内存分配,能够方便地实现动态数据结构(如二叉树和链表);能够直接处理内存单元地址,可以提高程序的运行速度进而提升处理问题的速度等等。当然,因为指针是直接访问地址,所以相对比较麻烦而且很容易出错2。 完成相关资料的查询后我开始设计程序。第一步,因为结构体变量做链表的结点最为合适,所以程序的第一部分我就先通过一个结构体定义了每个记录的基本形式。struct science /结构体/int id;char nameN; /字符串数组char authorN;char publishing_companyN;int date;bool state;science *next; myscience; 第二步,我定义了一个kenyan类,用来声明下面程序需要使用到的功能函数,比如lend()、find()、input()等等,同时声明一些私有成员。 第三步,功能函数的设计,分别设计了新增(input)、删除(del)、查找(find)、显示(show)、查询科研项目状态(lend)。 最后,我编写简单的主函数,定义了类对象t,用以实现程序。 2.2 所需库函数说明 为文件分配空间所用库函数:#include 打开文件用到的库函数:#include 使用字符串所需要库函数:#include C+语言输入输出流库函数:#include 在程序代码的起始处包含了上述头文件后,当需要使用到的时候就可以直接调用系统标准库里头文件信息,来完成程序调度。因此,可以不必自己在源代码中定义库函数的实现代码。勿庸置疑,在程序设计中灵活地运用这些系统自带库函数,能够为自己遍写程序带来较多便利。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系统功能函数 高校科研管理系统需要实现的功能主要有:查找某科研项目信息、修改某科研项目信息、新增某科研项目信息、查询某科研项目的状态。其中某科研项目信息的新增与查找是整个系统的核心。 (1) find函数string na;system(cls);coutendlendlendlendlendl;couttttt 查找 endl;coutendl;coutna;p=first;while(p!=NULL)if(p-name=na)return true;elsep=p-next;return false;主要功能是通过科研项目名查找某科研项目的相关信息(2) input 函数science *t=new science;system(cls);coutendlendlendlendlendl;couttttt 新增科研状态 endl;coutendl;coutt-name;coutt-author;coutt-publishing_company;coutt-date;t-state=true;t-next=NULL;end-next=t;end=t;主要功能是增加某项科研项目,及相关信息的输入。(3)lend函数 bool t;t=find();system(cls);if(t=false)coutendlendlendlendl;coutttt 对不起,无此科研状态! state=false)coutendlendlendlendl;coutttt 项目进行中 state=false;coutendlendlendlendl;coutttt endl;coutttt 建立已完成项目 成功 ! endl;coutttt endl;p=first;coutttt;system(pause);主要功能是对科研项目当前状态的确定。 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。最出的调试错误过多,在修改过程中,发现很多都是因为在写完一个语句时忘了加上分号(;),变量名的输入错误;变量名未定义等等。经过仔细的初步检查后我开始了上机调试,在编译和连接过程中发现错误,屏幕上显示了出错信息,根据提示找到出错的位置,加以改正,再进行编译如此反复,直到顺利通过编译和连接为止。错误主要有:一、定义变量时;粗心大意错写变量名,不过这在Visual C+编译器的错误信息提示框帮助下还是很容易找到并改正的。所以我发现在定义变量名的时候应该尽可能使用相近意思的英文单词或缩写,如:name(姓名)、num(工作证号)、depart(部门)、t(temp)等等,这样一来就可以适当的减少对变量名的生疏,减少低级错误的过多产生,把更多的精力放在语法检查上。 二、语法错误;在书本以及Visual C+编译器的错误信息提示框的帮助下,能够处理好大多数基本语法错误。我个人认为,作为一个程序员应该把书本上的语法看得滚瓜烂熟,才能在程序设计时驾车就熟的去使用这些语法帮助自己更好地完成程序设计目的;在精通一门语言的同时,学习多门语言的语法知识,体会两种语言的区别,对自己阅读更好优秀程序有很大裨益 三、逻辑错误;逻辑上的错误机器不易检查出来,有时候Visual C+编译器的错误信息提示框里的错误提示或许是不准确的(提示20几个错误,实际上只要改正1处其它的错误都会随之消失),这时就需要对数据处理结果进行人工分析。这种错误是最难找的,需要编写程序的人有相当耐心和细心去找出问题所在。5 结束语 C+ 语言是在C语言的基础上为支持面向对象程序面研制的一种编程语言。为了满足管理程序的复杂性的需要,1980年,贝尔实验室的Bjarne Stroustrup 开始对C语言进行改进和扩充。在经历了三次C+修订后,于1994年制定了ANSI C+标准的草案。以后又经过不断完善,成为目前的C+。C+包含了整个C,而C是建立C+的基础。C+包含了C的全部特征和优点,同时又添加了对面向对象编程的完全支持。面向对象的程序设计方法强调直接以问题域中的事物为中心来思考和认识问题,并按照这些事物的本质特征把它们抽象为对象,以作为构成软件系统的基础。这样,在现实世界中有哪些值得注意的事物,在程序中就有哪些对象与之对应。程序设计者的任务包括两个方面:一是设计所需的各种类和对象,即决定把哪些数据和操作封装在一起;二是考虑怎样向有关对象发送消息,以完成所需的任务。经过一学期的认真学习,对C+这门计算机基础语言有了简单的认识。在本次程序设计过程中,我受益良多 。对面向对象更深入理解。 致谢在此向所有在这次课程设计中给予我关心、支持和帮助的老师、朋友们,致以最诚挚的谢意,在整个的设计过程中,很多老师、同学们都给予我们莫大的帮助。我深知,只有不断的拼搏进取、不断的前进,才是对大家最好的感谢。老师的严谨的工作作风、亲切的待人方式,渊博的专业知识都给我留下了深刻的印象,老师细心的讲解和指点使我从课程设计之中受益匪浅,使我从实际的算法实现中更好地掌握了理论知识。她深厚的理论水平都使我受益匪浅,无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高,这对于我以后的工作和学习都是一种巨大的帮助!最后还要感谢我的同学们,感谢他们耐心的讲解和细心的指导,也感谢他们给我提出那么多的解决方案和指导性意见,帮我顺利完成我的课程设计! 参考文献1 谭浩强.C+语言程序设计.第三版.清华大学出版社,20052 叶秉哲.C+常见问题解, 20003 谭浩强.C+语言程序设计.第三版.清华大学出版社,20054 陈维兴,林小茶C+面向对象程序设计教程 第二版 20045 叶秉哲.C+常见问题解, 20006 overland B.C+语言命令详解(第二版)董梁,李君成,李自更 译,2000附录1:设计源程序清单/程序名称:高校科研管理信息系统的设计与开发.CPP/程序功能:采用结构化与面向对象方法设计程序,完成科研管理系统的设计与实现#include#include#include#includeusing namespace std;const N=100; /常变量struct science /结构体/int id;char nameN; /字符串数组char authorN;char publishing_companyN;int date;bool state;science *next; myscience;class keyan /科研管理类private:science *first,*end,*p;public:keyan()Modify();void menu0(); /程序运行void quit()system(cls);coutendlendlendlendl;coutttt正在保存数据.endl;save();system(cls);coutendlendlendlendlendlendlendlendl;coutttt 感谢您的使用! 再见! endl;exit(1); /函数原型void Modify(); void save(); /数据存盘void lend(); /查询科研项目状态bool find(); /查询科研项目信息void input(); /新增科研项目void del(); /删除科研项目void show(); /显示科研项目信息void input1();void keyan:menu0() system(cls);int c;coutendl;coutendlttt欢迎使用本科研工资管理系统! ;coutendl;couttttt 主菜单 endl;coutttt1. 建立已完成项目 endl;coutttt2. 查找 endl;coutttt3. 新增科研项目 endl;coutttt4. 删除科研项目 endl;coutttt5. 退出系统 endl;coutc;switch(c)case 1:lend();break;case 2:show();break;case 3:input();break;case 4:del();break;case 5:quit();break;default:break;void keyan:Modify()fstream fp(tushu.bat,ios:in);if(!fp)coutendlendlendlendl;couttt 打开数据文件失败,请重新创建数据! endl; coutendl;int i; coutttt 是否新建数据?endl;coutendl;coutttt 1. 新建 endl;coutttt 2. 退出 endl;couti;switch(i) /选择运行项目case 1:input1();break;case 2:exit(0);break;default:break;elsescience *t=new science;first=t;fp.seekg(0,ios:beg);fp.read(char*)t,sizeof(myscience);p=first;t=new science;while(fp.read(char*)t,sizeof(myscience)/t=new science;p-next=t;p=t;end=t;end-next=NULL;p=first;delete t;fp.close();void keyan:save() /保存科研项目信息fstream fp(tushu.bat,ios:out);p=first;while(p!=NULL)fp.write(char*)p,sizeof(myscience);p=p-next;void keyan:lend()bool t;t=find();system(cls);if(t=false)coutendlendlendlendl;coutttt 对不起,无此科研状态! state=false)coutendlendlendlendl;coutttt 项目进行中 state=false;coutendlendlendlendl;coutttt endl;coutttt 建立已完成项目 成功 ! endl;coutttt endl;p=first;coutttt;system(pause);bool keyan:find()string na;system(cls);coutendlendlendlendlendl;couttttt 查找 endl;coutendl;coutna;p=first;while(p!=NULL)if(p-name=na)return true;elsep=p-next;return false;void keyan:input()science *t=new science;system(cls);coutendlendlendlendlendl;couttttt 新增科研状态 endl;coutendl;coutt-name;coutt-author;coutt-publishing_company;coutt-date;t-state=true;t-next=NULL;end-next=t;end=t;void keyan:input1()science *t=new science;system(cls);coutendlendlendlendlendl;couttttt 新建 endl;coutendl;coutt-name;coutt-author;coutt-publishing_company;coutt-date;t-state=true;t-next=NULL;first=end=p=t;void keyan:del()bool t;t=find();if(t=false)coutendlendlendlendl;coutttt 无此人、 无法删除! endl;else/coutttt;system(pause);void keyan:show()system(cls);coutendlendl;couttttt 信息 endl;couttttt endl;coutleftsetw(14)姓名setw(10)负责人姓名setw(14)科研经费setw(10)编号setw(10)状态endl;p=first;while(p!=NULL)coutleftsetw(14)namesetw(10)authorsetw(14)publishing_companysetw(10)date;if(p-state=true) coutsetw(10)项目进行中endl;else coutsetw(10)项目已完成next;coutttt;system(pause);/主程序void main()keyan t;while(true)t.menu0();
展开阅读全文