当前位置:编程学习 > C/C++ >>

用C++编写 学生成绩管理程序

功能设计要求

   设计要求实现的功能较多,所以将它们分为几个部分叙述。

   1.建立文件

   (1)可以使用默认文件名或指定文件名将记录存储到文件;

   (2)文件保存成功返回0,失败返回-1;

   (3)设置保存标志savedTag作为是否已对记录进行存储操作的信息;

   (4)写同名文件将覆盖原来文件的内容;

   2.增加学生记录

   (1)可在已有记录后面追加新的记录;

   (2)可以随时用它增加新的记录,它们仅保存在结构数组中;

   (3)可以将一个文件读入,追加在已有记录之后;

   (4)如果已经采取用文件追加的方式,在没有保存到文件之前,将继续保持文件追加状态,以便实现连续文件追加操作方式;

   (5)如果没有记录存在,给出提示信息。

  3.新建学生信息文件

   (1)用来重新建立学生信息记录;

   (2)如果已经有记录存在,可以覆盖原记录或者在原记录后面追加,也可以将原有记录信息保存到一个指定文件,然后重新建立记录;

   (3)给出相应的提示信息。

  4.显示记录

   (1)如果没有记录可供显示,给出提示信息;

(2)可以随时显示内存中的记录;

(3)显示表头。

5.文件存储

(1)可以按默认名字或指定名字存储记录文件;

(2)存储成功返回0,否则返回-1;

(3)更新存储标志。

6.读取文件

(1)可以按默认名字或指定名字将记录文件读入内存;

(2)读取成功返回0,否则返回-1;

(3)可以将指定或默认文件追加到现有记录的尾部;

(4)可以将文件连续追加到现有记录并更新记录的名次。

(5)更新存储标志。

7.删除记录

(1)可以按“学号”、“姓名”或“名次”方式删除记录;

(2)给出将被删除记录的信息,经确认后再删除;

(3)如果已经是空表,删除时应给出提示信息并返回主菜单;

(4)如果没有要删除的信息,输出没有找到的信息;

(5)应该更新其他记录的名次;

(6)删除操作仅限于内存,只有执行存记录时,才能覆盖原记录;

(7)更新存储标志。

8.修改记录

(1)可以按“学号”、“姓名”或“名次”方式修改记录内容;

(2)给出将被修改记录的信息,经确认后进行修改;

(3)如果已经是空表,应给出提示信息并返回主菜单;

(4)如果没有找到需要修改的信息,输出提示信息;

(5)应该同时更新其他记录的名次;

(6)修改操作仅限于内存,只有进行存储操作时,才能覆盖原记录;

(7)更新存储标志。

9.查询记录

(1)可以按“学号”、“姓名”或“名次”方式查询记录;

(2)能给出查询记录的信息;

(3)如果查询的信息不存在,输出提示信息。

10.对记录进行排序

    (1)可以按学号进行升序或降序排序;

    (2)可以按名称进行升序和降序排序;

    (3)可以按名次进行升序和降序排序;

    (4)如果属于选择错误,可以立即退出排序;

    (5)更新存储标志。

 11.头文件

    (1)使用条件编译定义头文件;

    (2)函数原型声明;

    (3)数据结构及包含文件;

12.测试程序

    (1)应列出测试大纲对程序进行测试;

    (2)应保证测试用例测试到程序的各种边缘情况是基本要求,希望通过对本章设计的理解,重新考虑如何改进设计。

