C++学生信息管理系统课程设计报告.docx
- 文档编号:9957827
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:20
- 大小:152.32KB
C++学生信息管理系统课程设计报告.docx
《C++学生信息管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《C++学生信息管理系统课程设计报告.docx(20页珍藏版)》请在冰点文库上搜索。
C++学生信息管理系统课程设计报告
一、课程设计目的
1.通过C++课程设计,使学生能够将学到的面向对象的设计思想运用在具体的工作和学习中,加深对类和对象的理解,要求学生对生活中许多具体的事物抽象出类,并掌握继承和派生类、基类、虚函数和多态的概念。
2.用所学的C++语言知识及其编程方法,包括类和对象、继承与多态等面向对象的基本思想和方法以及文件流的基本操作等内容。
通过布置具有一定难度的实际程序设计项目,要求学生独立完成所布置项目。
在分析设计过程中,要求学生养成良好的编程习惯,学会分析解决简单的实际问题,学会C++编程环境(VC++)的实际调试技巧和方法,要求学生在教师的指导下逐步完成应用程序的分析与设计过程。
二、课程设计的内容
(一)、题目:
学生信息管理系统
(二)、目的与要求
1.目的:
(1)基本掌握面向对象程序设计的基本思路和方法;
(2)达到熟练掌握C++语言的基本知识和技能;
(3)能够利用所学的基本知识和技能,解决简单的程序设计问题
2.要求
基本要求:
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统中至少要定义三个类,每个类中要有各自的属性和方法;
(4)在系统的设计中,至少要用到面向对象的一种机制。
创新要求:
在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
3.信息描述
学生信息:
学号、姓名、系别、班级和所选科目及各科成绩等。
4.功能描述
(1)使用继承的方法构造3个类(如人员类---基类,普通学生类和管理员类----派生类)使用相应的对象放置相应信息
(2)编写同名的display()成员函数,用来输出相应的内容
(3)录入学生信息并保存
(4)按不同类别输出学生信息(如按性别、年龄等)
(5)查询学生信息(以一种或多种方式,如按名字、学号等检索)
(6)修改学生信息并保存
(7)删除学生信息
(8)计算学生的平均成绩
三、设计说明
总体结构我们采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理。
也可根据自己对题目的理解增加新的功能模块。
系统以菜单界面方式工作,运行界面友好,演示程序以用户和计算机的对话方式进行。
首先,看题目要求,每一条记录包括一个学生姓名,班级、性别,院系和各科成绩。
同时,应具备以下功能:
(一)管理员登陆:
允许管理员登陆并包含如下内容:
1、添加信息:
可以完成对一个学生的信息记录的输入。
2、查看所有信息:
将所有的学生信息显示出来。
3、删除信息:
对指定姓名的学生的信息进行删除。
4、查询信息:
以姓名方式,显示出和输入名字相符的学生信息。
5、对信息进行存盘:
上述操作的结果存入文件中。
6、关闭程序:
退出学生信息管理系统。
(二)学生登陆:
允许学生登陆并包含如下内容:
1、查看所有信息:
将所有的学生信息显示出来。
2、查询信息:
以姓名方式,显示出和输入名字相符的学生信息。
3、关闭程序:
退出学生信息管理系统。
四、程序流程图
各功能模块的实现流程图:
1、添加信息
2查看所有信息
3、删除信息
4、查询信息
五、功能模块图
六、类设计
由于学生的姓名、班级、性别、院系及各科成绩是学生共有的,可以抽取出来形成一个类,这里定义为info类。
因为在存储的时候,每个学生的信息都以一个节点的形式存储,所以我们再定义一个node类,这个类是info类的派生类。
七、各功能模块效果图
添加信息
查看所有信息
删除信息
查询信息
八、程序代码
============================================================test.h
============================================================
#include
usingnamespacestd;
classinfo
{
public:
stringNAME;
stringGRADE;
stringSEX;
stringYARD;
stringC;
stringENGLISH;
stringMATH;
};
classnode:
virtualpublicinfo
{
public:
node*left;
node*right;
node();
voidadd(node*n);
node*del1();
voidshow();};
node*del1(node&head,stringname);
voidinit(node&head,stringname,stringgrade,stringsex,stringyard,stringc,stringenglish,stringmath);
voiddel(node*n);
voidenter(node&head);
voiddisplay(node&head);
voidsearch(node&head,stringname);
voidsave(node&head);
voidmenu1(node&head);
voidmenu2(node&head);
============================================================
test.cpp
============================================================
#include
#include
#include
#include
#include"conio.h"
#include"test.h"
usingnamespacestd;
node:
:
node()
{
left=0,right=0;
}
voidnode:
:
add(node*n)
{
n->right=right;
n->left=this;
if(right!
=NULL)right->left=n;
right=n;
}
node*node:
:
del1()
{
if(left!
=0)left->right=right;
if(right!
=0)right->left=left;
return0;
}
voidnode:
:
show()
{
cout<<"============================"< cout<<"姓名: "< cout<<"班级: "< cout<<"性别: "< cout<<"院系: "< cout<<"成绩如下: "< cout<<"C语言: "< cout<<"英语: "< cout<<"数学: "< cout<<"============================="; cout< } node*del1(node&head,stringname) { for(node*i=head.right;i! =0;i=i->right) { if(i->NAME==name) { returni; } } return0; } voidinit(node&head,stringname,stringgrade,stringsex,stringyard,stringc,stringenglish,stringmath) { node*n; n=newnode; n->NAME=name; n->GRADE=grade; n->SEX=sex; n->YARD=yard; n->C=c; n->ENGLISH=english; n->MATH=math; head.add(n); } voiddel(node*n) { if(n! =0)n->del1(); deleten; } voidenter(node&head) { node*n; n=newnode; cout<<"输入姓名、班级、性别、院系、成绩: "< cout<<"姓名: "; cin>>n->NAME; cout<<"班级: "; cin>>n->GRADE; cout<<"性别: "; cin>>n->SEX; cout<<"院系: "; cin>>n->YARD; cout<<"成绩: "< cout<<"C语言: "; cin>>n->C; cout<<"英语: "; cin>>n->ENGLISH; cout<<"数学: "; cin>>n->MATH; cout<<"====输入完成========"< head.add(n); } voiddisplay(node&head) { for(node*i=head.right;i! =0;i=i->right) { i->show(); } } voidsearch(node&head,stringname) { for(node*i=head.right;i! =0;i=i->right) { if(i->NAME==name) { if(i! =0) { i->show(); } } } } voidsave(node&head) { ofstreamfile("data.txt"); file<<"姓名"<<"\t"<<"班级"<<"\t"<<"性别"<<"\t"<<"院系"<<"\t"<<"C"<<"\t"<<"英语"<<"\t"<<"数学"<<"\n"< for(node*i=head.right;i! =0;i=i->right) { file< } } voidmenu1(node&head) { boolb=false; stringa; system("cls"); cout<<"==========学生信息管理=========="< cout<<"1.添加信息"< cout<<"2.查看所有信息"< cout<<"3.删除信息"< cout<<"4.查询信息"< cout<<"5.对信息进行存盘"< cout<<"6.关闭程序"< cout<<"================================="< cout< cout<<"请选择操作指令: "< while(b==false) { cin>>a; if(a=="2") { cout<<"数据如下: "< display(head); getch(); menu1(head); } elseif(a=="3") { cout<<"请输入需要删除者的姓名: "; cin>>a; while (1) { if(del1(head,a)! =0) { del(del1(head,a)); } else break; } cout<<"删除成功! "< getch(); menu1(head); } elseif(a=="1") { enter(head); getch(); menu1(head); } elseif(a=="4") { cout<<"输入名字: "; cin>>a; search(head,a); cout<<"=====查找成功====="< getch(); menu1(head); } elseif(a=="5") { save(head); cout<<"=====保存成功====="< getch(); menu1(head); } elseif(a=="6") { break; } else { cout<<"无效指令,请重新输入: "; } } exit (1); } voidmenu2(node&head) { boolb=false; stringa; cout<<"==========学生信息管理=========="< cout<<"1.查看所有信息"< cout<<"2.查询信息"< cout<<"3.关闭程序"< cout<<"================================"< cout< cout<<"请选择操作指令: "< while(b==false) { cin>>a; if(a=="1") { cout<<"数据如下: "< display(head); getch(); system("cls"); menu2(head); } elseif(a=="2") { cout<<"输入名字: "; cin>>a; search(head,a); cout<<"=====查找成功====="< getch(); system("cls"); menu2(head); } elseif(a=="3") { break; } else { cout<<"无效指令,请重新输入: "; } } exit (1); } ============================================================ Main.cpp ============================================================ #include #include #include #include #include"test.h" usingnamespacestd; intpasswd=123; intmain() { system("cls"); nodehead; stringname,grade,sex,yard; stringc,english,math; intflag; intpassword; ifstreamread("data.txt"); if(read) { while(read>>name>>grade>>sex>>yard>>c>>english>>math) { init(head,name,grade,sex,yard,c,english,math); } } cout<<"请选择管理员登陆 (1)或者学生登录 (2): "; cin>>flag; if(flag==1) { cout<<"请输入管理员密码: "; cin>>password; if(password! =passwd) exit(0); } switch(flag) { case1: menu1(head);break; case2: menu2(head);break; default: cout<<"输入错误"< } return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 学生 信息管理 系统 课程设计 报告