学生成绩管理系统
要求:
1. 学生的信息用结构体来表示。 struct stu{
int sno; //学号 char name[8]; //姓名 char sex[3]; //性别 char inclass[8]; //班级 float math; //数学成绩 float English; //英语成绩 float computer; //计算机成绩 }
2. 能够按学号、按性别、按班级查询。查询方式可以自己补充。
3. 能够统计每个学生的平均成绩、总成绩、并可以按平均成绩和总成绩进行排序(排序的方法很多,大家应该上网多查查排序的方法,并比较各个排序方式的好坏),并在屏幕上打印排序结果。 4. 能够修改、删除、添加学生的信息。
5. 系统的各个功能模块要求用函数的形式实现。 6. 在主函数里通过菜单来调用各个函数。 7. 用链表或数组来存储班级学生。
8. 学生的信息能够保存在文件里(思考用二进制文件和文本文件的异同)。 如果用文本文件存储,则文件格式如下:
学号 姓名 性别 班级 数学 英语 计算机 0601 王鹏 男 一班 68.5 58 96 0602 李云 女 二班 68.5 88 98 0603 赵亚男 女 一班 58.5 48 96 0604 刘飞 男 三班 68.5 78 58 9. 能够对文件进行读写、修改、删除。
#include
#include
int sno; //学号 char name[8]; //姓名 char sex[4]; //性别 char Class[4]; //班级 float math; //数学成绩 float English; //英语成绩 float computer; //计算机成绩 float zong; //总成绩 float ping; //平均成绩 }stu[100],change;
void print() //定义界面函数 {
cout<<\ cout< cout<<\} void cjxscj() //定义 创建学生成绩文件 函数 { int i;char a; for(i=0;i<100;i++) //输入学生信息 { cout<<\请输入第\个学生的信息:\ cout<<\学号:\ cin>>stu[i].sno; cout<<\姓名:\ cin>>stu[i].name; cout<<\性别:\ cin>>stu[i].sex; cout<<\班级:\ cin>>stu[i].Class; cout<<\数学成绩:\ cin>>stu[i].math; cout<<\英语成绩:\ cin>>stu[i].English; cout<<\计算机成绩:\ cin>>stu[i].computer; stu[i].zong=stu[i].math+stu[i].English+stu[i].computer; stu[i].ping=stu[i].zong/3; cout<<\继续输入请按@\ cout<<\退出输入,返回主菜单请按#\ cin>>a; if(a=='#') i=100; } fp=fopen(\ //打开fh.dat文件 for(i=0;i<100;i++) //把结构体的信息存入fh.dat文件 if(fwrite(&stu[i],sizeof(student),1,fp)!=1) cout<<\文件写入出错\ fclose(fp); //关闭文件 print(); //打印出主菜单 } void zjxsxx() //定义 增加学生信息 函数 { int i;char y; if((fp=fopen(\ //打开fh.dat文件 { cout<<\不能打开此文件\ exit(0); } for(i=0;i<100;i++) //把文件中数据付给结构体 fread(&stu[i],sizeof(student),1,fp); for(i=98;i>=0;i--) if(stu[i].math==0) break; cout<<\请输入需要添加的学生信息\ while(i>0) //输入需要添加的学生信息 { cout<<\学号:\ cout<<\姓名:\ cout<<\性别:\ cout<<\班级:\ cout<<\数学:\ cout<<\英语:\ cout<<\计算机:\ stu[i].zong=stu[i].math+stu[i].English+stu[i].computer; stu[i].ping=stu[i].zong/3; cout<<\继续添加请按@\ cout<<\返回主菜单请按#\ cin>>y; if(y=='#') //控制使其停止输入 i=0; i--; } rewind(fp); //移动文件内部位置指针到文件首 for(i=0;i<100;i++) //把结构体的信息存入fh.dat文件 fwrite(&stu[i],sizeof(student),1,fp); fclose(fp); //关闭文件 print(); //打印出主菜单 } void scxsxx() //定义删除学生信息 函数 { int i,p,k,j;char w;char x[8]; if((fp=fopen(\ //打开fh.dat文件 { cout<<\不能打开此文件\ exit(0); } for(i=0;i<100;i++) //把文件中数据付给结构体 fread(&stu[i],sizeof(student),1,fp); loop:cout<<\请输入你要删除学生信息的姓名或学号\ cout<<\输入姓名请按1\ cout<<\输入学号请按2\ cin>>p; if(p==1) //通过输入名字查找要删除的信息 { cout<<\请输入姓名:\ cin>>x; } else //通过输入学号查找要删除的信息 { cout<<\请输入学号:\ cin>>k; } i=0,j=0; while(i<100) { if(strcmp(x,stu[i].name)==0||k==stu[i].sno) //找出要删除的学生信息,将其输出 { cout<<\学生信息情况:\ cout<<\学号\姓名\性别\ <<\班级\数学\英语\ <<\计算机\总成绩\平均成绩\ cout< cout<<\确定删除请按#\ cout<<\取消删除请按@\ cin>>w; if(w=='#') //控制是否删除 i=100; } i++;j++; } if(i==100) //控制是否找到要删除学生的信息 cout<<\没有找到你要删除的学生信息\ else for(i=j-1;i<100;i++) //从要删除的学生信息开始,将后一个结构体的 stu[i]=stu[i+1]; //信息赋值给前一个 cout<<\继续删除请按#\ cout<<\返回主菜单请按@\ cin>>w; if(w=='#') //控制是否继续删除 goto loop; rewind(fp); //移动文件内部位置指针到文件首 for(i=0;i<100;i++) //把结构体的信息存入fh.dat文件 fwrite(&stu[i],sizeof(student),1,fp); fclose(fp); //关闭文件 print(); //打印出主菜单 } void xgxsxx() //定义 修改学生信息 函数 { int i,p,k,j=0;char u,v[8]; if((fp=fopen(\ //打开fh.dat文件 { cout<<\不能打开此文件\ exit(0); } for(i=0;i<100;i++) //把文件中数据付给结构体 fread(&stu[i],sizeof(student),1,fp); hoop:cout<<\请输入你要修改学生信息的姓名或学号\ cout<<\输入姓名请按1\ cout<<\输入学号请按2\ cin>>p;