学生成绩信息管理系统
一、该系统所要实现的功能
1.手动录入学生信息
void InputScore(); //录入学生信息
2.查询学生信息
void SearchByName(); //按名查询
void SearchByNumber(); //按学号查询
3.修改学生信息
void EditByName(); //按名字修改
void EditByNumber(); //按学号修改
4.删除学生信息
void Delete(); //删除学生信息
5.显示学生信息
void ShowStudentInfo(); //显示学生信息
6.统计学生信息
void Statistics(); //统计学生信息
7.按照平均分排序
void Sort_Average(); //按平均分排序
8.插入学生信息
void Insert(); //插入新的学生的成绩
9.文件导入学生成绩信息和将录入的信息保存到文件中
void FreadFile(); //从文件读取学生信息
void save(); //保存学生信息
二、存储结构和逻辑结构
struct score //分数结构体
{
float m_DataStructurescore;
float m_Englishscore;
float m_Mathscore;
float m_PEscore;
float m_Probabilityscore;
struct score *next;
};
struct student //学生信息结构体
{
string number;
string name;
string sex;
score chengji;
float average;
struct student *next;
};
int amount = 0; //全局变量,记录学生的个数
int const Q =80; //假定学生人数最大为80
float A[Q]; //后面的排序算法需要用到
student *head = (student*)malloc(sizeof(student)); //head为学生信息组成链表的表头
三、具体各个功能实现的代码如下
1.录入学生信息
void InputScore() //录入学生信息
{
head->next = NULL; //要录入学生信息,必须删除以前所有的信息
amount = 0;
char c;
int j = 0;
student *p = head;
do
{
student *stu = new student;
cout<<"请输入学号:(8位)"<<setw(4);
cin>>(*stu).number;
cout<<"请输入姓名:"<<setw(4);
cin>>(*stu).name;
cout<<"请输入性别:"<<setw(2);
cin>>(*stu).sex;
cout<<"请输入数据结构成绩:"<<setw(3);
cin>>(*stu).chengji.m_DataStructurescore;
cout<<"请输入英语成绩:"<<setw(3);
cin>>(*stu).chengji.m_Englishscore;
cout<<"请输入数学成绩:"<<setw(3);
cin>>(*stu).chengji.m_Mathscore;
cout<<"请输入体育成绩:"<<setw(3);
cin>>(*stu).chengji.m_PEscore;
cout<<"请输入概率成绩:"<<setw(3);
cin>>(*stu).chengji.m_Probabilityscore;
//求平均分
(*stu).average = 0.2*((*stu).chengji.m_DataStructurescore+
(*stu).chengji.m_Englishscore+(*stu).chengji.m_Mathscore
+(*stu).chengji.m_PEscore+(*stu).chengji.m_Probabilityscore);
stu->next = p->next;
p->next = stu;
amount++;
cout<<"数据信息录入成功,是否继续录入?(y/n)";
cin>>c;
p = p->next;
while(c!='y' && c!='n')
{
cout<<"指令错误<请输入y/n>!!!!"<<endl;
cin>>c;
}
}while(c == 'y');
j++;
cout<<"输入了"<<amount<<"个学生的信息。"<<endl;
}
2.查询学生信息
void SearchByName() //按名查询
{
char c;
string name;
do
{
student *stu = head->next;
bool flag = 0;
cout<<"请输入你要查询的学生姓名:"<<endl;
cin>>name;
for(int i=1; i<=amount; i++)
{
if(name == stu->name)
{
flag = 1;
cout<<"您要查询的学生是:"<<stu->name<<endl;
cout<<"学号 姓名 性别 数据结构 英语 数学 体育 概率 平均分"<<endl;
cout<<setw(8)<<(*stu).number;
cout<<setw(8)<<(*stu).name;
cout<<setw(5)<<(*stu).sex;
cout<<setw(10)<<(*stu).chengji.m_DataStructurescore;
cout<<setw(12)<<(*stu).chengji.m_Englishscore;
cout<<setw(8)<<(*stu).chengji.m_Mathscore;
cout<<setw(8)<<(*stu).chengji.m_PEscore;
cout<<setw(8)<<(*stu).chengji.m_Probabilityscore;
cout<<setw(8)<<(*stu).average<<endl;
break;
}
else stu = stu->next;
}
if(flag == 1)
{
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
while(c!='y' && c!='n')
{
cout<<"指令错误<请输入y/n>!!!!"<<endl;
cin>>c;
}
}
if(flag == 0)
{
cout<<"对不起!您要查找的学生不存在!!!!!!!"<<endl;
cout<<"您想继续查询吗(y/n)"<<endl;
cin>>c;
while(c!='y' && c!='n')
{
cout<<"指令错误<请输入y/n>!!!!"<<endl;
cin>>c;
}
}
}while(c == 'y');
}
void SearchByNumber() //按学号查询
{
char c;
string no;
do
{
student *stu = head->next;
bool flag = 0;
cout<<"请输入您要查询的学生学号"<<endl;
cin>>no;
for(int i=1; i<=amount; i