学生成绩管理系统.docx
- 文档编号:10321141
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:42
- 大小:129.47KB
学生成绩管理系统.docx
《学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统.docx(42页珍藏版)》请在冰点文库上搜索。
学生成绩管理系统
实验报告
课程名称:
实验题目:
一、实验目的
达到对所学面向对象程序设计知识的一次综合运用,熟练掌握面象对象分析问题、解决问题的方法。
二、实验内容描述
本程序是运用这学期所学的《面向对象程序设计》中所学的理论知识来指导实践,掌握C++语言的基本语法和基本内容,并用C++语言编写学生成绩的管理系统,用户运行程序后进入主界面,可以选择教务处、学生、研究生和退出,教务处可以通过此程序输入公用密码,添加本科生和研究生的各科成绩;本科生和研究生可以通过此程序输入自己的名字和密码查找到自己的成绩并且可以更改自己的密码。
用户在操作过程中,可以随时对当前文件进行保存到文件中,一防止修改的数据丢失,用户操作结束后选择“退出”键退出。
三、类设计及描述
此程序一共有7个类,分别是Base类、Student类、Graduate类、Office类、Menu类、StudentList类和Node类。
Base类和Office类属于基类,Student类和Graduate类继承了Base类。
//fileBase.h
lassBase{
private:
//私有类型只能在基类调用
doublechinese;
doublemath;
doubleenglish;
charpassword[7];
protected:
//保护类型可以在类体系中(基类和子类)
charname[5];
public:
Base(charna[],charpa[],doublech,doublema,doubleen);//构造
intlogon();//登录函数
char*GetNO(){
returnname;
}
char*GetP(){
returnpassword;
}
doubleGetC(){
returnchinese;
}
doubleGetM(){
returnmath;
}
doubleGetE(){
returnenglish;
}
voiddisplay();
voidchange(charna[],charpa[]);
voidrise(charna[],charpa[]);
~Base(){}
};
//fileGraduate.h
classGraduate:
publicBase{
private:
doublekeyan;
public:
Graduate(charna[],charpa[],doublech,doublema,doubleen)
:
Base(na,pa,ch,ma,en){}//构造
voidchazhao();
~Graduate(){}
};
//fileStudent.h
classStudent:
publicBase{
public:
Student(charna[],charpa[],doublech,doublema,doubleen)
:
Base(na,pa,ch,ma,en){}//构造
voiddisplay();
~Student(){}
};
//fileOffice.h
classOffice{
public:
Office(){}
intlogon();
voidtianjian();
~Office(){}
};
//fileMenu.h
lassMenu{
public:
Menu(){};
voidcd1();
voidcd3();
voidcd4();
voidcd5();
voidcd6();
voidcd7();
~Menu(){};
};
//fileStudentList.h
classNode{
public:
Base*acnt;Node*next;
Node(Base*pa){
acnt=pa;next=NULL;
}
~Node(){
if(acnt!
=NULL){
free(acnt);acnt=NULL;
}
}
};
classStudentList{
private:
intsize;Node*first;
public:
StudentList():
size(0),first(NULL){}
voidAdd(Base&a);
voidSearch(characntNO[])const;
voidDisplay()const;
voidGetFromFile();//从文件输出
voidSetToFile();//从文件输入
~StudentList();
};
-first:
Node*
Node类(结点类)
+next:
Node*
四、关键函数描述
Base类
+voiddisplay()显示
+voidchange(charna[],charpa[])修改
+voidrise(charna[],charpa[])增加
~Base()析构
-doubleChinese-doublemath;
-doubleEnglish-charpassword[7];
#charname[5]保护类型
StudentList类(链表类)
+voidAdd(Base&a)增加
+voidSearch(characntNo[])查找
+voidDisplay()显示
+voidGetFromFile()文件输入
+voidSetToFile()文件输出
~StudentList()析构
-intsize
Graduate类(查找)
+voidchazhao()研究生的查找
~Graduate()析构
-doublekeyan
Student类(学生)
voiddisplay()显示
~Student()析构
Office类(教务处)
+voidtianjia()研究生的添加
~Office()析构
1.将数据记录并写到文件中
voidStudentList:
:
GetFromFile()
{
ifstreaminFile("d:
\\test.txt",ios:
:
in);
if(!
inFile){
cout<<"文件不能被打开!
\n";
return;
}
charna[5],pa[7];
doublech,ma,en;
Base*p=NULL;
while(!
inFile.eof()){
inFile>>na>>pa>>ch>>ma>>en;
if(strcmp(na,"over")==0)
break;
p=newBase(na,pa,ch,ma,en);
Add(*p);
}
inFile.close();
}
2.用头插法创建链表,把数据都存入链表中
voidStudentList:
:
Add(Base&a)
{
Node*pN=newNode(&a);
if(first==NULL){
first=pN;
}
else{//头插法
pN->next=first;
first=pN;
}
size++;
}
3.显示函数与查找函数
voidStudentList:
:
Display()const{
for(Node*pN=first;pN!
=NULL;pN=pN->next)
{
(pN->acnt)->display();
}
}
voidStudentList:
:
Search(charname[])const
{
for(Node*pN=first;pN!
=NULL;pN=pN->next)
{
if(strcmp(((pN->acnt)->GetNO()),name)==0){
(pN->acnt)->display();
}
}
4.析构函数
StudentList:
:
~StudentList(){
Node*pN=NULL;
while(first!
=NULL)
{
pN=first;
first=first->next;
free(pN);pN=NULL;
}
}
5.将文件写入函数
voidStudentList:
:
SetToFile()
{
ofstreamoutFile("d:
//test.txt",ios:
:
out);
if(!
outFile){
cout<<"文件不能被打开!
\n";
return;
}
for(Node*pN=first;pN!
=NULL;pN=pN->next)
{
outFile<<(pN->acnt)->GetNO()
<<""<<(pN->acnt)->GetP()
<<""<<(pN->acnt)->GetC()
<<""<<(pN->acnt)->GetM()
<<""<<(pN->acnt)->GetE()
<<"\n";
}
outFile<<"over"<<""<<-1000<<"\n";
outFile.close();
}
五、程序测试/运行的结果
先选择教务处添加成绩,教务处的公共密码是abcdef
选择1,添加信息
选择添加本科生成绩,输入姓名和初试密码123456
也可以选择添加研究生的成绩
添加成功后可以选择返回主菜单或者是继续添加信息
学生可以查到自己的成绩,还可以修改密码
六、实验总结
此次C++实验,在教师的指导下,我学会了如何用C++编写一个简单的应用程序。
首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。
根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握。
理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。
我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。
附录(实验代码)
//fileBase.h
#ifndefBASE_H
#defineBASE_H
#include"iostream"
#include"fstream"
#include"string"
usingnamespacestd;
classBase{
private:
//私有类型只能在基类调用
doublechinese;
doublemath;
doubleenglish;
charpassword[7];
protected:
//保护类型可以在类体系中(基类和子类)
charname[5];
public:
Base(charna[],charpa[],doublech,doublema,doubleen);//构造
intlogon();//登录函数
char*GetNO(){
returnname;
}
char*GetP(){
returnpassword;
}
doubleGetC(){
returnchinese;
}
doubleGetM(){
returnmath;
}
doubleGetE(){
returnenglish;
}
voiddisplay();
voidchange(charna[],charpa[]);
voidrise(charna[],charpa[]);
~Base(){}
};
#endif
//fileBase.cpp
#include"Base.h"
Base:
:
Base(charna[],charpa[],doublech,doublema,doubleen){
strcpy_s(name,na);
strcpy_s(password,pa);
chinese=ch;
math=ma;
english=en;
}
voidBase:
:
display(){
cout<<"语文成绩:
"< "<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统