学生成绩管理系统(VC++6.0做的)
学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
主要功能:
(1) 能按学期、按班级完成对学生成绩的录入、修改
(2) 能按班级统计学生的成绩,求学生的总分及平均分
(3) 能查询学生成绩,不及格科目及学生名单
(4) 能按班级输出学生的成绩单
要求:系统以菜单方式工作
请将源码发送到schyhg.163@qq.com
谢谢各位了
哎!无奈啊 展开
#include<iostream.h> /*引用库函数*/
#include<stdlib.h>
#include<ctype.h>
#include<stdio.h>
#include<string.h>
typedef struct
{
char class_0[20]; /*班级*/
int number; /*学号*/
char name[20]; /*姓名*/
float electrics; /*电子技术成绩*/
float c_program; /*C++语言成绩*/
float multimedia; /*多媒体技术成绩*/
float english; /*大学英语成绩*/
float math; /*高等数学成绩*/
float sport; /*体育成绩*/
float polity; /*马克思主义政治经济学*/
float summary; /*总分*/
float average; /*平均分*/
}Student;
Student stu[100]; /*结构体数组变量*/
int menu() /*菜单函数*/
{
char c;
do
{
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<<"【9】将所有记录写入文件"<<endl;
cout<<"【0】退出本系统\n"<<endl;
cout<<"**********************作者:07 网络一班 3207001349************************"<<endl;
cout<<"请你选择操作(0-9):"<<endl;
c=getchar(); /*读入选择*/
}
while(c<'0'||c>'9');
return(c-'0'); /*返回选择*/
}
int Input(Student stud[],int n) /*输入若干条记录*/
{
int i=0;
char sign,x[10]; /*x[10]为清除多余的数据所用*/
while(sign!='n'&&sign!='N') /*判断*/
{
cout<<"请输入学生的班别:"; /*交互输入*/
cin>>stud[n+i].class_0;
cout<<"请输入学生的学号:";
cin>>stud[n+i].number;
cout<<"请输入学生的姓名:";
cin>>stud[n+i].name;
cout<<"请输入该学生『电子技术』的成绩:";
cin>>stud[n+i].electrics;
cout<<"请输入该学生『C++程序设计』的成绩:";
cin>>stud[n+i].c_program;
cout<<"请输入该学生『多媒体技术』的成绩:";
cin>>stud[n+i].multimedia;
cout<<"请输入该学生『大学英语』的成绩:";
cin>>stud[n+i].english;
cout<<"请输入该学生『高等数学』的成绩:";
cin>>stud[n+i].math;
cout<<"请输入该学生『大学体育』的成绩:";
cin>>stud[n+i].sport;
cout<<"请输入该学生『马克思主义政治经济学』的成绩:";
cin>>stud[n+i].polity;
stud[n+i].summary=stud[n+i].electrics+stud[n+i].c_program+stud[n+i].multimedia+stud[n+i].english+stud[n+i].math+stud[n+i].sport+stud[n+i].polity;
stud[n+i].average=stud[n+i].summary/7;
cout<<"该学生的总分为:"<<stud[n+i].summary<<"平均分为:"<<stud[n+i].average<<endl;
gets(x); /*清除多余的输入*/
cout<<"=====>提示:继续写入成绩?(Y/N)";
cin>>sign; /*输入判断*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*显示所有记录*/
{
int i;
if(!stud)cout<<"没有记录";
else{
cout<<"--------------------------------------------------------------------------------"<<endl; /*格式头*/
cout<<" 班别 学号 姓名 电子 C++ 多媒体 英语 数学 体育 政治 总分 平均分"<<endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
for(i=1;i<n+1;i++) /*循环输入*/
{
stud[i-1].summary=stud[i-1].electrics+stud[i-1].c_program+stud[i-1].multimedia+stud[i-1].english+
stud[i-1].math+stud[i-1].sport+stud[i-1].polity;
stud[i-1].average=stud[i-1].summary/7;
cout<<stud[i-1].class_0<<" "<<stud[i-1].number<<" "<<stud[i-1].name<<" "<<stud[i-1].electrics<<" "<<stud[i-1].c_program<<" "<<stud[i-1].multimedia<<" "<<stud[i-1].english<<" "<<
stud[i-1].math<<" "<<stud[i-1].sport<<" "<<stud[i-1].polity<<" "<<stud[i-1].summary<<" "<<stud[i-1].average<<endl;
}
cout<<"\t\t\t"<<endl; }
system("pause");
}
void Sort(Student stud[],int n) /*按平均分排序*/
{
int i,j,k;
float s;
char t[20];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(stud[j].average<stud[j+1].average)
{
strcpy(t,stud[j+1].class_0);
strcpy(stud[j+1].class_0,stud[j].class_0);
strcpy(stud[j].class_0,t);
k=stud[j+1].number;
stud[j+1].number=stud[j].number;
stud[j].number=k;
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
s=stud[j+1].electrics;
stud[j+1].electrics=stud[j].electrics;
stud[j].electrics=s;
s=stud[j+1].c_program;
stud[j+1].c_program=stud[j].c_program;
stud[j].c_program=s;
s=stud[j+1].multimedia;
stud[j+1].multimedia=stud[j].multimedia;
stud[j].multimedia=s;
s=stud[j+1].english;
stud[j+1].english=stud[j].english;
stud[j].english=s;
s=stud[j+1].math;
stud[j+1].math=stud[j].math;
stud[j].math=s;
s=stud[j+1].sport;
stud[j+1].sport=stud[j].sport;
stud[j].sport=s;
s=stud[j+1].polity;
stud[j+1].polity=stud[j].polity;
stud[j].polity=s;
s=stud[j+1].summary;
stud[j+1].summary=stud[j].summary;
stud[j].summary=s;
s=stud[j+1].average;
stud[j+1].average=stud[j].average;
stud[j].average=s;
}
cout<<"--------------------------------------------------------------------------------"<<endl; /*格式头*/
cout<<" 班别 学号 姓名 电子 C++ 多媒体 英语 数学 体育 政治 总分 平均分"<<endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
for(i=1;i<n+1;i++) /*循环输入*/
{
stud[i-1].summary=stud[i-1].electrics+stud[i-1].c_program+stud[i-1].multimedia+stud[i-1].english+
stud[i-1].math+stud[i-1].sport+stud[i-1].polity;
stud[i-1].average=stud[i-1].summary/7;
cout<<stud[i-1].class_0<<stud[i-1].number<<stud[i-1].name<<stud[i-1].electrics<<stud[i-1].c_program<<stud[i-1].multimedia<<stud[i-1].english<<
stud[i-1].math<<stud[i-1].sport<<stud[i-1].polity<<stud[i-1].summary<<stud[i-1].average<<endl;
}
}
int Insert(Student stud[],int n) /*插入一条记录*/
{
char x[10]; /*清除多余输入所用*/
cout<<"请输入学生的班别:"<<endl; /*交互输入*/
cin>>stud[n].class_0;
cout<<"请输入学生的学号:";
cin>>stud[n].number;
cout<<"请输入学生的姓名:";
cin>>stud[n].name;
cout<<"请输入该学生『电子技术』的成绩:";
cin>>stud[n].electrics;
cout<<"请输入该学生『C++程序设计』的成绩:";
cin>>stud[n].c_program;
cout<<"请输入该学生『多媒体技术』的成绩:";
cin>>stud[n].multimedia;
cout<<"请输入该学生『大学英语』的成绩:";
cin>>stud[n].english;
cout<<"请输入该学生『高等数学』的成绩:";
cin>>stud[n].math;
cout<<"请输入该学生『大学体育』的成绩:";
cin>>stud[n].sport;
cout<<"请输入该学生『马克思主义政治经济学』的成绩:";
cin>>stud[n].polity;
stud[n].summary=stud[n].electrics+stud[n].c_program+stud[n].multimedia+stud[n].english+
stud[n].math+stud[n].sport+stud[n].polity;
stud[n].average=stud[n].summary/7;
gets(x);
n++;
Sort(stu,n); /*调用排序函数*/
cout<<"=====>提示:插入成功!"<<endl; /*返回成功信息*/
return(n);
}
int Delete(Student stud[],int n) /*按学号查找,删除一条记录*/
{
int s;
int i=0,j;
cout<<"输入需要删除学生的学号:"<<endl; /*交互式问寻*/
cin>>s;
while((stud[i].number-s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{
cout<<"=====>提示:对不起,无法找到改学号……"<<endl; /*返回失败信息*/
return(n);
}
for(j=i;j<n-1;j++) /*删除操作*/
{
strcpy(stud[j].class_0,stud[j+1].class_0);
stud[j].number=stud[j+1].number;
strcpy(stud[j].name,stud[j+1].name);
stud[j].electrics=stud[j+1].electrics;
stud[j].c_program=stud[j+1].c_program;
stud[j].multimedia=stud[j+1].multimedia;
stud[j].english=stud[j+1].english;
stud[j].math=stud[j+1].math;
stud[j].sport=stud[j+1].sport;
stud[j].polity=stud[j+1].polity;
}
cout<<"=====>提示:已成功删除!"<<endl; /*返回成功信息*/
return(n-1);
}
void Search(Student stud[],int n) /*查找并显示一个记录*/
{
int s;
int i=0;
cout<<"输入需要查找学生的学号:"<<endl;
cin>>s;
while((stud[i].number-s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{
cout<<"=====>提示:对不起,无法找到该学生的信息!"<<endl; /*输入失败信息*/
return;
}
cout<<"---------------------------"<<endl;
cout<<"班别:"<<stud[i].class_0<<endl; /*输出该学生信息*/
cout<<"学号:"<<stud[i].number<<endl;
cout<<"姓名:"<<stud[i].name<<endl;
cout<<"电子技术:"<<stud[i].electrics<<endl;
cout<<"C++程序设计:"<<stud[i].c_program<<endl;
cout<<"多媒体技术:"<<stud[i].multimedia<<endl;
cout<<"大学英语:"<<stud[i].english<<endl;
cout<<"高等数学:"<<stud[i].math<<endl;
cout<<"大学体育:"<<stud[i].sport<<endl;
cout<<"马克思主义政治经济学:"<<stud[i].polity<<endl;
cout<<"总分:"<<stud[i].summary<<endl;
cout<<"平均分:"<<stud[i].average<<endl;
}
void Modify(Student stud[],int n)
{
int s;
int i=0;
cout<<"输入需要修改成绩学生的学号:"<<endl;
cin>>s;
while((stud[i].number-s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{
cout<<"=====>提示:对不起,无该学生的成绩……"<<endl; /*输入失败信息*/
return;
}
cout<<"-----------------------------------该学生的信息---------------------------------"<<endl; /*格式头*/
cout<<" 班别 学号 姓名 电子 C++ 多媒体 英语 数学 体育 政治 总分 平均分"<<endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
stud[i].summary=stud[i].electrics+stud[i].c_program+stud[i].multimedia+stud[i].english+
stud[i].math+stud[i].sport+stud[i].polity;
stud[i].average=stud[i].summary/7;
cout<<stud[i-1].class_0<<stud[i-1].number<<stud[i-1].name<<stud[i-1].electrics<<stud[i-1].c_program<<stud[i-1].multimedia<<stud[i-1].english<<
stud[i-1].math<<stud[i-1].sport<<stud[i-1].polity<<stud[i-1].summary<<stud[i-1].average<<endl;
cout<<"请输入学生的班别:"<<endl; /*交互输入*/
cin>>stud[n+i].class_0;
cout<<"请输入学生的学号:"<<endl;
cin>>stud[n+i].number;
cout<<"请输入学生的姓名:"<<endl;
cin>>stud[n+i].name;
cout<<"请输入该学生『电子技术』的成绩:"<<endl;
cin>>stud[n+i].electrics;
cout<<"请输入该学生『C++程序设计』的成绩:"<<endl;
cin>>stud[n+i].c_program;
cout<<"请输入该学生『多媒体技术』的成绩:"<<endl;
cin>>stud[n+i].multimedia;
cout<<"请输入该学生『大学英语』的成绩:"<<endl;
cin>>stud[n+i].english;
cout<<"请输入该学生『高等数学』的成绩:"<<endl;
cin>>stud[n+i].math;
cout<<"请输入该学生『大学体育』的成绩:"<<endl;
cin>>stud[n+i].sport;
cout<<"请输入该学生『马克思主义政治经济学』的成绩:"<<endl;
cin>>stud[n+i].polity;
stud[i].summary=stud[i].electrics+stud[i].c_program+stud[i].multimedia+stud[i].english+stud[i].math+stud[i].sport+stud[i].polity;
stud[i].average=stud[i].summary/7;
cout<<"该学生的总分为:"<<stud[i].summary<<"平均分为:"<<stud[i].average;
}
int Read(Student stud[],int n) /*从文件中读入数据*/
{
int i=0,num;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
cout<<"输入文件名:"<<endl;
cin>>filename; /*输入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/
{
cout<<"=====>提示:无法打开这个文件!"<<endl; /*打开失败信息*/
cout<<"\t\t\t";
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*读入总记录量*/
while(i<num) /*循环读入数据*/
{
fscanf(fp,"%s%d%s%f%f%f%f%f%f%f%f%f",stud[n+i].class_0,&stud[n+i].number,stud[n+i].name,&stud[n+i].electrics,&stud[n+i].c_program,&stud[n+i].multimedia,&stud[n+i].english,&stud[n+i].math,&stud[n+i].sport,&stud[n+i].polity,&stud[n+i].summary,&stud[n+i].average);
i++;
}
n+=num;
fclose(fp); /*关闭文件*/
cout<<"=====>提示:读入数据成功,可选择【显示所有成绩】查看"<<endl;
cout<<"\t\t\t";
system("pause");
return(n);
}
void Save(Student stud[],int n) /*将所有记录写入文件*/
{
int i=0;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
cout<<"输入文件名:"; /*输入文件名*/
cin>>filename;
if((fp=fopen(filename,"w"))==NULL) /*打开文件*/
{
cout<<"=====>提示:无法打开这个文件!"<<endl;
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循环写入数据*/
while(i<n)
{
fprintf(fp,"%-8s%-8d%-6s%-6.1f%-7.1f%-7.1f%-6.1f%-6.1f%-6.1f%-7.1f%-8.1f%-6.2\n",stud[i].class_0,stud[i].number,stud[i].name,stud[i].electrics,stud[i].c_program,stud[i].multimedia,stud[i].english,
stud[i].math,stud[i].sport,stud[i].polity,stud[i].summary,stud[i].average);
i++;
}
fclose(fp); /*关闭文件*/
cout<<"=====>提示:已成功写入数据!"<<endl; /*返回成功信息*/
}
void main() /*主函数*/
{
int n=0;
for(;;)
{
switch(menu()) /*选择判断*/
{
case 1:
cout<<endl<<"====>> 输入成绩 <<===="<<endl; /*输入若干条记录*/
n=Input(stu,n);
break;
case 2:
cout<<endl<<"====>> 显示所有记录 <<===="<<endl; /*显示所有记录*/
Display(stu,n);
break;
case 3:
cout<<endl<<"====>> 按平均分降序排列 <<===="<<endl;
Sort(stu,n); /*按学号排序*/
cout<<"排序成功!"<<endl;
cout<<"\t\t\t";
system("pause");
break;
case 4:
cout<<endl<<"====>> 查找并显示一组成绩 <<===="<<endl;
Search(stu,n); /*插入一条记录*/
cout<<"\t\t\t";
system("pause");
break;
case 5:
cout<<endl<<"====>> 插入一组成绩 <<===="<<endl;
n=Insert(stu,n); /*按姓名查找,删除一条记录*/
cout<<"\t\t\t";
system("pause");
break;
case 6:
cout<<endl<<"====>> 修改一组成绩 <<===="<<endl;
Modify(stu,n); /*查找并显示一个记录*/
cout<<"\t\t\t";
system("pause");
break;
case 7:
cout<<endl<<"====>> 删除一组成绩 <<===="<<endl;
n=Delete(stu,n); /*查找并显示一个记录*/
cout<<"\t\t\t";
system("pause");
break;
case 8:
cout<<endl<<"====>> 从文件中读入数据 <<===="<<endl;
n=Read(stu,n); /*循环读出数据*/
break;
case 9:
cout<<endl<<"====>> 将所有记录写入文件 <<===="<<endl;
Save(stu,n); /*循环写入数据*/
cout<<"\t\t\t";
system("pause");
break;
case 0:
cout<<endl<<"====>> 谢谢您的使用! <<===="<<endl; /*结束程序*/
cout<<"\t\t\t";
system("pause");
exit(0);
}
}
}
2024-02-23 广告
//我自己写的,VC中运行良好。这些东西吧,学学也是有用的。
#include <stdio.h>
#include <stdlib.h>
struct student_type
{ char num[11];
char name[8];
char class[20];
float score[3];
float ave;
}stud[4];
void save()
{
FILE * fp;
int i;
if((fp = fopen("score.txt","wb")) == NULL)
{
printf("File open error!");
exit(1);
}
for(i=0;i<4;i++)
{
fwrite(&stud[i],sizeof(struct student_type),1,fp);
}
fclose(fp);
}
void display()
{
int i;
FILE * fp;
struct student_type temp;
if((fp = fopen("score.txt","rb")) == NULL)
{
printf("File open error!");
exit(1);
}
printf("学生信息为:\n\n");
for(i=0;i<4;i++)
{
fread(&temp,sizeof(struct student_type),1,fp);
printf("第%d名学生信息:\n\n",i+1);
printf("学号: %s\n",temp.num);
printf("姓名: %s\n",temp.name);
printf("班级: %s\n",temp.class);
printf("成绩: %.2f %.2f %.2f\n",temp.score[0],temp.score[1],temp.score[2]);
printf("平均分: %.2f\n",temp.ave);
printf("**********************************\n\n");
}
fclose(fp);
}
void main()
{
int i,j;
printf("请输入4名学生信息:");
for(i=0;i<4;i++)
{
float ave = 0;
printf("\n\n第%d名学生信息:\n\n",i+1);
printf("学号:");
scanf("%s",stud[i].num);
printf("姓名:");
scanf("%s",stud[i].name);
printf("班级:");
scanf("%s",stud[i].class);
printf("成绩:");
for(j=0;j<3;j++)
{
scanf("%f",&stud[i].score[j]);
ave += stud[i].score[j];
}
stud[i].ave = ave/3;
}
save();
display();
system("pause");
}