要求用C++语言编写学生成绩管理系统,要求能进行添加删除修改输入输出等的操作,并能使用面相对像原理对此系统进行实现。 学生成绩管理系统分析:
学生成绩管理系统分为8个模块,分别是:添加学生信息,输出学生成绩,查找学生成绩,修改学生成绩,删除学生成绩,学生成绩排序,保存数据到文件和读取文件中学生成绩的模块。
学生成绩管理系统结构:
Main()函数 Menu()函数 Student() Add() Output() Find() Modify() 公有函数 Deleted() Sort() Save() Load() 重载符号 Student类 私有成员: char name[20]; char sex[5]; int number; int score[3]; int total; int average;
.. ..
各个子函数功能及其流程:
1. 首先定义一个学生类Class Student;并定义其各个私有变量和公有函数
Class Student 私有变量 Class add output find delete modify save load 重载
2. Student();构造函数,用于初始化学生类中的各个变量并记录 3. Add();函数:用于添加学生信息的函数包括学号姓名成绩等的内容
主函数main() 菜单函数menu() 选择菜单中的选项添加学生信息 调用Add()函数 调用重载<<并添加信息
4. Output();函数:用于输出学生信息,包括学号姓名各科及总分平均成绩
主函数main() 菜单函数menu() 选择菜单中的选项输出学生信息 调用Output()函数 输出学生信息
.. ..
5. Find();函数:用于查找学生各项信息。
主函数main() 菜单函数menu() 选择菜单中的选项查找学生信息 调用find()函数 要求输入学生姓名 查找并输出学生信息
6. modify();函数:用于修改学生各项信息。
主函数main() 菜单函数menu() 选择菜单中的选项修改学生信息 调用modify()函数 要求输入学生姓名 修改并保存学生信息
7. delete();函数:用于删除学生信息。
.. ..
主函数main() 菜单函数menu() 选择菜单中的选项删除学生信息 调用delete()函数 要求输入学生姓名 删除学生信息
8.sort();函数:对学生各项信息进行排序操作。
主函数main() 菜单函数menu() 选择菜单中的选项学生信息排序 调用Sort()函数 完成排序操作
8. save()和load();函数:将学生信息保存到文件中,并在需要的时候调用该文件将
其中的学生信息显示出来
.. ..
主函数main() 菜单函数menu() 选择菜单中的选项选保存或读取 调用load()函数 调用save()函数 按要求输入文件名 文件读取成功 文件保存成功
9.“=”“<<”“>>”符号的重载:在各个函数处理数据过程中对这些的调用处理 函数源代码:
此函数源代码在VisualC++6.0环境下编译通过。具体如下: #include\"iostream.h\" #include\"conio.h\" #include\"iomanip.h\" #include\"stdio.h\" #include\"string.h\" #include\"stdlib.h\" #include\"fstream.h\"
class student //定义学生类 {
private://定义学生类的私有成员 char name[20]; //名字 char sex[5]; //性别 int number; //学号 int score[3]; //分数 int total; //总分 int average; //平均分 public: //公有成员
student(); //学生构造函数,用于学生数据的初始化及保存学生数据 void add(); //添加学生信息函数 void output(); //输出学生信息函数 void find(); //查找学生数据函数 void modify(); //修改学生信息函数 void deleted(); //删除学生信息函数 void sort(); //排序函数
void save(); //保存学生信息并写入文件函数 void load (); //打开写有学生信息的文件的函数
.. ..
student & operator=(student & T); //重载“=”符号
friend istream & operator >> (istream & scin, student &s1); //重载“>>”符号 friend ostream & operator << (ostream & scout, student &s2); //重载“>>”符号 };
student stu[100]; int n=0;
void student::add() //添加函数 {
char flag='Y';
while(toupper(flag)=='Y') {
cin>>stu[n]; n++;
cout<<\" 要继续添加吗(y/n)\"; cin>>flag;
if(toupper(flag)!='Y') {
if(toupper(flag)=='N') {
break; } else {
cout<<\"错误,请重输:\"; cin>>flag; } } } }
void student::output() //输出函数 {
if(n!=0) {
cout<<\"
---------------------------------------------------------------------------\\n\"; cout<<\" number name sex math C++ English total average\\n\"; cout<<\"
--------------------------------------------------------------------------- \\n\";
for(int t=0;t } } getch(); } void student::find() //查找函数 { int f3=0; char n1[20]; student temp; cout<<\" 输入你要查找的人的姓名: \"; cin>>n1; for(int j=0;j temp=stu[j]; f3=1; } } if(f3==0) cout<<\"对不起,没有你要查找的学生成绩\"< cout<<\" ---------------------------------------------------------------------------\\n\"; cout<<\" number name sex math C++ English total average\\n\"; cout<<\" --------------------------------------------------------------------------- \\n\"; cout<<\" \"< void student::modify() //修改函数 { int f4=0; int t; char n2[50]; cout<<\" 输入你要修改的人的姓名:\"; cin>>n2; for(int j=0;j { if(strcmp(stu[j].name,n2)==0) { t=j; f4=1; } } if(f4==0) cout<<\"对不起,没有你要修改的学生成绩\"< cout<< \" 数学成绩: \"; cin>>stu[t].score[0]; cout<< \" C++成绩: \"; cin>>stu[t].score[1]; cout<< \" 英语成绩: \"; cin>>stu[t].score[2]; stu[t].total=stu[t].score[0]+stu[t].score[1]+stu[t].score[2]; stu[t].average=stu[t].total/3; cout<<\" 修改成功 !\"< void student::deleted() //删除函数 { char n3[20]; bool f5=0; char c; do{ cout<<\"请输入您要删除的学生姓名:\"; cin>>n3; for(int i=0;i f5=1; n--; do{ .. .. stu[i]=stu[i+1]; i++; }while(i<=n); } } if(f5==0) cout<<\"您要求删除的对象本来就不存在!\"; cout<<\"要继续删除吗?(y/n)\"< if(toupper(c)!='Y'&&toupper(c)!='N') { cout<<\"输入指令错误!请重新输入Y或N!\"< }while(toupper(c)=='Y'); getch(); } void student::sort() //排序函数 { int i,j,k; student s3; for( i=0;i<(n-1);i++) { k=i; for(j=i+1;j s3=stu[i]; stu[i]=stu[k]; stu[k]=s3; } } cout<<\"\\n\\n排序成功!\\n\\n\"; } void student::save() //保存函数 { char filename1[20]; cout<<\"请输入文件名: \"; cin>>filename1; ofstream fout(filename1,ios::app); .. .. if(!fout)cout<<\"文件不能打开!\"< void student::load() //读取函数 { char filename2[20]; cout<<\"请输入你要读取的文件名: \"; cin>>filename2; ifstream fin(filename2,ios::in); if(!fin)cout<<\"文件打不开 !\"< if(fin.eof())break; fin>>stu[i].name>>stu[i].sex>>stu[i].number >>stu[i].score[0]>>stu[i].score[1]>>stu[i].score[2]>>stu[i].total>>stu[i].average; } cout<<\"文件已读取成功!\"< student & student::operator=(student & T) //重载= { strcpy(name,T.name); strcpy(sex,T.sex); number=T.number; for(int i=0;i<3;i++)score[i]=T.score[i]; total=T.total; average=T.average; return ( * this ); } .. .. ostream & operator << (ostream & scout, student &s2) //重载<< { cout< cout<< \" \学号:\"; scin>>s1.number; cout<< \" \姓名:\"; scin>>s1.name; cout<< \" \性别 :\"; scin>>s1.sex; cout<< \" \数学成绩:\"; scin>>s1.score[0]; cout<< \" \C++成绩:\"; scin>>s1.score[1]; cout<< \" \英语成绩:\"; scin>>s1.score[2]; s1.total=s1.score[0]+s1.score[1]+s1.score[2]; s1.average=s1.total/3; return scin; } student::student() //构造函数 { strcpy(name,\" \"); strcpy(sex,\" \"); number=0; for(int i=0;i<3;i++)score[i]=0; total=0; average=0; } void menu() //菜单函数 { cout<<\"\\n\\n\\n学生成绩管理系统主菜单 \"< cout<<\"6.学生信息排序 \"< int main() //主函数 { int choose; student s; do{ menu(); cin>>choose; switch(choose) { case 1: s.add(); break; case 2: s.output(); break; case 3: s.find(); break; case 4: s.modify(); break; case 5: s.deleted(); break; case 6: s.sort(); break; case 7: s.save(); break; case 8: s.load(); break; default : break; } }while(choose!=0); } .. .. 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务