C++学生信息管理系统.doc_第1页
C++学生信息管理系统.doc_第2页
C++学生信息管理系统.doc_第3页
C++学生信息管理系统.doc_第4页
C++学生信息管理系统.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

课 程 设 计学生信息管理系统系 别 :xxxxxxxxxxxxxxx专业(班级):xxxxxxxx作者(学号):(xxxx)指导教师:xxxxxx完成日期: 2012年06月11日1 C+程序设计系统文档目录摘要 .4 1、可行性研究 .5 1.1实验 .5 1.1.1 实验目的.5 2、需求分析.5 2.1系统设计思想.5 2.2 系统设计分析.5 2.3系统功能分析.6 2.4学生学籍系统的目标 .6 2.5面向对象的开发过程 .6 2.6开发本系统的意义. .7 2.7本文档编写目的. .8 3.系统设计 9 4、详细设计10 4.1主函数10 4.2各功能模块设计10 4.2.1输入模块10 4.2.2增加及插入模块11 4.2.3修改模块12 4.2.4删除模块13 4.2.5查询模块145、 程序执行后的部分效果图15 结语 18 谢辞19 参考文献20 附录 A 源程序 21 附录B C+程序设计总 29摘 要用c+实现一个学生管理系统的设计,利用所学的c+知识。首先需要编写出调用各个功能的主函数,告诉使用者这个系统有哪些功能和相应的操作,通过switch语句来选择相应操作;再者编写student.h来定义一个学生类,通过学生类的成员函数的实现来获取某个学生的信息内容,如:学生学号、姓名、性别、年龄等相关信息,编写student.cpp实现student.h的功能,最后编写dbstudent.h来设置对应主函数需要调用的功能函数,dbstudent.h,在dbstudent.h中的函数顺序可以按照自己的习惯,编写实现dbstudent.h的dbstudent.cpp函数。程序设计完成后,对应的调试所完成的程序查看有何不足之出,修改使其完美。按照规定的样式打印出程序。关键字:信息管理系统,面向对象,类,模块301、 可行性研究1.1 关于实验 1.1.1、实践目的1、 通过对班级学生信息管理系统的开发,学会在软件开发中用软件工程的方法和基本思想。2、比较结构体数组与链表的使用方法。3、加深理解多文档编程的思想,掌握对各个源文件进行处理的方式。4、会使用C+语言对文件进行读取、修改,保存等操作。5、学会熟练使用各种结构来完成程序。 2.需求分析 2.1系统设计思想采用现有的资源,先进的管理系统开发方案,充分利用学校现有的资源,减少开发中的时间和财力、物力、提高系统开发的水平和应用效果。系统就满足学校的需求,例如学生信息的录入、查询、更新等。系统就具备数据库维护功能,及时根据用户需求进行数据添加、删除、修改等操作。 2.2 系统设计分析本系统性能力求易于使用,具体有较高的扩展性和可维护性,其功能主要分为五大类: 用户管理:用于对用户的添加,赋于不同权限及对用户的修改及查询。 课程管理:用于对各学期课程的开设和修改。 学生信息管理:添加,删除,修改学生信息等。 任课信息管理: 对授课教师,课程号,班级等信息的添加,维护等。 学生信息查询: 对学生信息的查询,查询方式具有多条件组合查询功能。 2.3系统功能分析权限功能:系统具有动态的权限分配功能,可按用户权限对用户进行分组。可分为普通用户,一般用户,超级用户。普通用户只是查询不能修改,一般用户只能对授权范围内进行相应修改及删除,超级用户能修改、删除所有信息。录入功能:为一般用户提供相应的录入功能,为超级用户提供对所有信息的录入功能。查询功能:为所有用户提供查询的功能,可查询允许范围内的所有信息。维护功能:为一般用户提供查询及相应的修改,删除功能,为超级用户提供对所有信息的修改删除功能。退出功能:结束并关闭系统。 2.4 学生学籍系统的目标节约资源,提高学籍信息的精确度本系统能减少很多不必要的资源,不用象以前那样用冗余的纸张式的管理。大节省了学校能源。并且计算机的存储与快速查询功能大大提高了学籍管理的效率,并且还提高了学籍信息管理的精确度。方便快速操作,精减人员,节约开支方便快速的操作,可减少学籍信息管理的漏洞,又减少因工作的冗余出现的错误,并且操作非常简单,可减少许多不很必要的人员,这无论从物质上还是工作人员的工资上都为学校节约了开支。为学校增加了财富。 2.5 面向对象的开发过程面向对象的软件开发和相应的面向对象的问题求解是当今计算机技术发展的重要成果和趋势之一,C+是一种面向对象的语言。面向对象编程具备了几个优点,比如:代码维护方便、可扩展性好、支持代码重用技术等等。这些优点是过程编程语言所不具备的。下面我们就来谈谈面向对象技术的这些优点: (1) 可管理性,维护简单 对于面向过程的开发来说,版本管理主要是管理函数以及全程变量,而函数可以有很大的变动,同样,全程变量也可以有较大的变动,但是,对于面向对象程序设计来讲,一个系统是有对象来组成的,而对象是由类生成的,因此只需管理类就行,一个系统中,类是相对稳定的,因此便于管理. (2)模块化是面向对象编程中的一个特征。实体被表示为类和同一名字空间中具有相同功能的类,我们可以在名字空间中添加一个类而不会影响该名字空间的其他成员。 (3) 可扩充性 是对现代应用软件提出的又一个重要要求,即要求应用软件能够很方便,容易的进行扩充和修改,这种扩充和修改的范围不但涉及到软件的内容,也涉及到软件的形式和工作机制. 面向对象编程从本质上支持扩充性。如果有一个具有某种功能的类,就可以很快地扩充这个类,创建一个具有扩充的功能的类。 面向对象的程序设计可以用很好的可扩充性.这是由于类可以根据人对事物的理解而进行丰富,没有必要进行作大的改动,可以利用继承,对新的类添加属性和方法.用它可以生成系统的简单雏形,在征求用户的意见,在加入新的类,以及类的方法与属性等.(4)代码重用 可重用性是面向对象软件开发的一个核心思路.面向对象程序设计的抽象,封装,继承,多态的四大特点都无一例外,或多或少的围绕着可重用性这个核心并为之服务.由于功能是被封装在类中的,并且类是作为一个独立实体而存在的,提供一个类库就非常简单了。事实上,任何一个.NET Framework编程语言的程序员都可以使用.NET Framework类库,.NET Framework类库提供了很多的功能。更令人高兴的是,我们可以通过提供符合需求的类来扩充这些功能。 可重用性体现在两个方面: (1) 开发的类可以被别人以及别的项目使用 (2) 由于可以继承,因此可以实现代码级的重用 2.6 开发本系统的意义学生信息管理是学校管理中异常重要的一个环节,作为学校,除了育人,就是育知,学生信息管理的计算机化是整个学校教务管理中的重要一部分,能否实现这一步关系到学校办学整体效率的高低,介与它的重要性,班级信息管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量。运用班级信息管理系统可以减轻学院教学人员的工作量,缩小开支,提高工作效率与准确率,能够合理安排时间,能够尽快的知道自己的考试成绩,投入新的课程的学习或复习这次没有考过的课程。而班级信息管理系统的应用也为今天的民办教育在未来市场的竞争力有所提高。从大的方向说,就是为了加速我国四化建设的发展,实现全部的自动化,使我国发展成为通讯网络化,决策科学化,办公自动化的国家。在现代,高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,怎样提高工作效率是人们首先考虑的问题。班级信息管理是一个非常繁琐与复杂的一项工作,一个原因就是工作量大,不好管。对于一个学校而言,更应该运用一些本地资源,提高管理的力度,对学生负责,对国家负责。2.7 本文档编写目的本文档为定义项目的需求,以软件工程学的思想来组织管理并展开本次毕业设计课题的研究,以指导后期的系统分析与设计,并为系统用户与开发者提供参考标准。本文档力求准确,清晰地表达项目需求与开发过程,以保证开发过程满足项目需求的正确方向进行。 具体项目的确立是建立在各种条件、环境及需求之上的,通常情况下项目的开发与应用,运营的参与者拥有不同的知识结构体系,因此,所有人员对项目的理解程度很大程度上决定的项目的建设成败。因此,需要对系统之间的关系进行详细的设计分析说明。 3、系统设计(1)系统开发设计思想 在现有的技术水平和软硬件环境下,充分利用现有的资源,开发一个实用的班级信息管理系统,从而提高班级事务的管理效率,节省班干的管理时间和精力等。为了便于系统各功能的组合以及修改,本系统将采用模块化程序设计方法,并且该系统的设计应尽量符合本班级信息的管理工作,尽量满足日常的管理需要,同时满足直观、方便、实用、安全等要求。最后,该系统还应具有能够及时根据用户需求进行数据的添加、删除、修改等维护操作。(2)系统开发和运行环境的选择 开发工具:vc+ 6.0及以上版本 运行环境:Windows 2000、Windows 2003或Windows XP等操作系统。(3)系统功能分析本系统主要包括学生个人信息、学生学习情况、学生生活情况三个部分1)“学生个人信息”:主要是记录班里每位同学的个人信息(包括班里的团员情况),该模块设有查询、修改、添加和删除的功能。 2)“学生学习情况”:主要是记录每个学期的学生学习成绩情况以及其他一些有关学习方面的事项,该部分还包括了学生的上课出勤情况。该模块主要设有成绩查询,考勤查询,课程查询、信息维护等功能。 3)“学生生活情况”:主要是记录每个学期所进行的一些班级活动等,该模块主要是具备查阅的功能。 4 详细设计4.1主函数主函数一般设计得比较简单,只提供输入、处理和输出部分的函数调用。其中各功能模块用菜单方式选择。其流程图如图1-1所示。开始显示一系列功能选项输入08选择功能菜单N根据n的值调用各功能模块函数开始 图4-1 主函数流程图 4. 2. 各功能模块设计4.2.1输入模块 单一看各数据信息,学号、姓名,性别,出生年月,电话,地址是字符型,可以采用字符型数组;年龄为整形,采用整形。数据信息存放在文件中,一条记录对应一个学生,既符合习惯也方便信息管理。参照上一章实例这里的学生信息可以采用结构体的形式,把学生的学号、姓名、性别等作为结构体成员,如果要存放若干学生信息就用结构体数组。 返回主菜单保存调用函数i!=0吗?输入用户要输入学生记录的个数n开始调用输入函数结束 4-2-1 输入模块流程图 4.2.2增加及插入模块 该模块的功能是用户需要增加新的学生记录,从键盘输入并逐条写到原来的输入文件中,注意采用追加而不是覆盖的方式。插入模块功能是要求插入一条学生记录,插入后使得记录按照学生学号有序排列。增加模块流程图如图1-3所示。开始调用加载函数void insert(),记录个数n输入用户要增加学生记录个k从到调用输入函数input(i)保存增加的记录结束图4-2-2 增加模块流程图开始调用输入记录的函数显示刚才输入的记录选择排序不保存返回主菜单1324-2-3插入模块流程图4. 2.3修改模块 该模块的功能是显示所有的学生信息。显示完所有记录后,用户输入要修改学生的学号,根据学好查找学生记录,并提示修改该记录的哪部分信息,是学号、姓名还是所有信息都修改,根据用户的选择修改相应的信息。修改模块流程图如图所示4.2.4删除模块 该模块的功能是与修改模块一样先显示所有学生信息。显示完所有记录后,用户输入要删除学生的学号,根据学号查找学生记录并删除。删除记录时,一般的做法是将数据从文件中删除,删除位置后面的记录往前移,当数据结构不是单一变量、记录数量较多时要考虑率。开始显示所有记录,让用户决定哪条信息要删除输入要删除的学号或姓名i!=0吗?显示找到的记录,调用删除记录函数提示信息不存在在询问是否继续删除?返回主菜单结束YYNN 图4-2-4 删除模块流程图 4.2.5查询模块 该模块的功能是根据输入的学生姓名查询对应的记录,找到以后,可以进行增加、删除或修改信息的操作。流程图如图所示:输入学生学号或姓名是否找到学生记录?提示找到记录提示信息不存在询问用户是否继续?让用户选择:1.按学号查询;2.按姓名查询;3.退出本菜单YNYN开始结束 图4-2-5 查询模块流程图 5. 程序执行后的部分效果5.1项目主菜单效果图5.2增加学生记录效果图5.3显示学生记录效果图5.4查询学生记录效果图5.5修改学生记录效果图结语 通过本次课程设计,是我对c+语言有了新的认识,同时更加觉得c+语言的重要性。 通过这学期对c+语言的学习,感受到了c+语言的难度,同时也懂得了c+语言在以后学习中的重要性,同时找到了自己很多不足之处和不懂得地方。C+语言是入门很难的课程,需要掌握每个细节,这样才能打下牢固的基础,这需要我们经常把老师讲的笔记复习和记忆,课余时间也可以阅读其他关于c+语言的书籍和编程方面的书籍,加强对其的认识,同时还可以增强自己的知识面。C+语言是一门比较难学的科目,也是相当重要的编程语言。编写是需要注意的有很多,很多细节需要我们去注意比如说:类名的大小写、类结束后分号结束等等。 完成这个编程时出现了许多错误,其中得到老师和同学们很多的帮助,以后会更加努力的学习,加强对其的认识和了解。谢辞 通过这学期的学习,让我对c+语言有了初步的了解,认识到了它的重要性,同时也在此次编程中发现了自己的诸多不足。 没有困难就没有动力,在这学期中,王磊老师秉着认真负责的态度教我们这门课程,帮助同学讲解不理解的地方,使我们能更好的学习这门课程,您的认真负责使我们学到了很多。 希望以后还有机会跟着王磊老师继续学习这门课程。谢谢老师这学期以来的辛苦教学。参考文献 1 美Walter Savitch著,周靖译,C+面向对象程序设计基础、数据结构与编程 ,清华大学出版社 2 美Brian Overland著,董梁等译,C+语言命令详解,电子工业出版社 3 美AI Stevens著,林瑶等译,C+大学自学教程,电子工业出版社 4 刁成嘉主编,面向对象C+程序设计,机械工业出版社 5 刘瑞新主编,曹建春,沈淑娟,张连堂等编著,Visual C+面向对象程序设计程,机械工业出版社 6 陈文宇,张松梅编著,C+语言教程,电子科技大学出版社附录 A 源程序代码如下主函数1#include #include student.h#include dbstudent.hvoid main()int choice=-9999;Dbstudent s; while(choice!=0) coutnntt* 学生信息管理系统 *nn;couttt* 1 添加学生信息 *n;couttt* 2 显示学生信息 *n;couttt* 3 查询学生信息 *n;couttt* 4 修改学生信息 *n;couttt* 5 删除一个信息 *n;couttt* 6 删除全部信息 *n;couttt* 0 退出 系统 *n;coutchoice;switch(choice)case 1:s.addstudent();break;case 2:s.display();break;case 3:s.query();break;case 4:s.modifystudent();break;case 5:s.deletestudent(); break;case 6:s.clear();break;case 0:break;default:break;学生头文件class Studentprivate:int num;char name10;char sex;int age;int tag; /定义一个标志位,0:未删除 1:已经删除public:/ 写出set和get函数,和其他的函数void setnum(int num);void setname(char name);void setsex(char sex);void setage(int age);void settag(); /此处不需要参数,写在具体的函数体内,这样,用户不知道。/注意:get函数是有返回值类型的int getnum();char* getname(); /一定不能写成:char getname();char getsex();int getage();int gettag();/打印函数void display();/增加一个学生新信息 void addstudent(int num,char name,char sex,int age);/删除一个学生信息void deletestudent();创建一个长度为100的对象数组class Dbstudentprivate:int top; /数组下标指示器,Student student100;public:Dbstudent();Dbstudent();void addstudent();/添加学生void display(); /打印,显示void clear();/删除数据库中所有的信息void deletestudent();/按照给定的学号进行单个的删除void query();/查询模块Student* querybynum(int num); /根据指定的学号进行查找Student* querybyname(char name);/void modifystudent();/*student.cpp是对 student.h这个接口的具体的函数实现*/#include student.h#include #include #include / 写出set和get函数,和其他的函数void Student:setnum(int num)this-num=num;void Student:setname(char name) /this-name=name; /error strcpy(this-name,name);void Student:setsex(char sex)this-sex=sex;void Student:setage(int age)this-age=age;void Student:settag() /此处不需要参数,写在具体的函数体内,这样,用户不知道。this-tag=0;/注意:get函数是有返回值类型的int Student:getnum()return num;char* Student:getname() /一定不能写成:char getname();return name;char Student:getsex()return sex;int Student:getage()return age;int Student:gettag()return tag;/打印函数void Student:display()coutsetw(8)numsetw(8)namesetw(8)sexsetw(8)ageendl;cout -num=num;strcpy(this-name,name);this-sex=sex;this-age=age;this-tag=0;/删除一个学生信息void Student:deletestudent()this-tag=1;/*dbstudent.cpp是对 dbstudent.h这个接口的具体的函数实现构造函数*/Dbstudent:Dbstudent()/构造函数负责从磁盘中读取数据,放置到对象数组中(内存)top=-1;Student s;/定义一个临时的对象fstream file(student.txt,ios:in);while(1)file.read(char*)&s,sizeof(s);if(!file) break;/如果读取为空,则终止top+;studenttop=s;file.close();/文件使用完毕后,一定要及时关闭析构函数Dbstudent: Dbstudent()/析构函数负责在退出程序时,把当前编辑的内容保存到磁盘上。fstream file(student.txt,ios:out);for(int i=0;i=top;i+)if(studenti.gettag()=0) /只有没删除的,才存盘file.write( (char*)&studenti, sizeof(studenti) ); file.close();/关闭文件cout数据已经存入数据库,可以关闭当前控制台程序.endl;添加学生Dbstudent: Dbstudent()/析构函数负责在退出程序时,把当前编辑的内容保存到磁盘上。fstream file(student.txt,ios:out);for(int i=0;i=top;i+)if(studenti.gettag()=0) /只有没删除的,才存盘file.write( (char*)&studenti, sizeof(studenti) ); file.close();/关闭文件cout数据已经存入数据库,可以关闭当前控制台程序.endl;查询学生信息void Dbstudent:query()/查询模块int choice =-999;Student* s; /一个临时的指针cout1 按照学号查询:endl;cout2 按照姓名查询:endl;coutchoice;switch(choice)case 1:coutnum;s = querybynum(num);if(s=NULL)cout在数据库中没有该生的信息.endl;elsecoutsetw(8)学号setw(8)姓名setw(8)性别setw(8)年龄endl;cout -display();break;case 2:coutname;s = querybyname(name);if(s=NULL)cout在数据库中没有该生的信息.endl;elsecoutsetw(8)学号setw(8)姓名setw(8)性别setw(8)年龄endl;cout -display();break;default:break;Student* Dbstudent:querybynum(int num) /根据指定的学号进行查找for(int i=0;i=top;i+)i

温馨提示

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

评论

0/150

提交评论