C++课程设计报告学生信息管理系统文档格式.docx
- 文档编号:21348171
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:23
- 大小:120.04KB
C++课程设计报告学生信息管理系统文档格式.docx
《C++课程设计报告学生信息管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告学生信息管理系统文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
classRecord{//基本信息类
protected:
intnum;
charname[20];
floatscore1;
floatscore2;
floatscore3;
floataverage;
public:
Record(char*R_name="
"
floatsco1=0,floatsco2=0,floatsco3=0);
~Record(){}
intGet_num();
floatGet_score1();
floatGet_score2();
floatGet_score3();
floatGet_average();
char*Getname();
voidCompute_average();
voidInput();
voidOutput();
};
classStudent:
publicRecord{//中学生类
charpatriarch[20];
Student(char*R_name="
floatsco1=0,floatsco2=0,floatsco3=0,char*tea="
);
~Student(){}
classU_student:
publicRecord{//大学生类
charspecialty[20];
U_student(char*R_name="
floatsco1=0,floatsco2=0,floatsco3=0,char*spe="
~U_student(){}
classGraduate:
publicRecord{//研究生类
charmentor[20];
Graduate(char*R_name="
floatsco1=0,floatsco2=0,floatsco3=0,char*men="
~Graduate(){}
classSystem{//系统管理类
RecordA;
StudentB[10];
U_studentC[10];
GraduateD[10];
staticintj1,j2,j3;
voidinfor1();
voidinfor2();
voidinfor3();
voidsave();
voidSearch1(inth,charch[20]);
voidOut_average1(inth,char*name);
voidInterface1();
System();
voidIn_information();
voidSearch();
voidOut_average();
voidInterface();
2.系统管理类的设计
(1)将数据文件中信息读入内存对象数组
当系统启动成功后,系统管理类System的构造函数自动调用函数save,将学生信息从数据文件中读入内存各对象数组中。
每次从数据文件中读取积累大小的一条信息存入基类对象中,并获得这条信息的种类编号,通过学生类别编号可以判定学生的类别,然后将指针指回到这条信息的开头,存入对应的对象数组中。
就拿中学生类来举例子:
基本信息类Record的对象是A,中学生类Student的对象是B【j1】,将数据文件里有关数据读出并存放到对象B【j1】中,有关程序段如下:
fstreamdatafile(fileName,ios:
:
in|ios:
out|ios:
binary);
datafile.read((char*)&
A,sizeof(Record));
while(!
datafile.eof())
{
a=A.Get_num();
switch(a){
case1:
{
datafile.seekp(-1*sizeof(classRecord),ios:
cur);
datafile.read((char*)&
B[j1],sizeof(Student));
j1++;
break;
}
}
(2)信息的输入
信息的输入功能由成员函数In_information来完成,它根据要输入的学生类别分别调用对应的学生信息输入功能函数来完成本类学生的输入。
有3个类别的学生信息输入函数:
Voidinfor1();
//输入中学生类对象数据
Voidinfor2();
//输入大学生类对象数据
Voidinfor3();
//输入研究生类对象数据
下面以infor1为例说明一条学生信息输入的实现过程:
voidSystem:
infor1()
{StudentA;
fstreamdatafile(fileName,ios:
datafile.seekp(0,ios:
end);
A.Input();
datafile.write((char*)&
A,sizeof(classStudent));
B[j1]=A;
datafile.close();
}
(3)信息的查询
信息查询功能有成员函数Search来完成。
如查询中学生信息的程序段如下:
if(strcmp(ch,B[s].Getname())==0)
B[s].Output();
cout<
<
"
\t\t\t*************************"
endl;
found=1;
}
(4)平均成绩计算和显示
平均成绩的计算和显示也是按照学生名来进行。
先接收从键盘输入的学生类别编号和学生名,找到后通过调用对象的平均成绩计算函数来计算平均成绩并显示,以中学生的程序段为例:
if(strcmp(name,B[s].Getname())==0)
B[s].Compute_average();
average=B[s].Get_average();
(5)界面设计和实现
程序运行主要由System类中的Interface来完成。
程序段如下:
Interface()
{intrev;
cout<
\t\t***************欢迎使用"
;
***************"
\t\t*********小型学生信息管理系统"
*************"
\t\t1.输入学生信息"
cout<
\t\t2.查询学生信息"
\t\t3.计算平均成绩"
\t\t4.退出"
\t\t请您选择(1-4):
cin>
>
rev;
switch(rev){
case1:
In_information();
break;
case2:
Search();
case3:
Out_average();
case4:
exit(0);
}
三.系统实现
完整程序如下:
classRecord{
publicRecord{
classSystem{
//Record.cpp
#include<
iostream>
string>
fstream>
#include"
Record.h"
usingnamespacestd;
#defineN30
charfileName[]="
super.dat"
Record:
Record(char*R_name,floatsco1,floatsco2,floatsco3)
{
strcpy(name,R_name);
score1=sco1;
score2=sco2;
score3=sco3;
intRecord:
Get_num()
{returnnum;
floatRecord:
Get_score1()
{returnscore1;
Get_score2()
{returnscore2;
Get_score3()
{returnscore3;
Get_average()
{returnaverage;
char*Record:
Getname()
{returnname;
voidRecord:
Compute_average()
{average=(score1+score2+score3)/3;
Input()
{cout<
\t\t学生名:
name;
\t\t成绩1:
score1;
\t\t成绩2:
score2;
\t\t成绩3:
score3;
Output()
{cout<
\t\t所要查看的学生信息:
\t\t学生类别号:
num<
name<
\t\t成绩1:
score1<
\t\t成绩2:
score2<
\t\t成绩3:
score3<
Student:
Student(char*R_name,floatsco1,floatsco2,floatsco3,char*tea):
Record(R_name,sco1,sco2,sco3)
{num=1;
strcpy(patriarch,tea);
voidStudent:
{Record:
Input();
\t\t家长:
patriarch;
Output();
patriarch<
U_student:
U_student(char*R_name,floatsco1,floatsco2,floatsco3,char*spe):
{num=2;
strcpy(specialty,spe);
voidU_student:
\t\t专业:
specialty;
specialty<
Graduate:
Graduate(char*R_name,floatsco1,floatsco2,floatsco3,char*men):
{num=4;
strcpy(mentor,men);
voidGraduate:
\t\t导师:
mentor;
mentor<
intSystem:
j1=0;
j2=0;
j3=0;
System:
System()
{save();
voidSystem:
Interface1()
\n\n\n"
\t\t*******按学生类别进行管理**********"
\t\t*********学生类别选择*******"
\t\t1.中学生类"
\t\t2.大学生类"
\t\t3.研究生类"
\t\t请您选择学生类别:
In_information()
{intrev1;
intagain=1;
chart;
while(again)
{Interface1();
rev1;
switch(rev1){
infor1();
break;
case2:
infor2();
case3:
infor3();
case4:
Interface();
default:
\t\t\t没有此类学生!
continue;
cout<
\t\t\t信息存储成功!
\t\t\t是否继续输入(y/n)?
cin>
t;
if(!
(t=='
Y'
||t=='
y'
))
again=0;
Interface();
infor2()
{U_studentA;
A,sizeof(classU_student));
C[j2]=A;
infor3()
{GraduateA;
A,sizeof(classGraduate));
D[j3]=A;
save()
{inta;
C[j2],sizeof(U_student));
j2++;
}
datafile.seekp(-1*sizeof(c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 报告 学生 信息管理 系统