帮忙加一个学生保存
#include <iostream.h>#include<fstream.h>
#include <string.h>
const int MAX=100;//最大学生数
int num_stu=0; //实际学生数
struct student
{
char num[20];
char name[30];
char grade[30];
float c1,c2,c3,c4,c5;
float avg;
}stu[MAX];
//将学生信息写入文件中
void write_to_file()
{
int i,j;
ofstream fout("stu_info.txt");
if(!fout)
{
cout<<"文件打开失败!"<<endl;
return;
}
//求学生的平均成绩并排序
//求每个学生五门课程的平均值
for(i=0;i<num_stu;i++)
{
stu[i].avg=(stu[i].c1+stu[i].c2+stu[i].c3+stu[i].c4+stu[i].c5)/5;
}
//按平均分由大到小冒泡排序
for(i=0;i<num_stu-1;i++)
{
for(j=0;j<num_stu-i-1;j++)
{
if(stu[j].avg<=stu[j+1].avg)
{
struct student temp;
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
//将所有学生信息写回stu_info.txt文件
fout<<num_stu<<endl;
for(i=0;i<num_stu;i++)
{
fout<<stu[i].num<<"\t"<<stu[i].name<<"\t"<<stu[i].grade<<"\t"<<stu[i].c1<<"\t"<<stu[i].c2<<"\t"<<stu[i].c3<<"\t"<<stu[i].c4<<"\t"<<stu[i].c5<<"\t"<<stu[i].avg<<endl;
}
fout.close();
}
//从字符界面初始化学生信息
void init_from_cmd()
{
int i;
cout<<"请输入学生个数:";
cin>>num_stu;
cout<<"请按行输入每个学生的信息:"<<endl;
cout<<"学号\t"<<"姓名\t"<<"班级\t\t"<<"成绩1\t"<<"成绩2\t"<<"成绩3\t"<<"成绩4\t"<<"成绩5"<<endl;
for(i=0;i<num_stu;i++)
{
cin>>stu[i].num>>stu[i].name>>stu[i].grade>>stu[i].c1>>stu[i].c2>>stu[i].c3>>stu[i].c4>>stu[i].c5;
}
cout<<"从字符界面初始化学生信息成功!"<<endl;
//将学生信息保存至文件stu_info.txt中
write_to_file();
}
//从文件初始化学生信息
void init_from_file()
{
int i;
ifstream fin("init.txt");
if(!fin)
{
cout<<"文件打开失败"<<endl;
return;
}
fin>>num_stu;
for(i=0;i<num_stu;i++)
{
fin>>stu[i].num>>stu[i].name>>stu[i].grade>>stu[i].c1>>stu[i].c2>>stu[i].c3>>stu[i].c4>>stu[i].c5;
}
fin.close();
if(i==num_stu)cout<<"从文件初始化学生信息成功!"<<endl;
//将学生信息保存至文件stu_info.txt中
write_to_file();
}
//从stu_info.txt文件中读取学生信息
void read_stu_info()
{
int i;
ifstream fin("stu_info.txt");
if(!fin)
{
cout<<"文件打开失败"<<endl;
return;
}
//学生个数
fin>>num_stu;
for(i=0;i<num_stu;i++)
{
fin>>stu[i].num>>stu[i].name>>stu[i].grade>>stu[i].c1>>stu[i].c2>>stu[i].c3>>stu[i].c4>>stu[i].c5>>stu[i].avg;
}
fin.close();
}
//查看指定学生的信息
void lookup_single()
{
char temp[30];
int i;
read_stu_info(); //读取所有学生信息
cout<<"请输入要查询的学生的学号或姓名:";
cin>>temp;
for(i=0;i<num_stu;i++)
{
if(strcmp(temp,stu[i].num)==0||strcmp(temp,stu[i].name)==0)
{
cout<<"学号\t"<<"姓名\t"<<"班级\t\t"<<"成绩1\t"<<"成绩2\t"<<"成绩3\t"<<"成绩4\t"<<"成绩5\t"<<"平均分"<<endl;
cout<<stu[i].num<<"\t"<<stu[i].name<<"\t"<<stu[i].grade<<"\t"<<stu[i].c1<<"\t"<<stu[i].c2<<"\t"<<stu[i].c3<<"\t"<<stu[i].c4<<"\t"<<stu[i].c5<<"\t"<<stu[i].avg<<endl;
}
}
if(i>num_stu)cout<<"该生不存在...请重试~!"<<endl;
}
//查看所有学生信息
void lookup_all()
{
int i;
read_stu_info();
if(stu[0].num==NULL)cout<<"暂时还没学生信息!"<<endl;
else
{
cout<<"所有学生信息如下:"<<endl;
cout<<"学号\t"<<"姓名\t"<<"班级\t\t"<<"成绩1\t"<<"成绩2\t"<<"成绩3\t"<<"成绩4\t"<<"成绩5\t"<<"平均分"<<endl;
for(i=0;i<num_stu;i++)
{
cout<<stu[i].num<<"\t"<<stu[i].name<<"\t"<<stu[i].grade<<"\t"<<stu[i].c1<<"\t"<<stu[i].c2<<"\t"<<stu[i].c3<<"\t"<<stu[i].c4<<"\t"<<stu[i].c5<<"\t"<<stu[i].avg<<endl;
}
}
}
//增加学生信息
void add_stu()
{
read_stu_info();
int nums; //允许添加的学生个数
int i;
struct student temp;
cout<<"请输入要添加学生的个数:";
cin>>nums;
cout<<"学号\t"<<"姓名\t"<<"班级\t\t"<<"成绩1\t"<<"成绩2\t"<<"成绩3\t"<<"成绩4\t"<<"成绩5"<<endl;
for(i=num_stu;i<num_stu+nums;i++)
{
cin>>temp.num>>temp.name>>temp.grade>>temp.c1>>temp.c2>>temp.c3>>temp.c4>>temp.c5;
}
if(i=num_stu+nums)
{
cout<<"添加学生信息成功!"<<endl;
num_stu=i; //修改学生总数
}
//将学生信息保存至文件stu_info.txt中
write_to_file();
}
//修改指定学生信息
void modfy_stu()
{
char temp[30];
int i;
read_stu_info();
cout<<"请输入要修改信息的学生的学号或姓名:";
cin>>temp;
for(i=0;i<num_stu;i++)
{
if(strcmp(temp,stu[i].num)==0||strcmp(temp,stu[i].name)==0)
{
cout<<"请输入修改后的该生信息:"<<endl;
cout<<"学号\t"<<"姓名\t"<<"班级\t\t"<<"成绩1\t"<<"成绩2\t"<<"成绩3\t"<<"成绩4\t"<<"成绩5\t"<<endl;
cin>>stu[i].num>>stu[i].name>>stu[i].grade>>stu[i].c1>>stu[i].c2>>stu[i].c3>>stu[i].c4>>stu[i].c5;
}
}
if(i==num_stu)cout<<"该生不存在...请重试~!"<<endl;
//将学生信息保存至文件stu_info.txt中
write_to_file();
}
//删除指定学生信息
void delete_stu()
{
char temp[30];
int i,j;
read_stu_info();
cout<<"请输入要删除学生的学号或姓名:";
cin>>temp;
for(i=0;i<num_stu;i++)
{
if(strcmp(temp,stu[i].num)==0||strcmp(temp,stu[i].name)==0)break;
}
for(j=i;j<num_stu;j++)
{
stu[j]=stu[j+1];
}
num_stu=num_stu-1;
cout<<"删除成功!"<<endl;
//将学生信息保存至文件stu_info.txt中
write_to_file();
}
void init()
{
int choice=0;
cout<<"============欢迎使用学生成绩管理系统=============="<<endl<<endl;
cout<<"\t1、从字符界面初始化学生信息"<<endl
<<"\t2、从文件初始化学生信息"<<endl
<<"\t3、查看指定学生信息"<<endl
<<"\t4、查看所有学生信息"<<endl
<<"\t5、修改指定学生信息"<<endl
<<"\t6、删除指定学生信息"<<endl
<<"\t7、退出系统"<<endl
<<"请选择功能:";
cin>>choice;
while(choice!=7){
if(choice>7&&choice<1)cout<<"您的输入有误,请重试..."<<endl;
switch(choice)
{
case 1: init_from_cmd(); break;
case 2: init_from_file(); break;
case 3: lookup_single(); break;
case 4: lookup_all(); break;
case 5: modfy_stu(); break;
case 6: delete_stu();break;
}
cout<<"============欢迎使用学生成绩管理系统=============="<<endl<<endl;
cout<<"\t1、录入学生信息"<<endl
<<"\t2、从文件读取学生信息"<<endl
<<"\t3、查看指定学生信息"<<endl
<<"\t4、查看所有学生信息"<<endl
<<"\t5、修改学生信息"<<endl
<<"\t6、删除学生信息"<<endl
<<"\t7、退出系统"<<endl
<<"请选择功能:";
cin>>choice;
}
cout<<"============欢迎下次再来============="<<endl<<endl;
}
//主函数
main()
{
init();
}