- ACM
我超越了傅少杰!
- 2024-5-22 20:22:03 @
傅少杰太没实力辣
3 comments
-
Chaser Of Light LV 10 @ 2024-5-22 22:19:41
#include #include #include #define MAX 1000 //定义学生数组最大容量 using namespace std;
//设计学生信息结构体 struct person { long num;//学号 string name;//姓名 int sex;//性别 int age;//年龄 int math;//数学 int chinese;//语文 int english;//英语 int number;//总分 };
//学生成绩管理系统 struct personbook { person parry[MAX];//学生数组最大容量 int M_size;//当前容量 };
//1、菜单界面 void showmenu() { cout << "" << endl; cout << "*****1、 学生成绩录入 *****" << endl; cout << "*****2、 浏览学生成绩 *****" << endl; cout << "*****3、 删除学生成绩 *****" << endl; cout << "*****4、 查找学生信息 *****" << endl; cout << "*****5、 统计学生信息 *****" << endl; cout << "*****6、 学生信息排序 *****" << endl; cout << "*****7、 清空学生信息 *****" << endl; cout << "*****0、 退出管理系统 *****" << endl; cout << "" << endl; cout <<endl; cout << "请输入菜单序号*"<<endl; }
//添加学生信息 void addperson(personbook * abs) { person parry[MAX];
ofstream outfile("学生成绩管理系统.dat",ios::app);//创建或打开文件,以输出方式打开文件 if(!outfile) { cerr<<"open error!"<<endl; exit(1); } //判断学生成绩管理系统是否已经满了 if (abs->M_size == MAX) { cout << "学生成绩管理系统已满,无法添加!" << endl; return; } else { //添加学生学号 //long num; cout<<"请输入学号:"<<endl; cin >> parry[abs->M_size].num; abs->parry[abs->M_size].num; outfile<<parry[abs->M_size].num<<'\t'; //添加学生姓名 //string name; cout << "请输入姓名:" << endl; cin >> parry[abs->M_size].name; abs->parry[abs->M_size].name; outfile<<parry[abs->M_size].name<<'\t'; //性别 //int sex; cout << "请输入性别:" << endl; cout << "1--男" << endl; cout << "2--女" << endl; while (true) { cin >> parry[abs->M_size].sex; if (parry[abs->M_size].sex == 1 || parry[abs->M_size].sex == 2) { abs->parry[abs->M_size].sex; outfile<<parry[abs->M_size].sex<<'\t'; break; } else { cout << "无效输入,请重新输入" << endl; } } //输入年龄 //int age; cout << "请输入年龄:" << endl; cin >>parry[abs->M_size].age; abs->parry[abs->M_size].age; outfile<<parry[abs->M_size].age<<'\t'; //输入数学成绩 //int math; cout<<"请输入数学"<<endl; cin>> parry[abs->M_size].math; abs->parry[abs->M_size].math; outfile<<parry[abs->M_size].math<<'\t'; //输入语文成绩 //int chinese; cout << "请输入语文:" << endl; cin >> parry[abs->M_size].chinese; abs->parry[abs->M_size].chinese; outfile<<parry[abs->M_size].chinese<<'\t'; //输入英语成绩 //int english; cout << "请输入英语:" << endl; cin >> parry[abs->M_size].english; abs->parry[abs->M_size].english; outfile<<parry[abs->M_size].english<<'\t'; //总分 //int number; /*cout << "请输入英语/:" << endl;*/ parry[abs->M_size].number=parry[abs->M_size].math + parry[abs->M_size].chinese + parry[abs->M_size].english; abs->parry[abs->M_size].number; outfile<<parry[abs->M_size].number<<'\n'; abs->M_size++; cout << "添加成功!" << endl; system("pause"); system("cls");//清屏 } outfile.close();//关闭文件
}
//显示学生成绩信息 void showperson(personbook * abs) { person parry[MAX];
ifstream infile("学生成绩管理系统.dat",ios::in||ios::out);//创建或打开文件,以输入方式打开文件 if(!infile) { cerr<<"open error!"<<endl; exit(1); } //system("pause"); system("cls"); if (abs->M_size == 0) //判断学生成绩管理系统中人数是否为0,如果为0,提示记录为空;如果不为0,显示记录的学生信息信息 { cout << "还未添加学生信息" << endl; system("pause"); system("cls"); } else { for (int i = 0; i < abs->M_size; ++i) { infile>>parry[i].num>>parry[i].name>>parry[i].sex>>parry[i].age>>parry[i].math>>parry[i].chinese>>parry[i].english>>parry[i].number; cout << "学号:" << parry[i].num << "\t"; cout << "姓名:" << parry[i].name << "\t"; cout << "性别:" << (parry[i].sex==1?"男":"女") << "\t";//三步运算符 cout << "年龄:" << parry[i].age << "\t"; cout<< "数学: " << parry[i].math<<"\t"; cout << "语文:" << parry[i].chinese << "\t"; cout << "英语:" << parry[i].english << "\t"; cout << "总分:" << parry[i].number << endl; } } infile.close();//关闭文件 system("pause"); system("cls");
}
//查找学生成绩实现步骤 int isexist(personbook * abs,string name) { person parry[MAX];
ifstream infile("学生成绩管理系统.dat",ios::in||ios::out);//创建或打开文件,以输入方式打开文件 if(!infile) { cerr<<"open error!"<<endl; exit(1); } for (int i=0; i < MAX; ++i) { infile>>abs->parry[i].name; if (name == abs-> parry[i].name) { return i; } } return -1;//如果没查到就返回-1 infile.close();//关闭文件
}
//删除学生信息 void deleteperson(personbook * abs) {
cout << "请输入您要删除的学生信息" << endl; string name; cin >> name; int ret = isexist(abs,name); if (ret == -1) { cout << "查无此人" << endl; } else { for (int i = ret; i < abs->M_size; ++i) { abs->parry[i] = abs->parry[i + 1];//数据前移 } abs->M_size--; cout << "删除成功" << endl; } system("pause"); system("cls");
}
//查找学生信息信息 void findperson( personbook * abs) { person parry[MAX];
ifstream infile("学生成绩管理系统.dat",ios::in||ios::out);//创建或打开文件,以输入方式打开文件 if(!infile) { cerr<<"open error!"<<endl; exit(1); } cout << "请输入您要查找的人:" << endl; string name; cin >> name; int ret = isexist(abs,name); if (ret != -1) { infile>>abs->parry[ret].num>>abs->parry[ret].name>>abs->parry[ret].sex>>abs->parry[ret].age>>abs->parry[ret].math>>abs->parry[ret].english>>abs->parry[ret].english>>abs->parry[ret].number; cout << "学号:" << abs->parry[ret].num << "\t"; cout << "姓名:" << abs->parry[ret].name << "\t"; cout << "性别:" << (abs->parry[ret].sex == 1 ? "男" : "女") << "\t";//三步运算符 cout << "年龄:" << abs->parry[ret].age << "\t"; cout<< "数学: " << abs->parry[ret].math<<"\t"; cout << "语文:" << abs->parry[ret].chinese << "\t"; cout << "英语:" << abs->parry[ret].english << "\t"; cout << "总分:" << abs->parry[ret].number << endl; } else { cout << "查无此人" << endl; } system("pause"); system("cls"); infile.close();//关闭文件
}
//统计某分数段的所有学生数量 void statistics(personbook* abs) { person parry[MAX];
ifstream infile("学生成绩管理系统.dat",ios::in||ios::out);//创建或打开文件,以输入方式打开文件 if(!infile) { cerr<<"open error!"<<endl; exit(1); } cout<<"根据总分进行统计,请输入你要统计的分数段"<<endl; int num_min; int num_max; int x=0;//统计数量 cout<<"请输入最低分数:"; cin>>num_min; cout<<"请输入最高分数:"; cin>>num_max; for (int i=0; i < MAX; ++i) { infile>>abs->parry[i].num>>abs->parry[i].name>>abs->parry[i].sex>>abs->parry[i].age>>abs->parry[i].math>>abs->parry[i].chinese>>abs->parry[i].english>>abs->parry[i].number; if (num_min < abs->parry[i].number && num_max >= abs->parry[i].number) { x++; cout<<x<<" "; cout << "学号:" << abs->parry[i].num << "\t"; cout << "姓名:" << abs->parry[i].name << "\t"; cout << "性别:" << (abs->parry[i].sex == 1 ? "男" : "女") << "\t";//三步运算符,水平制表 cout << "年龄:" << abs->parry[i].age << "\t"; cout<< "数学: " <<abs->parry[i].math<<"\t"; cout << "语文:" << abs->parry[i].chinese << "\t"; cout << "英语:" << abs->parry[i].english << "\t"; cout << "总分:" << abs->parry[i].number << endl; } } cout<<endl; cout<<"该分数段共有 "<<x<<"人"<<endl; system("pause"); system("cls"); infile.close();//关闭文件
}
//学生信息排序 //按照总成绩从高到低排序 void sortPerson(personbook * abs) { person parry[MAX]; int zongfeng[MAX]; int num;
ifstream infile("学生成绩管理系统.dat",ios::in||ios::out);//创建或打开文件,以输入方式打开文件 if(!infile) { cerr<<"open error!"<<endl; exit(1); } for (int i=0; i < abs->M_size; ++i) { infile>>abs->parry[i].num>>abs->parry[i].name>>abs->parry[i].sex>>abs->parry[i].age>>abs->parry[i].math>>abs->parry[i].chinese>>abs->parry[i].english>>abs->parry[i].number; zongfeng[i]=abs->parry[i].number; } //冒泡排序 for(int m=0;m<abs->M_size-1;++m) for(int n=0;n<abs->M_size-m;++n) { if(zongfeng[n]<zongfeng[n+1]) { num = zongfeng[n]; zongfeng[n] = zongfeng[n+1]; zongfeng[n+1]=num; } } for (int j=0; j < abs->M_size; ++j) for (int i=0; i < abs->M_size; ++i) { infile>>abs->parry[i].num>>abs->parry[i].name>>abs->parry[i].sex>>abs->parry[i].age>>abs->parry[i].math>>abs->parry[i].chinese>>abs->parry[i].english>>abs->parry[i].number; if(zongfeng[j]==abs->parry[i].number) { cout << "学号:" << abs->parry[i].num << "\t"; cout << "姓名:" << abs->parry[i].name << "\t"; cout << "性别:" << (abs->parry[i].sex == 1 ? "男" : "女") << "\t";//三步运算符,水平制表 cout << "年龄:" << abs->parry[i].age << "\t"; cout<< "数学: " <<abs->parry[i].math<<"\t"; cout << "语文:" << abs->parry[i].chinese << "\t"; cout << "英语:" << abs->parry[i].english << "\t"; cout << "总分:" << abs->parry[i].number << endl; } } infile.close();//关闭文件 system("pause"); system("cls");
}
//清空学生信息 void cleanPerson(personbook * abs) { while(true) { cout << "如果确定清空学生信息" << endl; cout << "1--是" << endl; cout << "2--否" << endl; int flag; cin >> flag; if (flag == 1) { abs->M_size = 0; ofstream outfile("学生成绩管理系统.dat",ios::out);//创建或打开文件,以输出方式打开文件 outfile.close();//关闭文件 cout << "学生信息已清空" << endl; break; } else if(flag == 2) { break; } else { cout << "无效输入,请重新输入" << endl; break; } } system("pause"); system("cls"); }
//主函数 int main() { personbook abs;//初始化学生成绩管理系统 abs.M_size = 0;
int select = 0; while (true)//无限循环 { showmenu(); cin >> select; system("cls"); switch (select) { case 1: addperson(&abs); break; case 2: showperson(&abs); break; case 3: deleteperson(&abs); break; case 4: findperson(&abs); break; case 5: statistics(&abs); break; case 6: sortPerson(&abs); break; case 7: cleanPerson(&abs); break; case 0: cout << "欢迎下次使用" << endl; return 0; break; } } return 0;
}
-
2024-5-22 22:11:33@
对呀,人家好像几个月没上线了
-
2024-5-22 21:24:58@
他好像已经退了
- 1