答案:#include<iostream>
using namespace std;
class student
{private:
  int number;
  char name[20];
  char 易做图;
  float yingyu;
  float yuwen;
  float shuxue;
  int mingci;
 public:
  student(){number=0;strcmp(name," ");易做图=' ';yingyu=0;yuwen=0;shuxue=0;mingci=0;}
  void chushihua(){number=0;strcmp(name," ");易做图=' ';yingyu=0;yuwen=0;shuxue=0;mingci=0;}
  void SetNumber(int number_){number=number_;}
  void SetName(char name_[]){strcpy(name,name_);}
  void SetSex(char 易做图_){易做图=易做图_;}
  void SetYingyu(float yingyu_){yingyu=yingyu_;}
  void SetYuwen(float yuwen_){yuwen=yuwen_;}
  void SetShuxue(float shuxue_){shuxue=shuxue_;}
  void SetMingci(int mingci_){mingci=mingci_;}
  float GetZongchengji(){return yuwen+yuwen+shuxue;}
  int GetNumber(){return number;}
  float GetYingyu(){return yingyu;}
  float GetYuwen(){return yuwen;}
  float GetShuxue(){return shuxue;}
  char GetSex(){return 易做图;}
  char *GetName(){return name;}
  void ShowNumber(){cout<<"编号:"<<number;}
  void ShowName(){cout<<"  姓名:"<<name;}
  void ShowSex(){cout<<"  性别:"<<易做图;}
  void ShowYingyu(){cout<<"  英语:"<<yingyu;}
  void ShowYuwen(){cout<<"  语文:"<<yuwen;}
  void ShowShuxue(){cout<<"  数学:"<<shuxue;}
  void ShowMingci(){cout<<"  班级名次:"<<mingci<<endl;}
};
student stu[30];
int jiashuxueshengxinxi()
{int number_;
 char name_[20];
 char 易做图_;
 int i;
 float yingyu_;
 float yuwen_;
 float shuxue_;
 for(i=0;i<30;i++)
 {if(stu[i].GetNumber()==0)
 {cout<<"请输入学生编号:";
  cin>>number_;
  getchar();
  stu[i].SetNumber(number_);
  cout<<"请输入学生姓名:";
     cin>>name_;
  getchar();
     stu[i].SetName(name_);
 loop:
     cout<<"请输入学生性别(男-M,女-W):";
     cin>>易做图_;
  getchar();
     if((易做图_=='M')||(易做图_=='W')) stu[i].SetSex(易做图_);
     else {goto loop;}
     cout<<"请输入学生的英语成绩:";
     cin>>yingyu_;
  getchar();
     stu[i].SetYingyu(yingyu_);
     cout<<"请输入学生的语文成绩:";
     cin>>yuwen_;
  getchar();
     stu[i].SetYuwen(yuwen_);
     cout<<"请输入学生的数学成绩:";
  cin>>shuxue_;
  getchar();
     stu[i].SetShuxue(shuxue_);
     cout<<"该学生信息录入成功!"<<endl;
  return 0;
 }
 }
 return 0;
}
int shanchuxueshengxinxi()
{char name_[20];
 int i;
 cout<<"请输入要删除的学生姓名:";
 cin>>name_;
 for(i=0;i<30;i++)
 {if(strcmp(stu[i].GetName(),name_)==0)
 {stu[i].chushihua();
  cout<<"删除学生信息成功!"<<endl;
     return 0;
 }
 }
 cout<<"对不起,没有此名字的学生!"<<endl;
 return 0;
}
int jiansuoxueshengxinxi()
{int number_;
 char name_[20];
 char c;
 int i;
 cout<<"1.按编号检索;\n"
  <<"2.按姓名检索.\n"
  <<"请输入序列号:";
 cin>>c;
 getchar();
 switch(c)
 {case '1':cout<<"请输入编号";
   cin>>number_;
   for(i=0;i<30;i++)
    if(number_==stu[i].GetNumber())
   {stu[i].ShowNumber();
       stu[i].ShowName();
       stu[i].ShowSex();
    stu[i].ShowYingyu();
    stu[i].ShowYuwen();
    stu[i].ShowShuxue();
    cout<<"\n";
    return 0;
   }
   cout<<"对不起,没有此编号的学生!"<<endl;  
   break;
  case '2':cout<<"请输入姓名";
   cin>>name_;
   for(i=0;i<30;i++)
    if(strcmp(stu[i].GetName(),name_)==0) 
   {stu[i].ShowNumber();
       stu[i].ShowName();
       stu[i].ShowSex();
    stu[i].ShowYingyu();
    stu[i].ShowYuwen();
    stu[i].ShowShuxue();
    cout<<"\n";
    return 0;
   }
   cout<<"对不起,没有此姓名的学生!"<<endl;  
   break;
 }
 return 0;
}
int xianshiquanbuxueshengdezongchengjihepaiming()
{int i,j;
 student *p= new student();
 for(i=0;i<29;i++)
  for(j=i+1;j<30;j++)
  {if(stu[i].GetZongchengji()<stu[j].GetZongchengji())
 {p->SetNumber(stu[j].GetNumber());
  p->SetName(stu[j].GetName());
  p->SetSex(stu[j].GetSex());
  p->SetYingyu(stu[j].GetYingyu());
  p->SetYuwen(stu[j].GetYuwen());
  p->SetShuxue(stu[j].GetShuxue());
  stu[j].SetNumber(stu[i].GetNumber());
  stu[j].SetName(stu[i].GetName());
  stu[j].SetSex(stu[i].GetSex());
  stu[j].SetYingyu(stu[i].GetYingyu());
  stu[j].SetYuwen(stu[i].GetYuwen());
  stu[j].SetShuxue(stu[i].GetShuxue()); 
  stu[i].SetNumber(p->GetNumber());
  stu[i].SetName(p->GetName());
  stu[i].SetSex(p->GetSex());
  stu[i].SetYingyu(p->GetYingyu());
  stu[i].SetYuwen(p->GetYuwen());
  stu[i].SetShuxue(p->GetShuxue());
 }
  }
  delete p;
 for(i=0;i<30;i++)
 {stu[i].SetMingci(i+1);
 }
 for(i=0;i<30;i++)
 if(stu[i].GetNumber()!=0)
 {stu[i].ShowNumber();
  stu[i].ShowName();
  stu[i].ShowSex();
  stu[i].ShowYingyu();
  stu[i].ShowYuwen();
  stu[i].ShowShuxue();
  stu[i].ShowMingci();
 }
 delete p;
 return 0;
}
int tongjigekepingjunchengjihejigelv()
{float yingyupingjunchengji;
 float yuwenpingjunchengji;
 float shuxuepingjunchengji;
 long yingyusum=0;
 long yuwensum=0;
 long shuxuesum=0;
 int i;
 int n=0; //统计学籍存在的学生总数
 for(i=0;i<30;i++)
 {if(stu[i].GetNumber()!=0)
 {yingyusum+=stu[i].GetYingyu();
     yuwensum+=stu[i].GetYuwen();
  shuxuesum+=stu[i].GetShuxue();
  n++;
 }
  }
 yingyupingjunchengji=yingyusum/n;
 yuwenpingjunchengji=yuwensum/n;
 shuxuepingjunchengji=shuxuesum/n;
 cout<<"科目:英语"<<"  总人数:"<<n<<"  平均成绩:"<<yingyupingjunchengji<<endl;
 cout<<"科目:语文"<<"  总人数:"<<n<<"  平均成绩:"<<yuwenpingjunchengji<<endl;
 cout<<"科目:数学"<<"  总人数:"<<n<<"  平均成绩:"<<shuxuepingjunchengji<<endl;
return 0;
}
void main()
{int jiashuxueshengx

上一个:先学vb再深入c++ 可以吗
下一个:想学会C++语言必须看什么书

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,