
摘要:一个简单的学生成绩管理系统自然要包括增删改查。学生成绩管理是学校教务部门日常工作的重要组成部分,其处理信息量很大。此代码是对学生成绩管理的简单模拟,用菜单选择方式完成下列功能:输入学生数据;输出学生数据;学生数据查询;添加学生数据;修改学生数据;删除学生数据。
本管理系统数据是一组学生的成绩信息,每条学生的成绩信息由学号、姓名和成绩组成,这组学生的成绩信息具有相同特性,属于同一数据对象。由此可以看出,这些数据具有线性表中数据元素的性质,所以该系统的数据采用线性表来存储。
顺序表是线性表的顺序存储结构,是指用一组连续的内存单元依次存放线性表的数据元素。在顺序存储结构下,逻辑关系相邻的两个元素在物理位置上也相邻,这是顺序表的特点。本项目可以采用顺序表的线性表顺序存储结构。
利用最简单的结构体数组来完成:
先说几个比较重要的模块:
录入信息模块:
void Logging_data();//录入学生信息
void List::Logging_data()//录入学生信息
{
if(len==Listlen)
{
cout << "表已满 !"<>Elem[len+1].id;
if(id_ifnd(Elem[len+1].id) >=0 )
{
cout << "该学号已存在!"<>Elem[len+1].name;
cout <<"请输入学生成绩 "<>Elem[len+1].score;
if(Elem[len+1].score <0 || Elem[len+1].score>100)
{
cout << "输入有误!" <
int id_ifnd(char *fin_id);//按学号查找返回查找到的位置或者没查找到的;
void dele_stuinfo(); //删除学生信息
删除信息模块:
void List::dele_stuinfo() //删除学生信息
{
if(is_empty())
{
cout << "表为空 !"<>dele_id;
for(i=0;i
int is_empty(); //表为空
int is_full() ; //表为满
void print_list(); //普通打印
打印模块:
void List::print_list() //普通打印
{
int i;
if(is_empty())
{
cout << "表为空 !"<
void score_sort_low(); //成绩排序 (不及格)
void score_sort_up(); //按成绩升序(从低到高)排序
void id_sort(); //按学号升序排序
按学号升序排序 模块:
void List::id_sort() //按学号升序排序 ok
{
if(is_empty())
{
cout << "表为空 !"<0)
{
temp=Elem[j];
Elem[j]=Elem[j+1];
Elem[j+1]=temp;
}
}
}
}
void score_sort_donw(); //按成绩降序(从高到低)排序
成绩排序模块:
void List::score_sort_donw() //按成绩降序(从高到低)排序 ok
{
if(is_empty())
{
cout << "表为空 !"<
void id_find_info(); //按学号查找学生信息;
按学号查找学生信息模块:
void List::id_find_info() //按学号查找学生信息;
{
cout << "请输入要查询的学生学号 : " ;
char buf[15]={0};
cin>>buf;
int i,k;
k=0;
for(i=0;i
void name_find_info(); //按姓名查找学生信息;
void amend_info();//修改学生信息
修改学生信息模块:
void List::amend_info()//修改学生信息
{
if(is_empty())
{
cout << "表为空 !"<>amend_id;
for(i=0;i>buf1;
if(strcmp(buf1,Elem[i].id) != 0 && id_ifnd(buf1) >=0 )
{
cout << "该学号已存在!请重新输入"<>buf2;
strcpy(Elem[i].name,buf2);
print_list();
BBB: cout <<"请输入学生新成绩 "<>k;
if(k <0 || k>100)
{
cout << "输入有误!请重新输入:" <
完整代码:
#include
#include
#define Listlen 100 //这里可以修改数组的大小,目前可以记录一百个学生成绩信息
using namespace std;
typedef struct ElemType{
char id[15]; //学号
char name[15]; //姓名
float score; //成绩
}STU;
class List{
public:
List()
{
Elem[Listlen]={0};
len=-1;
}
~List(){
}
void Logging_data();//录入学生信息
int id_ifnd(char *fin_id);//按学号查找返回查找到的位置或者没查找到的;
void dele_stuinfo(); //删除学生信息
int is_empty(); //表为空
int is_full() ; //表为满
void print_list(); //普通打印
void score_sort_low(); //成绩排序 (不及格)
void score_sort_up(); //按成绩升序(从低到高)排序
void id_sort(); //按学号升序排序
void score_sort_donw(); //按成绩降序(从高到低)排序
void id_find_info(); //按学号查找学生信息;
void name_find_info(); //按姓名查找学生信息;
void amend_info();//修改学生信息
private:
STU Elem[Listlen]; //定义结构体数组
int len;
};
int main(void)
{
List a;
int k;
char quits[6]={0};
strcpy(quits,"quit");
cout<>k;
char buf1[6]={0};
char buf2[6]={0};
char buf3[6]={0};
switch(k)
{
case 1:
for(k=0;k<100;k++)
{
a.Logging_data();
cout <<"继续录入请按任意键,录入结束请输入quit:";
cin>>buf1;
if(strcmp(buf1,quits)==0)
{
cout<<"录入结束表为 :"<>buf2;
if(strcmp(buf2,quits)==0)
{
cout<<"删除结束表为 :"<>buf3;
if(strcmp(buf3,quits)==0)
{
cout<<"修改结束表为 :"<>m;
switch(m)
{
case 1:
a.id_find_info();
goto FIND;
case 2:
a.name_find_info();
goto FIND;
case 3:
a.score_sort_low();
goto FIND;
case 4:
a.score_sort_donw();
a.print_list();
goto FIND;
case 5:
a.score_sort_up();
a.print_list();
goto FIND;
case 0:
goto LIST;
default:
cout <<"输入有误 请重新输入!"<>Elem[len+1].id;
if(id_ifnd(Elem[len+1].id) >=0 )
{
cout << "该学号已存在!"<>Elem[len+1].name;
cout <<"请输入学生成绩 "<>Elem[len+1].score;
if(Elem[len+1].score <0 || Elem[len+1].score>100)
{
cout << "输入有误!" <>dele_id;
for(i=0;iElem[j+1].score)
{
temp=Elem[j];
Elem[j]=Elem[j+1];
Elem[j+1]=temp;
}
}
}
}
void List::id_sort() //按学号升序排序 ok
{
if(is_empty())
{
cout << "表为空 !"<0)
{
temp=Elem[j];
Elem[j]=Elem[j+1];
Elem[j+1]=temp;
}
}
}
}
void List::score_sort_donw() //按成绩降序(从高到低)排序 ok
{
if(is_empty())
{
cout << "表为空 !"<>buf;
int i,k;
k=0;
for(i=0;i>buf;
int i,k;
k=0;
for(i=0;i>amend_id;
for(i=0;i>buf1;
if(strcmp(buf1,Elem[i].id) != 0 && id_ifnd(buf1) >=0 )
{
cout << "该学号已存在!请重新输入"<>buf2;
strcpy(Elem[i].name,buf2);
print_list();
BBB: cout <<"请输入学生新成绩 "<>k;
if(k <0 || k>100)
{
cout << "输入有误!请重新输入:" <
运行结果:随便输入点瞅瞅
有兴趣的小火把可以拿来玩玩!今天的分享就到此结束了,感谢各位读者姥爷个观看,下次见!!芜湖!!