学生信息管理系统c++
时间: 2023-06-29 22:08:12 浏览: 93
学生信息管理系统是一个很好的c++练手项目,可以帮助你提高自己的编程能力。下面是一个简单的学生信息管理系统的实现:
```cpp
#include<iostream>
#include<fstream>
#include<cstring>
#include<cstdlib>
#include<iomanip>
using namespace std;
//定义学生信息结构体
struct student
{
char num[10]; //学号
char name[20]; //姓名
int score1; //成绩1
int score2; //成绩2
int score3; //成绩3
float aver; //平均分
};
//函数声明
void menu(); //菜单函数
void input(); //录入学生信息函数
void del(); //删除学生信息函数
void search(); //查找学生信息函数
void modify(); //修改学生信息函数
void display(); //显示学生信息函数
void sort(); //按平均分排序函数
void compute(); //计算平均分函数
void save(); //保存学生信息函数
void read(); //读取学生信息函数
student stu[100]; //定义学生信息结构体数组
int n=0; //记录学生人数
int main()
{
read(); //程序开始时从文件中读取学生信息
menu(); //显示菜单
return 0;
}
void menu()
{
int ch;
while(1)
{
system("cls"); //清屏
cout<<"\n\n\t\t学生信息管理系统\n\n";
cout<<"\t\t1. 录入学生信息\n";
cout<<"\t\t2. 删除学生信息\n";
cout<<"\t\t3. 查找学生信息\n";
cout<<"\t\t4. 修改学生信息\n";
cout<<"\t\t5. 显示学生信息\n";
cout<<"\t\t6. 按平均分排序\n";
cout<<"\t\t7. 保存学生信息\n";
cout<<"\t\t0. 退出程序\n\n";
cout<<"\t\t请选择菜单项:";
cin>>ch;
switch(ch)
{
case 1:input();break;
case 2:del();break;
case 3:search();break;
case 4:modify();break;
case 5:display();break;
case 6:sort();break;
case 7:save();break;
case 0:exit(0);break;
default:cout<<"\n输入有误,请重新输入!\n";system("pause");
}
}
}
void input()
{
char ch;
while(1)
{
system("cls");
cout<<"\n\n\t\t学生信息录入\n\n";
cout<<"\n请输入学生的学号:";
cin>>stu[n].num;
cout<<"\n请输入学生的姓名:";
cin>>stu[n].name;
cout<<"\n请输入学生的成绩1:";
cin>>stu[n].score1;
cout<<"\n请输入学生的成绩2:";
cin>>stu[n].score2;
cout<<"\n请输入学生的成绩3:";
cin>>stu[n].score3;
compute(); //计算平均分
n++; //学生人数加1
cout<<"\n是否继续录入(Y/N):";
cin>>ch;
if(ch=='N'||ch=='n')
break;
}
save(); //保存学生信息
}
void del()
{
char num[10];
int i,j,k;
while(1)
{
system("cls");
cout<<"\n\n\t\t学生信息删除\n\n";
cout<<"\n请输入要删除的学生的学号:";
cin>>num;
for(i=0;i<n;i++)
{
if(strcmp(stu[i].num,num)==0) //找到要删除的学生
{
for(j=i;j<n-1;j++) //后面的学生依次前移
{
stu[j]=stu[j+1];
}
n--; //学生人数减1
cout<<"\n删除成功!\n";
system("pause");
return;
}
}
cout<<"\n该学生不存在,请重新输入!\n";
system("pause");
}
save(); //保存学生信息
}
void search()
{
char num[10];
int i;
while(1)
{
system("cls");
cout<<"\n\n\t\t学生信息查找\n\n";
cout<<"\n请输入要查找的学生的学号:";
cin>>num;
for(i=0;i<n;i++)
{
if(strcmp(stu[i].num,num)==0) //找到要查找的学生
{
cout<<"\n学号:"<<stu[i].num<<"\n";
cout<<"\n姓名:"<<stu[i].name<<"\n";
cout<<"\n成绩1:"<<stu[i].score1<<"\n";
cout<<"\n成绩2:"<<stu[i].score2<<"\n";
cout<<"\n成绩3:"<<stu[i].score3<<"\n";
cout<<"\n平均分:"<<setprecision(2)<<stu[i].aver<<"\n";
system("pause");
return;
}
}
cout<<"\n该学生不存在,请重新输入!\n";
system("pause");
}
}
void modify()
{
char num[10],ch;
int i;
while(1)
{
system("cls");
cout<<"\n\n\t\t学生信息修改\n\n";
cout<<"\n请输入要修改的学生的学号:";
cin>>num;
for(i=0;i<n;i++)
{
if(strcmp(stu[i].num,num)==0) //找到要修改的学生
{
cout<<"\n学号:"<<stu[i].num<<"\n";
cout<<"\n姓名:"<<stu[i].name<<"\n";
cout<<"\n成绩1:"<<stu[i].score1<<"\n";
cout<<"\n成绩2:"<<stu[i].score2<<"\n";
cout<<"\n成绩3:"<<stu[i].score3<<"\n";
cout<<"\n平均分:"<<setprecision(2)<<stu[i].aver<<"\n";
cout<<"\n是否修改(Y/N):";
cin>>ch;
if(ch=='Y'||ch=='y')
{
cout<<"\n请输入学生的学号:";
cin>>stu[i].num;
cout<<"\n请输入学生的姓名:";
cin>>stu[i].name;
cout<<"\n请输入学生的成绩1:";
cin>>stu[i].score1;
cout<<"\n请输入学生的成绩2:";
cin>>stu[i].score2;
cout<<"\n请输入学生的成绩3:";
cin>>stu[i].score3;
compute(); //重新计算平均分
cout<<"\n修改成功!\n";
system("pause");
return;
}
else
{
return;
}
}
}
cout<<"\n该学生不存在,请重新输入!\n";
system("pause");
}
save(); //保存学生信息
}
void display()
{
int i;
system("cls");
cout<<"\n\n\t\t学生信息显示\n\n";
cout<<setw(10)<<"学号"<<setw(20)<<"姓名"<<setw(10)<<"成绩1"<<setw(10)<<"成绩2"<<setw(10)<<"成绩3"<<setw(10)<<"平均分\n";
for(i=0;i<n;i++)
{
cout<<setw(10)<<stu[i].num<<setw(20)<<stu[i].name<<setw(10)<<stu[i].score1<<setw(10)<<stu[i].score2<<setw(10)<<stu[i].score3<<setw(10)<<setprecision(2)<<stu[i].aver<<"\n";
}
system("pause");
}
void sort()
{
int i,j;
student temp;
for(i=0;i<n-1;i++) //冒泡排序
{
for(j=0;j<n-i-1;j++)
{
if(stu[j].aver<stu[j+1].aver)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
cout<<"\n按平均分排序完成!\n";
system("pause");
save(); //保存学生信息
}
void compute()
{
stu[n].aver=(stu[n].score1+stu[n].score2+stu[n].score3)/3.0;
}
void save()
{
int i;
ofstream outfile("student.txt"); //打开文件
for(i=0;i<n;i++)
{
outfile<<stu[i].num<<" "<<stu[i].name<<" "<<stu[i].score1<<" "<<stu[i].score2<<" "<<stu[i].score3<<" "<<stu[i].aver<<"\n";
}
outfile.close(); //关闭文件
}
void read()
{
int i;
ifstream infile("student.txt"); //打开文件
if(!infile)
{
cout<<"\n无法打开文件!\n";
return;
}
while(infile>>stu[n].num>>stu[n].name>>stu[n].score1>>stu[n].score2>>stu[n].score3>>stu[n].aver) //从文件中读取学生信息
{
n++; //学生人数加1
}
infile.close(); //关闭文件
}
```
在该程序中,我们定义了一个学生信息结构体,包含学号、姓名、成绩1、成绩2、成绩3、平均分等信息。通过菜单函数,我们可以实现录入学生信息、删除学生信息、查找学生信息、修改学生信息、显示学生信息、按平均分排序以及保存学生信息等功能。同时,我们还定义了一个文件操作函数read()和save(),用于从文件中读取学生信息和保存学生信息。
阅读全文