C++学生信息管理系统.docx
- 文档编号:30753188
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:30
- 大小:217.18KB
C++学生信息管理系统.docx
《C++学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《C++学生信息管理系统.docx(30页珍藏版)》请在冰豆网上搜索。
C++学生信息管理系统
课程设计
学生信息管理系统
系别:
xxxxxxxxxxxxxxx
专业(班级):
xxxxxxxx
作者(学号):
(xxxx)
指导教师:
xxxxxx
完成日期:
2012年06月11日
摘要..................................................................................................4
2、需求分析..........................................................................................5
2.1系统设计思想.........................................................................5
2.2系统设计分析........................................................................5
2.3系统功能分析.........................................................................6
2.4学生学籍系统的目标.............................................................6
2.5面向对象的开发过程..............................................................6
2.6开发本系统的意义..................................................................7
2.7本文档编写目的.....................................................................8
结语…………………………………………………………………………18
谢辞………………………………………………………………………………19
参考文献…………………………………………………………………………20
附录A源程序………………………………………………………………21
附录BC++程序设计总………………………………………………………29
摘要
用c++实现一个学生管理系统的设计,利用所学的c++知识。
首先需要编写出调用各个功能的主函数,告诉使用者这个系统有哪些功能和相应的操作,通过switch语句来选择相应操作;再者编写student.h来定义一个学生类,通过学生类的成员函数的实现来获取某个学生的信息内容,如:
学生学号、姓名、性别、年龄等相关信息,编写student.cpp实现student.h的功能,最后编写dbstudent.h来设置对应主函数需要调用的功能函数,dbstudent.h,在dbstudent.h中的函数顺序可以按照自己的习惯,编写实现dbstudent.h的dbstudent.cpp函数。
程序设计完成后,对应的调试所完成的程序查看有何不足之出,修改使其完美。
按照规定的样式打印出程序。
关键字:
信息管理系统,面向对象,类,模块
1、可行性研究
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)代码重用
可重用性是面向对象软件开发的一个核心思路.面向对象程序设计的抽象,封装,继承,多态的四大特点都无一例外,或多或少的围绕着可重用性这个核心并为之服务.
由于功能是被封装在类中的,并且类是作为一个独立实体而存在的,提供一个类库就非常简单了。
事实上,任何一个.NETFramework编程语言的程序员都可以使用.NETFramework类库,.NETFramework类库提供了很多的功能。
更令人高兴的是,我们可以通过提供符合需求的类来扩充这些功能。
可重用性体现在两个方面:
(1)开发的类可以被别人以及别的项目使用
(2)由于可以继承,因此可以实现代码级的重用
2.6开发本系统的意义
学生信息管理是学校管理中异常重要的一个环节,作为学校,除了育人,就是育知,学生信息管理的计算机化是整个学校教务管理中的重要一部分,能否实现这一步关系到学校办学整体效率的高低,介与它的重要性,班级信息管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量。
运用班级信息管理系统可以减轻学院教学人员的工作量,缩小开支,提高工作效率与准确率,能够合理安排时间,能够尽快的知道自己的考试成绩,投入新的课程的学习或复习这次没有考过的课程。
而班级信息管理系统的应用也为今天的民办教育在未来市场的竞争力有所提高。
从大的方向说,就是为了加速我国四化建设的发展,实现全部的自动化,使我国发展成为通讯网络化,决策科学化,办公自动化的国家。
在现代,高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,怎样提高工作效率是人们首先考虑的问题。
班级信息管理是一个非常繁琐与复杂的一项工作,一个原因就是工作量大,不好管。
对于一个学校而言,更应该运用一些本地资源,提高管理的力度,对学生负责,对国家负责。
2.7本文档编写目的
本文档为定义项目的需求,以软件工程学的思想来组织管理并展开本次毕业设计课题的研究,以指导后期的系统分析与设计,并为系统用户与开发者提供参考标准。
本文档力求准确,清晰地表达项目需求与开发过程,以保证开发过程满足项目需求的正确方向进行。
具体项目的确立是建立在各种条件、环境及需求之上的,通常情况下项目的开发与应用,运营的参与者拥有不同的知识结构体系,因此,所有人员对项目的理解程度很大程度上决定的项目的建设成败。
因此,需要对系统之间的关系进行
详细的设计分析说明。
3、系统设计
(1)系统开发设计思想
在现有的技术水平和软硬件环境下,充分利用现有的资源,开发一个实用的班级信息管理系统,从而提高班级事务的管理效率,节省班干的管理时间和精力等。
为了便于系统各功能的组合以及修改,本系统将采用模块化程序设计方法,并且该系统的设计应尽量符合本班级信息的管理工作,尽量满足日常的管理需要,同时满足直观、方便、实用、安全等要求。
最后,该系统还应具有能够及时根据用户需求进行数据的添加、删除、修改等维护操作。
(2)系统开发和运行环境的选择
开发工具:
vc++6.0及以上版本
运行环境:
Windows2000、Windows2003或WindowsXP等操作系统。
(3)系统功能分析
本系统主要包括学生个人信息、学生学习情况、学生生活情况三个部分
1)“学生个人信息”:
主要是记录班里每位同学的个人信息(包括班里的团员情况),该模块设有查询、修改、添加和删除的功能。
2)“学生学习情况”:
主要是记录每个学期的学生学习成绩情况以及其他一些有关学习方面的事项,该部分还包括了学生的上课出勤情况。
该模块主要设有成绩查询,考勤查询,课程查询、信息维护等功能。
3)“学生生活情况”:
主要是记录每个学期所进行的一些班级活动等,该模块主要是具备查阅的功能。
4详细设计
4.1主函数
主函数一般设计得比较简单,只提供输入、处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
其流程图如图1-1所示。
图4-1主函数流程图
4.2.各功能模块设计
4.2.1输入模块
单一看各数据信息,学号、姓名,性别,出生年月,电话,地址是字符型,可以采用字符型数组;年龄为整形,采用整形。
数据信息存放在文件中,一条记录对应一个学生,既符合习惯也方便信息管理。
参照上一章实例这里的学生信息可以采用结构体的形式,把学生的学号、姓名、性别等作为结构体成员,如果要存放若干学生信息就用结构体数组。
4-2-1输入模块流程图
4.2.2增加及插入模块
该模块的功能是用户需要增加新的学生记录,从键盘输入并逐条写到原来的输入文件中,注意采用追加而不是覆盖的方式。
插入模块功能是要求插入一条学生记录,插入后使得记录按照学生学号有序排列。
增加模块流程图如图1-3所示。
图4-2-2增加模块流程图
4-2-3插入模块流程图
4.2.3修改模块
该模块的功能是显示所有的学生信息。
显示完所有记录后,用户输入要修改学生的学号,根据学好查找学生记录,并提示修改该记录的哪部分信息,是学号、姓名还是所有信息都修改,根据用户的选择修改相应的信息。
修改模块流程图如图所示
4.2.4删除模块
该模块的功能是与修改模块一样先显示所有学生信息。
显示完所有记录后,用户输入要删除学生的学号,根据学号查找学生记录并删除。
删除记录时,一般的做法是将数据从文件中删除,删除位置后面的记录往前移,当数据结构不是单一变量、记录数量较多时要考虑率。
图4-2-4删除模块流程图
4.2.5查询模块
该模块的功能是根据输入的学生姓名查询对应的记录,找到以后,可以进行增加、删
除或修改信息的操作。
流程图如图所示:
图4-2-5查询模块流程图
}
}
}
5.程序执行后的部分效果
5.1项目主菜单效果图
5.2增加学生记录效果图
5.3显示学生记录效果图
5.4查询学生记录效果图
5.5修改学生记录效果图
结语
通过本次课程设计,是我对c++语言有了新的认识,同时更加觉得c++语言的重要性。
通过这学期对c++语言的学习,感受到了c++语言的难度,同时也懂得了c++语言在以后学习中的重要性,同时找到了自己很多不足之处和不懂得地方。
C++语言是入门很难的课程,需要掌握每个细节,这样才能打下牢固的基础,这需要我们经常把老师讲的笔记复习和记忆,课余时间也可以阅读其他关于c++语言的书籍和编程方面的书籍,加强对其的认识,同时还可以增强自己的知识面。
C++语言是一门比较难学的科目,也是相当重要的编程语言。
编写是需要注意的有很多,很多细节需要我们去注意比如说:
类名的大小写、类结束后分号结束等等。
完成这个编程时出现了许多错误,其中得到老师和同学们很多的帮助,以后会更加努力的学习,加强对其的认识和了解。
谢辞
通过这学期的学习,让我对c++语言有了初步的了解,认识到了它的重要性,同时也在此次编程中发现了自己的诸多不足。
没有困难就没有动力,在这学期中,王磊老师秉着认真负责的态度教我们这门课程,帮助同学讲解不理解的地方,使我们能更好的学习这门课程,您的认真负责使我们学到了很多。
希望以后还有机会跟着王磊老师继续学习这门课程。
谢谢老师这学期以来的辛苦教学。
参考文献
[1][美]WalterSavitch著,周靖译,C++面向对象程序设计——基础、数据结构与编程,清华大学出版社
[2][美]BrianOverland著,董梁等译,C++语言命令详解,电子工业出版社
[3][美]AIStevens著,林瑶等译,C++大学自学教程,电子工业出版社
[4]刁成嘉主编,面向对象C++程序设计,机械工业出版社
[5]刘瑞新主编,曹建春,沈淑娟,张连堂等编著,VisualC++面向对象程序设计程,机械工业出版社
[6]陈文宇,张松梅编著,C++语言教程,电子科技大学出版社
附录A源程序代码如下
主函数
1.#include
#include"student.h"
#include"dbstudent.h"
voidmain()
{
intchoice=-9999;
Dbstudents;
while(choice!
=0)
{
cout<<"\n\n\t\t****学生信息管理系统****\n\n";
cout<<"\t\t****1添加学生信息****\n";
cout<<"\t\t****2显示学生信息****\n";
cout<<"\t\t****3查询学生信息****\n";
cout<<"\t\t****4修改学生信息****\n";
cout<<"\t\t****5删除一个信息****\n";
cout<<"\t\t****6删除全部信息****\n";
cout<<"\t\t****0退出系统****\n";
cout<<"请选择所需要的操作:
";
cin>>choice;
switch(choice)
{
case1:
s.addstudent();
break;
case2:
s.display();
break;
case3:
s.query();
break;
case4:
s.modifystudent();
break;
case5:
s.deletestudent();
break;
case6:
s.clear();
break;
case0:
break;
default:
break;
};
}
学生头文件
classStudent
{
private:
intnum;
charname[10];
charsex;
intage;
inttag;//定义一个标志位,0:
未删除1:
已经删除
public:
//写出set和get函数,和其他的函数
voidsetnum(intnum);
voidsetname(charname[]);
voidsetsex(charsex);
voidsetage(intage);
voidsettag();//此处不需要参数,写在具体的函数体内,这样,用户不知道。
//注意:
get函数是有返回值类型的
intgetnum();
char*getname();//一定不能写成:
chargetname();
chargetsex();
intgetage();
intgettag();
//打印函数
voiddisplay();
//增加一个学生新信息
voidaddstudent(intnum,charname[],charsex,intage);
//删除一个学生信息
voiddeletestudent();
};
创建一个长度为100的对象数组
classDbstudent
{
private:
inttop;//数组下标指示器,
Studentstudent[100];
public:
Dbstudent();
~Dbstudent();
voidaddstudent();//添加学生
voiddisplay();//打印,显示
voidclear();//删除数据库中所有的信息
voiddeletestudent();//按照给定的学号进行单个的删除
voidquery();//查询模块
Student*querybynum(intnum);//根据指定的学号进行查找
Student*querybyname(charname[]);//
voidmodifystudent();
};
/*student.cpp是对student.h这个接口的具体的函数实现*/
#include"student.h"
#include
#include
#include
//写出set和get函数,和其他的函数
voidStudent:
:
setnum(intnum)
{
this->num=num;
}
voidStudent:
:
setname(charname[])
{
//this->name=name;//error
strcpy(this->name,name);
}
voidStudent:
:
setsex(charsex)
{
this->sex=sex;
}
voidStudent:
:
setage(intage)
{
this->age=age;
}
voidStudent:
:
settag()//此处不需要参数,写在具体的函数体内,这样,用户不知道。
{
this->tag=0;
}
//注意:
get函数是有返回值类型的
intStudent:
:
getnum()
{
returnnum;
}
char*Student:
:
getname()//一定不能写成:
chargetname();
{
returnname;
}
charStudent:
:
getsex()
{
returnsex;
}
intStudent:
:
getage()
{
returnage;
}
intStudent:
:
gettag()
{
returntag;
}
//打印函数
voidStudent:
:
display()
{
cout< cout<<"-------------------------------"< } //增加一个学生新信息 voidStudent: : addstudent(intnum,charname[],charsex,intage) { this->num=num; strcpy(this->name,name); this->sex=sex; this->age=age; this->tag=0; } //删除一个学生信息 voidStudent: : deletestudent() { this->tag=1; } /*dbstudent.cpp是对dbstudent.h这个接口的具体的函数实现构造函数*/ Dbstudent: : Dbstudent() { //构造函数负责从磁盘中读取数据,放置到对象数组中(内存) top=-1; Students;//定义一个临时的对象 fstreamfile("student.txt",ios: : in); while (1) { file.read((char*)&s,sizeof(s)); if(! file)break;//如果读取为空,则终止 top++; student[top]=s; } file.close();//文件使用完毕后,一定要及时关闭 } 析构函数 Dbstudent: : ~Dbstudent() { //析构函数负责在退出程序时,把当前编辑的内容保存到磁盘上。 fstreamfile("student.txt",ios: : out)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 学生 信息管理 系统