学生信息管理系统
代码:
#include <iostream>
using namespace std;
#include<stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#define N 1000
typedef struct student
{
int number;
char name[20];
int grade;
int gaoshu;
int yingyu;
int jisuanji;
int sum;
}STUDENT;
STUDENT student[N];
int shuliang=0; //用于记录有多少学生
class Student
{
public:
void fhzjm();
void DengJi();
void ShanChu();
void LiuLan();
void ChaZhao();
void PaiXu();
void Save();
void menu();
void DaoRu();
};
void Student::fhzjm() //每次操作结束 来提醒是否继续进行操作
{
char biaozhi[20];
cout<<endl;
cout<<"还需要操作么?如果需要操作请输入:yes,否则请输入:no"<<endl;
cin>>biaozhi;
if(strcmp(biaozhi,"yes")==0)
{
menu();
}
else if(strcmp(biaozhi,"no")==0)
exit(0); //退出系统 这是一个库函数 用于结束程序
else
{
cout<<"请输入正确的字符,谢谢!"<<endl;
fhzjm();
}
}
void Student::DengJi() //登记学生信息函数
{
int rs; //用于记录要输入多少条学生信息
int i,k=1;
system("CLS");
cout<<"请输入需要输入几个学生信息:"<<endl;
cin>>rs;
for(i=shuliang;i<shuliang+rs;i++,k++)
{
cout<<"请输入第"<<k<<"个学生的学号:";
cin>>student[i].number;
cout<<"请输入学生的姓名:";
cin>>student[i].name;
//cout<<"请输入学生3门课的成绩:";
cout<<"请输入第高数课的成绩:";
cin>>student[i].gaoshu;
cout<<"请输入英语课的成绩:";
cin>>student[i].yingyu;
cout<<"请输入第计算机课的成绩:";
cin>>student[i].jisuanji;
}
shuliang=shuliang+rs;
fhzjm();
}
void Student::ShanChu() //删除学生信息
{
char shanchuinfo[10];
system("CLS"); //清屏函数 这是一个库函数 用于清除控制台中的所有信息
cout<<"删除全部学生信息请输入\"all\",删除指定学号的学生信息请输入\"one\"\n";
cin>>shanchuinfo;
if(strcmp(shanchuinfo,"all")==0)
{
int j;
cout<<"你删除的学生信息如下:"<<endl;
cout<<"-----------学号-------------姓名-------------高数--------------英语--------------计算机\t"<<endl;
for(j=0;j<shuliang;j++)
cout<<"----%d-------%s-------%d-------%d-------%d\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].jisuanji;
shuliang=0;
cout<<"删除成功"<<endl;
}
else if(strcmp(shanchuinfo,"one")==0)
{
struct student *p=NULL;
int choice;
int i,j,k=0;
cout<<"请输入你要删除的人的学号:";
cin>>choice;
for(i=0;i<shuliang;i++)
{
if(choice==student[i].number)
{
k=1;j=i;break;
}
}
if(k)
{
if(shuliang==1)
{
p=&student[0];
free(p);
shuliang=0;
}
else
{
for(i=j;i<shuliang;i++)
{
student[i]=student[i+1];
}
shuliang=shuliang-1;
}
cout<<"删除成功"<<endl;
}
else
{
cout<<"输入数据错误!"<<endl;
}
}
fhzjm();
}
void Student::LiuLan() //浏览操作函数
{
int i;
system("CLS");
if(shuliang==0)
{
cout<<"系统里面没有任何学生的信息!"<<endl;
}
else
{
for(i=0;i<shuliang;i++)
{
cout<<"第"<<i+1<<"个学生的学号为:"<<student[i].number<<endl;
cout<<"第"<<i+1<<"个学生的姓名为:"<<student[i].name<<endl;
cout<<"第"<<i+1<<"个学生的高数课的成绩为:"<<student[i].gaoshu<<endl;
cout<<"第"<<i+1<<"个学生的英语课的成绩为:"<<student[i].yingyu<<endl;
cout<<"第"<<i+1<<"个学生的计算机课的成绩为:"<<student[i].jisuanji<<endl;
student[i].sum=student[i].gaoshu+student[i].yingyu+student[i].jisuanji;
cout<<"第"<<i+1<<"个学生的总成绩为:"<<student[i].sum<<endl;
}
}
fhzjm();
}
void Student::ChaZhao() //查找函数 实现查找功能 分为三种查询 按学号查询 按姓名 按成绩
{
int xx;
char choice,yy[20];
int i,j,k=0;
system("CLS");
if(shuliang==0)
{
cout<<"系统里面没有任何学生的信息!"<<endl;
fhzjm();
}
cout<<"三种查找方式:学号,姓名,成绩"<<endl;
cout<<"如果按学号查找请输1,如果按姓名查找请输2,如果按成绩查找请输3"<<endl;
cout<<"请输入您查找的方式:";
cin>>choice;
if(choice=='1')
{
cout<<"请输入需要查找学生的学号:";
cin>>xx;
cout<<"您所查找的学生的信息为:"<<endl;
cout<<"----学号----姓名----高数成绩----英语成绩----计算机成绩----\t"<<endl;
for(i=0;i<shuliang;i++)
{
if(xx==student[i].number)
{
j=i;k=1;
cout<<"----%d-------%s-------%d-------%d-------%d----\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].yingyu,student[i].jisuanji;
}
}
if(k==0)
cout<<"输入信息有误:"<<endl;
}
else if(choice=='2')
{
cout<<"请输入需要查找学生的姓名:";
cin>>yy;
cout<<"您所查找的学生的信息为:"<<endl;
cout<<"----学号----姓名----高数成绩----英语成绩----计算机成绩----\t"<<endl;
for(i=0;i<shuliang;i++)
{
if(strcmp(yy,student[i].name)==0)
{
j=i;k=1;
cout<<"----%d-------%s-------%d-------%d-------%d----\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].yingyu,student[j].jisuanji;
}
}
if(k==0)
cout<<"输入信息有误:"<<endl;
}
else if(choice=='3')
{
cout<<"请输入需要查找学生的成绩:"<<endl;
cin>>xx;
cout<<"您所查找的学生的信息为:"<<endl;
cout<<"----学号----姓名----高数----英语----计算机----\t"<<endl;
for(i=0;i<shuliang;i++)
{
if(xx==student[i].grade)
{
j=i;k=1;
cout<<"----%d-------%s-------%d-------%d-------%d----\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].yingyu,student[i].jisuanji;
}
}
if(k==0)
cout<<"输入信息有误:"<<endl;
}
fhzjm();
}
void Student::PaiXu() //排序函数 执行排序操作
{
struct student *p1[N],**p2,*temp;
int i,j;
system("CLS");
p2=p1;
for( i=0;i<shuliang;i++)
{
p1[i]=student+i;
}
for( i=0;i<shuliang;i++)
{
for( j=i+1;j<shuliang;j++)
{
if((*(p2+i))->sum<(*(p2+j))->sum)
{
temp=*(p2+i);*(p2+i)=*(p2+j);*(p2+j)=temp;
}
}
}
cout<<"按照总成绩排序之后的信息为:"<<endl;
cout<<"----学号----姓名----总成绩----\t"<<endl;
for( i=0;i<shuliang;i++)
{
student[i].sum=student[i].gaoshu+student[i].yingyu+student[i].jisuanji;
cout<<"----%d-----%s----%d-----\n",(*(p2+i))->number,(*(p2+i))->name,(*(p2+i))->sum;
}
fhzjm();
}
void Student::Save() //保存数据 把数据写到文件操作
{
int i;
FILE *rs;
if((rs=fopen("student.txt","w"))==NULL)
{
cout<<"not open";
exit(0);
}
for(i=0;i<shuliang;i++)
{
fwrite(&student[i], sizeof(student[i]), 1, rs);
}
if(ferror(rs))
{
fclose(rs);
perror("写文件失败!\n");
return;
}
cout<<"存储文件成功!"<<endl;
fclose(rs);
fhzjm();
}
void Student::DaoRu()
{
struct student t;
int i=0;
FILE* fp = fopen("student.txt", "r");
shuliang=0;
if(NULL==fp)
{
perror("读取文件打开失败!\n");
return;
}
memset(student,0x0,sizeof(student));
while(1)
{
fread(&t,sizeof(t),1,fp);
if(ferror(fp))
{
fclose(fp);
perror("读文件过程失败!\n");
return;
}
if(feof(fp))
{
break;
}
student[i]=t;
i++;
}
fclose(fp);
shuliang=i;
cout<<"导入文件成功!"<<endl;
fhzjm();
}
void Student::menu()
{
int n=0;
system("CLS");
cout<<" ==================学生信息管理系统==============="<<endl;
cout<<" = 1.登记学生信息 ="<<endl;
cout<<" = 2.删除学生信息 ="<<endl;
cout<<" = 3.浏览学生信息 ="<<endl;
cout<<" = 4.查找学生信息 ="<<endl;
cout<<" = 5.根据总成绩排序 ="<<endl;
cout<<" = 6.存储到文件 ="<<endl;
cout<<" = 7.从文件导入 ="<<endl;
cout<<" = 8.退出系统 ="<<endl;
cout<<" ================================================="<<endl;
cout<<" 请选择:";
cin>>n;
switch (n)
{
case 1:
DengJi();break; //等记信息
case 2:
ShanChu();break; //删除信息
case 3:
LiuLan();break; //浏览信息
case 4:
ChaZhao();break; //查找信息
case 5:
PaiXu();break; //对成绩记性排序
case 6:
Save();break; //保存数据到文件中
case 7:
DaoRu();break; //把文件中的数据导入到程序中
case 8:
exit(0);break; //退出系统
}
}
int main()
{
Student student;
student.menu();
return 0;
}